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

Замена устройства в пуле устройств хранения данных ZFS

После определения заменяемого устройства выполните команду zpool replace для замены устройства. Для замены поврежденного устройства другим устройством используется следующая команда:


# zpool replace tank c1t1d0 c2t0d0

Эта команда инициирует переход данных в новое устройство из поврежденного устройства или других устройств пула, если для него используется конфигурация с избыточностью. По завершении выполнения команды поврежденное устройство отключается от конфигурации, после чего может быть удалено из системы. Если устройство уже было удалено и заменено новым устройством в том же местоположении, используется форма команды для одного устройства. Пример:


# zpool replace tank c1t1d0

Эта команда выполняет надлежащее форматирование неформатированного диска и инициирует перенос актуальных данных из оставшейся конфигурации.

Для получения дополнительной информации о команде zpool replace см. Замена устройств в пуле устройств хранения данных.


Пример 11–1 Замена устройства в пуле устройств хранения данных ZFS

В следующем примере показано, как заменить устройство (c1t3d0) в зеркальном пуле устройств хранения данных tank в системе Sun Fire x4500. Если необходимо заменить диск c1t3d0 на новый диск в том же расположении (c1t3d0), необходимо исключить диск из конфигурации перед попыткой его замены. в.


# zpool offline tank c1t3d0
# cfgadm | grep c1t3d0
sata1/3::dsk/c1t3d0            disk         connected    configured   ok
# cfgadm -c unconfigure sata1/3
Unconfigure the device at: /devices/pci@0,0/pci1022,7458@2/pci11ab,11ab@1:3
This operation will suspend activity on the SATA device
Continue (yes/no)? yes
# cfgadm | grep sata1/3
sata1/3                        disk         connected    unconfigured ok
<Replace the physical disk c1t3d0>
# cfgadm -c configure sata1/3
# cfgadm | grep sata3/7
sata3/7::dsk/c5t7d0            disk         connected    configured   ok
# zpool online tank c1t3d0
# zpool replace tank c1t3d0
# zpool status
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:44:46 2008
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

errors: No known data errors

Следует помнить, что предыдущая команда zpool output может показывать как новые, так и старые диски под заголовком replacing. Пример:


replacing     DEGRADED     0     0    0
  c1t3d0s0/o  FAULTED      0     0    0
  c1t3d0      ONLINE       0     0    0

Этот текст означает, что выполняется процесс замены, и актуальные данные переносятся на новый диск.

Если диск c1t3d0) заменяется на другой диск (c4t3d0), то после физической замены диска необходимо только выполнить команду zpool replace. Пример:


# zpool replace tank c1t3d0 c4t3d0
# zpool status
  pool: tank
 state: DEGRADED
 scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:54:50 2008
config:

        NAME           STATE     READ WRITE CKSUM
        tank           DEGRADED     0     0     0
          mirror       ONLINE       0     0     0
            c0t1d0     ONLINE       0     0     0
            c1t1d0     ONLINE       0     0     0
          mirror       ONLINE       0     0     0
            c0t2d0     ONLINE       0     0     0
            c1t2d0     ONLINE       0     0     0
          mirror       DEGRADED     0     0     0
            c0t3d0     ONLINE       0     0     0
            replacing  DEGRADED     0     0     0
              c1t3d0   OFFLINE      0     0     0
              c4t3d0   ONLINE       0     0     0

errors: No known data errors

Для завершения процесса замены диска может потребоваться выполнить команду zpool status несколько раз.


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:54:50 2008
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c4t3d0  ONLINE       0     0     0


Пример 11–2 Замена отказавшего устройства протоколирования

В примере ниже представлено восстановление устройства протоколирования c0t5d0 после сбоя в пуле устройств хранения pool. Требуются следующие основные действия.


# zpool status -x
  pool: pool
 state: FAULTED
status: One or more of the intent logs could not be read.
        Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
        or ignore the intent log records by running 'zpool clear'.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        FAULTED      0     0     0 bad intent log
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
        logs        FAULTED      0     0     0 bad intent log
          c0t5d0    UNAVAIL      0     0     0 cannot open
<Physically replace the failed log device>
# zpool online pool c0t5d0
# zpool clear pool