Archive for the ‘Proxmox’ Category

ย้ายเครื่องจาก VMWARE ESXI -> Proxmox

1. เช็คไฟล์ VM Guest ที่จะต้องย้าย นามสกุล *.vmdk

[teee@localhost:~] cd vmfs/
[teee@localhost:/vmfs] ls
devices volumes
[teee@localhost:/vmfs] cd volumes/
[teee@localhost:/vmfs/volumes] ls
11406870-47d1d00d-7d43-5e77c5881669 60f42150-f34e061e-5126-b8cb29a73d0c 81683070-2aaffa8e-91f8-d999fb12eebc
60f4212b-9ac26bf6-1a7d-b8cb29a73d0c 60f42159-83cd1070-e23d-b8cb29a73d0c datastore1
[teee@localhost:/vmfs/volumes] cd datastore1/
[teee@localhost:/vmfs/volumes/60f42150-f34e061e-5126-b8cb29a73d0c] ls -l
total 40
drwxr-xr-x 1 root root 1120 Apr 27 06:16 APPS_AI_Tableau
drwxr-xr-x 1 root root 2800 Jan 26 08:52 OracleVM
drwxr-xr-x 1 root root 420 Mar 31 02:10 iso
drwxr-xr-x 1 root root 560 Apr 1 2025 wiorcl19c
drwxr-xr-x 1 root root 2940 Mar 30 09:01 wishare
[teee@localhost:/vmfs/volumes/60f42150-f34e061e-5126-b8cb29a73d0c] cd APPS_AI_Tableau/
[teee@localhost:/vmfs/volumes/60f42150-f34e061e-5126-b8cb29a73d0c/APPS_AI_Tableau] ls -l
total 524290056
-rw——- 1 root root 536870912000 Apr 27 06:16 APPS_AI_Tableau-flat.vmdk
-rw——- 1 root root 8684 Apr 27 06:16 APPS_AI_Tableau.nvram
-rw——- 1 root root 534 Mar 31 06:46 APPS_AI_Tableau.vmdk
-rw-r–r– 1 root root 0 Mar 31 06:36 APPS_AI_Tableau.vmsd
-rwxr-xr-x 1 root root 3023 Apr 27 06:16 APPS_AI_Tableau.vmx
-rw-r–r– 1 root root 302242 Apr 27 06:16 vmware.log
[teee@localhost:/vmfs/volumes/60f42150-f34e061e-5126-b8cb29a73d0c/APPS_AI_Tableau]

2. ssh เข้าไปที่เครื่อง Proxmox และ scp เพื่อ Copy ข้ามเครื่องมาจาก VmWare

root@server2:/mnt/sda1/images/TableAU-APPS-AI# scp teee@192.168.100.101:/vmfs/volumes/datastore1/APPS_AI_Tableau/*.vmdk .
(teee@192.168.100.101) Password:
APPS_AI_Tableau-flat.vmdk 12% 63GB 102.1MB/s 1:13:00 ETA

3.เช็คข้อมูลว่า Harddisk Data ที่ Copy มาเป็น Thick หรือ Thin Provisioning ถ้าเป็น Thick ควรแปลงให้เป็น Thin ก่อน(ใช้เท่าที่ใช้จริง)
ใช้ qemu-img convert (ดีที่สุด)
วิธีนี้จะ “บีบขนาดตาม data จริง” ให้เลย

qemu-img convert -f vmdk APPS_AI_Tableau.vmdk -O qcow2 disk.qcow2

📌 ผลลัพธ์:

จาก 563GB → เหลือเท่าที่ใช้จริง เช่น 80GB
ได้ไฟล์แบบ thin

root@server2:/mnt/sda1/images/TableAU-APPS-AI# qemu-img convert -f vmdk APPS_AI_Tableau.vmdk -O qcow2 disk.qcow2

การ Convert แบบนี้อาจจะใช้เวลานานตามขนาด Harddisk เราสามารถ Import .vmdk เข้าไปที่ Proxmox ได้เลย

Import เข้า local-lvm
แม้จะ “ไม่ convert เอง” แต่ Proxmox จะจัดการให้ตอน import

#qm importdisk 200 APPS_AI_Tableau.vmdk local-lvm

Proxmox จะอ่าน .vmdk
แล้วเขียนเข้า LVM (เป็น raw)
ใช้งานได้ทันที

✔ ไม่ต้อง convert เอง
✔ ใช้กับ local-lvm ได้ดีที่สุด
❗ แต่ใช้เวลา “พอ ๆ กับ convert” (เพราะต้อง copy 500GB อยู่ดี)

root@server2:/mnt/sda1/images/TableAU-APPS-AI# qm importdisk 200 APPS_AI_Tableau.vmdk local-lvm Configuration file ‘nodes/server2/qemu-server/200.conf’ does not exist

หมายถึง ยังไม่ได้สร้าง VM ID 200 ใน Proxmox VE
วิธีแก้ (ทำก่อน import)สร้าง VM เปล่า
#qm create 200 –name tableau –memory 8192 –cores 4 –net0 virtio,bridge=vmbr0

แค่ create เฉย ๆ ยังไม่ต้องมี disk
แล้วค่อย import ใหม่
#qm importdisk 200 APPS_AI_Tableau.vmdk local-lvm

เสร็จแล้วเพิ่ม Disk
#qm set 200 –scsihw virtio-scsi-pci –scsi0 local-lvm:vm-200-disk-0
#qm set 200 –boot order=scsi0

สังเกตถ้ามีขึ้นข้อความ
update VM 200: -scsi0 local-lvm:vm-200-disk-0 -scsihw virtio-scsi-pci
update VM 200: -boot order=scsi0

ถือว่าเรียบร้อยแล้ว 100%
Disk ถูก attach + ตั้ง boot ถูกต้องใน Proxmox VE แล้ว

สิ่งที่ต้องระวัง
1. MAC ซ้ำใน network

👉 ถ้ามีเครื่องอื่นใช้ MAC นี้อยู่ → network พังทันที

2. OS ภายในอาจจำ MAC เก่า
Windows:
อาจมองเป็น “network ใหม่”
IP หาย / profile เปลี่ยน
Linux:เช็ค:

#ip a

3. ต้องการใช้ MAC เดิม. BC:24:xx:96:xx:9D
ใช้คำสั่ง
#qm set 200 –net0 virtio=BC:24:xx:96:xx:9D,bridge=vmbr0

สรุป
> ใช้ qm set เปลี่ยนได้ทันที
> restart แล้วใช้งานได้เลย
> ตรวจสอบ IP / network ในเครื่องอีกที

ย้ายเครื่อง VM Guest Proxmox ข้าม Server

Server ต้นทาง

Server ปลายทาง

ที่ Server ต้นทางเช็คเครื่องที่จะย้ายก่อนว่าเครื่องไหน


root@server2:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 TableAU running 25480 250.00 1374          <– ย้ายเครื่อง VMID 100
101 Tableau stopped 25480 250.00 0

STEP 1: Backup

root@server2:~# vzdump 100 –mode stop –compress zstd
กันพลาด ใส่ storage ให้ชัดเจน:

root@server2:~# vzdump 100 –mode stop –compress zstd –storage local

จะเก็บไว้ที่ local แน่นอน

มันทำอะไรบ้าง
⛔ หยุด VM 100 ชั่วคราว
💾 backup disk ทั้งหมด (รวม EFI + TPM)
📦 บีบอัดเป็นไฟล์ .vma.zst
▶️ เสร็จแล้ว VM จะ กลับมารันต่อ

root@server2:~# vzdump 100 –mode stop –compress zstd –storage local
INFO: starting new backup job: vzdump 100 –storage local –mode stop –compress zstd
INFO: Starting Backup of VM 100 (qemu)
INFO: Backup started at 2026-04-27 10:03:56
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: VM Name: TableAU
INFO: include disk ‘ide0’ ‘Disk1:100/vm-100-disk-1.qcow2’ 250G
INFO: include disk ‘efidisk0’ ‘Disk1:100/vm-100-disk-0.qcow2’ 528K
INFO: include disk ‘tpmstate0’ ‘Disk1:100/vm-100-disk-2.qcow2’ 4M
INFO: creating vzdump archive ‘/var/lib/vz/dump/vzdump-qemu-100-2026_04_27-10_03_56.vma.zst’
INFO: starting kvm to execute backup task
swtpm_setup: Not overwriting existing state file.
INFO: attaching TPM drive to QEMU for backup
INFO: started backup task ‘7e9bf25f-9c27-4947-97bc-2f9c950569e1’
INFO: 0% (147.2 MiB of 250.0 GiB) in 3s, read: 49.1 MiB/s, write: 16.9 MiB/s
INFO: 1% (2.5 GiB of 250.0 GiB) in 1m 58s, read: 21.2 MiB/s, write: 20.4 MiB/s
INFO: 2% (5.0 GiB of 250.0 GiB) in 3m 56s, read: 21.6 MiB/s, write: 21.5 MiB/s
INFO: 3% (7.5 GiB of 250.0 GiB) in 5m 24s, read: 29.2 MiB/s, write: 29.1 MiB/s
INFO: 4% (10.0 GiB of 250.0 GiB) in 6m 41s, read: 33.3 MiB/s, write: 33.2 MiB/s
INFO: 5% (12.6 GiB of 250.0 GiB) in 8m 23s, read: 25.7 MiB/s, write: 24.8 MiB/s
……..
INFO: 73% (183.0 GiB of 250.0 GiB) in 1h 12m 44s, read: 8.8 GiB/s, write: 0 B/s
INFO: 84% (210.0 GiB of 250.0 GiB) in 1h 12m 47s, read: 9.0 GiB/s, write: 0 B/s
INFO: 94% (237.0 GiB of 250.0 GiB) in 1h 12m 50s, read: 9.0 GiB/s, write: 0 B/s
INFO: 99% (249.6 GiB of 250.0 GiB) in 1h 12m 53s, read: 4.2 GiB/s, write: 44.2 MiB/s
INFO: 100% (250.0 GiB of 250.0 GiB) in 1h 13m 5s, read: 34.1 MiB/s, write: 27.7 MiB/s
INFO: backup is sparse: 163.40 GiB (65%) total zero data
INFO: transferred 250.00 GiB in 4385 seconds (58.4 MiB/s)
INFO: stopping kvm after backup task
INFO: archive file size: 36.49GB
INFO: Finished Backup of VM 100 (01:13:06)
INFO: Backup finished at 2026-04-27 11:17:02
INFO: Backup job finished successfully
INFO: notified via target `mail-to-root`

ไฟล์ที่ได้

จะอยู่ที่: /var/lib/vz/dump/

root@server2:~# cd /var/lib/vz/dump/
root@server2:/var/lib/vz/dump# ls -l
total 46025300
-rw-r–r– 1 root root 2132 Apr 27 09:36 vzdump-qemu-100-2026_04_27-09_19_05.log
-rw-r–r– 1 root root 743 Apr 27 09:57 vzdump-qemu-100-2026_04_27-09_47_41.log
-rw-r–r– 1 root root 5863 Apr 27 11:17 vzdump-qemu-100-2026_04_27-10_03_56.log
-rw-r–r– 1 root root 39180988248 Apr 27 11:17 vzdump-qemu-100-2026_04_27-10_03_56.vma.zst

⏱️ หมายเหตุ
VM จะ ดับระหว่าง backup (ระยะเวลาขึ้นกับขนาด disk)
ของคุณ 250GB → ประมาณ 20–60 นาที (แล้วแต่ disk)

STEP 2: ส่งไฟล์ไปเครื่องปลายทาง

บนเครื่องต้นทาง (server2) รัน:
root@server2:/var/lib/vz/dump# scp /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst root@192.168.100.11:/var/lib/vz/dump/
The authenticity of host ‘192.168.100.11 (192.168.100.11)’ can’t be established.
👉 จะให้ใส่ password ของ root ฝั่งปลายทาง
root@192.168.100.11’s password:
vzdump-qemu-100-2026_04_27-10_03_56.vma.zst 100% 36GB 112.0MB/s 05:33

STEP 3: Restore ที่เครื่อง 192.168.100.11

SSH เข้าเครื่องปลายทาง:
ssh root@192.168.100.11

แล้วรัน:
root@world2:/var/lib/vz/dump# ls -l
total 38262688
-rw-r–r– 1 root root 39180988248 Apr 27 11:26 vzdump-qemu-100-2026_04_27-10_03_56.vma.zst

root@world2:/var/lib/vz/dump# qmrestore /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst 100 –storage local-lvm

unable to restore VM 100 – VM 100 already exists on node ‘world2’. <–VMID (จากที่ Copy มาจากเครื่องเก่าหมายเลข 100 มีอยู่แล้วต้องเปลี่ยนชื่อใหม่เพื่อ Restore)

root@world2:/var/lib/vz/dump# qmrestore /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst 200 –storage local-lvm

restore vma archive: zstd -q -d -c /var/lib/vz/dump/vzdump-qemu-100-2026_04_27-10_03_56.vma.zst | vma extract -v -r /var/tmp/vzdumptmp649754.fifo – /var/tmp/vzdumptmp649754
CFG: size: 745 name: qemu-server.conf
DEV: dev_id=1 size: 540672 devname: drive-efidisk0
DEV: dev_id=2 size: 268435456000 devname: drive-ide0
DEV: dev_id=3 size: 4194304 devname: drive-tpmstate0-backup
CTIME: Mon Apr 27 10:03:57 2026
Rounding up size to full physical extent 4.00 MiB
Logical volume “vm-200-disk-0” created.
Logical volume pve/vm-200-disk-0 changed.
new volume ID is ‘local-lvm:vm-200-disk-0’
Logical volume “vm-200-disk-1” created.
Logical volume pve/vm-200-disk-1 changed.
new volume ID is ‘local-lvm:vm-200-disk-1’
Logical volume “vm-200-disk-2” created.
Logical volume pve/vm-200-disk-2 changed.
new volume ID is ‘local-lvm:vm-200-disk-2’
map ‘drive-efidisk0’ to ‘/dev/pve/vm-200-disk-0’ (write zeros = 0)
map ‘drive-ide0’ to ‘/dev/pve/vm-200-disk-1’ (write zeros = 0)
map ‘drive-tpmstate0-backup’ to ‘/dev/pve/vm-200-disk-2’ (write zeros = 0)
progress 1% (read 2684420096 bytes, duration 2 sec)
progress 2% (read 5368840192 bytes, duration 4 sec)
progress 3% (read 8053260288 bytes, duration 6 sec)
………………………………………………
progress 98% (read 263071399936 bytes, duration 73 sec)
progress 99% (read 265755820032 bytes, duration 73 sec)
progress 100% (read 268440174592 bytes, duration 74 sec)
total bytes read 268440240128, sparse bytes 175452459008 (65.4%)
space reduction due to 4K zero blocks 0.864%
rescan volumes…
VM 200 (efidisk0): size of disk ‘local-lvm:vm-200-disk-0’ updated from 528K to 4M

ความหมาย:

restore VM จาก backup
สร้างเป็น VMID 200 (ไม่ชนของเดิม)
disk จะไปอยู่ที่ local-lvm (pve-data)

หลัง restore เสร็จ ทำต่อเลย
ต้องเห็น:
200 TableAU stopped

root@world2:/var/lib/vz/dump# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 VM 100 stopped 512 0.00 0
200 TableAU stopped 25480 250.00 0
root@world2:/var/lib/vz/dump# qm config 200
bios: ovmf
boot: order=ide0;ide2;net0
cores: 8
cpu: host
efidisk0: local-lvm:vm-200-disk-0,efitype=4m,ms-cert=2023,pre-enrolled-keys=1,size=4M
ide0: local-lvm:vm-200-disk-1,size=250G
ide2: none,media=cdrom
machine: pc-q35-10.1
memory: 25480
meta: creation-qemu=10.1.2,ctime=1771858213
name: TableAU
net0: e1000e=BC:24:11:43:6C:83,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: win11
scsihw: virtio-scsi-single
smbios1: uuid=14f129dc-b684-49fd-a31c-46e3d9b4e4c8
sockets: 1
tpmstate0: local-lvm:vm-200-disk-2,size=4M,version=v2.0
vmgenid: 4d63fc51-7113-4f7b-b63d-b925295f4ef3

เปิด VM
qm start 200

⚠️ ถ้าเปิดแล้วมีปัญหา
❌ Boot ไม่ขึ้น
ลอง:
qm set 200 –cpu x86-64-v2-AES

❌ เน็ตไม่ออก
เช็ค:
ip a
👉 ต้องมี vmbr0
ถ้าไม่ตรง:
qm set 200 –net0 e1000e,bridge=vmbr0

🔥 สรุป
✔️ คำสั่งคุณถูกต้อง 100%
✔️ ใช้ ID 200 กันชน
✔️ Restore เสร็จ = เปิดใช้งานได้เลย