KVM и виртуальные диски
KVM виртуализация имеет много возможностей для оптимизации и ускорения работы гостевой ОС. И нередко узким место является дисковая система. Каждая система виртуализации решает эту проблему по разному.
Предлагаю разобраться в том: что же предлагает kvm?
Итак, на данный момент, в стабильной версии 1.1.1,
имеется следующий выбор опций и их возможные значения, для параметра drive, при запуске kvm:
Диски (file=): qcow2, raw, vdi, vmdk, vpc
Шина (if=): ide, virtio, sd, mtd, pflash, floppy, scsi
Кэширование (cache=): writethrough, writeback, none, unsafe
Запись (aio=): thread, native
Что же из этого использовать? Что даст большую производительность? Попробуем ответить на эти вопросы.
Для начала определимся с тем "что есть что".
Диски:
- qcow2 - формат диска, наиболее универсальный формат. Размер диска можно указать большой, а фактическое место занимаемое диском будет расти пропорционально объему информации "внутри". Формат поддерживает увеличение объема, шифрование, сжатие и снимки.
- raw - сырой формат, используется по умолчанию
- vdi - VirtualBox совместимый формат
- vmdk - VMWare совместимый формат
- vpc - VirtualPC совместимый формат (VHD)
- ide - медленный драйвер передачи данных, организованный аналогично работе ide-диска
- virtio - был выбран в качестве основной "платформы" для виртуализации ввода-вывода в KVM
- устаревшие: sd, mtd, pflash (в версии 1.1.1 не обрабатываются в опции -drive)
- специализированные: floppy, scsi
- writethrough (используется по default'у) - организованно "насквозь", т.е. запись происходит в кеш, и из кеша пишется сразу же на диск
- writeback - запись в кеш, на диск же сброс идет только при flush'е (т.е. в фоне)
- none - запись на диск идет в обход кеша
- unsafe - запись на диск происходит неизвестно когда и не гарантируется что все данные записанны из кэша на диск, даже после flush'a (используется для разработки, debug'a и прочего)
Запись (механизм):
- native - "нативная" Linux aio
- thread - эмуляция POSIX асинхронного ввода\вывода с использованием пула тредов
Внимание: для правильной и оптимальной оптимизации работы дисковых подсистем, рекомендую пройти по ссылке linux.org.ru Выравнивание .
Исходя из имеющейся информации и очень большого кол-во результатов тестов kvm, посвященных разным опциям для дисков. Приведу сразу результаты этих тестов, которые я вынес для себя:
для всех виртуальных машин рекомендуется:
file=block device или lvm, if=virtio, cache=none, aio=native
и для использования преимущественно только для чтения оптимальным:
file=qcow2, if=virtio, cache=writeback, aio=native
Как заявленно программистами, virtualization overhead KVM'а состовляет в среднем 14-15% ( эти данные были получены при file=lvm, if=virtio, cache=none, aio=native ).
Комментариев нет:
Отправить комментарий