虚拟机是隔绝系统又享受多重快乐的工具,但过于隔绝导致虚拟机使用宿主机硬件时不是很方便,本文记录虚拟机直通宿主机硬盘的操作方法。
背景
由于走上了把NAS装在KVM虚拟机里的道路,为了速度和可靠性以及OMV的可用性,不得不研究KVM硬盘直通的方法。
- 宿主机操作系统 Ubuntu 20.04
- KVM 虚拟机操作系统 debian 9 (Windows 也可以)
- 宿主机装有 6T 的物理磁盘,需要直通给虚拟机系统使用
操作流程
确定设备
- 首先需要确定当前想要挂载的磁盘
lsblk -f
代码语言:javascript复制$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda xfs VS1 9a2c7b09-cc65-400d-b3c0-fc7709c8b3fd 5.4T 1% /disk/nas1
sdb xfs disk2 3bbbdabc-438e-46be-b2d7-b01f09baa8de 5.4T 1% /disk/nas2
sdc
├─sdc1 vfat 8256-9294 505.7M 1% /boot/efi
├─sdc2 xfs e3be39bc-a3d9-4a83-886f-af706c070147 525.9M 28% /boot
└─sdc3 LVM2_member XqJkfT-9pQk-SxcV-FpXV-D53R-8DNP-LKOpi2
├─ubuntu--vg-root xfs 7744d87a-3c9f-418e-b47f-4e23d4432d53 93.1G 15% /
└─ubuntu--vg-swap_1 swap 9f90bf3a-e5e0-43a7-9c59-5a08a37ade7e [SWAP]
我需要挂载的是
sda
sdb
两块磁盘,这里以其中一块为例
打开虚拟机管理器
- 关闭虚拟机
- 打开虚拟机管理器
virt-manager
- 打开要直通的虚拟机
添加设备
- 点击蓝色叹号 -> 添加硬件
- 选择
存储
->自定义存储
->磁盘设备
->SATA
(下拉菜单有 bug 的话可以使用方向键调整选项) ->管理
- 选择
本地浏览
-> 找到/dev/sdb
设备文件
此时可以查看一下旁边的 XML 配置信息
本质上刚刚的操作就是添加了一段 XML 在虚拟机的配置文件当中
- 单击完成,可以看到用这个方法我添加了两块硬盘
测试
- 开启虚拟机
- 查看虚拟机磁盘设备信息
lsblk -f
代码语言:javascript复制$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda xfs VS1 9a2c7b09-cc65-400d-b3c0-fc7709c8b3fd
sdb xfs disk2 3bbbdabc-438e-46be-b2d7-b01f09baa8de
sr0
vda
|-vda1 ext4 d15943f9-07e3-4b0a-a9c7-21c25583fc7b 24.6G 8% /
|-vda2
`-vda5 swap bb586ff3-7d32-4d3b-b3fb-6e72ddc9edd8 [SWAP]
- 其中
sda
sdb
为我直通的磁盘
后记
- 事实上网上大多数方法讲的是直接编辑虚拟机配置文件,此方法使用图形界面,新手容易操作
- 在宿主机中输入命令:
virsh edit kvm-name
- 可以看到指定虚拟机的配置 xml 文件
- 我经过上述操作后在配置文件中多了两个块:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/sda'/>
<target dev='sdb' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/sdb'/>
<target dev='sdc' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='2'/>
</disk>
- 也就是说,如果直接在xml中添加上述信息可以达到相同的效果,供大家参考
参考资料
- https://mp.weixin.qq.com/s/OdjG2OdeZhOYq5GEEyzTjQ