だから数日経ったのですが、Ubuntu 16を実行しているEC2で新しいHVMインスタンスに接続できません。参考までに、Ubuntu 16を実行しているm3インスタンスからUbuntu 16を実行しているC5インスタンスにサーバーをアップグレードしようとしています。私が試したほぼすべての方法で、新しいC5インスタンスを停止し、すべてのボリュームを切り離し、新しく更新されたソースボリュームを/dev/sda1
として接続するポイントに到達できますが、その後、インスタンス、私は常にタイムアウトになります。 Amazonのステータスチェックも失敗します。これは、インスタンスに到達できないことを示しているためです。ただし、システムログは起動時に問題を示しません。
この投稿 ですべてを試しました。 この投稿 も試しました。私は他のサイトを調べて、 this と this を試してみました。 ec2コマンドラインツールの方法とec2コンソールからAMIを変換する(オンライン)の両方を試しましたが、変換されたAMIでC5インスタンスを起動できないか、インスタンスが停止して失敗します(の場合)コマンドラインによる変換)。
それが原因であると私が本当に考えることができる唯一のことは、C5インスタンスのパーティションの命名規則です。私が見たガイドはすべてxvda/xvdf/xvdg
を使用しています。私は間違っている可能性がありますが、これらのパーティションまたはディスクがなく、代わりにnvme0n1
、nvme0n1p1
、(新しいHVMルート)、nvme1n1
、およびnvme1n1p1
があります。 HVM /ソース/ターゲットディスクの方法を試したところ、nvme0n1/nvme0n1p1
、nvme1n1
(ターゲット-すべてが終わるはずの場所)、およびnvme2n1/nvme2n1p1
(ソース-すべてのソースがあった場所)がありました。 、m3)。私は nvmeに関するこのAmazonの投稿 を見つけたので、/mnt/
を使用するときに正しいディスク/パーティションを使用しているだけなので、これは問題ではないと思います。 mkdir -p /mnt/target && mount /dev/nvme1n1 /mnt/target
の代わりにmkdir -p /mnt/target && mount /dev/xvdf /mnt/target
を呼び出しますが、これまでのところ何も機能していません。 target
を/dev/sda1
としてアタッチすると、インスタンスに到達できなくなります。
それで、nvme*
という名前のディスクを使用してこれらを実行するときに欠けているものはありますか?問題を理解するのに役立つ他の情報やデバッグ情報はありますか?
この質問はあまり見られなかったことに気づきましたが、念のために言えば、私の結果が将来の誰かを助けることができることを願っています(多分、私が次にこれを試すときも)。インスタンスを移行するのを手伝ってくれたAmazonサポートのSteve Eに感謝します<3
とにかく、Ubuntu 16.04 M3(PV)インスタンスをUbuntu 16.04 C5(HVM)インスタンスに移行するときに2つの問題がありました。最初の問題は、新しいC5インスタンスが新しい命名規則を使用するため、PVをHVMに移行することに関する他のチュートリアルがまったく同じように機能しないことでした。もう1つの問題は、私のM3(PV)インスタンスがUbuntuにアップグレードされていたことです。私は実際に過去1年ほどでUbuntu 12-> Ubuntu 14-> Ubuntu 16から移行しました。これにより、クラウドネットワークファイルが生成されないという問題が発生したため、インスタンスに到達できませんでした。
とにかく、新しいnvme命名規則を使用してUbuntu 16.04 PVインスタンスをHVMインスタンスに移行するには、次のようにします。
開始する前に、PVインスタンスに以下をインストールしてください。
$ Sudo apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
$ Sudo apt-get install linux-aws
/dev/sdf
として復元しました(Ubuntuシステムでは、名前はnvme1n1
になります)。/dev/sdg
としてアタッチします(Ubuntuシステムでは、名前はnvme2n1
になります)。インスタンスにログインしたら、Sudo su
を使用して、すべてのコマンドをrootユーザーとして実行します。
ボリュームを表示する
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 8G 0 disk
└─nvme0n1p1 259:1 0 8G 0 part /
nvme1n1 259:2 0 100G 0 disk
nvme2n1 259:3 0 100G 0 disk
nvme0n1
は、作成したばかりのHVMルートです(今回のみ起動します)nvme1n1
は、復元されたPVルートです(HVMに変換されます)nvme2n1
は、空のボリュームです(PVルートからnvme1n1
として変換を受け取ります)
nvme2n1
に新しいパーティションを作成します(nvme2n1p1
が作成されます)
# parted /dev/nvme2n1 --script 'mklabel msdos mkpart primary 1M -1s print quit'
# partprobe /dev/nvme2n1
# udevadm settle
「ソース」ボリュームを確認し、元のファイルシステムのサイズを最小化して、プロセスを高速化します。次のステップでディスクの空き容量をコピーしたくありません。
# e2fsck -f /dev/nvme1n1 ; resize2fs -M /dev/nvme1n1
「ソース」ボリュームを「宛先」ボリュームに複製
# dd if=/dev/nvme1n1 of=/dev/nvme2n1p1 bs=$(blockdev --getbsz /dev/nvme1n1) conv=sparse count=$(dumpe2fs /dev/nvme1n1 | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")
「宛先」ボリュームのサイズを最大に変更します。
# e2fsck -f /dev/nvme2n1p1 && resize2fs /dev/nvme2n1p1
宛先ボリュームを準備します。
# mount /dev/nvme2n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
chroot
を新しいボリュームに
# chroot /mnt/
# grub-install --recheck /dev/nvme2n1
# update-grub
chroot
を終了します
# exit
インスタンスをシャットダウンします
# shutdown -h now
変換後、これを実行する必要があります:
HVMインスタンス上に以前持っていた3つのボリュームを切り離します。作成した最後のボリューム(ブランク)を、HVMインスタンスのコンソール(以前は/dev/sda1
として接続されていた)に/dev/nvme2n1
として接続します。 HVMインスタンスを起動します。
これで、新しいHVMインスタンスが正常に起動し、古いソースPVインスタンスの正確なコピーになります(正しいソースボリュームを使用した場合)。すべてが機能していることを確認したら、ソースインスタンスを終了できます。
ここで、上記の手順は、ここにいる大多数の人々に対して機能します。ただし、インスタンスのステータスにまだ到達していません。その理由は、新しいイメージから開始するのではなく、インスタンスでUbuntuをアップグレードしたためです。これにより、eth0
構成がアクティブになり、50-cloud-init.cfg
構成ファイルがなくなりました。
/etc/network/interfaces.d/50-cloud-init.cfg
ファイルが既にある場合は、新しいファイルを作成する代わりに、ファイルを更新して更新できます。また、すべてのコマンドがSudo su
を介して実行されると仮定します。
インスタンスをシャットダウンし、ボリュームを切り離して、以前と同じ構成を入力します。 8GBボリュームを/dev/sda1/
として、最終的な宛先ボリュームを/dev/sdf/
として接続します。インスタンスを起動してログインします。
以下を実行して、/dev/sdf
をnvme1n1p1
にマウントします。
# mount /dev/nvme1n1p1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
ファイルを作成または更新します。
/etc/network/interfaces.d/50-cloud-init.cfg
以下の場合:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback
auto ens5
iface ens5 inet dhcp
chroot
(exit
)を終了し、インスタンスをシャットダウンします(shutdown -h now
)。
前から手順9を実行してください!
あなたはやるべきです!
おかげで、ネットワーク構成のヒントはアップグレードの場合に機能しました(Ubuntu 14.04 PVからUbuntu 18.04 PV)。アップグレードされたUbuntu 18.04 PVを、ネットワーク構成にわずかな調整を加えたUbuntu 18.04 HVMに変換しました。次の構成で新しい/etc/netplan/50-cloud-init.configを作成しました
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
all-eth:
match:
name: "eth*"
dhcp4: true