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

Высокая задержка ввода-вывода с программным RAID, шифрованием LUKS и настройкой KVM с разделами LVM

Я обнаружил проблемы с производительностью на сервере Mumble, которые я описал в предыдущий вопрос вызваны проблемой задержки ввода-вывода неизвестного происхождения. Поскольку я понятия не имею, что является причиной этого и как его дальше отлаживать, прошу поделиться своими идеями по этой теме.

Я управляю Корневой сервер Hetzner EX4S как гипервизор KVM. На сервере работает Debian Wheezy Beta 4, а виртуализация KVM используется через LibVirt.

На сервере есть два разных жестких диска емкостью 3 ТБ, поскольку один из жестких дисков был заменен после S.M.A.R.T. сообщалось об ошибках. Первый жесткий диск - это Seagate Barracuda XT ST33000651AS (512 байт логических, размер физического сектора 4096 байт), второй - Seagate Barracuda 7200.14 (AF) ST3000DM001-9YN166 (размер логического и физического сектора 512 байт). Есть два устройства RAID1 программного обеспечения Linux. Один для незашифрованного загрузочного раздела и один в качестве контейнера для зашифрованного остатка с использованием обоих жестких дисков.

Внутри последнего RAID-устройства находится контейнер LUKS с шифрованием AES. Внутри контейнера LUKS находится физический том LVM. VFS гипервизора разделена на три логических тома на описанном физическом томе LVM: один для /, один для / home и один для свопа.

Вот схема стека конфигурации блочного устройства:

sda (Physical HDD)
- md0 (RAID1)
- md1 (RAID1)

sdb (Physical HDD)
- md0 (RAID1)
- md1 (RAID1)

md0 (Boot RAID)
- ext4 (/boot)

md1 (Data RAID)
- LUKS container
  - LVM Physical volume
    - LVM volume hypervisor-root
    - LVM volume hypervisor-home
    - LVM volume hypervisor-swap
    - … (Virtual machine volumes)

Гостевые системы (виртуальные машины) также в основном работают под управлением Debian Wheezy Beta 4. У нас есть еще один экземпляр Ubuntu Precise. Они также получают свои блочные устройства из физического тома LVM. Доступ к томам осуществляется через драйверы Virtio в собственном режиме записи. Планировщик ввода-вывода (лифт) как на гипервизоре, так и на гостевой системе настроен на deadline вместо значения по умолчанию cfs так как это оказалась самая производительная установка согласно нашей серии тестов bonnie ++.

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

На старой установке все было иначе:

Согласно таблицам данных, текущие жесткие диски и один из старых компьютеров имеют среднюю задержку 4,12 мс.

Диск SATA со скоростью 7200 об / мин не может выполнять задержку 4,12 мс, что позволило бы ему выполнять 1 / 4,12 мс (примерно 240) операций ввода-вывода в секунду, что нереально.

Правильная формула для расчета IOPS для одного диска - 1 / (avg_seek_time + avg_rotational_latency), что для дисков со скоростью 7200 об / мин составляет примерно 75 IOPS. Если у вас есть спецификация для диска, то у вас будет две задержки, поскольку диски могут поглощать записи и чтение с разными задержками, но они находятся в пределах + -10%.

Вы можете ожидать задержку 13-15 мс на ввод-вывод с диска SATA, пока глубина очереди не слишком велика. Все между 10 и 15 мс будет считаться нормальным; 20 мс указывают на проблемы с задержкой из-за глубоких очередей (или очень больших размеров запросов ввода-вывода), а 30 мс или выше указывают на что-то патологическое. Теоретически ваш 95-й процентиль должен быть ниже 15 мс, и система будет вести себя «нормально».

Можете ли вы измерить среднее время обслуживания от хоста и гостя при выполнении рабочей нагрузки? Вы можете получить это значение, посмотрев на вывод iostat в столбце "ждать".

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

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