Cập nhật 10/2024: bổ sung thêm phần Passthrough HDD Serial Number và clip Youtube hướng dẫn
Sau khi cài đặt thành công máy ảo XPEnology trên Proxmox, mình tiếp tục thực hiện việc passthrough ổ đĩa cứng để máy ảo XPEnology có thể truy xuất trực tiếp, không phải thông qua sự quản lý của Proxmox.
Dưới đây là hướng dẫn mình thực hiện cho máy ảo XPEnology. Bạn có thể thực hiện cho bất kỳ máy ảo KVM nào khác trên nền tảng Proxmox.
Mục Lục
1. Passthourgh ổ cứng gắn ngoài (External HDD)
Đối với ổ cứng gắn ngoài (External HDD) cắm vào máy chủ qua cổng USB, mình thao tác y hệt như cách thiết lập USB Passthrough đã chia sẻ trong bài viết trước đây.
Ví dụ như dưới đây là ổ cứng gắn ngoài Portable HDD được cấu hình Passthrough vào máy ảo .

2. Passthourgh ổ cứng gắn trong
Đối với ổ cứng gắn trong (Interal HDD) kết nối thông qua cổng SATA / NVME, mình cần phải SSH vào console của Proxmox để thực hiện qua dòng lệnh.
Sử dụng lệnh sau để tìm các ổ cứng đang có trên máy chủ Proxmox
lsblk |awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;printf $0" ";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'|grep -v -E 'part|lvm'
Code language: Nginx (nginx)
Kết quả hiện ra như dưới đây.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT DEVICE-ID(S)
sda 8:0 0 465.8G 0 disk /dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT /dev/disk/by-id/wwn-0x5000039752682108
nvme0n1 259:0 0 953.9G 0 disk /dev/disk/by-id/nvme-eui.002538ba71be0f6a /dev/disk/by-id/nvme-SAMSUNG_MZVLW1T0HMLH-000L7_S35ANX0JA08970
Code language: YAML (yaml)
Mình muốn Passthrough ổ cứng TOSHIBA (465.8G) vào máy ảo XPENology, ghi lại id của nó: ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
.
Để passthrough ổ cứng này vào máy ảo, sử dụng lệnh qm set <vmid> [OPTIONS]
qm set 126 -sata3 /dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
update VM 126: -sata3 /dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
Code language: YAML (yaml)
126
: ID của máy ảo XPENology-sata3
: kết nối vào máy ảo thông qua chuẩn SATA. Nếu cần passthrough nhiều ổ đĩa, cần phải đổi thành-sata4
,-sata5
,…/dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
: id của ổ cứng cần Passthrough
Quay lại giao diện Proxmox, truy cập vào phần Hardware của máy ảo XPENology, danh sách đã hiện ra thêm Hard Disk (sata3).

Truy cập vào máy ảo, ra lệnh Shutdown tắt máy.
3. Passthrough HDD Serial Number
Do Synology nhận diện ổ cứng theo số Serial Number, nên bắt buộc phải bổ sung thêm bước Passthrough HDD Serial Number vào Synology.
Cài đặt lshw để kiểm tra Serial Number của ổ cứng
# Install lshw
apt install lshw
Code language: Nginx (nginx)
Tìm Serial Number bằng lệnh
lshw -C disk
Code language: Nginx (nginx)
Kết quả trả về sẽ thấy dòng serial: WXH….. Đây chính là Serial Number của HDD
*-disk
description: ATA Disk
product: WDC WD10SPZX-75Z
vendor: Western Digital
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 1A03
serial: WXH1AC8EZTTH
size: 931GiB (1TB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096 signature=d7c8623e
Code language: YAML (yaml)
Truy cập vào Shell của Proxmox, chỉnh sửa file cấu hình của máy ảo
nano /etc/pve/qemu-server/100.conf
Code language: Nginx (nginx)
Thay 100
bằng id của máy ảo XPEnology đang chạy
Tìm đến dòng khai báo HDD Passthrough, và bổ sung thêm thông số Serial vào, tương tự như bên dưới.
sata3: /dev/disk/by-id/ata-WDC_WD10SPZX-75Z10T2_WXH1AC8EZTTH,size=976762584K,serial=WXH1AC8EZTTH
Code language: HTTP (http)
4. Hoàn thành
Dưới đây là thành quả của mình sau khi Passthrough HDD từ Proxmox vào máy ảo XPEnnology:1 USB HDD và 1 SATA HDD hoạt động ngon lành trên máy ảo XPEnology.


Với cách passthrough HDD kèm serial number như hướng dẫn ở trên, bạn có thể detach HDD ra khỏi máy ảo và sau đó attach vào 1 máy ảo khác và thực hiện migration mà không lo bị mất dữ liệu. Mình đã test với 1 HDD SATA, và mọi thứ hoạt động bình thường.
Tham khảo: https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM), https://dannyda.com/2020/08/26/how-to-passthrough-hdd-ssd-physical-disks-to-vm-on-proxmox-vepve/