Я настраиваю виртуальную гостевую систему Ubuntu 15.10 на сервере Ubuntu 15.04, используя libvirt и KVM.
Хранение в хост-системе:
# mount | grep ext4
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sdb1 on /media/hdd type ext4 (rw,relatime,data=ordered)
/ dev / sda это SSD и / dev / sdb это HDD.
Первоначальная настройка производилась с помощью virt-manager.
Проблема:
Общая производительность гостевой системы кажется хорошей, однако некоторые операции, особенно установка пакетов с помощью apt-get (и, следовательно, установка гостевой системы), выполняются очень медленно.
Образ гостевого диска находится в необработанном формате, и я попытался разместить его как на SSD, так и на жестком диске в виде файла, а также в виде отдельного раздела на жестком диске. Различные местоположения имеют некоторую разницу в производительности, однако установка некоторых пакетов с использованием apt-get по-прежнему в два или три раза медленнее, чем в хост-системе.
Я также пробовал различные варианты кеширования диска qemu, и используя небезопасно кеш, кажется, полностью устраняет проблему. Но любые другие настройки кеша, включая никто и обратная запись показывает плохую производительность. Конечно, использование unsafe не похоже на реальное решение.
Вот отрывок из гостевой xml-конфигурации:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/sdb2'/>
<target dev='vda' bus='virtio'/>
<boot order='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
При использовании файла образа вместо раздела, который становится:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source file='/media/hdd/dsi/vm/ubuntu4.bin'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<boot order='2'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
Пытаясь решить эту проблему, я заметил, что первый раздел на жестком диске не был правильно выровнен, поэтому я воссоздал раздел с правильным выравниванием (которое для этого жесткого диска - 4096). Это тоже мало помогло.
Я также пробовал установить для гостя elevator = noop, но безрезультатно.
Когда я запускаю аналогичную гостевую систему на ПК с Windows с помощью VirtualBox, я не испытываю такого снижения производительности, поэтому я надеюсь, что есть способ запустить гостевую систему с такой же производительностью и на KVM.
Пытаться
cache=directsync
Или
cache=writethrough
Также
vm.swappiness=1
vm.vfs_cache_pressure=75 (play around with this)
Используйте deadline вместо cfq / noop (я нашел плохих исполнителей на ssds и raid).
Не обращайте внимания на то, что люди говорят о cache = none или обратной записи как о лучшем. Это не всегда так просто.