PVE 硬盘直通

ProxmoxVE(PVE)下物理硬盘直通实战

img

查看硬盘序列号

进入ProxmoxVE(PVE)的SSH,或者直接进入PVE管理网页Shell
查看你现在的存储设备:

1
ls /dev/disk/by-id

输出:

1
2
3
4
5
6
root@admin:~# ls /dev/disk/by-id
ata-INTEL_SSDSWERD256G8_PHLA908104FA256CCC
ata-INTEL_SSDSWERS256G8_PHLB908104FA256AAA
ata-ST10000NM001G-2VCXZ453_ZLW05423431YFK
ata-ST10000NM001G-XCVV5433_ZLW02523459A0
...

如主机上有两块硬盘:

  • 2个intel 256G SSD
  • 2个是希捷10T的硬盘

挂载磁盘到虚拟机

设定:虚拟机ID 100

磁盘挂载方式 sata 序号0
挂载磁盘 ata-INTEL_SSDSWERS256G8_PHLB908104FA256AAA
如果需要磁盘格式化等操作则先执行下面磁盘管理操作

命令:

1
qm set 100 -sata0 /dev/disk/by-id/ataINTEL_SSDSWERS256G8_PHLB908104FA256AAA

磁盘管理

非必要 词步骤按需操作
数据无价 谨慎操作!

确定磁盘路径

如果是全新硬盘,那么需要使用磁盘工具格式化
PVE管理网页Shel或者SSH命令

1
ls /dev/sd*

如果你是IDE硬盘,应该没有了吧,使用以下命令查看

1
ls /dev/hd*

输出

1
2
3
4
5
root@admin:~# ls /dev/sd*
/dev/sda /dev/sdb /dev/sdc /dev/sdc3 /dev/sdd2 /dev/sde1 /dev/sdf /dev/sdf3 /dev/sdg2
/dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd /dev/sdd3 /dev/sde2 /dev/sdf1 /dev/sdg
/dev/sda9 /dev/sdb9 /dev/sdc2 /dev/sdd1 /dev/sde /dev/sde3 /dev/sdf2 /dev/sdg1
...

确认需要操作格式化的硬盘路径
如果不放心 也可以直接在Web管理界面直接进行查看
数据中心>节点>磁盘

设备 类别 使用率 GPT 模型 串行 S.M.A.R.T Wearout
/dev/sda SSD Partitions 256GB ata-INTEL_SSDSWERD256G8 PHLA908104FA256CCC PASSED N/A
/dev/sdb SSD Partitions 256GB ata-INTEL_SSDSWERS256G8 PHLB908104FA256AAA PASSED N/A

确定设备路径
如需要操作 /dev/sdb

使用fdisk操作磁盘

确定设备路径后
如需要操作 /dev/sdb
输入命令

1
fdisk /dev/sdb

输出

1
2
3
4
5
6
7
root@admin:~# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

开始在fdisk工具中操作磁盘 输入m阅读命令功能

fdisk命令解释

注意命令区分大小写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
GPT
M 输入保护/混合MBR

泛型
d 删除分区
F 列出可用的未分区空间
l 列出已知的分区类型
n 添加一个新分区
p 打印分区表
t 更改分区类型
v 验证分区表
i 打印有关分区的信息

杂项
m 打印此菜单
x 额外功能(仅限专家)

脚本
I sfdisk脚本文件加载磁盘布局
O 转储磁盘布局到sfdisk脚本文件

保存并退出
w 将表写入磁盘并退出
q 退出而不保存更改

创建一个新标签
g 创建一个新的空GPT分区表
G 创建一个新的空SGI(IRIX)分区表
o 创建一个新的空DOS分区表
s 创建一个新的空Sun分区表

清理新磁盘分区

此步骤删除选定磁盘分区 会造成资料丢失 一定要按需选择

第一次直通新磁盘,建议清理磁盘分区后直通给VM再进行操作可以避免很多问题
命令

1
Command (m for help): p

查看选定的/dev/sdb 磁盘分区 以便在此确认是正确
输出

1
2
3
4
5
6
7
8
9
10
11
12
13
Command (m for help): p

Disk /dev/sdb: 256 GiB,
Disk model: ata-INTEL_SSDSC3KW256G8
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 29C79DBC-7E87-4C37D-848B4-234307420AA6

Device Start End Sectors Size Type
/dev/sdb1 34 409633 409600 200M EFI System
/dev/sdb2 409640 5860533127 5860123488 2.7T unknown

确定磁盘无误,那么可以删除分区了

命令

1
Command (m for help): d

输出

1
2
Command (m for help): d
Partition number (1,2, default 2):

需要回复命令 删除哪个分区,这里直接输入1 并按Enter

因为有原磁盘有俩个分区,那么还需要再执行一次 d 命令

操作完成后,
命令

1
Command (m for help): p

查看分区,可以看到已经没有了分区

最后输入 w 保存修改并退出