Khi xây dựng cụm máy chủ ảo hóa homelab hoặc hạ tầng lưu trữ doanh nghiệp, thiết lập NAS là bài toán phổ biến. Khi cài đặt TrueNAS, Unraid hay OpenMediaVault dưới dạng máy ảo trên Proxmox VE, tạo đĩa ảo thông thường (.qcow2 hay .raw) sẽ làm mất khả năng kiểm soát phần cứng trực tiếp. Để giải quyết triệt để vấn đề này, kỹ thuật passthrough HDD chính là giải pháp tối ưu nhất giúp bàn giao nguyên vẹn ổ đĩa vật lý cho máy ảo quản lý.

Thực tế thì passthrough HDD mang lại cho bạn toàn bộ quyền kiểm soát phần cứng của ổ đĩa từ tốc độ đọc ghi thô, khả năng theo dõi sức khỏe ổ đĩa đến tính năng ngủ đông tiết kiệm điện. Nắm vững phương pháp Proxmox passthrough disk, thành thạo lệnh qm set Proxmox, hiểu rõ quy trình passthrough ổ cứng vào VM và biết cách lấy disk id bằng lsblk sẽ giúp bạn tự tin biến máy chủ Proxmox thành một cỗ máy lưu trữ đỉnh cao. Trong cẩm nang chuyên sâu này, Cypher sẽ hướng dẫn bạn từng bước từ khâu chuẩn bị, xác định ID ổ đĩa cho đến các câu lệnh thực thi an toàn nhất.

Passthrough HDD là gì và tại sao nên gán đĩa vật lý trực tiếp vào máy ảo?

Để hiểu rõ bản chất passthrough HDD (còn được gọi là Raw Device Mapping), trước hết chúng ta cần so sánh với cách thức quản lý đĩa ảo truyền thống trên Proxmox VE. Thông thường, máy chủ mẹ (Host) sẽ định dạng ổ đĩa thành hệ thống tệp tin như ZFS, LVM-Thin hoặc ext4, sau đó tạo ra các tệp ảnh đĩa ảo để gắn vào máy ảo. Cách làm này tiện lợi cho việc sao lưu nhanh nhưng lại tạo ra một tầng trừu tượng trung gian làm giảm hiệu năng I/O và giấu nhẹm thông tin vật lý của ổ đĩa.

Khi bạn thực hiện passthrough HDD, máy chủ Proxmox sẽ bỏ qua việc can thiệp vào cấu trúc tệp tin của ổ đĩa đó, chuyển tiếp toàn bộ luồng lệnh I/O từ máy ảo khách (Guest OS) xuống thẳng phần cứng vật lý. Máy ảo sẽ nhìn nhận ổ đĩa đó hệt như một chiếc ổ cứng thật được cắm trực tiếp vào bo mạch chủ. Nhờ cơ chế passthrough HDD, hệ điều hành khách có thể đọc trực tiếp các thông số kỹ thuật sống còn theo tiêu chuẩn theo dõi sức khỏe ổ đĩa S.M.A.R.T. trên Wikipedia như nhiệt độ, số giờ hoạt động và phát hiện sớm các sector bị lỗi.

Đặc biệt đối với các hệ điều hành lưu trữ chuyên dụng như hệ điều hành lưu trữ chuyên dụng TrueNAS, hệ thống tệp tin ZFS bắt buộc phải có toàn quyền kiểm soát bề mặt đĩa vật lý để tự động sửa lỗi (Self-healing). Việc sử dụng passthrough HDD đảm bảo rằng dữ liệu của bạn được ghi thẳng vào các khối vật lý mà không gặp rủi ro hỏng hóc từ lớp ảo hóa trung gian.

Tiêu chí so sánhỔ đĩa ảo thông thường (.qcow2 / .raw)Kỹ thuật passthrough HDD vật lý
Quyền kiểm soát phần cứngBị ảo hóa, không đọc được thông tin ổ thậtToàn quyền truy cập trực tiếp ổ đĩa vật lý
Đọc chỉ số S.M.A.R.T.Không hỗ trợ từ bên trong máy ảoHỗ trợ đầy đủ nhiệt độ và cảnh báo bad sector
Tính năng ngủ đông (Spin-down)Phụ thuộc hoàn toàn vào cấu hình máy chủ mẹMáy ảo tự điều khiển tắt quay đĩa tiết kiệm điện
Hiệu năng đọc ghi I/OCó độ trễ do qua tầng Hypervisor trung gianĐạt mức tối đa tương đương máy chủ vật lý
Khả năng di chuyển dữ liệuDễ dàng di chuyển file ảnh đĩa qua mạngCó thể rút ổ cắm sang máy tính khác đọc ngay

So sánh 2 phương pháp: Disk Passthrough vs PCIe Controller Passthrough

Trong thực tế quản trị Proxmox, có hai trường phái chính để gán ổ đĩa vào máy ảo: passthrough HDD theo từng đĩa riêng lẻ (Disk Passthrough) và gán toàn bộ card điều khiển (PCIe Controller Passthrough). Mỗi phương pháp đều có ưu và nhược điểm riêng phù hợp với từng kịch bản phần cứng.

Phương pháp thứ nhất là passthrough HDD từng ổ đĩa thông qua tệp định danh thiết bị. Ưu điểm vượt trội của giải pháp passthrough HDD này là bạn không cần phần cứng phải hỗ trợ công nghệ IOMMU phức tạp, không cần card HBA chuyên dụng. Bạn có thể cắm 4 ổ cứng vào cổng SATA trên bo mạch chủ, giữ lại 1 ổ cho Proxmox cài hệ điều hành và passthrough HDD cho 3 ổ còn lại vào máy ảo một cách cực kỳ linh hoạt.

Phương pháp thứ hai là PCIe Passthrough: bạn chuyển giao toàn bộ card HBA (Host Bus Adapter) hoặc toàn bộ chip điều khiển SATA trên bo mạch chủ cho máy ảo. Phương pháp này mang lại hiệu năng cao nhất nhưng đòi hỏi CPU và bo mạch chủ phải bật ảo hóa phần cứng VT-d/AMD-Vi, phân chia nhóm IOMMU sạch sẽ và toàn bộ các ổ cứng cắm trên card đó đều sẽ bị máy ảo chiếm dụng hoàn toàn, máy chủ mẹ Proxmox không thể sử dụng được.

Đối với hầu hết người dùng homelab và máy chủ văn phòng, giải pháp passthrough HDD theo mã định danh duy nhất (Disk ID) là lựa chọn an toàn, dễ triển khai và linh hoạt nhất hiện nay.

Chuẩn bị và xác định chính xác danh tính ổ đĩa trên Proxmox

Một nguyên tắc sống còn khi thực hiện passthrough HDD là bạn tuyệt đối không bao giờ được sử dụng các đường dẫn thiết bị dạng /dev/sda, /dev/sdb hay /dev/sdc. Trên hệ điều hành Linux, các ký hiệu chữ cái này không cố định: khi bạn cắm thêm một chiếc USB hoặc khởi động lại máy chủ, thứ tự nhận diện có thể bị đảo lộn khiến /dev/sda biến thành /dev/sdb, dẫn đến việc gán nhầm ổ đĩa hệ thống và làm hỏng toàn bộ dữ liệu máy chủ mẹ.

Để đảm bảo an toàn tuyệt đối khi passthrough HDD, tiêu chuẩn chính thức từ tài liệu chính thức về Passthrough Physical Disk từ Proxmox Wiki yêu cầu bạn phải sử dụng đường dẫn định danh duy nhất theo số sê-ri của nhà sản xuất nằm trong thư mục /dev/disk/by-id/.

Sử dụng lệnh lshw hoặc lsblk để lấy ID ổ đĩa

Mở cửa sổ dòng lệnh Shell trên giao diện web Proxmox VE hoặc kết nối qua SSH. Thực hiện câu lệnh để lấy disk id bằng lsblk và liệt kê chi tiết toàn bộ các ổ cứng đang cắm trên máy chủ:

# Liệt kê danh sách ổ đĩa kèm thông tin model và số sê-ri
ls -l /dev/disk/by-id/

Màn hình console sẽ in ra một danh sách dài các liên kết tượng trưng (symlink). Dưới đây là mẫu kết quả thực tế khi tìm kiếm ổ đĩa để passthrough HDD:

lrwxrwxrwx 1 root root  9 Sep 23 10:15 ata-WDC_WD40EFRX-68N32N0_WD-WCC7K1234567 -> ../../sdb
lrwxrwxrwx 1 root root  9 Sep 23 10:15 ata-ST8000VN004-2M2101_WKD12345 -> ../../sdc
lrwxrwxrwx 1 root root 13 Sep 23 10:15 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NF0M123456 -> ../../nvme0n1

Hãy chú ý đến các dòng bắt đầu bằng ata- (dành cho ổ cứng SATA thông thường) hoặc nvme- (dành cho ổ cứng thể rắn NVMe). Tuyệt đối bỏ qua các dòng có đuôi -part1, -part2 vì đó là các phân vùng con, chúng ta cần gán toàn bộ ổ đĩa vật lý gốc. Trong ví dụ trên, chuỗi định danh an toàn để passthrough HDD là ata-WDC_WD40EFRX-68N32N0_WD-WCC7K1234567.

Quy trình thực hiện passthrough HDD vào máy ảo bằng lệnh qm set

Sau khi đã có trong tay mã định danh chính xác của ổ đĩa, chúng ta sẽ sử dụng công cụ dòng lệnh quản lý máy ảo qm theo tài liệu dòng lệnh quản lý máy ảo qm của Proxmox VE để tiến hành passthrough HDD vào máy ảo chỉ định.

1. Cú pháp chuẩn của lệnh qm set Proxmox

Cú pháp cốt lõi để thực hiện lệnh qm set Proxmox gắn ổ đĩa vật lý vào máy ảo có định dạng như sau:

# Cú pháp: qm set <VM_ID> -<interface_type><index> /dev/disk/by-id/<DISK_ID>
qm set 100 -scsi1 /dev/disk/by-id/ata-WDC_WD40EFRX-68N32N0_WD-WCC7K1234567

Trong câu lệnh trên, 100 là mã số định danh (VM ID) của máy ảo bạn muốn nhận ổ đĩa. Tham số -scsi1 chỉ định chuẩn giao tiếp SCSI với chỉ mục số 1 (nếu ổ đĩa khởi động của máy ảo đã dùng scsi0, bạn tiếp tục tăng dần lên scsi1, scsi2, scsi3…).

2. Lựa chọn chuẩn giao tiếp Bus: SCSI vs SATA

Khi thao tác passthrough HDD, bạn có thể lựa chọn giữa chuẩn giao tiếp scsi hoặc sata. Để đạt hiệu năng cao nhất, Cypher khuyên bạn nên sử dụng chuẩn scsi kết hợp bộ điều khiển ảo hóa VirtIO SCSI Single. Chuẩn VirtIO SCSI mang lại tốc độ truyền tải vượt trội, hỗ trợ cơ chế đa hàng đợi (Multiqueue) và cho phép truyền tải đầy đủ các lệnh SCSI cao cấp xuống ổ đĩa vật lý.

3. Kiểm tra lại cấu hình phần cứng của máy ảo

Sau khi chạy câu lệnh, hệ thống sẽ in ra thông báo xác nhận thành công update VM 100: -scsi1 /dev/disk/by-id/.... Bạn có thể kiểm tra lại tệp cấu hình máy ảo để xác minh kết quả passthrough HDD:

# Xem tệp cấu hình phần cứng của máy ảo 100
cat /etc/pve/qemu-server/100.conf

Bạn sẽ thấy một dòng mới xuất hiện: scsi1: /dev/disk/by-id/ata-WDC_WD40EFRX-68N32N0_WD-WCC7K1234567,size=3907018584K. Khi mở giao diện web của Proxmox VE và truy cập vào mục Hardware của máy ảo 100, bạn cũng sẽ thấy ổ đĩa mới xuất hiện với biểu tượng ổ cứng màu vàng cam đặc trưng của phương thức Proxmox passthrough disk.

Ứng dụng thực tế: Xây dựng máy ảo TrueNAS / Unraid lưu trữ chuyên nghiệp

Kịch bản ứng dụng phổ biến và giá trị nhất của kỹ thuật passthrough HDD là xây dựng các máy ảo lưu trữ chuyên nghiệp như TrueNAS Core hoặc TrueNAS SCALE chạy lồng bên trong Proxmox VE.

Thay vì phải mua một cỗ máy vật lý riêng biệt cho NAS, bạn có thể tận dụng tài nguyên nhàn rỗi của máy chủ Proxmox để tạo một máy ảo TrueNAS với 4 Cores CPU và 16GB RAM. Sau đó, bạn thực hiện passthrough ổ cứng vào VM cho toàn bộ 4 ổ đĩa HDD dung lượng lớn. Khi TrueNAS khởi động lên, nó sẽ nhìn thấy 4 ổ cứng vật lý độc lập và cho phép bạn tạo mảng RAIDZ2 bảo vệ dữ liệu cực kỳ an toàn.

Nếu bạn muốn nhân bản nhanh các mẫu máy ảo phục vụ lưu trữ mà không mất công cài đặt thủ công từ file ISO, hãy áp dụng giải pháp từ bài viết bí quyết deploy máy ảo Cloud Images thần tốc để khởi tạo hệ thống trong tích tắc.

Hướng dẫn ngắt kết nối (Detach / Remove) ổ đĩa an toàn khỏi VM

Khi có nhu cầu nâng cấp ổ cứng dung lượng lớn hơn hoặc muốn chuyển ổ đĩa sang một máy ảo khác, bạn cần thực hiện quy trình ngắt kết nối passthrough HDD một cách an toàn để tránh làm hỏng cấu trúc hệ thống tệp tin.

1. Unmount dữ liệu an toàn bên trong hệ điều hành khách

Trước khi gỡ bỏ ổ đĩa từ phía Proxmox, bạn bắt buộc phải đăng nhập vào máy ảo khách, dừng các dịch vụ đang đọc ghi dữ liệu và thực hiện lệnh umount phân vùng ổ đĩa đó. Nếu máy ảo chạy TrueNAS, hãy thực hiện thao tác Export/Disconnect Pool an toàn trên giao diện web.

2. Ngắt kết nối ổ đĩa bằng lệnh qm set delete

Sử dụng lệnh qm set với cờ -delete để loại bỏ cổng giao tiếp đã gán ổ đĩa passthrough HDD:

# Gỡ bỏ ổ đĩa gắn tại cổng scsi1 khỏi máy ảo 100
qm set 100 -delete scsi1

Sau câu lệnh này, ổ đĩa vật lý sẽ được giải phóng hoàn toàn khỏi máy ảo 100 và quay trở lại trạng thái sẵn sàng để bạn có thể gán sang một máy ảo khác hoặc format sử dụng cho các mục đích lưu trữ khác của máy chủ mẹ Proxmox.

Xử lý sự cố thường gặp (Troubleshooting) khi passthrough ổ cứng

Trong quá trình thao tác passthrough HDD, đôi khi bạn có thể gặp phải một số tình huống lỗi ngoài ý muốn. Dưới đây là bảng tổng hợp các sự cố thường gặp nhất cùng phương án xử lý nhanh gọn mà Cypher đã đúc kết từ nhiều năm quản trị hạ tầng.

Hiện tượng sự cốNguyên nhân cốt lõiBiện pháp khắc phục triệt để
Lỗi Device or resource busyỔ đĩa đã bị máy chủ mẹ Proxmox tự động mountChạy umount trên Proxmox Host và tắt phân vùng swap nếu có
Máy ảo không nhận ổ đĩaThiếu driver VirtIO SCSI trên hệ điều hành kháchĐổi chuẩn giao tiếp sang sata hoặc cài đặt VirtIO Guest Driver
Tốc độ đọc ghi bị chậm bất thườngChưa kích hoạt tính năng iothread hoặc async I/OBật cờ iothread=1 trong cấu hình ổ đĩa của file conf
Ổ cứng USB bị ngắt kết nối ngẫu nhiênHệ thống Linux tự động bật chế độ USB autosuspendTắt tính năng usbcore.autosuspend trên Host kernel boot

Nếu bạn muốn xây dựng hệ thống sao lưu dự phòng toàn diện cho các máy ảo có gắn ổ đĩa ngoài, hãy tham khảo cẩm nang chuyên sâu về hướng dẫn thiết lập Proxmox Backup Server để đảm bảo dữ liệu quan trọng luôn được bảo vệ an toàn trước mọi biến cố.

Kinh nghiệm thực chiến của Cypher: Lời khuyên thiết kế hệ thống lưu trữ Proxmox

Thú thật là trong suốt những năm tháng vận hành các cụm máy chủ Proxmox cho nhiều đơn vị, mình thấy không ít bạn sysadmin lạm dụng kỹ thuật passthrough HDD cho mọi trường hợp mà không cân nhắc kỹ các hệ lụy đi kèm. Dưới đây là những lời khuyên chân thành giúp bạn đưa ra quyết định kiến trúc đúng đắn nhất.

Thứ nhất, hãy nhớ rằng khi bạn sử dụng passthrough HDD trực tiếp vào một máy ảo, tính năng chụp ảnh nhanh (Snapshot) và sao lưu trực tiếp tệp đĩa đó qua Proxmox VE sẽ bị vô hiệu hóa đối với ổ đĩa được passthrough. Bạn bắt buộc phải cấu hình quy trình sao lưu độc lập từ bên trong hệ điều hành khách (ví dụ sử dụng tính năng ZFS Replication hoặc rsync sang một máy chủ khác). Nếu tính năng Snapshot là ưu tiên hàng đầu của bạn, hãy cân nhắc tạo ZFS Pool trên chính máy chủ mẹ Proxmox rồi chia sẻ vào VM thay vì passthrough trực tiếp.

Thứ hai, nếu bạn xây dựng cụm nhiều máy chủ theo bài viết thiết lập cụm Proxmox Cluster và High Availability, máy ảo có gắn ổ đĩa passthrough HDD vật lý cục bộ sẽ không thể tự động di chuyển (Live Migration) sang máy chủ khác khi có sự cố phần cứng. Bởi vì chiếc ổ cứng vật lý đó đang cắm chết trên thùng máy của node hiện tại, không thể bay qua node khác được.

Thứ ba, để đảm bảo an toàn tuyệt đối cho các dịch vụ quản trị, hãy luôn tham khảo thêm các bước trong hướng dẫn cài đặt và quản trị Proxmox VE toàn diện nhằm phân quyền tài khoản chặt chẽ, tránh việc phân quyền nhầm lẫn cho người dùng không có thẩm quyền can thiệp vào các lệnh cấp thấp của hệ điều hành.

Hiểu rõ ranh giới giữa ảo hóa lưu trữ và passthrough phần cứng trực tiếp sẽ giúp bạn kiến tạo một hạ tầng vừa linh hoạt, vừa an toàn và tối ưu hóa tối đa hiệu năng cho mọi dịch vụ.

Hy vọng qua cẩm nang chi tiết này, bạn đã làm chủ hoàn toàn kỹ thuật passthrough HDD trên máy chủ Proxmox VE, tự tin gán các ổ đĩa vật lý dung lượng lớn vào máy ảo lưu trữ và khai thác tối đa sức mạnh phần cứng của hệ thống một cách an toàn và bền bỉ nhất.