Заменить диск в RAID
- Удалите диск из массива.
- Определите схему разметки диска.
- Скопируйте разметку на новый диск.
- Добавьте диск в RAID-массив.
- Установите загрузчик.
1. Удалить диск из массива
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о разметке дисков в RAID-массиве:
cat /proc/mdstat
В ответе появится информация о разметке дисков в RAID-массиве. Например:
Personalities : [raid1]
md1 : active raid1 sda3[0] sdb3[1]
975628288 blocks super 1.2 [2/2] [UU]
bitmap: 3/8 pages [12KB], 65536KB chunk
md0 : active raid1 sda2[2] sdb2[1]
999872 blocks super 1.2 [2/2] [UU]
unused devices: <none>Здесь:
md0
— имя RAID-массива, который собран из разделовsda2
иsdb2
;md1
— имя RAID-массива, который собран из разделовsda3
иsdb3
.
-
Выведите информацию о разделах на дисках:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sdb3 8:19 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /Здесь:
sda
— имя диска с рабочими RAID-массивами;sdb
— имя диска под замену;sdb2
— имя раздела на дискеsdb
, который является компонентом первого RAID-массива;md0
— имя первого RAID-массива, который собран из разделовsda2
иsdb2
;sdb3
— имя раздела на дискеsdb
, который является компонентом второго RAID-массива;md1
— имя второго RAID-массива, который собран из разделовsda3
иsdb3
.
-
Пометьте диск, который нужно заменить, как неисправный:
mdadm /dev/<raid_array_1> -f /dev/<partition_1>
mdadm /dev/<raid_array_2> -f /dev/<partition_2>Укажите:
<raid_array_1>
— имя первого RAID-массива, которое вы получили на шаге 3, в примере этоmd0
;<partition_1>
— имя раздела первого RAID-массива на диске под замену, которое вы получили на шаге 3, в примере этоsdb2
;<raid_array_2>
— имя второго RAID-массива, которое вы получили на шаге 3, в примере этоmd1
;<partition_2>
— имя раздела второго RAID-массива на диске под замену, которое вы получили на шаге 3, в примере этоsdb3
.
-
Удалите диск, который на шаге 4 вы отметили как неисправный, из всех устройств:
mdadm /dev/<raid_array_1> --remove /dev/<partition_1>
mdadm /dev/<raid_array_2> --remove /dev/<partition_2>Укажите:
<raid_array_1>
— имя первого RAID-массива, которое вы получили на шаге 3, в примере этоmd0
;<partition_1>
— имя раздела первого RAID-массива на диске под замену, которое вы получили на шаге 3, в примере этоsdb2
;<raid_array_2>
— имя второго RAID-массива, которое вы получили на шаге 3, в примере этоmd1
;<partition_2>
— имя раздела второго RAID-массива на диске под замену, которое вы получили на шаге 3, в примере этоsdb3
.
2. Определить схему разметки диска
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Установите утилиту для работы с таблицей разделов GPT (GUID Partition Table) на дисках —
gdisk
:apt-get install gdisk -y
-
Выведите информацию о разделах на дисках:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 diskЗдесь:
sda
— имя диска с рабочими RAID-разделами;sdb
— имя нового диска.
-
Определите схему разметки дисков:
gdisk -l /dev/<source_disk>
Укажите
<source_disk>
— имя диска с рабочими с RAID-раз делами, которое вы получили на шаге 3, в примере этоsda
.Ответ зависит от схемы разметки дисков:
-
GPT:
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present -
MBR:
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
-
3. Скопировать разметку на новый диск
Процесс копирования разметки зависит от схемы разметки диска — GPT или MBR.
При копировании разметки важно в правильном порядке указать диски в команде. Если порядок дисков будет указан неверно, то исправный диск будет перезаписан, а данные удалены. Данные нельзя будет восстановить.
GPT
MBR
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о разделах на дисках:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 diskЗдесь:
sda
— имя диска с рабочими RAID-разделами;sdb
— имя нового диска.
-
Скопируйте разметку на новый диск. В команде важно указать диски в правильном порядке, иначе разметка и данные на изначально исправном диске будут уничтожены.
sgdisk -R /dev/<new_disk> /dev/<source_disk>
Укажите:
<new_disk>
— имя нового диска, на который копируется разметка, вы получили его на шаге 2, в примере этоsdb
;<source_disk>
— имя диска с рабочими RAID-разделами, с которого копируется разметка, вы получили его на шаге 2, в примере этоsda
.
-
Присвойте новому диску случайный UUID:
sgdisk -G /dev/<new_disk>
Укажите
<new_disk>
— имя нового диска, на который копировалась разметка, вы получили его на шаге 2, в примере этоsdb
. -
Убедитесь, что разметка на дисках полностью совпадает:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 977M 0 part
└─sdb3 8:19 0 930.6G 0 part
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о разделах на дисках:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 diskЗдесь:
sda
— имя диска с рабочими RAID-разд елами;sdb
— имя нового диска.
-
Скопируйте разметку на новый диск. В команде важно указать диски в правильном порядке, иначе разметка и данные на изначально исправном диске будут уничтожены.
sfdisk -d /dev/<source_disk> | sfdisk /dev/<new_disk>
Укажите:
<source_disk>
— имя диска с рабочими RAID-разделами, с которого копируется разметка, вы получили его на шаге 2, в примере этоsda
;<new_disk>
— имя нового диска, на который копируется разметка, вы получили его на шаге 2, в примере этоsdb
.
-
Если разделы не видны в системе, обнови те информацию о разделах:
partprobe /dev/<new_disk>
Укажите
<new_disk>
— имя нового диска, на который копировалась разметка, вы получили его на шаге 2, в примере этоsdb
. -
Убедитесь, что разметка на дисках полностью совпадает:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 977M 0 part
└─sdb3 8:19 0 930.6G 0 part
4. Добавить диск в RAID-массив
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о разделах на дисках:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 977M 0 part
└─sdb3 8:19 0 930.6G 0 partЗдесь:
md0
— имя первого RAID-массива, который собран из разделаsda2
;md1
— имя второго RAID-массива, который собран из разделаsda3
;sdb2
— имя первого раздела на новом диске, который нужно добавить в RAID-массив;sdb3
— имя второго раздела на новом диске, который нужно добавить в RAID-массив.
-
Добавьте разделы нового диска в RAID-массив:
mdadm /dev/<raid_array_1> -a /dev/<partition_1>
mdadm /dev/<raid_array_2> -a /dev/<partition_2>Укажите:
<raid_array_1>
— имя первого RAID-массива, которое вы получили на шаге 2, в примере этоmd0
;<partition_1>
— имя первого раздела на новом диске, которое вы получили на шаге 2, в примере этоsdb2
;<raid_array_2>
— имя второго RAID-массива, которое вы получили на шаге 2, в примере этоmd1
;<partition_2>
— имя второго раздела на новом диске, которое вы получили на шаге 2, в примере этоsdb3
.
После добавления диска в RAID-массив начнется синхронизация. Скорость синхронизации зависит от размера и типа диска — SSD или HDD.
-
Дождитесь завершения синхронизации.
-
Убедитесь, что новый диск добавлен в RAID-массив:
lsblk
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sda3 8:3 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1
└─sdb3 8:19 0 930.6G 0 part
└─md1 9:1 0 930.4G 0 raid1 /
5. Установить загрузчик
После добавления диска в массив нужно установить на него загрузчик операционной системы.
Установить загрузчик можно как в ОС, так и в режиме Rescue.
Сервер загружен в ОС
Сервер загружен в режиме Rescue
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о разделах на дисках:
lsblk -o +FSTYPE
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT FSTYPE
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 500M 0 part vfat
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sda3 8:3 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 500M 0 part
├─sdb2 8:18 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sdb3 8:19 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1 / ext4Здесь:
sda
— имя диска с рабочими RAID-массивами;sdb
— имя нового диска.
-
Установите загрузчик GRUB:
grub-install /dev/<new_disk>
Укажите
<new_disk>
— имя нового диска, которое вы получили на шаге 2, в примере этоsdb
.
-
Загрузите сервер в режиме восстановления и диагностики Rescue.
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о режиме загрузки ОС:
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"
В ответе появится информация о режиме загрузки ОС —
BIOS
илиUEFI
. -
Проверьте, определила ли система RAID-массивы, для этого выведите информацию о разделах на дисках:
lsblk -o +FSTYPE
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT FSTYPE
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 500M 0 part vfat
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sda3 8:3 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 500M 0 part
├─sdb2 8:18 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sdb3 8:19 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1 ext4Здесь
md0
,md1
— имена RAID-массивов на разделах дисков. -
Если на шаге 4 в выводе
lsblk
есть RAID-массивы, пропустите этот шаг. Если RAID-массивы отсутствуют, запустите сборку RAID-массивов:mdadm --assemble --scan
-
Выведите информацию о разделах на доступных дисках:
lsblk -o +FSTYPE
В ответе появится список дисков с разделами. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT FSTYPE
loop0 7:0 0 985M 1 loop
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 500M 0 part vfat
├─sda2 8:2 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sda3 8:3 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 500M 0 part
├─sdb2 8:18 0 977M 0 part
│ └─md0 9:0 0 976.4M 0 raid1 ext4
└─sdb3 8:19 0 930.1G 0 part
└─md1 9:1 0 929.9G 0 raid1 ext4Здесь:
sda
— имя диска с рабочими RAID-разделами;sdb
— имя нового диска;md0
,md1
— имена RAID-массивов на разделах дисков.
-
Определите разделы, которые нужно монтировать:
- корневой раздел
/
— обычно находится на самом большом разделе диска, в примере на шаге 6 этоmd1
; - загрузочный раздел
/boot
— обычно имеет файловую систему ext4 и размер 512 МБ — 1 ГБ, в примере на шаге 6 этоmd0
; - раздел EFI
/boot/efi
— раздел с файловой системой vfat, используется при загрузке ОС в режиме UEFI, в примере на шаге 6 это разделыsda1
иsdb1
.
- корневой раздел
-
Смонтируйте корневую файловую систему в директорию
/mnt
:mount /dev/<raid_array> /mnt
Здесь
<system_raid_array>
— имя корневого раздела, которое вы определили на шаге 7, в примере этоmd1
. -
Примонтируйте загрузочный раздел:
mount /dev/<boot_partition> /mnt/boot
Укажите
<boot_raid_array>
— имя загрузочного раздела/boot
, которое вы определили на шаге 7, в примере этоmd0
. -
Если используется UEFI-загрузчик ОС, примонтируйте раздел EFI:
mount /dev/<efi_partition> /mnt/boot/efi
Укажите
<efi_partition>
— имя раздела EFI/boot/efi
на новом диске, которое вы определили на шаге 7, в примере этоsdb1
. -
Смонтируйте служебные файловые системы:
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount -t devpts devpts /mnt/dev/pts -
Если на шаге 3 вы определили режим загрузки ОС как UEFI, смонтируйте файловую систему
efivars
:
mount -t efivarfs efivarfs /mnt/sys/firmware/efi/efivars
-
Подключитесь к окружению:
chroot /mnt /bin/bash
-
Экспортируйте переменную PATH:
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
-
Установите загрузчик GRUB. Команда для установки зависит от режима загрузки ОС, который вы определили на шаге 3:
- UEFI:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
- BIOS:
grub-install /dev/<new_disk>
Укажите
<new_disk>
— имя нового диска, которое вы получили на шаге 6, в примере этоsdb
. -
Создайте файл конфигурации GRUB:
/sbin/grub-mkconfig -o /boot/grub/grub.cfg
-
После завершения установки GRUB вы йдите из окружения:
exit
-
Размонтируйте служебные файловые системы:
mount -t devpts devpts /mnt/dev/pts
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys -
Размонтируйте файловую систему:
umount /dev/<system_raid_array> /mnt
Укажите
<system_raid_array>
— имя корневого раздела/
, который вы смонтировали на шаге 8, в примере этоmd1
. -
Верните прежний шаблон загрузки сервера или перезагрузите сервер из ОС. При перезагрузке сервера из ОС шаблон загрузки автоматически изменится на тот, который был установлен до загрузки сервера в режиме Rescue.