RAID: 0, 1, 5, 10
RAID 0, 1, 5, 10: отказоустойчивость и ёмкость.
Зачем объединять диски
RAID (Redundant Array of Independent Disks) — способ собрать несколько физических дисков в один логический том. Цели две: получить скорость выше, чем у одного диска, или пережить отказ диска без потери данных. Разные уровни RAID решают эти задачи по-разному, и у каждого своя цена в ёмкости.
Собрать программный RAID в Linux можно через mdadm. Готовый массив виден
в /proc/mdstat:
$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
976630464 blocks super 1.2 [2/2] [UU]
[UU] означает, что оба диска в строю. Если один выпадет, там окажется
[U_].
RAID 0 — striping
RAID 0 разрезает данные на блоки и раскладывает их по дискам по очереди. Это striping (чередование). Запись и чтение идут параллельно на все диски, поэтому скорость растёт. Минимум для сборки — 2 диска.
Отказоустойчивости здесь нет вообще. Половина каждого файла лежит на одном диске, половина на другом. Отказ любого диска теряет весь том целиком.
# два диска в stripe, кусок 512 КБ
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
Полезная ёмкость равна сумме дисков. Два диска по 1 ТБ дают 2 ТБ. RAID 0 берут там, где нужна скорость, а данные не жалко или они есть где-то ещё.
RAID 1 — зеркало
RAID 1 пишет одинаковые копии на все диски массива. Это зеркало (mirror). Том остаётся живым, пока жив хотя бы один диск из пары. Минимум — 2 диска.
Плата за надёжность — ёмкость. Из двух дисков по 1 ТБ доступен 1 ТБ: полезная ёмкость 50%, вторая половина ушла на копию.
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
Чтение может идти с обоих дисков сразу, так что скорость чтения выше. Запись идёт на оба, поэтому быстрее одиночного диска она не становится.
RAID 5 — striping с чётностью
RAID 5 тоже раскладывает данные полосами, но добавляет блок чётности (parity), посчитанный операцией XOR по остальным блокам полосы. Чётность распределена по всем дискам, не лежит на одном. Минимум — 3 диска.
Массив переживает отказ одного диска: по оставшимся данным и чётности
недостающий блок восстанавливается. Полезная ёмкость равна (n-1)/n от
суммы. Три диска по 1 ТБ дают 2 ТБ, четыре дают 3 ТБ.
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
Опасный момент здесь — это окно восстановления. Пока массив в состоянии degraded
(один диск уже выпал) заменяют диск и пересобирают полосы. Отказ второго
диска до конца восстановления теряет весь том. RAID 5 держит только один
отказ за раз.
RAID 10 — зеркало плюс stripe
RAID 10 сначала собирает диски в зеркальные пары, а поверх пар делает striping. Минимум — 4 диска. Полезная ёмкость 50%, как у зеркала.
Массив переживает несколько отказов сразу, при одном условии: ни одна зеркальная пара не должна потерять оба своих диска. Выпал по одному диску из разных пар, и том остаётся жив. Если выпали оба диска одной пары, том потерян.
mdadm --create /dev/md0 --level=10 --raid-devices=4 \
/dev/sdb /dev/sdc /dev/sdd /dev/sde
Такой массив берут под нагруженные базы данных: скорость от striping и устойчивость от зеркал одновременно, ценой половины ёмкости.
RAID — это не бэкап
Вот сравнение уровней на одинаковом железе:
| Уровень | Минимум дисков | Полезная ёмкость | Переживает отказ |
|---|---|---|---|
| RAID 0 | 2 | 100% | 0 дисков |
| RAID 1 | 2 | 50% | 1 диск (из пары) |
| RAID 5 | 3 | (n-1)/n | 1 диск |
| RAID 10 | 4 | 50% | по 1 диску из разных пар |
Главная ловушка новичка: считать RAID заменой резервному копированию. RAID
защищает от одного класса аварий: от смерти диска. Против случайного rm -rf, ошибки в скрипте или шифровальщика он бесполезен: массив честно
зеркалит или размазывает по дискам уже испорченные данные.
# зеркало исправно продублирует эту команду на оба диска
rm -rf /var/data/*
Отдельный бэкап на другой носитель или в другое место остаётся обязательным. RAID и бэкап решают разные задачи и не заменяют друг друга.
Что важно запомнить
RAID объединяет диски ради скорости или устойчивости к отказу диска.
RAID 0 — striping, максимум скорости и ёмкости, ноль отказоустойчивости, минимум 2 диска.
RAID 1 — зеркало, 50% ёмкости, живёт пока жив один диск из пары, минимум 2.
RAID 5 — striping плюс чётность, переживает один отказ, минимум 3 диска,
ёмкость (n-1)/n; второй отказ до конца восстановления теряет всё.
RAID 10 — зеркала под striping, минимум 4 диска, 50% ёмкости, держит несколько отказов, пока цела каждая пара.
RAID — не бэкап и не спасёт от rm или шифровальщика.
Дальше — короткий квиз по треку файловой системы.
Дрилл · вопросы как на собесе
Проверь себя без подсказок
Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.
Что такое RAID? Опиши основные уровни.
LIN-006Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс