查询数据
一、查找目标硬盘的 ID
打开PVE 节点的 >_ Shell 或通过 SSH 连接 PVE 主机,执行以下命令:
ls -l /dev/disk/by-id/
回车后会列出硬盘的ID

找到需要直通的硬盘ID,复制即可
本文需要直通的示例硬盘ID为ata-HGST_HUH721008ALE600_7HK48ZPF
释义
此部分为解释可跳过
注意,这边可能会出现多个同名,下面解释以上图中的ata-HGST_HUH721008ALE600_7HK48ZPF为例
📌 核心概念解释
这些是为磁盘生成的稳定符号链接,方便你在 /dev/disk/by-id/ 下唯一识别硬盘和分区。
| 链接格式 | 含义 |
ata-HGST_HUH721008ALE600_7HK48ZPF | 指向整块物理硬盘 |
ata-HGST_HUH721008ALE600_7HK48ZPF-part1 | 指向该硬盘上的第 1 个分区 |
ata-HGST_HUH721008ALE600_7HK48ZPF-part2 | 指向该硬盘上的第 2 个分区 |
ata-HGST_HUH721008ALE600_7HK48ZPF-part3 | 指向该硬盘上的第 3 个分区 |
🔍 详细说明
- 不带
-partN的链接:- 代表整个物理磁盘设备。
- 用于整盘操作,比如:
- 直通给虚拟机
- 创建 LVM 物理卷
- 对磁盘进行全盘格式化或分区
- 带
-partN的链接:- 代表磁盘上的具体分区(N 是分区编号,从 1 开始)。
- 用于分区级操作,比如:
- 挂载到文件系统
- 格式化为 ext4/xfs 等文件系统
- 作为 LVM 逻辑卷的底层设备
- 为什么用 by-id 而不是 /dev/sda?
/dev/sda、/dev/sdb这类盘符可能会因为硬件顺序变化而改变(比如新增硬盘、重启后)。by-id链接是基于硬盘的硬件序列号和型号生成的,永远唯一且稳定,不会随启动顺序变化,非常适合 PVE 这类需要稳定引用磁盘的场景。
💡 实用建议
- 整盘操作:使用不带
-partN的链接(如ata-HGST_HUH7210080ALE600_7HK48ZPF)。 - 分区操作:使用带
-partN的链接(如ata-HGST_HUH7210080ALE600_7HK48ZPF-part1)。 - PVE 中添加磁盘:在 PVE 网页端添加磁盘时,选择
by-id下的整盘链接,避免盘符漂移导致的问题。
二、查找已占用磁盘编号
打开对应虚拟机的硬件页面
如果要直通的总线类型为sata,则查看sata编号使用了哪些,顺延即可

如图所示,已使用编号为sata0、sata1,则可以使用的下一个编号为sata3,也就是现有编号上+1,其他的总线类型,比如scsi也是一样的。
直通硬盘/分区
打开PVE 节点的 >_ Shell 或通过 SSH 连接 PVE 主机,执行以下命令:
qm set 101 --sata2 /dev/disk/by-id/ata-HGST_HUH721008ALE600_7HK48ZPF本示例直通的总线类型为sata,且已使用编号为sata0、sata1,则此处使用sata2,qm set 101 --sata2中的101指的是虚拟机ID,你要直通给哪个虚拟机就填哪个虚拟机ID,本文示例虚拟机ID为101,直通整块硬盘。如果需要直通指定的某个分区,按照下方说明部分调整即可。
说明
如果你想把本文需要直通的示例整盘直通给虚拟机,应该选择:
/dev/disk/by-id/ata-HGST_HUH721008ALE600_7HK48ZPF如果你想直通某个指定分区给虚拟机,应该选择:
/dev/disk/by-id/ata-HGST_HUH721008ALE600_7HK48ZPF-part1虚拟机ID是这个数字


如下图所示即为直通成功

虚拟机也同样显示增加了一块硬盘sata2
