Ignorar Links de Navegao | |
Sair do Modo de Exibio de Impresso | |
![]() |
Guia de administração do Oracle Solaris ZFS Oracle Solaris 10 1/13 Information Library (Português (Brasil)) |
1. Sistema de arquivos do Oracle Solaris ZFS (introdução)
2. Introdução ao ZFS do Oracle Solaris
3. Gerenciando pools de armazenamento do Oracle Solaris ZFS
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
Considerações para Pools 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 Pools de Armazenamento do ZFS
Criando um pool de armazenamento básico
Criando um pool de armazenamento espelhado
Criando um pool de armazenamento RAID-Z
Criando um pool de armazenamento do ZFS com dispositivos de log
Criando um pool de armazenamento do ZFS com dispositivos de cache
Cuidados para a Criação de Pools de Armazenamento
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 indisponíveis
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 pool ao dividir um pool de armazenamento espelhado do ZFS
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 do pool de armazenamento
Substituindo dispositivos em um pool de armazenamento
Designando discos de reserva com reposição em funcionamento no pool de armazenamento
Ativando e desativando discos de reserva com reposição em funcionamento 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 pools de armazenamento do ZFS
Exibindo informações sobre todos os pools de armazenamento ou de um pool específico
Exibindo 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 de E/S para pools de armazenamento do ZFS
Listando estatísticas de E/S em todo o pool
Listando estatísticas de 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 pools 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
4. Instalando e inicializando um sistema de arquivos raiz do Oracle Solaris ZFS
5. Gerenciando sistemas de arquivos ZFS do Oracle Solaris
6. Trabalhando com instantâneos e clones do Oracle Solaris ZFS
7. Uso de ACLs e atributos para proteger arquivos do Oracle Solaris ZFS
8. Administração delegada do ZFS do Oracle Solaris
9. Tópicos avançados do Oracle Solaris ZFS
10. Solução de problemas e recuperação de pools do Oracle Solaris ZFS
11. Práticas Recomendadas 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 pool, é possível efetuar várias tarefas para gerenciar os dispositivos físicos dentro do pool.
Anexando e desanexando dispositivos em um pool de armazenamento
Criando um novo pool ao dividir um pool de armazenamento espelhado do ZFS
Colocando dispositivos off-line e on-line em um pool de armazenamento
Designando discos de reserva com reposição em funcionamento no pool de armazenamento
É possível adicionar espaço de disco dinamicamente a um pool 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 pool zeepool.
Para obter mais informações sobre como é realizada a validação de dispositivos virtuais, consulte Detectando dispositivos em uso.
Exemplo 3-1 Adicionando discos a uma configuração espelhada do ZFS
No exemplo anterior, outro espelho é adicionado a uma configuração existente do ZFS espelhado.
# 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 3-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 pool de armazenamento com um dispositivo RAID-Z que contém três discos em um pool 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 3-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.
# 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 3-4 Adicionando e removendo dispositivos de cache
É possível adicionar dispositivos de cache ao pool de armazenamento do 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 espelhados 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 discos de reserva com reposição em funcionamento, dispositivos de log e dispositivos 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 pool.
Para obter mais informações sobre como utilizar dispositivos de cache em um pool de armazenamento ZFS, consulte Criando um pool 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 pool raiz espelhado, consulte Como migrar um pool raiz espelhado do ZFS (pós-instalação).
Se você estiver substituindo um disco em um pool raiz do ZFS, consulte Recuperando o pool raiz ZFS ou instantâneos do pool raiz.
Exemplo 3-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 3-6 Convertendo um pool de armazenamento não redundante do ZFS em um pool de armazenamento espelhado do ZFS
Além disso, é possível converter um pool de armazenamento não redundante em um pool 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 pool de armazenamento espelhado do ZFS pode ser rapidamente clonado como um pool de backup com o comando zpool split. Você pode usar esse recurso para dividir um pool raiz espelhado, mas o pool que é dividido não é inicializável até que você execute algumas etapas adicionais.
É 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 pool possuirá conteúdo idêntico ao pool original de armazenamento espelhado do ZFS.
Por padrão, uma operação zpool split em um pool espelhado desanexa o último disco do pool 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 pool 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 pool e atribuído a um novo GUID de pool. O novo GUID de pool é gerado para que o pool possa ser importado no mesmo sistema no qual foi dividido.
Se o pool a ser dividido possuir pontos de montagem não padrões no sistema de arquivos e o novo pool for 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 pool, importe o novo pool 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 RAID-Z ou pool não redundante de vários discos.
Operações de aplicativo e dados devem ser pausados antes de tentar uma operação zpool split.
Um pool não pode ser dividido se o processo de 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 pool original é utilizado para o pool recém-criado. Assim, é possível utilizar o comando zpool attach para recriar o pool de armazenamento original espelhado ou converter o pool recém-criado em um pool de armazenamento espelhado. No momento não existe um método para criar um pool espelhado novo a partir de um pool espelhado existente em uma operação zpool split, pois o novo pool (divisão) é não redundante
Se o pool existente for um espelho tridirecional, o novo pool conterá um disco depois da operação de divisão. Se o pool existente for um espelho bidirecional, o resultado será de dois pools não redundantes de dois discos. Você deverá anexar dois discos adicionais para converter os pools não redundantes em pools 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 pool original contenha dois discos espelhados depois da operação de divisão.
Confirme se o seu hardware está configurado corretamente antes de dividir um pool espelhado. Para obter informações relacionadas sobre a confirmação do cache do hardware, consulte Práticas Gerais do Sistema.
Exemplo 3-7 Dividindo um pool espelhado do ZFS
No exemplo a seguir, um pool de armazenamento espelhado denominado mothership com três discos é dividido. Os dois pools resultantes são o pool espelhado mothership, com dois discos, e o novo pool, luna , com um disco. Cada pool possui conteúdo idêntico.
O pool luna pode ser importado em outro sistema para fins de backup. Depois da conclusão do backup, o pool luna pode ser destruído e o disco reanexado a mothership. Em seguida, é possível repetir o processo.
# zpool status mothership pool: mothership state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mothership ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 errors: No known data errors # zpool split mothership luna # zpool import luna # zpool status mothership luna pool: luna state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM luna ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 errors: No known data errors pool: mothership state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mothership ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335BD117d0 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 c0t5000C500335F95E3d0
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 UNAVAIL. 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 c0t5000C500335F95E3d0 cannot offline c0t5000C500335F95E3d0: 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
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 pool, mesmo depois de o pool 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 quiser utilizar o dispositivo off-line em outro pool de armazenamento depois de ter destruído o pool de armazenamento original, primeiro coloque o dispositivo on-line, e então destrua o pool de armazenamento original.
Outra forma de utilizar um dispositivo de outro pool de armazenamento, enquanto mantém o pool de armazenamento original, é substituindo o dispositivo existente no pool 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 pool. 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 c0t5000C500335F95E3d0
Quando um dispositivo é colocado on-line, quaisquer dados que tenham sido gravados no pool são sincronizados novamente com o dispositivo recém disponível. Observe que não é possível colocar dispositivos on-line para substituir um disco. Se ao colocar um dispositivo off-line, substituir o dispositivo e colocá-lo on-line, ele permanecerá no estado UNAVAIL..
Se você tentar colocar um dispositivo UNAVAIL.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 danificado exibida no console ou no arquivo /var/adm/messages. Por exemplo:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 20 11:35:26 MDT 2012 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 danificado, consulte Resolvendo um Dispositivo Ausente ou Removido.
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 pool 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 c0t5000C500335F95E3d0
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 c0t5000C500335F95E3d0
Para obter mais informações sobre a limpeza de erros de zpool, consulte Apagando Erros Transitórios do Dispositivo.
É 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 pool redundante, só será 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 danificado (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 você estiver substituindo um disco no pool de raiz do ZFS, consulte Recuperando o pool raiz ZFS ou instantâneos do pool raiz.
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.
Examine a saída format para determinar se o disco sobressalente está visível.
Além disso, verifique se o ID do dispositivo foi alterado. Se o disco sobressalente tiver um WWN, o ID do dispositivo do disco com falha será alterado.
Informe ao ZFS que o disco foi substituído. Por exemplo:
# zpool replace tank c1t1d0
Se o disco sobressalente tiver um ID de dispositivo diferente do identificado acima, inclua o novo ID do dispositivo.
# zpool replace tank c0t5000C500335FC3E7d0 c0t5000C500335BA8C3d0
Se necessário, coloque o disco on-line outra vez com o comando zpool online.
Notifique o FMA de que o dispositivo foi substituído.
Na saída fmadm faulty, identifique a sequência de caracteres zfs://pool=name/vdev=guid na seção Affects: e especifique essa sequência de caracteres como um argumento para o comando fmadm repaired.
# fmadm faulty # fmadm repaired zfs://pool=name/vdev=guid
Em alguns sistemas com discos SATA, é necessário desconfigurar um 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 obter um exemplo de substituição do disco SATA, consulte o Exemplo 10-1.
Considere o seguinte ao substituir dispositivos em um pool de armazenamento do ZFS:
Se a propriedade autoreplace do pool for definida como on, qualquer dispositivo novo encontrado na mesma localização física que um dispositivo que antes pertencia ao pool 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 estado do pool de armazenamento REMOVED é fornecido quando um dispositivo ou disco de reserva com reposição em funcionamento tiver sido fisicamente removido enquanto o sistema estava em execução. Um disco de reserva com reposição em funcionamento é substituído pelo dispositivo removido, se disponível.
Se um dispositivo for removido e depois inserido, o dispositivo será colocado on-line. Se um disco de reserva com reposição em funcionamento tiver sido ativado quando o dispositivo foi reinserido, o disco de reserva será removido quando a operação on-line for concluída.
Quando os dispositivos são removidos ou inseridos, a detecção automática depende do hardware e pode não ser suportada em todas as plataformas. Por exemplo, os dispositivos USB são configurados automaticamente ao serem inseridos. No entanto, você pode ter que usar o comando cfgadm -c configure para configurar uma unidade SATA.
Os discos de reserva com reposição em funcionamento são verificados periodicamente para garantir que estejam on-line e disponíveis.
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 pool espelhado são substituídos por dois discos de 72 GB. Verifique se o primeiro dispositivo foi completamente polido antes de tentar a substituição do segundo dispositivo. 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 pool grande é demorado devido ao processo de 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 danificado foi substituído automaticamente por um disco de reserva com reposição em funcionamento, poderá ser necessário desanexar o disco de reserva depois que o disco danificado for substituído. Você pode usar o comando zpool detach para desanexar um disco de reserva em um pool espelhado ou RAID-Z. Para obter mais informações sobre a desanexação de um disco de reserva com reposição em funcionamento, consulte Ativando e desativando discos de reserva com reposição em funcionamento no pool de armazenamento.
Para obter mais informações sobre a substituição de dispositivos, consulte Resolvendo um Dispositivo Ausente ou Removido e Substituindo ou reparando um dispositivo modificado.
O recurso de discos de reserva com reposição em funcionamento permite identificar os discos que poderiam ser usados para substituir um dispositivo danificado em um pool de armazenamento. A atribuição de um dispositivo como reserva significa que o dispositivo não é um dispositivo ativo em um pool, mas se um dispositivo ativo no pool falhar, o de reserva substituirá automaticamente o dispositivo danificado.
Os dispositivos podem ser designados como reserva nas seguintes situações:
Quando o pool é criado com o comando zpool create.
Após o pool ser criado com o comando zpool add.
Os seguintes exemplos mostram como atribuir dispositivos como discos de reserva com reposição em funcionamento quando o pool é criado:
# zpool create zeepool mirror c0t5000C500335F95E3d0 c0t5000C500335F907Fd0 mirror c0t5000C500335BD117d0 c0t5000C500335DC60Fd0 spare c0t5000C500335E106Bd0 c0t5000C500335FC3E7d0 # zpool status zeepool pool: zeepool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 spares c0t5000C500335E106Bd0 AVAIL c0t5000C500335FC3E7d0 AVAIL errors: No known data errors
O seguinte exemplo mostra como atribuir discos de reserva com reposição em funcionamento ao adicioná-los a um pool depois que o pool é criado:
# zpool add zeepool spare c0t5000C500335E106Bd0 c0t5000C500335FC3E7d0 # zpool status zeepool pool: zeepool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 spares c0t5000C500335E106Bd0 AVAIL c0t5000C500335FC3E7d0 AVAIL errors: No known data errors
Os discos de reserva com reposição em funcionamento podem ser removidos de um pool de armazenamento com o comando zpool remove. Por exemplo:
# zpool remove zeepool c0t5000C500335FC3E7d0 # zpool status zeepool pool: zeepool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 spares c0t5000C500335E106Bd0 AVAIL errors: No known data errors
Um disco de reserva com reposição em funcionamento não pode ser removido se estiver sendo utilizado atualmente por um pool de armazenamento.
Considere o seguinte quando estiver usando discos de reserva com reposição em funcionamento do ZFS:
Atualmente, o comando zpool remove pode ser utilizado apenas para remover discos de reserva com reposição em funcionamento, dispositivos de cache e dispositivos de log.
Para adicionar um disco como reserva, o disco de reserva deve ter tamanho igual ou maior ao do maior disco no pool. É permitido adicionar um disco menor como um disco de reserva de um pool. No entanto, quando o disco de reserva 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 discos de reserva com reposição em funcionamento são ativados das seguintes maneiras:
Substituição manual: substitui um dispositivo danificado em um pool de armazenamento por um disco de reserva utilizando o comando zpool replace.
Substituição automática: quando a falha é detectada, um agente FMA examina o pool para verificar se existem discos de reserva disponíveis. Se existirem, ele substituirá o dispositivo danificado por um disco de reserva disponível.
Se um disco de reserva atualmente em uso falhar, o agente desanexará esse disco de reserva, cancelando a substituição. Em seguida, o agente tentará substituir o dispositivo por outro disco de reserva, se houver um disponível. Esse recurso é atualmente limitado pelo fato de o mecanismo de diagnóstico do ZFS emitir falhas somente quando um dispositivo desaparece do sistema.
Se você substituir fisicamente um dispositivo danificado por um disco de reserva ativo, poderá reativar o dispositivo original, utilizando o comando zpool detach para desanexar o disco de reserva. Se definir a propriedade autoreplace do pool como on, o disco de reserva será desanexado e devolvido automaticamente para o pool disponível quando o novo dispositivo for inserido e a operação on-line terminar.
Um dispositivo UNAVAIL é substituído automaticamente quando um disco de reserva está disponível. Por exemplo:
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices are unavailable in response to persistent errors. 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 scan: resilvered 3.15G in 0h0m with 0 errors on Mon Nov 12 15:53:42 2012 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 DEGRADED 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 spare-1 DEGRADED 449 0 0 c0t5000C500335DC60Fd0 UNAVAIL 0 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 spares c0t5000C500335E106Bd0 INUSE errors: No known data errors
Atualmente, é possível desativar um disco de reserva das seguintes maneiras:
Ao remover o disco de reserva do pool de armazenamento.
Ao desanexar um disco de reserva depois que o disco danificado é substituído fisicamente. Consulte Exemplo 3-8.
Ao permutar temporária ou permanentemente outro disco de reserva. Consulte Exemplo 3-9.
Exemplo 3-8 Desanexando um disco de reserva depois que o disco danificado é substituído
Neste exemplo, o disco danificado (c0t5000C500335DC60Fd0) é substituído fisicamente e o ZFS é notificado ao utilizar o comando zpool replace.
# zpool replace zeepool c0t5000C500335DC60Fd0 # zpool status zeepool pool: zeepool state: ONLINE scan: resilvered 3.15G in 0h0m with 0 errors on Thu Jun 21 16:53:43 2012 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 spares c0t5000C500335E106Bd0 AVAIL
Se necessário, você pode utilizar o comando zpool detach para retornar o disco de reserva para o pool disponível. Por exemplo:
# zpool detach zeepool c0t5000C500335E106Bd0
Exemplo 3-9 Desanexando um disco danificado e utilizando o disco de reserva
Se quiser substituir um disco danificado, fazendo uma permuta temporária ou permanente do disco de reserva que está atualmente substituindo-o, desanexe o disco original (com falha). Se o disco danificado é substituído eventualmente, você poderá adicioná-lo de volta ao pool de armazenamento como um disco de reserva. Por exemplo:
# zpool status zeepool pool: zeepool state: DEGRADED status: One or more devices are unavailable in response to persistent errors. 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 scan: resilver in progress since Mon Nov 12 16:04:12 2012 4.80G scanned out of 12.0G at 55.8M/s, 0h2m to go 4.80G scanned out of 12.0G at 55.8M/s, 0h2m to go 4.77G resilvered, 39.97% done config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 DEGRADED 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 UNAVAIL 0 0 0 spares c0t5000C500335E106Bd0 AVAIL errors: No known data errors # zpool detach zeepool c0t5000C500335DC60Fd0 # zpool status zeepool pool: zeepool state: ONLINE scan: resilvered 11.3G in 0h3m with 0 errors on Mon Nov 12 16:07:12 2012 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 errors: No known data errors (Original failed disk c0t5000C500335DC60Fd0 is physically replaced) # zpool add zeepool spare c0t5000C500335DC60Fd0 # zpool status zeepool pool: zeepool state: ONLINE scan: resilvered 11.2G in 0h3m with 0 errors on Mon Nov 12 16:07:12 2012 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 spares c0t5000C500335DC60Fd0 AVAIL errors: No known data errors
Depois que um disco é substituído e o disco de reserva é desanexado, informe ao FMA que o disco foi reparado.
# fmadm faulty # fmadm repaired zfs://pool=name/vdev=guid