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/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/
Passthrough theo cách này thì giống như việc sử dụng 1 ổ ảo trên cả 1 ổ vật lý. Khi có lỗi thì không thể lấy lại được dữ liệu. Để có thể đọc lại dữ liệu nếu máy lỗi thì phải passthrough cả chipset quản lý.
Cách này mình làm theo hướng dẫn chính thức từ Proxmox: https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM) : By adding the raw physical device to the Virtual machine, you can test installers and other disk repair tools that work with disk controllers like ddrescue, Clonezilla or Ubuntu Rescue Remix.
Bạn cho xin cái nguồn hay bài viết nào nói rằng làm cách này thì giống như việc sử dụng 1 ổ ảo trên cả 1 ổ vật lý và khi có lỗi thì không thể lấy lại được dữ liệu để mình tham khảo thêm với. Biết đâu Proxmox nó chỉ tầm bậy.
Mình không có nguồn tài liệu cũng như không biết Proxmox có chỉ bậy hay không. Nhưng đây là trải nghiệm thực tế của mình.
1. Trong Xpen không thấy được thông tin của ổ HDD đã passthough.
2. Khi mình tạo 1 máy ảo xpen mới, mình passthough theo hướng dẫn của Proxmox thì máy ảo bắt phải tạo lại Pool mới mà không cho sử dụng pool cũ.
Đây là list HDD của mình khi mình passthough cả Card PCIE to 6 sata.(https://upanh.tv/image/iupFu3)
Nhiều khả năng bạn làm sai gì đó chứ không phải Proxmox chỉ sai.
1. Xpen không thấy được thông tin ổ HDD có thể do hạn chế gì đó bên Proxmox
2. Mình đã tạo thử 1 máy ảo Xpen mới, và passthrough lại đĩa cứng từ Xpen cũ qua Xpen mới và thấy bên Xpen mới vẫn nhận ra Pool đã tạo trước đó, và có thể thực hiện Online Assemble để phục hồi lại: https://img.upanh.tv/2023/05/11/NNN-Synology-NAS.png
Mình gặp tình trạng y chang bạn này. Cùng một ổ cứng đó nhưng sau khi detach và gán vào lại thì trong Synology không nhận diện được ổ cứng này nữa. Do tính năng Online Assemble nó nhận diện theo số series của ổ cứng. Mà passthrought thì nó không có thông tin này luôn. Thành ra nó bắt buộc xoá và tạo pool mới làm mình mất sạch dữ liệu luôn.
Gắn qua cổng SATA của main thì mình chưa tìm ra cách passthrough được controller của main để nó nhận được đủ thông tin của ổ cứng. Nhờ mọi người hướng dẫn thêm chứ tình trạng này chỉ cần rút ra cắm lại ổ cứng có khi bắt tạo lại pool mất hết dữ liệu luôn quá
Đã bổ sung thêm cách passthrough serial number cho HDD trong bài viết, có thể migrate qua lại giữa các máy ảo và không lo mất dữ liệu nhé.
Passthrough kiểu này thì k biết Xpen có đọc được sức khoẻ của ổ k ạ? Vì e thấy nó k đọc đc mấy thông tin khác
Không đọc được bạn nhé. Mình vừa mới kiểm tra hệ thống ở nhà, nó hiện ra thông số chung chung như HDD ảo thôi.
Vậy e đang chạy raid 1 thì sao biết khi nào ổ die ta :)) với cái S.M.A.R.T trên proxmox có realtime k ạ
e đang gặp vấn đề là gắn scsi0-5 thì ok còn cái thứ 6 thì k được nữa, k biết có cách nào gắn hơn k ạ ???
Cám ơn bạn, mình newbie mà thấy hấp dẫn bởi proxmox nên đang mày mò. Tuy nhiên đến bước passthough thì khi dùng lệnh “qm set 126…” báo lỗi “400 too many arguments”. Bạn có biết do gì không vậy, mình dùng xpenology 7.2 theo hướng dẫn của bạn.
https://img.upanh.tv/2024/02/01/1ca6061b88b0f1d6f.jpg
Bạn làm theo thử hướng dẫn ở đây xem sao: https://forum.proxmox.com/threads/qm-set-vmid-agent-1-results-in-400-too-many-arguments.102260/
Cám ơn b. Ko hiểu sao cái ổ 2.5 thì ko làm dc, còn cắm ổ 3.5 6tb thì lại bt. Để mình kt thêm
Mình đang có 1 con server vật lý, chạy Proxmox, giờ muốn tìm giải pháp backup VM (khoảng 6 con), trong trường hợp chét Raid chẳng hạn thì vẫn còn bản backup VPS) admin có thể tư vấn đc ko?
Mình sau khi chạy lệnh pass through ổ HDD thì vào trong Xpen VM thấy hiện đủ các ổ, nhưng bên cạnh card hard disk thì hiện là QEMU harddisk, như vậy là pass through không thành công phải không ?
https://upanh.tv/image/2pE7pA
Trên proxmox pass through thành công thì nó vẫn hiện lalf QEMU Harddisk nhé. Chừng nào bạn passthrough nguyên cái PCI Controller Card thì nó mới hiện tên hard drive. Vẫn xài bình thường.
Mình vừa thử lại với 2 ổ khác, dưới đây là cmd với kết quả
https://upanh.tv/image/2plJSA
https://upanh.tv/image/2plc3h
https://upanh.tv/image/2plPCF
Bạn kiểm tra giúp mình với
Nếu như pass through trên Proxmox mà vẫn hiện là QEMU Harddisk, mình đọc ghi dữ liệu trong đó, đến khi mình muốn chuyển sang làm ổ lưu trữ trên bare metal (cài mới hoàn toàn), cắm lại nguyên (giả sử 2 ổ RAID SHR trên VM Xpen) thì dữ liệu trên Xpen mới có được nhận diện và Assemble không ?
Cảm ơn bác
Mình chưa thử bao giờ, nhưng nhớ đọc trên forum proxmox thấy người ta nói xài bình thường.
Lệnh pass-through HDD của bạn dư một số lệnh đầu “root@proxmox:/mnt/pve/thuanr#”.
Cảm ơn bạn đã hướng dẫn cho người mới
===============================================
root@proxmox:/mnt/pve/thuanr# qm set 126 -sata3 /dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
update VM 126: -sata3 /dev/disk/by-id/ata-TOSHIBA_MQ01ABF050M_X66BP0UWT
Cám ơn bạn. Mình đã sửa lỗi.
1. Anh cho em hỏi sao em add 1 ổ qua SATA 3 rồi, dùng cùng cấu trúc kia add một ổ khác thì nó thay thế luôn
2. Làm sao để add được ổ NVME nhỉ?
chào bạn, bạn cho mình hỏi mình có passthrough cái ổ M2 32GB của mình vào đc VM rồi nhưng mình muốn dùng nó để làm ssd cache mà hình như cách này nó chỉ nhận ổ là hdd thôi thì ko biết mình có cách nào để sử dụng ổ M2 như 1 ssd để làm cache ko ạ. Cảm ơn bác
E là ca này khó có cách nào làm được vì hạn chế vụ Passthrough của Proxmox.
Cảm ơn bạn vì các bài viết rất hữu ích.
Mình đang thực hiện passthrough ổ HHD vào nhưng cứ thực hiện thêm serial number xong, bấm ctrl+x, rồi Y xong là ổ cứng trên máy ảo (trên hardware) biến mất luôn, bạn có thể giúp được không? Thử đi thử lại mấy lần đều thế luôn, vào file config thì vẫn còn dòng config đó:
sata3: /dev/disk/by-id/ata-HGST_HTS545050A7E380_TE95113Q0Z3DGS,size=488386584K,serial:TE95113Q0Z3DGS
Cảm ơn bạn
Khai bao sai rồi bạn ơi. serial=…., không phải serial:…
Chào anh. Cảm ơn anh vì hướng dẫn rất bổ ích. Tuy nhiên, em đã follow toàn bộ quá trình passthrough HDD vào nhưng Synology không detect cái ổ đó.
Entry em đã pass vào conf của VM:
sata3: /dev/disk/by-id/ata-WDC_WD62PURZ-85B3AY0_WD-C80J23RG,backup=0,serial=WD-C80J23RG,size=5860522584K
Mong anh giải đáp ạ. Em cảm ơn!