Руководство по администрированию файловых систем ZFS Solaris

Восстановление корневого пула ZFS или снимков корневого пула

В следующих разделах описано выполнение следующих задач:

ProcedureЗамена диска в корневом пуле ZFS

Замена диска в корневом пуле может потребоваться в следующих случаях:

Определите пути к загрузочным устройствам для имеющегося и нового диска, чтобы протестировать загрузку с диска, подготовленного для замены, а также для загрузки вручную с имеющегося диска, что может потребоваться в случае отказа нового диска. В примере, приведенном ниже, текущий диск корневого пула (c1t10d0s0), имеет следующий путь:


/pci@8,700000/pci@3/scsi@5/sd@a,0

В примере, приведенном ниже, загрузочный диск, подготовленный для замены (c4t0d0s0), имеет следующий путь:


/pci@8,700000/pci@3/scsi@5/sd@9,0
  1. Подключите требуемые кабели к диску, подготовленному для замены.

  2. Убедитесь, что новый диск имеет метку SMI и подраздел 0.

    См. информацию об изменении метки диска, предназначенного для корневого пула на следующей странице:

    http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  3. Подключите новый диск к корневому пулу.

    Пример:


    # zpool attach rpool c1t10d0s0 c4t0d0s0
    
  4. Подтвердите состояние корневого пула.

    Пример:


    # 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
  5. После завершения переноса актуальных данных к новому диску следует применить загрузочные блоки.

    Пример:

    Система на основе 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
    
  6. Убедитесь в возможности загрузки с нового диска.

    Пример для системы на основе SPARC:


    ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0
    
  7. Если систему удается загрузить с нового диска, старый можно отсоединить.

    Пример:


    # zpool detach rpool c1t0d0s0
    
  8. Настройка автоматической загрузки системы с нового диска выполняется либо командой eeprom, либо командой setenv из загрузочного ППЗУ SPARC, либо перенастройкой ПЗУ ПК.

Procedure Создание снимков корневого пула

Создание снимков корневого пула в целях восстановления. Рекомендуемый способ создания снимков корневого пула заключается в создании рекурсивного снимка корневого пула.

Описанная ниже процедура позволяет создать рекурсивный снимок корневого пула и сохранить его в виде файла в пуле удаленной системы. В случае сбоя корневого пула удаленный набор данных можно смонтировать с помощью NFS, после чего получить файл снимка в восстановленный пул. Кроме того, снимки корневого пула можно сохранить в качестве текущих в пуле удаленной системы. Отправка снимков для удаленной системы и получение их является несколько более сложным, так как необходимо выполнить настройку ssh или использовать rsh, загрузив подлежащую восстановлению систему из миникорня ОС Solaris.

Информация об удаленном сохранении и восстановлении снимков корневого пула и наиболее актуальные сведения о восстановлении корневога пула представлена на следующей странице:

http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

Оценка хранящихся удаленно снимков в качестве файлов или собственно снимков является важным этапом при восстановлении корневого пула или во время других операций; восстановление снимков должно производиться на обычной основе, например, при изменении конфигурации пула или при обновлении ОС Solaris.

В приведенном ниже примере выполняется загрузка системы из среды загрузки zfs1009BE.

  1. Освобождение дискового пространства на удаленной системе для хранения снимков.

    Пример:


    remote# zfs create rpool/snaps
    
  2. Совместное использование дискового пространства с локальной системой.

    Пример:


    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   "" 
  3. Создание рекурсивного снимка корневого пула.


    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  -
  4. Перешлите снимки корневого пула на удаленную систему.

    Пример:


    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

Procedure Повторное создание корневого пула ZFS и восстановление снимков корневого пула

В рамках этого сценария предположим, что действуют следующие условия:

Все действия, приведенные ниже, выполняются на локальной системе.

  1. Загрузка с компакт-диска/диска DVD или сети.

    В системе на основе SPARC выберите один из следующих методов загрузки:


    ok boot net -s
    ok boot cdrom -s
    

    Если не используется параметр -s, из программы установки придется выйти.

    В системах на основе x86 укажите параметр для загрузки с диска DVD или из сети. После этого выйдите из программы установкию

  2. Смонтируйте набор данных с удаленным снимком.

    Пример:


    # mount -F nfs remote-system:/rpool/snaps /mnt
    

    Если сетевые службы не настроены, может потребоваться указать IP-адрес удаленной системы.

  3. Если диск с корневым пулом заменен, и на нем отсутствует метка диска, пригодная для использования файловой системой ZFS, метку диска придется изменить.

    Дополнительные сведения об изменении метки диска приведены на следующем сайте:

    http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  4. Воссоздайте корневой пул.

    Пример:


    # zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
    /etc/zfs/zpool.cache rpool c1t1d0s0
    
  5. Восстановление снимков корневого пула

    Это действие может занять некоторое время. Пример:


    # cat /mnt/rpool.0804 | zfs receive -Fdu rpool
    
  6. Убедитесь в том, что наборы данных корневого пула восстановлены.

    Пример:


    # 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  -
  7. Настройте свойство bootfs в среде загрузки корневого пула.

    Пример:


    # zpool set bootfs=rpool/ROOT/zfs1009BE rpool
    
  8. Установите загрузочные блоки на новый диск.

    Система на основе 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
    
  9. Перезагрузите систему.


    # init 6
    

Procedure Откат предыдущих снимков корневого пула при загрузке в безопасном режиме

Для выполнения этой процедуры должны быть доступны существующие снимки корневого пула. В этом примере снимки корневого пула расположены на локальной системе. Пример:


# 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  -
  1. Завершите работу системы и выполните загрузку в безопасном режиме.


    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.
  2. Выполните откат отдельных снимков корневого пула.


    # zfs rollback -rf rpool@0804
    # zfs rollback -rf rpool/ROOT@0804
    # zfs rollback -rf rpool/ROOT/zfs1009BE@0804
    
  3. Выполните перезагрузку обратно в многопользовательский режим.


    # init 6