這是一個漫長的故事,總之呆翰決定把家裡的單機的 VMware Hypervisor ESXi 拆掉換成 Proxmox VE 了。以下是遷移計畫以及測試過程:
遷移前的環境
- VMware ESXi 單機 + 免費授權
- ESXi 靠 SanDisk 24G SSD 開機,上面有些 VM
- 其他 VM 放在 一顆 Intel 730 240G SSD 上
- 有個 FreeNAS 的 VM 直接存取三顆硬碟
預計遷移步驟
- 備份 FreeNAS 上 NFS 的 export 設定檔
- 拿出另一顆 Intel 730 240G SSD 安裝 Proxmox VE
- 安裝 vmfs-tools 將 SanDisk 24G 與 Intel 730 240G 兩顆 SSD 上的 VM 複製到安裝 Proxmox VE 的 SSD 上
- 測試 FreeNAS 丟在 Proxmox VE 上直接存取硬碟的效能,如果不理想就拆掉 FreeNAS 讓 Proxmox VE 直接存取 FreeNAS 裡面的 ZFS
- 將 ESXi 的 730 SSD 轉為 Proxmox VE Root ZFS 的 RAID 1 備援
- 拆掉快壞掉的 SanDisk 24G SSD
實驗步驟
因為系統還在跑,我也沒有多的 Intel 730 SSD 可以測試,所以測試流程如下:
- 將 ESXi 開機用的 SanDisk 24G SSD 的備份還原到另一隻 24G SSD
- 準備兩隻 SanDisk CZ80 先用第一支安裝 Proxmox VE
- 安裝 vmfs-tools 讀取 24G SSD 的 VM 並遷移上 Proxmox VE
- 遷移成功後連接另一隻 CZ80 ,將 Proxmox VE 做成 RAID 1
- 拔掉第一支 CZ80 確定可以開機(我很好奇 ZFS 加入 RAID 1 會不會順便把 grub 裝好)
相關指令
apt update
apt install vmfs-tools
vmfs-fuse /dev/sdb3 /mnt/
# 透過 GUI 新增 VM ,完成後刪除硬碟
cd /mnt/Home-RouterOS-CHR/
qm importdisk 100 Home-RouterOS-CHR.vmdk local-zfs --format qcow2
# 透過 GUI 調整開機順序
# RouterOS 重新設定 IP 的 Interface
/interface ether print
/ip address print_
/ip address set 0 interface=ether4
# dump 分割區表
umount /mnt
lsblk
zpool status
dd if=/dev/sda of=partitiontable.bin bs=1 count=2048
sgdisk --backup=partitions-backup /dev/sda
sgdisk --replicate=/dev/sdb /dev/sda
sgdisk -G /dev/sdb
這裡有個意外,不確定是不是因為隨身碟,總之 PVE 再安裝過程會讓 CZ80 多幾百個磁區可以用,因此各種 dump 分割區表的方式都是失敗了,這裡直接讓第二支 CZ80 也跑一次 PVE 的安裝程式。
# 繼續 Clone 資料進去第二支 CZ80
dd if=/dev/sda1 of=/dev/sdb1
dd if=/dev/sda9 of=/dev/sdb9
dd if=/dev/zero of=/dev/sdb2 bs=4096 count=1024
zpool attach -f rpool sda2 sdb2zpool
坑
- sgdisk 不要弄錯來源跟目標(實驗過程弄壞過一次)
- CZ80 + PVE Installer 後會多一些磁區可以用,這裡直接讓兩支隨身碟都跑過 PVE 的安裝程式,再來覆蓋。
參考資料
PVE 論壇文章 Procedure to import vmware OVA to Proxmox 5.0-23 with ZFS VM store (看到 qm help importdisk 搞定後面就沒看了,不過蠻多實用的指令)
Coderwall 文章 creating a mirrored ZFS Pool out of a single-disk rpool