Заменить диск в 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.