Какие основные типы RAID существуют и как они работают?
Что проверяют
Базовую грамотность в инфраструктуре: понимаете ли вы, чем расплачиваетесь за скорость и надёжность и что RAID не заменяет бэкап. У Python-разработчика вопрос обычно всплывает рядом с базами и серверами, и следом спрашивают, какой уровень вы бы выбрали под PostgreSQL.
Как отвечать
Для каждого уровня назовите принцип, минимум дисков, полезный объём и сколько отказов он переживает:
- RAID 0: чередование (striping), блоки раскладываются по дискам. Объём равен сумме, скорость растёт, но отказ любого диска уничтожает весь массив;
- RAID 1: зеркало, каждый диск хранит полную копию. Объём одного диска, чтение можно распараллелить, запись не ускоряется. Массив жив, пока жив хотя бы один диск;
- RAID 5: чередование с распределённой чётностью, от трёх дисков, полезно
N-1, переживает отказ одного. Мелкая запись дорогая: надо прочитать старые данные и чётность и записать обе обратно; - RAID 6: две чётности, от четырёх дисков, полезно
N-2, переживает отказ двух; - RAID 10: чередование поверх зеркальных пар, от четырёх дисков, полезна половина. Быстрая запись и быстрое восстановление, поэтому его обычно берут под базы данных.
Добавьте практику. Программный RAID в Linux собирают через mdadm, состояние видно в /proc/mdstat. ZFS даёт свои уровни RAID-Z с контрольными суммами данных. Аппаратный контроллер с кэшем записи и батареей быстрее, но сам становится точкой отказа. В облаке сетевые диски уже реплицированы провайдером, и RAID поверх них собирают ради скорости, а не надёжности.
Где спотыкаются
Называют RAID резервной копией. Зеркало так же послушно повторит DROP TABLE, работу шифровальщика или ошибку в коде, поэтому бэкап нужен всё равно.
Советуют RAID 5 для больших HDD. Восстановление на многотерабайтных дисках длится часами и сильно нагружает оставшиеся, а второй сбой в это время означает потерю данных. Спокойнее RAID 6 или 10.
Путают RAID 10 и RAID 01 или считают, что RAID 10 переживает отказ любых двух дисков. Два отказа он выдерживает, только если они пришлись на разные зеркальные пары.