「インスタンス ストア」デバイスをルート デバイスとする EC2 インスタンスがあります。ここで、EBS ボリュームを同じインスタンスにアタッチしたいと思いますが、それをルート デバイスにしたいだけです。それは可能ですか?このような場合、インスタンス ストア デバイスはどうなりますか?
前もって感謝します
「インスタンス ストア」デバイスをルート デバイスとする EC2 インスタンスがあります。ここで、EBS ボリュームを同じインスタンスにアタッチしたいと思いますが、それをルート デバイスにしたいだけです。それは可能ですか?このような場合、インスタンス ストア デバイスはどうなりますか?
前もって感謝します
実行中のインスタンスを EBS でサポートされた AMI に移行できます。これが私がそれをした方法です:
dd bs=65536 if=/dev/sda1 of=/dev/sdd
fsck /dev/sdd
マウント /dev/sdd /root/ebs-vol
vim /root/ebs-vol/etc/fstab
/dev/sdd をアンマウント
ec2-register -s snap-12345 -a i386 -d "AMI の説明" -n "イメージの名前" -k aki-12345 -r ari-12345
ec2-run-instances ami-54321 -t m1.small -n 1 -g デフォルト --availability-zone=eu-west-1a -k ec2-key1 -b /dev/sda1=snap-12345:20:false
resize2fs /dev/sda1
これは、新しい AMI を作成したり、新しいインスタンスを起動したりせずに実行できます。完了すると、元のルート ボリュームは /dev/sda1 (または最初にマウントされた場所。/dev/sda1 は多くの AMI のデフォルト) に接続されたままになります。元のルート ボリュームはファイル システムにマウントされません。「mount」コマンドを使用して自分でマウントする必要があります。
この手法には、10.04 および 10.10 リリースで実行される最新の Ubuntu カーネルが必要です。これらの Ubuntu リリースの最新の AMI ID については、alestic.comをチェックしてください。これらの最近のカーネルは、ボリューム ラベルが「uec-rootfs」である接続デバイスから起動するように構成されています。これらのカーネルのいずれかを実行している場合は、現在の (インスタンス ストア) ルート ボリュームのボリューム ラベルを別のものに変更し、新しいルートのボリューム ラベルを uec-rootfs に変更してから再起動するだけです。これらのカーネルのいずれかを実行していない場合、この手法は使用できません。
これがコードです。これをインスタンスのファイル (reroot.sh) に入れます。
#! /bin/bash
device=$1
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs
最初に、新しいルートとして機能させたい EBS ボリュームを、利用可能なデバイスの 1 つ /dev/sdf../dev/sdp に接続します。これは、直接 EC2 API 呼び出し、EC2 コマンドライン API ツール(ec2-attach-volume)、botoなどのライブラリ、または AWS マネジメント コンソール UI を使用して行うことができます。
次に、reroot.sh スクリプトを root として実行し、新しいルート ボリュームを接続したデバイスを次のように指定します。
sudo reroot.sh /dev/sdp
これにより、汚れた作業が行われます。次に、単に再起動します。
sudo shutdown -r now
ビオラ。
これをテストするには、適切に起動することがわかっている EBS ボリュームを作成する必要があります。上記の Ubuntu AMI から EBS-backed AMI のルート ボリュームのスナップショットを作成することで、これを行うのが好きです。そのスナップショットから、任意のアベイラビリティーゾーンに新しい起動可能な EBS ボリュームを作成できます。実行中のインスタンスの元のルート ボリュームと新しい EBS ルート ボリュームの違いがわかることを確認してください。上記の再ルート手順を実行する前に、古いルート ボリュームに「マーカー」ファイルを配置できます。
cd
touch this-is-the-original-root-volume
次に、ルートを変更して再起動すると、そのファイルがホーム ディレクトリに存在する場合は、元のルート ボリュームで引き続き実行されます。そこにない場合は、再ルートと再起動が機能しています。
以下に、この手法の使用例を 2 つ示し、詳細な説明を示します。
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances/
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes/
次のツールを試して、インスタンスストア AMI を ebs-boot AMI に変換することもできます: https://cloudyscripts.com/tool/show/2
AlexM
良いステップを思いついた。
このリンクをチェックすることにも興味があるでしょう: http://coderslike.us/2009/12/07/amazon-ec2-boot-from-ebs-and-ami-conversion/
編集:別のリンク: http://www.elastician.com/2009/12/creating-ebs-backed-ami-from-s3-backed.html
ここでの他の長いコメントの代わりに、次のコマンドを使用してこれを行いました。
ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name "Zenoss Enterprise 3.0 beta 2 on centOS" --description "これは zenoss core beta 1 と zenoss enterprise beta 2 のインストールからのもので、どちらもバージョン 3.0 です (または内部的に 2.5.70 217) ebs ブロック デバイスが接続され、ファイル システムが再同期され、ebs がスナップショットされ、これに基づいています。」--root デバイス名 /dev/sda1 --kernel aki-9b00e5f2
既存のインスタンスを変換するのがどれほど簡単かはわかりませんが、Amazon は現在、新しいインスタンスを作成するときにEBS ボリュームから直接起動する機能を提供しています。