В последнее время стал разбираться с виртуализацией Windows, поскольку этот мусор еще иногда требуется. Под Linux вопросов вообще не возникает, можно вообще использовать LXC, если просто что-то погонять надо, но, в целом, QEMU вполне себе работающее средство и ядерное, по сравнению с VirtualBox.
Поставил чистую винду, еще при установке задал диск VirtIO и отдал дрова с соответствующего диска (пакет в Fedora называется virtio-win.noarch : VirtIO para-virtualized drivers for Windows). После установки дал винде покопаться на прицепленном CD-ROM (образе из этого пакета), чтобы взять оттуда дрова для Balloon, сетевухи (тоже в virtio-режиме, как все рекомендуют) и поставил с него же QEMU guest, который, впрочем, у меня пока и не запустился.
Наступил на грабли почти сразу.
Как поклонник BTRFS, положил образ на эту файловую систему. Диск у меня - старенький Samsung на 1Тб, но вполне себе выдает 30Мб/сек на чтение, например. Для виртуалки бы мне вполне хватило, с учетом кеширования. Но не тут-то было. Скорость болталась около 500Кб/сек и с жуткими провалами.
Я все глаза стер об iostat, скорость маленькая, количество запросов не очень большое, около 120, очередь небольшая, сервис-тайм небольшой, но при этом винда адски тормозит. Все икает, загрузка идет минуты три. Пробовал отключать кеширование виртуалки, крутил с raw и qcow2, отключал CoW, никак.
Пришлось поверить всей той куче записей "не ставьте виртуалки на BTRFS". Хотя кто-то писал, что у него все нормально. И я знаю, почему. Положил образ виртуалки на SSD. Это просто самолет стал. Никаких тебе проседаний и приседаний. На одной SSD средней древности, SATA3, все просто летает. И суть, похоже в параллельном доступе к BTRFS. Если копировать на диск виртуалку - скорость очень хорошая. Если виртуалка работает на диске и лезет к нему в несколько потоков, все становится очень плохо, если это не SSD. Но, кризис... SSD, чтобы протирать его виндой, у меня нет.
Сделал
md-raid0, нарезал туда дисков. Отформатировал в ext4, как сказано
здесь, замонтировал так
Код:
mount -o data=writeback,noatime,nodiratime,nobarrier,commit=300
в sysctl поставил
Код:
vm.vfs_cache_pressure = 1
vm.dirty_ratio = 50
vm.dirty_background_ratio = 1
и в rc.local (автозапуск) поставил
Код:
echo deadline>/sys/block/sdb/queue/scheduler
echo deadline>/sys/block/sdc/queue/scheduler
echo deadline>/sys/block/sde/queue/scheduler
/sbin/blockdev --setra 256 /dev/sdb
/sbin/blockdev --setra 256 /dev/sdc
/sbin/blockdev --setra 256 /dev/sde
винда, конечно, не как на SSD, но задышала.