【Amazon EC2】CentOSのルートボリュームを拡張する方法

みなさんこんにちは。サーバの構築業務を担当している川合です。
今回は、Amazon Web Services 通称AWSについての記事になります。

AWSでは初めてサーバを構築するため色々と思考錯誤して進めています。

進めていく中でに気になったところを今後ブログとしてまとめていければと思っています。

概要

EC2でCentOSのインスタンスを立ち上げた際に、ルートボリュームを拡張する方法について解説します。

今回利用する環境は、CentOS 6.9 64bit です。
AWS Marketplace の CentOS 6 (x86_64) - with Updates HVM のAMIを利用しています。

インスタンスを作成する際に、ボリュームは20GBで作成しています。

なぜ、ルートボリュームを拡張する必要があるのかですが
ボリュームを大きくしてもデフォルトの8GBでサイズが固定されてしまっているからです。

では、実際にインスタンスにログインしてみて内容を確認します。

インスタンスには、centos ユーザでインスタンス作成時に作成したキーペアを利用して接続します。

df -hT
--------------------------------------------------------------
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.8G 883M 6.5G 12% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
--------------------------------------------------------------
lsblk
---------------------------------------------------------
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
mqxvda1 202:1 0 8G 0 part /
---------------------------------------------------------
sudo fdisk -l
----------------------------------------------------------------
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00050d75

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 1045 8387584 83 Linux
----------------------------------------------------------------

インスタンスには、20GBのボリュームが割り当てられていますがルートボリュームは8GBしか認識していません。

設定方法

EPELのリポジトリを追加して、dracut-modules-growroot をインストールします。
その後、ディスクイメージに上書きする形でgrowrootモジュールを追加します。

まず、EPELのリポジトリを追加します。
自動的に使用されないようにすぐに無効化します。

sudo yum install epel-release
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo

実際にインストールするときに一時的に有効になるように設定して
dracut-modules-growroot をインストールします。
依存関係でcloud-utils-growpartもインストールされます。

sudo yum install --enablerepo=epel dracut-modules-growroot

インストールが完了したら、ディスクイメージにモジュールを追加します。

sudo dracut --force --add growroot /boot/initramfs-$(uname -r).img
uname -r
--------------------------------
2.6.32-696.18.7.el6.x86_64
--------------------------------
ls -la /boot/ |grep initramfs
----------------------------------------------------------------------------------------------------
-rw-------. 1 root root 18602868 May 1 2017 initramfs-2.6.32-696.1.1.el6.x86_64.img
-rw-------. 1 root root 18610150 Jan 10 07:38 initramfs-2.6.32-696.18.7.el6.x86_64.img
----------------------------------------------------------------------------------------------------

現時点の最新までアップデート済み

コマンドが実行できれば、適用のためサーバを再起動します。

再起動後、ルートボリュームが拡張されているか確認します。

df -hT
--------------------------------------------------------------
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 20G 913M 18G 5% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
--------------------------------------------------------------
lsblk
---------------------------------------------------------
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
mqxvda1 202:1 0 20G 0 part /
---------------------------------------------------------
sudo fdisk -l
------------------------------------------------------------------
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00050d75

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 2610 20963801 83 Linux
------------------------------------------------------------------

20GBで認識していることが確認できたので、作業は完了です。

まとめ

今回の作業を予め実施して、サーバをイメージ化しておけば次回以降の構築をスムーズに進めることが出来ると思います。

また、ボリュームを増やす場合でもサーバ起動時にルートディスクが拡張されるようになります。

他にもAWS環境特有の問題があるようなので、内容を確認して修正したイメージを作成したいと思います。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA