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
В кінці файлу /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
утиліта mdadm спрощує роботу з raid-масивами в Linux. У даній статті я описав основні моменти роботи з даною утилітою, а також торкнувся найчастіші запитання, які виникають при роботі з raid-масивами через утиліту mdadm.