Guia de administração do ZFS Oracle Solaris

Consultando status de pool de armazenamento do ZFS

O comando zpool list fornece várias maneiras de solicitar informações relacionadas ao estado do conjunto. As informações disponíveis geralmente se enquadram em três categorias: informações de uso básico, estatísticas de E/S e status de integridade. Nesta seção, são abordados os três tipos de informações do pool de armazenamento.

Exibindo informações sobre os conjuntos de armazenamento ZFS

O comando zpool list pode ser usado para exibir informações básicas sobre pools.

Listando informações sobre todos os conjuntos de armazenamento ou de um conjunto específico

Sem nenhum argumento, o comando zpool listexibe as seguintes informações para todos os conjuntos no sistema:


# zpool list
NAME                    SIZE    ALLOC   FREE    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -
dozer                   1.2T    384G    816G    32%  ONLINE     -

Esta saída de comando exibe as informações a seguir:

NAME

O nome do pool.

SIZE

O tamanho total do conjunto, igual à soma do tamanho de todos os dispositivos virtuais de nível superior.

ALLOC

A quantidade de espaço físico alocado para todos os conjuntos de dados e metadados internos. Observe que esta quantidade difere da quantidade de espaço em disco relatada no nível do sistema de arquivos.

Para mais informações sobre a determinação de espaço disponível no sistema de arquivos, consulte Contabilidade de espaço em disco do ZFS.

FREE

A quantidade de espaço não alocado no pool.

CAP (CAPACITY)

A quantidade de espaço utilizada, expressa como uma porcentagem do espaço total de disco.

HEALTH

O status de integridade atual do pool.

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

ALTROOT

A raiz alternativa do conjunto, se houver alguma.

Para obter mais informações sobre pools de raiz alternativa, consulte Usando pools de raiz alternativa do ZFS.

Também é possível reunir estatísticas de um determinado pool especificando o nome do pool. Por exemplo:


# zpool list tank
NAME                    SIZE    ALLOC   FREE    CAP   HEALTH     ALTROOT
tank                   80.0G    22.3G   47.7G    28%  ONLINE     -

Listando estatísticas específicas de pool de armazenamento

As estatísticas específicas podem ser solicitadas com o uso da opção -o. Esta opção proporciona relatórios personalizados ou uma forma rápida de listar informações pertinentes. Para listar, por exemplo, somente o nome e o tamanho de cada pool, você usa a seguinte sintaxe:


# zpool list -o name,size
NAME                    SIZE
tank                   80.0G
dozer                   1.2T

Os nomes de coluna correspondem às propriedades listadas em Listando informações sobre todos os conjuntos de armazenamento ou de um conjunto específico.

Script de saída de pool de armazenamento do ZFS

A saída padrão do comando zpool list está destinada à legibilidade, e não é fácil utilizá-la como parte de um script de shell. Para ajudar em usos programáticos do comando, a opção -H pode ser usada para suprimir os cabeçalhos de colunas e separar campos por guias, em vez de por espaços. Por exemplo, para solicitar uma lista simples de todos os nomes de conjuntos no sistema, utilize a seguinte sintaxe:


# zpool list -Ho name
tank
dozer

Eis um outro exemplo:


# zpool list -H -o name,size
tank   80.0G
dozer  1.2T

Exibindo o histórico de comandos do pool de armazenamento ZFS

O ZFS registra automaticamente com sucesso os comandos zfs e zpool que modificam as informações de estado do pool. Estas informações podem ser exibidas usando o comando zpool history.

Por exemplo, a seguinte sintaxe exibe a saída do comando para o pool raiz:


# zpool history
History for 'rpool':
2010-05-11.10:18:54 zpool create -f -o failmode=continue -R /a -m legacy -o 
cachefile=/tmp/root/etc/zfs/zpool.cache rpool mirror c1t0d0s0 c1t1d0s0
2010-05-11.10:18:55 zfs set canmount=noauto rpool
2010-05-11.10:18:55 zfs set mountpoint=/rpool rpool
2010-05-11.10:18:56 zfs create -o mountpoint=legacy rpool/ROOT
2010-05-11.10:18:57 zfs create -b 8192 -V 2048m rpool/swap
2010-05-11.10:18:58 zfs create -b 131072 -V 1536m rpool/dump
2010-05-11.10:19:01 zfs create -o canmount=noauto rpool/ROOT/zfsBE
2010-05-11.10:19:02 zpool set bootfs=rpool/ROOT/zfsBE rpool
2010-05-11.10:19:02 zfs set mountpoint=/ rpool/ROOT/zfsBE
2010-05-11.10:19:03 zfs set canmount=on rpool
2010-05-11.10:19:04 zfs create -o mountpoint=/export rpool/export
2010-05-11.10:19:05 zfs create rpool/export/home
2010-05-11.11:11:10 zpool set bootfs=rpool rpool
2010-05-11.11:11:10 zpool set bootfs=rpool/ROOT/zfsBE rpool

É possível utilizar uma saída similar em seu sistema para identificar os comandos exatos do ZFS que foram executados para solucionar um problema de condição de erro.

Os recursos do registro de histórico são:

Para identificar o histórico de comandos de uma pool de armazenamento específico, use a sintaxe semelhante à seguinte:


# zpool history tank
History for 'tank':
2010-05-13.14:13:15 zpool create tank mirror c1t2d0 c1t3d0
2010-05-13.14:21:19 zfs create tank/snaps
2010-05-14.08:10:29 zfs create tank/ws01
2010-05-14.08:10:54 zfs snapshot tank/ws01@now
2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix

Utilize a opção -l para exibir um formato longo que inclui o nome de usuário, o nome do host e a região na qual a operação foi efetuada. Por exemplo:


# zpool history -l tank
History for 'tank':
2010-05-13.14:13:15 zpool create tank mirror c1t2d0 c1t3d0 [user root on neo]
2010-05-13.14:21:19 zfs create tank/snaps [user root on neo]
2010-05-14.08:10:29 zfs create tank/ws01 [user root on neo]
2010-05-14.08:10:54 zfs snapshot tank/ws01@now [user root on neo]
2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix [user root on neo]

Use a opção -i para exibir de informações dos eventos internos que podem ser usadas para fins de diagnósticos. Por exemplo:


# zpool history -i tank
2010-05-13.14:13:15 zpool create -f tank mirror c1t2d0 c1t23d0
2010-05-13.14:13:45 [internal pool create txg:6] pool spa 19; zfs spa 19; zpl 4;...
2010-05-13.14:21:19 zfs create tank/snaps
2010-05-13.14:22:02 [internal replay_inc_sync txg:20451] dataset = 41
2010-05-13.14:25:25 [internal snapshot txg:20480] dataset = 52
2010-05-13.14:25:25 [internal destroy_begin_sync txg:20481] dataset = 41
2010-05-13.14:25:26 [internal destroy txg:20488] dataset = 41
2010-05-13.14:25:26 [internal reservation set txg:20488] 0 dataset = 0
2010-05-14.08:10:29 zfs create tank/ws01
2010-05-14.08:10:54 [internal snapshot txg:53992] dataset = 42
2010-05-14.08:10:54 zfs snapshot tank/ws01@now
2010-05-14.08:11:04 [internal create txg:53994] dataset = 58
2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix

Visualizando estatísticas E/S para conjuntos de armazenamento ZFS

Para solicitar estatísticas de E/S para um pool ou dispositivos virtuais específicos, use o comando zpool iostat. Semelhante ao comando iostat, este comando pode exibir um instantâneo estático de toda atividade de E/S, bem como estatísticas atualizadas de todos os intervalos especificados. São relatadas as seguintes estatísticas:

capacidade alloc

A quantidade de dados atualmente armazenados no pool ou dispositivo. Esta quantidade difere um pouco da quantidade de espaço de disco disponível para os sistemas de arquivos atuais devido a detalhes de implementação interna.

Para obter mais informações sobre as diferenças entre espaço de conjunto e espaço de conjunto de dados, consulte Contabilidade de espaço em disco do ZFS.

capacidade livre

A quantidade de espaço de disco disponível no conjunto ou dispositivo. Como com a estatística used, esta quantidade difere por uma pequena margem da quantidade de espaço disponível para conjuntos de dados.

operações de leitura

O número de operações de E/S de leitura enviado para o pool ou dispositivo, incluindo solicitações de metadados.

operações de escrita

O número de operações de E/S de gravação enviado para o pool ou dispositivo.

ler largura de banda

A largura de banda de todas as operações de leitura (incluindo metadados), expressa como unidades por segundo.

escrever largura de banda

A largura de banda de todas as operações de gravação, expressa como unidades por segundo.

Listando estatísticas E/S amplas de conjunto

Sem opções, o comando zpool iostat exibe as estatísticas acumuladas desde a inicialização de todos os pools no sistema. Por exemplo:


# zpool iostat
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
rpool       6.05G  61.9G      0      0    786    107
tank        31.3G  36.7G      4      1   296K  86.1K
----------  -----  -----  -----  -----  -----  -----

Uma vez que estas estatísticas são acumuladas desde a inicialização, a largura de banda pode parecer baixa se o pool estiver relativamente ocioso. É possível solicitar uma visão mais precisa do uso da largura de banda atual especificando um intervalo. Por exemplo:


# zpool iostat tank 2
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank        18.5G  49.5G      0    187      0  23.3M
tank        18.5G  49.5G      0    464      0  57.7M
tank        18.5G  49.5G      0    457      0  56.6M
tank        18.8G  49.2G      0    435      0  51.3M

Neste exemplo, o comando exibe estatísticas de utilização para o conjunto tank a cada dois segundos até que digite Ctrl-C. Como alternativa, é possível especificar um parâmetro de count adicional, que faz com que o comando termine depois do número especificado de iterações. Por exemplo, zpool iostat 2 3 imprimiria um resumo a cada dois segundos com três iterações, em um total de seis segundos. Se houver apenas um conjunto único, as estatísticas serão exibidas em linhas consecutivas. Se houver mais de um pool, uma linha tracejada adicional delineará cada iteração para fornecer separação visual.

Listando estatísticas E/S do dispositivo virtual

Além das estatísticas de E/S de todos os conjuntos, o comando zpool iostat pode exibir estatísticas de E/S para dispositivos virtuais específicos. Este comando pode ser utilizado para identificar dispositivos anormalmente lentos, ou para observar a distribuição da E/S gerada pelo ZFS. Para solicitar um layout completo do dispositivo virtual, bem como todas as estatísticas de E/S, use o comando zpool iostat -v. Por exemplo:


# zpool iostat -v
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
rpool       6.05G  61.9G      0      0    785    107
  mirror    6.05G  61.9G      0      0    785    107
    c1t0d0s0    -      -      0      0    578    109
    c1t1d0s0    -      -      0      0    595    109
----------  -----  -----  -----  -----  -----  -----
tank        36.5G  31.5G      4      1   295K   146K
  mirror    36.5G  31.5G    126     45  8.13M  4.01M
    c1t2d0      -      -      0      3   100K   386K
    c1t3d0      -      -      0      3   104K   386K
----------  -----  -----  -----  -----  -----  -----

Note dois pontos importantes ao visualizar estatísticas E/S para dispositivos virtuais:

É possível usar o mesmo conjunto de opções (intervalo e contagem) ao examinar estatísticas de dispositivos virtuais.

Determinando o status de integridade de pools de armazenamento do ZFS

O ZFS fornece um método integrado de exame da integridade de pools e dispositivos. A integridade de um dispositivo é determinada a partir do estado de todos os seus dispositivos. Estas informações de estado são exibidas com o uso do comando zpool status. Além disso, as possíveis falhas de dispositivo e conjunto são relatadas pelo fmd e exibidas no console do sistema, e registradas no arquivo /var/adm/messages.

Esta seção descreve como determinar a integridade de pools e dispositivos. Este capítulo não documenta como reparar ou recuperar dados de pools sem integridade. Para mais informações sobre a solução de problemas e a recuperação de dados, consulte Capítulo 11Solução de problemas e conjunto de recuperação do Oracle Solaris ZFS.

Cada dispositivo pode se enquadrar em um dos seguintes estados:

ONLINE

O dispositivo ou dispositivo virtual está em funcionamento de trabalho normal. Embora alguns erros transitórios ainda possam ocorrer, o dispositivo está em perfeito funcionamento.

DEGRADED

O dispositivo virtual falhou, mas continua podendo funcionar. Este estado é muito comum quando um dispositivo de espelho ou RAID-Z perde um ou mais dispositivos constituintes. A tolerância a falhas do pool pode ficar comprometida, uma vez que uma falha subseqüente em outro dispositivo pode ser irrecuperável.

FAULTED

O dispositivo ou dispositivo virtual está completamente inacessível. Este estado geralmente indica falha total do dispositivo, de forma que o ZFS está incapaz de enviar ou receber dados dele. Se um dispositivo de primeiro nível estiver neste estado, o pool estará totalmente inacessível.

OFFLINE

O dispositivo foi colocado explicitamente off-line pelo administrador.

UNAVAIL

O dispositivo ou o dispositivo virtual não pode ser aberto. Em alguns casos, conjuntos com dispositivos UNAVAIL aparecem no modo DEGRADED. Se um dispositivo virtual de nível superior estiver UNAVAIL, nada no conjunto poderá ser acessado.

REMOVED

O dispositivo foi removido fisicamente enquanto o sistema estava em execução. A detecção da remoção do dispositivo depende do hardware e pode não ser suportada em todas as plataformas.

A integridade de um pool é determinada a partir da integridade de todos os seus dispositivos virtuais de primeiro nível. Se todos os dispositivos virtuais estiverem ONLINE, o pool também estará ONLINE. Se algum dos dispositivos virtuais estiver DEGRADED ou UNAVAIL, o conjunto também estará DEGRADED. Se um dispositivo virtual de primeiro nível estiver FAULTED ou OFFLINE, o pool também estará FAULTED. Um conjunto no estado FAULTED está completamente inacessível. Nenhum dado poderá ser recuperado até que os dispositivos necessários sejam anexados ou reparados. Um conjunto no estado DEGRADED continua a ser executado, mas talvez não atinja o mesmo nível de redundância de dados ou throughput de dados se o conjunto estivesse on-line.

Status básico de integridade do pool de armazenamento

É possível rever rapidamente estado de integridade dos conjuntos ao utilizar o comando zpool status como a seguir:


# zpool status -x
all pools are healthy

É possível examinar um determinado conjunto ao especificar o nome de um conjunto na sintaxe do comando. Qualquer pool que não esteja no estado ONLINE deve ser investigado no caso de haver problemas potenciais, como descrito na seção a seguir.

Status de integridade detalhado

É possível solicitar um resumo mais detalhado do estado da integridade ao utilizar a opção -v. Por exemplo:


# zpool status -v tank
  pool: tank
 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: scrub completed after 0h0m with 0 errors on Wed Jan 20 15:13:59 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t1d0  UNAVAIL      0     0     0  cannot open

errors: No known data errors

Esta saída exibe uma descrição completa dos motivos pelos quais o pool está no estado atual, incluindo uma descrição legível do problema e um link a um artigo informativo para a obtenção de mais informações. Cada artigo informativo fornece informações atualizadas sobre a melhor forma de obter recuperação do problema atual. Utilizando as informações de configuração detalhadas, é possível determinar que dispositivo está danificado e como reparar o conjunto.

No exemplo anterior, o dispositivo falho deve ser substituído. Depois de o dispositivo ser substituído, utilize o comando zpool online para recolocar o dispositivo on-line. Por exemplo:


# zpool online tank c1t0d0
Bringing device c1t0d0 online
# zpool status -x
all pools are healthy

Se a propriedade autoreplace está ativada, não é necessário colocar on-line o dispositivo substituído.

Se um conjunto tiver um dispositivo off-line, a saída do comando identifica o conjunto com problema. Por exemplo:


# zpool status -x
  pool: tank
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 15:15:09 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t1d0  OFFLINE      0     0     0  48K resilvered

errors: No known data errors

As colunas READ e WRITE fornecem uma contagem dos erros de E/S ocorridos com o dispositivo, enquanto a coluna CKSUM fornece uma contagem dos erros de soma de verificação incorrigíveis que ocorreram no dispositivo. As duas contagens de erros indicam falhas potenciais do dispositivo, e algumas ações de correção são necessárias. Se forem relatados erros diferentes de zero em um dispositivo virtual de primeiro nível, partes dos dados poderão estar inacessíveis.

O campo erros: identifica erros de dados conhecidos.

Na saída do exemplo anterior, o dispositivo off-line não está causando erros de dados.

Para obter mais informações sobre o diagnóstico e a correção de conjuntos e dados falhos, consulte Capítulo 11Solução de problemas e conjunto de recuperação do Oracle Solaris ZFS.