linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Файловая система/raid

kb/filesystem ── Файловая система ── advanced

RAID - software-raid через mdadm

RAID объединяет несколько [[block-devices]] в один логический с избыточностью или скоростью. На Linux - `mdadm`. Hardware-RAID - отдельная история.

view as markdownaka: mdadm, software-raid, md-raid

Уровни RAID

УровеньЧто делаетПример из 4 дисков по 1 TBЗащита
0 (stripe)Распараллелить I/O4 TBНЕТ; падение 1 диска = потеря всего
1 (mirror)Полные копии1 TB (зеркало)Падение N-1 дисков
5Чередование + parity3 TBПадение 1 диска
6Чередование + 2 parity2 TBПадение 2 дисков
10Stripe из mirror'ов2 TBПадение 1 на каждое зеркало

RAID 0 - не RAID в смысле reliability, это просто stripe для скорости.

Создание

bash
# 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

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

bash
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_].

Падение диска

bash
# Симулировать падение
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-диск

bash
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 \
  --spare-devices=1 /dev/sd{b,c,d}1 /dev/sde1

Spare ждёт в пуле; при падении любого 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 исторически багованный.

§ команды

bash
cat /proc/mdstat

Состояние всех md-массивов - основной мониторинг

bash
sudo mdadm --detail /dev/md0

Подробно: state, devices, last sync, errors

bash
sudo mdadm --create /dev/md0 -l 1 -n 2 /dev/sdb1 /dev/sdc1

Создать RAID 1 (mirror) из двух дисков

bash
sudo mdadm /dev/md0 --add /dev/sde1

Добавить новый диск в массив (для replacement или rebuild)

bash
echo check | sudo tee /sys/block/md0/md/sync_action

Запустить scrubbing - пройти все блоки, проверить consistency

§ см. также

  • block-devicesBlock devices - диски в LinuxBlock device - устройство которое читается/пишется блоками фиксированного размера (обычно 512B или 4K). Диски, SSD, NVMe - всё block devices в `/dev/`.
  • lvmLVM - Logical Volume ManagerLVM - слой между [[block-devices]] и ФС: объединяет диски в pool'ы и нарезает логические тома любого размера, которые можно расширять, снапшотить, мигрировать вживую.
  • btrfsbtrfs - copy-on-write, subvolumes и снапшотыbtrfs - copy-on-write ФС с subvolume'ами, снапшотами за O(1), нативным RAID 0/1/10 и чексуммами данных. RAID 5/6 проблемен. COW-фрагментация бьёт БД и VM-image - выключай для них.
  • filesystemsФайловые системы: ext4, xfs, btrfs, zfsext4 - дефолт, надёжный. xfs - для больших файлов и parallel I/O. btrfs/zfs - снапшоты, чексуммы, RAID встроенный, но сложнее.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки