これまでEBSの容量を増やすために、より大きな容量のEBSをマウントして、移行元のEBSから移行先のEBSに内容をコピーして、シンボリックリンクを変更したり、移行先のEBSのマウントポイントを移行元EBSのものに変更したりしていました。

そこで今回は、スナップショットを利用した方法を紹介します。

まず、下記のように/dev/sdfにアタッチされた1GのEBSが、/volにマウントされているとします。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
...
/dev/sdf             1008M   34M  924M   4% /vol

内容も下記の通りになります。

# ls /vol/
lost+found  test.txt

まずはアンマウントからですが、/dev/sdfが利用されてないことを確認します。

利用されている場合は、下記のように出力されますので、アンマウントするには、何も利用していない状態にしないといけないため、すべてのプロセスを終了します。

# lsof /dev/sdf
COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
bash    19087 root  cwd    DIR   8,80 4096    2 /vol
lsof    19255 root  cwd    DIR   8,80 4096    2 /vol
lsof    19256 root  cwd    DIR   8,80 4096    2 /vol

利用されてない場合は、何も出力されなくなります。

# lsof /dev/sdf

そして、アンマウントをします。

# umount /vol

ここからは、一旦、AWS Management Consoleでの作業になります。

まず、EBSをデタッチします。

そして、スナップショットを作成し、

そのスナップショットからボリュームを作り直します。

そしてボリューム作成時にサイズを増やして、

EC2にアタッチし直します。

再度、EC2のターミナルに戻って、マウントします。

# mount /dev/sdf /vol

しかしこのままでは、元のディスクの容量のままです。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
...
/dev/sdf             1008M   34M  924M   4% /vol

増やした容量にするためには、下記のようにresize2fsを利用します。

# resize2fs /dev/sdf
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/sdf is mounted on /vol; on-line resizing required
Performing an on-line resize of /dev/sdf to 1310720 (4k) blocks.
The filesystem on /dev/sdf is now 1310720 blocks long.

すると、増やした容量分、使えるようになります。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
...
/dev/sdf              5.0G   35M  4.7G   1% /vol

ディスクの内容も、元のままです。

# ls /vol/
lost+found  test.txt

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら