既存の準仮想化(PV)AMIからハードウェア仮想マシン(HVM)AMIを作成することは可能ですか?.
私が最初に考えたのは、新しいPVインスタンスを開始してec2-create-image
コマンドを使用して、仮想化タイプとしてHVMを指定しながら新しいイメージを作成します。しかしながら、 ec2-create-image
には、仮想化タイプを指定するコマンドラインパラメータがありません。
これを行う別の方法はありますか?
AWSはEC2 APIでこの機能を有効にしました。これは、新しいBotoベースのawscliの --virtualization-type
のaws ec2 register-image
オプションとして使用できます。
はい!残念ながら、これを行う直接的な方法はありません。また、一部のPVインスタンスでは、カーネルとブートローダーの変更が必要になる場合があります。
ec2-create-image
を実行します。それが機能しない場合は、ステップ5の前に、そのボリュームを実行中のインスタンスに接続し、chrootをセットアップして、ディストリビューション用のカーネルとブートローダーをインストールする必要があります。ログとcloud-initキャッシュをクリアすることもできます。
私の場合、aws ec2 register-image
を使用して作成したインスタンスが起動しなかったため、手動で変換を行う必要がありました。私のソリューションは AWS EC2フォーラム の この投稿 に基づいています。
すべてのボリュームが同じアベイラビリティーゾーンにあることを確認してください。
移行元のPVマシンにSSHで接続し、すべてのアップデートを適用して、ログアウトします。
AWSコンソールに移動し、PVシステムの作成元と同じベースAMIを選択して、新しいHVMインスタンスを起動します(私の場合、Amazon 64ビットLinux AMI)。
この新しいインスタンスにSSHで接続し、すべての更新を適用してから、ログアウトします。
AWSコンソールに移動し、PVインスタンスを停止します。ルートデバイスのスナップショットを取得し、このスナップショットから新しいボリューム(SOURCE VOLUME
)を作成します。
HVMインスタンスを停止します。新しいインスタンスでルートデバイスのスナップショットを取得し、このスナップショットから新しいボリューム(TARGET VOLUME
)を作成します。
AWSコンソールの使用:
SOURCE VOLUME
を/dev/xvdf
として新しいインスタンスにアタッチします。TARGET VOLUME
を/dev/xvdg
として新しいインスタンスにアタッチします。新しいインスタンスにSSHで接続し、ルートアクセスを取得します。
Sudo su
ソースドライブとターゲットドライブをマウントします。
mkdir -p /mnt/source && mount /dev/xvdf /mnt/source
mkdir -p /mnt/target && mount /dev/xvdg1 /mnt/target
私の場合、デバイスは
/dev/xvdf
(ソース)と/dev/xvdg1
(ターゲット)でした。これらは、パーティションの数とそれらを接続した場所に基づいて構成が変わる場合があります(準備のステップ6を参照)。ドライブを表示するには、ls -al /dev/xvd*
を使用します。
バックアップ/lib/modules/*
(PV AMIのカーネルが新しいHVMマシンと異なる場合。このモジュールはAWSの一部のサービスで使用されます。)
ターゲットボリューム上の/boot
以外をすべて削除します。
cd /mnt/target && ls | grep -v boot | xargs rm -Rf
ソースボリュームの/boot
を削除します。
rm -Rf /mnt/source/boot
すべての属性を保持したまま、ソースボリュームのデータをターゲットボリュームにコピーします。
rsync -aAXHPv /mnt/source/ /mnt/target
手順(8)で最終的な場所にマウントされたときに/mnt/target/etc/fstab
を参照するように、/
パーティションのTARGET VOLUME
を編集します。ラベルを使用するか、単にそれに沿って何かをする:
/dev/xvda1 / ext4 defaults,barrier=0 1 1
次に、ステップ3でバックアップした/lib/modules/
を復元します(PV AMIのカーネルが新しいHVMマシンと異なる場合)。
システムを停止し、AWSコンソールを使用してすべてのボリュームを切り離します。新しいインスタンスにTARGET VOLUME
を/dev/xvda
としてアタッチします。
元のルートデバイスがマウントされていた場所に注意してください。ほとんどの場合、
/dev/xvda
になります。
HVMインスタンスを起動します。これで、PVシステムの正確な複製になります。すべて問題なければ、PVインスタンスとSOURCE VOLUME
を削除できます。
TLDR:
ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64' -n 'Fedora_20_HVM_AMI' --sriov simple --virtualization-type hvm -s snap-b44feb18 --root-device-name /dev/sda1
詳細な手順:
Jeff Strunkの応答 に基づいてさらに回答すると、手順が簡略化され、ec2レジスタイメージの詳細が少し追加されます。
PVイメージを使用してインスタンスを作成します。必要な変更を加えます/更新します。
上記のインスタンスからイメージを作成します。
EC2> Elastic Block Store> EC2 Consoleのスナップショットで、上記のAMIが使用するスナップショットIDを見つけます。
または、ec2 apiツールをセットアップしている場合:
ec2-describe-images AMI-id_of_above_created_AMI
aMIのスナップショットIDを見つけます
..次のステップの前提条件:ec2キーとAPIツールが設定され、使用できるようになりました。
上記のスナップショットを使用して新しいHVM AMIを登録します。例:
ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64' -n 'Fedora_20_HVM_AMI' --sriov simple --virtualization-type hvm -s snap-b44feb18 --root-device-name/dev/sda1
どこ
詳細については:
これは、AWSウェブインターフェースの内部から行うことができます。 snapshotsに移動し、hvmに変換する目的のスナップショットをクリックして、actionsをクリックし、次にcreate imageをクリックします。イメージ作成ウィザードのドロップダウンで[〜#〜] hvm [〜#〜]を選択します。