KVM下附加硬盘的passthrough直通

这个比较有意思,同事要存放 2TB 的数据,但是系统是 1.7TB 的 4 块 600G 盘组成的 Raid10。

很明显盘空间不够了,去库房找两块 10TB 的大盘组成 Raid1 给他用好了。

问题来了,系统是 KVM 虚机,怎样把这个 10TB 的大盘给送进虚机呢?

这里面还真有要注意的问题:

Important

Guest virtual machines should not be given write access to whole disks or block devices (for example, /dev/sdb). Guest virtual machines with access to whole block devices may be able to modify volume labels, which can be used to compromise the host physical machine system. Use partitions (for example, /dev/sdb1) or LVM volumes to prevent this issue.

注意上面的说明,是不建议将整个硬盘送进虚机里面去的,建议是送分区进去,避免会写坏整个盘。

所以先把盘的分区做好,格式化并挂载,以 /dev/sdb 为例

1parted -s /dev/sdb mklabel gpt mkpart primary 0% 100%
2mkfs.xfs /dev/sdb1
3mount -t xfs /dev/sdb1 /mnt/sdb1

然后到实体机的磁盘目录

 1# cd /dev/disk/
 2# ls
 3by-id  by-path  by-uuid
 4
 5# cd by-id
 6# ll
 7total 0
 8lrwxrwxrwx 1 root root  9 3月  26 2018 scsi-36b083fe0e4f71a001c36c36716543d4d -> ../../sda
 9lrwxrwxrwx 1 root root 10 3月  26 2018 scsi-36b083fe0e4f71a001c36c36716543d4d-part1 -> ../../sda1
10lrwxrwxrwx 1 root root 10 3月  26 2018 scsi-36b083fe0e4f71a001c36c36716543d4d-part2 -> ../../sda2
11lrwxrwxrwx 1 root root 10 3月  26 2018 scsi-36b083fe0e4f71a001c36c36716543d4d-part3 -> ../../sda3
12lrwxrwxrwx 1 root root  9 11月 18 16:02 scsi-36b083fe0e4f71a002928bf63ef284827 -> ../../sdb
13lrwxrwxrwx 1 root root 10 11月 18 16:24 scsi-36b083fe0e4f71a002928bf63ef284827-part1 -> ../../sdb1
14lrwxrwxrwx 1 root root  9 3月  26 2018 wwn-0x6b083fe0e4f71a001c36c36716543d4d -> ../../sda
15lrwxrwxrwx 1 root root 10 3月  26 2018 wwn-0x6b083fe0e4f71a001c36c36716543d4d-part1 -> ../../sda1
16lrwxrwxrwx 1 root root 10 3月  26 2018 wwn-0x6b083fe0e4f71a001c36c36716543d4d-part2 -> ../../sda2
17lrwxrwxrwx 1 root root 10 3月  26 2018 wwn-0x6b083fe0e4f71a001c36c36716543d4d-part3 -> ../../sda3
18lrwxrwxrwx 1 root root  9 11月 18 16:02 wwn-0x6b083fe0e4f71a002928bf63ef284827 -> ../../sdb
19lrwxrwxrwx 1 root root 10 11月 18 16:24 wwn-0x6b083fe0e4f71a002928bf63ef284827-part1 -> ../../sdb1

image-20211119163327664

看中间一行,scsi-36b083fe0e4f71a002928bf63ef284827-part1 指向 /dev/sdb1,记录下来

然后 virsh-edit 编辑 KVM 虚机文件,增加硬盘部分:

1    <disk type='block' device='disk'>
2      <driver name='qemu' type='raw'/>
3      <source dev='/dev/disk/by-id/scsi-36b083fe0e4f71a002928bf63ef284827-part1'/>
4      <target dev='vda' bus='virtio'/>
5    </disk>

注:上面我们是使用了 by-id,当然也可以使用 by-path 和 by-uuid 来指定源盘

重启虚机并进入查看,我们能看到这块盘盘符是 /dev/vda

1fdisk -l
2
3Disk /dev/vda: 11755.9 GB, 11755860262912 bytes, 22960664576 sectors
4Units = sectors of 1 * 512 = 512 bytes
5Sector size (logical/physical): 512 bytes / 512 bytes
6I/O size (minimum/optimal): 512 bytes / 512 bytes

接下来就比较怪异了,这个盘分明没有分区,我们却可以直接 mount

1mount -t xfs /dev/vda /material

然后 df -h 再看

image-20211119164054485

能认出来,正常使用就行了。

非常古怪是吧。

大家还要注意实体机的挂载路径是 /mnt/sdb1,虚机内的挂载路径是 /material,这两个路径都是指向同一块盘,可以共通。


CentOS7的救援模式和紧急模式
使用FreeIPA和FreeRadius搭建双因子认证服务器
comments powered by Disqus