在Proxmox VE上运行OpenWrt/LEDE虚拟机——8.添加物理磁盘到虚拟机中
PVE可以将主机的物理磁盘直接地分配给其下的VM来独立使用,这种方式在VMware的方案中被称为RDM(Raw Device Mapping,即裸设备映射),也经常被称为“硬盘直通”,但其实与真正的“Pass Through”还是不同的。
有些时候,我们可能需要将物理磁盘单独分配给某个虚拟机来使用,在PVE主机上将物理磁盘添加到KVM的虚拟机中也比较方便,下面简要的配置说明。
1) 创建KVM虚拟机
在添加物理磁盘到VM之前,应先在PVE下创建好所需的KVM虚拟机,其ID(vm_id)需要在后面的过程中使用。
这一步比较容易,前文也有说明。
2) 获取物理磁盘信息
在添加物理磁盘之前,需要先确认其标识(ID)信息,然后根据此信息来确认其设备文件的路径和名称。在本文中,假定Model和Serial分别为:$brand-$model和$serial_number,而实际上它们通常为一些字母和数字组成的字符串。具体方法如下:
(1) 获取磁盘标识信息
- WebUI方式
在WebUI的主机“节点”——“DIsks”下可以列出PVE主机所有已识别到的硬盘,在这里找到要添加给VM所用的物理磁盘。记下它的标识信息:Model(型号,中文被误译成了“模型”)和Serial(序列号)。
- CLI方式
此步骤需要在shell下进行,PVE已经集成了shell,当然亦可使用ssh工具连接到PVE主机来执行shell命令,其具体命令及参数如下:
lshw -C storage -C disk
其中,lshw命令是linux系统下查看硬件信息的工具,可以列出系统识别到的硬件信息。参数-C <class>是指定类别为“class”来过滤跟硬件中跟其有关的信息,这里指定了类别为storage(存储)和disk(磁盘)来显示跟磁盘设备相关的信息。
在这里记录已识别的磁盘的型号和序列号信息。
若系统不支持此命令,需要先安装下lshw软件包,其命令如下:
apt-get update apt-get install lshw
虽然两种方式都可以获取物理磁盘的信息,但CLI方式比WebUI方式获取的信息更为详细,故推荐CLI方式。
(2) 确认磁盘的设备文件的路径和名称
找到上面的两个参数后在shell下执行如下命令:
ls -l /dev/disk/by-id/
这个命令按照磁盘ID来列出所有的磁盘设备,在结果中找到带有$brand-$model和$serial_number的磁盘设备ID,并记录下其完整路径和名称,如“/dev/disk/by-id/<type>–$brand-$model_$serial_number“,其中,”<type>“表示其接口方式,通常为ATA、SATA,SCS和SASI等类型,IDE和SATA接口一般为”ata“,SCSI及SAS接口一般为”scsi“。后面的$brand-$model和$serial_number则是一串带有字母和数字的字符串。其后还会有链接的路径和文件名称。如” -> ../../sdb“,”sdb“即为其设备名称。
3) 添加物理磁盘到VM中
PVE目前还不支持在WebUI下添加物理磁盘,需要在shell下通过CLI的方式来添加,使用的工具为qm(Qemu/KVM虚拟机管理器),通过命令”set“来设置物理磁盘到虚拟机中。其具体命令及参数如下:
qm set <vm_id> --<disk_type>[n] /dev/disk/by-id/<type>-$brand-$model_$serial_number
其中,参数vm_id在前面的创建虚拟机的过程中已经指定好,此处直接使用即可;参数”–<disk_type>[n]“指定磁盘的总线接口类型和编号,其类型可以选择IDE、SATA、VirtIO Block和SCSI类型,而编号从0开始,最大值根据总线接口类型有所不同,IDE为3,SATA为5,VirTIO Block为15,SCSI为13;”/dev/disk/by-id/<type>-$brand-$model_$serial_number”为磁盘ID的具体路径和名称。
在实际中可以直接替换成真实参数,下面是一个具体的实例:
qm set 1000 --sata0 /dev/disk/by-id/ata-SanDisk_SD7SB6S128G1122_123456789012
4) 检查和确认
在VM中添加物理磁盘后还应该检查和确认。具体方法如下:
(1) WebUI方式
在WebUI下可以检查VM的”硬件“和磁盘,确认是否已经有ID为$brand-$model_$serial_number的硬盘,其类型应该与前面设置的参数一致。
(2) CLI方式
在shell下可以检查VM的配置文件/etc/pve/qemu-server/<vm_id>.conf,其中<vm_id>为虚拟机的ID)是否已经含有改磁盘的配置信息,其格式一般为:
<disk_type>[n]: /dev/disk/by-id/<type>-$brand-$model_$serial_number, size=<size_number>K
具体命令如下:
cat /etc/pve/qemu-server/<vm_id>.conf | grep ”$brand-$model_$serial_number"
其中,<vm_id>为虚拟机的ID,$brand-$model_$serial_number为磁盘ID。
至此,VM的物理磁盘已添加完毕。此外,还可以参考PVE官方的Wiki来获得帮助。