ルートデバイスとして「インスタンスストア」デバイスを持つ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 default --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
まず、利用可能なデバイス/dev/sdf../dev/sdpのいずれかに、新しいルートとして機能させるEBSボリュームを接続します。これは、直接EC2 API呼び出し、 EC2コマンドラインAPIツール (ec2-attach-volume)、または boto などのライブラリ、または経由で実行できます。 AWSマネジメントコンソールUI。
次に、rootとしてreroot.shスクリプトを実行し、次のように新しいルートボリュームを接続したデバイスを提供します。
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.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html
また、次のツールを使用して、インスタンスストア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/
EDIT:別のリンク: http://www.elastician.com/2009/12/creating-ebs-backed-AMI-from -s3-backed.html
既存のインスタンスを変換するのがどれほど簡単かはわかりませんが、Amazonは現在、新しいインスタンスを作成するときに EBSボリュームから直接起動する機能 を提供しています。
ここでの他の長いコメントの代わりに、次のコマンドを使用してこれを行いました。
ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name "centOS上のZenoss Enterprise 3.0 beta 2" --description "これは、両方ともバージョン3.0のzenoss core beta 1およびzenoss enterprise beta 2のインストールによるものです。または内部的に2.5.70 217)。ebsブロックデバイスが接続され、ファイルシステムが再同期され、ebsのスナップショットが作成され、これに基づいています。」 --root-device-name/dev/sda1 --kernel aki-9b00e5f2