На домашнем Микросервере вышел из строя диск в RAID-группе. Надо менять. В связи с этим есть две практические задачи. Следить за дисками, живые или нет. И если какой-то вышел, определить его положение в дисковой корзине и заменить.
Первая задачи у меня решена коротким скриптом
microserver:~$ cat ./raidstat.sh
#!/bin/bash
sudo mdadm --detail /dev/md0
df -m
Первая строка выводит информацию о состоянии RAID-группы, вторая - о заполненности файловой системы. Завел себе правило, когда захожу в консоль сервера, запускаю этот скрипт. Никакой автоматизации не делал. Вывод такой. Выделил блоки, где виден сбой:
microserver:~$ ./raidstat.sh
/dev/md0:
Version : 1.2
Creation Time : Wed May 22 22:10:40 2013
Raid Level : raid5
Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Feb 4 11:42:05 2021
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1913644
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
4 8 17 - faulty /dev/sdb1
Файл.система 1M-блоков Использовано Доступно Использовано% Cмонтировано в
udev 1843 0 1843 0% /dev
tmpfs 381 3 379 1% /run
/dev/sda1 149222 9412 132207 7% /
tmpfs 1905 0 1905 0% /dev/shm
tmpfs 5 0 5 0% /run/lock
tmpfs 1905 0 1905 0% /sys/fs/cgroup
/dev/mapper/vg1-lv3 1004294 596747 407547 60% /media/timemachine
/dev/mapper/vg1-lv1 3096240 1529782 1566443 50% /media/archive
/dev/mapper/vg1-lv2 1572864 591490 543002 53% /media/data
tmpfs 381 0 381 0% /run/user/1000
Из вывода команды знаем, что сбойный у нас диск по пути /dev/sdb. Теперь определяем, какой это диск:
microserver:~$ lsblk -S
NAME HCTL TYPE VENDOR MODEL REV TRAN
sda 0:0:0:0 disk ATA VB0160EAVEQ HPG0 sata
sdb 1:0:0:0 disk ATA WDC_WD30EFRX-68EUZN0 0A82 sata
sdc 3:0:0:0 disk ATA TOSHIBA_DT01ACA300 ABB0 sata
sdd 4:0:0:0 disk ATA TOSHIBA_DT01ACA300 ABB0 sata
Диск во втором отсеке дисковой корзины. Кроме того, мы знаем его модель и производителя - Western Digital WD30EFRX
Честно сказать, испытываю волнение. Этот диск - уже замена когда-то выходившему из строя. То есть два живых TOSHIBA - старше сломанного. Надеюсь RAID успеет пересобраться прежде, чем еще один выйдет из строя. Надо думать о РК.
Обновление. Добавлю для памятки еще команды для запуска пересборки RAID-группы
Предполагаем, что сервер/компьютер мы выключили, диски заменили. Он распознался по старому адресу.На всякий случай проверяем командой lsblk -S. Далее надо инициализировать диски и добавить его в RAID-группу. Инициализируем (создаем таблицу разделов) командой gdisk (как я понимаю, наследник fdisk). Комменировать не буду. Всё просто - создали, записали. Диск разбивать на разделы не надо, поэтому при создании раздела везде нажимаем Enter:
microserver:~$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sdb: 5860533168 sectors, 2.7 TiB
Model: WDC WD30EFAX-68J
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): B0121851-F22D-48E4-B78E-8985B4C6AC6C
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 5860533134 2.7 TiB 8300 Linux filesystem
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully
Важно, чтобы инициализировался полный объем диска. fdisk больше 2 ТБ не видит (возможно, нужны спецключи). Дальше проверяем, что раздел увиделся:
microserver:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 149,1G 0 disk
├─sda1 8:1 0 148,2G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 894M 0 part [SWAP]
sdb 8:16 0 2,7T 0 disk
└─sdb1 8:17 0 2,7T 0 part
sdc 8:32 0 2,7T 0 disk
└─sdc1 8:33 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid5
├─vg1-lv1 253:0 0 3T 0 lvm
├─vg1-lv2 253:1 0 1,5T 0 lvm
└─vg1-lv3 253:2 0 980,8G 0 lvm
sdd 8:48 0 2,7T 0 disk
└─sdd1 8:49 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid5
├─vg1-lv1 253:0 0 3T 0 lvm
├─vg1-lv2 253:1 0 1,5T 0 lvm
└─vg1-lv3 253:2 0 980,8G 0 lvm
И добавляем диск в RAID.
microserver:~$ sudo mdadm /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb
Восстановление пойдет само. За процессом можно наблюдать по процентам Rebuild Status:
microserver:~$ sudo mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 22 22:10:40 2013
Raid Level : raid5
Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun Feb 7 00:39:07 2021
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 0% complete
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1913658
Number Major Minor RaidDevice State
4 8 16 0 spare rebuilding /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
Остается только переживать за то, что восстановление завершиться до того, как еще один диск выйдет из строя.
На 26% ушел спать... 2021-02-07 03:05
microserver:/media/archive$ sudo mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 22 22:10:40 2013
Raid Level : raid5
Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun Feb 7 02:59:12 2021
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 26% complete
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1913736
Number Major Minor RaidDevice State
4 8 16 0 spare rebuilding /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
Продолжение. Помните о резервной копии данных! Когда что-то пошло не так...
После очередного перезапуска сервера вместо своего RAID5 получил вот такую картину (по идее, это всё та же группа из 3 дисков в RAID5):
microserver:~$ sudo mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Raid Level : raid0
Total Devices : 2
Persistence : Superblock is persistent
State : inactive
Working Devices : 2
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1914527
Number Major Minor RaidDevice
- 8 49 - /dev/sdd1
- 8 33 - /dev/sdc1
Короче, RAID-группу вроде как распалась.
microserver:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sdd1[3](S) sdc1[5](S)
5860268943 blocks super 1.2
unused devices: <none>
microserver:~$ sudo mdadm -E /dev/sd*1 |grep Event
mdadm: No md superblock detected on /dev/sda1.
mdadm: No md superblock detected on /dev/sdb1.
Events : 1914527
Events : 1914527
sdb1 - "потерянный" диск.
Вариант 1. Что-то случилось с /etc/mdadm/mdadm.conf. В этом случае можно обойтись командой
microserver:~$ sudo mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Можно вначале вывести результат выполнения на экран, а потом самостоятельно текстовым редактором записать в /etc/mdadm/mdadm.conf. Так вы будете знать, что пишите. В моем случае строка не отличалась от той, что была в /etc/mdadm/mdadm.conf, только массив назывался /dev/md/0 вместо /dev/md0
microserver:~$ sudo mdadm --examine --scan
ARRAY /dev/md/0 metadata=1.2 UUID=f59e4ccb:ed0f8a61:38615829:f568d153 name=microserver:0
Очевидно, что обновление /etc/mdadm/mdadm.conf не помогло бы.
Вариант 2. Поэтому я заново добавил их в старую RAID-группу
microserver:~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
microserver:~$ sudo mdadm -A --force /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Cannot assemble mbr metadata on /dev/sdb
mdadm: /dev/sdb has no superblock - assembly aborted
Тогда я повторил команду для двух "хороших" дисков:
microserver:~$ sudo mdadm -A --force /dev/md0 /dev/sdc1 /dev/sdd1
mdadm: /dev/md0 has been started with 2 drives (out of 3).
И о чудо, группа собралась, и даже данные остались на месте:
microserver:~$ sudo mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 22 22:10:40 2013
Raid Level : raid5
Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Feb 12 21:56:11 2021
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1914527
Number Major Minor RaidDevice State
- 0 0 0 removed
5 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
После этого я удалил и заново создал раздел на "плохом" диске
microserver:~$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sdb: 5860533168 sectors, 2.7 TiB
Model: WDC WD30EFAX-68J
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): B0121851-F22D-48E4-B78E-8985B4C6AC6C
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 5860533134 2.7 TiB 8300 Linux filesystem
Command (? for help): d
Using 1
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
После этого заново добавил его в группу:
microserver:~$ sudo mdadm /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1
microserver:~$ sudo mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 22 22:10:40 2013
Raid Level : raid5
Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Feb 13 16:46:54 2021
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 0% complete
Name : microserver:0 (local to host microserver)
UUID : f59e4ccb:ed0f8a61:38615829:f568d153
Events : 1914529
Number Major Minor RaidDevice State
4 8 17 0 spare rebuilding /dev/sdb1
5 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
Так выглядят диски и группа сейчас:
microserver:~$ sudo mdadm -Db /dev/md0
ARRAY /dev/md0 metadata=1.2 spares=1 name=microserver:0 UUID=f59e4ccb:ed0f8a61:38615829:f568d153
microserver:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 149,1G 0 disk
├─sda1 8:1 0 148,2G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 894M 0 part [SWAP]
sdb 8:16 0 2,7T 0 disk
└─sdb1 8:17 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid5
├─vg1-lv1 253:0 0 3T 0 lvm /media/archive
├─vg1-lv2 253:1 0 1,5T 0 lvm
└─vg1-lv3 253:2 0 980,8G 0 lvm
sdc 8:32 0 2,7T 0 disk
└─sdc1 8:33 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid5
├─vg1-lv1 253:0 0 3T 0 lvm /media/archive
├─vg1-lv2 253:1 0 1,5T 0 lvm
└─vg1-lv3 253:2 0 980,8G 0 lvm
sdd 8:48 0 2,7T 0 disk
└─sdd1 8:49 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid5
├─vg1-lv1 253:0 0 3T 0 lvm /media/archive
├─vg1-lv2 253:1 0 1,5T 0 lvm
└─vg1-lv3 253:2 0 980,8G 0 lvm
microserver:~$ lsblk -S
NAME HCTL TYPE VENDOR MODEL REV TRAN
sda 1:0:0:0 disk ATA VB0160EAVEQ HPG0 sata
sdb 3:0:0:0 disk ATA WDC_WD30EFAX-68JH4N0 0A82 sata
sdc 4:0:0:0 disk ATA WDC_WD30EFAX-68JH4N0 0A82 sata
sdd 5:0:0:0 disk ATA TOSHIBA_DT01ACA300 ABB0 sata
Вдохнослялся этим обсуждением.
Ссылки по теме:
Комментариев нет:
Отправить комментарий