こんにちは!中の人です。
今回は『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」をクリックします。
2.EC2 > Snapshotへ移動し、作成されたSnapshotからイメージを作ります。
3.この時には100GBを入力しても登録できないことが確認できます。
◯サイズダウン後のEBSボリュームを作成
4.EC2 > Volumesへ移動し、100GBの空のEBSを作成します。
Snapshotを選択しないことで空のEBSを作成することが出来ます。
5.2つのアタッチされていないボリュームが作成できたことを確認して下さい。
◯上記2つのEBSボリュームを別のEC2にマウント
6.ボリュームをマウントするためのEC2を立ち上げます。
rsyncを行うことが目的なので、既に起動しているEC2でも問題はありません。
7.起動したEC2に対して、作成済みの2つのボリュームをアタッチします。
「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 2 3 4 |
# df –h /dev/xvda1 7.9G 969M 6.9G 13% / tmpfs 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 2 3 4 5 6 |
# df –h /dev/xvda1 7.9G 969M 6.9G 13% / tmpfs 3.7G 0 3.7G 0% /dev/shm /dev/xvdf 99G 188M 94G 1% /small /dev/xvdg 119G 76G 42G 65% /large |
100GBと120GBのボリュームがマウントされていることが確認できます。
14.ダウンサイズ前のファイルシステムのラベルを確認し、ダウンサイズ後のラベルを変更します。
1 2 3 4 5 6 7 |
# e2label /dev/sdf ←ブランクです。 # e2label /dev/sdg / # e2label /dev/sdf / # e2label /dev/sdf / ←”/”が表示されます。 |
15.※この操作は非常に時間がかかります。容量によりかなりの時間がかかりますので、気長に本でも読みましょう。
rsyncを使ってマウントした2つのディレクトリを複製します。
1 |
# rsync -ax /large/ /small |
-a -rlptgoD と同義で、属性やグループなどを維持する
-x ファイルシステムの境界を横断しない
※-vをつけると非常に膨大なログとなるためつけていません。
16.rsyncが完了したら2つのEBSをアンマウントします。
1 2 |
# umount /large # umount /small |
Management Console
17.Management Consoleにログインし、EC2 > Volumesへ移動し先ほどアタッチした2つのボリュームをdetachします。
18.detachしたボリュームから「Create Snapshot」をクリックします。
19.EC2 > Snapshotに移動し、作成したスナップショットから「Create Image from Snapshot」を選択します。
20.EC2 > AMI に移動し、作成したイメージから起動します。
いかがでしたでしょうか?
サイズアップに比べると面倒ではありますが、不要なボリュームはサイズダウンすることによってコストダウンできるので、必要に応じて実施しましょう。
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————