Данная статья является вольным переводом статьи + свои соображения и дополнения
Введение.
Вы поставили систему, но со временем у вас появился ещё один жётский диск и вы хотите сделать 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