本日のまとめでっす。
AWSのCentOSは扱いが厄介だなーと思ったって話です。。
ルートパーティションが拡張されない
CentOS6 HVMのAMIを使ったらハマった問題ですね。
EC2インスタンス作成の時、ストレージの容量で指定した値(20GB)がファイルシステム上ではOSのデフォルト値(8GB)しか認識していませんでした。
ググってみたところ、2つの解決方法がありました。
1、partedコマンドを使って、本来の指定したディスク容量までファイルシステムの容量を拡張する。
2、cloud-initを使って、本来の指定したディスク容量までファイルシステムの容量を拡張する。
今回は、時間の関係で後者の手段を使いました。
CentOSはAmazon 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を今回導入したのですが、yumやrpmでは入れられず公式サイトから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を全力で回避した話 | 黒曜の吹き溜まり