2011年7月20日水曜日

"resize2fs"でEBSの容量を増やす

スズキです。

今まで、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

今度のディスク増量は、こっちのやり方でやろう。
--------
http://www.suz-lab.com

0 コメント: