回答:
AWSはEC2 APIでこの機能を有効にしました。新しいBotoベースのawscliの--virtualization-type
オプションとして利用できますaws ec2 register-image
。
はい!残念ながら、そうする直接的な方法はありません。また、一部のPVインスタンスでは、カーネルとブートローダーの変更が必要になる場合があります。
ec2-create-image
HVMインスタンスで実行します。それでもうまくいかない場合は、ステップ5の前に、実行中のインスタンスにそのボリュームをアタッチし、chrootをセットアップして、ディストリビューション用のカーネルとブートローダーをインストールする必要があります。ログとcloud-initキャッシュをクリアすることもできます。
aws ec2 register-image
、PVイメージのスナップショットで--virtualization-typeフラグを指定して実行することにより、インスタンスをHVMに変換できます。詳細aws ec2 register-image help
を参照してください。
aws ec2 register-image
。次に、そのイメージから新しいHVMインスタンスを起動しました。ただし、システムは起動しません。
私の場合、作成したインスタンスがaws ec2 register-image
起動しなかったため、変換を手動で行う必要がありました。私のソリューションは、AWS EC2フォーラムのこの投稿に基づいています。
すべてのボリュームが同じアベイラビリティーゾーンにあることを確認してください。
移行元のPVマシンにSSHで接続し、すべての更新を適用してからログアウトします。
AWSコンソールに移動し、PVシステムの作成元と同じベースAMI(私の場合はAmazon 64ビットLinux AMI)を選択して、新しいHVMインスタンスを起動します。
この新しいインスタンスにSSHで接続し、すべての更新を適用してからログアウトします。
AWSコンソールに移動して、PVインスタンスを停止します。ルートデバイスのスナップショットを作成し、SOURCE VOLUME
このスナップショットから新しいボリューム()を作成します。
HVMインスタンスを停止します。新しいインスタンスでルートデバイスのスナップショットを作成し、TARGET VOLUME
このスナップショットから新しいボリューム()を作成します。
AWSコンソールの使用:
SOURCE VOLUME
として新しいインスタンスに接続します/dev/xvdf
。TARGET VOLUME
として新しいインスタンスに接続します/dev/xvdg
。新しいインスタンスにSSHし、rootアクセスを取得します。
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
次に/lib/modules/
、ステップ3でバックアップした復元を実行します(PV amiのカーネルが新しいHVMマシンと異なる場合)。
システムを停止し、AWSコンソールを使用してすべてのボリュームをデタッチします。TARGET VOLUME
新しいインスタンスにをとして添付します/dev/xvda
。
元のルートデバイスがマウントされた場所に注意してください。ほとんどの場合、それはである必要があります
/dev/xvda
。
HVMインスタンスを起動します。これで、PVシステムの完全な複製になります。すべてが正常に見える場合は、PVインスタンスとを削除することもできますSOURCE VOLUME
。
rm -f /boot
とcp -a /mnt/source/boot /mnt/target
?
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コンソールのスナップショットで、上記の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
どこで
詳細については:
ここですべての提案を試しましたが、どれも役に立たなかったため、このテーマに関する優れたブログエントリを見つけました。https://www.opswat.com/blog/aws-2015-why-you-need-switch- PV-HVM。
手順の要素(詳細)は次のとおりです。
grub
移行するPVインスタンス(ソースインスタンス)にインストールします。
ソースインスタンス(ソースボリューム、SV)のルートボリュームの予防的なスナップショットを作成します。
ボリュームを移行する一時HVMインスタンスを作成します。
宛先ボリューム(DV)を作成し、このインスタンスとSVの両方を一時インスタンスに接続します。
DVは少なくともSVと同じ大きさでなければなりません。
SVをとして/dev/{sd,xvd}f
、DVをとして添付し/dev/{sd,xvd}g
ます。
DVをパーティション分割します。
parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
partprobe /dev/xvdg
udevadm settle
SVのFSを最小サイズにサイズ変更しdd
、DVにイメージを使用します。
ソースボリュームのFSをクリーニングします。 e2fsck -f /dev/xvdf
同じものを最小化します。 resize2fs -M /dev/xvdf
resize2fsからの出力(例:)を観察Resizing the file system on /dev/xvdf to 269020 (4k) blocks
し、次のステップのために書き留めます。
SVをDVに複製: dd if=/dev/xvdf of=/dev/xvdg1 bs=<block size from previous step, here 4k> count=<use block count from last step, here 269020>
新しいパーティションでFSを展開します。 resize2fs /dev/xvdg1
grub
DVのブートブロックにインストールする
DVでデバイスファイルを一時的に作成します。 mount /dev/xvdg1 /mnt; cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/
GRUBファイルをインストールします。
rm -f /mnt/boot/grub/*stage*
cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/
rm -f /mnt/boot/grub/device.map
cat << ARNIE | chroot /mnt grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
ARNIE
宛先ボリュームにいくつかの他の小さな変更を加え、ボリュームをスナップし、そこからAMIを作成します。
一時的なデバイスファイルを整理します。 rm -f /mnt/dev/xvdg /mnt/dev/xvdg1
で/mnt/boot/grub/grub.conf
、に変更root (hd0)
しroot (hd0,0)
、カーネル行に追加(または置換console=*
)console=ttyS0
し、必要に応じてカーネル行で置換root=*
しroot=LABEL=/
ます
では/mnt/etc/fstab
、ルートFSのラインは、標識参照、例えばが含まれていることを確認してください
LABEL=/ / ext4 defaults,noatime 1 1
新しいルートFSにラベルを付けます e2label /dev/xvdg1 /
一時インスタンスからDVをアンマウントし、一時インスタンスからSVとDVの両方を切り離します。
DVをスナップし、そのスナップからAMIイメージを作成します。
そのHMIからHVMインスタンスを起動します。それが移行されたインスタンスです。