Ignorar Links de Navegao | |
Sair do Modo de Exibio de Impresso | |
Guia de administração do ZFS Oracle Solaris |
1. Sistema de arquivos Oracle Solaris ZFS (introdução)
2. Introdução ao ZFS do Oracle Solaris
3. Diferenças entre o sistema de arquivos tradicional e o ZFS do Oracle Solaris
4. Gerenciando conjuntos de armazenamento ZFS do Oracle Solaris
Componentes de um pool de armazenamento do ZFS
Usando discos em um pool de armazenamento do ZFS
Usando faixas em um pool de armazenamento do ZFS
Usando arquivos em um pool de armazenamento do ZFS
Recursos de replicação de um pool de armazenamento do ZFS
Configuração de pool de armazenamento espelhado
Configuração de pool de armazenamento RAID-Z
Pool armazenamento híbrido do ZFS
Dados de autocorreção em uma configuração redundante
Distribuição dinâmica em um pool de armazenamento
Criando e destruindo pools de armazenamento do ZFS
Criando um pool de armazenamento do ZFS
Criando um pool de armazenamento básico
Criando um pool de armazenamento espelhado
Criando um conjunto de armazenamento RAID-Z
Criando um conjunto de armazenamento do ZFS com dispositivos de log
Criando um conjunto de armazenamento do ZFS com dispositivos de cache
Exibindo informações do dispositivo virtual do pool de armazenamento
Manipulando erros de criação do pool de armazenamento do ZFS
Detectando dispositivos em uso
Níveis de replicação inconsistentes
Simulando uma criação de pool de armazenamento
Ponto de montagem padrão para pools de armazenamento
Destruindo pools de armazenamento do ZFS
Destruindo um pool com dispositivos falhos
Gerenciando dispositivos em pools de armazenamento do ZFS
Adicionando dispositivos a um pool de armazenamento
Anexando e desanexando dispositivos em um pool de armazenamento
Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado
Colocando dispositivos off-line e on-line em um pool de armazenamento
Colocando um dispositivo off-line
Colocando um dispositivo on-line
Limpando erros de dispositivo de conjunto de armazenamento
Substituindo dispositivos em um pool de armazenamento
Designando sobressalentes no pool de armazenamento
Ativando e desativando sobressalentes no pool de armazenamento
Gerenciando propriedades do pool de armazenamento do ZFS
Consultando status de pool de armazenamento do ZFS
Exibindo informações sobre os conjuntos de armazenamento ZFS
Listando informações sobre todos os conjuntos de armazenamento ou de um conjunto específico
Listando estatísticas específicas de pool de armazenamento
Script de saída de pool de armazenamento do ZFS
Exibindo o histórico de comandos do pool de armazenamento ZFS
Visualizando estatísticas E/S para conjuntos de armazenamento ZFS
Listando estatísticas E/S amplas de conjunto
Listando estatísticas E/S do dispositivo virtual
Determinando o status de integridade de pools de armazenamento do ZFS
Status básico de integridade do pool de armazenamento
Status de integridade detalhado
Reunindo informações do status do pool de armazenamento do ZFS
Migrando pools de armazenamento do ZFS
Preparando para migração do pool de armazenamento do ZFS
Exportando um pool de armazenamento do ZFS
Determinando pools de armazenamento disponíveis para importação
Importando conjuntos de armazenamento ZFS de diretórios alternativos
Importando pools de armazenamento do ZFS
Importação de um pool com um dispositivo de log ausente
Importação de um pool no modo somente leitura
Importação de um pool por um caminho de dispositivo específico
Recuperando pools de armazenamento destruídos do ZFS
Atualizando pools de armazenamento do ZFS
5. Instalando e inicializando um sistema de arquivos raiz ZFS do Oracle Solaris
6. Gerenciando sistemas de arquivos ZFS do Oracle Solaris
7. Trabalhando com instantâneos e clones do ZFS do Oracle Solaris
8. Uso de ACLs e atributos para proteger arquivos ZFS do Oracle Solaris
9. Administração delegada do ZFS do Oracle Solaris
10. Tópicos avançados do ZFS do Oracle Solaris
11. Solução de problemas e conjunto de recuperação do Oracle Solaris 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.
Anexando e desanexando dispositivos em um pool de armazenamento
Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado
Colocando dispositivos off-line e on-line em 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 a seguir mostra como adicionar um dispositivo de log espelhado a um pool de armazenamento espelhado.Para obter mais informações sobre a utilização de dispositivos de log no pool 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
É possível anexar um dispositivo de log a um dispositivo de log existente para criar um dispositivo de log espelhado. Essa operação é idêntica à anexação de um dispositivo em um pool de armazenamento não espelhado.
É possível remover dispositivos de log usando 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 pool contiver apenas um dispositivo de log, remova o dispositivo de log especificando 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.
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 migrar um pool raiz ZFS 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
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 um ou mais discos de um pool de armazenamento ZFS espelhado para criar um novo pool com o disco ou 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. Após a operação de divisão, importe o novo pool. 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 pool a ser dividido possuir pontos de montagem não padrões e o novo conjunto é criado no mesmo sistema, você deverá utilizar a opção zpool split -R para identificar um diretório raiz alternativo para o novo pool 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 pool for criado em um sistema diferente, então não será necessário especificar um diretório raiz alternativo, 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:
Este recurso não está disponível para configurações RAIDZ ou conjunto não redundante de vários discos.
Operações de aplicativo e dados devem ser pausados antes de tentar uma operação zpool split.
Tendo em discos essa honra que, ao invés de ignorar, o comando de cache de gravação de esvaziamento do disco é importante.
Um conjunto não pode ser dividido se o resilvering estiver sendo processado.
Dividir um pool espelhado é o ideal quando o pool contém dois ou três discos, onde o último disco no conjunto original é utilizado para o conjunto recém-criado. Então, é possível utilizar o comando zpool attach para recriar o pool de armazenamento original espelhado ou converter o conjunto recém-criado em um pool de armazenamento espelhado. Não existe nenhum método atualmente de criar um pool espelhado novo de um pool espelhado existente ao utilizar este recurso.
Se o conjunto existente é um espelho tridirecional, então o novo conjunto conterá um disco depois da operação de divisão. Se o conjunto existente é um espelho bidirecional, então o resultado é de dois conjuntos não redundantes de dois discos. Você deverá anexar dois discos adicionais para converter os conjuntos não redundantes para conjuntos espelhados.
Uma boa maneira de manter os dados redundantes durante uma operação de divisão é dividir um pool de armazenamento espelhado que contém três discos para que o conjunto original contenha dois discos espelhados depois da operação de divisão.
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
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 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:
Não é possível colocar um pool off-line no momento em que se torna falho. Por exemplo, não é possível colocar off-line dois dispositivos de uma configuração raidz1, nem colocar off-line um dispositivo virtual de nível superior.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas
Por padrão, o estado OFF-LINEé persistente. O dispositivo permanece off-line quando o sistema é reiniciado.
Para colocar um dispositivo temporariamente off-line, use a opção zpool offline -t. Por exemplo:
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline
Quando o sistema é reiniciado, este dispositivo volta automaticamente ao estado ONLINE.
Quando um dispositivo é colocado off-line, ele não é desanexado do pool de armazenamento. Se tentar utilizar o dispositivo colocado off-line em outro conjunto, mesmo depois de o conjunto original ter sido destruído, será exibida uma mensagem semelhante à seguinte:
device is part of exported or potentially active ZFS pool. Please see zpool(1M)
Se desejar utilizar o dispositivo off-line em outro conjunto de armazenamento depois de ter destruído o conjunto de armazenamento original, primeiro coloque o dispositivo online, e então destrua o conjunto de armazenamento original.
Outra forma de utilizar um dispositivo de outro conjunto de armazenamento, enquanto mantém o conjunto de armazenamento original, é substituindo o dispositivo existente no conjunto de armazenamento original por outro dispositivo semelhante. Para obter informações sobre a substituição de dispositivos, consulte Substituindo dispositivos em um pool de armazenamento.
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.
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.
Você pode usar o comando zpool online -e para expandir o tamanho do pool se um disco maior foi conectado ao pool ou se um disco menor foi substituído por um disco maior. Por padrão, um disco que é adicionado a um conjunto não é expandido ao seu tamanho total a não ser que a propriedade do pool autoexpand esteja ativada. É possível expandir automaticamente o pool utilizando o comando zpool online - e, mesmo se o disco de substituição já estiver on-line ou se o disco estiver atualmente off-line. Por exemplo:
# zpool online -e tank c1t13d0
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.
É 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. Em alguns hardwares, o ZFS reconhece que o dispositivo é um disco diferente no mesmo local. 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 pool de armazenamento por um disco em uma localização física diferente, você deverá especificar ambos os 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:
Coloque o disco off-line, se necessário, com o comando zpool offline.
Remova o disco que será substituído.
Insira o disco de substituição.
Execute o comando zpool replace. Por exemplo:
# zpool replace tank c1t1d0
Coloque o disco on-line outra vez com o comando zpool online.
Em alguns sistemas, como o Sun Fire da Oracle, é 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:
Se a propriedade autoreplace do conjunto for definida como on, qualquer dispositivo novo encontrado na mesma localização física que um dispositivo que antes pertencia ao conjunto será automaticamente formatado e substituído. Não é necessário utilizar o comando zpool replace quando esta propriedade estiver ativada. Este recurso pode não estar disponível em todos os hardwares.
O tamanho do dispositivo de substituição deve ser igual ou maior que o menor disco em um uma configuração espelhada ou RAID-Z.
Quando um dispositivo de substituição com tamanho maior que o dispositivo que está substituindo é adicionado ao pool, ele não é expandido automaticamente para seu tamanho total. A propriedade do pool autoexpand determina se o pool é expandido quando um disco maior é adicionado ao pool. Por padrão, a propriedade autoexpand é desativada. É possível ativar esta propriedade ao expandir o tamanho do pol antes ou depois de adicionar o maior disco ao pool.
No exemplo a seguir, dois discos de 16 GB em um conjunto espelhado são substituídos por dois discos de 72 GB. A propriedade autoexpand é ativada após as substituições do disco para expandir os tamanho completo do disco.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE -
Substituir muitos discos em um conjunto grande é demorado devido ao resilvering de dados nos novos discos. Além disso, deve ser considerada a execução do comando zpool scrub entre as substituições de disco para garantir que os dispositivos de substituição estejam operacionais e que os dados estejam sendo gravados corretamente.
Se um disco defeituoso foi substituído automaticamente por um sobressalente, pode ser necessário desanexar o sobressalente depois que o disco defeituoso for substituído. Você pode usar o comando zpool detach para desanexar um extra em um pool espelhado ou RAID-Z. Para obter mais informações sobre a desanexação de um sobressalente, consulte Ativando e desativando sobressalentes no pool de armazenamento.
Para obter mais informações sobre a substituição de dispositivos, consulte Reparando um dispositivo faltando e Substituindo ou reparando um dispositivo modificado.
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:
Quando o conjunto é criado com o comando zpool create.
Após o pool ser criado com o comando zpool add.
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:
Atualmente, o comando zpool remove pode ser utilizado apenas para remover reservas, dispositivos de cache e log.
Para adicionar um disco como um reserva, o reserva deve ter tamanho igual ou maior ao tamanho do maior disco no conjunto. É permitido adicionar um disco menor como um sobressalente de um pool. Entretanto, quando o sobressalente menor é ativado, automaticamente ou com o comando zpool replace, a operação falha com um erro semelhante ao seguinte:
cannot replace disk3 with disk4: device is too small
Os sobressalentes são ativados das seguintes maneiras:
Substituição manual: substitui um dispositivo falho em um conjunto de armazenamento por um reserva utilizando o comando zpool replace.
Substituição automática: quando a falha é detectada, um agente FMA examina o conjunto para verificar se existem reservas disponíveis. Se existirem, ele substituirá o dispositivo falho por um sobressalente disponível.
Se um reserva atualmente em uso falha, o agente desanexa tal sobressalente, cancelando assim a substituição. O agente tenta, então, substituir o dispositivo por outro sobressalente, se houver um disponível. Este recurso é atualmente limitado pelo fato de o mecanismo de diagnóstico do ZFS emitir falhas somente quando um dispositivo desaparece do sistema.
Se substituir fisicamente um dispositivo falho por um sobressalente ativo, é possível reativar o dispositivo original, utilizando o comando zpool detach para desanexar o sobressalente. Se definir a propriedade autoreplace do conjunto como on, o sobressalente é desanexado e devolvido automaticamente para o grupo disponível quando o novo dispositivo for inserido e a operação on-line terminar.
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:
Ao remover o reserva do conjunto de armazenamento.
Ao desanexar um reserva depois que o disco falho é substituído fisicamente. Consulte Exemplo 4-9.
Ao permutar temporariamente ou permanentemente o reserva. Consulte Exemplo 4-10.
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