Мне интересно, как лучше всего создать RAID10 в программном обеспечении на Linux с возможностью последующего расширения за счет добавления дисков или расширения томов под ним.
Я использую EBS на Amazon, я хочу создать RAID10 размером 8x1 ГБ, но у меня есть возможность расширяться позже по мере необходимости, сводя к минимуму любые миграции данных, если это возможно (и, конечно, время простоя).
Какая комбинация, если какой-либо из MDADM / LVM является лучшим, и есть ли какие-либо компромиссы в отношении производительности или стабильности, о которых мне нужно знать?
Amazon не рекомендует RAID1 (который является частью RAID10). См. «Долговечность томов Amazon EBS» в http://aws.amazon.com/ebs/ где они заявляют:
«Поскольку серверы Amazon EBS реплицируются в одной зоне доступности, зеркалирование данных на нескольких томах Amazon EBS в одной зоне доступности не приведет к значительному повышению надежности тома».
Основываясь на тестах сторонних производителей и заявлениях Amazon, я считаю, что RAID0 может повысить производительность. У меня сложилось впечатление, что люди, похоже, получают наибольшую выгоду от использования до 4 томов EBS в RAID0 с уменьшением преимуществ сверх этого. Убедитесь, что вы используете тип инстанса EC2 с высокой пропускной способностью ввода-вывода.
LVM может сам выполнять чередование нескольких томов EBS, эффективно реализуя RAID0. Если вы уже собираетесь использовать LVM для возможности добавления томов для увеличения файловой системы, это может быть проще в управлении, чем LVM поверх mdadm RAID0.
Краткий ответ на ваш вопрос заключается в том, что, насколько мне известно, вы не можете вырастить программный RAID-раздел Linux, поэтому RAID вам не поможет, однако RAID10 является хорошей идеей по ряду других причин, а RAID0 почти всегда плох идея если вам небезразличны ваши данные или время простоя. Я вижу много советов в Интернете об использовании RAID0 с томами EBS, и это абсолютно ужасная идея во всех случаях, кроме самых исключительных.
С таким небольшим набором томов (вы сказали, что 8x1 ГБ, поэтому можно использовать 4 ГБ), я бы просто пропустил всю эту сложность и использовал один том, который вы можете увеличить до 1 ТБ с помощью снимков XFS. Имея всего несколько гигабайт данных, вы сможете делать снимки тома достаточно часто, чтобы восстановление данных стало простой проблемой, и вы не собираетесь максимально использовать ввод / вывод. В качестве альтернативы, если вы можете позволить себе приобрести диск больше, чем ваш текущий $ 0,80 в месяц, просто увеличьте его размер и не беспокойтесь об этой головной боли в течение длительного времени. Если вы действительно имели в виду 8x1TB вместо 8x1GB, продолжайте читать.
Я написал об этом статью несколько недель назад http://blog.9minutesnooze.com/raid-10-ebs-data/ и кратко освещали эту тему на Percona Live еще в мае: http://www.percona.tv/percona-live/running-an-e-commerce-database-in-the-cloud
Я резюмирую здесь.
В мире физического оборудования способы отказа дисков известны и в некоторой степени предсказуемы. С другой стороны, тома EBS выходят из строя нетипично. Вы не видите "сбоев" диска - mdadm никогда не помечает диск автоматически как неисправный. Вы получаете тома с серьезным и необратимым снижением производительности. Иногда тома просто медленные, но иногда они полностью блокируются при 100% использовании и без выполнения операций ввода-вывода в секунду, по сути становясь недоступными. Иногда диск оживает достаточно, чтобы удалить с него данные, а иногда - нет. Именно это произошло во время великого EC2pocalypse в апреле 2011 года.
Если ваш RAID0 в этом сценарии, у вас будет несколько вариантов. Массив будет заблокирован, а данные застрянут в нем. Иногда вы можете сделать снимок томов в массиве и восстановить снимок, но согласованность трудно гарантировать, и у вас будет время простоя - вероятно, несколько часов, так как создание снимков - очень медленная процедура, а массивы RAID, как правило, имеют большой размер.
Однако, если вы используете RAID10 и в конечном итоге получаете один из этих плохо работающих или сильно поврежденных томов, все, что вам нужно сделать, это пометить деградированный том как неисправный, удалить его из массива и заменить. Я делал это много-много раз на наших активных главных серверах баз данных, которые имеют 10-20 томов в наборе RAID10 (не используйте так много. Это избыточно, если вам не нужен массив на 10 ТБ).
Мое доказательство этого восходит к моему опыту работы с EC2Pocalypse (и множеством других незначительных сбоев EBS). В то время как некоторые из самых популярных сайтов в Интернете не работали в течение 4 дней, у моего работодателя было меньше часа простоя в нашей производственной среде, потому что мы смогли восстановить массивы RAID10, удалив неисправный диск (диски). Если бы это был RAID0, это была бы ситуация SOL.
Обратной стороной является синдром самого слабого звена ... Производительность массива привязана к худшему члену. Чем больше томов, тем больше вероятность того, что один из них выйдет из строя, но на самом деле это проблема мониторинга. Можно даже автоматизировать восстановление, если так хочется, хотя я этого не делал. Используя RAID10, вы увеличиваете свои шансы на возникновение проблемы в массиве, но также увеличиваете свои шансы на восстановление. В RAID0 каждый дополнительный диск - это не более чем дополнительная ответственность.
Надеюсь, это кому-то поможет.
Некоторое время назад я сделал этот тест. Я использовал следующие команды: http://wiki.linuxwall.info/doku.php/en:ressources:articles:benchmark_ebs
Из того, что я видел, мало преимуществ в том, чтобы разделить хранилище на такое количество томов EBS, а затем объединить их с помощью mdadm и lvm. Однако есть явное преимущество в использовании RAID 1 и LVM для предотвращения потери одного тома, сохраняя при этом возможность добавления еще одной пары RAID 1 позже.
Но, чтобы ответить на ваш вопрос:
Вы не можете увеличить объем RAID. Если вы создаете RAID 10 (4xEBS) и используете с ним LVM, вы можете добавить еще один RAID10 и добавить его в свой том LVM. Но вы не увеличите начальный RAID 10.
Вы можете создать RAID 10, используя следующие команды:
# mdadm --create /dev/md1 --verbose --level=raid1 --raid-devices=2 /dev/sdh1 /dev/sdh2
mdadm: size set to 104857536K
mdadm: array /dev/md1 started.
# mdadm --create /dev/md2 --verbose --level=raid1 --raid-devices=2 /dev/sdh3 /dev/sdh4
mdadm: size set to 104857536K
mdadm: array /dev/md2 started.
# mdadm --create /dev/md3 --verbose --chunk=32 --level=raid0 --raid-devices=2 /dev/md1 /dev/md2
mdadm: array /dev/md3 started.
И вы можете создать том LVM поверх этого RAID10 с помощью следующих команд:
# pvcreate /dev/md3
Physical volume "/dev/md3" successfully created
# vgcreate RAID10 /dev/md3
Volume group "RAID10" successfully created
# lvcreate -L 190G -n store RAID10
Logical volume "store" created
Это не относится к EBS, но в объявлении о выпуске mdadm 3.3 есть хорошие новости:
Это крупный новый выпуск, поэтому не удивляйтесь, если возникнут некоторые проблемы ...
Некоторые основные моменты:
...
- Массивы RAID10 можно изменить, чтобы изменить количество устройств, измените размер блока или измените макет между «рядом» и «смещением». Это всегда будет изменять data_offset и завершится ошибкой, если нет места для перемещения data_offset.
...
В соответствии с этот ответ на U&L вам также понадобится как минимум Linux 3.5.