libvirt:将LUN直接附加到KVM来宾时,为什么会有那么多的IOPS

时间:2019-02-19 15:39:15

标签: libvirt multipath

我在多路径存储池中有一个KVM和一些LUN(Compellent SAN)。 所有文件系统都是xfs。

> # virsh vol-list --pool multipath 
dm-3     /dev/mapper/maildata-store-2-repl
dm-4     /dev/mapper/maildata-store-1-back
dm-5     /dev/mapper/metadata-store-2-repl
dm-6     /dev/mapper/metadata-store-1-back
dm-7     /dev/mapper/images

一个LUN专门用于存储VM(/ var / lib / libvirt / images),其他LUN直接安装在VM中以用于将来存储邮件和相关元数据。

# df /dev/mapper/images1
Sys. de fichiers    blocs de 1K  Utilisé Disponible Uti% Monté sur
/dev/mapper/images1   209611780 18752452  190859328   9% /var/lib/libvirt/images

fio用于比较随机写入的IOP:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/tmp/10g.file --bs=4k --iodepth=64 --size=4G --readwrite=randwrite

因此,在虚拟机的tmp文件夹(/ dev / mapper / images)中写入数据时,我在fio测试中得到了这个结果,很好!

  

写:IOPS = 66.1k,BW = 258MiB / s

现在,我使用以下xml文件将LUN附加到此VM:

<disk type='block' device='lun'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/mapper/maildata-store-1-back'/>
  <target dev='sda' bus='scsi'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>

此命令:

virsh attach-device VM_TEST --file lun.xml --persistent

然后,在VM_TEST上

#fdisk /dev/sda #mkfs.xfs /dev/sda1 #mount /dev/sda1 /test

然后在新创建的分区上重新运行fio测试:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/test/10g.file --bs=4k --iodepth=64 --size=4G --readwrite=randwrite

结果相当糟糕:

  

写入:IOPS = 17.6k,带宽= 68.7MiB / s

我在xml文件中使用了不同的选项,例如cache = none,bus = virtio,..,但是我并没有真正增加措施。

现在我被困住了。 我真的不在哪里找。

谢谢。

1 个答案:

答案 0 :(得分:0)

因此,通过这种调整,我设法在主机和来宾上获得了相同的IOP:

<driver name='qemu' type='raw' cache='directsync' io='native'/>

我还尝试将块设备安装为磁盘或lun:

<disk type='block' device='lun'>
  <target dev='sda' bus='scsi'/>

<disk type='block' device='disk'>
  <target dev='sda' bus='virtio'/>

具有完全相同的结果。