Замена жестких дисков в программном RAID

Вступление

В этой статье используется пример для описания необходимых шагов, связанных с заменой неисправного диска в программном RAID ( mdadm).

ВАЖНОЕ ПРИМЕЧАНИЕ: Все команды являются примерами и должны быть соответственно скорректированы!

Видео с инструкциями можно найти на нашем канале Hetzner на Youtube.

Пример сценария

Предполагается следующая конфигурация:

# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1]
      1822442815 blocks super 1.2 [2/2] [UU]

md2 : active raid1 sda3[0] sdb3[1]
      1073740664 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      524276 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      33553336 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Всего разделов четыре:

  • / dev / md0 как своп
  • / dev / md1 как / boot
  • / dev / md2 как /
  • / dev / md3 как / home

/dev/sdbв данном случае неисправный привод. Отсутствующий или неисправный привод обозначается значками [U_]и / или [_U]. Если массив RAID не поврежден, он показывает [UU].

# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1](F)
      1822442815 blocks super 1.2 [2/1] [U_]

md2 : active raid1 sda3[0] sdb3[1](F)
      1073740664 blocks super 1.2 [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1](F)
      524276 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sda1[0] sdb1[1](F)
      33553336 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Изменения в программном RAID можно вносить во время работы системы. Если proc/mdstatпоказывает, что диск выходит из строя, как в примере здесь, то можно назначить встречу со специалистами службы поддержки для замены диска ( см. Ниже ).

# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0]
      1822442815 blocks super 1.2 [2/1] [U_]

md2 : active raid1 sda3[0]
      1073740664 blocks super 1.2 [2/1] [U_]

md1 : active raid1 sda2[0]
      524276 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sda1[0]
      33553336 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Удаление неисправного привода

Перед добавлением нового диска старый неисправный диск необходимо удалить из массива RAID. Это нужно сделать для каждого отдельного раздела.

# mdadm /dev/md0 -r /dev/sdb1
# mdadm /dev/md1 -r /dev/sdb2
# mdadm /dev/md2 -r /dev/sdb3
# mdadm /dev/md3 -r /dev/sdb4

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

# mdadm --detail /dev/md0

В некоторых случаях привод может быть неисправен только частично, например, только /dev/md0в [U_]состоянии, тогда как все другие устройства находятся в [UU]состоянии. В этом случае команда

# mdadm /dev/md1 -r /dev/sdb2

беспокоит, поскольку /dev/md1массив в порядке.

В этом случае команда

# mdadm --manage /dev/md1 --fail /dev/sdb2

сначала необходимо выполнить, чтобы перевести RAID в [U_]состояние.

Назначение встречи с поддержкой для обмена неисправного диска

Чтобы иметь возможность обменять неисправный диск, необходимо заранее договориться о встрече со службой поддержки. Сервер нужно будет на короткое время отключить от сети.

Используйте раздел запросов на поддержку в Robot, чтобы связаться с техническими специалистами.

Подготовка нового диска

Оба диска в массиве должны иметь одинаковые разделы. В зависимости от типа используемой таблицы разделов ( MBRили GPT) должны использоваться соответствующие утилиты для копирования таблицы разделов. Таблица разделов GPT обычно используется в дисках емкостью более 2 ТБ (например, жесткие диски объемом 3 ТБ в EX4и EX6)

Резервное копирование MBR / GPT

Перед копированием MBR / GPT на новый диск необходимо создать резервную копию. Таким образом, если во время копирования что-то пойдет не так, оригинал все равно можно будет восстановить.

Резервное копирование с MBR

sfdisk --dump /dev/sda > sda_parttable_mbr.bak
sfdisk --dump /dev/sdb > sdb_parttable_mbr.bak
sfdisk --dump /dev/sdX > sdX_parttable_mbr.bak

Восстановить с MBR

sfdisk /dev/sda < sda_parttable_mbr.bak
sfdisk /dev/sdb < sdb_parttable_mbr.bak
sfdisk /dev/sdX < sdX_parttable_mbr.bak

Резервное копирование с помощью GPT

sgdisk --backup=sda_parttable_gpt.bak /dev/sda
sgdisk --backup=sdb_parttable_gpt.bak /dev/sdb
sgdisk --backup=sdX_parttable_gpt.bak /dev/sdX

Восстановить с помощью GPT

sgdisk --load-backup=sda_parttable_gpt.bak /dev/sda
sgdisk --load-backup=sdb_parttable_gpt.bak /dev/sdb
sgdisk --load-backup=sdX_parttable_gpt.bak /dev/sdX

Диски с GPT

На диске хранится несколько избыточных копий таблицы разделов GUID (GPT) , поэтому для редактирования таблицы необходимо использовать инструменты, которые поддерживают GPT, например, partedили GPT fdisksgdiskИнструмент из GPT FDISK (предварительно установленные при использовании системы аварийно ) может быть использован для копирования таблицы разделов на новый диск. Вот пример копирования таблицы разделов из sda в sdb:

sgdisk --backup=sda_parttable_gpt.bak /dev/sda
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sdb

Затем диску нужно назначить новый случайный номер UUID:

sgdisk -G /dev/sdb

После этого диск можно добавить в массив. В качестве последнего шага необходимо установить загрузчик.

Festplatten mit MBR

Таблицу разделов можно просто скопировать на новый диск, используя sfdisk:

# sfdisk -d /dev/sda | sfdisk /dev/sdb

где /dev/sda— исходный диск, а /dev/sdb— целевой диск.

(Необязательно): Если разделы не обнаруживаются системой, то таблица разделов должна быть перечитана из ядра:

# sfdisk -R /dev/sdb

Естественно, что перегородки также могут быть созданы вручную с помощью fdiskcfdiskили другими инструментами. Перегородки должны быть Linux raid autodetect (ID fd)типами.

E Интеграция нового привода

После удаления неисправного диска и установки нового его необходимо интегрировать в массив RAID. Это нужно сделать для каждого раздела.

# mdadm /dev/md0 -a /dev/sdb1
# mdadm /dev/md1 -a /dev/sdb2
# mdadm /dev/md2 -a /dev/sdb3
# mdadm /dev/md3 -a /dev/sdb4

Новый диск теперь является частью массива и будет синхронизирован. В зависимости от размера разделов эта процедура может занять некоторое время. Статус синхронизации можно наблюдать с помощью cat /proc/mdstat.

# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdb4[1] sda4[0]
      1028096 blocks [2/2] [UU]
      [==========>..........]  resync =  50.0% (514048/1028096) finish=97.3min speed=65787K/sec

md2 : active raid1 sdb3[1] sda3[0]
      208768 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
      2104448 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
      208768 blocks [2/2] [UU]

unused devices: <none>

Установка загрузчика

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

grub-mkdevicemap -n

Если вы делаете этот ремонт в загруженной системе, то для GRUB2 достаточно запустить grub-installна новом диске. Например:

grub-install /dev/sdb

В Grub1 ( grub-legacy) в зависимости от того, какой диск неисправен, может потребоваться больше шагов.

  • Запустите консоль GRUB: grub
  • Укажите раздел, где /bootнаходится:root (hd0,1) (/dev/sda2 = (hd0,1))
  • Установите загрузчик в MBR: setup (hd0)
  • Также для установки загрузчика на второй диск:
    • Подключите второй диск как hd0mappen:device (hd0) /dev/sdb
    • Точно повторите шаги 2 и 3 ( не меняйте команды! )
  • Выйдите из консоли GRUB: quit
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> device (hd0) /dev/sdb
device (hd0) /dev/sdb
grub> root (hd0,1)
root (hd0,1)
 Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  26 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+26 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
#

Для ремонта через Rescue System необходимо сначала смонтировать установленную систему . Все шаги по установке GRUB должны быть выполнены после chroot.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *