これまで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