最近在新买的天钡WTR PRO 5825U主机上部署了Proxmox VE(PVE)虚拟化环境,并创建了NAS虚拟机。为进一步提升存储性能,计划将物理硬盘直通(Passthrough)至虚拟机。
开启IOMMU
虚拟机直通硬件需要开启IOMMU,参考:天钡WTR PRO 5825U BIOS设置:来电自启与硬件直通配置
直通方式
硬盘直通虚拟机主要有两种实现方式:PCI直通和硬盘映射。其中PCI直通虽然性能最优,但兼容性和灵活性较差。xiaoz在初次尝试时选择了PCI直通方案,却意外导致PVE系统无法正常启动(具体原因尚未查明),最终改用硬盘映射方案才成功完成配置。
硬盘映射直通又分好几种接口类型,具体对比如下:
对比项 | SATA | SCSI | VirtIO | IDE |
---|---|---|---|---|
命令示例 | --sata1 | --scsi1 | --virtio1 | --ide1 |
性能 | 中等 | 较高 | 最高 | 最低 |
兼容性 | 最好 | 较好 | 需要驱动 | 最好 |
最大设备数 | 6个 | 13个 | 无严格限制 | 4个 |
热插拔支持 | 支持 | 支持 | 支持 | 不支持 |
推荐场景 | 通用场景 | 高性能需求 | Linux系统 | 老旧系统 |
操作系统支持 | 全部 | 多数 | 需要virtio驱动 | 全部 |
配置复杂度 | 简单 | 简单 | 中等 | 简单 |
虚拟化效率 | 中等 | 较高 | 最高 | 最低 |
一般情况下硬盘映射常用方案是SATA
或者SCSI
,这两种方案比较平衡。
设置硬盘直通
首先通过命令ls -l /dev/disk/by-id/
找到物理硬盘的ID,如下图所示。
ID格式如:ata-WDC_WD4xxx-xxx_WD-xxx
,不需要后面的-partx
,找到要直通的硬盘ID并记录下来。
然后修改PVE虚拟机配置文件,文件位于/etc/pve/qemu-server/VMID.conf
下,修改前记得备份。(VMID
是你虚拟机ID编号)
然后添加如下内容:
scsi1: /dev/disk/by-id/ata-WDC_WDxxx-xxx,discard=on,iothread=1
- scsi1:指定使用SCSI控制器(也可以用
sata1
),1表示这是第一个SCSI设备(编号从0开始) - ata-WDC_WDxxx-xxx:是硬盘编号
- discard=on:启用TRIM/DISCARD支持
- iothread=1:启用独立的I/O线程
配置修改完毕后需要关闭虚拟机,然后再启动即可生效。
挂载硬盘
最后用lsblk
或fdisk
查看硬盘映射是否成功,其余的就是分区和挂载了,不在本文讨论范围内。
结语
通过在天钡WTR PRO 5825U主机上部署PVE并配置硬盘直通,成功实现了高性能NAS虚拟机的搭建。尽管在PCI直通过程中遇到了一些挑战,但最终通过硬盘映射方案解决了问题。
天钡WTR PRO 5825U购买地址:https://u.jd.com/OGzqcdS