Guia de administração do ZFS Oracle Solaris

Gerenciando dispositivos em pools de armazenamento do ZFS

Grande parte das informações básicas relacionadas a dispositivos é tratada em Componentes de um pool de armazenamento do ZFS. Depois da criação de um conjunto, é possível efetuar várias tarefas para gerenciar os dispositivos físicos dentro do conjunto.

Adicionando dispositivos a um pool de armazenamento

É possível adicionar espaço de disco dinamicamente a um conjunto ao adicionar um novo dispositivo virtual de nível superior. Este espaço de disco fica disponível imediatamente a todos os conjuntos de dados no conjunto. Para adicionar um novo dispositivo virtual a um pool, use o comando zpool add. Por exemplo:


# zpool add zeepool mirror c2t1d0 c2t2d0

O formato para especificar os dispositivos virtuais é o mesmo para o comando zpool create. Os dispositivos são verificados para determinar se estão em uso e o comando não pode alterar o nível de redundância sem a opção -f. O comando também suporta a opção -n para que seja possível realizar uma simulação. Por exemplo:


# zpool add -n zeepool mirror c3t1d0 c3t2d0
would update 'zeepool' to the following configuration:
      zeepool
        mirror
            c1t0d0
            c1t1d0
        mirror
            c2t1d0
            c2t2d0
        mirror
            c3t1d0
            c3t2d0

Esta sintaxe de comando pode adicionar dispositivos espelhados c3t1d0 e c3t2d0 à configuração existente do conjunto zeepool.

Para obter mais informações sobre como é realizada a validação de dispositivos virtuais, consulte Detectando dispositivos em uso.


Exemplo 4–1 Adicionando discos a uma configuração espelhada do ZFS

No exemplo a seguir, outro espelho é adicionado à uma configuração espelhada do ZFS em um sistema do Oracle Sun Fire x4500.


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors
# zpool add tank mirror c0t3d0 c1t3d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

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

errors: No known data errors


Exemplo 4–2 Adicionando discos a uma configuração RAID-Z

Da mesma forma, os discos extras podem ser adicionados a uma configuração RAID-Z. O exemplo a seguir mostra como converter um conjunto de armazenamento com um dispositivo RAID-Z que contém três discos em um conjunto de armazenamento com dois dispositivos RAID-Z que contém três discos cada.


# zpool status rzpool
  pool: rzpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rzpool      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0

errors: No known data errors
# zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0
# zpool status rzpool
  pool: rzpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rzpool      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
          raidz1-1  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
            c2t4d0  ONLINE       0     0     0

errors: No known data errors


Exemplo 4–3 Adicionando e removendo um dispositivo de log espelhado

O exemplo abaixo mostra como adicionar um dispositivo de log espelhado a um conjunto de armazenamento espelhado.Para obter mais informações sobre a utilização de dispositivos de log no conjunto de armazenamento, consulte Configurando dispositivos de log do ZFS separados.


# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0

errors: No known data errors
# zpool add newpool log mirror c0t6d0 c0t7d0
# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0
        logs
          mirror-1  ONLINE       0     0     0
            c0t6d0  ONLINE       0     0     0
            c0t7d0  ONLINE       0     0     0

errors: No known data errors

Você pode anexar um dispositivo de registro em um dispositivo existente de registro para criar um dispositivo de registro espelhado. Essa operação é idêntica à anexação de um dispositivo em um pool de armazenamento não-espelhado.

Dispositivos de log podem ser removidos utilizando o comando zpool remove. O dispositivo de log espelhado no exemplo anterior pode ser removido ao especificar o argumento mirror-1. Por exemplo:


# zpool remove newpool mirror-1
# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0

errors: No known data errors

Se a configuração do conjunto contém apenas um dispositivo de log, é recomendado remover o dispositivo de log ao especificar o nome do dispositivo. Por exemplo:


# zpool status pool
  pool: pool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c0t8d0  ONLINE       0     0     0
            c0t9d0  ONLINE       0     0     0
        logs
          c0t10d0   ONLINE       0     0     0

errors: No known data errors
# zpool remove pool c0t10d0


Exemplo 4–4 Adicionando e removendo dispositivos de cache

É possível adicionar ao seu conjunto de armazenamento ZFS e removê-los se não forem mais necessários.

Use o comando zpool add para adicionar dispositivos de cache. Por exemplo:


# zpool add tank cache c2t5d0 c2t8d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
        cache
          c2t5d0    ONLINE       0     0     0
          c2t8d0    ONLINE       0     0     0

errors: No known data errors

Os dispositivos de cache não podem ser espalhados ou fazer parte de uma configuração RAID-Z.

Use o comando zpool remove para remover dispositivos de cache. Por exemplo:


# zpool remove tank c2t5d0 c2t8d0
# zpool status tank
 pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0

errors: No known data errors

Atualmente, o comando zpool remove suporta apenas remover reservas, dispositivos de log e de cache. Os dispositivos fazem parte da configuração de pool espelhado principal e podem ser removidos usando o comando zpool detach. Dispositivos não-redundantes e RAID-Z não podem ser removidos de um conjunto.

Para obter mais informações sobre como utilizar dispositivos de cache em um conjunto de armazenamento ZFS, consulte Criando um conjunto de armazenamento do ZFS com dispositivos de cache.


Anexando e desanexando dispositivos em um pool de armazenamento

Além do comando zpool add, é possível utilizar o comando zpool attach para adicionar um novo dispositivo a um dispositivo existente espelhado ou não espelhado.

Se estiver anexando um disco para criar um conjunto raiz espelhado, consulte Como criar um conjunto raiz espelhado (pós-instalação).

Se for substituir um disco em um conjunto raiz ZFS, consulte Como substituir um disco no pool raiz ZFS.


Exemplo 4–5 Convertendo um pool de armazenamento espelhado bidirecional em um pool de armazenamento espalhado tridirecional

Neste exemplo, zeepool é um espelho bidirecional existente que é transformado em um espelho tridirecional ao anexar c2t1d0, o novo dispositivo, ao dispositivo existente c1t1d0.


# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0

errors: No known data errors
# zpool attach zeepool c1t1d0 c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 12:59:20 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0  592K resilvered

errors: No known data errors

Se o dispositivo existente é parte de um espelho bidirecional, a anexação do novo dispositivo criará um espelho quadridirecional, e assim por diante. Em qualquer caso, o novo dispositivo começa a realizar resilvering imediatamente.



Exemplo 4–6 Convertendo um conjunto de armazenamento não redundante do ZFS em um conjunto de armazenamento espelhado do ZFS

Além disso, é possível converter um conjunto de armazenamento não redundante em um conjunto de armazenamento redundante utilizando o comando zpool attach. Por exemplo:


# zpool create tank c0t1d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c0t1d0    ONLINE       0     0     0

errors: No known data errors
# zpool attach tank c0t1d0 c1t1d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 14:28:23 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0  73.5K resilvered

errors: No known data errors

O comando zpool detach pode ser usado para desanexar um dispositivo de um pool de armazenamento espelhado. Por exemplo:


# zpool detach zeepool c2t1d0

Entretanto, esta operação falha se nenhuma outra réplica válida dos dados existir. Por exemplo:


# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs

Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado

Um conjunto de armazenamento ZFS espelhado pode ser clonado rapidamente como um conjunto de backup ao utilizar o comando zpool split.

Atualmente, este recurso não pode ser utilizado para dividir um conjunto raiz de espelhado.

É possível utilizar o comando zpool split para desanexar discos de um conjunto de armazenamento ZFS espelhado para criar um novo conjunto com um dos discos desanexados. O novo conjunto possuirá conteúdo idêntico ao conjunto original de armazenamento ZFS espelhado.

Por padrão, uma operação zpool split em um conjunto espelhado desanexa o último disco do conjunto recém criado. Depois da operação de separação, importe o novo conjunto. Por exemplo:


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors
# zpool split tank tank2
# zpool import tank2
# zpool status tank tank2
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c1t0d0    ONLINE       0     0     0

errors: No known data errors

  pool: tank2
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank2       ONLINE       0     0     0
          c1t2d0    ONLINE       0     0     0

errors: No known data errors

É possível identificar qual disco deve ser utilizado para o conjunto recém criado ao especificá-lo com o comando zpool split. Por exemplo:


# zpool split tank tank2 c1t0d0

Antes que a real operação de divisão ocorra, os dados na memória são descarregados para os discos espelhados. Depois que os dados são esvaziados, o disco é desanexado do conjunto e atribuído a um novo GUID de conjunto. O novo GUID de conjunto é gerado para que o conjunto possa ser importado no mesmo sistema no qual foi dividido.

Se o conjunto a ser dividido possui pontos de montagem não padrões e o novo conjunto é criado no mesmo sistema, então é necessário utilizar a opção zpool split -R para identificar um diretório raiz alternativo para o novo conjunto para que qualquer ponto de montagem existente não entre em conflito. Por exemplo:


# zpool split -R /tank2 tank tank2

Se não utilizar a opção zpool split -R e for possível visualizar que os pontos de montagem entram em conflito quando tentam importar o novo conjunto, importe o novo conjunto com a opção -R. Se o novo conjunto é criado em um sistema diferente, então especificar um diretório raiz alternativo não deve ser necessário a não ser que ocorra um conflito no ponto de montagem.

Revise as considerações a seguir antes de utilizar o recurso zpool split:


Exemplo 4–7 Dividindo um conjunto ZFS espelhado

No exemplo a seguir, um conjunto de armazenamento espelhado chamado trinity, com três discos, c1t0d0, c1t2d0 e c1t3d0, é dividido. Os dois conjuntos resultantes são os conjuntos espelhados trinity, com discos c1t0d0 e c1t2d0, e o novo conjunto, neo, com disco c1t3d0. Cada conjunto possui conteúdo idêntico.


# zpool status trinity
  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

errors: No known data errors
# zpool split trinity neo
# zpool import neo
# zpool status trinity neo
  pool: neo
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        neo         ONLINE       0     0     0
          c1t3d0    ONLINE       0     0     0

errors: No known data errors

  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors

Colocando dispositivos off-line e on-line em um pool de armazenamento

O ZFS permite que dispositivos sejam colocados off-line ou on-line. Quando o hardware não é confiável ou não funciona corretamente, o ZFS continua a ler ou gravar dados no dispositivo, pressupondo que a condição é apenas temporária. Se a condição não for temporária, é possível instruir o ZFS a ignorar o dispositivo colocando-o off-line. O ZFS não envia solicitações a um dispositivo off-line.


Observação –

Não é necessário colocar os dispositivos off-line para substituí-los.


É possível utilizar o comando zpool offline quando for necessário desconectar o armazenamento temporariamente. Por exemplo, se for necessário desconectar fisicamente uma matriz de um conjunto de switches Fibre Channel e conectar a matriz a um conjunto diferente, é possível utilizar os LUNs da matriz que foram utilizados nos conjuntos de armazenamento do ZFS. Depois da matriz ser reconectada e estar operacional no novo conjunto de switches, é possível colocar os mesmos LUNs on-line. Os dados que foram adicionados aos conjuntos de armazenamento enquanto os LUNs estavam off-line podem sofrer resilvering nos LUNs depois de serem colocados on-line.

Esta situação é possível, pressupondo que os sistemas em questão reconhecem o armazenamento depois de serem anexados aos novos switches, possivelmente através de controladores diferentes, e os conjuntos são configurados como configurações RAID-Z ou espelhados.

Colocando um dispositivo off-line

É possível colocar um dispositivo off-line com o uso do comando zpool offline. Se o dispositivo for um disco, ele pode ser especificado pelo caminho ou por um nome abreviado. Por exemplo:


# zpool offline tank c1t0d0
bringing device c1t0d0 offline

Considere os pontos a seguir ao tornar um dispositivo off-line:

Os dispositivos off-line aparecem no estado OFF-LINE quando é consultado o estado do conjunto. Para obter informações sobre consultas de status do pool, consulte Consultando status de pool de armazenamento do ZFS.

Para obter mais informações sobre a integridade de dispositivos, consulte Determinando o status de integridade de pools de armazenamento do ZFS.

Colocando um dispositivo on-line

Depois de colocar um dispositivo off-line, ele pode ser colocado novamente on-line com a utilização do comando zpool online. Por exemplo:


# zpool online tank c1t0d0
bringing device c1t0d0 online

Quando um dispositivo é colocado on-line, quaisquer dados que tenham sido gravados no conjunto são sincronizados novamente com o dispositivo recém disponível. Observe que não é possível utilizar dispositivos on-line para substituir um disco. Se ao colocar um dispositivo off-line, substituir o dispositivo e colocá-lo on-line, ele permanece no estado de falho.

Se tentar colocar um dispositivo falho on-line, será exibida uma mensagem semelhante à seguinte:


# zpool online tank c1t0d0
warning: device 'c1t0d0' onlined, but remains in faulted state
use 'zpool replace' to replace devices that are no longer present

Também pode ser possível visualizar a mensagem de disco falho exibida no console ou escrita no arquivo /var/adm/messages. Por exemplo:


SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010
PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8
DESC: A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3 for more information.
AUTO-RESPONSE: No automated response will occur.
IMPACT: Fault tolerance of the pool may be compromised.
REC-ACTION: Run 'zpool status -x' and replace the bad device.

Para obter mais informações sobre a substituição de um dispositivo falho, consulte Reparando um dispositivo faltando.

É possível utilizar o comando zpool online -e para expandir um LUN. Por padrão, um LUN que é adicionado a um conjunto não é expandido ao seu tamanho total a não ser que a propriedade do conjunto autoexpand esteja ativada. É possível expandir o LUN automaticamente ao utilizar o comando zpool online -e, mesmo se o comando LUN já estiver on-line ou se o LUN estiver atualmente off-line. Por exemplo:


# zpool online -e tank c1t13d0

Limpando erros de dispositivo de conjunto de armazenamento

Se um dispositivo for colocado off-line devido a uma falha que cause erros a serem listados na saída zpool status, você poderá limpar as contagens de erro com o comando zpool clear.

Se especificado sem argumentos, este comando limpará todos os erros de dispositivos dentro do pool. Por exemplo:


# zpool clear tank

Se um ou mais dispositivos forem especificados, este comando limpará somente erros associados aos dispositivos especificados. Por exemplo:


# zpool clear tank c1t0d0

Para obter mais informações sobre a limpeza de erros de zpool, consulte Apagando erros transitórios.

Substituindo dispositivos em um pool de armazenamento

É possível substituir um dispositivo em um pool de armazenamento usando o comando zpool replace.

Se estiver substituindo fisicamente um dispositivo por outro dispositivo na mesma localização em um conjunto redundante, então só é preciso identificar o dispositivo substituído. O ZFS reconhece que o dispositivo é um disco diferente no mesmo local em alguns hardwares. Por exemplo, para substituir um disco falho (c1t1d0) ao remover o disco e substituindo-o na mesma localização, utilize a sintaxe semelhante à seguinte:


# zpool replace tank c1t1d0

Se estiver substituindo um dispositivo em um conjunto de armazenamento com um disco em uma localização física diferente, é necessário especificar ambos dispositivos. Por exemplo:


# zpool replace tank c1t1d0 c1t2d0

Se for substituir um disco no pool raiz ZFS, consulte Como substituir um disco no pool raiz ZFS.

A seguir, as etapas básicas para substituir um disco:

Em alguns sistemas, como o Sun Fire x4500, é necessário desconfigurar o disco antes de colocá-lo off-line. Se estiver substituindo um disco na mesma posição de slot neste sistema, então é possível apenas executar o comando zpool replace como descrito no primeiro exemplo nesta seção.

Para um exemplo de substituição de um disco em um sistema Sun Fire X4500, consulte Exemplo 11–1.

Considere o seguinte ao substituir dispositivos em um conjunto de armazenamento ZFS:

Para obter mais informações sobre a substituição de dispositivos, consulte Reparando um dispositivo faltando e Substituindo ou reparando um dispositivo modificado.

Designando sobressalentes no pool de armazenamento

O recurso de sobressalentes permite identificar os discos que poderiam ser usados para substituir um dispositivo falho ou defeituoso em um ou mais pontos de armazenamento. A atribuição de um dispositivo como reserva significa que o dispositivo não é um dispositivo ativo em um conjunto, mas se um dispositivo ativo no conjunto falhar, o reserva substituirá automaticamente o dispositivo falho.

Os dispositivos podem ser designados como sobressalentes nas seguintes situações:

Os exemplos a seguir mostram atribuir dispositivos como reservas quando o conjunto é criado:


# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0
# zpool status trinity
  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
        spares
          c1t2d0    AVAIL   
          c2t2d0    AVAIL   

errors: No known data errors

O exemplo a seguir mostra como atribuir reservas ao adicioná-los a um conjunto depois que o conjunto é criado:


# zpool add neo spare c5t3d0 c6t3d0
# zpool status neo
  pool: neo
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        neo         ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c3t3d0  ONLINE       0     0     0
            c4t3d0  ONLINE       0     0     0
        spares
          c5t3d0    AVAIL   
          c6t3d0    AVAIL   

errors: No known data errors

Os sobressalentes podem ser removidos de um pool de armazenamento com o uso do comando zpool remove. Por exemplo:


# zpool remove zeepool c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
        spares
          c1t3d0    AVAIL   

errors: No known data errors

Um reserva não pode ser removido se estiver sendo utilizado atualmente por um conjunto de armazenamento.

Considere o seguinte quando estiver utilizando reservas ZFS:

Ativando e desativando sobressalentes no pool de armazenamento

Os sobressalentes são ativados das seguintes maneiras:

Substitua manualmente um dispositivo com um reserva utilizando o comando zpool replace. Consulte Exemplo 4–8.

Um dispositivo falho é substituído automaticamente quando um sobressalente está disponível. Por exemplo:


# zpool status -x
  pool: zeepool
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   DEGRADED     0     0     0
              c2t1d0  UNAVAIL      0     0     0  cannot open
              c2t3d0  ONLINE       0     0     0  88.5K resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

Atualmente, é possível desativar um reserva das seguintes maneiras:


Exemplo 4–8 Substituindo manualmente um disco com um reserva

Neste exemplo, o comando zpool replace é utilizado para substituir o disco c2t1d0 com o reserva c2t3d0.


# zpool replace zeepool c2t1d0 c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   ONLINE       0     0     0
              c2t1d0  ONLINE       0     0     0
              c2t3d0  ONLINE       0     0     0  90K resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

Então, desanexe o disco c2t1d0.


# zpool detach zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  90K resilvered

errors: No known data errors


Exemplo 4–9 Desanexando um reserva depois que o disco falho é substituído

Neste exemplo, o disco falho (c2t1d0) é substituído fisicamente e o ZFS é notificado ao utilizar o comando zpool replace.


# zpool replace zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   ONLINE       0     0     0
              c2t3d0  ONLINE       0     0     0  90K resilvered
              c2t1d0  ONLINE       0     0     0
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

Então, é possível utilizar o comando zpool detach para retornar o reserva para o grupo disponível. Por exemplo:


# zpool detach zeepool c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010
config:

        NAME               STATE     READ WRITE CKSUM
        zeepool            ONLINE       0     0     0
          mirror           ONLINE       0     0     0
            c1t2d0         ONLINE       0     0     0
            c2t1d0         ONLINE       0     0     0
        spares
          c2t3d0           AVAIL

errors: No known data errors


Exemplo 4–10 Desanexando um disco falho e utilizando o reserva

Se deseja substituir um disco falho ao permutar temporariamente ou permanentemente em um reserva que está atualmente substituindo-o, então desanexe o disco original (falho). Se o disco falho é substituído eventualmente, então é possível adicioná-lo de volta ao conjunto de armazenamento como um sobressalente. Por exemplo:


# zpool status zeepool
  pool: zeepool
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   DEGRADED     0     0     0
              c2t1d0  UNAVAIL      0     0     0  cannot open
              c2t3d0  ONLINE       0     0     0  70.5M resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors
# zpool detach zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  70.5M resilvered

errors: No known data errors
(Original failed disk c2t1d0 is physically replaced)
# zpool add zeepool spare c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  70.5M resilvered
        spares
          c2t1d0    AVAIL   

errors: No known data errors