Este capítulo descreve como criar e administrar conjuntos de armazenamento no ZFS do Oracle Solaris.
Este capítulo traz as seguintes seções:
As seções seguintes fornecem informações detalhadas sobre os componentes de pool de armazenamento:
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:
c1t0d0
/dev/dsk/c1t0d0
/dev/foo/disk
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:
Se construir as configurações do ZFS em cima de LUNs a partir de matrizes de hardware RAID, é necessário entender a relação entre os recursos de redundância ZFS e os recursos de redundância oferecidos pela matriz. Determinadas configurações podem oferecer redundância e desempenho adequados, mas outras configurações não.
Você pode construir dispositivos lógicos para o ZFS usando volumes apresentados pelos gerenciadores de volume baseados em software, como Solaris Volume Manager (SVM) ou Veritas Volume Manager (VxVM). No entanto, estas configurações não são recomendáveis. Embora o ZFS funcione corretamente nestes dispositivos, o resultado pode ser um desempenho inferior a ótimo.
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.
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 |
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.
O ZFS fornece redundância de dados, bem como propriedades de autocorreção, em uma configuração espelhada e RAID-Z.
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.
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
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.
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.
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:
Quatro discos que usem distribuição dinâmica
Uma configuração RAID-Z de quatro direções
Dois espelhos bidirecionais que usem distribuição dinâmica
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.
As seções seguintes descrevem diferentes situações de criação e destruição de pools de armazenamento do ZFS:
Exibindo informações do dispositivo virtual do pool de armazenamento
Manipulando erros de criação do pool 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.
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.
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.
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:
Adicionar outro conjunto de discos de um dispositivo de nível superior adicional (vdev) a uma configuração espelhada existente. Para obter mais informações, consulte Adicionando dispositivos a um pool de armazenamento.
Anexar discos adicionais a uma configuração espelhada existente. Ou, anexar discos adicionais a uma configuração não replicada para criar uma configuração espelhada. Para obter mais informações, consulte Anexando e desanexando dispositivos em um pool de armazenamento.
Substituir um disco ou discos em uma configuração espelhada existente desde que os discos de substituição sejam maiores ou iguais ao tamanho do dispositivo a ser substituído. Para obter mais informações, consulte Substituindo dispositivos em um pool de armazenamento.
Desanexando um disco em uma configuração espelhada desde que os dispositivos restantes forneçam redundância adequada para a configuração. Para obter mais informações, consulte Anexando e desanexando dispositivos em um pool de armazenamento.
Dividindo uma configuração espelhada ao desanexar um dos discos ao criar um novo conjunto idêntico. Para mais informações, consulte Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado.
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.
É possível instalar e inicializar a partir de um sistema de arquivos ZFS. Consulte as seguintes informações de configuração do pool raiz:
Os discos usados para o pool raiz devem ter uma legenda VTOC (SMI) e o pool deve ser criado com faixas de disco.
O conjunto raiz deve ser criado como uma configuração espelhada ou uma configuração de disco único. Não é possível adicionar discos adicionais pra criar vários dispositivos virtuais espelhados de nível superior ao utilizar o comando zpool add, mas é possível expandir um dispositivo virtual espelhado ao utilizar o comando zpool attach.
A configuração distribuída ou RAID-Z não é suportada.
Um conjunto raiz não pode possuir um dispositivo de log em separado.
Se tentar utilizar uma configuração não suportada para um conjunto raiz, serão exibidas mensagens semelhantes às seguintes:
ERROR: ZFS pool <pool-name> does not support boot environments |
# zpool add -f rpool log c0t6d0s0 cannot add to 'rpool': root pool can not have multiple vdevs or separate logs |
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.
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:
Adicionar outro conjunto de discos para um dispositivo virtual de nível superior adicional em uma configuração RAID-Z existente. Para obter mais informações, consulte Adicionando dispositivos a um pool de armazenamento.
Substituir um disco ou discos em uma configuração RAID-Z existente desde que os discos de substituição sejam maiores ou iguais ao dispositivo a ser substituído. Para obter mais informações, consulte Substituindo dispositivos em um pool de armazenamento.
No momento, as operações seguintes não são suportadas em uma configuração RAID-Z:
Anexação de um disco adicional a uma configuração RAID-Z existente.
Desanexação de um disco de uma configuração RAID-Z, exceto quando estiver desanexando um disco que foi substituído por um disco sobressalente.
Não é possível remover completamente um dispositivo que não é um dispositivo de log ou de cache de uma configuração RAID-Z. Uma RFE é preenchida para esse recurso.
Para obter informações sobre a configuração RAID-Z, consulte Configuração de pool de armazenamento RAID-Z.
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.
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:
A utilização dos dispositivos de cache fornecem o maior aperfeiçoamento de desempenho para cargas de trabalho aleatórias de leitura de conteúdo geralmente estático.
A capacidade e as leituras podem ser monitoradas usando o comando zpool iostat.
Um único ou vários dispositivos de cache podem ser adicionados quando o conjunto é criado. Também podem ser adicionados e removidos depois da criação do conjunto. Para obter mais informações, consulte o Exemplo 4–4.
Os dispositivos de cache não podem ser espalhados ou fazer parte de uma configuração RAID-Z.
Se for encontrado em erro de leitura em um dispositivo de cache, aquele E/S é reemitido para o dispositivo de conjunto de armazenamento original, que pode fazer parte de uma configuração espelhada ou RAID-Z. O conteúdo dos dispositivos de cache é considerado volátil, similar a outros caches de sistema.
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 |
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.
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:
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.
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.
O disco está em uso como o dispositivo de dump dedicado para o sistema. Para corrigir este erro, use o comando dumpadm.
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:
O disco contém um sistema de arquivos conhecido, embora não esteja montado e não pareça estar em uso.
Este disco é parte de um volume do Solaris Volume Manager.
O disco está em utilização como um ambiente de inicialização alternativo para o Oracle Solaris Live Upgrade.
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ã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.
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.
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.
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 |
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.
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.
Grande parte das informações básicas relacionadas a dispositivos é tratada em Componentes de um pool de armazenamento do ZFS. Depois da criação de um conjunto, é possível efetuar várias tarefas para gerenciar os dispositivos físicos dentro do conjunto.
Anexando e desanexando dispositivos em um pool de armazenamento
Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado
Colocando dispositivos off-line e on-line em um pool de armazenamento
É possível adicionar espaço de disco dinamicamente a um conjunto ao adicionar um novo dispositivo virtual de nível superior. Este espaço de disco fica disponível imediatamente a todos os conjuntos de dados no conjunto. Para adicionar um novo dispositivo virtual a um pool, use o comando zpool add. Por exemplo:
# zpool add zeepool mirror c2t1d0 c2t2d0 |
O formato para especificar os dispositivos virtuais é o mesmo para o comando zpool create. Os dispositivos são verificados para determinar se estão em uso e o comando não pode alterar o nível de redundância sem a opção -f. O comando também suporta a opção -n para que seja possível realizar uma simulação. Por exemplo:
# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update 'zeepool' to the following configuration: zeepool mirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0 |
Esta sintaxe de comando pode adicionar dispositivos espelhados c3t1d0 e c3t2d0 à configuração existente do conjunto zeepool.
Para obter mais informações sobre como é realizada a validação de dispositivos virtuais, consulte Detectando dispositivos em uso.
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 |
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 |
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 |
É possível adicionar ao seu conjunto de armazenamento ZFS e removê-los se não forem mais necessários.
Use o comando zpool add para adicionar dispositivos de cache. Por exemplo:
# zpool add tank cache c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors |
Os dispositivos de cache não podem ser espalhados ou fazer parte de uma configuração RAID-Z.
Use o comando zpool remove para remover dispositivos de cache. Por exemplo:
# zpool remove tank c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 errors: No known data errors |
Atualmente, o comando zpool remove suporta apenas remover reservas, dispositivos de log e de cache. Os dispositivos fazem parte da configuração de pool espelhado principal e podem ser removidos usando o comando zpool detach. Dispositivos não-redundantes e RAID-Z não podem ser removidos de um conjunto.
Para obter mais informações sobre como utilizar dispositivos de cache em um conjunto de armazenamento ZFS, consulte Criando um conjunto de armazenamento do ZFS com dispositivos de cache.
Além do comando zpool add, é possível utilizar o comando zpool attach para adicionar um novo dispositivo a um dispositivo existente espelhado ou não espelhado.
Se estiver anexando um disco para criar um conjunto raiz espelhado, consulte Como 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.
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.
Além disso, é possível converter um conjunto de armazenamento não redundante em um conjunto de armazenamento redundante utilizando o comando zpool attach. Por exemplo:
# zpool create tank c0t1d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach tank c0t1d0 c1t1d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 73.5K resilvered errors: No known data errors |
O comando zpool detach pode ser usado para desanexar um dispositivo de um pool de armazenamento espelhado. Por exemplo:
# zpool detach zeepool c2t1d0 |
Entretanto, esta operação falha se nenhuma outra réplica válida dos dados existir. Por exemplo:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: only applicable to mirror and replacing vdevs |
Um conjunto de armazenamento ZFS espelhado pode ser clonado rapidamente como um conjunto de backup ao utilizar o comando zpool split.
Atualmente, este recurso não pode ser utilizado para dividir um conjunto raiz de espelhado.
É possível utilizar o comando zpool split para desanexar 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:
Este recurso não está disponível para configurações RAIDZ ou conjunto não redundante de vários discos.
Operações de aplicativo e dados devem ser pausados antes de tentar uma operação zpool split.
Tendo em discos essa honra que, ao invés de ignorar, o comando de cache de gravação de esvaziamento do disco é importante.
Um conjunto não pode ser dividido se o resilvering estiver sendo processado.
Dividir um conjunto espelhado é o ideal quando composto de dois ou três discos, onde o último disco no conjunto original é utilizado para o conjunto recém criado. Então, é possível utilizar o comando zpool attach para recriar o conjunto de armazenamento original espelhado ou converter o conjunto recém criado em um conjunto de armazenamento espelhado. Não existe nenhuma maneira atualmente de criar um conjunto espelhado novo de um conjunto espelhado existente ao utilizar este recurso.
Se o conjunto existente é um espelho tridirecional, então o novo conjunto conterá um disco depois da operação de divisão. Se o conjunto existente é um espelho bidirecional, então o resultado é de dois conjuntos não redundantes de dois discos. Será necessário anexar dois discos adicionais para converter os conjuntos não redundantes para conjuntos espelhados.
Uma boa maneira de manter os dados redundantes durante uma operação de divisão é dividir um conjunto de armazenamento espelhado que é composto de três discos para que o conjunto original seja composto por dois discos espelhados depois da operação de divisão.
No exemplo a seguir, um conjunto de armazenamento espelhado chamado trinity, com três discos, c1t0d0, c1t2d0 e c1t3d0, é dividido. Os dois conjuntos resultantes são os conjuntos espelhados trinity, com discos c1t0d0 e c1t2d0, e o novo conjunto, neo, com disco c1t3d0. Cada conjunto possui conteúdo idêntico.
# zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors # zpool split trinity neo # zpool import neo # zpool status trinity neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors |
O ZFS permite que dispositivos sejam colocados off-line ou on-line. Quando o hardware não é confiável ou não funciona corretamente, o ZFS continua a ler ou gravar dados no dispositivo, pressupondo que a condição é apenas temporária. Se a condição não for temporária, é possível instruir o ZFS a ignorar o dispositivo colocando-o off-line. O ZFS não envia solicitações a um dispositivo off-line.
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.
É possível colocar um dispositivo off-line com o uso do comando zpool offline. Se o dispositivo for um disco, ele pode ser especificado pelo caminho ou por um nome abreviado. Por exemplo:
# zpool offline tank c1t0d0 bringing device c1t0d0 offline |
Considere os pontos a seguir ao tornar um dispositivo off-line:
Não é possível colocar um pool off-line no momento em que se torna falho. Por exemplo, não é possível colocar off-line dois dispositivos de uma configuração raidz1, nem colocar off-line um dispositivo virtual de nível superior.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas |
Por padrão, o estado OFF-LINEé persistente. O dispositivo permanece off-line quando o sistema é reiniciado.
Para colocar um dispositivo temporariamente off-line, use a opção zpool offline -t. Por exemplo:
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline |
Quando o sistema é reiniciado, este dispositivo volta automaticamente ao estado ONLINE.
Quando um dispositivo é colocado off-line, ele não é desanexado do pool de armazenamento. Se tentar utilizar o dispositivo colocado off-line em outro conjunto, mesmo depois de o conjunto original ter sido destruído, será exibida uma mensagem semelhante à seguinte:
device is part of exported or potentially active ZFS pool. Please see zpool(1M) |
Se desejar utilizar o dispositivo off-line em outro conjunto de armazenamento depois de ter destruído o conjunto de armazenamento original, primeiro coloque o dispositivo online, e então destrua o conjunto de armazenamento original.
Outra forma de utilizar um dispositivo de outro conjunto de armazenamento, enquanto mantém o conjunto de armazenamento original, é substituindo o dispositivo existente no conjunto de armazenamento original por outro dispositivo semelhante. Para obter informações sobre a substituição de dispositivos, consulte Substituindo dispositivos em um pool de armazenamento.
Os dispositivos off-line aparecem no estado OFF-LINE quando é consultado o estado do conjunto. Para obter informações sobre consultas de status do pool, consulte Consultando status de pool de armazenamento do ZFS.
Para obter mais informações sobre a integridade de dispositivos, consulte Determinando o status de integridade de pools de armazenamento do ZFS.
Depois de colocar um dispositivo off-line, ele pode ser colocado novamente on-line com a utilização do comando zpool online. Por exemplo:
# zpool online tank c1t0d0 bringing device c1t0d0 online |
Quando um dispositivo é colocado on-line, quaisquer dados que tenham sido gravados no conjunto são sincronizados novamente com o dispositivo recém disponível. Observe que não é possível utilizar dispositivos on-line para substituir um disco. Se ao colocar um dispositivo off-line, substituir o dispositivo e colocá-lo on-line, ele permanece no estado de falho.
Se tentar colocar um dispositivo falho on-line, será exibida uma mensagem semelhante à seguinte:
# zpool online tank c1t0d0 warning: device 'c1t0d0' onlined, but remains in faulted state use 'zpool replace' to replace devices that are no longer present |
Também pode ser possível visualizar a mensagem de disco falho exibida no console ou escrita no arquivo /var/adm/messages. Por exemplo:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Para obter mais informações sobre a substituição de um dispositivo falho, consulte Reparando um dispositivo faltando.
É 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 |
Se um dispositivo for colocado off-line devido a uma falha que cause erros a serem listados na saída zpool status, você poderá limpar as contagens de erro com o comando zpool clear.
Se especificado sem argumentos, este comando limpará todos os erros de dispositivos dentro do pool. Por exemplo:
# zpool clear tank |
Se um ou mais dispositivos forem especificados, este comando limpará somente erros associados aos dispositivos especificados. Por exemplo:
# zpool clear tank c1t0d0 |
Para obter mais informações sobre a limpeza de erros de zpool, consulte Apagando erros transitórios.
É possível substituir um dispositivo em um pool de armazenamento usando o comando zpool replace.
Se estiver substituindo fisicamente um dispositivo por outro dispositivo na mesma localização em um conjunto redundante, então só é preciso identificar o dispositivo substituído. 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:
Coloque o disco off-line, se necessário, com o comando zpool offline.
Remova o disco que será substituído.
Insira o disco de substituição.
Execute o comando zpool replace. Por exemplo:
# zpool replace tank c1t1d0 |
Coloque o disco on-line outra vez com o comando zpool online.
Em alguns sistemas, como o Sun Fire 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:
Se a propriedade autoreplace do conjunto for definida como on, qualquer dispositivo novo encontrado na mesma localização física que um dispositivo que antes pertencia ao conjunto será automaticamente formatado e substituído. Não é necessário utilizar o comando zpool replace quando esta propriedade estiver ativada. Este recurso pode não estar disponível em todos os hardwares.
O tamanho do dispositivo de substituição deve ser igual ou maior que o menor disco em um uma configuração espelhada ou RAID-Z.
Quando um dispositivo de substituição que é maior no tamanho que o dispositivo que está substituindo é adicionado ao conjunto, não é expandido automaticamente para seu tamanho total. O valor da propriedade do conjunto autoexpand determina se um LUN de substituição é expandido para seu tamanho total quando o disco é adicionado ao conjunto. Por padrão, a propriedade autoexpand é desativada. É possível ativar esta propriedade ao expandir o tamanho do LUN antes ou depois de adicionar o maior LUN ao conjunto.
No exemplo a seguir, dois discos de 16 GB em um conjunto espelhado são substituídos por dois discos de 72 GB. A propriedade autoexpand é ativada depois das substituições do disco para expandir os tamanho completo do LUN.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE - |
Substituir muitos discos em um conjunto grande é demorado devido ao resilvering de dados nos novos discos. Além disso, deve ser considerada a execução do comando zpool scrub entre as substituições de disco para garantir que os dispositivos de substituição estejam operacionais e que os dados estejam sendo gravados corretamente.
Se um disco defeituoso foi substituído automaticamente por um sobressalente, pode ser necessário desanexar o sobressalente depois que o disco defeituoso for substituído. Para obter mais informações sobre a desanexação de um sobressalente, consulte Ativando e desativando sobressalentes no pool de armazenamento.
Para obter mais informações sobre a substituição de dispositivos, consulte Reparando um dispositivo faltando e Substituindo ou reparando um dispositivo modificado.
O recurso de sobressalentes permite identificar os discos que poderiam ser usados para substituir um dispositivo falho ou defeituoso em um ou mais pontos de armazenamento. A atribuição de um dispositivo como reserva significa que o dispositivo não é um dispositivo ativo em um conjunto, mas se um dispositivo ativo no conjunto falhar, o reserva substituirá automaticamente o dispositivo falho.
Os dispositivos podem ser designados como sobressalentes nas seguintes situações:
Quando o conjunto é criado com o comando zpool create.
Após o pool ser criado com o comando zpool add.
Dispositivos reservas podem ser compartilhados entre vários conjuntos, mas os sobressalentes não podem ser compartilhados entre vários conjuntos em sistemas diferentes.
Os exemplos a seguir mostram atribuir dispositivos como reservas quando o conjunto é criado:
# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0 # zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t2d0 AVAIL c2t2d0 AVAIL errors: No known data errors |
O exemplo a seguir mostra como atribuir reservas ao adicioná-los a um conjunto depois que o conjunto é criado:
# zpool add neo spare c5t3d0 c6t3d0 # zpool status neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0 spares c5t3d0 AVAIL c6t3d0 AVAIL errors: No known data errors |
Os sobressalentes podem ser removidos de um pool de armazenamento com o uso do comando zpool remove. Por exemplo:
# zpool remove zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t3d0 AVAIL errors: No known data errors |
Um reserva não pode ser removido se estiver sendo utilizado atualmente por um conjunto de armazenamento.
Considere o seguinte quando estiver utilizando reservas ZFS:
Atualmente, o comando zpool remove pode ser utilizado apenas para remover reservas, dispositivos de cache e log.
Para adicionar um disco como um reserva, o reserva deve ter tamanho igual ou maior ao tamanho do maior disco no conjunto. É permitido adicionar um disco menor como um sobressalente de um pool. Entretanto, quando o sobressalente menor é ativado, automaticamente ou com o comando zpool replace, a operação falha com um erro semelhante ao seguinte:
cannot replace disk3 with disk4: device is too small |
Os sobressalentes são ativados das seguintes maneiras:
Substituição manual: substitui um dispositivo falho em um conjunto de armazenamento por um reserva utilizando o comando zpool replace.
Substituição automática: quando a falha é detectada, um agente FMA examina o conjunto para verificar se existem reservas disponíveis. Se existirem, ele substituirá o dispositivo falho por um sobressalente disponível.
Se um reserva atualmente em uso falha, o agente desanexa tal sobressalente, cancelando assim a substituição. O agente tenta, então, substituir o dispositivo por outro sobressalente, se houver um disponível. Este recurso é atualmente limitado pelo fato de o mecanismo de diagnóstico do ZFS emitir falhas somente quando um dispositivo desaparece do sistema.
Se substituir fisicamente um dispositivo falho por um sobressalente ativo, é possível reativar o dispositivo original, utilizando o comando zpool detach para desanexar o sobressalente. Se definir a propriedade autoreplace do conjunto como on, o sobressalente é desanexado e devolvido automaticamente para o grupo disponível quando o novo dispositivo for inserido e a operação on-line terminar.
Substitua manualmente um dispositivo com um reserva utilizando o comando zpool replace. Consulte Exemplo 4–8.
Um dispositivo falho é substituído automaticamente quando um sobressalente está disponível. Por exemplo:
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 88.5K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors |
Atualmente, é possível desativar um reserva das seguintes maneiras:
Ao remover o reserva do conjunto de armazenamento.
Ao desanexar um reserva depois que o disco falho é substituído fisicamente. Consulte Exemplo 4–9.
Ao permutar temporariamente ou permanentemente o reserva. Consulte Exemplo 4–10.
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 |
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 |
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 |
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 |
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:
|
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. |
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
Visualizando estatísticas E/S para conjuntos de armazenamento ZFS
Determinando o status de integridade de pools de armazenamento do ZFS
O comando zpool list pode ser usado para exibir informações básicas sobre pools.
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:
O nome do pool.
O tamanho total do conjunto, igual à soma do tamanho de todos os dispositivos virtuais de nível superior.
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.
A quantidade de espaço não alocado no pool.
A quantidade de espaço utilizada, expressa como uma porcentagem do espaço total de disco.
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.
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 - |
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.
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 |
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:
O registro não pode ser desativado.
O log é salvo constantemente no disco, o que significa que o log é salvo nas através das reinicializações do sistema.
O registro é implementado como buffer de anel. O tamanho mínimo é de 128 KB. O tamanho máximo é de 32 MB.
Para conjuntos menores, o tamanho máximo está limitado a 1% do tamanho do conjunto, nos quais o tamanho é determinado no momento da criação do conjunto.
O log não requer administração, o que significa que ajustar o tamanho ou alterar a localização do log é desnecessário.
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 |
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:
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.
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.
O número de operações de E/S de leitura enviado para o pool ou dispositivo, incluindo solicitações de metadados.
O número de operações de E/S de gravação enviado para o pool ou dispositivo.
A largura de banda de todas as operações de leitura (incluindo metadados), expressa como unidades por segundo.
A largura de banda de todas as operações de gravação, expressa como unidades por segundo.
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.
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:
Primeiro, estatísticas e utilização do espaço de disco estão disponíveis apenas para dispositivos virtuais de nível superior. A forma como o espaço de disco é alocado entre os dispositivos virtuais de espelho e RAID-Z é específica para a implementação e não é expressa facilmente como um único número.
Em segundo lugar, os números talvez não sejam somados com exatidão, como seria de esperar. Em especial, operações nos dispositivos espelhados e RAID-Z não serão exatamente iguais. Esta diferença é particularmente evidente logo depois que um conjunto é criado, uma vez que uma quantidade significativa de E/S é feita diretamente para os discos como parte da criação do conjunto, que não é contabilizada ao nível do espelho. Com o tempo, estes números equalizam gradualmente. Entretanto, dispositivos corrompidos, que não respondem ou estão off-line também podem afetar esta simetria.
É possível usar o mesmo conjunto de opções (intervalo e contagem) ao examinar estatísticas de dispositivos virtuais.
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:
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.
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.
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.
O dispositivo foi colocado explicitamente off-line pelo administrador.
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.
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.
É 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.
É 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.
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.
Determinando pools de armazenamento disponíveis para importação
Importando conjuntos de armazenamento ZFS de diretórios alternativos
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.
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.
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. |
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.
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.
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 |
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 |
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.