Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище.

VMmanager поддерживает локальные хранилища: LVM (с форматом виртуальных дисков RAW), DIR (с форматами RAW и Qcow2).

Для сравнения их производительности проводилось специальное тестирование.

Методика тестирования


Тестирование производилось с помощью утилиты fio. Подробнее об утилите см. по ссылке.

Результат тестирований представлен в виде IOPS (количество операций ввода-вывода в секунду).

Проводились тестирования чтения и записи со следующими параметрами:

Чтение:

[readtest]
blocksize=128k
filename=/dev/vdb
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=16
BASH

Запись:

[writetest]
blocksize=128k
size=100%
filename=/dev/vdb
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=16
BASH

Процесс измерения


Осуществлялось 3 запуска каждого теста. Перед каждым запуском диск забивался нулями при помощи утилиты dd, а затем сбрасывался дисковый кэш операционной системы ( echo 3 > /proc/sys/vm/drop_caches ).

В качестве результирующего бралось среднее из полученных значений (не среднеарифметическое от 3-х, а именно среднее), так как при некоторых запусках значения отличались на порядок.

Запуск тестов проводился на сервере со следующей конфигурацией:

  • процессор: Intel Core2Quad CPU Q6600;
  • объём оперативной памяти: 8 Гб;
  • дисковая система: RAID 10-го уровня, построенный на контроллере adaptec с 4-мя SAS дисками объёмом 150 Гб;
  • ОС: CentOS 6.

Утилита fio устанавливалась из репозитория EPEL. Создавался виртуальный диск размером 50000 Мб. Все диски к виртуальным машинами подключались с использованием драйвера virtio.

Для тестирования чтения/записи на физическом сервере использовался sda4 (на котором позже и создавался как LVM, так и диски для виртуальных машин) с добавлением в настройке fio опции size=50G.

Для тестирования чтения/записи в LVM-разделе узла кластера создавалась LVM группа томов, и в этой группе LVM раздел размером 500000 Мб, как для виртуальной машины.

При тестировании хранилища DIR c форматами RAW и QCoW2 сами образы дисков располагались в виде файлов в файловой системе ext4 в директории /vm.

Для тестирования хранилища DIR с форматом QCoW2 и снапшотами выполнялся один проход, а забивание диска нулями не проводилось, так как наибольший интерес представляла производительность сразу после создания снапшота.

Результаты


Тип хранилищаРезультат теста на чтение, IOPSРезультат теста на запись, IOPS
Чтение/запись на физическом сервере843331
LVM-раздел на физическом сервере848559
Виртуальная машина на DIR (RAW)668545
Виртуальная машина на DIR (QCoW2)621463
Виртуальная машина на DIR (QCoW2) + snapshot61556
Виртуальная машина на LVM854557

Выводы


Наиболее быстрым является использование LVM-хранилища.

RAW-хранилище является наиболее простым для выполнения различных операций: изменение размера, изменение разметки диска, запуск на другой виртуализации без конвертации или конвертация в формат Qcow2.

Преимуществом Qcow2 является поддержка снимков файловой системы (снапшотов), однако их использование очень сильно замедляет запись. Скорость записи снижается по причине того, что происходит ожидание завершения перезаписи всех блоков относительно снапшота.