LinuxForum.Fans
Тема

Скорость дисков virtio и qemu на шине iSCSI от Virtio

Автор: XliN 57 сообщений 14027 просмотров
02.02.2014 20:26 #363905

Все началось с того, что у меня на госте начала просидать база на MS SQL. Диагностика показала, что проблема явно с диском. После некоторых телодвижений так же отвалились сетевые карты virtio.

Пересадил базы от безысходности на iSCSI созданные там же в virt-manager. Но там скорость еще меньше. Что случилось с дисками и с их скоростью? Я в отчаянии. Время до понедельника совсем не много осталось. Голова кипит.

У меня три диска. Первый virtio с виндой на qcow2 с одним снапшотом. Второй Virtio в формате raw и третий quemu в raw (созданный как iscsi в virt-managere)

Во пару скринов тестов
Винт где раньше была база

Винт, где сейчас база

Винт с системой Windows 2008 (Вообще не дождался окончания)


И теперь сравните с тестами http://openadmins.ru/blog/virtio-ide-benchmark-windows2008srvr2

Мои и рядом не стояли!! Умоляю помочь.

02.02.2014 20:33 #363907

Вот дамп виртуалки

Показать
text

<domain type='kvm' id='10'>
  <name>win2k8</name>
  <uuid>6958dd50-6449-c6b4-593a-92cbded9b058</uuid>
  <memory unit='KiB'>6242304</memory>
  <currentMemory unit='KiB'>6242304</currentMemory>
  <vcpu placement='static' cpuset='4-7,12-15'>6</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>Nehalem</model>
    <vendor>Intel</vendor>
    <feature policy='require' name='pbe'/>
    <feature policy='require' name='rdtscp'/>
    <feature policy='require' name='est'/>
    <feature policy='require' name='vmx'/>
    <feature policy='require' name='ds'/>
    <feature policy='require' name='smx'/>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='vme'/>
    <feature policy='require' name='dtes64'/>
    <feature policy='require' name='tm2'/>
    <feature policy='require' name='ht'/>
    <feature policy='require' name='dca'/>
    <feature policy='require' name='pcid'/>
    <feature policy='require' name='tm'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='pdpe1gb'/>
    <feature policy='require' name='ds_cpl'/>
    <feature policy='require' name='xtpr'/>
    <feature policy='require' name='acpi'/>
    <feature policy='require' name='monitor'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/win2k8_1-snap1.img'/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/win2k8-1.img'/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/virtio-win-0.1-74.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/win2k8-2.img'/>
      <target dev='sda' bus='scsi'/>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb0'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb0'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb0'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
      <alias name='scsi0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:05:d5:47'/>
      <source bridge='bridge0'/>
      <target dev='vnet2'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:57:e6:0e'/>
      <source bridge='bridge1'/>
      <target dev='vnet3'/>
      <alias name='net1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='direct'>
      <mac address='52:54:00:e5:b2:d6'/>
      <source dev='eth0' mode='bridge'/>
      <target dev='macvtap0'/>
      <model type='virtio'/>
      <alias name='net2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
    </interface>
    <interface type='direct'>
      <mac address='52:54:00:00:d2:b5'/>
      <source dev='eth1' mode='bridge'/>
      <target dev='macvtap1'/>
      <model type='virtio'/>
      <alias name='net3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/2'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/2'>
      <source path='/dev/pts/2'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5903' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='none'/>
</domain>

02.02.2014 22:57 · отредактировано #363931

а база где? на котором из дисков в смысле?

и еще, как выглядит маунтпоинт /var/lib/libvirt?

02.02.2014 23:14 #363934

dyasny,
База сейчас на втором рисунке. Перетащил с virtio диска.

[console][root@micro ~]# ll /var/lib/libvirt
итого 26652
drwx--x--x 2 root root 4096 Янв 28 22:16 boot
drwxr-xr-x 2 root root 4096 Янв 28 22:16 dnsmasq
drwx--x--x 2 root root 4096 Янв 28 22:16 filesystems
drwx--x--x 2 root root 4096 Мар 1 2012 im
lrwxrwxrwx 1 root root 21 Мар 16 2012 images -> /home/xlin/iso/images
-rw-r--r-- 1 root root 27262976 Май 19 2013 imagesboot-nonfree.iso
drwx------ 2 root root 4096 Янв 28 22:16 lxc
drwx------ 2 root root 4096 Янв 28 22:16 network
drwxr-x---. 5 qemu qemu 4096 Фев 2 22:31 qemu[/console]
в images идет симлинк на другой диск. В /etc/fstab отдельно ничего не монтировал

02.02.2014 23:55 #363949

А логи хоста ничего не говорят?

03.02.2014 00:13 #363953
XliN написал:
Все началось с того, что у меня на госте начала просидать база на MS SQL.

Кстати, у меня ситуация похожая. А именно есть KVM-виртуалка с WinXP. Так вот, начиная с середины декабря (тогда заметил) резко упала её производительность. Работа на "локальном" виртуальном диске тормозит неимоверно. Тривиальное копирование информации там идет со скоростью несколько десятков КИЛОбайт в секунду.
Ну а далее - есть своп этой самой XP, который работает с такой же скоростью. Ну и сама ось из за тормозного свопа еле ползает.
Почему это произошло - не знаю, но склонен винить именно KVM/QEMU. Так как в ту настроенную машину я не лазаю, она как робот работает в полном автомате. А производительность её меня по любому устраивает. Но всё равно неприятно.

03.02.2014 03:10 #363957

Cruiser78, А хостовая какая ОС? Не CentOS? Можент после обновления на 6.5 все и началось.

03.02.2014 13:14 #364009

Можно поиграться с cache='none', но это при условии, что контроллер с BBU, иначе очень опасно.

03.02.2014 13:50 #364019
"Macumazan" написал:
cache='none'

У меня на тестовой ОС на диске стоит cache='none'. Скорость не блещет.

"Macumazan" написал:
что контроллер с BBU, иначе очень опасно

Как это узнать и чем опасно?

03.02.2014 13:53 #364022

Пришла идея пресадить виртуалку на LVM отдельный том. Т.е. Отрезать кусок уже у существующей. Склонироватиь туда гостя и проверить скорость. Прокатит?
Можно ли img туда залить?

Прочитал в инете, что если виртуака крутится на LVM операции ввода-вывода у нее быстрее.

З.Ы, Жду вечера, пока пользователи не пойдут домой. Т.к. нужно будет размонтировать основной раздел для операции.

Что думаете? Есть кто шарит в LVM? Я с ним мало игрался. Буду делать по этой инструкции http://irternus.blogspot.ru/2011/07/lvm.html

З.Ы,Ы. Если делать клонирование, нельзя ли выбрать один диск гостя для клона или он все попытается запендюрить?

03.02.2014 16:18 · отредактировано #364051
XliN написал:
[quote="Macumazan"]cache='none'

У меня на тестовой ОС на диске стоит cache='none'. Скорость не блещет.

"Macumazan" написал:
что контроллер с BBU, иначе очень опасно

Как это узнать и чем опасно?[/quote]

image образы на файловой системе более чем подвержены разрушению при критичных сбоях или внезапном отключении питания.

А наличие BBU надо смотреть , например, через утиль для управления контроллером от его производителя.

03.02.2014 21:10 #364136
"XliN" написал:
Пришла идея пресадить виртуалку на LVM отдельный том. Т.е. Отрезать кусок уже у существующей. Склонироватиь туда гостя и проверить скорость. Прокатит?
Можно ли img туда залить?
Прочитал в инете, что если виртуака крутится на LVM операции ввода-вывода у нее быстрее.
З.Ы, Жду вечера, пока пользователи не пойдут домой. Т.к. нужно будет размонтировать основной раздел для операции.
Что думаете? Есть кто шарит в LVM? Я с ним мало игрался. Буду делать по этой инструкции http://irternus.blogspot.ru/2011/07/lvm.html
З.Ы,Ы. Если делать клонирование, нельзя ли выбрать один диск гостя для клона или он все попытается запендюрить?

qemu-img convert из файла в LV работает без проблем. я все таки считаю что тут проблема со скоростью физ. дисков или с драйвером внутр ВМ, пара процентов производительности полученная от переноса на блочное устройство тут мало что дадут.

03.02.2014 23:26 #364153
XliN написал:
Cruiser78, А хостовая какая ОС? Не CentOS? Можент после обновления на 6.5 все и началось.

Про хост - угадал. Но вот тормоза начались сильно ранее, по крайней мере - за неделю-другую до моего критического обновления, кода все мои файловые сервера женским половым органом накрылись. По крайней мере именно тогда обратил на это дело внимание. Пришла сотрудница из сопровождающей Консультант+ организации проверить его работу и уперлась рогом в те тормоза. Потом я немного поперекидывал XP-образ, поискал более быстрые диски, но увы, это не сильно помогло. Ну и сейчас - еле ползает. А у топикстартера, сильно подозреваю, собака зарылась в меленной работе кэша.

03.02.2014 23:38 #364158
XliN написал:

Можно ли img туда залить?

Можно. Я начинал работать с виртуалками именно с img. Потом развернул такой бутерброд на двух серверах:
1. LVM на каждом хосту делает разделы, которые далее объединяется по
2. DRBD в режиме primary/secobdary для обеспечения высокой доступности.
3. Далее, на drbd-томе поднимал свой LVM в котором
4. некоторые разделы раздавались под виртуалки по iSCSI.
Переливал виртуалки из img в разделы iSCSI с помощью тривиального tar'а.
Правда, XP так и не стал трогать, она у меня именно в img-формате осталась. Я просто не знаю, можно ли перелить таром ntfs. Тем более, в оффтопике есть неперемещаемые данные...

Ну а на новый год получил подарок от сообщества - 1 и 2 работать осталось, а вот 3 и выше навернулось медным тазом. И сейчас - поднять на drbd-томе группу томов LVM - никак.

04.02.2014 08:32 #364175
"dyasny" написал:
проблема со скоростью физ. дисков или с драйвером внутр ВМ,

Сегодня проверю скорость дисков в гостях Linux. Тогда можно будет сделать вывод.

"Cruiser78" написал:
А у топикстартера, сильно подозреваю, собака зарылась в меленной работе кэша.

В хосте? Может я чего накуралесил в настройках хоста. Где можно посмотреть?

04.02.2014 21:00 #364305

Получил ответ в рассылке, но что то не могу понять. Помогите перевести. Понял только то, что как будто у меня на хосте проблема. Заранее благодарен.

We may have seen this as well. Initial speed tests were actually
pretty good, but after running a few IO test it would actually cause
the physical disks that were dedicated to the windows vm host side to
be stuck at 100% util with no throughput for 30 seconds at a time
according to iostat. We were using noop scheduler on the disks. I
think it's something with your host, as we stopped seeing it when we
moved from stock CentOS 6.5 kernel to vanilla 3.10 kernel. Sorry I
don't have more info on the cause, we saw the issue for a few days but
were already upgrading due to the need for vxlan, so we didn't bother
investigating.
04.02.2014 21:33 #364313

просто пишут что была такая же проблема, но они перевели хост на ванильное ядро и все исчезло.

в другом месте я видел упоминания того, что такие проблемы на одном хосте были у вин2008, но у установленной там же 2008R2 все работало отлично

04.02.2014 21:36 · отредактировано #364314

Тоже были проблемы с быстродействием базы под виртуальной машины. В моем случае мне пришлось приобрести ssd и туда скинуть базу. Так же сменил планировщик на deadline и пару тюнингов в fstab. В твоем случае думаю стоит хотя бы img образ базы перенести на отдельный жесткий диск. И только VirtiO, iSCSI с гигабитной сеткой думаю не чего хорошего не выйдет, канал узкий все же.

04.02.2014 21:50 #364322
"semperN" написал:
iSCSI с гигабитной сеткой думаю не чего хорошего не выйдет, канал узкий все же

iSCSI с одним гигабитом это ой. но если с multipath и несколькими линками, то работает очень хорошо.

04.02.2014 22:00 #364329
dyasny написал:
[quote="semperN"]iSCSI с гигабитной сеткой думаю не чего хорошего не выйдет, канал узкий все же

iSCSI с одним гигабитом это ой. но если с multipath и несколькими линками, то работает очень хорошо.[/quote]
Полностью согласен :) но полагаю у XliN только гигабитный интерфейс, бюджет все же как и у меня :)

Войдите или зарегистрируйтесь, чтобы ответить.