Назад | Перейти на главную страницу

Медленный дисковый ввод-вывод в KVM с LVM и md raid5

Я уже две недели борюсь с настройкой kvm под debian, особенно с производительностью гостевого диска ввода-вывода.

Система:

-Supermicro 1018d-73mtf (X10SL7-F motherboard)
-16GB ECC/UB
-Intel Xeon E3-1240v3
-6xWD Red 750GB 6Gb/s

На этом я запускаю Debian Wheezy на двух дисках, остальные четыре диска настроены с md для raid5 с LVM сверху для гостевого хранилища. Производительность непосредственно на raid5 (измеряется путем создания LV, его установки и запуска тестов bonnie ++ и dd) в порядке, давая мне ~ 220/170 МБ / с для чтения / записи, но на гостях я получаю приличное чтение и 40-50 МБ / с для записи , протестирован как на Windows (Server 2012), так и на Linux (Debian). Я прочитал о выравнивании дисков и разделов и воссоздал настройки raid и lvm по книге, но не получил повышения производительности.

При измерении нагрузки с помощью atop во время записи непосредственно с хоста я вижу, что диски и lvm получают высокие нагрузки, но измерения во время записи гостя показывают, что диски находятся на уровне ~ 20-30%, а lvm становится "красным" (100%) .

Были выполнены обычные настройки KVM / хост-системы, установка планировщика на крайний срок, установка полосовых кешей для рейда, cache = none для гостей, перепрошивка карты контроллера SAS в IT-режим (LSI 2308), и у меня нет идей , вот pastebin с соответствующей информацией о настройке в надежде, что кто-то заметит что-то, что я сделал неправильно http://pastebin.com/vuykxeVg.

Если нужно еще что-нибудь иль вставьте.

Редактирует:

Это в основном то, как настраиваются диски, md и lvm, с некоторыми изменениями, потому что я использую 3 диска + запасные. http://dennisfleurbaaij.blogspot.se/2013/01/setting-up-linux-mdadm-raid-array-with.html

Скриншоты atop во время тестов записи хоста и гостя (bonnie ++)

Хост: http://i.imgur.com/IsTprqA.png

Гость: http://i.imgur.com/uVmhFCK.png

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

Посмотрим,

  • Вы можете выровнять границы разделов в соответствии с размером полосы RAID, это нормально.
  • Вы можете установить соответствующие параметры оптимизации файловой системы, это тоже нормально.

  • Но для правильного выравнивания LVM вам необходимо, чтобы полосы RAID соответствовали размеру LVM.

Размер экстента LVM всегда равен степени 2. Таким образом, размер вашей полосы RAID должен быть степенью 2. Чтобы получить его, вам нужно, чтобы количество дисков в RAID5 было равно 2 ^ N + 1 = 3, 5, 9. ..

С 4 дисками в RAID5 это невозможно.

Поскольку программный RAID5 не имеет защищенного кеша с обратной записью, он может быть значительно уязвим из-за «частичного штрафа при записи полосы».

Может быть, у вас есть и другие причины, ограничивающие производительность записи, но первая, которую я бы сделал, - переход на RAID10. С RAID10 на всех 6 дисках вы можете получить производительность чтения и емкость гостевого хранилища, сопоставимые с вашей первоначальной настройкой ... и без головной боли с выравниванием;).

Я провел обширное тестирование KVM и производительности кеширования (вы можете прочитать Вот, Вот и Вот), и многие рекомендации, которые вы найдете в Интернете, устарели или просто ошибочны. Но давайте продвигаться по шагам ...

  1. RAID5 требует гораздо меньшего размера блока (порядка 32-64 КБ), чем ваш (512 КБ, как видно из pastebin), и BBU (для кэширования с обратной записью), чтобы быть жизнеспособным для чего-либо, отличного от шаблонов последовательного чтения / записи.
  2. Избегайте RAID5 для любых рабочих нагрузок, которые требуют операций ввода-вывода в секунду и / или вызывают значительную часть случайных операций записи. Это ТОЧНО то, что нужно гостевой ОС (количество операций ввода-вывода в секунду и произвольная скорость записи), поэтому выбор RAID5 (без и аппаратного BBU для включения кэширования с обратной записью по всему массиву) является неправильным. Вместо этого используйте RAID10.
  3. Абсолютно разрешите cache = writeback для ваших гостей. Cache = none немного лучше только для последовательных операций чтения / записи или абсолютно нерегулярных и недружелюбных к кешу шаблонов.
  4. Используйте драйверы virtio в гостях каждый раз, когда это возможно.

Если вы погуглите для производительности kvm disk io, вы увидите потрясающее количество совпадений. Так что я останусь с XEN. ;-)

Так что, похоже, это общая проблема KVM.

Обычный способ - использовать правильный драйвер virtio.

Затем идут две строчки:

Оба вроде работают - но оба говорят, что значения по умолчанию просто ужасны.

Не используйте кеш с вашим гостем kvm, если гость отправляет запрос на запись, и запрос идет в кеш хоста (данные кеша находятся в памяти физического хоста), а ваш хост выходит из строя, и запрос не записывается на гостевой виртуальный диск , возможно, у вас возникнет проблема с файловой системой на вашем гостевом компьютере