Уровни RAID
| Уровень | Что делает | Пример из 4 дисков по 1 TB | Защита |
|---|---|---|---|
| 0 (stripe) | Распараллелить I/O | 4 TB | НЕТ; падение 1 диска = потеря всего |
| 1 (mirror) | Полные копии | 1 TB (зеркало) | Падение N-1 дисков |
| 5 | Чередование + parity | 3 TB | Падение 1 диска |
| 6 | Чередование + 2 parity | 2 TB | Падение 2 дисков |
| 10 | Stripe из mirror'ов | 2 TB | Падение 1 на каждое зеркало |
RAID 0 - не RAID в смысле reliability, это просто stripe для скорости.
Создание
# RAID 1 (mirror) из двух дисков
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
cat /proc/mdstat # прогресс собрки
sudo mdadm --detail /dev/md0 # подробно
# Создать ФС
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid
# Сохранить конфиг чтобы массив собрался при ребуте
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u # debian/ubuntu
Состояние массива
cat /proc/mdstat
▸обычно вида:
# md0 : active raid1 sdb1[0] sdc1[1]
# 976630464 blocks super 1.2 [2/2] [UU]
▸[UU] = оба диска "Up"; [U_] = один диск выпал
▸"resync" / "recovery" с прогрессом - идёт перестроение
sudo mdadm --detail /dev/md0
▸State: clean / degraded / resyncing
Spec файл /proc/mdstat - главный источник правды. Healthcheck просто
парсит его на наличие [U_].
Падение диска
# Симулировать падение
sudo mdadm /dev/md0 --fail /dev/sdc1
# Удалить из массива
sudo mdadm /dev/md0 --remove /dev/sdc1
# Заменить новым диском (тот же размер!)
sudo mdadm /dev/md0 --add /dev/sdd1
# Массив автоматически начнёт rebuild - следить:
watch -n 1 cat /proc/mdstat
Пока идёт rebuild - массив deg degraded, ещё одна потеря = всё. На больших RAID 5/6 rebuild может занимать дни - отсюда репутация RAID 5 как «опасного» для дисков >2 TB.
Spare-диск
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 \
--spare-devices=1 /dev/sd{b,c,d}1 /dev/sde1Spare ждёт в пуле; при падении любого active диска mdadm автоматически запустит rebuild на него. Сильно сокращает окно уязвимости.
Стек: RAID + LVM + ФС
Стандартный server-setup:
/dev/sd[bcd]1 ← RAID 5 → /dev/md0 ← LVM PV → vg-data → lv-web → ext4 → /mnt/web
Каждый слой добавляет своё:
- RAID - reliability
- LVM - гибкость размеров и снапшоты
- ФС - собственно файлы
Hardware vs software
- Hardware RAID (контроллер на PCI): ОС видит готовый «диск». Плюсы: write-cache с батарейкой, prozessor разгружен. Минусы: vendor lock - упал контроллер → нужен такой же; firmware-bugs.
- Software RAID (mdadm): на любом железе, переносим, ОС видит и контролирует. Минусы: использует CPU и RAM; нет нативного battery-backed cache.
Для большинства случаев software RAID + UPS - лучше: переносимо, отлаживаемо, нет vendor lock'а.
ZFS и btrfs как альтернатива
У zfs и btrfs есть встроенный RAID (RAID-Z, btrfs raid). Они умеют
чексуммы данных и поэтому лучше детектят bit rot на чтении (md-RAID
доверяет «диск сказал OK»). Минус - сложнее, btrfs RAID 5/6 исторически
багованный.