Press "Enter" to skip to content

Proxmox VE (PVE) 物理硬盘直通教程:使用 RDM 映射 (qm set)

前言

在 Proxmox VE (PVE) 的使用过程中,我们经常需要将宿主机上的某一特定物理硬盘直接分配给虚拟机(VM)使用。例如:给群晖(Synology)分配数据盘,或者给 Windows 虚拟机挂载一块独立的 NTFS 硬盘。

相比于直通整个 SATA 控制器(PCIe Passthrough),使用 RDM (Raw Device Mapping) 方式更加灵活,它允许我们只通过某一块硬盘,而不影响连接在同一控制器上的其他硬盘(比如 PVE 的系统盘)。

本文记录了如何通过命令行(CLI)实现物理磁盘的直通映射。

核心步骤概览

  1. 获取磁盘 ID:找到硬盘唯一的序列号路径。
  2. 执行映射命令:将硬盘挂载到指定虚拟机。
  3. 网页端确认:在 PVE 界面检查并优化配置。

步骤一:获取硬盘 ID (Disk ID)

在 Linux 系统中,/dev/sdX 这种盘符名称在重启后可能会发生变化,因此绝对不能直接使用。我们必须使用唯一的 Disk ID 来进行直通。

  1. 登录 PVE 的管理界面。
  2. 选中宿主机节点,点击 Shell,或者通过 SSH 工具连接到 PVE。
  3. 输入以下命令列出所有磁盘 ID:
ls -l /dev/disk/by-id/

你会在输出结果中看到类似如下的信息:

lrwxrwxrwx 1 root root  9 Jan 20 10:00 ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4... -> ../../sdb
lrwxrwxrwx 1 root root 10 Jan 20 10:00 ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4...-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  9 Jan 20 10:00 nvme-Samsung_SSD_970_EVO... -> ../../nvme0n1

如何选择:

  • 找到你要直通的那块硬盘。通常通过品牌(如 WDC, Seagate)和型号来识别。
  • 复制 ata-scsi- 开头的完整字符串。
  • 注意:不要复制以 -part1 结尾的字符串,那是分区,我们要直通的是整个硬盘。

假设我复制的 ID 为:
ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4123456


步骤二:执行直通命令 (qm set)

我们需要使用 qm set 命令将刚才找到的硬盘 ID 挂载给虚拟机。

命令格式:

qm set <虚拟机ID> -<总线类型><编号> /dev/disk/by-id/<硬盘ID>

参数说明:

  • 虚拟机ID:例如 100101
  • 总线类型
    • sata:兼容性好,适合群晖等系统。
    • scsi:性能更好,适合 Windows/Linux(需安装 VirtIO 驱动)。
  • 编号:例如 sata1, scsi2(确保不要和现有的虚拟硬盘编号冲突)。

实操示例:

假设我要把硬盘挂载给 ID 为 100 的虚拟机,作为 sata1 接口:

qm set 100 -sata1 /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K4123456

按下回车,如果看到 update VM 100: -sata1 ... 字样,说明执行成功。


步骤三:PVE 网页端确认与优化

命令执行完毕后,还需要在图形界面确认一下,并做一些简单的优化。

  1. 回到 PVE 网页管理界面。
  2. 点击左侧的虚拟机(如 100)。
  3. 选择 硬件 (Hardware) 选项卡。
  4. 你会看到列表中多出了一个新的硬盘,显示为 sata1(或你设置的总线)。

推荐优化(可选):

双击该硬盘条目,弹出编辑窗口:

  • SSD 仿真 (SSD Emulation):建议勾选。即使是机械硬盘,勾选后系统会将其识别为 SSD,不再进行碎片整理等针对机械盘的操作,有些系统下还能提升少许性能。
  • IO Thread:如果你使用的是 VirtIO SCSI 控制器,勾选此项可以提升 I/O 性能。

完成后,启动虚拟机,即可在系统内看到这块硬盘。


注意事项

  1. 数据安全:一旦硬盘直通给虚拟机,PVE 宿主机本身就不要再去挂载或操作这块硬盘了,否则会导致文件系统损坏或数据丢失。
  2. 迁移问题:因为这种直通方式绑定了物理硬盘的序列号,如果将该虚拟机迁移(Migrate)到集群中的另一台物理机,该虚拟机将无法启动(因为另一台机器上没有这块硬盘)。
  3. SMART 信息:通过 RDM 方式直通,虚拟机内部通常能看到硬盘的型号和序列号,大部分 NAS 系统也能读取 SMART 信息,但不如 PCIe 直通控制器来得彻底。

总结

使用 qm set 进行 RDM 硬盘直通是 PVE 中最常用的技巧之一。它不需要主板支持 IOMMU,也不独占整个控制器,非常适合家用 All-in-One 服务器灵活分配存储空间。

参考命令速查:

# 查看硬盘ID
ls -l /dev/disk/by-id/

# 挂载硬盘
qm set <vmid> -sata1 /dev/disk/by-id/<disk-id>
发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注