1. 停止 PV 實例。
注意:我們建議您在測試 PV 實例上執行此步驟。要創建測試實例,請先為您的 PV 實例創建映像。之後,從映像啟動新的 PV 實例。

2. 為 PV 實例的根卷創建快照。

3. 將 PV 實例的根卷快照還原為新 EBS 卷。該卷必須在 PV 實例所在的可用區中還原。

4. 從 Amazon Linux HVM AMI 啟動新實例。該實例必須在 PV 實例所在的可用區中啟動。

5. 選擇從 PV 實例的根快照還原的 EBS 卷。然後,以 /dev/xvdf 的形式連接該捲到新的 HVM 實例。

6. 創新新的空白 EBS 卷,其大小與從 PV 實例的根快照還原的捲相同。將新的空白 EBS 卷以 /dev/xvdg 的形式連接到 HVM 實例。
注意:執行此步驟後,新的 HVM 實例將包含三個卷。

7. 使用 SSH 連接到新的 HVM 實例。
注意:您必須具有根用戶權限才能繼續執行後續步驟。

8. 運行以下命令以顯示卷:

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 8G 0 disk
xvdg 202:96 0 8G 0 disk
注意:xvda 是 HVM 實例的根卷。 xvdf 是從 PV 實例的根快照還原的捲。 xvdg 是新的空白卷。

9. 運行以下命令以在 xvdg (新卷) 上創建新分區。

# parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
# partprobe /dev/xvdg
# udevadm settle
注意:這些命令將創建 xvdg1。

10. 運行以下命令以檢查 xvdf (PV 根卷) 的大小並將原始文件系統的大小降到最小。要想加快該過程,請勿在下一步中復制可用磁盤空間。

# e2fsck -f /dev/xvdf ; resize2fs -M /dev/xvdf

11. 運行以下命令以將 xvdf (PV 根卷) 複製到 xvdg1 (新卷):

# dd if=/dev/xvdf of=/dev/xvdg1 bs=$(blockdev --getbsz /dev/xvdf) conv=sparse count=$(dumpe2fs /dev/xvdf | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")

12. 運行以下命令以將 xvdg1 (新卷) 的大小調整到其最大大小:

# e2fsck -f /dev/xvdg1 && resize2fs /dev/xvdg1

13. 運行以下命令以準備好將 xvdg1 (新卷) 轉換為 HVM 實例的根卷:

# mount /dev/xvdg1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc

14. 運行以下命令以將 xvdg1 (新卷) 轉換為 HVM 實例的根卷:

# chroot /mnt/

15. 運行以下命令以在新根卷上重新安裝 GRUB 引導程序:

# yum reinstall grub -y
# rm -f /boot/grub/*stage* /boot/grub/device.map
# grub-install /dev/xvdg

16. “grub-install”命令返回以下消息。此消息在預料之中 - 將其忽略並繼續執行下一步。

Probing devices to guess BIOS drives. This may take a long time.
Unknown partition table signature
/dev/xvdg does not have any corresponding BIOS drive.

17. 運行以下命令以更新 GRUB 引導程序配置。

# cat <<EOF | grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
EOF
# sed -i 's/root\ (hd0)/root (hd0,0)/g' /etc/grub.conf
# sed -i 's/root\ (hd0)/root (hd0,0)/g' /boot/grub/menu.lst
# sed -i 's/console=hvc0/console=ttyS0/g' /etc/grub.conf
# sed -i 's/console=hvc0/console=ttyS0/g' /boot/grub/menu.lst

18. 運行以下命令以退出“chroot”函數:

# exit

19. 運行以下命令以關閉實例:

# halt

20. 將您之前連接到 HVM 實例的三個卷分離出來。

21. 選擇您之前以 /dev/xvdg 形式連接的捲 (新卷)。以 /dev/xvda 形式重新連接此捲到 HVM 實例。

22. 啟動 HVM 實例。

新的 HVM 實例是源 PV 實例的精確副本。確認 HVM 實例正常工作後,可以終止源 PV 實例。您也可以刪除以下兩個臨時卷:HVM 實例的原始根卷以及從 PV 實例的根快照還原的捲。

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料