RAID阵列不能直通虚拟机,因其是控制器封装的逻辑设备(VD/LD),虚拟机仅获黑盒块设备,无法访问原始磁盘序列号、SMART状态及底层SCSI命令;UNRAID等依赖裸盘元数据的系统必须绕过RAID层,改用HBA/JBOD直通模式。

不能直接透传物理 RAID 阵列给虚拟机。RAID 阵列本身是控制器层抽象出的逻辑设备(VD/LD),操作系统看到的是一个块设备(如 /dev/sda),它不包含底层多盘结构信息,也无法被虚拟机“原生识别”为一组独立物理盘。
为什么阵列不能直通?
RAID 控制器把多块物理盘(PD)合并计算、封装成单个逻辑盘(LD),所有数据布局、校验、条带都由卡内固件处理。虚拟机拿到的只是一个黑盒块设备,既看不到原始磁盘序列号、SMART 状态,也无法执行底层 SCSI 命令(如 sg_inq、smartctl -a /dev/sgX)。UNRAID、TrueNAS SCALE、Proxmox 中使用 ZFS 或 mergerfs 的场景,都依赖这些裸盘元数据——所以必须绕过 RAID 层。
正确做法:用直通模式(JBOD/HBA)替代 RAID 模式
想让虚拟机真正“看见并管理”每块物理盘,必须关闭 RAID 功能,启用控制器的直通能力:
- 华三服务器:进 BIOS/UEFI → 进入 RAID 配置界面(Ctrl+R 或 Ctrl+P)→ 找到 “Controller Properties” → 将 “RAID Mode” 改为 “HBA Mode” 或 “JBOD Mode” → 保存重启
- LSI SAS3108/SAS9300 系列:需 Firmware ≥4.650.00-6121 → 进入 WebBIOS(Ctrl+C)→ “Configuration Management” → 启用 “JBOD Mode” → 未配置的盘自动变为 JBOD 状态
- 戴尔/浪潮/联想部分机型:在 PERC 或 H740P 卡中,需将控制器切换为 “IT Mode”(通常需刷第三方固件,不推荐生产环境)或启用 “Direct Attach” 选项
PVE / ESXi 中如何完成透传
直通模式启用后,宿主机 Linux 可识别为 /dev/sdb、/dev/sdc 等独立设备。此时再通过虚拟化平台交付给虚拟机:
-
PVE(Proxmox VE):编辑虚拟机硬件 → “添加” → “PCI 设备” → 勾选对应 SATA/SAS 控制器(如
05:00.0 LSI Logic / Symbios Logic SAS3108),或更推荐“硬盘直通”方式:选择/dev/disk/by-id/ata-WDC_WD40EFAX-68JH4N0_XXXXXX路径 → 勾选 “Discard” 和 “SSD”(如适用)→ 应用 - ESXi:需先在 Host → Configure → Storage Devices 中确认盘已显示为独立设备(非 RAID VD)→ 编辑虚拟机设置 → “Add new device” → “Hard disk” → “Use an existing virtual disk” → 切换为 “Raw Device Mapping (RDM)” → 选择对应 LUN(即直通后的物理盘)→ 设置为 Physical Compatibility Mode
关键验证点
配置完成后,务必检查以下几项,避免“看似直通、实为假透传”:
- 在虚拟机内部运行
lsblk或lsscsi,确认设备型号、序列号与物理盘一致 - 执行
sudo smartctl -i /dev/sdb,能正常返回 SMART 信息(RAID 模式下会报错或返回空) - UNRAID 虚拟机启动后,“Main” 页面应列出全部直通盘,状态为 “Started”,容量准确,无 “Unknown” 或 “0 B” 显示
- PVE 中若用
/dev/sdb直通,宿主机上该设备不应再被 LVM、ZFS 或文件系统挂载,否则会冲突

















