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

Установка утиліти управління програмним 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 --zero-superblock - очищення дисків переді додаванням в raid

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

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

mdadm - створити raid1 з 2-х дисків в Linux

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

# 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, монтування

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

# mkfs.ext4 /dev/md0

створити файлову систему ext4 на raid томі

Створимо директорію 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

fstab - авто-монтування raid пристрою в каталог

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

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

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

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

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

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

перевірка цілісності raid в linux

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

#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

mdadm -D / dev / md0 - отримати інформацію про raid масиві в linux

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

  • 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

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 масив

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

# mdadm /dev/md0 --add /dev/vdc

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

mdadm - додати hot-spare диск в raid масив

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

# mdadm /dev/md0 --fail /dev/vdb

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

mdadm - faulty - зіпсований диск

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

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

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

# mdadm /dev/md0 --add /dev/vdb

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

# mdadm -G /dev/md0 —raid-devices=3

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

mdadm - програмний raid linux spare rebuilding

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

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 admin@winitpro.ru

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

# systemctl restart mdmonitor

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

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

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

# cat /proc/mdstat

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

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

# mdadm --stop /dev/md0

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

# mdadm --assemble --scan –force

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

# mount -a

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *