Amazon EBS~ボリュームサイズを小さくしてみよう。ボリュームサイズダウン編~

こんにちは!中の人です。

今回は『Amazon EBS~ボリュームサイズを小さくしてみよう。ボリュームサイズダウン編~』と題して、一度作成したEBSボリュームのサイズを小さくする方法について紹介します。

その他のEBSに対する操作は以下を参考にして下さい。

ボリュームサイズを大きくする: Amazon EC2編~EBSボリュームサイズを変更してみよう!~

ボリュームをマウント(追加)する: Amazon EC2編~EBSボリュームを追加してみよう!~

・ サイズダウン前のEBSボリュームを作成

・ サイズダウン後となる空のEBSボリュームの作成

・ 上記2つを別のEC2にマウント

・ 「サイズダウン前」⇒「サイズダウン後」にrsyncでデータコピー

という流れとなります。

サイズ変更するデータによりrsyncにかかる時間が大きく時間が変わってきます。

数十GB以上ある場合は数時間かかる事を見込んでやって下さい。

それでは実際に、EBSボリュームのサイズダウンを行っていきましょう!

今回は120GBのEBSを100GBに変更します。

Management Console

◯サイズダウン前のEBSボリュームを作成

1.サイズダウン前のEC2からスナップショットを作成します。

EC2 > Volumesから対象となるインスタンスのVolumeを選択し、右クリックメニューから「Create Snapshot」をクリックします。

20131112_04_001
20131112_04_002

2.EC2 > Snapshotへ移動し、作成されたSnapshotからイメージを作ります。

20131112_04_003

3.この時には100GBを入力しても登録できないことが確認できます。

20131112_04_004

◯サイズダウン後のEBSボリュームを作成

4.EC2 > Volumesへ移動し、100GBの空のEBSを作成します。

Snapshotを選択しないことで空のEBSを作成することが出来ます。

20131112_04_005
5.2つのアタッチされていないボリュームが作成できたことを確認して下さい。

5.2つのアタッチされていないボリュームが作成できたことを確認して下さい。

20131112_04_006

◯上記2つのEBSボリュームを別のEC2にマウント

6.ボリュームをマウントするためのEC2を立ち上げます。

rsyncを行うことが目的なので、既に起動しているEC2でも問題はありません。

7.起動したEC2に対して、作成済みの2つのボリュームをアタッチします。

20131112_04_007
20131112_04_008

「Note: Newer linux kernels may rename your devices to /dev/xvdf through /dev/xvdp internally, even when the device name entered here (and shown in the details) is /dev/sdf through /dev/sdp.」という注意書きの通り、ここでは/dev/sd*というDevice名で登録しますが、サーバ上では/dev/xvd*の様に表示されます。

サーバにログインして操作

◯「サイズダウン前」⇒「サイズダウン後」にrsyncでデータコピー

8.上記のEC2に対してログインして下さい。

以後の操作はsuper userで行うか、sudo を付けて実行して下さい。

1# df –h23/dev/xvda1            7.9G  969M  6.9G  13% /4tmpfs                 3.7G     0  3.7G   0% /dev/shm

ログイン時には1つ(/dev/xvda1)しかボリュームがありません。

9.「サイズダウン前」「サイズダウン後」をマウントするためのディレクトリを作成します。

1# mkdir /large /small

10.ダウンサイズ後のEBSにはファイルシステムが無いので、既存と同じEXT4でファイルシステムを作成します。

1# mkfs.ext4 /dev/sdf

※/dev/xvdfでも問題ありません。

11.作成したファイルシステムを/small側にマウントします。

1# mount –t ext4 /dev/sdf /small

12.ダウンサイズ前のEBSもマウントします。

1# mount –t ext4 /dev/sdg /large

13.ボリュームがマウントされているか確認します。

1# df –h23/dev/xvda1            7.9G  969M  6.9G  13% /4tmpfs                 3.7G     0  3.7G   0% /dev/shm5/dev/xvdf              99G  188M   94G   1% /small6/dev/xvdg             119G   76G   42G  65% /large

100GBと120GBのボリュームがマウントされていることが確認できます。

14.ダウンサイズ前のファイルシステムのラベルを確認し、ダウンサイズ後のラベルを変更します。

1# e2label /dev/sdf2  ←ブランクです。34# e2label /dev/sdg56/78# e2label /dev/sdf /910# e2label /dev/sdf 1112/  ←”/”が表示されます。

15.※この操作は非常に時間がかかります。容量によりかなりの時間がかかりますので、気長に本でも読みましょう。

rsyncを使ってマウントした2つのディレクトリを複製します。

1# rsync -ax /large/ /small

-a -rlptgoD と同義で、属性やグループなどを維持する

-x ファイルシステムの境界を横断しない

※-vをつけると非常に膨大なログとなるためつけていません。

16.rsyncが完了したら2つのEBSをアンマウントします。

1# umount /large 23# umount /small

Management Console

17.Management Consoleにログインし、EC2 > Volumesへ移動し先ほどアタッチした2つのボリュームをdetachします。

20131112_03_009

18.detachしたボリュームから「Create Snapshot」をクリックします。

20131112_03_010

19.EC2 > Snapshotに移動し、作成したスナップショットから「Create Image from Snapshot」を選択します。

20131112_03_011

20.EC2 > AMI に移動し、作成したイメージから起動します。

いかがでしたでしょうか?

サイズアップに比べると面倒ではありますが、不要なボリュームはサイズダウンすることによってコストダウンできるので、必要に応じて実施しましょう。

——————————————————————————————————

ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと

最新のお役立ちレシピが配信されます★

┏━━━━━━━━━━━━━┓

┃ナレコムクラウド Facebook┃

┗━━━━━━━━━━━━━┛

——————————————————————————————————

この記事を書いた人

aws-recipe-user