Есть ли у кого-нибудь практический опыт, которым можно поделиться в отношении производительности программных рейдов в XenServer 5.5?
Недавно я перешел с VMware Server 1.x на Ubuntu на XenServer 5.5 в надежде на повышение производительности за счет использования технологии паравиртуализации. К сожалению, я наблюдаю очень низкую производительность моего программного рейда типа MD.
В то время как хост XenServer видит числа выше 100 МБ / с, паравиртуализированные гости не могут получить намного больше 20 МБ / с.
Этого следует ожидать, или мне следует искать проблему в моей конфигурации?
редактировать>
Я понимаю, что программный рейд не идеален для хоста виртуализации, но для домашней лаборатории я не могу оправдать настоящий аппаратный рейд-контроллер, хотя мне все еще нужен некоторый уровень избыточности хранилища.
Хост не показывает высокую загрузку ЦП, загрузку системы или даже чрезмерные циклы ожидания ввода-вывода. Это в сочетании с тем фактом, что VMware Server 1.x обеспечил как минимум вдвое большую производительность ввода-вывода, говорит о том, что должна быть некоторая проблема с паравиртуализацией. Возможно, из-за отсутствия определенных функций в моем оборудовании.
Поскольку полная аппаратная виртуализация XenServer не так уж хороша, я думаю, я вернусь к VMware Server на Ubuntu, что даст мне возможность опробовать новую версию 2.x.
Рейд программного обеспечения Linux чертовски хорош, он превосходит рейд-контроллеры низкого уровня и обычно соответствует производительности средних.
Недавно я провел несколько тестов производительности для пары технологий виртуализации. Потеря производительности дискового ввода-вывода в виртуальных машинах Xen (xenserver 5.5 в этом отношении) составила около 70%. Я использовал iozone, который тестирует 10+ шаблонов чтения / записи. У машины было 2x 160G sata-II диска в программном raid1. Обратите внимание, что снижение скорости на 70% может варьироваться в зависимости от типа дисковых операций.
Одна вещь, которую вы можете сделать в Xenserver, - это установить более высокий или более низкий приоритет для определенных ресурсов хранения (щелкните вокруг, должно быть там), которые помогают виртуальным машинам с небольшой интенсивностью ввода-вывода. Но это почти все - вам нужны виртуальные машины, вы должны заплатить цену :)
Если вы хотите запускать Linux vms на хостах Linux, использование контейнеров повысит производительность. Например, потеря производительности дискового ввода-вывода OpenVZ составляет около 7%.
Я собираюсь не согласиться с tptech по этому поводу.
Программный RAID не так уж и плох. Особенно с его очень зрелой разработкой в операционных системах Linux и Windows Server.
Фактически, программный RAID-массив может предложить лучшую производительность, чем дешевый RAID-контроллер, поскольку дешевый RAID-контроллер в любом случае будет использовать ваш процессор для вычислений четности.
В опровержение tptech:
Конечно. Но это относится к ЛЮБОМУ RAID, а не только к программному RAID. Это также неверно для RAID10, поскольку вы получаете преимущество чередования со 100% избыточностью.
Это правда, и это будет проблемой для хоста с очень тяжелыми виртуальными машинами ввода-вывода. Но если ваши виртуальные машины очень загружены вводом-выводом, то виртуальная машина, вероятно, в любом случае не подходящее место для них, или у них должен быть доступ к SAN (который все вместе рассматривает программный RAID).
Дело в том, что только хост получает пропускную способность 100 МБ / с, страдают только виртуальные машины, и я не понимаю, как наличие программного RAID может привести к падению производительности до 1/5 от его хоста только потому, что запрос исходит от виртуальной машины, а не от хоста.
Я бы предположил, что это, вероятно, что-то в конфигурации виртуальной машины или, может быть, даже на гостевой машине. Также стоит упомянуть, что если ваш хост-процессор или гостевая ОС не поддерживает паравиртуализацию, это приведет к снижению производительности. Не все гости поддерживают его, и, как ни странно, 64-битные гостевые ядра не поддерживают его.
У меня нет опыта работы с Xen, но я подозреваю, что проблемы с производительностью, которые вы наблюдаете, не связаны напрямую с конфигурацией RAID. У вас есть том без RAID, на который вы можете скопировать виртуальную машину, чтобы повторно запустить тесты производительности и сравнить результаты?
Если вы специально тестируете производительность записи, то в VMWare Server есть опция, которая может объяснить разницу между ним и Xen, то есть вы можете указать серверу VMWare, что он должен разрешать доступ к кэш-диску ОС хоста по своему усмотрению. настаивая на том, что все записи, которые гостевая ОС считает физическими, выполняются синхронно. Включив этот параметр, вы обычно увидите улучшенную производительность записи в виртуальной машине, иногда значительно улучшенную, но существует больший риск повреждения файловых систем виртуальной машины в случае отключения питания или какой-либо ошибки, из-за которой гипервизор бесцеремонно останавливает виртуальную машину. Кто-то со специальными знаниями о Xen может рассказать вам, как он по умолчанию ведет себя в этой области (и можно ли изменить его поведение).
Другая проблема, которая может (я говорю «может» здесь, поскольку на самом деле я только предполагаю), объясняет разницу в том, что даже если записи в guestls доставляются в стек ввода-вывода хоста синхронно (так что они отправляются из кеша на диск до вызова ввода-вывода возвращается в ОС виртуальной машины), способ доступа сервера VMWare к файлам виртуального диска позволяет хранить их содержимое в кэше и буферах гостевой ОС, что снижает потребность в физических операциях ввода-вывода, если на хост-машине имеется много оперативной памяти, доступной для кеша + буферы. . Это может быть не так с устройством Xen, хотя вам нужно будет проверить это с кем-то, кто знает о специфике Xen больше, чем я.
Дополнительная идея:
Еще одна вещь, которую стоит проверить: как гостевое ядро получает доступ к виртуальному устройству? Если он работает в режиме PIO, а не обращается к устройству с помощью DMA или UDMA, тогда он будет пережевывать намного больше циклов ЦП, чем нужно для каждой операции записи, что будет иметь заметный эффект, даже если операции ввода-вывода переведены в DMA на основе к тому времени, когда они достигнут физических устройств.
Одним словом программный RAID - не используйте его. На самом деле это было три слова. Но вы меня поняли.
Хороший аппаратный контроллер RAID может многократно повысить производительность за счет разгрузки вычислений RAID с ЦП и буферизации дискового ввода-вывода - чем больше дисков вы добавите к своему RAID, тем (обычно) вы получите лучшую производительность!