libvirt: почему так мало IOPS при прямом подключении LUN к гостю KVM - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть один 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 предназначен для хранения виртуальных машин (/ var / lib / libvirt / images), а другие будут подключаться непосредственно к виртуальным машинам для будущего хранения почты и соответствующих метаданных.

# 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

Итак, я получил этот результат для теста fio при записи в папку tmp виртуальной машины (/ dev /mapper / images), неплохо!

запись: IOPS = 66,1 КБ, BW = 258 МБ / с

Теперь я присоединяю LUN к этой виртуальной машине с помощью этого xmlfile:

<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, BW = 68.7MiB / s

Я играл с различными опциями в xml-файле, такими как cache = none, bus = virtio, .., но мне не удалось действительно увеличить такты.

ДляТеперь я застрял.Я не знаю, где искать.

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Итак, мне удается получить одинаковые IOP на хостах и ​​гостях с этой настройкой:

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

Я также пытаюсь смонтировать блочное устройство как диск или как луну:

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

И

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

С совершенно одинаковыми результатами.

...