====== Как заменить 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) установка загрузчика выглядит следующим образом: - Монтируем корневую файловую систему в /mnt: # mount /dev/md2 /mnt - Монтируем /boot: # mount /dev/md0 /mnt/boot - Монтируем /dev, /proc и /sys: # mount --bind /dev /mnt/dev # mount --bind /proc /mnt/proc # mount --bind /sys /mnt/sys - Делаем chroot в примонтированную систему: # chroot /mnt - Устанавливаем grub на sdb: # grub-install /dev/sdb # update-grub Теперь можно загрузится в нормальный режим.