qemu с гостевой ОС kvm работает медленно

Я пытаюсь создать виртуальную машину Windows 7 на хосте Gentoo x86_64 (ядро 3.18.9 hardened) с помощью qemu-system-x86_64 2.3.0 с включенным kvm. Я успешно скомпилировал ядро и установил гостевую машину (Windows 7), хотя она страдает от серьезных проблем с производительностью, которые, как я полагаю, связаны с IO.

Технические характеристики хоста: 1.7ghz (2.6ghz turbo) i5-3317U (2 ядра, 4 потока) с 6gb ddr3 ram и жестким диском 5300rpm. На хосте используются зашифрованные AES luks тома файлов, смонтированные в /home, где хранится образ виртуальной машины. Технические характеристики гостя: 2 ядра, 4 потока, 4gb ram, 15gb образ (что оставляет 1gb дискового пространства для тестирования). Контейнер гостя - qcow2, compat 1.1, lazy refcounts: true, recount bits: 16, кэш установлен на none. Я также попробовал конвертировать этот контейнер qcow2 в формат raw, и это немного помогло решить проблему.

Я установил и включил драйверы virtio там, где это возможно, и проверил, что qemu использует kvm, выполнив команду info kvm в терминале qemus. Я также попробовал вручную настроить свой сценарий запуска, показанный ниже:

#!/bin/bash
export QEMU_AUDIO_DRV=alsa
exec qemu-system-x86_64 \
    --enable-kvm \
    -machine type=pc,accel=kvm \
    -smp cores=2,threads=4 \
    -vga std \
    -soundhw ac97 \
    -drive file=/WindowsVM.img2,cache=none,if=virtio \
    -netdev user,id=vmnic -device virtio-net,netdev=vmnic \
    -cpu host \
    -m 4G \
    -balloon virtio \
    -name Windows \
    -usbdevice tablet \
    -monitor stdio \
    "$@"

Проблема в том, что образ долго загружается и выключается. Также требуется значительное время для открытия приложений (15-20 секунд для открытия internet explorer для тестирования), хотя после нескольких открытий скорость увеличивается, как будто приложения кэшируются. Еще один факт, который я заметил: скорость извлечения zip-файлов никогда не превышает 50-60 кб/с, а загрузка файлов происходит с моей обычной скоростью загрузки, но как только скорость достигает 100%, замирает на некоторое время, прежде чем завершиться. Я запустил crystal disk mark для проверки IO виртуального диска и получил последовательное чтение 400мб/с и запись 300мб/с, что вопиюще неверно. Эти высокие показатели наблюдаются, когда я загружаю виртуальную машину с образа, хранящегося в зашифрованном файловом томе, как упоминалось выше. При перемещении образа в незашифрованную точку монтирования бенчи показывают 70 мб/с на чтение и 35 мб/с на запись, что кажется более нормальным. По совпадению, ВМ страдает гораздо меньше от этого "отставания", когда образ хранится в незашифрованном месте. Время загрузки/выключения по-прежнему довольно продолжительное, но оно не приближается к тому, которое требуется, когда образ хранится в зашифрованном месте, равно как и время открытия/закрытия программ.

Как я убедился в результате тестирования, зашифрованный том файлов, где я хочу разместить образ, может быть причиной проблем, но я хотел бы услышать второе мнение или попробовать другие варианты. Возможно ли зашифровать сам образ с помощью какого-то метода, который может иметь меньшее влияние на производительность, чем хранение незашифрованного образа на зашифрованной точке монтирования? Есть ли шифрование, встроенное в контейнер, которое я могу включить, или есть лучший способ использовать cryptsetup/luks для шифрования именно контейнера для повышения производительности?

Спасибо за помощь.

0
09.11.2015, 20:30
0 ответов

Теги

Похожие вопросы