• info@raidixmedia.ru
  • +7 (495) 974-99-64

Замена системного диска в программном зеркале mdraid с загрузчиком UEFI

Версия ПО RAIDIX


Products RAIDIX image version
Применимые продукты:

  • RAIDIX

Применимые версии:

  • 5.2

 


При установке системы может создаваться или не создаваться раздел /var в зависимости от размера системного диск. Если размер системного диска более 32 ГБ то в инструкции по установке создается раздел /var, что добавляет дополнительные шаги но они такие же, что и в рассматриваемом примере.

Описание задачи

В данной статье рассматривается вариант с конфигурацией UEFI и системным диском 32GB, построенном на двух физических дисках 32GB в программном зеркале. В таком случае будут иметься разделы / и UEFI и не будет раздела /var.

Пошаговая инструкция

Для выполнения команд необходимо использовать права доступа root.

Возможные варианты неисправности системного диска

Неисправности системного диска, когда может понадобиться восстановление разделов могут включать в себя следующие случаи:

  • с разрушением данных на файловой системе раздела;

  • с ошибочным статусом раздела;

  • с неисправностью диска но при этом он виден в системе;

  • когда диск стал не виден в системе;

  • другие варианты.

Поиск неисправного диска или раздела

  1. Найдите имена устройств зеркал разделов:

lsblk

Пример вывода, если все диски и разделы исправны

# lsblk
sda         8:160  0   32G  0 disk
|-sda1      8:161  0  201M  0 part
| `-md126   9:126  0  201M  0 raid1 /boot/efi
`-sda2      8:162  0 31.8G  0 part
  `-md127   9:127  0 31.8G  0 raid1 /
sdb         8:176  0   32G  0 disk
|-sdb1      8:177  0  201M  0 part
| `-md126   9:126  0  201M  0 raid1 /boot/efi
`-sdb2      8:178  0 31.8G  0 part
  `-md127   9:127  0 31.8G  0 raid1 /

Из вывода видно, что из разделов sda1 и sdb1 собран программный RAID md126, а из sda2 и sdb2 собран программный RAID md127.

  1. Уточните конфигурацию программного RAID:

cat /etc/mdadm.conf

Пример вывода

# cat /etc/mdadm.conf
# mdadm.conf written out by anaconda
MAILADDR root
AUTO +imsm +1.x -all
ARRAY /dev/md/boot_efi level=raid1 num-devices=2 UUID=086a1d8f:7a265637:23554441:7bb5d4c1
ARRAY /dev/md/root level=raid1 num-devices=2 UUID=e6dbc6b2:d90e5224:853d7e6b:9ef58161

  1. Получите данные о состоянии программных RAID по найденным выше именам:

mdadm -D <RAID-NAME>

<RAID-NAME> – имя программного RAID. В описанном случае /dev/md126 и /dev/md127.
Пример

# mdadm -D /dev/md126
# mdadm -D /dev/md127

Пример вывода:

    1. Когда системный диск выглядит как исправный, но требуется его замена, то разделы будут иметь статус active (столбец State):
    2. State : clean
    3. Number   Major   Minor   RaidDevice State
    4.        0       8      161        0      active sync   /dev/sdb1
             1       8      177        1      active sync   /dev/sda1
    1. Когда один из разделов или несколько разделов на одном из системных дисков имеет статус faulty (столбец State):
    2. State : active, degraded
    3. Number   Major   Minor   RaidDevice State
    4.        0       8      161        0      faulty             /dev/sdb1
             1       8      177        1      active sync        /dev/sda1
    1. Когда один из системных дисков недоступен для ввода/вывода:
    2. State : active, degraded
    3. Number   Major   Minor   RaidDevice State
    4.        1       8      177        0      active sync   /dev/sda1
             —       0        0        1      removed

В случае если разделы программного RAID имеют статус:

  • active или faulty, то перед заменой системного диска  нужно удалить разделы данного диска из программных зеркал;

  • removed, то перед заменой системного диска предварительное действие по удалению разделов из зеркал не требуется.

Изменение статуса разделов неисправного диска с  active или faulty на removed

Например из-за SMART ошибок диск требует замены, но разделы диска имеют статус active.

  1. Измените статусы разделов диска на faulty, если разделы диска имеют статус active:

mdadm <RAID-NAME> —fail <FAIL-PART-NAME>

<FAIL-PART-NAME> – имя раздела неисправного диска. В описанном случае /dev/sdb1 и /dev/sdb2.
Пример вывода для RAID /dev/md126 и неисправного диска /dev/sdb:

# mdadm /dev/md126 —fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md126

Пример вывода для RAID /dev/md127 и неисправного диска /dev/sdb:

# mdadm /dev/md127 —fail /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md127

  1. Проверьте статусы RAID:

mdadm -D <RAID-NAME>

Пример вывода для RAID /dev/md126:

# mdadm -D /dev/md126

             State : clean, degraded
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Number   Major   Minor   RaidDevice State
       —       0        0        0      removed
       1       8      177        1      active sync   /dev/sda1
       0       8      161        —      faulty   /dev/sdb1

Пример вывода для RAID /dev/md127:

# mdadm -D /dev/md127

Active Devices : 1
    Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Number   Major   Minor   RaidDevice State
       —       0        0        0      removed
       1       8      178        1      active sync   /dev/sda2
       0       8      162        —      faulty   /dev/sdb2

  1. Удалите разделы диска со статусом faulty из зеркала:

mdadm <RAID-NAME> -r <FAIL-PART-NAME>

Пример вывода для RAID /dev/md126 и неисправного диска /dev/sdb:

# mdadm /dev/md126 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md126

Пример вывода для RAID /dev/md127 и неисправного диска /dev/sdb:

# mdadm /dev/md127 -r /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md127

Замена неисправного диска

  1. Проверьте статусы RAID:

mdadm -D <RAID-NAME>

Пример вывода для RAID /dev/md126:

# mdadm -D /dev/md126

Number   Major   Minor   RaidDevice State
       —       0        0        0      removed
       1       8      177        1      active sync   /dev/sda1

Пример вывода для RAID /dev/md127:

# mdadm -D /dev/md127

Number   Major   Minor   RaidDevice State
       —       0        0        0      removed
       1       8      178        1      active sync   /dev/sda2

  1. Определите серийные номера исправных дисков (столбец Serial):

lsblk -sipo NAME,TYPE,SIZE,SERIAL,VENDOR,MODEL,REV,FSTYPE,MOUNTPOINT,UUID

Пример вывода

# lsblk -sipo NAME,TYPE,SIZE,SERIAL,VENDOR,MODEL,REV,FSTYPE,MOUNTPOINT,UUID
NAME         TYPE    SIZE SERIAL   VENDOR   MODEL             REV FSTYPE            MOUNTPOINT UUID
/dev/md126   raid1   201M                                         vfat              /boot/efi  F824-DCC9
|-/dev/sda1  part    201M                                         linux_raid_member            5177b40b-a2c6-3b3e-94ca-e7a586d4a446
| `-/dev/sda disk  447.1G 21DB1510 ATA      MTFDDAV480TCB-1A MD51
`-/dev/sdb1  part    201M                                         linux_raid_member            5177b40b-a2c6-3b3e-94ca-e7a586d4a446
  `-/dev/sdb disk  447.1G 21DB1388 ATA      MTFDDAV480TCB-1A MD51
/dev/md127   raid1 446.8G                                         ext4              /          0d4c619b-dbbf-4c17-979e-4ae42d917209
|-/dev/sda2  part    447G                                         linux_raid_member            02ba69b5-2c39-bf34-801d-a7748fe6630c
| `-/dev/sda disk  447.1G 21DB1510 ATA      MTFDDAV480TCB-1A MD51
`-/dev/sdb2  part    447G                                         linux_raid_member            02ba69b5-2c39-bf34-801d-a7748fe6630c
  `-/dev/sdb disk  447.1G 21DB1388 ATA      MTFDDAV480TCB-1A MD51

  1. Определите методом исключения по серийным номерам исправных дисков неисправный диск и его местоположение, по заводским наклейкам или из UEFI BIOS сервера в разделе Inventory.

  2. Выключите сервер.
  3. Замените диск на исправный.

Размер исправного диска должен быть не меньше диска, с которого будут дублироваться данные.

  1. Включите сервер.
  2. Укажите приоритет загрузки с оставшегося загрузочного раздела диска из состава программного RAID в загрузчике UEFI BIOS.

Создание разделов на новом диске

Новый диск определился после загрузки как диск не имеющий разделы.

  1. Проверьте тип разметки диска, с которого будут копироваться данные:

blkid <SOURCE-DISK-NAME>

<SOURCE-DISK-NAME> – имя диска, с которого будут копироваться данные. В описанном случае /dev/sda.
Пример вывода

# blkid /dev/sda
/dev/sda: PTUUID=»e2e7423e-3843-483e-ab68-8774ace8e6ec» PTTYPE=»gpt»

Обратитесь в отдел технической поддержки L3, если тип разметки PTTYPE  не равен  gpt.

  1. Скопируйте таблицу разделов, обратив особое внимание на правильность указания источника и приемника:

sgdisk <SOURCE-DISK-NAME> -R <DEST-DISK-NAME>

<DEST-DISK-NAME> – имя нового диска, на который будут копироваться данные. В описанном случае /dev/sdb.
Пример вывода

# sgdisk /dev/sda -R /dev/sdb

Пример переноса таблицы разделов через файл:

# sgdisk —backup=backup_table /dev/sda
# sgdisk —load-backup=backup_table /dev/sdb

  1. Создайте уникальный UUID для разделов на новом диске, последовательно выполнив следующие команды:
    1. Первая команда:

sgdisk -G <DEST-DISK-NAME>

Пример

# sgdisk -G /dev/sdb

    1. Вторая команда:

sgdisk —randomize-guids —move-second-header <DEST-DISK-NAME>

Пример

# sgdisk —randomize-guids —move-second-header /dev/sdb

  1. Добавьте разделы нового диска в зеркало:

mdadm <RAID-NAME> —add <DEST-PART-NAME>

<DEST-PART-NAME> – имя раздела нового диска. В описанном случае /dev/sdb1 и /dev/sdb2.
Пример вывода для RAID /dev/md126 и раздела диска /dev/sdb1:

# mdadm /dev/md126 —add /dev/sdb1
mdadm: re-added /dev/sdb1

Пример вывода для RAID /dev/md127 и раздела диска /dev/sdb2:

# mdadm /dev/md127 —add /dev/sdb2
mdadm: re-added /dev/sdb2

  1. Дождитесь, когда разделы созданного зеркала получат статус clean:

watch «mdadm -D <RAID-NAME>»

Пример для RAID /dev/md126:

# watch «mdadm -D /dev/md126»

Пример для RAID /dev/md127:

# watch «mdadm -D /dev/md127»

Корректировка записей в UEFI загрузчике

  1. Выведите старые загрузочные записи, включая запись об отсутствующем диске и разделе (в примере вывода это «Boot0004* Raidix»):

efibootmgr

Пример вывода

# efibootmgr
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0000,0001,0002,0003
Boot0000* Raidix
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* Raidix
MirroredPercentageAbove4G: 0.00
MirrorMemoryBelow4GB: false

  1. Выведите записи UEFI области с номерами UUID:

efibootmgr -v | grep Raidix

Пример вывода

# efibootmgr -v | grep Raidix
Boot0000* Raidix    HD(1,GPT,46313cf9-6fc4-4354-94c4-f53d1eafc6b7,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)
Boot0004* Raidix    HD(1,GPT,22c98b87-e6f3-4779-bfba-a4c0735adef3,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)

  1. Выведите PARTUUID дисков системы:

lsblk -o +PARTUUID

Пример вывода

# lsblk -o +PARTUUID
NAME      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT PARTUUID
sda         8:0    0 447.1G  0 disk
|-sda1      8:1    0   201M  0 part             46313cf9-6fc4-4354-94c4-f53d1eafc6b7
| `-md126   9:126  0   201M  0 raid1 /boot/efi
`-sda2      8:2    0   447G  0 part             fe738e05-34f4-4293-863b-991e88bcd5a3
`-md127   9:127  0 446.8G  0 raid1 /
sdb         8:16   0 447.1G  0 disk
|-sdb1      8:17   0   201M  0 part             02b24677-6988-4107-b1bd-30a8913ff825
| `-md126   9:126  0   201M  0 raid1 /boot/efi
`-sdb2      8:18   0   447G  0 part             6a7286b0-01eb-44d9-85d6-cbc74393e98b
`-md127   9:127  0 446.8G  0 raid1 /
sr0        11:0    1     2G  0 rom

  1. Сравните UUID и PARTUUID, полученные выше.

В примерах вывода видно, что запись Boot0000 соответствует разделу /dev/sda1, а запись Boot0004 не соответствует /dev/sdb1 так как диск /dev/sdb был заменен.

  1. Cоздайте новую загрузочную запись, указав имя диска и номер раздела UEFI области на диске:

efibootmgr —create —disk=<DEST-DISK-NAME> —part=1 —label=»Raidix» —loader=’\EFI\redhat\shimx64.efi’

Пример

# efibootmgr —create —disk=/dev/sdb —part=1 —label=»Raidix» —loader=’\EFI\redhat\shimx64.efi’

  1. Проверьте список загрузочных записей:

efibootmgr -v | grep Raidix

Пример вывода

# efibootmgr -v | grep Raidix
Boot0000* Raidix    HD(1,GPT,46313cf9-6fc4-4354-94c4-f53d1eafc6b7,0x800,0x64800)/File(\EFI\redhat\shimx64.efi
Boot0004* Raidix    HD(1,GPT,22c98b87-e6f3-4779-bfba-a4c0735adef3,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)
Boot0005* Raidix    HD(1,GPT,02b24677-6988-4107-b1bd-30a8913ff825,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)

  1. Удалите старую запись с неправильным номером PARTUUID:

efibootmgr —delete-bootnum —bootnum <BOOT-NUMBER>

<BOOT-NUMBER> – номер загрузочной записи.
Пример

# efibootmgr —delete-bootnum —bootnum 4

  1. Проверьте список загрузочных записей:

efibootmgr -v | grep Raidix

Пример вывода

# efibootmgr -v | grep Raidix

Boot0000* Raidix    HD(1,GPT,46313cf9-6fc4-4354-94c4-f53d1eafc6b7,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)

Boot0005* Raidix    HD(1,GPT,02b24677-6988-4107-b1bd-30a8913ff825,0x800,0x64800)/File(\EFI\redhat\shimx64.efi)

Система будет иметь возможность загружаться с двух физических дисков.

  1. При необходимости поменяйте порядок загрузочных записей:

    1. Выведите текущий порядок:

efibootmgr

Пример вывода

# efibootmgr
Timeout: 1 seconds
BootOrder: 0005,0000,0001,0002,0003
Boot0000* Raidix
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0005* Raidix
MirroredPercentageAbove4G: 0.00
MirrorMemoryBelow4GB: false

    1. Задайте требуемый порядок:

efibootmgr -o <BOOT-ARRAY>

<BOOT-ARRAY> – строка с номерами загрузочных записей, разделенных запятой.

Пример

# efibootmgr -o 0000,0005,0001,0002,0003


*Рекомендация: закажите услугу удалённого подключения, наши специалисты обязательно вам помогут.
Для этого свяжитесь со своим менеджером по телфону или отправьте запрос на электронную почту.

RaidixMedia

+7 (495) 974-99-64

info@raidixmedia.ru

г. Москва, Нижний Сусальный переулок, 5с12

Создание сайта - stolica media