Данная статья является вольным переводом статьи + свои соображения и дополнения
Введение.
Вы поставили систему, но со временем у вас появился ещё один жётский диск и вы хотите сделать mirror посредством zpool: не просто зеркальный диск, а ещё и полноценный загрузочный (с grub’om на борту)
Тестовый стенд: Solaris Express 11/11.1, диски: c4t0d0s0 (старый), c4t1d0s0 (новый)
Solaris 11.1
Тут разработчики упростили до невозможности: просто выполните
#zpool attach -f rpool c4t0d0s0 c4t1d0s0
и получаете уже загрузочный второй диск автоматически. Это связано с тем, что в версии 11.1 перешли на EFI (GPT).
Если вдруг загрузчик не установился на второй диск, то вручную это можно сделать так:
– если пул на дисках (то есть в пуле диски представлены как c4t0d0, c4t1d0):
# bootadm install-bootloader c4t1d0s1
– если пул на слайсах (то есть в пуле диски представлены как c4t0d0s0, c4t1d0s0):
# bootadm install-bootloader c4t1d0s0
Solaris 11
1) Форматирование диска
Запускаем команду
# format
и на запрос, выбираем НОВЫЙ диск. Далее выбираем fdisk и убиваем все существующие разделы (если они есть). Если диск пустой оно предложит создать раздел Solaris. Создадим слайс, который полностью заполнит диск (100%), тип Solaris2 и не забудем сделать диск активным. После этого у нас должна получиться такая картина:
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 4094 4094 100
Далее нажимаем 6 (Save and exit) и выходим quit.
2) Копирование таблицы разделов.
Теперь копируем таблицу разделов со старого на новый
# prtvtoc /dev/rdsk/c4t0d0s2 | fmthard -s - /dev/rdsk/c4t1d0s2
Обратите внимание, что в первой команде СТАРЫЙ диск, а во второй – НОВЫЙ. А так же на то, что имена дисков оканчиваются на s2.
Для самопроверки, можно посмотреть таблицу разделов каждого диска отдельно и “на глаз” сравнить:
# prtvtoc /dev/rdsk/c4t0d0s2 * /dev/rdsk/c4t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 63 sectors/track * 255 tracks/cylinder * 16065 sectors/cylinder * 30400 cylinders * 30398 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 16065 488327805 488343869 2 5 01 0 488376000 488375999 8 1 01 0 16065 16064
3) Добавление диска в пул.
Теперь добавляем новый диск в пул:
#zpool attach -f rpool c4t0d0s0 c4t1d0s0
После этого идёт перестройка рейда. Дождитесь перестройки рейда и только тогда переходите к следующему пункту.
4) Установка загрузчика.
Для того, что бы можно было загрузится с диска, в его mbr’e должен быть записан код загрузчика. Выполним команду (для нового диска):
#installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c4t1d0s0
Обратите внимание на отсутствие в конце s2
5) Завершение.
После того, как пул перестроится, мы увидим такую картину:
# zpool status pool: rpool state: ONLINE scan: resilvered 21.1G in 0h3m with 0 errors on Fri Dec 2 15:17:55 2011 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c4t0d0s0 ONLINE 0 0 0 c4t1d0s0 ONLINE 0 0 0 errors: No known data errors