Проверить, здоров ли массив
Здоровый массив — State : clean и Failed Devices : 0. Любое
degraded, (F) или _ в квадратных скобках — диск надо менять:
mdadm.
RAID собирает диски в одно устройство, которое продолжает работать после отказа одного из них (кроме RAID 0).
cat /proc/mdstat
все массивы: [UU] или [U_]
sudo mdadm --detail /dev/md0
State: clean, degraded, recovering
lsblk
диски и массив над ними (raid1)
sudo dmesg | grep md/raid
когда и какой диск выпал
RAID (redundant array of independent disks) собирает несколько дисков в одно блочное устройство. Данные раскладываются по дискам так, что отказ одного не останавливает работу: система читает и пишет через оставшиеся. Исключение — RAID 0: у него нет запасных копий.
В Linux массив собирает ядро (драйвер md), управляет им mdadm.
Массив виден как /dev/md0, на нём создают файловую систему
(filesystems) или том LVM — так же, как на обычном диске.
Аппаратный RAID-контроллер делает то же внутри себя и показывает системе
один готовый диск; тогда /proc/mdstat пуст, а состояние смотрят
утилитой контроллера.
N — число дисков в массиве, все одного размера.
| Уровень | Дисков минимум | Переживает отказ | Полезный объём | Как устроен |
|---|---|---|---|---|
| RAID 0 | 2 | ни одного диска | N дисков | полоса: блоки по очереди на каждый диск |
| RAID 1 | 2 | N − 1 дисков | 1 диск | зеркало: на каждом диске полная копия |
| RAID 5 | 3 | 1 диск | N − 1 дисков | полоса и чётность, по которой восстанавливается любой один диск |
| RAID 6 | 4 | 2 диска | N − 2 дисков | полоса и две чётности |
| RAID 10 | 4 | 1 диск в каждой паре | N / 2 дисков | полоса из зеркальных пар |
RAID 10 из четырёх дисков переживает отказ двух, если они из разных пар, и теряет данные, если отказали оба диска одной пары. RAID 5 пишет медленнее зеркала: каждая запись пересчитывает чётность.
RAID 1 пишет каждый блок на все диски массива и читает с любого. Из двух дисков по 256 МиБ получается массив на 255 МиБ: часть места занимает суперблок — служебная запись mdadm о составе массива в начале каждого диска.
Массив degraded (деградированный) работает, но потерял часть избыточности: один или несколько дисков выпали. Данные целы и доступны, запись идёт на оставшиеся диски. Следующий отказ сверх того, что переживает уровень, — потеря данных: у RAID 1 из двух дисков это отказ последнего.
[2/1] — дисков в массиве должно быть два, работает один. [U_] — то же
по местам: первое место занято (U, up), второе пусто. (F) — диск
помечен отказавшим (faulty). В журнале ядра в этот момент:
mdadm --detail пишет State : clean, degraded или active, degraded
(active — в массив недавно писали). Как читать каждое поле —
mdadm.
После замены диска ядро копирует на новый диск всё, что на нём должно
быть, — пересборка (rebuild). В /proc/mdstat она видна строкой
recovery = N% с прогнозом finish= и скоростью speed=. Сверка копий
сразу после создания массива называется resync и выглядит так же;
массив в это время уже работает.
Пересборка читает каждый блок уцелевших дисков. На учебной машине массив
из образов по 256 МиБ пересобирается за секунды, диск в несколько
терабайт — часами, и всё это время массив degraded. Скорость ограничивают
/proc/sys/dev/raid/speed_limit_min и speed_limit_max (КиБ/с, на
учебной машине 1000 и 200000).
Горячий резерв (hot spare, запасной диск) — диск в массиве без своего места: в
/proc/mdstat он помечен (S), в mdadm --detail — spare. Когда
рабочий диск отказывает, ядро само берёт резерв и начинает пересборку, не
дожидаясь человека. Диск, добавленный в исправный массив, становится
резервом.
RAID защищает от одного: отказа диска. Удалённый файл, mkfs не на том
устройстве, испорченная приложением база, шифровальщик — всё это массив
сразу записывает на все копии. От этого спасает только копия в другом
месте: restic, rsync, tar.
Здоровый массив — State : clean и Failed Devices : 0. Любое
degraded, (F) или _ в квадратных скобках — диск надо менять:
mdadm.
Массив собирается из любых блочных устройств, в том числе из loop-устройств — файлов, подключённых как диск:
После перезагрузки loop-устройства сами не подключаются, а массив из них сам не собирается: это делает служба, которая подключает образы, или ты вручную — mdadm.
Массив degraded, данные пока целы. Найди выпавший диск ((F) в
/proc/mdstat, faulty или removed в mdadm --detail), убери его из
массива и добавь исправный — mdadm. Пока пересборка не
закончилась, массив беззащитен.
На больших дисках так и должно быть: ядро читает уцелевшие диски
целиком. Прогноз — finish= в /proc/mdstat. Под нагрузкой пересборка
замедляется, но не ниже speed_limit_min. Не выключай машину, пока она
идёт.
Об отказе сообщает mdmonitor — служба mdadm, которая пишет на адрес из
MAILADDR в /etc/mdadm/mdadm.conf. Без почтовой службы письмо не
уйдёт: на учебной машине в журнале остаётся DegradedArray и
sendmail: not found. Поэтому проверку /proc/mdstat добавляют в
мониторинг. Подробнее — mdadm.
Пока массив degraded или пересобирается, избыточности нет. Диски одной партии и возраста часто отказывают подряд, а пересборка нагружает уцелевший диск сильнее обычного. Меняй диск сразу и держи свежую копию данных вне массива.
У RAID 0 нет копий: отказ любого диска теряет весь массив, и чем дисков больше, тем это вероятнее. Его берут только для данных, которые не жалко потерять.
mdadm.conf./dev/md0.Есть неточность? Сообщить об ошибке в статье