web-dev-qa-db-ja.com

EC2での「EBSブート」AMIのルートディスクサイズの減少

だから私はここでエリックの素晴らしい記事をフォローしました: http://alestic.com/2009/12/ec2-ebs-boot-resize

これは基本的に、AMIのデフォルトサイズを増加するのに役立つコードでした:

 ec2-run-sintances AMI-ID -n 1 --key keypair.pem --block-device-mapping "/dev/sda1=:250"

Ubuntu 11.10を実行している後、ディスクのサイズを変更する必要はありませんでした。すぐに250GBのドライブになりました。

AMIのデフォルトサイズを小さくするにはどうすればよいですか?

私は試した:

 ec2-run-sintances AMI-ID -n 1 --key keypair.pem --block-device-mapping "/dev/sda1=:100"

明らかに...しかし私は言われた:

Client.InvalidBlockDeviceMapping:サイズ100GBのボリュームがスナップショットよりも小さい####### <250>

4
darkAsPitch

サイズを小さくする最善の方法は、空の新しい(小さい)ボリュームを作成し、古い(大きい)ボリュームからファイルシステムをコピーすることです。

EBSブートAMIは、スナップショットに基づいています。 AMIを所有している場合は、スナップショットからボリュームを作成してコピーできます。コピー用に実行中のインスタンスに両方のボリュームを接続します。

Ubuntuで私のお気に入りのrsyncオプションは次のとおりです。

rsync -PaSHAX /bigvol/ /smallvol/

これらのオプションは、所有権、権限、リンクなどを保持します。

ボリュームを切り離し、新しい小さいボリュームのスナップショットを作成します。

新しい(小さな)スナップショットをAMIとして登録します。必ず、元のAMIと同じアーキテクチャとAKI(カーネル)を指定してください。

6
Eric Hammond

EBSルートボリュームを減らすために私が取るアプローチは次のとおりです。

ターゲットインスタンスを停止(終了しない)し、ルートEBSボリュームをデタッチします。または、ルートボリュームのスナップショットを作成して(または既存のスナップショットを使用して)、そこから新しいEBSボリュームを作成することもできます。 (例:/ dev/xvda1)

注:上記の手順で使用するボリュームは変更されるため、スナップショットを作成していない場合は、スナップショットを作成することをお勧めします。

  1. 目的のサイズの新しいEBSボリュームを作成します(例:/ dev/xvdg)
  2. インスタンスを起動し、両方のEBSボリュームをインスタンスにアタッチします

  3. (元のルートボリュームの)ファイルシステムを確認します:(例)_e2fsck -f /dev/xvda1_

  4. 元のルートボリュームを最大限に縮小します:(例:ext2/3/4)_resize2fs -M -p /dev/xvda1_

  5. Ddを使用してデータをコピーします。

    1. チャンクサイズを選択してください(私は16MBが好きです)
    2. チャンクの数を計算します(resize2fs出力からのブロック数を使用):blocks*4/(chunk_size_in_mb*1024) - round up a bit for safety

    3. データをコピーします:(例)_dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80_

  6. 新しい(小さい)EBSボリュームでファイルシステムのサイズを変更します:(例)_resize2fs -p /dev/xvdg_

  7. (元のルートボリュームの)ファイルシステムを確認します:(例)_e2fsck -f /dev/xvdg_

  8. 新しいEBSルートボリュームをデタッチし、元のインスタンスにアタッチします

12
cyberx86