Как сделать ребилд

Обновлено: 07.07.2024

Всем добрый день! Раньше не сталкивался с RAID-массивами, поэтому появился вопрос касаемо логики работы данной системы.
У меня видеостудия, наконец-то дошли руки до безопасности хранения данных с файлами и проектами.

Есть чистая лицензия Win7 установленная на SSD от Intel + 2 диска WD по 1Тб объединенные в RAID 1 через биос (мат. плата gigabyte ga z97p d3)

Для теста загрузили туда файл. Выключили компьютер, вынули 1 диск. Загрузили систему (статус массива в биос изменился с Normal на Degraided) увидели диск с файлом. Опять выключили компьютер и повторили тоже самое но с другим диском. Файл на месте. Все ОК, подумали мы.
Но теперь когда оба диска подключены, статус массива стоит на Rebuild.
Оставляли компьютер на ночь, в надежде, что он сам восстановится - безуспешно.

Теперь вопросы:
1) Как сделать, чтобы статус изменился на Normal и диски работы правильно?
2) При замене диска автоматически происходит синхронизация (Rebuild) или её нужно где-то включать? На форумах искал, ничего подобного не нашел.
3) Есть ли утилиты, которые позволяют из под винды видеть работоспособность массива?
4) Кроме этого массива будет ещё 2 (Итого: RAID1+RAID1+RAID1) не будет ли с этим проблем?

mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

Установка mdadm

Утилита mdadm может быть установлена одной командой.

Если используем CentOS / Red Hat:

yum install mdadm

Если используем Ubuntu / Debian:

apt-get install mdadm

Сборка RAID

Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.

Подготовка носителей

Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):

mdadm --zero-superblock --force /dev/sd

* в данном примере мы зануляем суперблоки для дисков sdb и sdc.

Если мы получили ответ:

mdadm: Unrecognised md component device - /dev/sdb
mdadm: Unrecognised md component device - /dev/sdc

. то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.

Далее нужно удалить старые метаданные и подпись на дисках:

wipefs --all --force /dev/sd

Создание рейда

Для сборки избыточного массива применяем следующую команду:

mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd

  • /dev/md0 — устройство RAID, которое появится после сборки;
  • -l 1 — уровень RAID;
  • -n 2 — количество дисков, из которых собирается массив;
  • /dev/sd — сборка выполняется из дисков sdb и sdc.

Мы должны увидеть что-то на подобие:

mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 1046528K

Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:

Continue creating array? y

Мы увидим что-то на подобие:

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

. и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:

.
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
.

* в примере мы видим собранный raid1 из дисков sdb и sdc.

Создание файла mdadm.conf

В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf

mdadm --detail --scan --verbose | awk '/ARRAY/ ' >> /etc/mdadm/mdadm.conf

DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d

* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.

Создание файловой системы и монтирование массива

Создание файловой системы для массива выполняется также, как для раздела:

* данной командой мы создаем на md0 файловую систему ext4.

Примонтировать раздел можно командой:

mount /dev/md0 /mnt

* в данном случае мы примонтировали наш массив в каталог /mnt.

Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab следующее:

/dev/md0 /mnt ext4 defaults 1 2

Для проверки правильности fstab, вводим:

Мы должны увидеть примонтированный раздел md, например:

/dev/md0 990M 2,6M 921M 1% /mnt

Информация о RAID

Посмотреть состояние всех RAID можно командой:

В ответ мы получим что-то на подобие:

md0 : active raid1 sdc[1] sdb[0]
1046528 blocks super 1.2 [2/2] [UU]

* где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.

Подробную информацию о конкретном массиве можно посмотреть командой:

* где /dev/md0 — имя RAID устройства.

Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2019
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Mar 6 09:41:26 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : resync

Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

  • Version — версия метаданных.
  • Creation Time — дата в время создания массива.
  • Raid Level — уровень RAID.
  • Array Size — объем дискового пространства для RAID.
  • Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
  • Raid Devices — количество используемых устройств для RAID.
  • Total Devices — количество добавленных в RAID устройств.
  • Update Time — дата и время последнего изменения массива.
  • State — текущее состояние. clean — все в порядке.
  • Active Devices — количество работающих в массиве устройств.
  • Working Devices — количество добавленных в массив устройств в рабочем состоянии.
  • Failed Devices — количество сбойных устройств.
  • Spare Devices — количество запасных устройств.
  • Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
  • Name — имя компьютера.
  • UUID — идентификатор для массива.
  • Events — количество событий обновления.
  • Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.

Подробнее про каждый параметр можно прочитать в мануале для mdadm:

Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:

Проверка целостности

Для проверки целостности вводим:

echo 'check' > /sys/block/md0/md/sync_action

Результат проверки смотрим командой:

* если команда возвращает 0, то с массивом все в порядке.

echo 'idle' > /sys/block/md0/md/sync_action

Восстановление RAID

Рассмотрим два варианта восстановлении массива.

Замена диска

В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее:

Personalities : [raid1]
md0 : active raid1 sdb[0]
1046528 blocks super 1.2 [2/1] [U_]

* о наличии проблемы нам говорит нижнее подчеркивание вместо U — [U_] вместо [UU].

.
Update Time : Thu Mar 7 20:20:40 2019
State : clean, degraded
.

* статус degraded говорит о проблемах с RAID.

Для восстановления, сначала удалим сбойный диск, например:

mdadm /dev/md0 --remove /dev/sdc

Теперь добавим новый:

mdadm /dev/md0 --add /dev/sde

Смотрим состояние массива:

.
Update Time : Thu Mar 7 20:57:13 2019
State : clean, degraded, recovering
.
Rebuild Status : 40% complete
.

* recovering говорит, что RAID восстанавливается; Rebuild Status — текущее состояние восстановления массива (в данном примере он восстановлен на 40%).

Если синхронизация выполняется слишком медленно, можно увеличить ее скорость. Для изменения скорости синхронизации вводим:

echo '10000' > /proc/sys/dev/raid/speed_limit_min

* по умолчанию скорость speed_limit_min = 1000 Кб, speed_limit_max — 200000 Кб. Для изменения скорости, можно поменять только минимальную.

Пересборка массива

Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:

mdadm --assemble --scan

* данная команда сама найдет необходимую конфигурацию и восстановит RAID.

Также, мы можем указать, из каких дисков пересобрать массив:

mdadm --assemble /dev/md0 /dev/sdb /dev/sdc

Запасной диск (Hot Spare)

Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.

Диском Hot Spare станет тот, который просто будет добавлен к массиву:

mdadm /dev/md0 --add /dev/sdd

Информация о массиве изменится, например:

.
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 active sync /dev/sdc

3 8 32 - spare /dev/sdd

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

mdadm /dev/md0 --fail /dev/sdb

И смотрим состояние:

.
Rebuild Status : 37% complete
.
Number Major Minor RaidDevice State
3 8 32 0 spare rebuilding /dev/sdd
2 8 48 1 active sync /dev/sdc

0 8 16 - faulty /dev/sdb
.

* как видим, начинается ребилд. На замену вышедшему из строя sdb встал hot-spare sdd.

Добавить диск к массиву

В данном примере рассмотрим вариант добавления активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.

Добавляем диск к массиву:

mdadm /dev/md0 --add /dev/sde

4 8 16 - spare /dev/sde

Теперь расширяем RAID:

mdadm -G /dev/md0 --raid-devices=3

* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.

Удаление массива

При удалении массива внимателнее смотрите на имена массива и дисков и подставляйте свои значения.

Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:

* где /mnt — каталог монтирования нашего RAID.

* где /dev/md0 — массив, который мы хотим разобрать.
* если мы получим ошибку mdadm: fail to stop array /dev/md0: Device or resource busy, с помощью команды lsof -f -- /dev/md0 смотрим процессы, которые используют раздел и останавливаем их.

Затем очищаем суперблоки на всех дисках, из которых он был собран:

mdadm --zero-superblock /dev/sdb

mdadm --zero-superblock /dev/sdc

mdadm --zero-superblock /dev/sdd

* где диски /dev/sdb, /dev/sdc, /dev/sdd были частью массива md0.

Добрый день! Нужна консультация специалистов.
Имеем сервер с мат. платой Supermicro X8ST3-F/X8STE, где встроенный raid контроллер. В raid массиве 10 уровня 4 жестких диска (750Gb) Seagate ST3750528AS, один из них вышел из строя. Я заменил его на исправный ST3750525AS (750Gb). В биосе raid контроллера, в меню "add/delete hotspare" выбрал новый жесткий диск и нажал insert (select drive), затем Enter (completing select), затем в меню "manage arrays" выбрал массив и нажал "rebuild". Восстановление массива прошло успешно, перезагружаю сервер, ОС загружается, все нормально, все 4 HDD определяются но статус raid - degraded. Нужны ли какие-то еще телодвижения после rebuilda?

Благодарю за внимание.

Нет, не пробовал. В двух словах не расскажете что это такое? И могут быть какие-то последствия после этого?

Я наверное не все рассказал.
Первым шагом была замена неисправного жесткого диска на другой такой же. После этого в биосе raid контроллера попытался сделать rebuild массива, на что он мне сказал: Rebuild cannot be done on this array. please chek arrays type/state and hot spares size. rebuild массива не запустился вобщем, я перебрался в меню add/delete hotspare.

В меню add/delete hotspare, я выбрал жесткий диск который вставил замен неисправного, нажал insert и enter, на что он мне выдал: the spare created is smaller in size and it may not protect any of the existing redundant arrays. Do you want to create a spare? (y/n?). Я нажал YES, и потом уже запустил rebuild массива. Rebuild массива прошел удачно (Rebuild completing или что-то в этом роде. ).

Я расписал подробно, дабы выяснить, возможно ошибка была в каких то моих действиях.

Попытка самостоятельно восстановить данные в массиве RAID 10 может привести к полной потере информации. Обычно это происходит из-за ошибочных действий системных администраторов. О каких ошибках идет речь? Об этом ниже.

Как теряется информация с массивов RAID-10

Надежность массивов RAID-10 определяется избыточностью, созданной последовательностью зеркальных дисков. Однако созданная зеркалами избыточность иногда играет злые шутки. Смотрите сами: из-за особенностей массива при выходе из строя даже половины дисков RAID-10 данные могут сохраниться. Зато при отказе всего двух из них вы можете потерять всю информацию с массива. Это происходит, если выпадают диски, составляющие зеркало.

Избыточность создает еще одну ловушку для владельцев серверов с массивом RAID-10. Вы можете не заметить выхода из строя одного диска из зеркала. Например, это происходит, если сисадмин неправильно настроил или не настроил мониторинг, или из-за некорректной работы RAID-контроллера. Проблема в том, что вы можете долго эксплуатировать сервер, не замечая проблему. При выпадении второго диска из зеркала вся информация с массива становится недоступной.

Ура, я знаю, как сломать RAID-10

Существует еще много ситуаций, в которых теряются данные с RAID-10, среди них:

  • Программный сбой RAID-контроллера.
  • Поломка или некорректная замена контроллера.
  • Некорректная настройка или отсутствие мониторинга.
  • Аппаратная неисправность критичного количества дисков.
  • Рассинхронизация массива с последующим выходом из строя актуального участника.
  • Повреждения файловой системы, ошибочное удаление информации, форматирование дисков.
  • Другие ошибки сисадмина. Например, удаление или изменение конфигурации (некорректное расширение массива или замена участников) или некорректные попытки восстановить данные.

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

Устройство RAID10 массива

Что делать, чтобы полностью потерять данные с массива RAID-10

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

Рассмотрим основные ошибки:

  • Попытка восстановления данных без диагностики массива. Когда вы приходите к врачу с болью в животе, он не хватается сразу за скальпель, а расспрашивает и осматривает вас, делает анализы, чтобы понять, как вас можно лечить, а как нельзя. Такая же ситуация с восстановлением RAID-10: вы должны поставить диагноз, чтобы знать, какие процедуры будут эффективными, а какие уничтожат массив.
  • Проверка дисков и исправление ошибок до анализа содержимого дисков. Эти действия могут внести изменения в информацию на дисках, что часто приводит к полной утрате данных.
  • Некорректные действия с аппаратной частью: перестановка дисков, извлечение дисков до отключения машины от питания, подключение винчестера к другому оборудованию, вскрытие дисков. Такая практика часто оборачивается изменениями в конфигурации RAID-массива или физическими повреждениями носителей, после которых восстановить информацию невозможно.
  • Замена контроллера или инициализация при несинхронизированном массиве и без резервной копии. В этом случае контроллер может не определить правильную конфигурацию, что приведет к потере данных.
  • Попытка восстановления данных контроллером. Из-за некорректной работы микропрограммы можно разрушить массив при ребилде. Контроллер вместо записи актуальных данных на чистый диск обнуляет носитель со свежей информацией.
  • Ошибочная операция с массивом. Если сисадмин вместо ребилда запускает инициализацию или синхронизацию, это приводит к повреждению или полной потере информации.
  • Попытка восстановления с помощью функцииmakeonline при выходе из строя диска. Эта операция может привести к полной утрате данных сама по себе, так как процесс некорректного ребилда или инициализации может запуститься в фоновом режиме. А если после такой команды вы сами запустите инициализацию или ребилд, то наверняка получите фатальный для массива результат.

Вы можете потерять массив даже в результате безобидной операции. Например, информация может стать недоступной после простой перезагрузки системы. Поэтому при внештатных ситуациях никогда не выполняйте необдуманных действий с RAID-10.

Как видите, полностью добить массив RAID-10 несложно. Достаточно допустить ошибку при попытке восстановить информацию. Что же делать, чтобы не потерять важные данные?

Что делать, чтобы восстановить данные с массива RAID-10

Конспект вебинара HonorCup E=DC2 для сдачи HCNA Storage.

Что/зачем

RAID (Redundant Array of Independent Disks) – объединение дисков (не только жестких, можно и SSD) в один массив.

Основные решаемые задачи:

  • отказоустойчивость (не RAID 0) – дублирование и/или восстановление данных посредством контроля четности, горячая замена дисков. НО везде подчеркивается, что RAID не является альтернативой или заменой решений по backup, он защищает только от довольно узкого кейса отказа диска/ов.
  • повышение производительности – параллельный доступ к нескольким дискам


Контроллер

Бывают программные и аппаратные RAID контроллеры:

    аппаратный: отдельная плата с собственными CPU/RAM, в случае PCI-e SSD контроллер встроен в плату PCI-e SSD
      + производительность, – стоимость
      – производительность, + стоимость

    Обычно на контроллере реализуется только один тип интерфейса под ЖД: SAS/SCSI/SATA. В общем случае на один контроллер цепляется до 8 дисков, но на практике зачастую используется экспандер – может позволить до х3 подключить.

    Пример софтового контроллера рядом с нами 🙂 – Windows имеет встроенный программный RAID – может объединить диски в RAID 0, RAID 1 или RAID 5.


    Hot Spare диски

    В крупный RAID всегда должен быть включен HotSpare (горячий резерв) диск, на который пойдет автоматический ребилд при падении какого-то из дисков. Hot Spare бывают двух видов: глобальный (резерв под любой массив в системе хранения) и выделенный (выделенный диск под конкретный RAID в системе хранения).

    К примеру, конфиг системы хранения: 20 дисков, разбитые на 5 рейдов и 1 диск как hot spare на все.


    Политика по количеству hot spare исходя из количества дисков в домене – чем больше дисков, тем больше должно быть в резерве (логично, не правда ли :)).


    Статусы работы RAID


    1) Создание массива

    При создании массива диски записываются нулевыми данными.

    Все зависит от массива/контроллера, но в общем случае:

    • В массиве не обязательно должно быть четное количество дисков (попарно)
    • В массиве не обязательно диски одинакового размера. Чаще всего в таком случае мы просто теряем полезную емкость больших дисков (выравнивание объема по меньшему) и использовать его невозможно под другие задачи. Есть режим JBOD (Just buch of disks), в котором можно использовать всю емкость, но это не RAID.
    • В массиве не обязательно диски должны иметь одну скорость, но производительность массива определяется по минимальной скорости.
    • Обычно используется один тип дисков.
    • Обычно в RAID можно на лету добавить еще диски.

    2) Корректная работа массива – все ок

    Следующие три статуса работы при отказе одного или несколько из дисков в массиве. Отказ определяется контроллером при попытке записи/чтения с диска.

    3) Реконструкция массива (RAID rebuilding/reconstruction)

    Реконструкция – в наличии hot spare диск/и, утерянные данные восстанавливаются на hot spare.

    Для RAID 10/1 операция не требует расчетов на основе четности, на остальных рейдах требует. Для восстановления данные считываются с “выживших” дисков, происходит расчет XOR и восстановление данных на основе операции. Время восстановления прямо пропорционально количеству потерянных данных – чем больше данных потерялось, тем больше времени восстанавливать. В момент восстановления производительность может заметно падать (при двух дисках) т.к. операция копирования идет с меньшим приоритетом, чем запросы от приложений и приостанавливается при запросе данных приложениями -> в результате восстановление RAID на активно-работающем сервере может занять долгое время


    Так же реконструкция происходит, когда добавляется новый диск в RAID. Зависит от контроллера (в основном можно) можно ли добавлять на лету диск в рейд.


    4) Деградация массива

    Деградация – отказ члена/ов массива (в том числе диска четности) при отсутствии hot spare для запуска реконструкции. Процедура восстановления не может запустится из-за отсутствия носителя.

    5) Авария массива

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

    За что еще отвечают контроллеры

    Сохранение данных кэша при отключении питания

    Кеш RAID/СХД контроллера обычно хранится в ОЗУ, а не ПЗУ (HDD/SSD). Поэтому при пропадании питания данные кэша могут быть потеряны.

    • Традиционным способом защиты данных в кэше контроллера является BBU (Battery Backup Unit) модуль (батарея), обеспечивающий питание ОЗУ контроллера в течение некоторого времени после сбоя при помощи литий-ионного аккумулятора. При запуске сервера после восстановления питания контроллер сбрасывает сохранившееся содержимое кэша на дисковый массив. У BBU есть ряд существенных недостатков, связанных с наличием аккумулятора: ограниченное время защиты после сбоя (обычно не более 72 часов), ограниченный срок службы аккумуляторов (1-2 года), необходимость планирования закупок новых BBU модулей и утилизации вышедших из строя.
    • В современных контроллерах используется другой способ защиты RAID кэша — при помощи модуля с флэш-памятью и питанием через суперконденсаторы (ионисторы). При возникновении сбоя батарея ионисторов питает модуль защиты кэша только на время копирования содержимого ОЗУ на флэш-память модуля.

    Есть и другие варианты сохранения данных:

    • Батареи + служебное пространство 4 дисков (2×2 coffer диска в RAID1) на СХД Huawei
    • NVDIMM (non-volatile-DIMM: DIMM + батарейка + флешка) на BigData СХД OceanStor 9000

    Анализ состояния дисков (SMART analysis, Bad sector detection/repair)

    Данные SMART постоянно анализируются RAID/СХД-контроллерами. Контроллер обнаруживает bad sector’а при операциях read/write и восстанавливает информацию, которая была на этом секторе используя технологию восстановления, применяемую в настроенном RAID.



    pre-copy на hot-spare

    В случае обнаружения плохого SMART/сбойный блок на диске, контроллер RAID/СХД копирует данные с потенциально сбойного диска на hot-spare. После замены потенциально сбойного диска данные с hot-spare копируются на новый диск.



    Такой подход считается лучше Data reconstruction в случае выхода из строя диска полностью т.к. он более быстрый, меньше влияет на производительность RAID/СХД и более надежен.


    ОБЪЕКТЫ ДАННЫХ RAID (Strip, Stripe, LUN)

    Контроллер RAID оперирует объектами данных:

    • Stripe unit или chunk size – минимальная единица данных, записываемая на один диск, перед записью на другой диск.
    • Strip (лента) – один или несколько последовательных секторов на диске (логическая группировка chunk).
    • Stripe (полоса) – сектора на одном месте (или с одним номером Stripe) на нескольких ЖД в RAID.
    • Stripe width/depth (ширина ленты) – суммарная емкость секторов на одной ленте: количество данных в chunk одного stripe * количество дисков под данные в RAID.


    В общем случае RAID-контроллер не знает что такое файловая система (не говоря про бюджетные варианты), а создает LUN.

    LUN (Logical Unit, Logical Volume) – логический объект, состоящий из физических секторов (или логических структуры, которые полагаются на сектора). Чаще всего системы хранения/рейд контроллеры предоставляют ОС LUN в виде неформатированного диска (raw capacity), а уже ОС определяет какая файловая система будет использоваться для этого LUN. Новые контроллеры могут создавать несколько LUN на базе одного RAID.



    Восстановление данных

    Восстановление данных в RAID основывается на replication (mirroring) в случае RAID 1 (и его производных) или на базе булевой функции сложения по модулю (XOR) в случае RAID 3, 5, 6.

    Таблица истинности XOR:


    • когда вход одинаков – результат ложь (1×1, 0x0 -> 1)
    • когда вход отличается – результат истина (0x1, 1×0 -> 0)


    Пример с одним контрольным битом: при использовании трех ЖД на одном ЖД хранится один набор бит, на втором – другой, а на третьем (специальный parity disk) хранится результат XOR от первых двух. В результате при выходе любого из ЖД используя тот же XOR можно восстановить данные этого диска.

    ЗАПИСЬ НА RAID

    Зеркалирование (Mirroring) – RAID контроллер дублирует блок данных. RAID 1, 10, 01.

    Страйпинг (Striping) – первый блок данных контроллер кладет на первый диск, второй блок – на второй, третий – на первый и т.д. Таким образом нагрузка при последовательной записи распределяется между дисками. RAID 3, 5, 6, 50, 10, 01.

    Уровни RAID


    Сравнение уровней, есть так же в куче мест: wiki, огромная дока (не только сравнение), небольшая статья на nix. При выборе защиты нужно всегда помнить, что методы защищающие от отказа одного ЖД (RAID 3/5) хороши, но всегда надо учитывать, что вероятность отказа двух дисков (второго диска в момент rebuilding после отказа первого) выше вероятности отказа одного т.к. после отказа одного нагрузка на RAID увеличивается и увеличивается вероятность отказа.


    Чаще всего используемые массивы:

    RAID 0 (чисто он сейчас используется редко, если только в связке с резервной копией или если данные не важны – являются копией, например работа с графикой). RAID 0 предоставляет максимальную скорость чтения/записи, но без отказоустойчивости и чем больше дисков, тем больше риск сбоя всего рейда (в случае сбоя только попытка восстановления, но это всегда), причем нет возможности даже использовать диски горячей замены, в отличии от других RAID! Дисков не обязательно два, можно больше.



    RAID 1 (может использоваться для БД и других важных данных, но чаще для них используется RAID 10) – зеркалирование дисков. Все диски являются копиями всех – контроллер дублирует данные при записи. Чаще всего в RAID 1 находятся всего 2 диска из-за роста стоимости решения без фактического роста объема. Общий объем данных не должен превышать объем одного диска. Скорость считывания увеличивается за счет того, что контроллер может забирать данные с разных дисков. В случае выхода из строя диска и замены диска на новый диск происходит копия с выжившего ЖД на новый.



    RAID 3 (чаще всего вместо него используется RAID 5, может быть даже не реализован на новых контроллерах) – массив дисков с использованием выделенного диска четности. Данные контроллером записываются последовательно на диски в основной массив дисков, а данные о контрольной сумме от данных по XOR записываются на диск четности. При чтении осуществляется операция read только с дисков данных, четность не проверяется. Компьютеру не будет доступна емкость диска четности (n-1 полезная емкость). При этом коэффициент полезного объема повышается с увеличением количества дисков. Производительность всего RAID может иметь узким местом диск четности т.к. на него невозможно “распараллелить” запись. В случае поломки данных, после замены, восстановление данных происходит с помощью диска четности и данных с других (выживших) дисков. Отказ диска четности не критичен, но в случае отказа любых двух дисков (четности или нечетности – не важно) данные потеряны, защита только от отказа одного диска в один момент.



    RAID 5 (часто используется, например в файловых/почтовых серверах, обычно до 12 дисков) – частая ошибка что в RAID 5 максимум 5 дисков, по факту в RAID 5 можно включить минимум 3 диска (можно и 4). Данные по четности равномерно распределены между всеми дисками (на первый диск четность по первому stripe, на второй диск четность по второму stripe, etc; блоки четности равномерно распределяются по массиву). Плюс по сравнению с RAID 3 – отсутствие расхода всего диска под четность, нет завязки на производительность диска четности. Достоинства – хорошая скорость считывания данных (как параллельного, так и последовательного). Недостатки – низкая скорость случайной записи и чем больше дисков, тем большее время восстановления, поэтому RAID 5 чаще всего состоит максимум из 10-12 дисков. По аналогии с RAID3 в случае отказа любых двух дисков данные потеряны, защита только от отказа одного диска в один момент.



    RAID 6 (при необходимости большой надежности в сравнении с R3/R5; в файловых/почтовых серверах, встречается, но не часто) – RAID 6 похож на RAID 3 и RAID 5 с той разницей что используется две контрольные суммы четности вместо одной. Повышается надежность (защита от отказа до двух дисков одновременно) и производительность, но записываются две суммы на диски. Минимум 4 диска и потеря полезной емкости 2 дисков из них гарантирована. RAID 6 работает немного медленнее RAID 5 из-за необходимости расчета и записи двух контрольных сумм при записи и rebuild. Используется не на очень объемных дисках из-за долго rebuild (не более 1ТБ).


    У вендоров существует две основных технологии реализации RAID 6:

    RAID 6 DP (double parity) (NetAPP) – похож на RAID 3. Используется двойная контрольная сумма (две суммы, обе рассчитаны используя xor). Первая контрольная сумма рассчитывается по stripe и кладется на основной диск четности, вторая контрольная сумма рассчитывается на основе данных о четности блоков данных разных stripes, включая четность основного диска четности (диагональная четность) и кладется на второй диск четности.


    RAID 6 P+Q (Huawei, HDS) – похож на RAID 5. Вычисляются две контрольных суммы (xor + вторая через коды Рида-Соломона) и обе суммы для одного stripe кладутся на все ЖД последовательно.


    RAID 2.0+ – проприетарный RAID на СХД Huawei, подробнее в статье про технологии СХД Huawei.

    Комбинации

    Если в наименовании две цифры (RAID 10/50) – значит происходит одновременное использование нескольких RAID методов:

    RAID 01 (редко) – минимум 4 диска. Состоит из stripe, поверх которых осуществляется mirror (массив RAID1 из массивов RAID0). В общем случае не делается больше 2 групп зеркал.

    RAID 10 (часто используется, особенно для БД и других важных данных) – минимум 4 диска и общее количество должно быть четным. Состоит из зеркал, поверх которых осуществляется striping (массив RAID0 из массивов RAID1). Частично заимствует скоростные преимущества RAID0 и преимущество надежности RAID1. При этом частично сохраняется основной недостаток RAID1 – высокая стоимость дискового массива. В общем случае в группе зеркал по два диска – они дублируют друг друга, а запись проходит последовательно на несколько групп зеркал. При отказе двух дисков в RAID 10 в разных Disk Mirror групп данные восстанавливаются от соседей выживших Mirror групп. В случае отказа двух дисков в одной Mirror группе – RAID ломается.


    RAID 50 (редко) – минимум 6 дисков. Состоит из групп RAID 5 поверх которых осуществляется striping. Лучше RAID 5 при большом количестве дисков. Проще восстановление и лучше скорость доступа.

    Читайте также: