Если у вас есть два физических диска:
RAID0: быстрый, но без резервирования. Любая ошибка диска уничтожит весь массив. Некоторые люди помещают временное хранилище на RAID0 (то есть, tempdb под MSSQL), но я все равно считаю это опасным, так как пока вы не потеряете значимые данные, если массив упадет, у вас будет отключение сервера до тех пор, пока ситуация не будет восстановлена.
RAID1: пойти на это, если у вас есть два диска. Выигрыш в производительности при записи отсутствует, хотя при хорошем контроллере производительность чтения может увеличиться. Ключевая особенность RAID1 - выживание одного из приводов.
Если у вас есть три физических диска:
Вы можете выбрать RAID5, нестандартный RAID10 с тремя дисками (или RAID1E, как на это указывают контроллеры IBM), если он поддерживается. Конечно, вы могли бы использовать RAID1 и оставить дополнительный диск в качестве запасного на случай отказа одного из других, но вы все равно должны хранить запасные части в критически важной среде, так что это само собой разумеется.
RAID5 предлагает больше места, чем RAID10 (два диска вместо полутора), но имеет потенциальную проблему с производительностью записи, поскольку для каждого записанного блока контроллер должен прочитать блок четности, обновить его и записать обратно. Эта проблема производительности записи может быть удвоена для записей базы данных, так как для каждого обновления существует как минимум две записи: одна в журнал транзакций и одна в фактические области данных. Поскольку в наши дни пространство дешевое, я бы порекомендовал 3-дисковый RAID10, если он поддерживается, для лучшей производительности записи. Программный RAID Linux предлагает это, как и многие контроллеры IBM (они называют его RAID1E). Вы можете найти его и под другими именами, поскольку оно не считается стандартным, поэтому не имеет стандартного имени.
И R5, и R10-over-three обеспечивают одинаковую избыточность (любой диск может выйти из строя за раз, и массив выживет) и аналогичные показатели производительности чтения (аналогично массиву RAID0 с двумя дисками).
Если у вас есть четыре физических диска:
Если создается только один массив, то есть два варианта (игнорируя варианты с «горячим резервированием»): RAID6 и «традиционный» RAID10 (RAID0 из RAID1).
Оба дают одинаковое пространство (два диска из четырех). RAID6 обеспечивает лучшую избыточность, так как любые два диска могут выходить из строя в тот момент, когда RAID10 может выжить только в четырех из шести возможных ситуаций с двумя дисками. Оба дают производительность чтения simialr, но RAID6 имеет проблему с производительностью записи, аналогичную производительности RAID5 (то же самое на хорошем контроллере, хотя он может быть медленнее, чем RAID5 на плохом контроллере или с программным RAID в зависимости от ОС и возможностей управления вводом / выводом. RAID10 является обычно предпочтительнее для баз данных из соображений производительности - если вам нужна дополнительная избыточность, вы можете использовать шесть дисков и иметь RAID0 или два 3-дисковых RAID1.
Если у вас есть четыре или более дисков, все становится более интересным, поскольку у вас может быть отдельная пара массивов RAID1. Это может дать существенные преимущества в производительности с вращающимися дисками, поскольку хранилища данных хранятся в одном массиве, а журналы транзакций - в другом - в некоторых случаях это может значительно сократить перемещения головок, а время поиска из-за «случайного» доступа является реальным фактором снижения производительности. Для хранилища данных, предполагая, что это означает, что он увидит очень мало записей, условно говоря, разделение журналов транзакций из файлов данных может иметь более ограниченную выгоду, но вы все равно можете рассмотреть несколько массивов и вместо этого разделить свои данные на них для потенциально лучшей производительности чтения ,
Если у вас более четырех дисков:
Ваши параметры становятся здесь широко открытыми, и это действительно зависит от того, какие у вас есть данные и каковы ожидаемые обновления / прочитанные загрузки / шаблоны. Например, одна из наших служб работает на дисках 12 ~ 70 Гб:
- 4x как RAID10 для системных областей (ОС, SQL Server (в нашем случае MSSQL), swap, tempdb).
- 4x как RAID10 для файлов данных
- 4x как RAID10 для журналов транзакций
Tempdb хранится в системном массиве. Мы можем переместить его в два других массива и просто запустить системный массив как 2 диска в RAID1, так как дополнительная скорость не так уж необходима для блоков системы (так как это действительно важно только при загрузке или при обмене, и мы гарантируем, что есть достаточно оперативной памяти, чтобы ее никогда не приходилось менять), но с учетом того, как мы платим хостинг-провайдеру за этот набор машин, нам не стоило бы меньше отбрасывать два диска. Резервные копии также отправляются в системный массив перед копированием в автономные, автономные и автономные резервные хранилища.
Конечно, это серьезно излишне для некоторых баз данных (было бы бессмысленно запускать небольшой сервер блогов таким образом!), Но наше основное приложение очень хорошо работает с таким расположением.
Если у вас шесть дисков, вы можете рассмотреть три массива RAID1 или два массива RAID10 с тремя дисками.
Обычно
К сожалению, не существует простой простой «лучшей практики», так как она очень сильно зависит от размера вашей системы и моделей использования. Единственные общие правила, которые я могу придумать или это:
- избегайте RAID5 и 6, если только вы не знаете, что проблема производительности записи не окажет на вас существенного влияния
- с четырьмя или более дисками на основе вращающегося диска рассмотрите возможность разделения вещей на несколько массивов, чтобы уменьшить перемещения головы (полное преимущество нескольких массивов не будет применимо к хорошим твердотельным накопителям, поскольку нет необходимости учитывать физические движения головы, хотя вы можете увидеть некоторые различия в зависимости от стратегия комбинирования записи контроллера SSD и т. д.)
- тестируйте, тестируйте и тестируйте снова: всегда полезно попытаться найти время, чтобы убедиться, что выбранное вами расположение действительно оптимально
Аппаратный или программный RAID?
Раньше считалось, что производительность программного RAID была ниже производительности аппаратного RAID для RAID 5 из-за вычислений четности и для всех устройств из-за медленных интерфейсов между дисками и процессором. В современных процессорах проблема вычисления четности на самом деле не является проблемой, но если у вас очень быстрые диски, аппаратный RAID все равно может победить, если общая скорость дисков может прийти куда угодноблизко (в пределах порядка, по предположению) к тому, как быстро машина может общаться с контроллером диска. Если у вас есть массив RAID1 с четырьмя дисками (т.е. четыре копии одних и тех же данных для большого количества избыточности) с программным RAID-массивом, то каждая операция записи приведет к тому, что ОС отправит четыре партии данных на контроллер ввода-вывода, возможно, последовательно - с помощью аппаратного обеспечения. Контроллер ОС просто отправляет один запрос на запись, а контроллер отправляет его на четыре диска, возможно, параллельно.
Хороший аппаратный RAID может предложить и другие преимущества: некоторые высокопроизводительные контроллеры имеют кэш записи с резервным питанием от батареи, так что ожидающие записи не теряются при отключении питания, даже если, например, происходит сбой вашего ИБП.
Программный RAID, очевидно, дешевле и более переносим, поэтому вы не привязаны к конкретному контроллеру, если вам приходится перемещать массивы из-за сбоя контроллера / машины.
Дешевый аппаратный RAID обычно сочетает в себе недостатки программного и аппаратного RAID с небольшим (или ни с одним) преимуществом любого из них, поэтому его лучше избегать.
Я склонен использовать программный RAID на наших серверах разработки, тестирования и UAT, а также хороший аппаратный RAID для серверов, работающих в режиме реального времени с общедоступными услугами.