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

Размер полосы RAID 10 для XenServer

Ниже представлена ​​наша текущая конфигурация сервера. Через несколько недель я буду моделировать аварийное восстановление, установив 5 новых дисков (1 горячий резерв) и восстановив все виртуальные машины из резервных копий.

Получу ли я что-нибудь, изменив размер полосы RAID на значение, отличное от 64 КБ? Контроллер RAID имеет параметры 8 КБ, 16 КБ, 32 КБ, 64 КБ, 128 КБ, 256 КБ, 512 КБ, 1 МБ.

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

Hardware:

Dell PowerEdge 2900 III
Dell PERC 6/i
Intel Xeon 2.5GHz (x2)
32GB RAM
Seagate ST32000645SS ES.2 2TB Near-Line SAS 7.2K (x4)

Software:

Citrix XenServer 6.2 SP1
VM - Windows SBS 2008 x64 - Exchange & multiple SQL express instances
VM - Windows Server 2003 R2 x86 - single SQL express instance
VM - CentOS 6.6 x64 (x2) - cPanel & video transcoding and streaming
VM - CentOS 6.3 x86 - Trixbox (VoIP)
VM - PHD Virtual Backup 6.5.3 (running Ubuntu 12.04.1 LTS)

Configuration:

RAID 10, 64k Stripe Size

Я попытаюсь подытожить свои комментарии в виде ответа. Основная линия:

Не стоит возиться с размером полоски, если у вас нет веских доказательств того, что это поможет вашей рабочей нагрузке.

Рассуждение:

  • Для чередования нужно выбрать некоторые размер полосы и 64 КБ - значение по умолчанию, выбранное производителем. Поскольку производитель (в данном случае LSI, переименованный в Dell) имеет огромный опыт работы с огромным количеством конфигураций с различными уровнями RAID и рабочими нагрузками, вы можете просто поверить, что они сделали мудрый выбор.
  • 64 КБ, вероятно, примерно соответствует среднему размеру ваших запросов в виртуализированной среде (по крайней мере, намного больше, чем 256 КБ или 1 МБ) и, таким образом, будет хорошим компромиссом между задержкой и оптимизацией времени поиска.1.
  • точные прогнозы на основе модели о производительности приложений с различными размерами полос практически невозможны из-за сильно изменчивого характера рабочих нагрузок и сложности моделей с учетом различных алгоритмов упреждающего чтения и кэширования на разных уровнях

Если вы из тех, кто получает это свидетельство, вы можете сделать это, запустив типичную нагрузку и некоторые из сценариев нетипичной нагрузки с различными конфигурациями размера полосы, собрав данные (производительность подсистемы ввода-вывода на уровне сервера Xen, производительность внутреннего сервера и время ответа на уровне приложения) и проведите статистическую оценку. Однако это займет чрезвычайно много времени и вряд ли приведет к каким-либо революционным результатам, кроме "Я мог бы просто оставить значения по умолчанию в конце", поэтому я считаю это пустой тратой ресурсов.


1 Если вы предположите, что скорость передачи данных составляет 100 МБ / с для одного диска, довольно легко увидеть, что для чтения килобайта требуется около 0,01 мс, таким образом, 64 КБ будут иметь задержку чтения 0,64 мс. Учитывая, что среднее «время обслуживания» случайного запроса ввода-вывода обычно находится в диапазоне 5-10 мс, задержка чтения составляет лишь небольшую часть от общего времени ожидания. С другой стороны, чтение 512 Кбайт займет около 5 мсек - что будет иметь значение для типа рабочей нагрузки «произвольное малое чтение», значительно сократив количество операций ввода-вывода в секунду, которое ваш массив сможет выполнить в этом конкретном случае в 1,5 раза - 2. Сценарий с параллельными случайными большими операциями чтения принесет пользу, поскольку чтение больших блоков вызовет меньше трудоемких поисков, но вы вряд ли увидите этот сценарий в виртуализированной среде.

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

Ваша ожидаемая рабочая нагрузка (виртуальные машины) связана с выдачей псевдослучайных запросов малого и среднего размера (<256 КБ). Другими словами, вам нужна чередующаяся конфигурация RAID, которая минимизирует время отклика и максимизирует псевдослучайные IOP.

Хотя 64 КБ является безопасным значением по умолчанию, я считаю, что это немного мало для вашей ожидаемой рабочей нагрузки. Например, рассмотрим тот случай, когда виртуальная машина хочет читать / записывать блок данных размером 128 КБ. В зависимости от того, как ваш контроллер обрабатывает запросы на чтение, блок размером 128 КБ будет задействовать 2 или 4 диска, в то время как запросы на запись такого размера всегда будут задействовать все ваши 4 диска. В то же время из-за небольшого размера блока чтения / записи (128 КБ) производительность ввода-вывода будет определяться временем поиска, а не последовательной передачей, поэтому ваша реальная скорость передачи будет лишь немного выше, чем у одного диска. может обеспечить. Это означает, что у других виртуальных машин очень мало шансов использовать диски, но в то же время ваш массив обеспечивает однодисковую производительность для одной виртуальной машины, которая его активно использует.

Для использования виртуальных машин я настрою массив с размером блока 256 КБ или 512 КБ: это гарантирует, что небольшие (<256 КБ) запросы чтения будут обслуживаться одним диском (2 диска для записи), а остальные будут доступны для других виртуальных машин. В то же время большая последовательная передача (> 256/512 КБ) будет очень быстрой, поскольку они задействуют несколько дисков.