В следующих разделах описано выполнение следующих задач:
Повторное создание корневого пула ZFS и восстановление снимков корневого пула
Откат предыдущих снимков корневого пула при загрузке в безопасном режиме
Замена диска в корневом пуле может потребоваться в следующих случаях:
Размер корневого пула недостаточен, и его необходимо заменить диском большего размера.
Возник отказ диска корневого пула. Если отказ диска приводит к невозможности загрузки системы, загрузку перед заменой диска корневого пула придется выполнять с других носителей, например с компакт-диска или из сети.
Определите пути к загрузочным устройствам для имеющегося и нового диска, чтобы протестировать загрузку с диска, подготовленного для замены, а также для загрузки вручную с имеющегося диска, что может потребоваться в случае отказа нового диска. В примере, приведенном ниже, текущий диск корневого пула (c1t10d0s0), имеет следующий путь:
/pci@8,700000/pci@3/scsi@5/sd@a,0 |
В примере, приведенном ниже, загрузочный диск, подготовленный для замены (c4t0d0s0), имеет следующий путь:
/pci@8,700000/pci@3/scsi@5/sd@9,0 |
Подключите требуемые кабели к диску, подготовленному для замены.
Убедитесь, что новый диск имеет метку SMI и подраздел 0.
См. информацию об изменении метки диска, предназначенного для корневого пула на следующей странице:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
Подключите новый диск к корневому пулу.
Пример:
# zpool attach rpool c1t10d0s0 c4t0d0s0 |
Подтвердите состояние корневого пула.
Пример:
# zpool status rpool pool: rpool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress, 25.47% done, 0h4m to go config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t5d0s0 ONLINE 0 0 0 errors: No known data errors |
После завершения переноса актуальных данных к новому диску следует применить загрузочные блоки.
Пример:
Система на основе SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t5d0s0 |
Система на основе x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t5d0s0 |
Убедитесь в возможности загрузки с нового диска.
Пример для системы на основе SPARC:
ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0 |
Если систему удается загрузить с нового диска, старый можно отсоединить.
Пример:
# zpool detach rpool c1t0d0s0 |
Настройка автоматической загрузки системы с нового диска выполняется либо командой eeprom, либо командой setenv из загрузочного ППЗУ SPARC, либо перенастройкой ПЗУ ПК.
Создание снимков корневого пула в целях восстановления. Рекомендуемый способ создания снимков корневого пула заключается в создании рекурсивного снимка корневого пула.
Описанная ниже процедура позволяет создать рекурсивный снимок корневого пула и сохранить его в виде файла в пуле удаленной системы. В случае сбоя корневого пула удаленный набор данных можно смонтировать с помощью NFS, после чего получить файл снимка в восстановленный пул. Кроме того, снимки корневого пула можно сохранить в качестве текущих в пуле удаленной системы. Отправка снимков для удаленной системы и получение их является несколько более сложным, так как необходимо выполнить настройку ssh или использовать rsh, загрузив подлежащую восстановлению систему из миникорня ОС Solaris.
Информация об удаленном сохранении и восстановлении снимков корневого пула и наиболее актуальные сведения о восстановлении корневога пула представлена на следующей странице:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
Оценка хранящихся удаленно снимков в качестве файлов или собственно снимков является важным этапом при восстановлении корневого пула или во время других операций; восстановление снимков должно производиться на обычной основе, например, при изменении конфигурации пула или при обновлении ОС Solaris.
В приведенном ниже примере выполняется загрузка системы из среды загрузки zfs1009BE.
Освобождение дискового пространства на удаленной системе для хранения снимков.
Пример:
remote# zfs create rpool/snaps |
Совместное использование дискового пространства с локальной системой.
Пример:
remote# zfs set sharenfs='rw=local-system,root=local-system' rpool/snaps # share -@rpool/snaps /rpool/snaps sec=sys,rw=local-system,root=local-system "" |
Создание рекурсивного снимка корневого пула.
local# zfs snapshot -r rpool@0804 local# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfs1009BE 4.67G 60.8G 4.67G / rpool/ROOT/zfs1009BE@0804 386K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Перешлите снимки корневого пула на удаленную систему.
Пример:
local# zfs send -Rv rpool@0804 > /net/remote-system/rpool/snaps/rpool.0804 sending from @ to rpool@0804 sending from @ to rpool/swap@0804 sending from @ to rpool/ROOT@0804 sending from @ to rpool/ROOT/zfs1009BE@0804 sending from @ to rpool/dump@0804 |
В рамках этого сценария предположим, что действуют следующие условия:
восстановление корневого пула ZFS невозможно;
снимки корневого пула ZFS хранятся на удаленной системе и подготовлены для совместного использования посредством NFS.
Все действия, приведенные ниже, выполняются на локальной системе.
Загрузка с компакт-диска/диска DVD или сети.
В системе на основе SPARC выберите один из следующих методов загрузки:
ok boot net -s ok boot cdrom -s |
Если не используется параметр -s, из программы установки придется выйти.
В системах на основе x86 укажите параметр для загрузки с диска DVD или из сети. После этого выйдите из программы установкию
Смонтируйте набор данных с удаленным снимком.
Пример:
# mount -F nfs remote-system:/rpool/snaps /mnt |
Если сетевые службы не настроены, может потребоваться указать IP-адрес удаленной системы.
Если диск с корневым пулом заменен, и на нем отсутствует метка диска, пригодная для использования файловой системой ZFS, метку диска придется изменить.
Дополнительные сведения об изменении метки диска приведены на следующем сайте:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
Воссоздайте корневой пул.
Пример:
# zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /etc/zfs/zpool.cache rpool c1t1d0s0 |
Восстановление снимков корневого пула
Это действие может занять некоторое время. Пример:
# cat /mnt/rpool.0804 | zfs receive -Fdu rpool |
Убедитесь в том, что наборы данных корневого пула восстановлены.
Пример:
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /a/rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /legacy rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfs1009BE 4.67G 60.8G 4.67G /a rpool/ROOT/zfs1009BE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Настройте свойство bootfs в среде загрузки корневого пула.
Пример:
# zpool set bootfs=rpool/ROOT/zfs1009BE rpool |
Установите загрузочные блоки на новый диск.
Система на основе SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t5d0s0 |
Система на основе x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t5d0s0 |
Перезагрузите систему.
# init 6 |
Для выполнения этой процедуры должны быть доступны существующие снимки корневого пула. В этом примере снимки корневого пула расположены на локальной системе. Пример:
# zfs snapshot -r rpool@0804 # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfs1009BE 4.67G 60.8G 4.67G / rpool/ROOT/zfs1009BE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
Завершите работу системы и выполните загрузку в безопасном режиме.
ok boot -F failsafe Multiple OS instances were found. To check and mount one of them read-write under /a, select it from the following list. To not mount any, select 'q'. 1 /dev/dsk/c1t1d0s0 Solaris 10 10/09 s10s_u8wos_04 SPARC 2 rpool:11306141908645873833 ROOT/zfs10092BE Please select a device to be mounted (q for none) [?,??,q]: 2 mounting rpool on /a Starting shell. |
Выполните откат отдельных снимков корневого пула.
# zfs rollback -rf rpool@0804 # zfs rollback -rf rpool/ROOT@0804 # zfs rollback -rf rpool/ROOT/zfs1009BE@0804 |
Выполните перезагрузку обратно в многопользовательский режим.
# init 6 |