Перейти к основному содержимому

Заменить диск в RAID

Последнее изменение:
  1. Удалите диск из массива.
  2. Определите схему разметки диска.
  3. Скопируйте разметку на новый диск.
  4. Добавьте диск в RAID-массив.
  5. Установите загрузчик.

1. Удалить диск из массива

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Выведите информацию о разметке дисков в 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.
  3. Выведите информацию о разделах на дисках:

    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.
  4. Пометьте диск, который нужно заменить, как неисправный:

    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.
  5. Удалите диск, который на шаге 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. Определить схему разметки диска

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Установите утилиту для работы с таблицей разделов GPT (GUID Partition Table) на дисках — gdisk:

    apt-get install gdisk -y
  3. Выведите информацию о разделах на дисках:

    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 — имя нового диска.
  4. Определите схему разметки дисков:

    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.

осторожно

При копировании разметки важно в правильном порядке указать диски в команде. Если порядок дисков будет указан неверно, то исправный диск будет перезаписан, а данные удалены. Данные нельзя будет восстановить.

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Выведите информацию о разделах на дисках:

    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 — имя нового диска.
  3. Скопируйте разметку на новый диск. В команде важно указать диски в правильном порядке, иначе разметка и данные на изначально исправном диске будут уничтожены.

    sgdisk -R /dev/<new_disk> /dev/<source_disk>

    Укажите:

    • <new_disk> — имя нового диска, на который копируется разметка, вы получили его на шаге 2, в примере это sdb;
    • <source_disk> — имя диска с рабочими RAID-разделами, с которого копируется разметка, вы получили его на шаге 2, в примере это sda.
  4. Присвойте новому диску случайный UUID:

    sgdisk -G /dev/<new_disk>

    Укажите <new_disk> — имя нового диска, на который копировалась разметка, вы получили его на шаге 2, в примере это sdb.

  5. Убедитесь, что разметка на дисках полностью совпадает:

    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-массив

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Выведите информацию о разделах на дисках:

    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-массив.
  3. Добавьте разделы нового диска в 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.

  4. Дождитесь завершения синхронизации.

  5. Убедитесь, что новый диск добавлен в 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.

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Выведите информацию о разделах на дисках:

    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 — имя нового диска.
  3. Установите загрузчик GRUB:

    grub-install /dev/<new_disk>

    Укажите <new_disk> — имя нового диска, которое вы получили на шаге 2, в примере это sdb.