継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

20151006 学習まとめ

本日のまとめでっす。
AWSCentOSは扱いが厄介だなーと思ったって話です。。

ルートパーティションが拡張されない

CentOS6 HVMのAMIを使ったらハマった問題ですね。
EC2インスタンス作成の時、ストレージの容量で指定した値(20GB)がファイルシステム上ではOSのデフォルト値(8GB)しか認識していませんでした。

ググってみたところ、2つの解決方法がありました。

1、partedコマンドを使って、本来の指定したディスク容量までファイルシステムの容量を拡張する。
2、cloud-initを使って、本来の指定したディスク容量までファイルシステムの容量を拡張する。

今回は、時間の関係で後者の手段を使いました。


CentOSAmazon Linuxにはcloud-initが導入されていないので、導入してあげる必要があります。

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -i --nosignature epel-release-6-8.noarch.rpm
# yum install cloud-init cloud-utils-growpart

パッケージ導入後、「/etc/cloud/cloud.cfg」の中身を編集します。

cloud_init_modules:
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh

今回の鍵を握るのが「resizefs」、「growpart」です。
この2つの記述は残しておきます。

僕は加えて、

default user:
省略
~~

「default user:」ディレクティブはユーザーの設定が不要なため削除しました。

これで2度再起動します。

1回目の再起動でgrowpartによってパーティションの拡張が行われ、2回目の再起動後に今度はファイルシステムの拡張が行われていました。


参考:
EC2のCentOS6 HVMでresize2fs "Nothing to do!"と言われたとき | Boiler Room
growpartでRHEL EC2のルートパーティションを自動拡張する « サーバーワークス エンジニアブログ



※前者のパターンで参考にしたサイト:
Linux パーティションを拡張する - Amazon Elastic Compute Cloud
EC2上のLinuxのパーティションを拡張する « サーバーワークス エンジニアブログ

Tomcat自動起動

本日はもう一つまとめます。
Tomcat8を今回導入したのですが、yumrpmでは入れられず公式サイトからtarボールをサーバに配備、/usr/local配下に展開しました。
その後、自作の起動スクリプトを/etc/init.d/配下に作成して自動起動設定をしたのですが、以下のメッセージが出力されてうまくいきませんでした。

sudo: sorry, you must have a tty to run sudo

スクリプト内部でsudoを使っているのですが、この処理がコンソールを与えられずこけていました。

対処としては、「/etc/sudoers」の中身に一行追加しました。

Defaults:root    !requiretty

起動プロセスはrootで実行しているためrootはこのコンソールが与えられなくても処理が走るようにしました。
すると、今度は自動起動tomcatが上がってきました。
しかし、個人的にこの問題は見直したいので、見直したら再度記事をアップしたいと思います。

参考:
TTY経由でないsudoの実行 - shibainu55日記

※このサイトで書いていることが理解できていないってことでもっかい読み直します
requirettyを全力で回避した話 | 黒曜の吹き溜まり