Guia de administração do ZFS Oracle Solaris

Capítulo 4 Gerenciando conjuntos de armazenamento ZFS do Oracle Solaris

Este capítulo descreve como criar e administrar conjuntos de armazenamento no ZFS do Oracle Solaris.

Este capítulo traz as seguintes seções:

Componentes de um pool de armazenamento do ZFS

As seções seguintes fornecem informações detalhadas sobre os componentes de pool de armazenamento:

Usando discos em um pool de armazenamento do ZFS

O elemento mais básico de um conjunto de armazenamento é um armazenamento físico. O armazenamento físico pode ser qualquer dispositivo de bloco com um tamanho de pelo menos 128 MB. Geralmente, este dispositivo é um disco rígido que é visível para o sistema no diretório /dev/dsk .

Um dispositivo de armazenamento que pode ser um disco inteiro (c1t0d0) ou uma faixa individual (c0t0d0s7). O modo recomendado de operação é utilizar um disco inteiro, caso em que o o disco não necessita ser especialmente formatado. O ZFS formata o disco usando uma legenda EFI para conter uma única faixa grande. Quando usado desta forma, a tabela de partição que é exibida pelo comando format aparece semelhante à seguinte:


Current partition table (original):
Total disk sectors available: 286722878 + 16384 (reserved sectors)

Part      Tag    Flag     First Sector         Size         Last Sector
  0        usr    wm                34      136.72GB          286722911    
  1 unassigned    wm                 0           0               0    
  2 unassigned    wm                 0           0               0    
  3 unassigned    wm                 0           0               0    
  4 unassigned    wm                 0           0               0    
  5 unassigned    wm                 0           0               0    
  6 unassigned    wm                 0           0               0    
  8   reserved    wm         286722912        8.00MB          286739295    

Para utilizar um disco inteiro, o disco deve ser nomeado utilizando a convenção de identificação /dev/dsk/cXtXdXsX. Alguns drivers de terceiros usam uma convenção de nomeação diferente ou colocam o disco em um local diferente do diretório /dev/dsk. Para usar estes discos, é necessário rotular manualmente o disco e fornecer uma faixa para o ZFS.

O ZFS aplica uma legenda EFI quando você cria um pool de armazenamento com discos inteiros. Para obter mais informações sobre legendas EFI, consulte EFI Disk Label no System Administration Guide: Devices and File Systems .

Um disco definido para um pool raiz ZFS, precisa ser criado com uma legenda SMI e não uma legenda EFI. Você pode relegendar um disco com uma legenda SMI usando o comando format - e .

Os discos podem ser especificados com o uso do caminho completo, como /dev/dsk/c1t0d0 , ou de um nome abreviado que consiste no nome do dispositivo dentro do diretório /dev/dsk, como c1t0d0. Abaixo encontram-se, por exemplo, nomes de disco válidos:

A utilização de discos inteiros é a forma mais simples de criar conjuntos de armazenamento ZFS. As configurações do ZFS se tornam progressivamente mais complexas, dos pontos de vista de gerenciamento, confiabilidade e desempenho, quando você constrói pools a partir de faixas de disco, LUNs em matrizes de hardware RAID ou em volumes apresentados pelos gerenciadores de volume baseados em software. As considerações abaixo podem ajudar você a determinar como configurar o ZFS com outras soluções de armazenamento de hardware ou software:

Para obter informações adicionais sobre as recomendações de pool de armazenamento, consulte o site de boas práticas do ZFS:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

Os discos são identificados pelo caminho e pelo ID do dispositivo, se disponível. Em sistemas onde a informação de ID do dispositivo está disponível, este método de identificação permite que dispositivos sejam configurados sem atualizar o ZFS. Como a geração e gerenciamento de dispositivo de ID pode variar de acordo com o sistema, exporte o conjunto primeiro antes de mover dispositivos, assim como mover um disco de um controlador para outro. Um evento do sistema, como uma atualização de firmware ou outro alteração de hardware, pode alterar as IDs do dispositivo no conjunto de armazenamento ZFS, que pode causar a invalidação do dispositivo.

Usando faixas em um pool de armazenamento do ZFS

Os discos podem ser rotulados com uma legenda Solaris VTOC (SMI) tradicional quando você cria um pool de armazenamento com uma faixa de disco.

Para um conjunto raiz ZFS inicializável, os discos no conjunto devem conter segmentos e precisam ser legendados com uma legenda SMI. A configuração mais simples é colocar toda a capacidade do disco na faixa 0 e usar essa faixa para o pool raiz.

Em um sistema com base em SPARC, um disco de 72 GB possui 68 GB de espaço útil localizados no segmento 0, conforme mostrado na seguinte saída de format:


# format
.
.
.
Specify disk (enter its number): 4
selecting c1t1d0
partition> p
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  1 unassigned    wm       0                0         (0/0/0)             0
  2     backup    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0

Em um sistema com base em x86, um disco de 72 GB possui 68 GB de espaço útil localizados no segmento 0, conforme mostrado na seguinte saída de format. A faixa 8 contém uma pequena quantidade de informações de inicialização. A faixa 8 não precisa de administração e não pode ser alterada.


# format
.
.
.
selecting c1t0d0
partition> p
Current partition table (original):
Total disk cylinders available: 49779 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       1 - 49778       68.36GB    (49778/0/0) 143360640
  1 unassigned    wu       0                0         (0/0/0)             0
  2     backup    wm       0 - 49778       68.36GB    (49779/0/0) 143363520
  3 unassigned    wu       0                0         (0/0/0)             0
  4 unassigned    wu       0                0         (0/0/0)             0
  5 unassigned    wu       0                0         (0/0/0)             0
  6 unassigned    wu       0                0         (0/0/0)             0
  7 unassigned    wu       0                0         (0/0/0)             0
  8       boot    wu       0 -     0        1.41MB    (1/0/0)          2880
  9 unassigned    wu       0                0         (0/0/0)             0

Usando arquivos em um pool de armazenamento do ZFS

O ZFS também permite que usar arquivos do UFS como dispositivos virtuais no pool de armazenamento. Este recurso se destina principalmente a testar e capacitar experimentos simples, não para uso em produção. O motivo é que qualquer uso de arquivos depende do sistema de arquivos subjacente para ter consistência. Se criar um pool do ZFS baseado em arquivos de um sistema de arquivos UFS, você estará implicitamente confiando no UFS para garantir correção e semântica síncrona.

No entanto, os arquivos podem ser bastante úteis ao utilizar o ZFS pela primeira vez ou experimentar configurações mais complicadas quando dispositivos físicos insuficientes estão presentes. É necessário especificar todos os arquivos como caminhos completos e estes devem ter tamanho de pelo menos 64 MB.

Recursos de replicação de um pool de armazenamento do ZFS

O ZFS fornece redundância de dados, bem como propriedades de autocorreção, em uma configuração espelhada e RAID-Z.

Configuração de pool de armazenamento espelhado

Uma configuração de pool de armazenamento espelhado requer pelo menos dois discos, de preferência em controladores separados. Vários discos podem ser usados em uma configuração espelhada. Além disso, você pode criar mais de um espelho em cada pool. Conceitualmente, uma configuração espelhada simples teria a aparência seguinte:


mirror c1t0d0 c2t0d0

Conceitualmente, uma configuração espelhada mais complexa teria a aparência seguinte:


mirror c1t0d0 c2t0d0 c3t0d0 mirror c4t0d0 c5t0d0 c6t0d0

Para obter mais informações sobre a criação de pool de armazenamento espelhado, consulte Criando um pool de armazenamento espelhado.

Configuração de pool de armazenamento RAID-Z

Além de uma configuração de conjunto em armazenamento espelhado, o ZFS fornece uma configuração RAID-Z com tolerância de falha de paridade única, dupla ou tripla. RAID-Z de paridade dupla (raidz ou raidz1) é semelhante ao RAID-5. O RAID-Z de paridade dupla (raidz2) é semelhante ao RAID-6.

Para mais informações sobre RAIDZ-3 (raidz3), consulte o blog a seguir:

http://blogs.sun.com/ahl/entry/triple_parity_raid_z

Todos os algoritmos tradicionais semelhantes ao RAID-5 (RAID-4, RAID-6, RDP e EVEN-ODD, por exemplo) podem apresentar um problema conhecido como "buraco de gravação de RAID-5". Se apenas parte de uma faixa RAID-5 for gravado, e a potência se perder antes de todos os blocos terem sido registrados no disco, a paridade permanecerá dessincronizada com os dados e, portanto, ficará inutilizada para sempre (a não ser que uma gravação subsequente de faixa inteira a substitua). No RAID-Z, o ZFS usa faixas RAID de largura variável, de forma que todas as gravações são gravações de faixa inteira. Este design é possível apenas porque o ZFS integra o gerenciamento do sistema de arquivos e do dispositivo de tal forma que os metadados do sistema de arquivos têm informações suficientes sobre o modelo de redundância de dados subjacente para lidar com faixas RAID de largura variável. O RAID-Z é a primeira solução somente de software do mundo para o "buraco de gravação de RAID-5".

Uma configuração RAID-Z com N discos de tamanho X com discos de paridade P podem conter aproximadamente (N-P)*X bytes e podem resistir a P dispositivo(s) falho(s) antes que a integridade dos dados seja comprometida. São necessários pelo menos dois discos para uma configuração RAID-Z de paridade única e pelo menos três discos para uma configuração RAID-Z de paridade dupla. Por exemplo, se houver três discos em uma configuração RAID-Z de paridade única, os dados da paridade ocuparão espaço igual a um dos três discos. Do contrário, nenhum hardware especial será necessário para criar uma configuração RAID-Z.

Conceitualmente, uma configuração RAID-Z com três discos teria a aparência semelhante à seguinte:


raidz c1t0d0 c2t0d0 c3t0d0

Conceitualmente, uma configuração espelhada RAID-Z mais complexa teria a aparência a seguir:


raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0
c12t0d0 c13t0d0 c14t0d0

Se estiver criando uma configuração RAID-Z com muitos discos, considere dividir os discos em vários agrupamentos. Por exemplo, uma configuração RAID-Z com 14 discos é melhor dividido em 7 agrupamentos de disco. As configurações RAID-Z com agrupamentos de dígito único de discos têm um melhor desempenho.

Para informações sobre a criação de um conjunto de armazenamento RAID-Z, consulte Criando um conjunto de armazenamento RAID-Z.

Para informações sobre a escolha entre uma configuração espelhada ou uma configuração RAID-Z levando em consideração desempenho e espaço, consulte a entrada de blog a seguir:

http://blogs.sun.com/roch/entry/when_to_and_not_to

Para informações adicionais sobre as recomendações de conjunto de armazenamento RAID-Z, consulte o site de boas práticas do ZFS:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

Pool armazenamento híbrido do ZFS

O conjunto de armazenamento híbrido do ZFS, disponível na série de produtos Sun Storage 7000, é um conjunto de armazenamento especial que combina DRAM, SSDs e HDDs para melhorar o desempenho e aumentar a capacidade, ao mesmo tempo que reduzir o consumo de energia. Com esta interface de gerenciamento de produto, é possível selecionar a configuração de redundância do ZFS do conjunto de armazenamento e gerenciar facilmente outras opções de configuração.

Para obter mais informações sobre este produto, consulte o Sun Storage Unified Storage System Administration Guide.

Dados de autocorreção em uma configuração redundante

O ZFS fornece dados de autocorreção em uma configuração espelhada ou RAID-Z.

Quando um bloco de dados incorretos é detectado, o ZFS não apenas tira os dados corretos de uma cópia redundante como também repara os dados incorretos substituindo-os pela cópia correta.

Distribuição dinâmica em um pool de armazenamento

O ZFS fatia os dados dinamicamente através de todos os dispositivos virtuais de nível superior. A decisão sobre o local o qual colocar os dados é tomada na hora da gravação, de forma que nenhuma faixa de largura fixa é criada no momento da alocação.

Quando novos dispositivos virtuais são adicionados a um conjunto, o ZFS aloca dados gradualmente no novo dispositivo com o objetivo de manter o desempenho e políticas de alocação de espaço. Cada dispositivo virtual também pode ser um dispositivo de espelho ou RAID-Z que contém outros dispositivos de disco ou arquivos. Esta configuração oferece flexibilidade no controle das características de falha no conjunto. É possível criar, por exemplo, as configurações a seguir com quatro discos:

Apesar do ZFS suportar a combinação de diferentes tipos de dispositivos virtuais dentro do mesmo conjunto, evite esta prática. Você pode criar, por exemplo, um pool com um espelho bidirecional e uma configuração RAID-Z tridirecional. No entanto, a tolerância a falhas é tão boa quanto a do seu pior dispositivo virtual, RAID-Z neste caso. A melhor prática é utilizar dispositivos virtuais de nível superior do mesmo tipo com o mesmo nível de redundância em cada dispositivo.

Criando e destruindo pools de armazenamento do ZFS

As seções seguintes descrevem diferentes situações de criação e destruição de pools de armazenamento do ZFS:

Criar e destruir conjuntos é rápido e fácil. Entretanto, seja cuidadoso ao efetuar estas operações. Embora sejam realizadas verificações para impedir o uso de dispositivos que estão sendo usados em um novo pool, o ZFS nem sempre sabe quando um dispositivo está sendo utilizado. Destruir um conjunto é mais fácil do que construir um. Use zpool destroy com cuidado. Este comando simples tem consequências significantes.

Criando um pool de armazenamento do ZFS

Para criar um pool de armazenamento, use o comando zpool create. Este comando adota um nome de pool e qualquer quantidade de dispositivos virtuais como argumentos. O nome do conjunto deve cumprir as convenções de identificação descritas em Requisitos para nomeação de componentes do ZFS.

Criando um pool de armazenamento básico

O seguinte comando cria um novo pool denominado tank que contém os discos c1t0d0 e c1t1d0:


# zpool create tank c1t0d0 c1t1d0

Nomes de dispositivos representando discos inteiros são encontrados no diretório /dev/dsk e estão legendados adequadamente pelo ZFS para conter um único e grande segmento. Os dados são distribuídos dinamicamente nos dois discos.

Criando um pool de armazenamento espelhado

Para criar um pool espelhado, use a palavra-chave mirror, seguida de uma quantidade de dispositivos de armazenamento que formarão o espelho. É possível especificar vários espelhos com a repetição da palavra-chave mirror na linha de comando. O comando abaixo cria um pool com dois espelhos bidirecionais:


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

A segunda palavra-chave mirror indica que um novo dispositivo virtual de primeiro nível está sendo especificado. Os dados são distribuídos dinamicamente nos dois espelhos e redundados adequadamente em cada disco.

Para obter mais informações sobre as configurações espelhadas recomendadas, vá ao site:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

No momento, as operações a seguir são suportadas em uma configuração espelhada do ZFS:

Não é possível remover completamente um dispositivo que não é um dispositivo de log ou cache de um conjunto de armazenamento espelhado. Uma RFE é preenchida para esse recurso.

Criando um pool raiz ZFS

É possível instalar e inicializar a partir de um sistema de arquivos ZFS. Consulte as seguintes informações de configuração do pool raiz:

Para mais informações sobre a instalação e a inicialização de um sistema de arquivos raiz ZFS, consulte Capítulo 5Instalando e inicializando um sistema de arquivos raiz ZFS do Oracle Solaris.

Criando um conjunto de armazenamento RAID-Z

A criação de um pool RAID-Z de paridade única é idêntica à criação de um pool espelhado, exceto que a palavra-chave raidz ou raidz1 é usada em lugar de mirror. O exemplo abaixo mostra como criar um pool com um dispositivo RAID-Z único que está composto por dois discos:


# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0

Este exemplo ilustra que os discos podem ser especificados ao utilizar seus nomes de dispositivo de estenografia ou seus nomes de dispositivos completos. Tanto /dev/dsk/c5t0d0 quanto c5t0d0 fazem referência ao mesmo disco.

É possível criar configurações RAID-Z de paridade dupla ou tripla ao utilizar a palavra-chave raidz2 ou raidz3 ao criar o conjunto. Por exemplo:


# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0

errors: No known data errors

# zpool create tank raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz3-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0
            c6t0d0  ONLINE       0     0     0
            c7t0d0  ONLINE       0     0     0

errors: No known data errors

No momento, as operações a seguir são suportadas em uma configuração RAID-Z do ZFS:

No momento, as operações seguintes não são suportadas em uma configuração RAID-Z:

Para obter informações sobre a configuração RAID-Z, consulte Configuração de pool de armazenamento RAID-Z.

Criando um conjunto de armazenamento do ZFS com dispositivos de log

Por padrão, o ZIL é alocado dos blocos no pool principal. No entanto, pode ser possível obter melhor desempenho usando dispositivos separados de registro de intenção, como NVRAM ou um disco dedicado. Para obter mais informações sobre os dispositivos de log do ZFS, consulte Configurando dispositivos de log do ZFS separados.

É possível configurar um dispositivo de log ZFS quando o conjunto de armazenamento for criado ou depois da sua criação.

O exemplo a seguir mostra como criar um conjunto de armazenamento espelhado com dispositivos de log espelhados:


# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0
# zpool status datap
  pool: datap
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datap       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
        logs
          mirror-2  ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0
            c1t8d0  ONLINE       0     0     0

errors: No known data errors

Para obter informações sobre como recuperar de um dispositivo de registro com falha, consulte Exemplo 11–2.

Criando um conjunto de armazenamento do ZFS com dispositivos de cache

Você pode criar um pool de armazenamento com dispositivos de cache para dados de pool de armazenamento cache. Por exemplo:


# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 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

Considere os pontos a seguir ao determinar a criação de um conjunto de armazenamento ZFS com dispositivos de cache:

Exibindo informações do dispositivo virtual do pool de armazenamento

Cada conjunto de armazenamento contém um ou mais dispositivos virtuais. Um dispositivo virtual é uma representação interna do conjunto de armazenamento que descreve o layout do armazenamento físico e suas características de falha. Como tal, um dispositivo virtual representa os dispositivos de disco ou arquivos que são usados para criar o pool de armazenamento. Um conjunto pode ter qualquer número de dispositivos virtuais na parte superior da configuração, conhecida como top-level vdev.

Se o dispositivo virtual de nível superior contém dois ou mais dispositivos físicos, a configuração fornece redundância de dados como dispositivos de espelho ou virtual RAID-Z. Estes dispositivos virtuais consistem em discos, faixas de discos ou arquivos. Um sobressalente é um dispositivo virtual especial que rastreia dispositivos de reserva disponíveis para um conjunto.

Os exemplos a seguir mostram como criar um conjunto que consiste em dois dispositivos virtuais de nível superior, cada um com espelho de dois discos:


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

O exemplo abaixo mostra como criar um conjunto que consiste em um dispositivo de virtual nível superior de quatro discos:


# zpool create mypool raidz2 c1d0 c2d0 c3d0 c4d0

É possível adicionar outro dispositivo virtual de nível superior a este conjunto utilizando o comando zpool add. Por exemplo:


# zpool add mypool raidz2 c2d1 c3d1 c4d1 c5d1

Os discos, segmentos de discos ou arquivos que são utilizados em conjuntos não redundantes que funcionam como dispositivos virtuais de nível superior. Os pools de armazenamento normalmente contêm múltiplos dispositivos virtuais de primeiro nível. O ZFS cria dinamicamente faixas de dados entre todos os dispositivos virtuais de primeiro nível em um pool.

Os dispositivos virtuais e os dispositivos físicos contidos no pool de armazenamento do ZFS são exibidos com o comando zpool status. 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
            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

Manipulando erros de criação do pool de armazenamento do ZFS

Os erros de criação de pool podem ocorrer por vários motivos. Alguns desses motivos são óbvios, como quando um dispositivo especificado não existe, enquanto outros são mais sutis.

Detectando dispositivos em uso

Antes de formatar um dispositivo, o ZFS determina se o disco está sendo usado pelo ZFS ou por alguma outra parte do sistema operacional. Se o disco estiver em uso, poderão ser exibidos erros como os seguintes:


# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently mounted on swap. Please see swap(1M).
/dev/dsk/c1t1d0s0 is part of active ZFS pool zeepool. Please see zpool(1M).

Alguns destes erros podem ser ignorados utilizando a opção -f, mas grande parte deles não. As condições a seguir não podem ser ignoradas utilizando a opção - f, sendo necessário corrigí-los manualmente:

Sistema de arquivos montado

O disco ou uma de suas faixas contém um sistema de arquivos que está montado atualmente. Para corrigir este erro, use o comando umount.

Sistema de arquivos em /etc/vfstab

O disco contém um sistema de arquivos que está listado no arquivo /etc/vfstab , mas o sistema de arquivos não está montado atualmente. Para corrigir este erro, remova ou anote a linha no arquivo /etc/vfstab.

Dispositivo de dump dedicado

O disco está em uso como o dispositivo de dump dedicado para o sistema. Para corrigir este erro, use o comando dumpadm.

Parte de um pool do ZFS

O disco ou o arquivo faz parte de um pool de armazenamento ativo do ZFS. Para corrigir este erro, use o comando zpool destroy para destruir o pool, se este não for mais necessário. Ou, use o comando zpool detach para desanexar o disco do outro pool. Somente é possível desanexar um disco do pool de armazenamento espelhado.

As verificações de dispositivo em uso abaixo servem como avisos úteis e podem ser ignoradas com o uso da opção -f para criar o pool:

Contém um sistema de arquivos

O disco contém um sistema de arquivos conhecido, embora não esteja montado e não pareça estar em uso.

Parte de volume

Este disco é parte de um volume do Solaris Volume Manager.

Live upgrade

O disco está em utilização como um ambiente de inicialização alternativo para o Oracle Solaris Live Upgrade.

Parte de pool exportado do ZFS

O disco faz parte de um pool de armazenamento que foi exportado ou removido manualmente de um sistema. Neste último caso, o pool é relatado como potentially active, uma vez que o disco pode ser ou não uma unidade anexada a uma rede em uso por outro sistema. Tome cuidado ao substituir um pool potencialmente ativo.

O exemplo abaixo mostra como a opção -f é usada:


# zpool create tank c1t0d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 contains a ufs filesystem.
# zpool create -f tank c1t0d0

O ideal é corrigir os erros, em vez de utilizar a opção -f para ignorá-los.

Níveis de replicação inconsistentes

Não é recomendável criar pools com dispositivos virtuais de diferentes níveis de replicação. O comando zpool tenta impedir que você crie por acidente um pool com níveis de redundância inconsistentes. Se tentar criar um pool com uma configuração assim, serão exibidos erros como os seguintes:


# zpool create tank c1t0d0 mirror c2t0d0 c3t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: both disk and mirror vdevs are present
# zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 c5t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: 2-way mirror and 3-way mirror vdevs are present

É possível ignorar estes erros com a opção -f, mas deve-se evitar esta prática. O comando também avisa sobre a criação de um pool espelhado ou RAID-Z que use dispositivos de diferentes tamanhos. Apesar desta configuração ser permitida, níveis de redundância incompatíveis resultam em espaço de disco inutilizado no dispositivo maior. A opção -f é necessária para ignorar os avisos.

Simulando uma criação de pool de armazenamento

A tentativa de criar um conjunto pode falhar de forma inesperada de diferentes maneiras, e formatar discos é uma ação potencialmente prejudicial. Para estas razões, o comando zpool create possui a opção adicional, -n, que simula a criação do conjunto sem realmente escrever no dispositivo. Esta opção simulação efetua a verificação do dispositivo em uso e a validação do nível de replicação, e relata quaisquer erros durante o processo. Se nenhum erro for encontrado, será exibida uma saída semelhante à seguinte:


# zpool create -n tank mirror c1t0d0 c1t1d0
would create 'tank' with the following layout:

        tank
          mirror
            c1t0d0
            c1t1d0

Alguns erros não podem ser detectados sem a criação real do pool. O exemplo mais comum é a especificação do mesmo dispositivo duas vezes na mesma configuração. Não é possível detectar este erro com certeza sem realmente gravar os dados, de forma que o comando zpool create -n pode relatar êxito e ainda assim falhar em criar o conjunto quando realmente executado sem esta opção.

Ponto de montagem padrão para pools de armazenamento

Quando um conjunto é criado, o ponto de montagem padrão para o conjunto de dados raiz de nível superior é /pool-name. Este diretório não deve existir ou deve estar vazio. Se o diretório não existir, será criado automaticamente. Se o diretório estiver vazio, o conjunto de dados raiz será montado em cima do diretório existente. Para criar um pool com um ponto de montagem padrão diferente, use a opção - m do comando zpool create. Por exemplo:


# zpool create home c1t0d0
default mountpoint '/home' exists and is not empty
use '-m' option to provide a different default
# zpool create -m /export/zfs home c1t0d0

Este comando cria um novo conjunto home e o conjunto de dados home com um ponto de montagem /export/zfs.

Para obter mais informações sobre pontos de montagem, consulte Gerenciando pontos de montagem do ZFS.

Destruindo pools de armazenamento do ZFS

Os pools são destruídos com o uso do comando zpool destroy. Este comando destrói o pool mesmo se contiver conjuntos de dados montados.


# zpool destroy tank

Cuidado – Cuidado –

Tome muito cuidado ao destruir um pool. Certifique-se de que está destruindo o conjunto certo e sempre tenha cópias dos dados. Se destruir por acidente o pool errado, poderá tentar recuperá-lo. Para obter mais informações, consulte Recuperando pools de armazenamento destruídos do ZFS.


Destruindo um pool com dispositivos falhos

O ato de destruir um conjunto requer que os dados sejam gravados em disco para indicar que o conjunto deixou de ser válido. Estas informações de estado evitam que o dispositivo apareça como um possível pool ao realizar uma importação. Se um ou mais dispositivos não estiverem disponíveis, o pool pode ainda assim ser destruído. No entanto, as informações de estado necessárias não serão gravadas nestes dispositivos indisponíveis.

Estes dispositivos, quando reparados de maneira adequada, são reportados como potencialmente ativos ao criar um novo conjunto. Eles aparecem como dispositivos válidos ao buscar por conjuntos para importar. Se um pool apresentar bastantes dispositivos falhos, de forma que o próprio pool é falho (o que significa que o dispositivo virtual de primeiro nível é falho), o comando imprimirá um aviso e não poderá concluir sem a opção -f. Esta opção é necessária porque o conjunto não pode ser aberto, então não é possível saber se os dados estão armazenados lá. Por exemplo:


# zpool destroy tank
cannot destroy 'tank': pool is faulted
use '-f' to force destruction anyway
# zpool destroy -f tank

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

Para obter mais informações sobre a importação de pools, consulte Importando pools de armazenamento do ZFS.

Gerenciando dispositivos em pools de armazenamento do ZFS

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

Adicionando dispositivos a um pool de armazenamento

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


# zpool add zeepool mirror c2t1d0 c2t2d0

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


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

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

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


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

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


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

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

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

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

errors: No known data errors


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

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


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

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

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

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

errors: No known data errors


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

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


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

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

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

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

errors: No known data errors

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

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


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

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

errors: No known data errors

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


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

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

errors: No known data errors
# zpool remove pool c0t10d0


Exemplo 4–4 Adicionando e removendo dispositivos de cache

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

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


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

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

errors: No known data errors

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

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


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

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

errors: No known data errors

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

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


Anexando e desanexando dispositivos em um pool de armazenamento

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

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

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


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

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


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

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

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

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

errors: No known data errors

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



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

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


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

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

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

errors: No known data errors

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


# zpool detach zeepool c2t1d0

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


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

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

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

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

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

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


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

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

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

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

errors: No known data errors

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

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

errors: No known data errors

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


# zpool split tank tank2 c1t0d0

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

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


# zpool split -R /tank2 tank tank2

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

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


Exemplo 4–7 Dividindo um conjunto ZFS espelhado

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


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

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

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

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

errors: No known data errors

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

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

errors: No known data errors

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

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


Observação –

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


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

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

Colocando um dispositivo off-line

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


# zpool offline tank c1t0d0
bringing device c1t0d0 offline

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

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

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

Colocando um dispositivo on-line

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


# zpool online tank c1t0d0
bringing device c1t0d0 online

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

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


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

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


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

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

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


# zpool online -e tank c1t13d0

Limpando erros de dispositivo de conjunto de armazenamento

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

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


# zpool clear tank

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


# zpool clear tank c1t0d0

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

Substituindo dispositivos em um pool de armazenamento

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

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


# zpool replace tank c1t1d0

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


# zpool replace tank c1t1d0 c1t2d0

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

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

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

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

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

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

Designando sobressalentes no pool de armazenamento

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

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

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


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

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

errors: No known data errors

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


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

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

errors: No known data errors

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


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

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

errors: No known data errors

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

Considere o seguinte quando estiver utilizando reservas ZFS:

Ativando e desativando sobressalentes no pool de armazenamento

Os sobressalentes são ativados das seguintes maneiras:

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

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


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

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

errors: No known data errors

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


Exemplo 4–8 Substituindo manualmente um disco com um reserva

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


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

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

errors: No known data errors

Então, desanexe o disco c2t1d0.


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

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

errors: No known data errors


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

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


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

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

errors: No known data errors

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


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

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

errors: No known data errors


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

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


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

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

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

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

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

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

errors: No known data errors

Gerenciando propriedades do pool de armazenamento do ZFS

Você pode usar o comando zpool get para exibir as informações das propriedades do pool. Por exemplo:


# zpool get all mpool
NAME  PROPERTY       VALUE       SOURCE
pool  size           68G         -
pool  capacity       0%          -
pool  altroot        -           default
pool  health         ONLINE      -
pool  guid           601891032394735745  default
pool  version        22          default
pool  bootfs         -           default
pool  delegation     on          default
pool  autoreplace    off         default
pool  cachefile      -           default
pool  failmode       wait        default
pool  listsnapshots  on          default
pool  autoexpand     off         default
pool  free           68.0G       -
pool  allocated      76.5K       -

As propriedades do pool de armazenamento podem ser definidas com o comando zpool set. Por exemplo:


# zpool set autoreplace=on mpool
# zpool get autoreplace mpool
NAME  PROPERTY     VALUE    SOURCE
mpool autoreplace  on       default
Tabela 4–1 Descrições das propriedades do pool do ZFS

Nome da propriedade 

Tipo 

Valor padrão 

Descrição 

alocados

Sequência de caracteres 

N/D 

Valor de somente leitura que identifica a quantidade de espaço de armazenamento dentro do conjunto que foi fisicamente alocado.

altroot

Sequência de caracteres 

off

Identifique um diretório raiz alternativo. Se definido, este diretório é anteposto a quaisquer pontos de montagem dentro do pool. Esta propriedade pode ser utilizada ao examinar um conjunto desconhecido, se os pontos de montagem não forem de confiança ou em um ambiente de inicialização alternativo no qual os caminhos típicos não são válidos.

autoreplace

Booleano 

off

Controla a substituição automática do dispositivo. Se for definido como desativado, a substituição do dispositivo deve ser iniciada pelo administrador utilizando o comando zpool replace. Se for definido como ativado, qualquer dispositivo novo encontrado no mesmo local físico que um dispositivo que antes pertencia ao conjunto será automaticamente formatado e substituído. A abreviação da propriedade é replace.

bootfs

Booleano 

N/D 

Identifica o conjunto de dados inicializável padrão do pool raiz. Esta propriedade é tipicamente definida pelos programas de instalação e atualização.

cachefile

Sequência de caracteres 

N/D 

Controla onde as informações de configuração do conjunto são armazenadas. Todos os pools no cache são automaticamente importados quando o sistema é reinicializado. Entretanto, os ambientes de instalação e cluster podem precisar armazenar em cache essas informações em um local diferente, de forma que os conjuntos não sejam automaticamente importados. É possível definir esta propriedade para efetuar cache das informações de configuração do conjunto em um local diferente. Esta informação pode ser importada mais tarde ao utilizar o comando zpool import - c. Para a maioria das configurações ZFS, esta propriedade não é utilizada.

capacity

Número 

N/D 

Valor somente leitura que identifica a porcentagem de espaço usado do pool.

A abreviatura da propriedade é cap.

delegation

Booleano 

on

Controla se um usuário não-privilegiado pode obter permissões de acesso definidas para o conjunto de dados. Para obter mais informações, consulte o Capítulo 9Administração delegada de ZFS.

failmode

Seqüência 

wait

Controla o comportamento do sistema se uma falha catastrófica do conjunto ocorrer. Esta situação é causada normalmente pela perda de conectividade com o dispositivo ou dispositivos de armazenamento subjacentes ou por uma falha de todos os dispositivos do conjunto. O comportamento de tal evento é determinado por um dos valores a seguir:

  • espera: bloqueia todos os acessos de E/S ao conjunto até que a conectividade com o dispositivo seja restaurada e os erros sejam apagados com o comando zpool clear. Neste estado, operações E/S para o conjunto são bloqueadas, mas operações de leitura podem ter êxito. Um conjunto é mantido no estado espera até que o problema do dispositivo seja resolvido.

  • continuar: retorna um erro EIO a quaisquer novas solicitações de E/S escritas, mas permite a leitura dos dispositivos com integridade restantes. Quaisquer solicitações escritas que ainda não foram enviadas ao disco podem ser bloqueadas. Depois de reconectar ou substituir o dispositivo, os erros devem ser apagados com o comando zpool clear.

  • pânico: imprime uma mensagem ao console e gera um despejo de memória de sistema.

livre

Sequência de caracteres 

N/D 

Valor de somente leitura que identifica o número de bloqueios dentro do conjunto que não é alocado.

guid

Seqüência 

N/D 

Valor somente leitura que identifica o identificador exclusivo do pool.

health

Seqüência 

N/D 

Valor somente leitura que identifica a integridade atual do pool, como ONLINE, DEGRADED, FAULTED, OFFLINE, REMOVED ou UNAVAIL. propriedade

listsnapshots

Sequência de caracteres 

on

Controla de as informações do instantâneo que estão associadas com este pool são exibidas com o comando zfs list . Se esta propriedade estiver desabilidade, as informações do instantâneo podem ser exibidas com o comando zfs list -t snapshot.

size

Número 

N/D 

Valor somente leitura que identifica o tamanho total do pool de armazenamento.

version

Número 

N/D 

Identifica a versão atual em disco do pool. O método preferido de atualização de pools é com o comando zpool upgrade, embora esta propriedade possa ser usada quando uma versão específica seja necessária para obter a compatibilidade com versões anteriores. Esta propriedade pode ser definida com qualquer número entre 1 e a versão atual informada pelo comando zpool upgrade -v.

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.

Migrando pools de armazenamento do ZFS

Ocasionalmente, pode ser necessário mover um conjunto de armazenamento entre sistemas. Para tal, os dispositivos de armazenamento devem ser desconectados do sistema original e reconectados ao sistema de destino. Esta tarefa pode ser realizada tornando a ligar fisicamente os cabos dos dispositivos ou utilizando dispositivos de portas múltiplas, como os dispositivos em uma SAN. O ZFS permite exportar o conjunto de uma máquina e importá-lo para o sistema de destino, mesmo que os sistemas tenham arquitetura de endian diferentes. Para obter informações sobre replicação ou migração de sistemas de arquivos entre diferentes pools de armazenamento que possam residir em diferentes máquinas, consulte Enviando e recebendo dados do ZFS.

Preparando para migração do pool de armazenamento do ZFS

Os pools de armazenamento devem ser exportados explicitamente para indicar que estão prontos para ser migrados. Esta operação libera quaisquer dados não gravados para o disco, grava os dados para o disco indicando que a exportação foi feita e remove do sistema toda a informação sobre o conjunto.

Se o pool não for explicitamente exportado, mas em vez disso for removido manualmente do disco, será possível importar o pool resultante em outro sistema. No entanto, pode ocorrer a perda dos últimos segundos das transações de dados, e o conjunto aparecerá falho no sistema original porque os dispositivos não estão mais presentes. Por padrão, o sistema de destino não pode importar um conjunto que não tenha sido exportado explicitamente. Essa condição é necessária para impedir a importação acidental de um conjunto ativo composto por armazenamentos de rede anexados que ainda estejam sendo utilizados em outro sistema.

Exportando um pool de armazenamento do ZFS

Para exportar um pool, use o comando zpool export. Por exemplo:


# zpool export tank

O comando tenta desmontar quaisquer sistemas de arquivos montados dentro do pool antes de continuar. Se qualquer um dos sistemas de arquivos não for desmontado, você poderá forçar a desmontagem com o uso da opção -f. Por exemplo:


# zpool export tank
cannot unmount '/export/home/eschrock': Device busy
# zpool export -f tank

Depois que o comando é executado, o conjunto tank deixa de ser visível no sistema.

Se os dispositivos estiverem indisponíveis no momento da exportação, os dispositivos não poderão ser especificados como exportados corretamente. Se um destes dispositivos for posteriormente anexado a um sistema sem nenhum dos dispositivos em funcionamento, ele aparecerá como "potencialmente ativo".

Se os volumes ZFS estiverem em uso no pool, o pool não poderá ser exportado, mesmo com a opção -f. Para exportar um conjunto com um volume ZFS, primeiro certifique-se de que todos os consumidores do volume não estão mais ativos.

Para obter mais informações sobre volumes ZFS, consulte Volumes ZFS.

Determinando pools de armazenamento disponíveis para importação

Depois que o conjunto é removido do sistema (através de exportação explícita ou remoção forçada dos dispositivos), é possível anexar os dispositivos ao sistema de destino. O ZFS pode manipular algumas situações onde apenas alguns dispositivos estão disponíveis, mas uma migração de conjunto com êxito depende da integridade geral dos dispositivos. Além disso, os dispositivos não têm que estar necessariamente anexados sobre o mesmo nome de dispositivo. O ZFS detecta quaisquer dispositivos movidos ou renomeados e ajusta a configuração adequadamente. Para descobrir pools disponíveis, execute o comando zpool import sem opções. Por exemplo:


# zpool import
 pool: tank
    id: 11809215114195894163
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        tank        ONLINE
          mirror-0  ONLINE
            c1t0d0  ONLINE
            c1t1d0  ONLINE

Neste exemplo, o pool tank está disponível para ser importado no sistema de destino. Cada pool é identificado por um nome e por um identificador numérico exclusivo. Se vários conjuntos com o mesmo nome estiverem disponíveis para importação, é possível utilizar identificadores numéricos para fazer a distinção entre eles.

Da mesma forma que o comando zpool status, o comando zpool import inclui um link a um artigo informativo disponível na Web com as informações mais atualizadas em relação aos procedimentos para correção de um problema que esteja impedindo um conjunto de ser importado. Neste caso, o usuário pode forçar o pool a ser importado. No entanto, a importação de um pool que esteja atualmente em uso por outro sistema em uma rede de armazenamento pode resultar na corrupção de dados e em avisos graves, uma vez que ambos os sistemas tentam gravar no mesmo armazenamento. Se alguns dispositivos não estiverem disponíveis no conjunto, mas houver redundância disponível suficiente para fornecer um conjunto utilizável, o conjunto aparecerá no estado DEGRADED. Por exemplo:


# zpool import
  pool: tank
    id: 11809215114195894163
 state: DEGRADED
status: One or more devices are missing from the system.
action: The pool can be imported despite missing or damaged devices.  The
        fault tolerance of the pool may be compromised if imported.
   see: http://www.sun.com/msg/ZFS-8000-2Q
config:

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

Neste exemplo, o primeiro disco está danificado ou ausente, embora você ainda possa importar o pool devido ao fato de que os dados espelhados ainda estão acessíveis. Se houver muitos dispositivos falhos ou ausentes, o pool não poderá ser importado. Por exemplo:


# zpool import
  pool: dozer
    id: 9784486589352144634
 state: FAULTED
action: The pool cannot be imported. Attach the missing
        devices and try again.
   see: http://www.sun.com/msg/ZFS-8000-6X
config:
        raidz1-0       FAULTED
          c1t0d0       ONLINE
          c1t1d0       FAULTED
          c1t2d0       ONLINE
          c1t3d0       FAULTED

Neste exemplo, dois discos de um dispositivo virtual RAID-Z estão ausentes, o que significa que não há dados replicados suficientes para reconstruir o pool. Em alguns casos, não há dispositivos suficientes para determinar a configuração completa. Neste caso, o ZFS não pode determinar quais eram os outros dispositivos que faziam parte do conjunto, embora o ZFS relate o máximo de informações possíveis sobre a situação. Por exemplo:


# zpool import
pool: dozer
    id: 9784486589352144634
 state: FAULTED
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
   see: http://www.sun.com/msg/ZFS-8000-6X
config:
        dozer          FAULTED   missing device
          raidz1-0     ONLINE
            c1t0d0     ONLINE
            c1t1d0     ONLINE
            c1t2d0     ONLINE
            c1t3d0     ONLINE
Additional devices are known to be part of this pool, though their
exact configuration cannot be determined.

Importando conjuntos de armazenamento ZFS de diretórios alternativos

Por padrão, o comando zpool import procura apenas dispositivos dentro do diretório /dev/dsk. Se existirem dispositivos em outro diretório, ou se estiver utilizando conjuntos apoiados por arquivos, será necessário utilizar a opção -d para pesquisar diretórios alternativos. Por exemplo:


# zpool create dozer mirror /file/a /file/b
# zpool export dozer
# zpool import -d /file
  pool: dozer
    id: 7318163511366751416
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer        ONLINE
          mirror-0   ONLINE
            /file/a  ONLINE
            /file/b  ONLINE
# zpool import -d /file dozer

Se houver dispositivos em vários diretórios, você pode especificar várias opções -d.

Importando pools de armazenamento do ZFS

Depois que um conjunto é identificado para importação, é possível importá-lo especificando o nome do conjunto ou o seu identificador numérico como um argumento para o comando zpool import. Por exemplo:


# zpool import tank

Se vários conjuntos disponíveis tiverem o mesmo nome, especifique o conjunto que será importando utilizando o identificador numérico. Por exemplo:


# zpool import
  pool: dozer
    id: 2704475622193776801
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer       ONLINE
          c1t9d0    ONLINE

  pool: dozer
    id: 6223921996155991199
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer       ONLINE
          c1t8d0    ONLINE
# zpool import dozer
cannot import 'dozer': more than one matching pool
import by numeric ID instead
# zpool import 6223921996155991199

Se o nome do pool estiver em conflito com um nome de pool existente, você poderá importar o pool com outro nome. Por exemplo:


# zpool import dozer zeepool

Este comando importa o pool exportado dozer usando o novo nome zeepool.

Se o pool não tiver sido exportado corretamente, o ZFS precisará do sinalizador -f para impedir que os usuários importem por acidente um pool ainda em uso em outro sistema. Por exemplo:


# zpool import dozer
cannot import 'dozer': pool may be in use on another system
use '-f' to import anyway
# zpool import -f dozer

Os pools também podem ser importados em uma raiz alternativa com o uso da opção -R. Para obter mais informações sobre pools raiz alternativos, consulte Usando pools de raiz alternativa do ZFS.

Recuperando pools de armazenamento destruídos do ZFS

O comando zpool import -D pode ser usado para recuperar um pool de armazenamento destruído. Por exemplo:


# zpool destroy tank
# zpool import -D
  pool: tank
    id: 5154272182900538157
 state: ONLINE (DESTROYED)
action: The pool can be imported using its name or numeric identifier.
config:

        tank        ONLINE
          mirror-0  ONLINE
            c1t0d0  ONLINE
            c1t1d0  ONLINE

Na saída zpool import acima, é possível identificar o conjunto tank como o conjunto destruído por causa das informações de estado a seguir:


state: ONLINE (DESTROYED)

Para recuperar o conjunto destruído, execute o comando zpool import - D novamente com o conjunto a ser recuperado. Por exemplo:


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

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

errors: No known data errors

Se um dos dispositivos do pool destruído estiver falho ou não estiver disponível, você poderá recuperar o pool destruído mesmo assim, ao incluir a opção -f . Neste cenário, importe o conjunto degradado e, em seguida, tente corrigir a falha do dispositivo. Por exemplo:


# zpool destroy dozer
# zpool import -D
pool: dozer
    id: 13643595538644303788
 state: DEGRADED (DESTROYED)
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
config:

        NAME         STATE     READ WRITE CKSUM
        dozer        DEGRADED     0     0     0
          raidz2-0   DEGRADED     0     0     0
            c2t8d0   ONLINE       0     0     0
            c2t9d0   ONLINE       0     0     0
            c2t10d0  ONLINE       0     0     0
            c2t11d0  UNAVAIL      0    35     1  cannot open
            c2t12d0  ONLINE       0     0     0

errors: No known data errors
# zpool import -Df dozer
# zpool status -x
  pool: dozer
 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 Thu Jan 21 15:38:48 2010
config:

        NAME         STATE     READ WRITE CKSUM
        dozer        DEGRADED     0     0     0
          raidz2-0   DEGRADED     0     0     0
            c2t8d0   ONLINE       0     0     0
            c2t9d0   ONLINE       0     0     0
            c2t10d0  ONLINE       0     0     0
            c2t11d0  UNAVAIL      0    37     0  cannot open
            c2t12d0  ONLINE       0     0     0

errors: No known data errors
# zpool online dozer c2t11d0
Bringing device c2t11d0 online
# zpool status -x
all pools are healthy

Atualizando pools de armazenamento do ZFS

Se os conjuntos de armazenamento do ZFS forem de uma versão anterior do Solaris, como o Solaris versão 10/09, é possível atualizar os conjuntos com o comando zpool upgrade para tirar proveito dos recursos de conjuntos da versão do Solaris 10. Além disso, o comando zpool status foi modificado para notificar você quando os pools estão executando versões mais antigas. Por exemplo:


# zpool status
  pool: tank
 state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
        still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
        pool will no longer be accessible on older software versions.
 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
            c1t1d0  ONLINE       0     0     0
errors: No known data errors

Você pode usar a sintaxe abaixo para identificar informações adicionais sobre uma versão específica e versões suportadas:


# zpool upgrade -v
This system is currently running ZFS pool version 22.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
 16  stmf property support
 17  Triple-parity RAID-Z
 18  Snapshot user holds
 19  Log device removal
 20  Compression using zle (zero-length encoding)
 21  Reserved
 22  Received properties

For more information on a particular version, including supported releases,
see the ZFS Administration Guide.

Em seguida, pode executar o comando zpool upgrade para atualizar todos os pools. Por exemplo:


# zpool upgrade -a

Observação –

Se você atualiza seu pool para uma versão ZFS mais recente, o pool não estará acessível nos sistemas que executam versões mais antigas do ZFS.