Tải nặng luôn là bài toán đau đầu trên nền tảng ảo hóa. Khi chạy AI training, cơ sở dữ liệu lớn hay firewall 10GbE/40GbE, độ trễ do Hypervisor ESXi can thiệp vào luồng I/O thường làm giảm hiệu năng rõ rệt. Cụm 8 host ESXi mình quản lý từng gặp tình trạng nghẽn cổ chai CPU khi xử lý hàng trăm nghìn gói tin mỗi giây qua vSwitch. DirectPath I/O chính là chìa khóa tháo gỡ điểm nghẽn này.
Ba hướng tiếp cận khi gán phần cứng vào máy ảo
Tùy theo nhu cầu tài nguyên và ngân sách, bạn có 3 lựa chọn chính:
- Ảo hóa tiêu chuẩn (Emulated/Para-virtualized): ESXi cấp adapter ảo như VMXNET3 hay LSI Logic SAS. Mọi lệnh I/O đều đi qua CPU host để biên dịch. Cách này linh hoạt nhất nhưng ngốn tài nguyên CPU host khi tải cao.
- Chia sẻ phần cứng (vGPU / SR-IOV): Phần cứng vật lý được chia thành nhiều Virtual Functions (VF) cho nhiều VM dùng chung. Tuy vậy, bạn phải trả phí license đắt đỏ (như NVIDIA AI Enterprise) và cài driver chuyên biệt.
- VMware DirectPath I/O (PCIe Passthrough): Trao toàn quyền điều khiển controller PCIe cho duy nhất một máy ảo qua IOMMU (Intel VT-d hoặc AMD-Vi). Hypervisor hoàn toàn đứng ngoài luồng dữ liệu.
Đánh đổi khi sử dụng DirectPath I/O
Hiệu năng cao luôn đi kèm đánh đổi. Bạn cần cân nhắc kỹ các giới hạn vận hành trước khi kích hoạt.
Lợi thế vượt trội
- Hiệu năng tương đương máy vật lý (Bare-metal): Độ trễ I/O giảm từ hàng chục microsecond xuống mức nano-second do bỏ qua hoàn toàn lớp đệm kernel ESXi.
- Băng thông tối đa: Tận dụng trọn vẹn tốc độ đường truyền (ví dụ line-rate 9.4 Gbps trên card 10GbE) hoặc hàng triệu IOPS của ổ NVMe PCIe 4.0.
- Không tốn chi phí bản quyền: Tính năng tích hợp sẵn trên bản ESXi miễn phí lẫn vSphere Standard/Enterprise Plus.
Những giới hạn cần chuẩn bị trước
- Mất vMotion và DRS: VM bị cố định trên host chứa card PCIe vật lý. Bạn không thể di chuyển VM sang host khác khi bảo trì nóng.
- Không hỗ trợ Snapshot và Fault Tolerance (FT): ESXi không thể chụp trạng thái bộ nhớ hay đồng bộ lockstep của thiết bị passthrough.
- Bắt buộc khóa 100% RAM (Memory Reservation): Không thể dùng Memory Overcommit. Bạn gán bao nhiêu RAM cho VM, host phải cấp đủ bấy nhiêu RAM thực tế.
Kịch bản thực tế nên áp dụng
Trong môi trường sản xuất, DirectPath I/O mang lại hiệu quả rõ rệt nhất ở 3 trường hợp:
- VM Router/Firewall (pfSense, OPNsense, VyOS): Passthrough card Intel X520/X710 10GbE để định tuyến line-rate mà không làm CPU host quá tải vì ngắt mạng (interrupts).
- Máy ảo AI/Data Science: Gán trọn vẹn 1 card GPU NVIDIA RTX 4090 hoặc A100 chạy LLM nội bộ cho đội ngũ Data, tiết kiệm hàng chục nghìn USD tiền license vGPU.
- Storage Server (TrueNAS Core/SCALE): Passthrough card LSI SAS HBA ở chế độ IT Mode. Nhờ đó, TrueNAS trực tiếp đọc SMART và quản lý ZFS pool trên từng ổ cứng vật lý.
Các bước triển khai DirectPath I/O trên ESXi
Bước 1: Bật IOMMU trong BIOS/UEFI của Server
Khởi động máy chủ vào BIOS và kích hoạt các tính năng ảo hóa phần cứng:
- Hệ thống Intel: Bật
Intel Virtualization Technology (VT-x)vàIntel VT for Directed I/O (VT-d). - Hệ thống AMD: Bật
AMD-VvàAMD IOMMU.
Bước 2: Xác định PCI Device ID qua SSH
Mở terminal SSH vào host ESXi để lấy địa chỉ phần cứng:
# Liệt kê các thiết bị mạng, card đồ họa và controller lưu trữ
lspci | grep -iE "nvidia|ethernet|storage|lsi"
Ghi lại địa chỉ bus của thiết bị, chẳng hạn 0000:03:00.0 cho card mạng Intel X520-DA2.
Bước 3: Kích hoạt Passthrough trên vSphere Client
- Truy cập vSphere Client hoặc giao diện ESXi Host Client.
- Vào mục Host > Configure > Hardware > PCI Devices.
- Nhấp Toggle Passthrough.
- Tìm thiết bị cần dùng theo PCI ID ở Bước 2, tích chọn và nhấn OK.
- Khởi động lại host ESXi nếu hệ thống yêu cầu giải phóng driver gốc.
Bước 4: Gán thiết bị PCIe vào máy ảo
- Tắt nguồn VM (Power Off).
- Chuột phải vào VM > chọn Edit Settings.
- Nhấn Add New Device > chọn PCI Device.
- Tại trường thiết bị vừa thêm, chọn card phần cứng đã kích hoạt ở Bước 3.
- Mở mục Memory, tích vào ô Reserve all guest memory (All locked). Đây là thiết lập bắt buộc để DMA (Direct Memory Access) chạy ổn định.
- Lưu cấu hình và bật nguồn máy ảo.
Bước 5: Kiểm tra nhận diện trên hệ điều hành khách
Đăng nhập vào máy ảo Linux và kiểm tra driver:
# Kiểm tra xem Guest OS đã nhận diện thiết bị PCIe chưa
lspci -nnk | grep -iA 3 "ethernet\|vga\|3d\|storage"
# Xác nhận kernel nạp driver trực tiếp (ví dụ ixgbe, nvidia)
dmesg | grep -iE "pci|iommu"
Nếu card hiển thị đúng tên cùng driver gốc của hãng sản xuất, hệ thống đã cấu hình thành công. Máy ảo lúc này sẵn sàng vận hành với toàn bộ sức mạnh của phần cứng.

