Mdadm Gpt 3Tb Non-UEFI

Интересная попалась задача – заменить в сервере на Legacy (не UEFI) BIOS пару обычных (до 2 Tb) дисков на два 3 Tb.

Диски работали в софтовом рейде, что, значительно облегчает задачу, вроде как. Вот только непонятно, что делать с тем, что во время последовательной замены дисков необходимо переехать с MBR на GPT. Все получилось, но есть особенности.

Например, не все старые контроллеры и Legacy биосы в принципе видят 2+ Tb диски. Например, в моем случае в LSI 1068 он виделся только как 2 Tb. В набортном обычном SATA виделись почти все 3 Tb. Далее последовательность действий:

  1. Заранее проверяем, что parted, gdisk и прочее установлено
  2. Заменяем второй диск
  3. Подглядываем в http://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array
  4. Временно ставим MBR на второй большой диск
    1. parted /dev/sdX
    2. mklabel msdos
    3. quit
  5. Клонируем разделы с основного диска
    1. sfdisk -d /dev/sdY | sfdisk /dev/sdX
    2. Проверяем в fdisk, что все совпало
  6. Конвертируем в GPT
    1. gdisk /dev/sdX
    2. w
    3. То есть просто выход, никаких особых команд не надо, конвертация происходит автоматически
  7. Создаем еще один раздел в gdisk (не обязательно в начале, мой был под номером 3), ставим ему код EF02 (магия), размер якобы от 1 Мб, я создал 100 Мб на всякий случай 🙂
  8. По инструкции из пункта 3 добавляем разделы со второго диска в MD разделы
  9. Ждем синхронизации, можно ускорить выполнив
    1. echo 500000 > /proc/sys/dev/raid/speed_limit_min
  10. Устанавливаем grub-install /dev/sdX
  11. Выставляем в биосе загрузку с нового диска и отключаем старый
  12. Возможно, пингвиньи боги сжалились и ОС загрузилась
  13. Мне не повезло :), появлется grub rescue, который не видит массива
  14. Грузимся в ubuntu rescue, доходим до выбора корня, автоматом оно его не найдет, открываем по alt-F2 консольку
  15. cat /proc/mdstat показывает, что /dev/mdXXX inactive и вообще все плохо
  16. Пересобираем массив
    1. mdadm –stop /dev/mdXXX
    2. mdadm –assemble –force /dev/md0 /dev/sdaX
    3. Пробуем его примонтировать куда ни будь, посмотреть, что там, если все ОК – umount
  17. exit – возвращаемся в ubuntu rescue, выбираем корнем /dev/md0
  18. Тут же выбираем пункт resintall grub
  19. Запускаем шелл с корнем в md0, я на всякий случай проверил, что mduuid (виден по mdadm –detail) и uuid /dev/md0 (виден по blkid) совпадают с теми, что прописаны в /boot/grub/grub.cfg и /etc/fstab
  20. Выходим из rescue, ребутимся, все хорошо, ОС запускается с первого диска
  21. Клонируем GPT таблицу
    1. sgdisk -R/dev/target /dev/source (главное не перепутать source с destination)
  22. По инструкции из пункта 3 добавляем разделы в md
  23. Скорее всего надо обновить в /etc/fstab uuid для swap разделов
  24. grub-install на новый диск
  25. После окончательного синка перезагружаемся, проверяем, что диски в массиве, свопы на месте, для особо дотошных, можно загрузиться со второго диска для проверки
  26. Осваиваем новое полученное место

Оставить комментарий