Инструменты пользователя

Инструменты сайта


wiki:technical:ds:change_hdd_softraid1

Как заменить HDD в программном RAID1

Получение информации о состоянии массивов

В командной строке выполняем:

# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
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: 

О том, что массивы в порядке, указывает наличии двух букв U в квадратных кавычках в строчках для каждого массива — [UU]. Если массив поврежден, буква U меняется на _. В данном случае: [U_] — поврежден диск /dev/sdb.

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

Перед установкой нового HDD необходимо удалить из массива поврежденный диск. Для этого выполняем следующую последовательность команд:

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

Бывают ситуации, когда не все программные RAID-массивы повреждены:

# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md3 : active raid1 sda4[0] sdb4[1](F)
      1822442815 blocks super 1.2 [2/1] [UU]

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

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: 

В таком случае не удастся удалить рабочий раздел из массива. Необходимо сначала пометить его как сбойный:

# mdadm /dev/md2 -f /dev/sdb3
# mdadm /dev/md3 -f /dev/sdb4

# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
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: 

а затем удалить:

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

После этого можем производить замену HDD.

Добавление нового диска в RAID1

Оба диска в массиве должны иметь абсолютно одинаковое разбиение. В зависимости от используемого типа таблицы разделов (MBR или GPT) необходимо использовать соответствующие утилиты для копирования таблицы разделов.

Определение типа таблицы разделов

Узнать тип таблицы разделов можно с помощью утилиты gdisk. Например, в случае с GPT мы получим:

# gdisk -l /dev/sda
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

И в случае с MBR мы получим:

# gdisk -l /dev/sda
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

Копирование таблицы разделов на новый диск

Для жесткого диска с MBR используем утилиту sfdisk:

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

где:

  • /dev/sda — диск источник
  • /dev/sdb — диск назначения

Для жесткого диска с GPT используем утилиту sgdisk:

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

где:

  • /dev/sda — диск источник
  • /dev/sdb — диск назначения
  • sgdisk -G /dev/sdb - назначает новому жесткому диску случайный UUID

Добавление размеченного диска в массивы

Выполняем последовательность команд:

# 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
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: 

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

Если в системе используется загрузчик GRUB2 и если сервер не загружен с LiveCD (режимы rescue, recovery), достаточно выполнить следующие команды (при этом нет необходимости дожидаться окончания процесса синхронизации):

# grub-install /dev/sdb
# update-grub

Если сервер загружен с LiveCD (режимы rescue, recovery) установка загрузчика выглядит следующим образом:

  1. Монтируем корневую файловую систему в /mnt:
    # mount /dev/md2 /mnt
  2. Монтируем /boot:
    # mount /dev/md0 /mnt/boot
  3. Монтируем /dev, /proc и /sys:
    # mount --bind /dev /mnt/dev
    # mount --bind /proc /mnt/proc
    # mount --bind /sys  /mnt/sys
  4. Делаем chroot в примонтированную систему:
    # chroot /mnt
  5. Устанавливаем grub на sdb:
    # grub-install /dev/sdb
    # update-grub

Теперь можно загрузится в нормальный режим.

wiki/technical/ds/change_hdd_softraid1.txt · Последние изменения: 2017/04/07 19:51 (внешнее изменение)