Програмний RAID в Linux за допомогою mdadm

mdadm - утиліта для роботи з програмними RAID-масивами в Linux. У статті ми розглянемо, як працювати з утилітою mdadm (Multiple disks admin) для створення масиву, додавання дисків, управління дисками, додавання hot-spare і багато іншої корисної інформації.

зміст:

  • Установка утиліти управління програмним RAID - mdadm
  • Створення RAID з 2-х дисків
  • Створення файлової системи на RAID, монтування
  • Перегляд стану, перевірка цілісності RAID масиву
  • Відновлення RAID при збої, заміна диска
  • Додавання і видалення дисків в RAID масив на Linux
  • Додавання Hot-Spare диска в RAID масив
  • видалення масиву
  • Mdmonitor: Моніторинг стану RAID і email сповіщення
  • RAID масив в стані inactive

Установка утиліти управління програмним RAID - mdadm

Щоб встановити утиліту mdadm, запустіть команду установки:

  • Для Centos / Red Hat використовується yum / dnf: yum install mdadm
  • Для Ubuntu / Debian: apt-get install mdadm

У резульатте в системі буде встановлена ​​сама утиліта mdadm і необхідні бібліотеки:

Running transaction Installing: libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing: mdadm-4.1-1.el7.x86_64 2/2 Verifying: mdadm-4.1-1.el7.x86_64 1/2 Verifying: libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed: mdadm.x86_64 0: 4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0: 2.1.11-43.el7. centos Complete!

Створення RAID з 2-х дисків

У мене на сервері встановлені два додаткових диски і я хочу сода на низ програмне дзеркало (RAID1). Диски порожні, дані на них не писалися. Для початку, потрібно занулити все суперблоці на дисках, які ми будемо додавати в RAID-масив:

# Mdadm --zero-superblock --force / dev / vd b, c

У мене два є два чистих диска vdb і vdc.

mdadm: Unrecognised md component device - / dev / vdb mdadm: Unrecognised md component device - / dev / vdc

Даний лістинг означає, що жоден з дисків раніше не був доданий в масив.

Щоб зібрати програмний RAID1 з двох дисків в пристрої / dev / md0, іспользуйтк команду:

# Mdadm --create --verbose / dev / md0 -l 1 -n 2 / dev / vd b, c

де «-l 1»- це тип масиву, в нашому випадку RAID1

А «-n 2«- це кількість дисків, яке додається в масив.

Якщо потрібно створити RAID0 в режимі страйп (stripe) для збільшення швидкості читання / запису даних за рахунок розпаралелювання команд між декількома фізичними дисками, використовуйте команду:

# Mdadm --create --verbose / dev / md0 --level = 0 --raid-devices = 2 / dev / vdb / dev / vdc

RAID 5 з трьох або більше дисків:

# Mdadm --create --verbose / dev / md0 --level = 5 --raid-devices = 3 / dev / vdb / dev / vdс / dev / vdd

Після запуску команди, потрібно підтвердити дії і масив буде створено:

Тепер при перегляді інформації про диски, ми бачимо наш масив:

# lsblk

NAME MAJ: MIN RM SIZE RO TYPE MOUNTPOINT vda 253: 0 0 20G 0 disk ├─vda1 253: 1 0 512M 0 part / boot └─vda2 253: 2 0 19.5G 0 part / vdb 253: 16 0 20G 0 disk └ ─md0 9: 0 0 20G 0 raid1 vdc 253: 32 0 20G 0 disk └─md0 9: 0 0 20G 0 raid1

Створення файлової системи на RAID, монтування

Щоб створити файлову систему ext4 на нашому RAID1 масиві з двох дисків, використовуйте команду:

# Mkfs.ext4 / dev / md0

Створимо директорію backup і прімонтіруем до неї RAID пристрій:

# Mkdir / backup
# Mount / dev / md0 / backup /

# Df -h

Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% / dev tmpfs 496M 0 496M 0% / dev / shm tmpfs 496M 44M 452M 9% / run tmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 20G 1.4G 19G 7% / / dev / vda1 488M 100M 353M 23% / boot tmpfs 100M 0 100M 0% / run / user / 0 / dev / md0 20G 45M 19G 1% / backup 

Масив змонтувати без помилок. Щоб не монтувати пристрій кожен раз вручну, внесемо зміни в fstab:

# Nano / etc / fstab

/ Dev / md0 / backup ext4 defaults 1 2

Перегляд стану, перевірка цілісності RAID масиву

Щоб перевірити цілісність даних в масиві, використовуйте команду:

#echo 'check'> / sys / block / md0 / md / sync_action

Після чого, потрібно подивитися висновок файлу:

#cat / sys / block / md0 / md / mismatch_cnt

Якщо в результаті ви отримуєте 0, то з вашим масивом все в порядку:

Щоб зупинити перевірку, використовуйте команду:

#echo 'idle'> / sys / block / md0 / md / sync_action

Щоб перевірити стан всіх RAID -массівов доступні на сервері, використовуйте команду:

# Cat / proc / mdstat

Personalities: [raid1] md0: active raid1 vdc [1] vdb [0] 20954112 blocks super 1.2 [2/2] [UU]

У лістингу команди, бачимо інформацію про наш раніше створеному raid.

Більш детальну інформацію про конкретний raid-масиві, можна подивитися командою:

# Mdadm -D / dev / md0

Розберемо основні пункти лістингу команди:

  • Version - версія метаданих;
  • Creation Time - дата і час створення raid-масиву;
  • Raid Level - рівень raid-масиву;
  • Array Size - обсяг дискового простору для raid-масиву;
  • Used Dev Size - використовуваний обсяг для пристроїв;
  • Raid Device - кількість дисків в raid-масиві;
  • Total Devices - кількість доданих в raid-масив дисків;
  • State - поточний стан (clean - все ОК);
  • Active Devices - кількість активних дисків в raid-масиві;
  • Working Devises - кількість робочих дисків в raid-масиві;
  • Failed Devices - кількість пристроїв зі збоями в raid-масиві;
  • Spare Devices - кількість запасних дисків в raid-масиві;
  • Consistency Policy - параметр задає тип синхронізації після збою в raid-масиві, rsync - повна синхронізація після відновлення raid-масиву (доступні режими bitmap, journal, ppl);
  • UUID - ідентифікатор raid-масиву

Коротку інформацію можна подивитися за допомогою утиліти fdisk:

# Fdisk -l / dev / md0

Disk / dev / md0: 21.5 GB, 21457010688 bytes, 41908224 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical / physical): 512 bytes / 512 bytes I / O size (minimum / optimal): 512 bytes / 512 bytes

Відновлення RAID при збої, заміна диска

Якщо у вас вийшов з ладу або пошкодився один з дисків в RAID-масиві, його можна замінити іншим. Для початку визначимо, пошкоджений диск і який диск нам слід змінювати.

# Cat / proc / mdstat

Personalities: [raid1] md0: active raid1 vdb [0] 20954112 blocks super 1.2 [2/1] [U_] 

З лістингу команди, ви бачимо, що тільки один диск активний. Так само про проблему говорить [U_]. Коли обидва диска робочі, висновок буде [UU].

Детальна інформація про RAID-масиві також показує, що естт проблеми:

# Mdadm -D / dev / md0

/ Dev / md0: Version: 1.2 Creation Time: Tue Oct 29 12:39:22 2019 Raid Level: raid1 Array Size: 20954112 (19.98 GiB 21.46 GB) Used Dev Size: 20954112 (19.98 GiB 21.46 GB) Raid Devices: 2 Total Devices: 2 Persistence: Superblock is persistent Update Time: Tue Oct 29 14:41:13 2019 State: clean, degraded Active Devices: 1 Working Devices: 1 Failed Devices: 1 

State: clean, degraded - дана рядок вказує на те, що диск в raid-масиві пошкоджений.

У нашому випадку потрібно замінити несправний диск / Dev / vdc. Для відновлення масиву, потрібно видалити неробочий диск і додати новий.

Видаляємо неіспраний диск:

# Mdadm / dev / md0 --remove / dev / vdc

Додаємо в масив новий диск:

# Mdadm / dev / md0 --add / dev / vdd

Відновлення диска запуститься автоматично після додавання нового диска:

# Mdadm -D / dev / md0

/ Dev / md0: Version: 1.2 Creation Time: Tue Oct 29 12:39:22 2019 Raid Level: raid1 Array Size: 20954112 (19.98 GiB 21.46 GB) Used Dev Size: 20954112 (19.98 GiB 21.46 GB) Raid Devices: 2 Total Devices: 2 Persistence: Superblock is persistent Update Time: Tue Oct 29 14:50:20 2019 State: clean, degraded, recovering Active Devices: 1 Working Devices: 2 Failed Devices: 0 Spare Devices: 1 Consistency Policy: resync Rebuild Status: 69% complete Name: server.vpn.ru:0 (local to host server.vpn.ru) UUID: 9d59b1fb: 7b0a7b6d: 15a75459: 8b1637a2 Events: 42 Number Major Minor RaidDevice State 0 253 16 0 active sync / dev / vdb 2 253 48 1 spare rebuilding / dev / vdd 

rebuild Status: 69% complete - показує поточний стан відновлення масиву.

spare rebuilding / dev / vdd - показує який диск додається до масиву.

Після відновлення масиву, лістинг по дискам виглядає так:

State: clean Active Devices: 2 Working Devices: 2 Failed Devices: 0 Spare Devices: 0 

Додавання і видалення дисків в RAID масив на Linux

Щоб розібрати раніше створений масив, потрібно отмонтировать його:

# Umount / backup

І виконати команду:

# Mdadm -S / dev / md0

mdadm: stopped / dev / md0

Після розбору масиву, він не повинен визначатися як пристрій:

# Mdadm -S / dev / md0

mdadm: error opening / dev / md0: No such file or directory

Щоб зібрати масив, який ми раніше розібрали вручну, запустіть команду:

# Mdadm --assemble -scan

Дана команда просканує диски з розібраного або розваленого RAID масиву і по метаданих спробує зібрати з них RAID.

Якщо вам потрібно видалити робочий диск з масиву і замінити його на інший, потрібно для початку позначити робочий диск як неробочий:

# Mdadm / dev / md0 --fail / dev / vdc

Після чого диск можна буде видалити командою ::

# Mdadm / dev / md0 --remove / dev / vdc

Доповнити новим диск, так само як і у випадку з неробочим диском:

# Mdadm / dev / md0 --add / dev / vdd

Додавання Hot-Spare диска в RAID масив

Ви можете додасть в масив hot-spare диск для гарячої заміни при виході з ладу одного з активних дисків. Додайте вільний диск в потрібний масив:

# Mdadm / dev / md0 --add / dev / vdc

Після чого перевіривши статус raid-масиву, ми побачимо цей диск як spare:

Щоб перевірити, чи спрацює «гаряча заміна » диска, пометим будь-який з дисків як неробочий і перевіримо статус raid-масиву:

# Mdadm / dev / md0 --fail / dev / vdb

Після чого при перевірці статусу масиву, буде видно, що почалася Перезбірка масиву:

Диск / Dev / vdb позначений як неробочий, а hot-spare диск став одним з активних дисків RAID і запустився процес відновлення.

Щоб додати додатковий робочий диск в RAID, потрібно виконати два кроки.

Додати порожній диск масиву:

# Mdadm / dev / md0 --add / dev / vdb

Тепер даний диск буде відображатися як hot-spare, щоб зробити його робочим, розширимо raid-масив:

# Mdadm -G / dev / md0 -raid-devices = 3

Після чого запуститься процес пересборки масиву:

Після виконання пересборки, все диски стали активні:

Number Major Minor RaidDevice State 3 253 32 0 active sync / dev / vdc 2 253 48 1 active sync / dev / vdd 4 253 16 2 active sync / dev / vdb 

видалення масиву

Якщо ви хочете безповоротно видалити raid-масив, використовуйте наступну схему:

# Umount / backup - отмонтіруем масив від директорії

# Mdadm -S / dev / md0 - зупиняємо RAID пристрій

Після чого очищаємо все суперблоці на дисках, з яких він був зібраний:

# Mdadm --zero-superblock / dev / vdb
# Mdadm --zero-superblock / dev / vdc

Mdmonitor: Моніторинг стану RAID і email сповіщення

Для моніторингу стану RAID масиву можна використовувати службу mdmonitor. Спочатку потрібно створити файл /etc/mdadm.conf з конфігурацією поточного масиву:

# Mdadm -detail -scan> /etc/mdadm.conf

Конфігураційний файл mdadm.conf не створюється автоматично. Його потрібно створювати і актуалізувати вручну.

В кінці файлу /etc/mdadm.conf додайте email адреса адміністратора, на який потрібно надсилати сповіщення про проблеми з RAID:

MAILADDR [email protected]

Останолось перезапустити службу mdmonitor через systemctl:

# Systemctl restart mdmonitor

Після цього система буде сповіщати вас по email про помилки в mdadm і несправних дисках.

RAID масив в стані inactive

При збої устаткування або аварійного вимкнення по харчуванню, масив може перейти в стан inactive. Всі диски позначаються як неактивні, але помилок на дисках немає.

# Cat / proc / mdstat

Personalities: [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0: inactive vdc [1] vdb [0] 20954112 blocks super unused devices:  

В цьому випадку потрібно зупинити масив командою:

# Mdadm --stop / dev / md0

І пересобрать його:

# Mdadm --assemble --scan -force

Якщо масив прописаний в / etc / fstab, потрібно перемонтувати його командою:

# Mount -a

Є способи створення програмного RAID на вже встановленої ОС. В цьому випадку вам доведеться вручну скопіювати таблиці всіх розділів на новий диск, і вручну перемістити вміст системного диска на RAID з одного диска, очистити перший диск і додати його в RAID, після чого поправити initramfs і загрузік GRUB. Тому все-таки краще, якщо ви оберете режим встановіть CentOS на програмний RAID при розгортанні сервера.

утиліта mdadm спрощує роботу з raid-масивами в Linux. У даній статті я описав основні моменти роботи з даною утилітою, а також торкнувся найчастіші запитання, які виникають при роботі з raid-масивами через утиліту mdadm.