首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libvirt:为什么在将LUN直接附加到KVM客人时,有那么多IOPS?

libvirt:为什么在将LUN直接附加到KVM客人时,有那么多IOPS?
EN

Stack Overflow用户
提问于 2019-02-19 15:39:14
回答 1查看 463关注 0票数 0

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

代码语言:javascript
复制
> # 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/映像),其他LUN将直接安装在VM中,以便将来存储邮件和相关元数据。

代码语言:javascript
复制
# 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:

代码语言:javascript
复制
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/tmp/10g.file --bs=4k --iodepth=64 --size=4G --readwrite=randwrite

因此,我在VM的tmp文件夹(/dev/mapper/映像)中编写fio测试时得到了这个结果,非常好!

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

现在,我用这个xml文件向这个VM附加一个LUN:

代码语言:javascript
复制
<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'/>

这个命令是:

代码语言:javascript
复制
virsh attach-device VM_TEST --file lun.xml --persistent

然后,在VM_TEST上:

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

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

代码语言:javascript
复制
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,BW=68.7MiB/s

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

现在我被塞住了。我不知道该去哪儿找。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 20:40:51

因此,通过此调优,我设法在主机和客人上获得了相同的IOP:

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

我还尝试将块设备挂载为磁盘或lun:

代码语言:javascript
复制
<disk type='block' device='lun'>
  <target dev='sda' bus='scsi'/>

代码语言:javascript
复制
<disk type='block' device='disk'>
  <target dev='sda' bus='virtio'/>

结果完全一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54769958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档