Интересная попалась задача – заменить в сервере на Legacy (не UEFI) BIOS пару обычных (до 2 Tb) дисков на два 3 Tb.
Диски работали в софтовом рейде, что, значительно облегчает задачу, вроде как. Вот только непонятно, что делать с тем, что во время последовательной замены дисков необходимо переехать с MBR на GPT. Все получилось, но есть особенности.
Например, не все старые контроллеры и Legacy биосы в принципе видят 2+ Tb диски. Например, в моем случае в LSI 1068 он виделся только как 2 Tb. В набортном обычном SATA виделись почти все 3 Tb. Далее последовательность действий:
- Заранее проверяем, что parted, gdisk и прочее установлено
- Заменяем второй диск
- Подглядываем в http://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array
- Временно ставим MBR на второй большой диск
- parted /dev/sdX
- mklabel msdos
- quit
- Клонируем разделы с основного диска
- sfdisk -d /dev/sdY | sfdisk /dev/sdX
- Проверяем в fdisk, что все совпало
- Конвертируем в GPT
- gdisk /dev/sdX
- w
- То есть просто выход, никаких особых команд не надо, конвертация происходит автоматически
- Создаем еще один раздел в gdisk (не обязательно в начале, мой был под номером 3), ставим ему код EF02 (магия), размер якобы от 1 Мб, я создал 100 Мб на всякий случай 🙂
- По инструкции из пункта 3 добавляем разделы со второго диска в MD разделы
- Ждем синхронизации, можно ускорить выполнив
- echo 500000 > /proc/sys/dev/raid/speed_limit_min
- Устанавливаем grub-install /dev/sdX
- Выставляем в биосе загрузку с нового диска и отключаем старый
- Возможно, пингвиньи боги сжалились и ОС загрузилась
- Мне не повезло :), появлется grub rescue, который не видит массива
- Грузимся в ubuntu rescue, доходим до выбора корня, автоматом оно его не найдет, открываем по alt-F2 консольку
- cat /proc/mdstat показывает, что /dev/mdXXX inactive и вообще все плохо
- Пересобираем массив
- mdadm –stop /dev/mdXXX
- mdadm –assemble –force /dev/md0 /dev/sdaX
- Пробуем его примонтировать куда ни будь, посмотреть, что там, если все ОК – umount
- exit – возвращаемся в ubuntu rescue, выбираем корнем /dev/md0
- Тут же выбираем пункт resintall grub
- Запускаем шелл с корнем в md0, я на всякий случай проверил, что mduuid (виден по mdadm –detail) и uuid /dev/md0 (виден по blkid) совпадают с теми, что прописаны в /boot/grub/grub.cfg и /etc/fstab
- Выходим из rescue, ребутимся, все хорошо, ОС запускается с первого диска
- Клонируем GPT таблицу
- sgdisk -R/dev/target /dev/source (главное не перепутать source с destination)
- По инструкции из пункта 3 добавляем разделы в md
- Скорее всего надо обновить в /etc/fstab uuid для swap разделов
- grub-install на новый диск
- После окончательного синка перезагружаемся, проверяем, что диски в массиве, свопы на месте, для особо дотошных, можно загрузиться со второго диска для проверки
- Осваиваем новое полученное место