Жесткие диски · 3 min read · Dec 25, 2025
Замена вышедшего из строя жесткого диска в программном массиве RAID1
Замена вышедшего из строя жесткого диска в программном массиве RAID1. Этот гид показывает, как удалить вышедший из строя жесткий диск из массива RAID1 на Linux (программный RAID) и как добавить новый жесткий диск в массив RAID1 без потери данных.
ПРИМЕЧАНИЕ: Существует новая версия этого руководства, которая использует gdisk вместо sfdisk для поддержки GPT-разделов.
1 Предварительное примечание
В этом примере у меня есть два жестких диска, /dev/sda и /dev/sdb, с разделами /dev/sda1 и /dev/sda2, а также /dev/sdb1 и /dev/sdb2.
/dev/sda1 и /dev/sdb1 составляют массив RAID1 /dev/md0.
/dev/sda2 и /dev/sdb2 составляют массив RAID1 /dev/md1.
/dev/sda1 + /dev/sdb1 = /dev/md0/dev/sda2 + /dev/sdb2 = /dev/md1/dev/sdb вышел из строя, и мы хотим его заменить.
2 Как узнать, что жесткий диск вышел из строя?
Если диск вышел из строя, вы, вероятно, найдете много сообщений об ошибках в лог-файлах, например, /var/log/messages или /var/log/syslog.
Вы также можете выполнить
cat /proc/mdstatи вместо строки [UU] вы увидите [U_], если у вас есть деградированный массив RAID1.
3 Удаление вышедшего из строя диска
Чтобы удалить /dev/sdb, мы отметим /dev/sdb1 и /dev/sdb2 как вышедшие из строя и удалим их из соответствующих массивов RAID (/dev/md0 и /dev/md1).
Сначала мы отмечаем /dev/sdb1 как вышедший из строя:
mdadm --manage /dev/md0 --fail /dev/sdb1Вывод команды
cat /proc/mdstatдолжен выглядеть так:
server1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0] sdb1[2](F)
24418688 блоков [2/1] [U_]
md1 : активный raid1 sda2[0] sdb2[1]
24418688 блоков [2/2] [UU]
неиспользуемые устройства: Затем мы удаляем /dev/sdb1 из /dev/md0:
mdadm --manage /dev/md0 --remove /dev/sdb1Вывод должен быть таким:
server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1И
cat /proc/mdstatдолжен показать это:
server1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0]
24418688 блоков [2/1] [U_]
md1 : активный raid1 sda2[0] sdb2[1]
24418688 блоков [2/2] [UU]
неиспользуемые устройства: Теперь мы повторяем те же шаги для /dev/sdb2 (который является частью /dev/md1):
mdadm --manage /dev/md1 --fail /dev/sdb2cat /proc/mdstatserver1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0]
24418688 блоков [2/1] [U_]
md1 : активный raid1 sda2[0] sdb2[2](F)
24418688 блоков [2/1] [U_]
неиспользуемые устройства: mdadm --manage /dev/md1 --remove /dev/sdb2server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2cat /proc/mdstatserver1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0]
24418688 блоков [2/1] [U_]
md1 : активный raid1 sda2[0]
24418688 блоков [2/1] [U_]
неиспользуемые устройства: Затем выключите систему:
shutdown -h nowи замените старый жесткий диск /dev/sdb на новый (он должен иметь как минимум такой же размер, как и старый - если он всего на несколько МБ меньше, чем старый, то восстановление массивов не удастся).
4 Добавление нового жесткого диска
После того как вы заменили жесткий диск /dev/sdb, загрузите систему.
Первое, что мы должны сделать сейчас, это создать точно такое же разделение, как на /dev/sda. Мы можем сделать это с помощью одной простой команды:
sfdisk -d /dev/sda | sfdisk /dev/sdbВы можете выполнить
fdisk -lчтобы проверить, имеют ли оба жестких диска теперь одинаковое разделение.
Затем мы добавляем /dev/sdb1 в /dev/md0 и /dev/sdb2 в /dev/md1:
mdadm --manage /dev/md0 --add /dev/sdb1server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1mdadm --manage /dev/md1 --add /dev/sdb2server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2Теперь оба массива (/dev/md0 и /dev/md1) будут синхронизированы. Выполните
cat /proc/mdstatчтобы увидеть, когда это будет завершено.
Во время синхронизации вывод будет выглядеть так:
server1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0] sdb1[1]
24418688 блоков [2/1] [U_]
[=>...................] восстановление = 9.9% (2423168/24418688) завершение=2.8мин скорость=127535K/сек
md1 : активный raid1 sda2[0] sdb2[1]
24418688 блоков [2/1] [U_]
[=>...................] восстановление = 6.4% (1572096/24418688) завершение=1.9мин скорость=196512K/сек
неиспользуемые устройства: Когда синхронизация завершится, вывод будет выглядеть так:
server1:~# cat /proc/mdstat
Личности : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : активный raid1 sda1[0] sdb1[1]
24418688 блоков [2/2] [UU]
md1 : активный raid1 sda2[0] sdb2[1]
24418688 блоков [2/2] [UU]
неиспользуемые устройства: Вот и все, вы успешно заменили /dev/sdb!
Get new posts in your inbox
No spam. Unsubscribe anytime.