คำตอบสั้น ๆ: ทำ VMware VM Export ส่งออก VM จาก vCenter หรือ ESXi เป็น OVF/OVA ด้วย vSphere Client และ ovftool เตรียมไดรเวอร์ virtio แปลงเป็น qcow2 แล้วตรวจหลังบูต
คู่มือนี้อธิบาย VMware VM Export ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
VMware VM Export คือการส่งออกเครื่องเสมือนจาก vCenter หรือ ESXi ออกมาเป็นแพ็กเกจมาตรฐาน OVF (ไฟล์ .ovf คู่กับดิสก์ .vmdk) หรือ OVA (ทุกไฟล์รวมเป็นไฟล์เดียว) เพื่อนำไปเปิดบนแพลตฟอร์มอื่น เช่น คลาวด์ที่ใช้ KVM องค์กรที่ต้องการออกจาก VMware หลังเงื่อนไขไลเซนส์เปลี่ยนมักเริ่มจากงานนี้ เพราะได้เครื่องเดิมทั้งระบบโดยไม่ต้องติดตั้งใหม่
คู่มือนี้เหมาะกับผู้ดูแล vSphere ที่ต้องย้าย VM ทีละเครื่องหรือกลุ่มเล็ก เมื่อทำครบ คุณจะเตรียม VM ก่อนส่งออกได้ถูกต้อง ทำ VMware VM Export ได้ทั้งจาก vSphere Client และด้วย ovftool แปลงดิสก์ให้บูตบนคลาวด์ปลายทางพร้อมไดรเวอร์ virtio และตรวจเครื่องหลังบูตครั้งแรกได้ครบ ถ้าต้นทางเป็นเครื่องจริงที่ไม่ใช่ VM ให้ใช้คู่มือ P2V แทน
สิ่งที่ต้องเตรียม
- บัญชี vCenter หรือ ESXi ที่มีสิทธิ์ปิดเปิด VM และส่งออก OVF ของ VM นั้น
- VMware OVF Tool (ovftool) ติดตั้งบนเครื่องที่ใช้ทำงาน ดาวน์โหลดได้จาก Broadcom Developer portal และเลือกรุ่นที่ตรงกับระบบปฏิบัติการของเครื่องนั้น
- พื้นที่ว่างบนเครื่องที่ใช้ทำ VMware VM Export มากกว่าข้อมูลที่ใช้จริงในดิสก์ของ VM และพื้นที่เพิ่มอีกเท่าตัวบนเครื่องที่ใช้แปลงไฟล์
- ข้อมูลของ VM: ขนาดดิสก์ Firmware แบบ BIOS หรือ EFI (ดูใน Edit Settings > VM Options > Boot Options) IP ที่ตั้งไว้ และบริการที่รันอยู่
- Backup ล่าสุดของ VM และช่วงเวลาหยุดระบบ เพราะต้องปิด VM ระหว่างส่งออก
ขั้นตอนที่ 1: เตรียม VM ก่อนทำ VMware VM Export
งานส่วนใหญ่ที่ล้มเหลวหลัง VMware VM Export เกิดจากสิ่งที่ควรทำตอน VM ยังอยู่บน VMware ให้ทำรายการนี้ให้ครบก่อนปิดเครื่อง
ทุกระบบปฏิบัติการ
- ลบหรือรวม Snapshot ทั้งหมดให้เหลือดิสก์ชุดเดียว และถอด ISO ที่ต่อค้างไว้ในไดรฟ์ CD/DVD
- บันทึกค่าเครือข่ายเดิม (
ip aและip rบน Linux หรือipconfig /allบน Windows) เพราะการ์ดเครือข่ายบนปลายทางเป็นอุปกรณ์ใหม่ - VM ที่เข้ารหัสด้วย VM Encryption หรือมีอุปกรณ์ vTPM ส่งออกเป็น OVF ไม่ได้ ถ้า Windows ใช้ BitLocker ที่ผูกกับ vTPM ให้ปิด BitLocker และรอถอดรหัสเสร็จก่อนถอด vTPM ไม่เช่นนั้นจะเปิดดิสก์ไม่ได้
Windows
- ถอนการติดตั้ง VMware Tools ขณะยังอยู่บน VMware เพราะเอกสาร virt-v2v ระบุว่าการถอนหลังย้ายมักล้มเหลว
- ปิด Fast Startup และ Hibernate ด้วย
powercfg /h offแล้วสั่ง Shut down ตามปกติ ไม่ใช้ Power Off
Linux
- ตรวจว่า
/etc/fstabอ้างดิสก์ด้วย UUID ไม่ใช่/dev/sda1เพราะชื่ออุปกรณ์บนปลายทางจะเป็น/dev/vda - ตรวจว่า kernel โหลดไดรเวอร์ virtio ได้ตอนบูต ถ้าเป็น
=yคือฝังใน kernel แล้ว ถ้าเป็น=mต้องมีอยู่ใน initramfs
grep -E 'CONFIG_VIRTIO_(BLK|NET|PCI)=|CONFIG_SCSI_VIRTIO=' /boot/config-$(uname -r)
lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio # Ubuntu / Debian
sudo lsinitrd | grep virtio # AlmaLinux / Rocky / RHEL
# ถ้าไม่พบ ให้สร้าง initramfs ใหม่ที่มีไดรเวอร์ virtio
sudo dracut -f --add-drivers "virtio_blk virtio_scsi virtio_net virtio_pci" # ตระกูล RHEL
printf 'virtio_blk\nvirtio_scsi\nvirtio_net\nvirtio_pci\n' | sudo tee -a /etc/initramfs-tools/modules && sudo update-initramfs -u # Ubuntu / Debian
ขั้นตอนที่ 2: VMware VM Export แบบ OVF จาก vSphere Client
ปิด VM จากในระบบปฏิบัติการให้เรียบร้อย แล้วทำ VMware VM Export ผ่านหน้าเว็บ
- ใน vSphere Client คลิกขวาที่ VM เลือก Template > Export OVF Template
- ตั้งชื่อ ใส่คำอธิบายถ้าต้องการ แล้วคลิก OK เบราว์เซอร์จะดาวน์โหลดไฟล์ .ovf, .vmdk และไฟล์อื่นในแพ็กเกจทีละไฟล์ ถ้าเบราว์เซอร์ถามเรื่องการดาวน์โหลดหลายไฟล์ ให้กดอนุญาต
- ถ้าเปิดจาก ESXi Host Client ให้คลิกขวาที่ VM แล้วเลือก Export ได้ไฟล์ชุดเดียวกัน
ตั้งแต่ vSphere 6.5 เป็นต้นมา vSphere Client ไม่มีตัวเลือกส่งออกเป็น OVA ไฟล์เดียวแล้ว Broadcom แนะนำให้แปลงชุด OVF เป็น OVA ด้วย ovftool ตาม บทความ Exporting a Virtual Machine as a Single OVA File การดาวน์โหลดผ่านเบราว์เซอร์ยังหลุดง่ายเมื่อดิสก์ใหญ่ ถ้า VM มีดิสก์เกินร้อย GB ให้ใช้ ovftool ในขั้นตอนที่ 3 แทน
ovftool web-01/web-01.ovf web-01.ova
ขั้นตอนที่ 3: ทำ VMware VM Export เป็น OVA ด้วย ovftool
ovftool ทำ VMware VM Export จาก ESXi หรือ vCenter มาเป็นไฟล์ OVA ได้ในคำสั่งเดียว เสถียรกว่าการดาวน์โหลดผ่านเบราว์เซอร์ ระบุตำแหน่ง VM ด้วยรูปแบบ vi:// ถ้าชื่อผู้ใช้มีอักขระพิเศษ เช่น @ ให้เขียนเป็น %40
# จาก ESXi โดยตรง
ovftool --noSSLVerify vi://[email protected]/web-01 /data/export/web-01.ova
# จาก vCenter ระบุ Datacenter และโฟลเดอร์ของ VM
ovftool --noSSLVerify "vi://administrator%[email protected]/DC1/vm/web-01" /data/export/web-01.ova
# ไม่รู้ path ของ VM ให้ไล่ดูทีละระดับ
ovftool --noSSLVerify vi://administrator%[email protected]/DC1/vm/
ovftool จะถามรหัสผ่านเอง อย่าใส่รหัสผ่านลงในคำสั่งเพราะจะติดอยู่ในประวัติคำสั่ง ตัวเลือก --noSSLVerify ข้ามการตรวจใบรับรองของ vCenter ใช้ได้ในเครือข่ายภายในที่ไว้ใจได้เท่านั้น รูปแบบคำสั่งเพิ่มเติมดูใน OVF Tool Command Syntax to Export and Deploy OVA/OVF Packages