284
Guia de administração do ZFS Solaris Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. Número da peça: 820–0447–13 Setembro de 2008

Guia de amdiminstracao do zfs solaris

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Guia de amdiminstracao do zfs solaris

Guia de administração do ZFSSolaris

Sun Microsystems, Inc.4150 Network CircleSanta Clara, CA 95054U.S.A.

Número da peça: 820–0447–13Setembro de 2008

Page 2: Guia de amdiminstracao do zfs solaris

Copyright 2008 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Todos os direitos reservados.

A Sun Microsystems, Inc. tem os direitos de propriedade intelectual relativos à tecnologia contida no produto descrito neste documento. Em particular, e semlimitações, estes direitos de propriedade intelectual podem incluir uma ou mais patentes nos EUA ou solicitações pendentes de patente nos EUA e em outros países.

Software comercial – Direitos do Governo dos EUA. Os usuários governamentais estão sujeitos ao contrato padrão de licença da Sun MicroSystems, Inc. e àsprovisões aplicáveis do FAR e seus suplementos.

Esta distribuição pode incluir materiais desenvolvidos por terceiros.

O produto pode conter partes derivadas dos sistemas Berkeley BSD, licenciadas pela Universidade da Califórnia. UNIX é uma marca registrada nos Estados Unidos eem outros países, licenciada exclusivamente através da X/Open Company, Ltd.

Sun, Sun Microsystems, a logomarca Sun, a logomarca Solaris, a logomarca Java Coffee Cup, docs.sun.com, Java e Solaris são marcas comerciais ou marcasregistradas da Sun Microsystems, Inc. ou de suas subsidiárias nos EUA e em outros países. Todas as marcas comerciais SPARC são licenciadas e são marcascomerciais ou registradas da SPARC International, Inc. nos Estados Unidos e em outros países. Os produtos com as marcas comerciais SPARC são baseados em umaarquitetura desenvolvida pela Sun Microsystems, Inc. Legato NetWorker é uma marca registrada da Legato Systems, Inc.

As interfaces gráficas de usuário OPEN LOOK e SunTM foram desenvolvidas pela Sun Microsystems, Inc. para seus usuários e licenciados. A Sun reconhece osesforços pioneiros da Xerox em pesquisar e desenvolver o conceito de interfaces gráficas ou visuais de usuário para o setor de informática. A Sun detém uma licençanão exclusiva da Xerox para o Xerox Graphical User Interface, cuja licença também cobre os licenciados da Sun que implementarem o OPEN LOOK GUIs e que deoutra forma estão em conformidade com os contratos de licença da Sun.

Os produtos cobertos por e as informações contidas nesta publicação são controlados por leis de Controle de Exportação dos EUA e podem estar sujeitos às leis deexportação ou de importação em outros países. São estritamente proibidos para usuários finais ou usos específicos, diretos ou indiretos, em armas nucleares,marítimo nucleares, químicas, biológicas ou mísseis. A exportação ou reexportação para países sujeitos a embargo pelos EUA ou para entidades identificadas emlistas de exclusão de exportação dos EUA, incluindo, mas não limitado a, as pessoas negadas e listas de nacionalidades especialmente designadas, é estritamenteproibida.

A DOCUMENTAÇÃO É FORNECIDA "NO ESTADO" E TODAS AS CONDIÇÕES EXPRESSAS OU IMPLÍCITAS, REPRESENTAÇÕES DE GARANTIAS,INCLUINDO QUALQUER GARANTIA IMPLÍCITA DE COMERCIABILIDADE, ADEQUAÇÃO PARA UM DETERMINADO PROPÓSITO DE NÃOINFRAÇÃO, SÃO RENUNCIADOS, COM EXCEÇÃO NA EXTENSÃO QUE TAIS RENUNCIAS SEJAM DETERMINADAS COMO LEGALMENTEINVÁLIDAS.

Copyright 2008 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Tous droits réservés.

Sun Microsystems, Inc. détient les droits de propriété intellectuelle relatifs à la technologie incorporée dans le produit qui est décrit dans ce document. En particulier,et ce sans limitation, ces droits de propriété intellectuelle peuvent inclure un ou plusieurs brevets américains ou des applications de brevet en attente aux Etats-Uniset dans d'autres pays.

Cette distribution peut comprendre des composants développés par des tierces personnes.

Certaines composants de ce produit peuvent être dérivées du logiciel Berkeley BSD, licenciés par l'Université de Californie. UNIX est une marque déposée auxEtats-Unis et dans d'autres pays; elle est licenciée exclusivement par X/Open Company, Ltd.

Sun, Sun Microsystems, le logo Sun, le logo Solaris, le logo Java Coffee Cup, docs.sun.com, Java et Solaris sont des marques de fabrique ou des marques déposées deSun Microsystems, Inc., ou ses filiales, aux Etats-Unis et dans d'autres pays. Toutes les marques SPARC sont utilisées sous licence et sont des marques de fabrique oudes marques déposées de SPARC International, Inc. aux Etats-Unis et dans d'autres pays. Les produits portant les marques SPARC sont basés sur une architecturedéveloppée par Sun Microsystems, Inc. Legato NetWorker is a trademark or registered trademark of Legato Systems, Inc.

L'interface d'utilisation graphique OPEN LOOK et Sun a été développée par Sun Microsystems, Inc. pour ses utilisateurs et licenciés. Sun reconnaît les efforts depionniers de Xerox pour la recherche et le développement du concept des interfaces d'utilisation visuelle ou graphique pour l'industrie de l'informatique. Sun détientune licence non exclusive de Xerox sur l'interface d'utilisation graphique Xerox, cette licence couvrant également les licenciés de Sun qui mettent en place l'interfaced'utilisation graphique OPEN LOOK et qui, en outre, se conforment aux licences écrites de Sun.

Les produits qui font l'objet de cette publication et les informations qu'il contient sont régis par la legislation américaine en matière de contrôle des exportations etpeuvent être soumis au droit d'autres pays dans le domaine des exportations et importations. Les utilisations finales, ou utilisateurs finaux, pour des armes nucléaires,des missiles, des armes chimiques ou biologiques ou pour le nucléaire maritime, directement ou indirectement, sont strictement interdites. Les exportations ouréexportations vers des pays sous embargo des Etats-Unis, ou vers des entités figurant sur les listes d'exclusion d'exportation américaines, y compris, mais de manièrenon exclusive, la liste de personnes qui font objet d'un ordre de ne pas participer, d'une façon directe ou indirecte, aux exportations des produits ou des services quisont régis par la legislation américaine en matière de contrôle des exportations et la liste de ressortissants spécifiquement designés, sont rigoureusement interdites.

LA DOCUMENTATION EST FOURNIE "EN L'ETAT" ET TOUTES AUTRES CONDITIONS, DECLARATIONS ET GARANTIES EXPRESSES OU TACITESSONT FORMELLEMENT EXCLUES, DANS LA MESURE AUTORISEE PAR LA LOI APPLICABLE, Y COMPRIS NOTAMMENT TOUTE GARANTIEIMPLICITE RELATIVE A LA QUALITE MARCHANDE, A L'APTITUDE A UNE UTILISATION PARTICULIERE OU A L'ABSENCE DE CONTREFACON.

081117@21288

Page 3: Guia de amdiminstracao do zfs solaris

Conteúdo

Prefácio ..................................................................................................................................................11

1 Sistema de arquivos ZFS (Introdução) ............................................................................................. 15O que há de novo no ZFS? .................................................................................................................. 15

Suporte à inicialização e instalação de ZFS ............................................................................... 16Revertendo um conjunto de dados sem desmontar ................................................................. 16Aprimoramentos no comando zfs send ..................................................................................16Cotas e reservas do ZFS somente para dados do sistema de arquivos ................................... 17Propriedades do pool de armazenamento do ZFS ................................................................... 18Aprimoramentos no histórico do comando do ZFS (zpool history) ..................................19Atualizando sistemas de arquivos do ZFS (zfs upgrade) .......................................................20Administração delegada de ZFS ................................................................................................. 21Configurando dispositivos separados de log ZFS .................................................................... 21Criando conjuntos de dados ZFS intermediários .................................................................... 22Aprimoramentos da conexão automática do ZFS .................................................................... 23Renomeando recursivamente instantâneos do ZFS (zfs rename -r) ....................................24Compactação GZIP disponível no ZFS ..................................................................................... 25Armazenamento de várias cópias de dados de usuário do ZFS .............................................. 25Saída zpool status aprimorada ................................................................................................26Aprimoramentos na iSCSI do Solaris e ZFS .............................................................................. 26Histórico do comando ZFS (zpool history) ...........................................................................27Aprimoramentos das propriedades do ZFS .............................................................................. 28Exibindo todas as informações do sistema de arquivos ZFS ................................................... 29Nova opção -F do zfs receive ..................................................................................................29Instantâneos recursivos do ZFS .................................................................................................. 29RAID-Z de paridade dupla (raidz2) ......................................................................................... 30Sobressalentes para dispositivos do pool de armazenamento do ZFS ................................... 30Substituindo um sistema de arquivos ZFS por um clone do ZFS (zfs promote) .................30

3

Page 4: Guia de amdiminstracao do zfs solaris

Atualizando pools de armazenamento do ZFS (zpool upgrade) ...........................................30Comandos de armazenamento e backup do ZFS renomeados .............................................. 31Recuperando pools de armazenamento destruídos ................................................................. 31ZFS integrado ao gerenciador de falhas ..................................................................................... 31Novo comando zpool clear ......................................................................................................32Formato compacto da ACL NFSv4 ............................................................................................ 32File System Monitoring Tool (fsstat) ..................................................................................... 32Gerenciamento do ZFS baseado na Web .................................................................................. 33

O que é ZFS? ......................................................................................................................................... 34Armazenamento de ZFS em pool ............................................................................................... 34Semânticas transacionais ............................................................................................................ 34Somas de verificação e autocorreção de dados ......................................................................... 35Escalabilidade não paralela ......................................................................................................... 35Instantâneos do ZFS .................................................................................................................... 36Administração simplificada ........................................................................................................ 36

Terminologia do ZFS .......................................................................................................................... 37Requisitos para nomeação de componentes do ZFS ....................................................................... 39

2 Guia de introdução do ZFS ................................................................................................................. 41Recomendações e requisitos de software e hardware do ZFS ........................................................ 41Criando um sistema de arquivos ZFS básico .................................................................................... 42Criando um pool de armazenamento do ZFS .................................................................................. 43

▼ Como identificar os requisitos de armazenamento para o pool de armazenamento doZFS ................................................................................................................................................. 43

▼ Como criar um pool de armazenamento do ZFS ..................................................................... 43Criando uma hierarquia de sistemas de arquivos ZFS .................................................................... 44

▼ Como determinar a hierarquia do sistema de arquivos ZFS ................................................... 45▼ Como criar sistemas de arquivos ZFS ........................................................................................ 45

3 Diferenças entre o ZFS e os sistemas de arquivos tradicionais ....................................................49Granularidade do sistema de arquivos ZFS ...................................................................................... 49Contagem de espaço do ZFS .............................................................................................................. 50

Comportamento por espaço excedido ...................................................................................... 50Montando sistemas de arquivos ZFS ................................................................................................ 51Gerenciamento de volume tradicional ............................................................................................. 51

Conteúdo

Guia de administração do ZFS Solaris • Setembro de 20084

Page 5: Guia de amdiminstracao do zfs solaris

Novo modelo de ACL do Solaris ........................................................................................................ 51

4 Instalando e inicializando um sistema de arquivos raiz ZFS ........................................................53Instalando e inicializando um sistema de arquivos raiz ZFS (Visão geral) ................................... 53

Recursos de instalação do ZFS .................................................................................................... 54Requisitos de instalação do Solaris e do Solaris Live Upgrade para suporte ao ZFS ............ 55

Instalando um sistema de arquivos raiz ZFS (Instalação inicial) ................................................... 57Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart) ................................... 63

Exemplos de perfil do JumpStart de ZFS ................................................................................... 63Palavras-chave do JumpStart de ZFS ......................................................................................... 64Problemas do JumpStart de ZFS ................................................................................................. 66

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris LiveUpgrade) ............................................................................................................................................... 67

Problemas de migração do Solaris Live Upgrade do ZFS ........................................................ 68Usando o Solaris Live Upgrade para migrar para um sistema de arquivos raiz ZFS (semregiões) .......................................................................................................................................... 69Usando o Solaris Live Upgrade para migrar um sistema com regiões ................................... 74

Suporte do ZFS para dispositivos de permuta e despejo ................................................................. 79Ajustando os tamanhos dos dispositivos de permuta e despejo do ZFS ................................ 80

Inicializando a partir de um sistema de arquivos raiz ZFS ............................................................. 81Inicializando de um disco alternativo em um pool raiz ZFS espelhado ................................ 82Inicializando a partir de um sistema de arquivos raiz ZFS em um sistema baseado emSPARC ........................................................................................................................................... 83Inicializando a partir de um sistema de arquivos raiz ZFS em um sistema baseado emx86 .................................................................................................................................................. 85Solucionando problemas do ponto de montagem do ZFS que impendem uma inicializaçãobem-sucedida ............................................................................................................................... 86

5 Gerenciando pools de armazenamento do ZFS ............................................................................. 89Componentes de um pool de armazenamento do ZFS ................................................................... 89

Usando discos em um pool de armazenamento do ZFS .......................................................... 89Usando faixas em um pool de armazenamento do ZFS .......................................................... 91Usando arquivos em um pool de armazenamento do ZFS ..................................................... 91

Recursos de replicação de um pool de armazenamento do ZFS .................................................... 92Configuração de pool de armazenamento espelhado .............................................................. 92Configuração de pool de armazenamento RAID-Z ................................................................. 92

Conteúdo

5

Page 6: Guia de amdiminstracao do zfs solaris

Dados de autocorreção em uma configuração redundante .................................................... 94Distribuição dinâmica em um pool de armazenamento ......................................................... 94

Criando e destruindo pools de armazenamento do ZFS ................................................................ 94Criando um pool de armazenamento do ZFS .......................................................................... 95Exibindo informações do dispositivo virtual do pool de armazenamento ........................... 98Manipulando erros de criação do pool de armazenamento do ZFS ...................................... 99Destruindo pools de armazenamento do ZFS ........................................................................ 102

Gerenciando dispositivos em pools de armazenamento do ZFS ................................................. 103Adicionando dispositivos a um pool de armazenamento ..................................................... 104Anexando e desanexando dispositivos em um pool de armazenamento ............................ 107Colocando dispositivos off-line e on-line em um pool de armazenamento ....................... 109Limpando dispositivos de pool de armazenamento .............................................................. 112Substituindo dispositivos em um pool de armazenamento .................................................. 112Designando sobressalentes no pool de armazenamento ....................................................... 114

Gerenciando propriedades do pool de armazenamento do ZFS ................................................. 118Consultando status de pool de armazenamento do ZFS .............................................................. 121

Exibindo informações básicas do pool de armazenamento do ZFS ..................................... 121Exibindo estatísticas de E/S do pool de armazenamento do ZFS ......................................... 123Determinando o status de integridade de pools de armazenamento do ZFS ..................... 125

Migrando pools de armazenamento do ZFS .................................................................................. 128Preparando para migração do pool de armazenamento do ZFS .......................................... 128Exportando um pool de armazenamento do ZFS .................................................................. 129Determinando pools de armazenamento disponíveis para importação ............................. 129Localizando pools de armazenamento do ZFS a partir de diretórios alternativos ............. 131Importando pools de armazenamento do ZFS ....................................................................... 132Recuperando pools de armazenamento destruídos do ZFS .................................................. 133Atualizando pools de armazenamento do ZFS ....................................................................... 135

6 Gerenciando sistemas de arquivos ZFS ......................................................................................... 137Criando e destruindo sistemas de arquivos ZFS ............................................................................ 138

Criando um sistema de arquivos ZFS ...................................................................................... 138Destruindo um sistema de arquivos ZFS ................................................................................ 139Renomeando um sistema de arquivos ZFS ............................................................................. 140

Introduzindo as propriedades do ZFS ............................................................................................ 141Propriedades nativas somente leitura do ZFS ........................................................................ 148

Conteúdo

Guia de administração do ZFS Solaris • Setembro de 20086

Page 7: Guia de amdiminstracao do zfs solaris

Propriedades nativas definíveis do ZFS ................................................................................... 149Propriedades de usuário do ZFS .............................................................................................. 152

Consultando informações sobre o sistema de arquivos ZFS ........................................................ 153Listando informações básicas do ZFS ...................................................................................... 153Criando consultas complexas de ZFS ...................................................................................... 154

Gerenciando propriedades do ZFS ................................................................................................. 155Definindo propriedades do ZFS ............................................................................................... 156Herdando propriedades do ZFS ............................................................................................... 156Consultando propriedades do ZFS .......................................................................................... 157

Montando e compartilhando sistemas de arquivos ZFS ............................................................... 161Gerenciando pontos de montagem do ZFS ............................................................................ 161Montando sistemas de arquivos ZFS ....................................................................................... 163Usando propriedades de montagem temporárias .................................................................. 164Desmontando sistemas de arquivos ........................................................................................ 165Compartilhando e descompartilhando sistemas de arquivos ZFS ....................................... 166

Cotas e reservas do ZFS ..................................................................................................................... 167Definindo cotas em sistemas de arquivos ZFS ........................................................................ 168Definindo reservas nos sistemas de arquivos ZFS .................................................................. 170

7 Trabalhando com instantâneos e clones do ZFS .......................................................................... 173Visão geral dos instantâneos do ZFS ............................................................................................... 173

Criando e destruindo instantâneos do ZFS ............................................................................. 174Exibindo e acessando instantâneos do ZFS ............................................................................ 176Revertendo a um instantâneo do ZFS ...................................................................................... 177

Visão geral dos clones do ZFS .......................................................................................................... 178Criando um clone do ZFS ......................................................................................................... 178Destruindo um clone do ZFS .................................................................................................... 179Substituindo um sistema de arquivos ZFS por um clone do ZFS ......................................... 179

Enviando e recebendo dados do ZFS .............................................................................................. 180Enviando um instantâneo do ZFS ............................................................................................ 181Recebendo um instantâneo do ZFS ......................................................................................... 182Enviando e recebendo fluxos complexos de instantâneos do ZFS ....................................... 183Salvando dados do ZFS com outros produtos de backup ...................................................... 186

Conteúdo

7

Page 8: Guia de amdiminstracao do zfs solaris

8 Usando ACLs para proteger arquivos ZFS ..................................................................................... 187Novo modelo de ACL do Solaris ...................................................................................................... 187

Descrições de sintaxe para definição de ACLs ........................................................................ 189Herança da ACL ......................................................................................................................... 192Modos de propriedade da ACL ................................................................................................ 193

Definindo ACLs em arquivos ZFS ................................................................................................... 194Definindo e exibindo ACLs em arquivos ZFS no formato verboso ............................................. 196

Definindo a herança da ACL em arquivos ZFS no formato verboso ................................... 202Definindo e exibindo ACLs em arquivos ZFS no formato compacto ......................................... 212

9 Administração delegada de ZFS .....................................................................................................217Visão geral da administração delegada de ZFS .............................................................................. 217

Desativando permissões delegadas do ZFS ............................................................................. 218Delegando permissões do ZFS ......................................................................................................... 218

Descrição de sintaxe para permissões de delegação (zfs allow) ........................................ 220Removendo as permissões delegadas do ZFS (zfs unallow) .............................................. 221

Usando a administração delegada de ZFS ...................................................................................... 222Exibindo permissões delegadas do ZFS (Exemplos) ............................................................. 222Delegando permissões do ZFS (Exemplos) ............................................................................ 223Removendo permissões do ZFS (Exemplos) .......................................................................... 228

10 Tópicos avançados do ZFS ................................................................................................................231Volumes ZFS ...................................................................................................................................... 231

Usando um volume ZFS como um dispositivo de permuta ou de despejo ......................... 232Usando um volume ZFS como um destino iSCSI Solaris ..................................................... 233

Usando ZFS em um sistema Solaris com regiões instaladas ......................................................... 234Adicionando sistemas de arquivos ZFS a uma região não global ......................................... 235Delegando conjuntos de dados a uma região não global ....................................................... 236Adicionando volumes ZFS a uma região não global .............................................................. 236Usando pools de armazenamento do ZFS dentro de uma região ......................................... 237Gerenciando propriedades do ZFS dentro de uma região .................................................... 237Entendendo a propriedade zoned ............................................................................................ 238

Usando pools de raiz alternativa do ZFS ........................................................................................ 239Criando pools de raiz alternativa do ZFS ................................................................................ 240Importando pools de raiz alternativa ...................................................................................... 240

Conteúdo

Guia de administração do ZFS Solaris • Setembro de 20088

Page 9: Guia de amdiminstracao do zfs solaris

Perfis de direitos do ZFS ................................................................................................................... 241

11 Solução de problemas e recuperação de dados do ZFS ...............................................................243Modos de falha do ZFS ...................................................................................................................... 243

Ausência de dispositivos em um pool de armazenamento do ZFS ...................................... 244Dispositivos danificados em um pool de armazenamento do ZFS ...................................... 244Dados corrompidos do ZFS ...................................................................................................... 244

Verificando a integridade dos dados do ZFS .................................................................................. 245Reparação de dados ................................................................................................................... 245Validação de dados .................................................................................................................... 245Controlando o scrubbing de dados do ZFS ............................................................................ 246

Identificando problemas no ZFS ..................................................................................................... 247Determinando se há problemas em um pool de armazenamento do ZFS .......................... 248Revisando a saída de zpool status ........................................................................................ 249Relatório de mensagens de erros do ZFS do sistema ............................................................. 252

Reparando uma configuração do ZFS danificada .......................................................................... 252Reparando um dispositivo ausente ................................................................................................. 253

Reanexando fisicamente o dispositivo .................................................................................... 254Notificando o ZFS da disponibilidade de um dispositivo ..................................................... 254

Reparando um dispositivo danificado ............................................................................................ 254Determinando o tipo de falha do dispositivo ......................................................................... 254Apagando erros transitórios ..................................................................................................... 256Substituindo um dispositivo em um pool de armazenamento do ZFS ................................ 256

Reparando dados danificados .......................................................................................................... 263Identificando o tipo de corrupção de dados ............................................................................ 263Reparando arquivos ou diretórios corrompidos .................................................................... 264Reparando o dano de todo o pool de armazenamento do ZFS ............................................. 266

Reparando um sistema não inicializável ......................................................................................... 266

Índice .................................................................................................................................................. 269

Conteúdo

9

Page 10: Guia de amdiminstracao do zfs solaris

10

Page 11: Guia de amdiminstracao do zfs solaris

Prefácio

O Guia de administração do ZFS Solaris fornece informações sobre a configuração e ogerenciamento de sistemas de arquivos ZFS SolarisTM.

Este guia contém informações para sistemas baseados em SPARC ® e em x86.

Observação – Esta versão do Solaris oferece suporte a sistemas que utilizam famílias SPARC e x86de arquiteturas de processadores: UltraSPARC®, SPARC64, AMD64, Pentium e Xeon EM64T.Os sistemas aceitos aparecem na Lista de compatibilidade de hardware do Solaris 10 emhttp://www.sun.com/bigadmin/hcl . Este documento cita quaisquer diferenças deimplementação entre os tipos de plataformas.

Neste documento, os termos x86 apresentam o seguinte significado:

■ "x86" refere-se à família maior de produtos compatíveis x86 de 64 bits e de 32 bits.■ "x64" aponta as informações específicas sobre os sistemas AMD64 ou EM64T.■ "32-bit x86" aponta informações específicas sobre os sistemas de 32 bits com base no x86.

Para obter os sistemas suportados, consulte a Lista de Compatibilidade de Hardware Solaris.

Quem deve usar este livroEste guia destina-se àqueles que se interessam pela configuração e pelo gerenciamento dossistemas de arquivos Solaris ZFS. Recomenda-se ter experiência com o sistema operacional(SO) Solaris ou outra versão do UNIX®.

Como este livro é organizadoO quadro abaixo descreve os capítulos deste livro.

11

Page 12: Guia de amdiminstracao do zfs solaris

Capítulo Descrição

Capítulo 1, “Sistema dearquivos ZFS (Introdução)”

Oferece uma visão geral do ZFS e de seus recursos e benefícios. Abrangetambém algumas terminologias e conceitos básicos.

Capítulo 2, “Guia deintrodução do ZFS”

Oferece instruções passo a passo sobre as configurações mais simples do ZFScom pools e sistemas de arquivos simples. Este capítulo oferece também ohardware e o software necessários para criar sistemas de arquivos ZFS.

Capítulo 3, “Diferenças entre oZFS e os sistemas de arquivostradicionais”

Identifica os importantes recursos que tornam o ZFS significativamentediferente dos sistemas de arquivos tradicionais. A compreensão dessasdiferenças-chave ajudará a reduzir a confusão ao usar ferramentastradicionais nas interações com o ZFS.

Capítulo 4, “Instalando einicializando um sistema dearquivos raiz ZFS”

Descreve como instalar e inicializar um sistema de arquivos ZFS Também étratada a migração de um sistema de arquivos raiz UFS para um sistema dearquivos ZFS com o Solaris Live Upgrade.

Capítulo 5, “Gerenciando poolsde armazenamento do ZFS”

Oferece uma descrição detalhada de como criar e administrar pools dearmazenamento.

Capítulo 6, “Gerenciandosistemas de arquivos ZFS”

Oferece informações detalhadas sobre o gerenciamento de sistemas dearquivos ZFS. Inclui também conceitos como layout hierárquico do sistemade arquivos, herança de propriedade e interações compartilhadas egerenciamento do ponto de montagem automáticos.

Capítulo 7, “Trabalhando cominstantâneos e clones do ZFS”

Descreve como criar e administrar clones e instantâneos do ZFS.

Capítulo 8, “Usando ACLs paraproteger arquivos ZFS”

Descreve como usar as listas de controle de acesso (ACLs) para proteger osarquivos ZFS, proporcionando permissões mais granulares que aspermissões do UNIX padrão.

Capítulo 9, “Administraçãodelegada de ZFS”

Descreve como usar a administração delegada de ZFS para permitir queusuários não-privilegiados realizem tarefas de administração do ZFS.

Capítulo 10, “Tópicosavançados do ZFS”

Fornece informações sobre o uso dos volumes ZFS, o uso do sistema Solariscom regiões instaladas e pools de raiz alternativa.

Capítulo 11, “Solução deproblemas e recuperação dedados do ZFS”

Descreve como identificar os modos de falha do ZFS e como realizarrecuperações a partir deles. Abrange também medidas para evitar falhas.

Livros relacionadosInformações relacionadas sobre tópicos gerais de administração do sistema Solaris podem serencontradas nos seguintes livros:

■ Administração de sistema Solaris: Administração básica■ Solaris System Administration: Advanced Administration■ Solaris System Administration: Devices and File Systems

Prefácio

Guia de administração do ZFS Solaris • Setembro de 200812

Page 13: Guia de amdiminstracao do zfs solaris

■ Solaris System Administration: Security Services■ Guia de administração do gerenciador de volume Solaris

Documentação, suporte e treinamentoO site da Sun na Web fornece informações sobre os seguintes recursos adicionais:

■ Documentação (http://www.sun.com/documentation/)■ Suporte (http://www.sun.com/support/)■ Treinamento (http://www.sun.com/training/)

Convenções tipográficasA tabela a seguir descreve as convenções tipográficas usadas neste livro.

TABELA P–1 Convenções tipográficas

Fonte Significado Exemplo

AaBbCc123 Os nomes de comandos, arquivos e diretórios esaída para computador na tela

Edite o arquivo .login.

Use ls -a para listar todos osarquivos.

nome_da_máquina% you have

mail.

AaBbCc123 O que você digitou, contrastado com a saídapara computador na tela

nome_da_máquina% su

Password:

aabbcc123 Espaço reservado: substituir por um nome ouvalor real

O comando para remover umarquivo é rm nome do arquivo.

AaBbCc123 Títulos de livro, novos termos e termos a seremenfatizados

Leia o Capítulo 6 do Guia doUsuário.

Um cache é uma cópia que éarmazenada localmente.

Não salve o arquivo.

Nota: Alguns itens enfatizadosaparecem on-line em negrito.

Prefácio

13

Page 14: Guia de amdiminstracao do zfs solaris

Prompts do shell em exemplos de comandoA tabela a seguir mostra prompts padrão do sistema UNIX e o prompt de superusuário para oshell C, shell Bourne e shell Korn.

TABELA P–2 Prompts do shell

Shell Prompt

Shell C nome_da_máquina%

Shell C para superusuário nome_da_máquina#

Shell Bourne e shell Korn $

Shell Bourne e shell Korn para superusuário #

Prefácio

Guia de administração do ZFS Solaris • Setembro de 200814

Page 15: Guia de amdiminstracao do zfs solaris

Sistema de arquivos ZFS (Introdução)

Este capítulo oferece uma visão geral do sistema de arquivos ZFS e de seus recursos e benefícios.Este capítulo abrange também algumas terminologias básicas usadas neste livro.

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

■ “O que há de novo no ZFS?” na página 15■ “O que é ZFS?” na página 34■ “Terminologia do ZFS” na página 37■ “Requisitos para nomeação de componentes do ZFS” na página 39

O que há de novo no ZFS?Esta seção resume os novos recursos do sistema de arquivos ZFS.

■ “Suporte à inicialização e instalação de ZFS” na página 16■ “Revertendo um conjunto de dados sem desmontar” na página 16■ “Aprimoramentos no comando zfs send” na página 16■ “Cotas e reservas do ZFS somente para dados do sistema de arquivos” na página 17■ “Propriedades do pool de armazenamento do ZFS” na página 18■ “Aprimoramentos no histórico do comando do ZFS (zpool history)” na página 19■ “Atualizando sistemas de arquivos do ZFS (zfs upgrade)” na página 20■ “Administração delegada de ZFS” na página 21■ “Configurando dispositivos separados de log ZFS” na página 21■ “Criando conjuntos de dados ZFS intermediários” na página 22■ “Aprimoramentos da conexão automática do ZFS” na página 23■ “Renomeando recursivamente instantâneos do ZFS (zfs rename -r)” na página 24■ “Compactação GZIP disponível no ZFS” na página 25■ “Armazenamento de várias cópias de dados de usuário do ZFS” na página 25■ “Saída zpool status aprimorada” na página 26■ “Aprimoramentos na iSCSI do Solaris e ZFS” na página 26■ “Histórico do comando ZFS (zpool history)” na página 27

1C A P Í T U L O 1

15

Page 16: Guia de amdiminstracao do zfs solaris

■ “Aprimoramentos das propriedades do ZFS” na página 28■ “Exibindo todas as informações do sistema de arquivos ZFS” na página 29■ “Nova opção -F do zfs receive” na página 29■ “Instantâneos recursivos do ZFS” na página 29■ “RAID-Z de paridade dupla (raidz2)” na página 30■ “Sobressalentes para dispositivos do pool de armazenamento do ZFS” na página 30■ “Substituindo um sistema de arquivos ZFS por um clone do ZFS (zfs promote)”

na página 30■ “Atualizando pools de armazenamento do ZFS (zpool upgrade)” na página 30■ “Comandos de armazenamento e backup do ZFS renomeados” na página 31■ “Recuperando pools de armazenamento destruídos” na página 31■ “ZFS integrado ao gerenciador de falhas” na página 31■ “Novo comando zpool clear” na página 32■ “Formato compacto da ACL NFSv4” na página 32■ “File System Monitoring Tool (fsstat)” na página 32■ “Gerenciamento do ZFS baseado na Web” na página 33

Suporte à inicialização e instalação de ZFSSolaris 10 10/08: esta versão oferece a capacidade de instalar e inicializar um sistema dearquivos raiz ZFS. Você pode usar a opção de instalação inicial ou o recurso JumpStart parainstalar um sistema de arquivos raiz ZFS. Ou, você pode usar o recurso Live Upgrade paramigrar um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS. O suporte doZFS a dispositivos de permuta e despejo também é oferecido. Para obter mais informações,consulte o Capítulo 4, “Instalando e inicializando um sistema de arquivos raiz ZFS”.

Para obter uma lista dos problemas conhecidos desta versão, consulte as notas da versão doSolaris 10 10/08.

Revertendo um conjunto de dados sem desmontarSolaris 10 10/08: esta versão oferece a capacidade de reverter um conjunto de dados sem antester que desmontá-lo. Isso significa que a opção zfs rollback -f já não é mais necessária paraforçar uma operação de desmontagem. A opção -f já não é mais suportada e é ignorada se forespecificada.

Aprimoramentos no comando zfs send

Solaris 10 10/08: esta versão inclui os seguintes aprimoramentos no comando zfs send.■ Envie todos os fluxos incrementais de um instantâneo para um instantâneo cumulativo. Por

exemplo:

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200816

Page 17: Guia de amdiminstracao do zfs solaris

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool 428K 16.5G 20K /pool

pool/fs 71K 16.5G 21K /pool/fs

pool/fs@snapA 16K - 18.5K -

pool/fs@snapB 17K - 20K -

pool/fs@snapC 17K - 20.5K -

pool/fs@snapD 0 - 21K -

# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@combo

Envie todos os instantâneos incrementais entre fs@snapA para fs@snapD para fs@combo.■ Envie um fluxo incremental de um instantâneo original para criar um clone. O instantâneo

original já deve existir no lado de recepção para aceitar o fluxo incremental. Por exemplo:

# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I

.

.

# zfs receive -F pool/clone < /snaps/fsclonesnap-I

■ Envie um fluxo de replicação de todos os sistemas de arquivo descendentes, até osinstantâneos com nome. Quando recebidos, todas as propriedades, instantâneos, sistemasde arquivo descendentes e clones são preservados. Por exemplo:

zfs send -R pool/fs@snap > snaps/fs-R

Para um exemplo mais amplo, consulte o Exemplo 7–1.■ Envie um fluxo de replicação incremental.

zfs send -R -[iI] @snapA pool/fs@snapD

Para um exemplo mais amplo, consulte o Exemplo 7–1.

Para obter mais informações, consulte “Enviando e recebendo fluxos complexos deinstantâneos do ZFS” na página 183.

Cotas e reservas do ZFS somente para dados dosistema de arquivosSolaris 10 10/08: além dos recursos atuais de reserva e cota do ZFS, essa versão inclui as cotas ereservas do conjunto de dados que não incluem descendentes, tais como instantâneos e clones,na contabilidade de consumo do espaço.■ A propriedade refquota limita a quantidade de espaço que um conjunto de dados pode

consumir. Essa propriedade reforça um limite rígido na quantidade de espaço que pode serusado. Esse limite rígido não inclui o espaço usado pelos descendentes, como instantâneos eclones.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 17

Page 18: Guia de amdiminstracao do zfs solaris

■ A propriedade refreservation configura a quantidade mínima de espaço que é garantidopara um conjunto de dados, não incluindo seus descendentes.

Por exemplo, você pode configurar um refquota de 10 gigabytes para studentA que configuraum limite rígido de 10 gigabytes do espaço referenciado. Para obter flexibilidade adicional, vocêpode ajustar uma cota de 20 gigabytes que lhe permite gerenciar os instantâneos do studentA.

# zfs set refquota=10g tank/studentA

# zfs set quota=20g tank/studentA

Para obter mais informações, consulte “Cotas e reservas do ZFS” na página 167.

Propriedades do pool de armazenamento do ZFSSolaris 10 10/08: as propriedades do pool de armazenamento do ZFS foram introduzidas emuma versão anterior. Esta versão oferece informações adicionais sobre a propriedade. Porexemplo:

# zpool get all mpool

NAME PROPERTY VALUE SOURCE

mpool size 33.8G -

mpool used 5.76G -

mpool available 28.0G -

mpool capacity 17% -

mpool altroot - default

mpool health ONLINE -

mpool guid 2689713858991441653 -

mpool version 10 default

mpool bootfs mpool/ROOT/zfsBE local

mpool delegation on default

mpool autoreplace off default

mpool cachefile - default

mpool failmode continue local

Para obter uma descrição dessas propriedades, consulte a Tabela 5–1.

■ A propriedade cachefile – Solaris 10 10/08: esta versão fornece a propriedade cachefile,que controla onde as informações de configuração do pool são armazenadas em cache.Todos os pools no cache são automaticamente importados quando o sistema éreinicializado. No entanto, os ambientes de instalação e de cluster podem precisararmazenar em cache essas informações em um local diferente, de forma que os pools nãosejam automaticamente importados.Você pode ajustar essa propriedade para armazenar em cache a configuração de pool em umlocal diferente que possa ser importado depois, usando o comando zpool importc. Namaioria das configurações ZFS, essa propriedade não seria usada.

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200818

Page 19: Guia de amdiminstracao do zfs solaris

A propriedade cachefile não é persistente, não sendo armazenada em disco. Essapropriedade substitui a propriedade temporary, que foi usada para indicar que asinformações de pool não deveriam ser armazenadas em cache nas versões anteriores doSolaris.

■ A propriedade failmode – Solaris 10 10/08: esta versão fornece a propriedade failmodepara determinar o comportamento de uma falha catastrófica de pool devido à perda daconectividade do dispositivo ou à falha de todos os dispositivos no pool. A propriedadefailmode pode ser configurada com estes valores: wait, continue ou panic. O valor padrãoé wait, que significa que você deve reconectar o dispositivo ou substituir um dispositivocom falha e limpar o erro com o comando zpool clear.A propriedade failmode é configurada como outras propriedades ZFS ajustáveis, quepodem ser configuradas antes ou depois que o pool é criado. Por exemplo:

# zpool set failmode=continue tank

# zpool get failmode tank

NAME PROPERTY VALUE SOURCE

tank failmode continue local

# zpool create -o failmode=continue users mirror c0t1d0 c1t1d0

Para obter a descrição de todas as propriedades do pool do ZFS, consulte a Tabela 5–1.

Aprimoramentos no histórico do comando do ZFS(zpool history)Solaris 10 10/08: o comando zpool history foi aprimorado para oferecer os seguintesrecursos:■ São exibidas as informações dos eventos do sistema de arquivos ZFS. Por exemplo:

# zpool history users

History for ’users’:

2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0

2008-07-10.09:43:48 zfs create users/home

2008-07-10.09:43:56 zfs create users/home/markm

2008-07-10.09:44:02 zfs create users/home/marks

2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday

■ Uma opção -l para exibição de formatos longos que inclui o nome de usuário, o nome dohost e região na qual a operação foi realizada. Por exemplo:

# zpool history -l users

History for ’users’:

2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 [user root on corona:global]

2008-07-10.09:43:13 zfs create users/marks [user root on corona:global]

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 19

Page 20: Guia de amdiminstracao do zfs solaris

2008-07-10.09:43:44 zfs destroy users/marks [user root on corona:global]

2008-07-10.09:43:48 zfs create users/home [user root on corona:global]

2008-07-10.09:43:56 zfs create users/home/markm [user root on corona:global]

2008-07-10.09:44:02 zfs create users/home/marks [user root on corona:global]

2008-07-11.10:44:19 zfs snapshot -r users/home@yesterday [user root on corona:global]

■ Uma opção -i para exibição de informações dos eventos internos que podem ser usadaspara diagnósticos. Por exemplo:

# zpool history -i users

History for ’users’:

2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0

2008-07-10.09:43:13 [internal create txg:6] dataset = 21

2008-07-10.09:43:13 zfs create users/marks

2008-07-10.09:43:48 [internal create txg:12] dataset = 27

2008-07-10.09:43:48 zfs create users/home

2008-07-10.09:43:55 [internal create txg:14] dataset = 33

2008-07-10.09:43:56 zfs create users/home/markm

2008-07-10.09:44:02 [internal create txg:16] dataset = 39

2008-07-10.09:44:02 zfs create users/home/marks

2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 42

2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 44

2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 46

2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday

Para obter mais informações sobre o uso do comando zpool history, consulte “Identificandoproblemas no ZFS” na página 247.

Atualizando sistemas de arquivos do ZFS (zfsupgrade)Solaris 10 10/08: o comando zfs upgrade foi incluído nessa versão para proporcionar futurosaprimoramentos no sistema de arquivos ZFS dos sistemas de arquivos existentes. Os pools dearmazenamento ZFS têm um recurso semelhante de atualização para fornecer aprimoramentosaos pools existentes de armazenamento.

Por exemplo:

# zfs upgrade

This system is currently running ZFS filesystem version 3.

All filesystems are formatted with the current version.

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200820

Page 21: Guia de amdiminstracao do zfs solaris

Observação – Os sistemas de arquivos atualizados e quaisquer fluxos criados destes sistemas dearquivos atualizados através do comando zfs send não estão acessíveis em sistemas queexecutam versões mais antigas do software.

Administração delegada de ZFSSolaris 10 10/08: nessa versão, você pode delegar permissões refinadas para realizar tarefas deadministração do ZFS a usuários não-privilegiados.

Você pode usar os comandos zfs allow e zfs unallow para conceder e remover permissões.

Você pode modificar a capacidade de usar a administração delegada com a propriedadedelegation do pool. Por exemplo:

# zpool get delegation users

NAME PROPERTY VALUE SOURCE

users delegation on default

# zpool set delegation=off users

# zpool get delegation users

NAME PROPERTY VALUE SOURCE

users delegation off local

Por padrão, a propriedade delegation é habilitada.

Para obter mais informações, consulte o Capítulo 9, “Administração delegada de ZFS” ezfs(1M).

Configurando dispositivos separados de log ZFSSolaris 10 10/08: o log de intenção ZFS (ZIL) é oferecido para satisfazer às exigências de POSIXpara transações síncronas. Por exemplo, em geral os bancos de dados exigem que suastransações estejam em dispositivos de armazenamento estáveis ao retornar de uma chamada dosistema. NFS e outros aplicativos também podem usar fsync() para garantir a estabilidade dosdados. Por padrão, o ZIL é alocado dos blocos no pool de armazenamento principal. Noentanto, pode ser possível obter melhor desempenho usando dispositivos separados de log deintenção no pool de armazenamento do ZFS, por exemplo com NVRAM ou um disco dedicado.

Os dispositivos de log de intenção ZFS não estão relacionados aos arquivos de log do banco dedados.

Você pode configurar o dispositivo de log quando o pool de armazenamento for criado ou apósa sua criação. Para ver exemplos sobre a configuração dos dispositivos de log, consulte “Criandoum pool de armazenamento do ZFS com dispositivos de log” na página 97 e “Adicionandodispositivos a um pool de armazenamento” na página 104.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 21

Page 22: Guia de amdiminstracao do zfs solaris

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

Ao determinar se a configuração de um dispositivo de log ZFS é apropriada para o seuambiente, leve em consideração o seguinte:

■ Qualquer melhora no desempenho do ponto de vista da implementação de um dispositivoseparado de log depende do tipo de dispositivo, da configuração de hardware do pool e dacarga de trabalho do aplicativo. Para obter informações preliminares sobre desempenho,consulte este blog:http://blogs.sun.com/perrin/entry/slog_blog_or_blogging_on

■ Os dispositivos de log podem ser espelhados e não podem ser replicados, mas o RAIDZ nãoé suportado para dispositivos de log.

■ Se um dispositivo de log separado não for espelhado e o dispositivo que contém o log falhar,o armazenamento dos blocos de log revertem ao pool de armazenamento.

■ Os dispositivos de log podem ser adicionados, substituídos, anexados e importados eexportados como parte do pool de armazenamento maior. Atualmente, os dispositivos delog não podem ser removidos.

■ O tamanho mínimo de um dispositivo de log é o mesmo que o tamanho mínimo de cadadispositivo em um pool, que é de 64 Mbytes. A quantidade de dados em atividade que podeser armazenada em um dispositivo de log é relativamente pequena. Os blocos de log sãoliberados quando a transação de log (chamada do sistema) é enviada.

■ O tamanho máximo de um dispositivo de log deve ser aproximadamente a metade dotamanho da memória física porque é a quantidade máxima de possíveis dados em atividadeque pode ser armazenada. Por exemplo, se um sistema tiver 16 Gbytes de memória física,pense que o tamanho máximo do dispositivo de log será de 8 Gbytes.

Criando conjuntos de dados ZFS intermediáriosSolaris 10 10/08: você pode usar a opção -p com os comandos zfs create, zfs clone e zfsrename para criar rapidamente um conjunto de dados intermediário, caso já não exista.

Por exemplo, crie os conjuntos de dados ZFS users/area51) no pool de armazenamento datab.

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

datab 106K 16.5G 18K /datab

# zfs create -p -o compression=on datab/users/area51

Caso exista o conjunto de dados intermediário durante a operação de criação, a operação seráconcluída com êxito.

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200822

Page 23: Guia de amdiminstracao do zfs solaris

As propriedades especificadas se aplicam ao conjunto de dados desejado, e não aos conjuntosintermediários. Por exemplo:

# zfs get mountpoint,compression datab/users/area51

NAME PROPERTY VALUE SOURCE

datab/users/area51 mountpoint /datab/users/area51 default

datab/users/area51 compression on local

O conjunto de dados intermediário é criado com o ponto padrão de montagem. Quaisquerpropriedades adicionais são desativadas para o conjunto de dados intermediário. Por exemplo:

# zfs get mountpoint,compression datab/users

NAME PROPERTY VALUE SOURCE

datab/users mountpoint /datab/users default

datab/users compression off default

Para obter mais informações, consulte zfs(1M).

Aprimoramentos da conexão automática do ZFSSolaris 10 10/08: nessa versão, o ZFS responde com maior eficiência aos dispositivos que sãoremovidos e oferece um mecanismo para identificar automaticamente dispositivos que sãoinseridos, com os seguintes aprimoramentos:

■ Você pode substituir um dispositivo atual por um dispositivo equivalente, sem precisar usaro comando zpool replace.A propriedade autoreplace controla a substituição automática do dispositivo. Se fordefinido como desativado, a substituição do dispositivo deve ser iniciada peloadministrador usando o comando zpool replace. Se for definido como ativado, qualquerdispositivo novo encontrado no mesmo local físico que um dispositivo que antes pertenciaao pool será automaticamente formatado e substituído. O comportamento padrão édesativado.

■ O estado do pool de armazenamento REMOVED é fornecido quando for removido umdispositivo ou reserva, se o dispositivo foi fisicamente removido enquanto o sistema estavaem execução. Um dispositivo reserva é substituído pelo dispositivo removido, se disponível.

■ Se um dispositivo for removido e depois inserido, o dispositivo será colocado on-line. Casoum reserva seja ativado quando o dispositivo for reinserido, a reserva será removida quandoa operação on-line for concluída.

■ Quando os dispositivos são removidos ou inseridos, a detecção automática dependerá dohardware e poderá não ser suportada em todas as plataformas. Por exemplo, os dispositivosUSB são configurados automaticamente ao serem inseridos. No entanto, você pode ter queusar o comando cfgadm -c configure para configurar uma unidade SATA.

■ Os reservas são verificados periodicamente para garantir que estejam on-line e disponíveis.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 23

Page 24: Guia de amdiminstracao do zfs solaris

Para obter mais informações, consulte zpool(1M).

Renomeando recursivamente instantâneos do ZFS(zfs rename -r)Solaris 10 10/08: é possível renomear recursivamente todos os instantâneos descendentes doZFS usando o comando zfs rename -r.

Por exemplo, faça o instantâneo de um conjunto de sistemas de arquivos do ZFS.

# zfs snapshot -r users/home@today

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 216K 16.5G 20K /users

users/home 76K 16.5G 22K /users/home

users/home@today 0 - 22K -

users/home/markm 18K 16.5G 18K /users/home/markm

users/home/markm@today 0 - 18K -

users/home/marks 18K 16.5G 18K /users/home/marks

users/home/marks@today 0 - 18K -

users/home/neil 18K 16.5G 18K /users/home/neil

users/home/neil@today 0 - 18K -

Depois, renomeie os instantâneos no dia seguinte.

# zfs rename -r users/home@today @yesterday

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 216K 16.5G 20K /users

users/home 76K 16.5G 22K /users/home

users/home@yesterday 0 - 22K -

users/home/markm 18K 16.5G 18K /users/home/markm

users/home/markm@yesterday 0 - 18K -

users/home/marks 18K 16.5G 18K /users/home/marks

users/home/marks@yesterday 0 - 18K -

users/home/neil 18K 16.5G 18K /users/home/neil

users/home/neil@yesterday 0 - 18K -

Os instantâneos são o único conjunto de dados que pode ser renomeado recursivamente.

Para obter mais informações sobre instantâneos, consulte “Visão geral dos instantâneos doZFS” na página 173 e esta entrada do blog que descreve como criar instantâneos sucessivos:

http://blogs.sun.com/mmusante/entry/rolling_snapshots_made_easy

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200824

Page 25: Guia de amdiminstracao do zfs solaris

Compactação GZIP disponível no ZFSSolaris 10 10/08: é possível definir a compactação gzip em sistemas de arquivos ZFS além dacompactação lzjb . Você pode especificar a compactação como gzip , que é o padrão, oucomo gzip-N, em que N é de 1 a 9. Por exemplo:

# zfs create -o compression=gzip users/home/snapshots

# zfs get compression users/home/snapshots

NAME PROPERTY VALUE SOURCE

users/home/snapshots compression gzip local

# zfs create -o compression=gzip-9 users/home/oldfiles

# zfs get compression users/home/oldfiles

NAME PROPERTY VALUE SOURCE

users/home/oldfiles compression gzip-9 local

Para obter mais informações sobre a configuração das propriedades do ZFS, consulte“Definindo propriedades do ZFS” na página 156.

Armazenamento de várias cópias de dados de usuáriodo ZFSSolaris 10 10/08: como um recurso de segurança, os metadados do sistema de arquivos do ZFSsão armazenados automaticamente várias vezes em diferentes discos, se possível. Este recurso éconhecido como blocos idem.

Nesta versão, é possível especificar que as cópias múltiplas dos dados do usuário também sejamarmazenadas por sistema de arquivos usando o comando zfs set copies. Por exemplo:

# zfs set copies=2 users/home

# zfs get copies users/home

NAME PROPERTY VALUE SOURCE

users/home copies 2 local

Os valores disponíveis são 1, 2 ou 3. O valor padrão é 1. Essas cópias estão em acréscimo aqualquer redundância de nível de pool, tais como na configuração espelhada ou RAID-Z.

Os benefícios do armazenamento de cópias múltiplas dos dados do usuário do ZFS são osseguintes:

■ Melhora a retenção de dados, permitindo recuperações de falhas de leituras em blocosirrecuperáveis, como falhas de mídia (bit rot) em todas as configurações do ZFS.

■ Oferece proteção de dados, mesmo quando há somente um disco disponível.■ Permite selecionar as políticas de proteção de dados por sistema de arquivos, além das

capacidades do grupo de armazenamento.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 25

Page 26: Guia de amdiminstracao do zfs solaris

Dependendo da localização de tais blocos no pool de armazenamento, as cópias múltiplaspodem ser colocadas em um único disco. Uma falha posterior de disco cheio pode fazer comque tais blocos não estejam disponíveis.

Você pode levar em consideração o uso de tais blocos ao criar acidentalmente um pool nãoredundante e quando precisar definir as políticas de retenção de dados.

Para obter uma descrição detalhada de como definir as cópias em um sistema com um pool dedisco único ou como um pool de disco múltiplo pode afetar a proteção geral dos dados, consulteeste blog:

http://blogs.sun.com/relling/entry/zfs_copies_and_data_protection

Para obter mais informações sobre a configuração das propriedades do ZFS, consulte“Definindo propriedades do ZFS” na página 156.

Saída zpool status aprimoradaSolaris 10 8/07: você pode usar o comando zpool status -v para exibir uma lista de arquivoscom erros persistentes. Anteriormente, era necessário usar o comando find -inum paraidentificar os nomes de arquivos na lista de inodes exibida.

Para obter mais informações sobre a exibição da lista de arquivos com erros persistentes,consulte “Reparando arquivos ou diretórios corrompidos” na página 264.

Aprimoramentos na iSCSI do Solaris e ZFSSolaris 10 8/07: nesta versão do Solaris, é possível criar um volume ZFS como um dispositivo dedestino do iSCSI do Solaris definindo a propriedade shareiscsi no volume ZFS. Este método éuma forma conveniente de configurar rapidamente o destino iSCSI do Solaris. Por exemplo:

# zfs create -V 2g tank/volumes/v2

# zfs set shareiscsi=on tank/volumes/v2

# iscsitadm list target

Target: tank/volumes/v2

iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a

Connections: 0

Depois da criação do destino iSCSI, configure o iniciador iSCSI. Para obter mais informaçõessobre a configuração do iniciador iSCSI do Solaris, consulte o Capítulo 14, “Configuring SolarisiSCSI Targets and Initiators (Tasks),” no System Administration Guide: Devices and File Systems.

Para obter mais informações sobre gerenciamento de volumes ZFS como um destino de iSCSI,consulte “Usando um volume ZFS como um destino iSCSI Solaris” na página 233.

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200826

Page 27: Guia de amdiminstracao do zfs solaris

Histórico do comando ZFS (zpool history)Solaris 10 8/07: nesta versão do Solaris, o ZFS registra automaticamente comandos zfs e zpoolbem-sucedidos que modificam as informações de estado do pool. Por exemplo:

# zpool history

History for ’newpool’:

2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0

2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0

2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0

2007-04-25.11:38:09 zfs create newpool/user1

2007-04-25.11:38:15 zfs destroy newpool/user1

History for ’tank’:

2007-04-25.11:46:28 zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0

Estes recursos permitem que você ou a equipe de suporte da Sun identifiquem o conjunto exatode comandos ZFS que foram executados para corrigir um erro.

É possível identificar um pool de armazenamento específico com o comando zpool history.

Por exemplo:

# zpool history newpool

History for ’newpool’:

2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0

2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0

2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0

2007-04-25.11:38:09 zfs create newpool/user1

2007-04-25.11:38:15 zfs destroy newpool/user1

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

■ O registro não pode ser desativado.■ O registro é salvo constantemente no disco, o que significa que o registro é salvo nas

reinicializações do sistema.■ O registro é implementado como buffer de anel. O tamanho mínimo é de 128 Kbytes. O

tamanho máximo é de 32 Mbytes.■ Para pools menores, o tamanho máximo está limitado a 1% do tamanho do pool, nos quais o

tamanho é determinado no momento da criação do pool.■ Não requer administração, o que significa que não é necessário ajustar o tamanho ou alterar

o local do registro.

Nesta versão do Solaris, o comando zpool history não registra o ID de usuário, o nome dohost, nem o nome da região. Para obter mais informações, consulte “Aprimoramentos nohistórico do comando do ZFS (zpool history)” na página 19

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 27

Page 28: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre soluções de problemas do ZFS, consulte “Identificandoproblemas no ZFS” na página 247.

Aprimoramentos das propriedades do ZFS

Propriedade xattrdo ZFSSolaris 10 8/07: é possível usar a propriedade xattr para desativar ou ativar os atributosestendidos de um sistema de arquivos ZFS específico. O valor padrão é ativado. Para obter umadescrição das propriedades do ZFS, consulte “Introduzindo as propriedades do ZFS”na página 141.

Propriedade canmountdo ZFSSolaris 10 8/07: a nova propriedade canmount permite que você especifique se um conjunto dedados pode ser montado por meio do comando zfs mount. Para obter mais informações,consulte “A propriedade canmount” na página 150.

Propriedades de usuário do ZFSSolaris 10 8/07: além das propriedades nativas padrão que podem exportar estatísticas internasou controlar o comportamento do sistema de arquivos ZFS, o ZFS suporta as propriedades dousuário. As propriedades de usuário não afetam o comportamento do ZFS, mas podem serusadas para anotar conjuntos de dados com informações significativas no ambiente.

Para obter mais informações, consulte “Propriedades de usuário do ZFS” na página 152.

Definindo as propriedades ao criar sistemas de arquivos ZFSSolaris 10 8/07: nesta versão do Solaris, é possível definir propriedades ao criar um sistema dearquivos, além de definir as propriedades depois que o sistema de arquivos tiver sido criado.

Os exemplos abaixo ilustram a sintaxe equivalente:

# zfs create tank/home

# zfs set mountpoint=/export/zfs tank/home

# zfs set sharenfs=on tank/home

# zfs set compression=on tank/home

# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200828

Page 29: Guia de amdiminstracao do zfs solaris

Exibindo todas as informações do sistema de arquivosZFSSolaris 10 8/07: nesta versão do Solaris, é possível usar várias formas do comando zfs get paraexibir informações sobre todos os conjuntos de dados caso você não especifique um conjuntode dados ou caso você não especifique all. Em versões anteriores, não era possível recuperartoda a informação do conjunto de dados com o comando zfs get.

Por exemplo:

# zfs get -s local all

tank/home atime off local

tank/home/bonwick atime off local

tank/home/marks quota 50G local

Nova opção -F do zfs receive

Solaris 10 8/07: nesta versão do Solaris, é possível usar a nova opção -F no comando zfs

receive para forçar uma reversão do sistema de arquivos ao instantâneo mais recente antes darealização do recebimento. O uso desta opção pode ser necessário quando o sistema de arquivosfor modificado entre o momento em que ocorre a reversão e o momento em que o recebimentoé iniciado.

Para obter mais informações, consulte “Recebendo um instantâneo do ZFS” na página 182.

Instantâneos recursivos do ZFSSolaris 10 11/06: ao usar o comando zfs snapshot para criar um instantâneo de sistema dearquivos, é possível usar a opção -r para criar instantâneos recursivamente para todos ossistemas de arquivos descendentes. Além disso, o uso da opção -r repetidamente destrói todosos instantâneos descendentes quando um instantâneo é destruído.

Os instantâneos recursivos do ZFS são criados rapidamente como uma operação atômica. Osinstantâneos são criados juntos (todos de uma vez) ou simplesmente não são criados. Avantagem das operações atômicas de instantâneos é que os dados do instantâneo são retiradossempre em um ponto consistente do tempo, mesmo nos sistemas de arquivos descendentes.

Para obter mais informações, consulte “Criando e destruindo instantâneos do ZFS”na página 174.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 29

Page 30: Guia de amdiminstracao do zfs solaris

RAID-Z de paridade dupla (raidz2)Solaris 10 11/06: uma configuração RAID-Z redundante agora pode ter paridade única oudupla, o que significa que uma ou duas falhas de dispositivo podem ser sustentadasrespectivamente, sem qualquer perda de dados. Você pode especificar a palavra-chave raidz2para realizar uma configuração de RAID-Z de paridade dupla. Ou pode especificar aspalavras-chave raidz ou raidz1 para realizar uma configuração de RAID-Z de paridade única.

Para obter mais informações, consulte “Criando pools de armazenamento RAID-Z”na página 96 ou zpool(1M).

Sobressalentes para dispositivos do pool dearmazenamento do ZFSSolaris 10 11/06: o recurso de sobressalentes do ZFS permite identificar os discos que poderiamser usados para substituir um dispositivo falho ou defeituoso em um ou mais pools dearmazenamento. Designar um dispositivo como reserva significa que, se um dispositivo ativono pool falhar, o dispositivo de reserva substitui automaticamente o dispositivo falho. Ouentão, você pode substituir manualmente um dispositivo em um pool de armazenamento comuma reserva.

Para obter mais informações, consulte “Designando sobressalentes no pool de armazenamento”na página 114 e zpool(1M).

Substituindo um sistema de arquivos ZFS por umclone do ZFS (zfs promote)Solaris 10 11/06: o comando zfs promote permite que você substitua um sistema de arquivosexistente do ZFS por um clone desse sistema de arquivos. Este recurso é útil quando você desejaexecutar testes em uma versão alternativa de um sistema de arquivos e, em seguida, tornar aversão alternativa do sistema de arquivos o sistema de arquivos ativo.

Para obter mais informações, consulte “Substituindo um sistema de arquivos ZFS por um clonedo ZFS” na página 179 e zfs(1M).

Atualizando pools de armazenamento do ZFS (zpoolupgrade)Solaris 10 6/06: você pode atualizar seus pools de armazenamento para uma versão mais nova afim de tirar vantagem dos recursos mais recentes por meio do comando zpool upgrade. Alémdisso, o comando zpool status foi modificado para notificar você quando os pools estãoexecutando versões mais antigas.

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200830

Page 31: Guia de amdiminstracao do zfs solaris

Para obter mais informações, consulte “Atualizando pools de armazenamento do ZFS”na página 135 e zpool(1M).

Se desejar usar o console de administração do ZFS em um sistema com um pool de uma versãoanterior do Solaris, certifique-se de atualizar os pools antes de usar o console de administraçãodo ZFS. Para ver se os pools precisam ser atualizados, use o comando zpool status. Paraobter informações sobre o console de administração do ZFS, consulte “Gerenciamento do ZFSbaseado na Web” na página 33.

Comandos de armazenamento e backup do ZFSrenomeadosSolaris 10 6/06: nesta versão do Solaris, os comandos zfs backup e zfs restore foramrenomeados como zfs send e zfs receive para a descrição mais exata de sua função. A funçãodestes comandos é salvar e restaurar representações do fluxo de dados do ZFS.

Para obter mais informações sobre estes comandos, consulte “Enviando e recebendo dados doZFS” na página 180.

Recuperando pools de armazenamento destruídosSolaris 10 6/06: esta versão inclui o comando zpool import -D, que permite que você recuperepools que foram destruído anteriormente com o comando zpool destroy.

Para obter mais informações, consulte “Recuperando pools de armazenamento destruídos doZFS” na página 133.

ZFS integrado ao gerenciador de falhasSolaris 10 6/06: esta versão inclui a integração de um mecanismo de diagnóstico do ZFS que écapaz de diagnosticar e relatar falhas do pool e do dispositivo. Também são relatados erros nasoma de verificação, de E/S, de dispositivo e de pool associados às falhas do dispositivo e dopool.

O mecanismo de diagnóstico não inclui a análise prognóstica de erros de E/S ou na soma deverificação, nem as ações antecipatórias baseadas nas análises de falhas.

No caso de falha do ZFS, deve ser exibida uma mensagem do fmd semelhante a seguinte:

SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major

EVENT-TIME: Tue Mar 18 21:48:06 MDT 2008

PLATFORM: SUNW,Ultra-Enterprise, CSN: -, HOSTNAME: neo

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 31

Page 32: Guia de amdiminstracao do zfs solaris

SOURCE: zfs-diagnosis, REV: 1.0

EVENT-ID: f1ae0cad-f2dd-cfdc-a821-a3be5b363d68

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.

Ao revisar a ação recomendada, que será seguir as direções específicas no comando zpool

status, você poderá identificar e resolver rapidamente a falha.

Para obter mais exemplos de recuperação de um problema do ZFS relatado, consulte“Reparando um dispositivo ausente” na página 253.

Novo comando zpool clear

Solaris 10 6/06: esta versão inclui o comando zpool clear para limpar contagens de errosassociadas a um dispositivo ou pool. Anteriormente, as contagens de erros eram limpas quandoum dispositivo em um pool era colocado on-line com o comando zpool online. Para obtermais informações, consulte zpool(1M) e “Limpando dispositivos de pool de armazenamento”na página 112.

Formato compacto da ACL NFSv4Solaris 10 6/06: nesta versão, estão disponíveis três formatos da ACL NFSv4: verboso,posicional e compacto. Os novos formatos de ACL compactos e posicionais estão disponíveispara definir e exibir ACLs. O comando chmod pode ser usado para definir todos os três formatosde ACL. O comando ls -V pode ser usado para exibir os formatos compacto e posicional e ocomando ls -v para exibir o formato verboso da ACL.

Para obter mais informações, consulte “Definindo e exibindo ACLs em arquivos ZFS noformato compacto” na página 212, chmod(1) e ls(1).

File System Monitoring Tool (fsstat)Solaris 10 6/06: uma nova ferramenta de monitoração do sistema de arquivos, fsstat, estádisponível para relatar as operações dos sistemas de arquivos. A atividade pode ser relatada porponto de montagem ou por tipo de sistema de arquivos. O exemplo abaixo mostra a atividadegeral do sistema de arquivos ZFS.

$ fsstat zfs

new name name attr attr lookup rddir read read write write

file remov chng get set ops ops ops bytes ops bytes

7.82M 5.92M 2.76M 1.02G 3.32M 5.60G 87.0M 363M 1.86T 20.9M 251G zfs

O que há de novo no ZFS?

Guia de administração do ZFS Solaris • Setembro de 200832

Page 33: Guia de amdiminstracao do zfs solaris

Para obter mais informações, consulte fsstat(1M).

Gerenciamento do ZFS baseado na WebSolaris 10 6/06: uma ferramenta de gerenciamento do ZFS baseada na Web está disponível pararealizar muitas ações administrativas. Com esta ferramenta, é possível realizar as seguintestarefas:

■ Criar um novo pool de armazenamento.■ Adicionar capacidade a um pool existente.■ Mover (exportar) um pool de armazenamento para outro sistema.■ Importar um pool de armazenamento exportado anteriormente para torná-lo disponível em

outro sistema.■ Visualizar informações sobre pools de armazenamento.■ Criar um sistema de arquivos.■ Criar um volume.■ Realizar um instantâneo de um sistema de arquivos ou volume.■ Reverter um sistema de arquivos para um instantâneo anterior.

Você pode acessar o console de administração do ZFS através de um navegador da Web segurono seguinte URL:

https://system-name:6789/zfs

Se digitar o URL apropriado e não puder encontrar o console Administração de ZFS, o servidornão deve ter sido iniciado. Para iniciar o servidor, execute o seguinte comando:

# /usr/sbin/smcwebserver start

Se quiser que o servidor seja executado automaticamente quando o sistema for inicializado,execute o seguinte comando:

# /usr/sbin/smcwebserver enable

Observação – Não é possível usar o console de gerenciamento Solaris (smc) para gerenciar poolsde armazenamento e sistemas de arquivos ZFS.

O que há de novo no ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 33

Page 34: Guia de amdiminstracao do zfs solaris

O que é ZFS?O sistema de arquivos ZFS é um novo e revolucionário sistema de arquivos que alterabasicamente a forma como os sistemas de arquivos são administrados, com recursos evantagens que não são encontrados nos sistemas de arquivos disponíveis atualmente. O ZFS foidesenvolvido para ser robusto, escalável e fácil de administrar.

Armazenamento de ZFS em poolO ZFS usa o conceito de pools de armazenamento para gerenciar armazenamentos físicos. Ossistemas de arquivos sempre foram construídos em cima de um dispositivo físico. Para abordarvários dispositivos e prevenir a redundância de dados, introduziu-se o conceito de umgerenciador de volumes para fornecer a imagem de um único dispositivo para que os sistemas dearquivos não tenham que ser modificados para aproveitar os vários dispositivos. Este designadicionou outra camada de complexidade e evitou certos avanços do sistema de arquivosporque o sistema de arquivos não tinha controle sobre a localização física dos dados nos volumevirtualizados.

O ZFS elimina totalmente o gerenciamento de volumes. Em vez de forçar você a criar volumesvirtualizados, o ZFS agrega os dispositivos em um pool de armazenamento. O pool dearmazenamento descreve as características físicas do armazenamento (layout do dispositivo,redundância de dados e assim por diante) e age como um armazenamento de dados arbitrário apartir do qual podem ser criados sistemas de arquivos. Os sistemas de arquivos já não estãolimitados a dispositivos individuais, permitindo que eles compartilhem espaço com todos ossistemas de arquivos do pool. Já não é necessário predeterminar o tamanho de um sistema dearquivos, visto que os sistemas de arquivos crescem automaticamente dentro do espaço alocadopara o pool de armazenamento. Quando novos armazenamentos são adicionados, todos ossistemas de arquivos que estão dentro do pool podem usar imediatamente o espaço adicionalsem trabalho adicional. Muitas vezes o pool de armazenamento age como um sistema dememória virtual. Quando uma memória DIMM é adicionada a um sistema, o sistemaoperacional não lhe obriga a chamar comandos para configurar a memória e atribui-la aprocessos individuais. Todos os processos do sistema usam automaticamente a memóriaadicional.

Semânticas transacionaisO ZFS é um sistema de arquivos transacional, o que significa que o estado do sistema dearquivos é sempre consistente no disco. Os sistemas de arquivos tradicionais sobrescrevem osdados no local, o que significa que, se a máquina apagar entre o momento em que o bloco dedados está sendo alocado e o momento em que está sendo vinculado em um diretório, o sistemade arquivos ficará em um estado de inconsistência. Tradicionalmente, este problema erasolucionado sempre através do comando fsck. Este comando era responsável por percorrer e

O que é ZFS?

Guia de administração do ZFS Solaris • Setembro de 200834

Page 35: Guia de amdiminstracao do zfs solaris

verificar o estado do sistema de arquivos, tentando corrigir as inconsistências no processo. Esteproblema trazia grandes preocupações aos administradores e era impossível garantir que todosos possíveis problemas seriam corrigidos. Mais recentemente, os sistemas de arquivosintroduziram o conceito de ocorrências . O processo de ocorrências registra a ação em um diáriodiferente, que pode então ser acionado novamente se ocorrer uma falha no sistema. Esteprocesso introduz uma sobrecarga desnecessária, pois os dados precisam ser gravados duasvezes, resultando freqüentemente em novos problemas, tais como quando o diário não pode seracionado apropriadamente

Com o sistema de arquivos transacional, os dados são gerenciados usando as semânticas decopiar ao gravar. Os dados nunca são sobrescritos e nenhuma seqüência de operações étotalmente enviada ou totalmente ignorada. O que quer dizer que o sistema de arquivos nuncaserá corrompido por perdas acidentais de energia ou falhas no sistema. Assim, não há anecessidade de um equivalente para o fsck. Embora os últimos dados gravados possam seperder, o sistema de arquivos em si será sempre consistente. Além disso, os dados síncronos(escritos com o sinalizador O_DSYNC) sempre serão gravados antes de retornarem, de modo quenunca se perderão.

Somas de verificação e autocorreção de dadosCom o ZFS, a soma de verificação é realizada em todos os dados e metadados usando umalgoritmo que pode ser selecionado pelo usuário. Os sistemas de arquivos tradicionais, queoferecem a soma de verificação, realizavam tal soma com base em blocos sem necessidadedevido à camada de gerenciamento de volumes e ao design do sistema de arquivos tradicional.O design tradicional significa que determinados modos de falha, como gravar um bloco inteiroem um local incorreto, podem resultar em dados com soma de verificação correta que narealidade são incorretos. As somas de verificação do ZFS são armazenadas de forma que estesmodos de falha sejam detectados e possam ser recuperados adequadamente. Todas as somas deverificação e recuperações de dados são feitas na camada do sistema de arquivos e são evidentespara os aplicativos.

Além disso, o ZFS oferece a autocorreção de dados. O ZFS oferece suporte a pools dearmazenamento com níveis variáveis de redundância de dados, incluindo espelhamento e umavariação de RAID-5. Quando um bloco de dados incorreto é detectado, o ZFS tira os dadoscorretos de uma cópia redundante e repara os dados incorretos substituindo-os pela cópiacorreta.

Escalabilidade não paralelaO ZFS foi desenvolvido para ser o sistema de arquivos mais escalável que existe. O sistema dearquivos é de 128 bits, levando em consideração os 256 quatrilhões de zettabytes dearmazenamento. Todos os metadados estão alocados dinamicamente, de forma que não hánecessidade de pré-alocar inodes ou de limitar a escalabilidade do sistema de arquivos quando

O que é ZFS?

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 35

Page 36: Guia de amdiminstracao do zfs solaris

este for criado pela primeira vez. Todos os algoritmos foram gravados levando-se emconsideração a escalabilidade. Os diretórios podem ter até 248 (256 trilhões) de entradas e nãohá limites para o número de sistemas de arquivos ou para o número de arquivos que podeconter um sistema de arquivos.

Instantâneos do ZFSUm instantâneo é uma cópia de somente leitura de um sistema de arquivos ou volume. Osinstantâneos podem ser criados rápida e facilmente. No início, os instantâneos não consomemespaço adicional dentro do pool.

À medida que os dados se alteram dentro do conjunto de dados ativo, o instantâneo passa aconsumir mais espaço devido às contínuas referências aos dados antigos. Como conseqüência,o instantâneo evita que os dados sejam liberados de novo no pool.

Administração simplificadaO mais importante é que o ZFS oferece um modelo de administração muito simplificada.Através do uso do layout de sistema de arquivos hierárquico, da herança de propriedade e doautogerenciamento de pontos de montagem e de semânticas compartilhadas de NFS, o ZFSfacilita a criação e o gerenciamento de sistemas de arquivos sem a necessidade de usar várioscomandos ou de editar os arquivos de configuração. Você pode definir facilmente as cotas oureservas, habilitar ou desabilitar a compactação ou gerenciar os pontos de montagem denumerosos sistemas de arquivos com um único comando. Os dispositivos podem serexaminados ou corrigidos sem que seja necessário entender diferentes conjuntos de comandosde gerenciamento de volumes. É possível realizar um número ilimitado de instantâneos desistemas de arquivos. Você pode fazer o backup e restaurar sistemas de arquivos individuais.

O ZFS gerencia sistemas de arquivos através de uma hierarquia que leva em consideração estegerenciamento simplificado de propriedades como cotas, reservas, compactação e pontos demontagem. Neste modelo, o sistema de arquivos torna-se o ponto central de controle. Ossistemas de arquivos em si são muito baratos (equivalente a um novo diretório), de modo quevocê é estimulado a criar um sistema de arquivos para cada usuário, projeto, área de trabalho,etc. Este design permite definir pontos de gerenciamento granulares.

O que é ZFS?

Guia de administração do ZFS Solaris • Setembro de 200836

Page 37: Guia de amdiminstracao do zfs solaris

Terminologia do ZFSEsta seção descreve a terminologia básica usada neste livro:

ambiente de inicialização alternativo Ambiente de inicialização criado pelo comandolucreate e possivelmente atualizado pelo comandoluupgrade, mas que atualmente não está ativo ou nãoé o ambiente de inicialização primário. O ambiente deinicialização alternativo (ABE) pode ser alterado parao ambiente de inicialização primário (PBE) por meioda execução do comando luactivate.

soma de verificação Uma verificação de 256 bits dos dados em um bloco desistemas de arquivos. A capacidade da soma deverificação pode variar do fletcher2 (padrão) simples erápido a verificações criptograficamente seguras comoSHA256.

clone Um sistema de arquivos cujo conteúdo inicial éidêntico ao conteúdo de um instantâneo.

Para obter informações sobre clones, consulte “Visãogeral dos clones do ZFS” na página 178.

conjunto de dados Nome genérico das seguintes entidades do ZFS:clones, sistemas de arquivos, instantâneos ouvolumes.

Cada conjunto de dados é identificado por um úniconome no espaço de nome do ZFS. Os conjuntos dedados são identificados com o seguinte formato:

pool/caminho[ @snapshot]

pool Identifica o nome do pool dearmazenamento que contém oconjunto de dados

caminho É o nome do caminho delimitado porbarra do objeto de conjunto de dados

instantâneo É um componente opcional queidentifica um instantâneo de umconjunto de dados

Para obter mais informações sobre conjuntos dedados, consulte o Capítulo 6, “Gerenciando sistemasde arquivos ZFS”.

Terminologia do ZFS

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 37

Page 38: Guia de amdiminstracao do zfs solaris

sistemas de arquivos padrão Sistemas de arquivos criados por padrão ao usar oLive Upgrade para migrar de uma raiz UFS a uma raizZFS. O conjunto atual de sistemas de arquivos padrãoé:

/

/usr

/opt

/var

sistema de arquivos Conjunto de dados ZFS de tipo filesystem montadodentro do espaço de nome padrão do sistema e que secomporta como outros sistemas de arquivos.

Para obter mais informações sobre sistemas dearquivos, consulte o Capítulo 6, “Gerenciandosistemas de arquivos ZFS”.

espelho Dispositivo virtual que armazena várias cópiasidênticas de dados em dois ou mais discos. Se umdisco falha em um espelho, outro disco deste espelhopode fornecer os mesmos dados.

pool Grupo lógico de dispositivos que descreve o layout eas características físicas do armazenamentodisponível. O espaço para os conjuntos de dados éalocado a partir de um pool.

Para obter mais informações sobre pools dearmazenamento, consulte o Capítulo 5, “Gerenciandopools de armazenamento do ZFS”.

ambiente de inicialização primário Ambiente de inicialização usado por lucreate paraconstruir o ambiente de inicialização alternativo. Porpadrão, o ambiente de inicialização primário (PBE) éo ambiente de inicialização atual. Este padrão pode serignorado com o uso da opção lucreate - s

RAID-Z Dispositivo virtual que armazena dados e paridadesem vários discos, semelhante ao RAID-5. Para obtermais informações sobre o RAID-Z, consulte“Configuração de pool de armazenamento RAID-Z”na página 92.

resilvering O processo de transferência de dados de umdispositivo a outro é conhecido como resilvering. Porexemplo, se um componente do espelho é substituído

Terminologia do ZFS

Guia de administração do ZFS Solaris • Setembro de 200838

Page 39: Guia de amdiminstracao do zfs solaris

ou adquirido off-line, os dados do componenteatualizado do espelho são copiados para ocomponente do espelho recém-restaurado. Emprodutos tradicionais de gerenciamento de volumes,faz-se referência a este processo como resincronizaçãoespelhada.

Para obter mais informações sobre resilvering do ZFS,consulte “Exibindo o status do resilvering”na página 261.

sistemas de arquivos compartilhados Conjunto de sistemas de arquivos compartilhadoentre o ABE e o PBE. Este conjunto inclui sistemas dearquivos, como/export, e a área reservada parapermuta. Os sistemas de arquivos compartilhadostambém podem conter raízes de região.

instantâneo Imagem somente de leitura de um sistema de arquivosou volume em um determinado ponto do tempo.

Para obter informações sobre instantâneos, consulte“Visão geral dos instantâneos do ZFS” na página 173.

dispositivo virtual Dispositivo lógico em um pool, que pode ser umdispositivo físico, um arquivo ou um conjunto dedispositivos.

Para obter mais informações sobre os dispositivosvirtuais, consulte “Exibindo informações dodispositivo virtual do pool de armazenamento”na página 98.

volume Conjunto de dados usado para emular um dispositivofísico. Por exemplo, você pode criar um volume ZFScomo um dispositivo de permuta.

Para obter informações sobre volumes ZFS, consulte“Volumes ZFS” na página 231.

Requisitos para nomeação de componentes do ZFSCada componente do ZFS deve ser nomeado de acordo com as seguintes regras:

■ Não são permitidos componentes vazios.

Requisitos para nomeação de componentes do ZFS

Capítulo 1 • Sistema de arquivos ZFS (Introdução) 39

Page 40: Guia de amdiminstracao do zfs solaris

■ Cada componente pode conter somente caracteres alfanuméricos além dos quatrocaracteres especiais a seguir:■ Sublinhado (_)■ Hífen (-)■ Dois-pontos (:)■ Ponto final (.)

■ Os nomes de pool devem começar com uma letra, exceto para as seguintes restrições:■ A seqüência inicial c[0-9] não é permitida■ O nome log é reservado■ Um nome que começa com mirror, raidz ou spare não é permitido porque esses

nomes são reservados.

Além disso, os nomes de pool devem conter um sinal de porcentagem (%)■ Os nomes dos conjuntos de dados devem começar com caracteres alfanuméricos. Os nomes

de conjunto de dados não devem conter um sinal de porcentagem (%).

Requisitos para nomeação de componentes do ZFS

Guia de administração do ZFS Solaris • Setembro de 200840

Page 41: Guia de amdiminstracao do zfs solaris

Guia de introdução do ZFS

Este capítulo oferece as instruções passo a passo sobre as configurações simples do ZFS. Aochegar ao final deste capítulo, você deveria ter uma idéia básica de como funcionam oscomandos do ZFS e deveria ser capaz de criar pools e sistemas de arquivos simples. Este capítulonão é uma visão geral abrangente e faz referência a capítulos para informações mais detalhadasdo assunto tratado.

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

■ “Recomendações e requisitos de software e hardware do ZFS” na página 41■ “Criando um sistema de arquivos ZFS básico” na página 42■ “Criando um pool de armazenamento do ZFS” na página 43■ “Criando uma hierarquia de sistemas de arquivos ZFS” na página 44

Recomendações e requisitos de software e hardware do ZFSVerifique as recomendações e os requisitos de hardware e software abaixo antes de usar osoftware ZFS:

■ Um sistema SPARCTM ou x86 que esteja executando o Solaris 10 6/06 ou versão superior.■ O tamanho mínimo do disco é de 128 Mbytes. O espaço mínimo em disco necessário para o

pool de armazenamento é de aproximadamente 64 Mbytes.■ Atualmente, o tamanho mínimo de memória recomendado para a instalação de um sistema

Solaris é de 768 Mbytes. Entretanto, para um bom desempenho do ZFS, recomenda-se umGbyte ou mais de memória.

■ Se você criar uma configuração de disco espelhada, são recomendados vários controladores.

2C A P Í T U L O 2

41

Page 42: Guia de amdiminstracao do zfs solaris

Criando um sistema de arquivos ZFS básicoA administração do ZFS foi concebida levando-se em consideração a simplicidade. Um dosobjetivos do design do ZFS é reduzir o número de comandos necessários para criar um sistemade arquivos apropriado. Quando um novo pool é criado, um novo sistema de arquivos ZFS éautomaticamente criado e montado.

O exemplo abaixo mostra como criar um pool de armazenamento não espelhado denominadotank e um novo sistema de arquivos ZFS com o nome tank em um comando. Suponha que atotalidade dos discos /dev/dsk/c2t0d0 e /dev/dsk/c0t1d0 possa ser usada.

# zpool create tank mirror c1t0d0 c2t0d0

Para obter mais informações sobre configurações de pool do ZFS, consulte “Recursos dereplicação de um pool de armazenamento do ZFS” na página 92.

O novo sistema de arquivos ZFS, tank, pode utilizar tanto espaço em disco quanto fornecessário e é automaticamente montado em /tank.

# mkfile 100m /tank/foo

# df -h /tank

Filesystem size used avail capacity Mounted on

tank 80G 100M 80G 1% /tank

É provável que você queira criar sistemas de arquivos adicionais dentro de um pool. Os sistemasde arquivos oferecem pontos de administração que permitem gerenciar diferentes conjuntos dedados dentro de um mesmo pool.

O exemplo abaixo mostra como criar um sistema de arquivos denominado fs no pool dearmazenamento tank.

# zfs create tank/fs

O novo sistema de arquivos ZFS, tank/fs, pode usar tanto espaço em disco quanto fornecessário e é automaticamente montando em /tank/fs.

# mkfile 100m /tank/fs/foo

# df -h /tank/fs

Filesystem size used avail capacity Mounted on

tank/fs 80G 100M 80G 1% /tank/fs

Na maioria das vezes, é provável que você queira criar e organizar uma hierarquia de sistemasde arquivos que corresponda às suas necessidades organizacionais. Para obter mais informaçõessobre a criação de uma hierarquia de sistemas de arquivos ZFS, consulte “Criando umahierarquia de sistemas de arquivos ZFS” na página 44.

Criando um sistema de arquivos ZFS básico

Guia de administração do ZFS Solaris • Setembro de 200842

Page 43: Guia de amdiminstracao do zfs solaris

Criando um pool de armazenamento do ZFSO exemplo anterior ilustra a simplicidade do ZFS. O restante deste capítulo apresenta umexemplo mais completo, semelhante ao que poderia ser encontrado no seu ambiente. Aprimeira tarefa consiste em identificar os seus requisitos de armazenamento e criar um pool dearmazenamento. O pool descreve as características físicas do armazenamento e deve ser criadoantes dos sistemas de arquivos.

▼ Como identificar os requisitos de armazenamentopara o pool de armazenamento do ZFS

Determine os dispositivos disponíveis.Antes de criar um pool de armazenamento, você deve determinar que dispositivos armazenarãoos dados. Esses dispositivos devem ter discos de no mínimo 128 Mbytes e não devem estarsendo usados por outras partes do sistema operacional. Os dispositivos podem ser faixasindividuais de um disco pré-formatado ou podem ser discos inteiros que o ZFS formata comouma única e grande faixa.

Para o exemplo de armazenamento usado em “Como criar um pool de armazenamento do ZFS”na página 43, suponha que a totalidade dos discos /dev/dsk/c1t0d0 e /dev/dsk/c1t1d0possa ser usada.

Para obter mais informações sobre os discos e como são usados e rotulados, consulte “Usandodiscos em um pool de armazenamento do ZFS” na página 89.

Escolha a replicação de dados.O ZFS oferece suporte a vários tipos de replicação de dados, o que determina que tipos de falhasde hardware o pool pode suportar. O ZFS oferece suporte a configurações não redundantes(distribuídas), bem como a espelhamento e RAID-Z (uma variação de RAID-5).

Para o exemplo usado em “Como criar um pool de armazenamento do ZFS” na página 43,utiliza-se o espelhamento básico de dois discos disponíveis.

Para obter mais informações sobre os recursos de replicação do ZFS, consulte “Recursos dereplicação de um pool de armazenamento do ZFS” na página 92.

▼ Como criar um pool de armazenamento do ZFSTorne-se raiz e adote uma função equivalente com os perfis corretos do ZFS apropriado.Para obter mais informações sobre os perfis corretos do ZFS, consulte “Perfis de direitos doZFS” na página 241.

1

2

1

Criando um pool de armazenamento do ZFS

Capítulo 2 • Guia de introdução do ZFS 43

Page 44: Guia de amdiminstracao do zfs solaris

Selecione um nome para o pool.

O nome do pool é usado para identificar o pool de armazenamento quando os comandos zpoolou zfs estão sendo usados. A maioria dos sistemas requer somente um único pool, de modoque você pode selecionar o nome de sua preferência, contanto que esteja de acordo com osrequisitos de nomeação citados em “Requisitos para nomeação de componentes do ZFS”na página 39.

Crie o pool.

Por exemplo, crie um pool espelhado denominado tank.# zpool create tank mirror c1t0d0 c1t1d0

Se um ou mais dispositivos contiverem outro sistema de arquivos ou estiverem em uso, ocomando não poderá criar o pool.

Para obter mais informações sobre a criação de pools de armazenamento, consulte “Criandoum pool de armazenamento do ZFS” na página 95.

Para obter mais informações sobre como é determinado o uso do dispositivo, consulte“Detectando dispositivos em uso” na página 99.

Visualize os resultados.

Você pode determinar se seu pool foi criado com sucesso usando o comando zpool list .# zpool list

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 80G 137K 80G 0% ONLINE -

Para obter mais informações sobre a visualização do status do pool, consulte “Consultandostatus de pool de armazenamento do ZFS” na página 121.

Criando uma hierarquia de sistemas de arquivos ZFSDepois de criar um pool de armazenamento para armazenar dados, você pode criar suahierarquia de sistemas de arquivos. As hierarquias são mecanismos simples, porém, eficazes deorganização de informações. São muito familiares àqueles que já usaram sistemas de arquivos.

O ZFS permite que os sistemas de arquivos sejam organizados em hierarquias arbitrárias, nasquais cada sistema de arquivo tem apenas um único pai. A raiz da hierarquia é sempre o nomedo pool. O ZFS favorece esta hierarquia através do suporte à herança de propriedade para que aspropriedades comuns possam ser definidas rápida e facilmente em árvores inteiras dos sistemasde arquivos.

2

3

4

Criando uma hierarquia de sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 200844

Page 45: Guia de amdiminstracao do zfs solaris

▼ Como determinar a hierarquia do sistema de arquivosZFSSelecione a granularidade do sistema de arquivos.Os sistemas de arquivos ZFS são o ponto central da administração. São leves e podem sercriados facilmente. Um bom modelo a ser usado é o sistema de arquivos por usuário ou porprojeto, já que este modelo permite que propriedades, backups e instantâneos sejamcontrolados no esquema "por usuário" ou "por projeto".

Os dois sistemas de arquivos ZFS, bonwick e billm, são criados em “Como criar sistemas dearquivos ZFS” na página 45.

Para obter mais informações sobre o gerenciamento de sistemas de arquivos, consulte oCapítulo 6, “Gerenciando sistemas de arquivos ZFS”.

Agrupe os sistemas de arquivos semelhantes.O ZFS permite que os sistemas de arquivos sejam organizados em hierarquias para que ossistemas de arquivos semelhantes possam ser agrupados. Esse modelo oferece um ponto centralde administração para o controle de propriedades e a administração de sistemas de arquivos. Ossistemas de arquivos semelhantes devem ser criados sob um mesmo nome.

No exemplo em “Como criar sistemas de arquivos ZFS” na página 45, os dois sistemas dearquivos criados foram colocados em um sistema de arquivos denominado home.

Escolha as propriedades do sistema de arquivos.A maioria das características do sistema de arquivos é controlada através de propriedadessimples. Essas propriedades controlam vários comportamentos, incluindo onde os sistemas dearquivos são montados, como são compartilhados, se usam compactação e se as cotas estãoativas.

No exemplo em “Como criar sistemas de arquivos ZFS” na página 45, todos os diretórios deinício são montados em /export/zfs/ usuário, são compartilhados através do NFS eapresentam a compactação ativada. Além disso, em bonwick é obrigatória uma cota de 10Gbytes.

Para obter mais informações sobre propriedades, consulte “Introduzindo as propriedades doZFS” na página 141.

▼ Como criar sistemas de arquivos ZFSTorne-se raiz e adote uma função equivalente com os perfis corretos do ZFS apropriado.Para obter mais informações sobre os perfis corretos do ZFS, consulte “Perfis de direitos doZFS” na página 241.

1

2

3

1

Criando uma hierarquia de sistemas de arquivos ZFS

Capítulo 2 • Guia de introdução do ZFS 45

Page 46: Guia de amdiminstracao do zfs solaris

Crie a hierarquia desejada.

Neste exemplo, é criado um sistema de arquivos que age como um contêiner para sistemas dearquivos individuais.# zfs create tank/home

Em seguida, os sistemas de arquivos individuais são agrupados no sistema de arquivos home nopool tank.

Defina as propriedades de herança.

Depois que a hierarquia do sistema de arquivos tiver sido determinada, defina as propriedadesque devem ser compartilhadas com os usuários:# zfs set mountpoint=/export/zfs tank/home

# zfs set sharenfs=on tank/home

# zfs set compression=on tank/home

# zfs get compression tank/home

NAME PROPERTY VALUE SOURCE

tank/home compression on local

Está disponível um novo recurso que permite definir as propriedades do sistema de arquivos aocriá-lo. Por exemplo:

# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home

Para obter mais informações sobre propriedades e herança de propriedades, consulte“Introduzindo as propriedades do ZFS” na página 141.

Crie os sistemas de arquivos individuais.

Observe que os sistemas de arquivos podem ter sido criados e conseqüentemente aspropriedades podem ter sido alteradas no nível home. Todas as propriedades podem seralteradas dinamicamente enquanto os sistemas de arquivos estão sendo usados.# zfs create tank/home/bonwick

# zfs create tank/home/billm

Esses sistemas de arquivos herdam as configurações de propriedade dos seus pais, assim eles sãomontados automaticamente em /export/zfs/ usuário e são compartilhados por NFS. Não énecessário editar o arquivo /etc/vfstab ou o /etc/dfs/dfstab.

Para obter mais informações sobre a criação de sistemas de arquivos, consulte “Criando umsistema de arquivos ZFS” na página 138.

Para mais informações sobre a montagem e o compartilhamento de sistemas de arquivos,consulte “Montando e compartilhando sistemas de arquivos ZFS” na página 161.

2

3

4

Criando uma hierarquia de sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 200846

Page 47: Guia de amdiminstracao do zfs solaris

Defina as propriedades específicas do sistema de arquivos.Neste exemplo, é atribuída uma cota de 10 Gbytes ao bonwick do usuário. Essa propriedadelimita a quantidade de espaço que o usuário pode utilizar, independentemente do espaço emdisco disponível no pool.# zfs set quota=10G tank/home/bonwick

Visualize os resultados.Visualize as informações disponíveis do sistema de arquivos usando o zfs list:# zfs list

NAME USED AVAIL REFER MOUNTPOINT

tank 92.0K 67.0G 9.5K /tank

tank/home 24.0K 67.0G 8K /export/zfs

tank/home/billm 8K 67.0G 8K /export/zfs/billm

tank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick

Observe que o bonwick do usuário tem somente 10 Gbytes de espaço disponível, enquanto queo billm do usuário pode usar o pool completo (67 Gbytes).

Para obter mais informações sobre a visualização do status do sistema de arquivos, consulte“Consultando informações sobre o sistema de arquivos ZFS” na página 153.

Para obter mais informações sobre como o espaço é usado e calculado, consulte “Contagem deespaço do ZFS” na página 50.

5

6

Criando uma hierarquia de sistemas de arquivos ZFS

Capítulo 2 • Guia de introdução do ZFS 47

Page 48: Guia de amdiminstracao do zfs solaris

48

Page 49: Guia de amdiminstracao do zfs solaris

Diferenças entre o ZFS e os sistemas dearquivos tradicionais

Este capítulo aborda algumas das principais diferenças existentes entre o ZFS e os sistemas dearquivos tradicionais. Compreender essas diferenças-chave pode ajudar a diminuir osmal-entendidos ao trabalhar com ferramentas tradicionais na interação com o ZFS.

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

■ “Granularidade do sistema de arquivos ZFS” na página 49■ “Contagem de espaço do ZFS” na página 50■ “Comportamento por espaço excedido” na página 50■ “Montando sistemas de arquivos ZFS” na página 51■ “Gerenciamento de volume tradicional” na página 51■ “Novo modelo de ACL do Solaris” na página 51

Granularidade do sistema de arquivos ZFSTradicionalmente, os sistemas de arquivos eram limitados por um dispositivo para que ossistemas de arquivos em si fossem limitados pelo tamanho do dispositivo. A criação e recriaçãode sistemas de arquivos tradicionais, devido às restrições do tamanho, exigem muito tempo esão muitas vezes difíceis. Os produtos tradicionais de gerenciamento de volume ajudaram agerenciar este processo.

Por não estarem limitados a dispositivos específicos, os sistemas de arquivos ZFS podem sercriados rápida e facilmente, semelhante à criação de diretórios. Os sistemas de arquivos ZFScrescem automaticamente dentro do espaço alocado para o pool de armazenamento.

Em vez de criar um sistema de arquivos, como o /export/home, para gerenciar váriossubdiretórios de usuários, você pode criar um sistema de arquivos por usuário. Além disso, oZFS oferece uma hierarquia de sistemas de arquivos para que você possa configurar e gerenciarfacilmente vários sistemas de arquivos, aplicando as propriedades que podem ser herdadaspelos sistemas de arquivos contidos na hierarquia.

3C A P Í T U L O 3

49

Page 50: Guia de amdiminstracao do zfs solaris

Para ver exemplos da criação de uma hierarquia de sistemas de arquivos, consulte “Criandouma hierarquia de sistemas de arquivos ZFS” na página 44.

Contagem de espaço do ZFSO ZFS está baseado no conceito de armazenamento por pool. Ao contrário dos típicos sistemasde arquivos, que são mapeados para armazenamentos físicos, todos os sistemas de arquivos ZFSde um pool compartilham o armazenamento disponível no pool. Desse modo, o espaçodisponível relatado por utilitários como o df podem alterar mesmo quando o sistema dearquivos está inativo, já que outros sistemas de arquivos do pool consomem e liberam espaço.Observe que o tamanho máximo do sistema de arquivos pode ser limitado pelo uso de cotas.Para obter mais informações sobre as cotas, consulte “Definindo cotas em sistemas de arquivosZFS” na página 168. O sistema de arquivos pode ter espaço garantido através de reservas. Paraobter mais informações sobre as reservas, consulte “Definindo reservas nos sistemas dearquivos ZFS” na página 170. Esse modelo é semelhante ao modelo de NFS, no qual váriosdiretórios são montados a partir do mesmo sistema de arquivos (considerar /home).

Todos os metadados no ZFS estão alocados dinamicamente. A maioria dos outros sistemas dearquivos pré-alocam muitos de seus metadados. Conseqüentemente, é exigido para essesmetadados uma quantidade imediata de espaço na criação de sistemas de arquivos. Essecomportamento denota também que o número total de arquivos suportado pelos sistemas dearquivos é predeterminado. Por alocar seus metadados conforme precisa deles, o ZFS nãorequer quantidade de espaço inicial e o número de arquivos está limitado somente pelo espaçodisponível. A saída do comando df -g não deve ser interpretada da mesma forma para o ZFS epara outros sistemas de arquivos. Os arquivos totais relatados são somente uma estimativabaseada na quantidade de armazenamento disponível no pool.

O ZFS é um sistema de arquivos transacional. A maioria das modificações do sistema dearquivos é incorporada dentro de grupos transacionais e é enviada ao disco assincronicamente.Antes de serem enviadas ao disco, essas modificações são denominadas alterações pendentes. Aquantidade de espaço usado, disponível e referenciado pelo arquivo ou sistema de arquivos nãoconsidera as alterações pendentes. As alterações pendentes são consideradas em geral depois dealguns segundos. Mesmo realizando uma alteração no disco usando fsync(3c) ou O_SYNC, nãose garante necessariamente que as informações sobre o uso do espaço sejam atualizadasimediatamente.

Comportamento por espaço excedidoOs instantâneos de sistemas de arquivos são baratos e fáceis de criar no ZFS. Os instantâneosserão provavelmente comuns nos ambientes ZFS. Para obter mais informações sobre osinstantâneos do ZFS, consulte o Capítulo 7, “Trabalhando com instantâneos e clones do ZFS”.

A presença de instantâneos pode provocar alguns comportamentos inesperados ao tentarliberar espaço. Normalmente, com as permissões apropriadas, você pode remover o arquivo de

Contagem de espaço do ZFS

Guia de administração do ZFS Solaris • Setembro de 200850

Page 51: Guia de amdiminstracao do zfs solaris

todo o sistema de arquivos, o que resulta em mais espaço disponível no sistema de arquivos. Noentanto, se o arquivo a ser removido existir no instantâneo do sistema de arquivos, entãonenhum espaço é liberado com a exclusão do arquivo. Os blocos usados pelo arquivocontinuam a ser referenciados a partir do instantâneo.

Como resultado, a exclusão do arquivo pode consumir mais espaço em disco, pois uma novaversão do diretório precisa ser criada para refletir o novo estado do espaço de nome. Estecomportamento significa que você pode ter um ENOSPC ou EDQUOT inesperado ao tentarremover o arquivo.

Montando sistemas de arquivos ZFSO ZFS destina-se a diminuir a complexidade e a facilitar a administração. Por exemplo, comsistemas de arquivos existentes você deve editar o arquivo /etc/vfstab sempre que um novosistema de arquivos for adicionado. O ZFS eliminou essa necessidade montando edesmontando automaticamente os sistemas de arquivos de acordo com as propriedades doconjunto de dados. Você não precisa gerenciar as entradas do ZFS no arquivo /etc/vfstab.

Para obter mais informações sobre a montagem e o compartilhamento de sistemas de arquivosZFS, consulte “Montando e compartilhando sistemas de arquivos ZFS” na página 161.

Gerenciamento de volume tradicionalDe acordo com o descrito em “Armazenamento de ZFS em pool” na página 34, o ZFS dispensa anecessidade de usar um gerenciador de volumes diferente. O ZFS opera em dispositivos básicos,de modo que é possível criar um pool de armazenamento constituído de volumes lógicos, tantono software quanto no hardware. Essa configuração não é recomendada, já que o ZFS funcionamelhor quando usa dispositivos físicos básicos. O uso de volumes lógicos pode prejudicar odesempenho, a segurança, ou ambos, e deve ser evitado.

Novo modelo de ACL do SolarisAs versões anteriores do sistema operacional Solaris ofereciam suporte a uma implementaçãode ACL baseada principalmente na especificação da ACL do esquema POSIX. As ACLsbaseadas no esquema POSIX são usadas para proteger os arquivos UFS. O novo modelo de ACLbaseado na especificação NFSv4 é usado para proteger os arquivos ZFS.

As principais diferenças do novo modelo da ACL do Solaris são as seguintes:

■ Está baseado na especificação NFSv4 e é semelhante aos modelos de ACLs do NT.■ O conjunto de privilégios de acesso é muito mais granular.

Novo modelo de ACL do Solaris

Capítulo 3 • Diferenças entre o ZFS e os sistemas de arquivos tradicionais 51

Page 52: Guia de amdiminstracao do zfs solaris

■ É definido e exibido com os comandos chmod e ls em vez dos comandos setfacl e getfacl.

■ Possui semânticas mais ricas para designar como os privilégios de acesso serão aplicados dodiretório aos subdiretórios, e assim por diante.

Para obter mais informações sobre o uso de ACLs com arquivos ZFS, consulte o Capítulo 8,“Usando ACLs para proteger arquivos ZFS”.

Novo modelo de ACL do Solaris

Guia de administração do ZFS Solaris • Setembro de 200852

Page 53: Guia de amdiminstracao do zfs solaris

Instalando e inicializando um sistema dearquivos raiz ZFS

Este capítulo descreve como instalar e inicializar um sistema de arquivos ZFS. Também étratada a migração de um sistema de arquivos raiz UFS para um sistema de arquivos ZFS com oSolaris Live Upgrade.

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

■ “Instalando e inicializando um sistema de arquivos raiz ZFS (Visão geral)” na página 53■ “Requisitos de instalação do Solaris e do Solaris Live Upgrade para suporte ao ZFS”

na página 55■ “Instalando um sistema de arquivos raiz ZFS (Instalação inicial)” na página 57■ “Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart)” na página 63■ “Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris

Live Upgrade)” na página 67■ “Suporte do ZFS para dispositivos de permuta e despejo” na página 79■ “Inicializando a partir de um sistema de arquivos raiz ZFS” na página 81

Para obter uma lista dos problemas conhecidos desta versão, consulte as notas da versão doSolaris 10 10/08.

Para obter informações atualizadas sobre a solução de problemas, visite o seguinte site:

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

Instalando e inicializando um sistema de arquivos raiz ZFS(Visão geral)

No Solaris 10 10/08, é possível instalar e inicializar a partir de um sistema de arquivos raiz ZFSdas seguintes formas:

■ Você pode executar uma instalação inicial na qual o ZFS seja selecionado como sistema dearquivos raiz.

4C A P Í T U L O 4

53

Page 54: Guia de amdiminstracao do zfs solaris

■ Você pode usar o recurso Solaris Live Upgrade para migrar um sistema de arquivos raiz UFSpara um sistema de arquivos raiz ZFS. Além disso, é possível usar o Solaris Live Upgradepara realizar as seguintes tarefas:■ Criar um novo ambiente de inicialização em um pool raiz ZFS existente■ Criar um novo ambiente de inicialização em um novo pool raiz ZFS

Depois que um sistema baseado em SPARC ou em x86 tiver sido instalado com um sistema dearquivos raiz ZFS ou migrado para um sistema de arquivos raiz ZFS, o sistema se inicializaautomaticamente a partir do sistema de arquivos raiz ZFS. Para obter mais informações sobrealterações na inicialização, consulte “Inicializando a partir de um sistema de arquivos raiz ZFS”na página 81.

Recursos de instalação do ZFSSão oferecidos os seguintes recursos de instalação do ZFS nesta versão do Solaris:

■ Com o instalador de texto interativo do Solaris, é possível instalar um sistema de arquivosraiz UFS ou ZFS. O sistema de arquivos padrão ainda é o UFS nesta versão do Solaris. Vocêpode acessar a opção de instalação com o instalador de texto interativo das seguintesmaneiras:■ Em sistemas baseados em SPARC, use a seguinte sintaxe do DVD de instalação do

Solaris:

ok boot cdrom - text

■ Em sistemas baseados em SPARC, use a seguinte sintaxe quando for inicializar a partirda rede:

ok boot net - text

■ Em sistemas baseados em x86, selecione a opção de instalação em modo de texto quandopossível.

■ Os recursos do Custom JumpStartTM permitem configurar um perfil para criar um pool dearmazenamento do ZFS e designar um sistema de arquivos ZFS inicializável.

■ Com o recurso Solaris Live Upgrade, é possível migrar um sistema de arquivos raiz UFSpara um sistema de arquivos raiz ZFS. Os comandos lucreate e luactivate forammelhorados para suportar pools e sistemas de arquivos ZFS. Os comandos lustatus eludelete funcionam como nas versões anteriores do Solaris.

■ É possível configurar um pool raiz ZFS espelhado selecionando dois discos durante ainstalação. Ou, é possível anexar ou adicionar discos depois da instalação para criar um poolraiz ZFS espelhado.

■ Os dispositivos de permuta e despejo são criados automaticamente nos volumes ZFS dopool raiz ZFS.

Instalando e inicializando um sistema de arquivos raiz ZFS (Visão geral)

Guia de administração do ZFS Solaris • Setembro de 200854

Page 55: Guia de amdiminstracao do zfs solaris

São oferecidos nesta versão os seguintes recursos de instalação:

■ O recurso de instalação GUI para instalação de sistemas de arquivos raiz ZFS não estádisponível no momento.

■ O recurso de instalação SolarisTM Flash para instalação de sistemas de arquivos raiz ZFS nãoestá disponível no momento.

■ Não é possível usar o programa de atualização padrão a fim de atualizar o sistema dearquivos raiz UFS para um sistema de arquivos raiz ZFS. Se houver pelo menos uma faixa doUFS inicializável, então a opção de atualização padrão deve estar disponível. Se houver poolsdo ZFS inicializáveis e não houver faixas do UFS inicializáveis, a única forma de atualizar éusar o Live Upgrade e não o programa de atualização padrão. Se houver uma faixa do UFS eum pool do ZFS inicializáveis, a opção de atualização padrão deve estar disponível, massomente a faixa do UFS deve estar disponível para atualização.

Requisitos de instalação do Solaris e do Solaris LiveUpgrade para suporte ao ZFSCertifique-se de que os requisitos seguintes sejam cumpridos antes de instalar um sistema comum sistema de arquivos raiz ZFS ou de migrar um sistema de arquivos raiz UFS para um ZFS:

■ Informação da versão do Solaris – Os recursos de instalação e inicialização a partir de umsistema de arquivos raiz ZFS estão disponíveis no Solaris 10 10/08. Com o fim de usar oSolaris Live Upgrade para migrar para um sistema de arquivos raiz ZFS, é necessário instalaro Solaris 10 10/08 ou atualizar para a versão Solaris 10 10/08.

■ Considerações sobre o pool de armazenamento do ZFS – É possível criar um novo pool dearmazenamento do ZFS se for realizada a instalação inicial.Com o fim de usar o Solaris Live Upgrade para migrar um sistema de arquivos raiz UFS paraum ZFS, deve haver um pool de armazenamento do ZFS antes que a operação lucreate sejausada. O pool de armazenamento do ZFS deve ser criado com faixas em vez de com umdisco inteiro para que possa ser atualizável e inicializável.

Além disso, o pool de armazenamento do ZFS destinado a ser o pool raiz deve cumprir osseguintes requisitos:

■ Requisitos de espaço do pool de armazenamento do ZFS – A quantidade mínimanecessária de espaço disponível para o pool em um sistema de arquivos raiz ZFS é maior doque em um sistema de arquivos raiz UFS porque os dispositivos de permuta e despejo devemser dispositivos diferentes em um ambiente de raiz ZFS. Por padrão, os dispositivos depermuta e despejo são um mesmo dispositivo em sistema de arquivos raiz UFS.Quando um sistema é instalado ou atualizado com um sistema de arquivos raiz ZFS, otamanho da área de permuta e o dispositivo de despejo dependem da quantidade dememória física. A quantidade mínima de espaço disponível para o pool em um sistema de

Instalando e inicializando um sistema de arquivos raiz ZFS (Visão geral)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 55

Page 56: Guia de amdiminstracao do zfs solaris

arquivos raiz ZFS inicializável depende da quantidade de memória física, do espaço emdisco disponível e do número de ambientes de inicialização (BEs) que serão criados.■ 768 Mbytes é a quantidade mínima necessária de memória para instalar um sistema de

arquivos raiz ZFS■ Recomenda-se 1 Gbyte de memória para melhor desempenho geral do ZFS■ Recomenda-se como mínimo 16 Gbytes de espaço em disco O espaço é consumido da

seguinte forma:■ Área de permuta e dispositivo de despejo – A área de permuta padrão ocupa

metade da memória física, porém não mais de 2 Gbytes nem menos de 512 Mbytes. Odispositivo de despejo ocupa metade da memória física, porém não mais de 2 Gbytesnem menos de 512 Mbytes. Você pode ajustar os tamanhos dos volumes dosdispositivos de permuta e despejo antes, durante e depois da instalação. Para obtermais informações, consulte “Ajustando os tamanhos dos dispositivos de permuta edespejo do ZFS” na página 80.

■ Ambiente de inicialização (BE) – Além dos novos requisitos de espaço de permuta edespejo ou dos tamanhos dos dispositivos de permuta e despejo, um BE do ZFS que émigrado de um BE do UFS precisa de 6 Gbytes aproximadamente. Cada BE do ZFSclonado de outro BE do ZFS não precisa de espaço adicional em disco, mas não seesqueça que o tamanho do BE aumentará quando os patches forem aplicados. Todosos BEs do ZFS do mesmo pool raiz usam os mesmos dispositivos de permuta edespejo.

Por exemplo, um sistema com 12 Gbytes de espaço em disco pode ser muito pequenopara um ambiente ZFS inicializável porque são necessários 2 Gbytes de espaço em discopara cada dispositivo de permuta e despejo, e aproximadamente 6 Gbytes para o BE doZFS migrado de um BE do UFS.

■ O pool deve ter um rótulo SMI. Este requisito deve ser cumprido caso o pool seja criado comfaixas de disco.

■ O pool deve existir tanto em uma faixa de disco quanto em faixas de disco espelhadas, masnão em uma configuração RAID-Z nem em uma configuração não redundante de váriosdiscos. Se tentar usar uma configuração de pool não suportada durante a migração do LiveUpgrade, será exibida uma mensagem semelhante à seguinte:

ERROR: ZFS pool name does not support boot environments

■ Em um sistema baseado em x86, o disco deve conter uma tabela de fdisk.■ Os discos destinados à inicialização em um pool raiz ZFS devem estar limitados a um

tamanho de 1 TB em sistemas baseados em SPARC e em x86.

Instalando e inicializando um sistema de arquivos raiz ZFS (Visão geral)

Guia de administração do ZFS Solaris • Setembro de 200856

Page 57: Guia de amdiminstracao do zfs solaris

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)Nesta versão do Solaris, você pode realizar uma instalação inicial usando o instalador de textointerativo do Solaris para criar um pool de armazenamento do ZFS que contenha um sistema dearquivos raiz ZFS inicializável. Se tiver um pool de armazenamento do ZFS que deseja usar nosistema de arquivos raiz ZFS, você deve usar o Solaris Live Upgrade para migrar o sistema dearquivos raiz UFS existente em um pool de armazenamento do ZFS existente. Para obter maisinformações, consulte “Migrando um sistema de arquivos raiz UFS para um sistema dearquivos raiz ZFS (Solaris Live Upgrade)” na página 67.

Se for configurar regiões depois da instalação inicial de um sistema de arquivos raiz ZFS e tiverplanos de atualizar ou aplicar patches no sistema, consulte “Usando o Solaris Live Upgrade paramigrar um sistema com regiões” na página 74.

Se já tiver pools de armazenamento do ZFS no sistema, eles são reconhecidos pela mensagem aseguir, mas não são tocados, a menos que você selecione os discos nos pools existentes paracriar um novo pool de armazenamento.

There are existing ZFS pools available on this system. However, they can only be upgraded

using the Live Upgrade tools. The following screens will only allow you to install a ZFS root system,

not upgrade one.

Cuidado – Os pools existentes serão destruídos se qualquer um dos seus discos estiveremselecionados no novo pool.

Antes de começar a instalação inicial para criar um pool de armazenamento do ZFS, consulte“Requisitos de instalação do Solaris e do Solaris Live Upgrade para suporte ao ZFS”na página 55.

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável

O processo de instalação com o instalador de texto interativo do Solaris é basicamente o mesmodas versões anteriores do Solaris, exceto que você é solicitado a criar um sistema de arquivosraiz UFS ou ZFS. O UFS ainda é o sistema de arquivos padrão nesta versão. Se você selecionarum sistema de arquivos raiz ZFS, você será solicitado a criar um pool de armazenamento doZFS. A instalação de um sistema de arquivos raiz ZFS abrange as seguintes etapas:

1. Selecione o método de instalação interativo do Solaris porque a instalação com o SolarisFlash não está disponível para criar um sistema de arquivos raiz ZFS inicializável.Você deve usar o Solaris Live Upgrade para migrar para um sistema de arquivos raiz ZFSassim que a versão atual, Solaris 10 10/08, esteja instalada. Para obter mais informaçõessobre a migração para um sistema de arquivos raiz ZFS, consulte “Migrando um sistema dearquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)”na página 67.

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 57

Page 58: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável (Continuação)

2. Se desejar criar um sistema de arquivos raiz ZFS, selecione a opção ZFS. Por exemplo:

Choose Filesystem Type

Select the filesystem to use for your Solaris installation

[ ] UFS

[X] ZFS

3. Após selecionar o software que será instalado, você é solicitado a selecionar os discos paracriar o pool de armazenamento do ZFS. Esta tela é semelhante à das versões anteriores doSolaris, exceto no seguinte texto:

For ZFS, multiple disks will be configured as mirrors, so the disk you choose,

or the slice within the disk must exceed the Suggested Minimum value.

Você pode selecionar o disco ou os discos a serem usados para o pool raiz ZFS. Se selecionardois discos, uma configuração espelhada de dois discos é definida para o pool raiz. Tanto umpool espelhado de dois discos quanto de três discos é excelente. Se tiver oito discos eselecionar todos eles, os oito discos são usados para o pool raiz como um grande espelho.Esta configuração não é considerada ótima. Se desejar criar um pool raiz espalhado comquatro espelhos de dois discos, você deve configurar um pool espelhado de dois discosdurante a instalação inicial e usar o comando zpool attach para anexar os seis discosadicionais após a conclusão da instalação. Uma configuração de pool RAID-Z para o poolraiz não é suportada. Para obter mais informações sobre a configuração de pools dearmazenamento do ZFS, consulte “Recursos de replicação de um pool de armazenamentodo ZFS” na página 92.

4. Depois de selecionar um ou mais discos para o pool de armazenamento do ZFS, será exibidauma tela semelhante à seguinte:

Configure ZFS Settings

Specify the name of the pool to be created from the disk(s) you have chosen.

Also specify the name of the dataset to be created within the pool that is

to be used as the root directory for the filesystem.

ZFS Pool Name: rpool

ZFS Root Dataset Name: s10s_u6wos_nightly

ZFS Pool Size (in MB): 34731

Size of Swap Area (in MB): 512

Size of Dump Area (in MB): 512

(Pool size must be between 6413 MB and 34731 MB)

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Guia de administração do ZFS Solaris • Setembro de 200858

Page 59: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável (Continuação)

[X] Keep / and /var combined

[ ] Put /var on a separate dataset

Nesta tela, você pode alterar o nome do pool do ZFS, o nome do conjunto de dados, otamanho do pool e o tamanho dos dispositivos de permuta e despejo movendo as teclas decontrole do cursor pelas entradas e substituindo o valor do texto padrão pelo novo texto.Ou, pode aceitar os valores padrão. Além disso, você pode modificar a forma como osistema de arquivos /var é criado e montado.

Neste exemplo, o nome do conjunto de dados é modificado para zfs1008.

ZFS Pool Name: rpool

ZFS Root Dataset Name: zfs1008

ZFS Pool Size (in MB): 34731

Size of Swap Area (in MB): 512

Size of Dump Area (in MB): 512

(Pool size must be between 6413 MB and 34731 MB)

5. Você pode alterar o perfil da instalação nesta tela final de instalação. Por exemplo:

Profile

The information shown below is your profile for installing Solaris software.

It reflects the choices you’ve made on previous screens.

============================================================================

Installation Option: Initial

Boot Device: c1t2d0

Root File System Type: ZFS

Client Services: None

Regions: North America

System Locale: C ( C )

Software: Solaris 10, Entire Distribution

Pool Name: rpool

Boot Environment Name: zfs1008

Pool Size: 34731 MB

Devices in Pool: c1t2d0

Quando a instalação terminar, reveja as informações resultantes do pool de armazenamento edo sistema de arquivos ZFS. Por exemplo:

# zpool status

pool: rpool

state: ONLINE

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 59

Page 60: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável (Continuação)

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

rpool ONLINE 0 0 0

c1t2d0s0 ONLINE 0 0 0

errors: No known data errors

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

rpool 5.46G 27.8G 94.5K /rpool

rpool/ROOT 4.46G 27.8G 18K legacy

rpool/ROOT/zfs1008 4.46G 27.8G 4.46G /

rpool/dump 512M 27.8G 512M -

rpool/export 38K 27.8G 20K /export

rpool/export/home 18K 27.8G 18K /export/home

rpool/swap 512M 28.3G 12.2M -

A saída zfs list de amostra identifica os componentes do pool raiz, como as entradasrpool/ROOT que não estão acessíveis por padrão.

Se tiver criado inicialmente seu pool de armazenamento do ZFS com um disco, você podeconverter o disco em uma configuração ZFS espelhada depois da instalação usando o comandozpool attach para anexar um disco disponível. Por exemplo:

# zpool attach rpool c1t2d0s0 c1t3d0s0

# zpool status

pool: rpool

state: ONLINE

status: One or more devices is currently being resilvered. The pool will

continue to function, possibly in a degraded state.

action: Wait for the resilver to complete.

scrub: resilver in progress for 0h0m, 5.03% done, 0h13m to go

config:

NAME STATE READ WRITE CKSUM

rpool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t2d0s0 ONLINE 0 0 0

c1t3d0s0 ONLINE 0 0 0

errors: No known data errors

Leva algum tempo passar os dados ao novo disco, mas o pool fica disponível.

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Guia de administração do ZFS Solaris • Setembro de 200860

Page 61: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável (Continuação)

Até que o CR 6668666 seja corrigido, será necessário instalar as informações de inicializaçãonos discos anexados usando os comandos installboot ou installgrub se desejar ativar ainicialização em outros discos no espelho. Se criar um pool raiz ZFS espelhado com o métodode instalação inicial, esta etapa não é necessária. Para obter mais informações sobre a instalaçãodas informações de inicialização, consulte “Inicializando de um disco alternativo em um poolraiz ZFS espelhado” na página 82.

Para obter mais informações sobre a adição ou anexação de discos, consulte “Gerenciandodispositivos em pools de armazenamento do ZFS” na página 103.

Se desejar criar outro ambiente de inicialização (BE) do ZFS no mesmo pool dearmazenamento, você pode usar o comando lucreate. No exemplo seguinte, é criado um novoBE denominado zfs10082BE. O BE atual é denominado zfs1008BE, exibido na saída zfs list,e não é reconhecido na saída lustatus até que o novo BE seja criado.

# lustatus

ERROR: No boot environments are configured on this system

ERROR: cannot determine list of all boot environment names

Se criar um novo BE do ZFS no mesmo pool, use uma sintaxe semelhante à seguinte:

# lucreate -n zfs10082BE

Analyzing system configuration.

Comparing source boot environment <zfs1008BE> file systems with the file

system(s) you specified for the new boot environment. Determining which

file systems should be in the new boot environment.

Updating boot environment description database on all BEs.

Updating system configuration files.

Creating configuration for boot environment <zfs10082BE>.

Source boot environment is <zfs1008BE>.

Creating boot environment <zfs10082BE>.

Cloning file systems from boot environment <zfs1008BE> to create boot environment <zfs10082BE>.

Creating snapshot for <rpool/ROOT/zfs1008BE> on <rpool/ROOT/zfs1008BE@zfs10082BE>.

Creating clone for <rpool/ROOT/zfs1008BE@zfs10082BE> on <rpool/ROOT/zfs10082BE>.

Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs10082BE>.

Population of boot environment <zfs10082BE> successful.

Creation of boot environment <zfs10082BE> successful.

A criação de um BE do ZFS dentro do mesmo pool usa os recursos de clones e instantâneos doZFS, de modo que o BE é criado instantaneamente. Para obter mais detalhes sobre o uso doSolaris Live Upgrade em uma migração de raiz ZFS, consulte “Migrando um sistema dearquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)” na página 67.

Depois, verifique os novos ambientes de inicialização. Por exemplo:

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 61

Page 62: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–1 Instalação inicial de um sistema de arquivos raiz ZFS inicializável (Continuação)

# lustatus

Boot Environment Is Active Active Can Copy

Name Complete Now On Reboot Delete Status

-------------------------- -------- ------ --------- ------ ----------

ufs1008BE yes no no yes -

zfs1008BE yes yes yes no -

zfs10082BE yes no no yes -

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

rpool 5.65G 27.6G 19K /rpool

rpool/ROOT 4.64G 27.6G 18K /rpool/ROOT

rpool/ROOT/zfs10082BE 98.5K 27.6G 4.64G /tmp/.alt.luupdall.5312

rpool/ROOT/zfs1008BE 4.64G 27.6G 4.64G /

rpool/ROOT/zfs1008BE@zfs10082BE 92.5K - 4.64G -

rpool/dump 515M 27.6G 515M -

rpool/swap 513M 28.1G 16K -

Se desejar inicializar a partir de BE alternativo, use o comandoluactivate. Depois de ativar oBE em um sistema baseado em SPARC, use o comando boot - L para identificar os BEsdisponíveis quando o dispositivo de inicialização contiver um pool de armazenamento do ZFS.Ao inicializar de um sistema baseado em x86, identifique o BE a ser inicializado no menuGRUB.

Por exemplo, em um sistema baseado em SPARC, use o comando boot - L para exibir uma listados BEs disponíveis. Para inicializar do novo BE, zfs10082BE, selecione a opção 2. Em seguida,digite o comando boot -Z exibido.

ok boot -L

Executing last command: boot -L

Boot device: /pci@1f,0/pci@1/scsi@8/disk@1,0:a File and args: -L

1 zfs1008BE

2 zfs10082BE

Select environment to boot: [ 1 - 2 ]: 2

To boot the selected entry, invoke:

boot [<root-device>] -Z rpool/ROOT/zfs10082BE

Program terminated

ok boot -Z rpool/ROOT/zfs10082BE

Para obter mais informações sobre a inicialização de um sistema de arquivos ZFS, consulte“Inicializando a partir de um sistema de arquivos raiz ZFS” na página 81.

Instalando um sistema de arquivos raiz ZFS (Instalação inicial)

Guia de administração do ZFS Solaris • Setembro de 200862

Page 63: Guia de amdiminstracao do zfs solaris

Instalando um sistema de arquivos raiz ZFS (Instalação comJumpStart)

Você pode criar um perfil JumpStart para instalar um sistema de arquivos raiz ZFS ou UFS. Se operfil estiver configurado para instalar um sistema de arquivos raiz UFS, todas aspalavras-chave existentes do perfil funcionam como nas versões anteriores do Solaris.

Um perfil específico do ZFS deve conter a nova palavra-chave pool. A palavra-chave poolinstala um novo pool raiz e, por padrão, é criado um novo ambiente de inicialização. Você podefornecer o nome do ambiente de inicialização e criar outro conjunto de dados /var com aspalavras-chave bootenv installbe e as opções bename e dataset.

Para obter informações gerais sobre o uso dos recursos do JumpStart, consulte Solaris 10Installation Guide: Custom JumpStart and Advanced Installations.

Se for configurar regiões depois da instalação do JumpStart em um sistema de arquivos raiz ZFSe tiver planos de atualizar ou aplicar patches no sistema, consulte “Usando o Solaris LiveUpgrade para migrar um sistema com regiões” na página 74.

Exemplos de perfil do JumpStart de ZFSEsta seção oferece exemplos de perfis do JumpStart específicos do ZFS.

O perfil seguinte realiza uma instalação inicial especificada com install_type

instalação-inicial em um novo pool, identificado com pool novopool, cujo tamanho éautomaticamente determinado com a palavra-chave auto para o tamanho dos discosespecificados. A área de permuta e o dispositivo de despejo são dimensionadosautomaticamente com a palavra-chave auto com base na metade do tamanho da memória físicaaté 2 GBytes, em uma configuração espelhada de discos (com a palavra-chave mirror e osdiscos especificados como c0t0d0 e c0t1d0). As características do ambiente de inicialização sãodefinidas com a palavra-chave bootenv para instalar um novo BE com a palavra-chaveinstallbe e um bename denominado s10u6-xx é criado.

install_type initial-install

pool newpool auto auto auto mirror c0t0d0s0 c0t1d0s0

bootenv installbe bename s10u6-xx

O seguinte perfil realiza uma instalação inicial com a palavra-chave install_typeinstalação-inicial do metacluster SUNWCall em um novo pool chamado newpool, que possui umtamanho de 80 Gbytes. Este pool é criado com um volume de permuta de 2 Gbytes e um volumede despejo de 2 Gbytes, em uma configuração espelhada de qualquer um dos dois dispositivosdisponíveis que seja grande o suficiente para criar um pool de 80 Gbytes. Se nenhum dos doisdispositivos estiverem disponíveis, a instalação falha. As características do ambiente deinicialização são definidas com a palavra-chave bootenv para instalar um novo BE com apalavra-chave installbe e um bename denominado s10u6–xx é criado.

Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 63

Page 64: Guia de amdiminstracao do zfs solaris

install_type initial-install

cluster SUNWCall

pool newpool 80g 2g 2g mirror any any

bootenv installbe bename s10u6-xx

Você pode usar o perfil seguinte ou uma sintaxe semelhante para preservar os sistemas dearquivos UFS existentes na faixa 1 e 3, por exemplo.

filesys rootdisk.s1 existing ignore

filesys rootdisk.s3 existing ignore

pool rpool auto 2G 2G rootdisk.s0

Você pode usar o perfil seguinte ou uma sintaxe semelhante para criar a faixa 1 e 3 para sistemasde arquivos UFS, por exemplo.

filesys rootdisk.s1 8196

filesys rootdisk.s3 8196

pool rpool auto 2G 2G rootdisk.s0

Palavras-chave do JumpStart de ZFSEm um perfil específico do ZFS são permitidas as seguintes palavras-chave:

auto Especifica automaticamente o tamanho das faixas do pool, do volume de permutaou do volume de despejo. O tamanho do disco é verificado para comprovar que otamanho mínimo pode ser alojado. Se o tamanho mínimo puder ser alojado, omaior tamanho possível do pool é alocado, dadas as limitações, como o tamanhodos discos, as faixas preservadas, etc.

Por exemplo, se você especificar c0t0d0s0, a faixa é criada com o maior tamanhopossível tanto se especificar a palavra-chave all quanto auto. Ou, você podeespecificar um tamanho determinado para a faixa ou para o volume de permuta oudespejo.

A palavra-chave auto funciona de forma semelhante à palavra-chave all quandousada com um pool raiz ZFS porque os pools não têm noção do espaço não usado.

bootenv Esta palavra-chave identifica as características do ambiente de inicialização.

A palavra-chave bootenv já existe, mas são definidas novas opções. Use a seguintesintaxe da palavra-chave bootenv para criar um ambiente de raiz ZFS inicializável:

bootenv installbe bename nome-do-BE [ dataset ponto-de-montagem]

installbe Cria um novo BE identificado pela opção bename

e pela entrada nome-do-BE e o instala.

bename nome-do-BE Identifica o nome-do-BE a ser instalado.

Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart)

Guia de administração do ZFS Solaris • Setembro de 200864

Page 65: Guia de amdiminstracao do zfs solaris

Se bename não for usado com a palavra-chavepool, é criado um BE padrão.

dataset ponto-de-montagem Use a palavra-chave dataset opcional paraidentificar o conjunto de dados /var, que édiferente do conjunto de dados raiz. O valor doponto-de-montagem está atualmente limitado a/var. Por exemplo, a linha de sintaxe de bootenvde um conjunto de dados /var diferente ésemelhante à seguinte:

bootenv installbe bename zfsroot dataset /var

pool Define o novo pool raiz que será criado. Deve ser fornecida a seguinte sintaxe dapalavra-chave:

poolname poolsize swapsize dumpsize vdevlist

poolname Identifica o nome do pode que será criado. O pool é criado com otamanho especificado e com os dispositivos físicos especificados(vdevs). A opção poolname não deve identificar o nome de um poolexistente ou o pool existente será substituído.

poolsize Especifica o tamanho do pool que será criado. O valor pode ser autoou existing. O valor auto aloca o maior tamanho possível do pool,dadas as limitações, como o tamanho dos discos, as faixaspreservadas, etc. O valor existing significa que os limites das faixasexistentes com tal nome são preservados ou substituídos. Otamanho adotado é em Mbytes, a menos que estiver especificadopor g (Gbytes).

swapsize Especifica o tamanho do volume de permuta que será criado. Ovalor pode ser auto, que significa que o tamanho de permuta padrãoserá usado, ou size, para especificar o tamanho. O tamanho adotadoé em Mbytes, a menso que estiver especificado por g (Gbytes).

dumpsize Especifica o tamanho do volume de despejo que será criado. O valorpode ser auto, que significa que o tamanho de permuta padrão seráusado, ou size, para especificar o tamanho. O tamanho adotado é emMbytes, a menso que estiver especificado por g (Gbytes).

vdevlist Especifica um ou mais dispositivos que serão usados para criar opool. O formato de vdevlist é igual ao formato do comando zpool

create. Atualmente, somente as configurações espelhadas sãosuportadas quando vários dispositivos são especificados. Os

Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 65

Page 66: Guia de amdiminstracao do zfs solaris

dispositivos de vdevlist devem ser faixas do pool raiz. A seqüênciaany significa que o software de instalação seleciona um dispositivoadequado.

Você pode espelhar quantos discos quiser, mas o tamanho do poolcriado é determinado pelo menor dos discos especificado. Paraobter mais informações sobre a criação de pools de armazenamentoespelhados, consulte “Configuração de pool de armazenamentoespelhado” na página 92.

Problemas do JumpStart de ZFSLeve em consideração os seguintes problemas antes de iniciar uma instalação JumpStart de umsistema de arquivos raiz ZFS inicializável.

■ Não é possível usar um pool de armazenamento do ZFS existente em uma instalaçãoJumpStart para criar um sistema de arquivos raiz ZFS inicializável. Você deve criar um novopool de armazenamento do ZFS com uma sintaxe semelhante à seguinte:

pool rpool 20G 4G 4G c0t0d0s0

É necessária a linha completa da palavra-chave pool porque não é possível usar um poolexistente. Por exemplo:

install_type initial_install

cluster SUNWCall

pool rpool 20G 4g 4g any

bootenv installbe bename newBE

■ Você deve criar o pool com faixas de disco e não com o disco inteiro, conforme descrito em“Requisitos de instalação do Solaris e do Solaris Live Upgrade para suporte ao ZFS”na página 55. Por exemplo, a sintaxe em negrito não é aceitável:

install_type initial_install

cluster SUNWCall

pool rpool all auto auto mirror c0t0d0 c0t1d0

bootenv installbe bename newBE

Esta sintaxe em negrito é aceitável:

install_type initial_install

cluster SUNWCall

pool rpool all auto auto mirror c0t0d0s0 c0t1d0s0

bootenv installbe bename newBE

Instalando um sistema de arquivos raiz ZFS (Instalação com JumpStart)

Guia de administração do ZFS Solaris • Setembro de 200866

Page 67: Guia de amdiminstracao do zfs solaris

Migrando um sistema de arquivos raiz UFS para um sistemade arquivos raiz ZFS (Solaris Live Upgrade)

Os recursos anteriores do Solaris Live Upgrade estão disponíveis e, se estiverem relacionadosaos componentes UFS, funcionam como nas versões anteriores do Solaris.

Estão disponíveis os novos recursos seguintes:

■ Ao migrar o sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS, você devedesignar um pool de armazenamento do ZFS existente com a opção -p.

■ Se o sistema de arquivos raiz UFS tiver componentes em diferentes faixas, eles são migradospara o pool raiz ZFS.

■ É possível migrar um sistema com regiões, mas as configurações suportadas serão limitadas.Para obter mais informações, consulte “Usando o Solaris Live Upgrade para migrar umsistema com regiões” na página 74.

■ O Solaris Live Upgrade pode usar os recursos de clone e instantâneo do ZFS ao criar um BEdo ZFS no mesmo pool. Conseqüentemente, a criação do BE é muito mais rápida do que nasversões anteriores do Solaris.

Para obter informações detalhadas sobre a instalação do Solaris e os recursos do Solaris LiveUpgrade, consulte Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning.

O processo básico para a migração de um sistema de arquivos raiz UFS para um sistema dearquivos raiz ZFS é o seguinte:

■ Instale o Solaris 10 10/08 ou use o programa de atualização padrão para atualizar umaversão anterior do Solaris 10 em qualquer sistema suportado baseado em SPARC ou em x86.

■ Quando estiver executando o Solaris 10 10/08, crie um pool de armazenamento do ZFS parao sistema de arquivos raiz ZFS, se necessário.

■ Use o Solaris Live Upgrade para migrar o sistema de arquivos raiz UFS para um sistema dearquivos raiz ZFS.

■ Ative o BE do ZFS com o comando luactivate.

Para obter informações sobre requisitos do ZFS e do Solaris Live Upgrade, consulte “Requisitosde instalação do Solaris e do Solaris Live Upgrade para suporte ao ZFS” na página 55.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 67

Page 68: Guia de amdiminstracao do zfs solaris

Problemas de migração do Solaris Live Upgrade doZFSConsulte a lista de problemas a seguir antes de usar o Solaris Live Upgrade para migrar osistema de arquivos raiz UFS para um ZFS:

■ A opção de atualização padrão da GUI de instalação do Solaris não está disponível paramigração de um sistema de arquivos raiz UFS para um ZFS. Para migrar de um sistema dearquivos UFS, você deve usar o Solaris Live Upgrade.

■ Você deve criar o pool de armazenamento do ZFS que será usado para a inicialização antesda operação com o Solaris Live Upgrade. Além disso, devido às limitações atuais dainicialização, o pool raiz ZFS deve ser criado com faixas em vez de discos inteiros. Porexemplo:

# zpool create rpool mirror c1t0d0s0 c1t1d0s0

Antes de criar o novo pool, certifique-se de que os discos a serem usados no pool tenham umrótulo SMI (VTOC) em vez de um rótulo EFI. Se o disco for remarcado com um rótulo SMI,certifique-se de que o processo de rotulação não altera o esquema de particionamento. Namaioria dos casos, a maior parte da capacidade do disco deve estar nas faixas destinadas aopool raiz.

■ Não é possível usar o Solaris Live Upgrade para criar um BE do UFS a partir de um BE doZFS. Se migrar o BE do UFS para um BE do ZFS e reter o BE do UFS, você pode inicializartanto do BE do UFS quanto do BE do ZFS.

■ Não renomeie os BEs do ZFS com o comando zfs rename porque o recurso do Solaris LiveUpgrade ignora a alteração de nome. Os comando subseqüentes, como ludelete, falharão.De fato, não renomeie os pools ou sistemas de arquivos ZFS se tiver BEs que desejacontinuar usando.

■ O Solaris Live Upgrade cria os conjuntos de dados do BE e dos volumes ZFS da área depermuta e do dispositivo de despejo, mas não considera as modificações das propriedadesdo conjunto de dados existente. Assim, se quiser que uma propriedade do conjunto dedados esteja ativada no novo BE, você deve definir a propriedade antes da operação comlucreate. Por exemplo:

# zfs set compression=on rpool/ROOT

■ Ao criar um BE alternativo que é um clone do BE primário, você não pode usar as opções -f,-x, -y, - Y e -z para incluir ou excluir arquivos de tal BE primário. É possível usar as opçõesde inclusão e exclusão definidas nos seguintes casos:

UFS -> UFS

UFS -> ZFS

ZFS -> ZFS (different pool)

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200868

Page 69: Guia de amdiminstracao do zfs solaris

■ Embora seja possível usar o Solaris Live Upgrade para atualizar um sistema de arquivos raizUFS para um ZFS, não é possível usá-lo para atualizar sistemas de arquivos não raiz oucompartilhados.

■ Não é possível usar o comando lu para criar e migrar um sistema de arquivos raiz ZFS.

Usando o Solaris Live Upgrade para migrar para umsistema de arquivos raiz ZFS (sem regiões)Os exemplos seguinte mostram como migrar um sistema de arquivos raiz UFS para ZFS. Se formigrar um sistema com regiões, consulte “Usando o Solaris Live Upgrade para migrar umsistema com regiões” na página 74.

EXEMPLO 4–2 Usando o Solaris Live Upgrade para migrar um sistema de arquivos raiz UFS para um sistemade arquivos raiz ZFS

O exemplo seguinte mostra como criar um BE de um sistema de arquivos raiz ZFS a partir deum sistema de arquivos raiz UFS. O BE atual, ufs1008BE, que contém um sistema de arquivosraiz UFS, é identificado pela opção -c. Se a opção - c não for incluída, o nome do BE atual será,por padrão, o nome do dispositivo. O novo BE, zfs1008BE, é identificado pela opção -n. Umpool de armazenamento ZFS deve existir antes da operação com lucreate.

O pool de armazenamento do ZFS deve ser criado com faixas em vez de com um disco inteiropara que possa ser atualizável e inicializável. Antes de criar o novo pool, certifique-se de que osdiscos a serem usados no pool tenham um rótulo SMI (VTOC) em vez de um rótulo EFI. Se odisco for remarcado com um rótulo SMI, certifique-se de que o processo de rotulação não alterao esquema de particionamento. Na maioria dos casos, a maior parte da capacidade do discodeve estar nas faixas destinadas ao pool raiz.

# zpool create mpool mirror c1t0d0s0 c1t1d0s0

# lucreate -c ufs1008BE -n zfs1008BE -p mpool

Analyzing system configuration.

No name for current boot environment.

Current boot environment is named <ufs1008BE>.

Creating initial configuration for primary boot environment <zfs1008BE>.

The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID.

PBE configuration successful: PBE name <ufs1008BE> PBE Boot Device </dev/dsk/c0t1d0s0>.

Comparing source boot environment <ufs1008BE> file systems with the file

system(s) you specified for the new boot environment. Determining which

file systems should be in the new boot environment.

Updating boot environment description database on all BEs.

Updating system configuration files.

The device </dev/dsk/c0t0d0s0> is not a root device for any boot environment; cannot get BE ID.

Creating configuration for boot environment <zfs1008BE>.

Source boot environment is <ufs1008BE>.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 69

Page 70: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–2 Usando o Solaris Live Upgrade para migrar um sistema de arquivos raiz UFS para um sistemade arquivos raiz ZFS (Continuação)

Creating boot environment <zfs1008BE>.

Creating file systems on boot environment <zfs1008BE>.

Creating <zfs> file system for </> in zone <global> on <mpool/ROOT/zfs1008BE>.

Populating file systems on boot environment <zfs1008BE>.

Checking selection integrity.

Integrity check OK.

Populating contents of mount point </>.

Copying.

Creating shared file system mount points.

Creating compare databases for boot environment <zfs1008BE>.

Creating compare database for file system </mpool/ROOT>.

Creating compare database for file system </>.

Updating compare databases on boot environment <zfs1008BE>.

Making boot environment <zfs1008BE> bootable.

Creating boot_archive for /.alt.tmp.b-zv.mnt

updating /.alt.tmp.b-zv.mnt/platform/sun4u/boot_archive

Population of boot environment <zfs1008BE> successful.

Creation of boot environment <zfs1008BE> successful.

Após a operação com lucreate ter terminado, use o comando lustatus para exibir o status doBE. Por exemplo:

# lustatus

Boot Environment Is Active Active Can Copy

Name Complete Now On Reboot Delete Status

-------------------------- -------- ------ --------- ------ ----------

ufs1008BE yes yes yes no -

zfs1008BE yes no no yes -

Em seguida, consulte a lista de componentes do ZFS. Por exemplo:

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

mpool 5.64G 27.6G 19K /mpool

mpool/ROOT 4.64G 27.6G 18K /mpool/ROOT

mpool/ROOT/zfs1008BE 4.64G 27.6G 4.64G /tmp/.alt.luupdall.1551

mpool/dump 513M 28.1G 16K -

mpool/swap 513M 28.1G 16K -

Depois, use o comandoluactivate para ativar o novo BE do ZFS. Por exemplo:

# luactivate zfs1008BE

A Live Upgrade Sync operation will be performed on startup of boot environment <zfs1008BE>.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200870

Page 71: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–2 Usando o Solaris Live Upgrade para migrar um sistema de arquivos raiz UFS para um sistemade arquivos raiz ZFS (Continuação)

**********************************************************************

The target boot environment has been activated. It will be used when you

reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You

MUST USE either the init or the shutdown command when you reboot. If you

do not use either init or shutdown, the system will not boot using the

target BE.

**********************************************************************

In case of a failure while booting to the target BE, the following process

needs to be followed to fallback to the currently working boot environment:

1. Enter the PROM monitor (ok prompt).

2. Change the boot device back to the original boot environment by typing:

setenv boot-device /pci@1f,0/pci@1/scsi@8/disk@0,0:a

3. Boot to the original boot environment by typing:

boot

**********************************************************************

Modifying boot archive service

Activation of boot environment <zfs1008BE> successful.

Depois, reinicialize o sistema para o BE do ZFS.

# init 6

# svc.startd: The system is coming down. Please wait.

svc.startd: 79 system services are now being stopped.

.

.

.

Comprove que o BE do ZFS está ativo.

# lustatus

Boot Environment Is Active Active Can Copy

Name Complete Now On Reboot Delete Status

-------------------------- -------- ------ --------- ------ ----------

ufs1008BE yes no no yes -

zfs1008BE yes yes yes no -

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 71

Page 72: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–2 Usando o Solaris Live Upgrade para migrar um sistema de arquivos raiz UFS para um sistemade arquivos raiz ZFS (Continuação)

Se voltar ao BE do UFS, você terá que reimportar os pools de armazenamento do ZFS que foramcriados enquanto o BE do ZFS estava sendo inicializado porque tais pools não estãoautomaticamente disponíveis no BE do UFS. Ao voltar ao BE do UFS serão exibidas mensagenssemelhantes às seguintes.

# luactivate ufs1008BE

WARNING: The following files have changed on both the current boot

environment <zfs1008BE> zone <global> and the boot environment to be

activated <ufs1008BE>:

/etc/zfs/zpool.cache

INFORMATION: The files listed above are in conflict between the current

boot environment <zfs1008BE> zone <global> and the boot environment to be

activated <ufs1008BE>. These files will not be automatically synchronized

from the current boot environment <zfs1008BE> when boot environment

<ufs1008BE> is activated.

Se o BE do UFS já não for mais necessário, você pode removê-lo com o comando ludelete.

EXEMPLO 4–3 Usando o Solaris Live Upgrade para criar um BE do ZFS a partir de um BE do ZFS

A criação de um BE do ZFS a partir de um BE do ZFS no mesmo pool é muito rápida porqueesta operação usa os recursos de instantâneos e clones do ZFS. Se o BE estiver no mesmo pooldo ZFS mpool, por exemplo, a opção -p é omitida.

Se tiver vários BEs do ZFS em um sistema baseado em SPARC, você pode usar o comando boot

-L para identificar os BEs disponíveis e selecionar um BE a partir do qual inicializar usando ocomando boot -Z. Em um sistema baseado em x86, você pode selecionar um BE no menuGRUB. Para obter mais informações, consulte o Exemplo 4–6.

# lucreate -n zfs10082BE

Analyzing system configuration.

Comparing source boot environment <zfs1008BE> file systems with the file

system(s) you specified for the new boot environment. Determining which

file systems should be in the new boot environment.

Updating boot environment description database on all BEs.

Updating system configuration files.

Creating configuration for boot environment <zfs10082BE>.

Source boot environment is <zfs1008BE>.

Creating boot environment <zfs10082BE>.

Cloning file systems from boot environment <zfs1008BE> to create boot environment <zfs10082BE>.

Creating snapshot for <mpool/ROOT/zfs1008BE> on <mpool/ROOT/zfs1008BE6@zfs10082BE>.

Creating clone for <mpool/ROOT/zfs1008BE@zfs10082BE> on <mpool/ROOT/zfs10082BE>.

Setting canmount=noauto for </> in zone <global> on <mpool/ROOT/zfs10082BE>.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200872

Page 73: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–3 Usando o Solaris Live Upgrade para criar um BE do ZFS a partir de um BE do ZFS(Continuação)

Population of boot environment <zfs10082BE> successful.

Creation of boot environment <zfs10082BE> successful.

EXEMPLO 4–4 Atualizando o BE do ZFS (luupgrade)

Você pode atualizar o BE do ZFS com patches ou pacotes adicionais.

O processo básico é:

■ Crie um BE alternativo com o comando lucreate.■ Ative e inicialize a partir do BE alternativo.■ Atualize o BE primário do ZFS com o comando luupgrade para adicionar pacotes ou

patches.

# lustatus

Boot Environment Is Active Active Can Copy

Name Complete Now On Reboot Delete Status

-------------------------- -------- ------ --------- ------ ----------

zfs1008BE yes no no yes -

zfs10082BE yes yes yes no -

# luupgrade -p -n zfs1008BE -s /net/system/export/s1008/Solaris_10/Product SUNWchxge

Validating the contents of the media </net/system/export/s1008//Solaris_10/Product>.

Mounting the BE <zfs1008BE>.

Adding packages to the BE <zfs1008BE>.

Processing package instance <SUNWchxge> from </net/system/export/s1008/Solaris_10/Product>

Chelsio N110 10GE NIC Driver(sparc) 11.10.0,REV=2006.02.15.20.41

Copyright 2008 Sun Microsystems, Inc. All rights reserved.

Use is subject to license terms.

Using </a> as the package base directory.

## Processing package information.

## Processing system information.

3 package pathnames are already properly installed.

## Verifying package dependencies.

## Verifying disk space requirements.

## Checking for conflicts with packages already installed.

## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user

permission during the process of installing this package.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 73

Page 74: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–4 Atualizando o BE do ZFS (luupgrade) (Continuação)

Do you want to continue with the installation of <SUNWchxge> [y,n,?] y

Installing Chelsio N110 10GE NIC Driver as <SUNWchxge>

## Installing part 1 of 1.

394 blocks

## Executing postinstall script.

Reboot client to install driver.

Installation of <SUNWchxge> was successful.

Unmounting the BE <zfs1008BE>.

The package add to the BE <zfs1008BE> completed.

Usando o Solaris Live Upgrade para migrar umsistema com regiõesÉ possível usar o Solaris Live Upgrade para migrar um sistema com regiões, mas asconfigurações suportadas serão limitadas.

Esta seção descreve como configurar e instalar um sistema com regiões para que possa seratualizado e receber patches com o Solaris Live Upgrade. Se for migrar para um sistema dearquivos raiz ZFS sem regiões, consulte “Usando o Solaris Live Upgrade para migrar para umsistema de arquivos raiz ZFS (sem regiões)” na página 69.

Se for migrar um sistema com regiões ou estiver considerando a possibilidade de configurar umsistema com regiões, consulte os seguintes procedimentos:

■ “Como migrar um sistema de arquivos UFS com raízes de regiões em UFS para um sistemade arquivos ZFS” na página 75

■ “Como configurar um sistema de arquivos raiz ZFS com raízes de região em ZFS”na página 76

■ “Como atualizar ou aplicar patches em um sistema de arquivos raiz ZFS com raízes de regiãoem ZFS” na página 78

■ “Solucionando problemas do ponto de montagem do ZFS que impendem uma inicializaçãobem-sucedida” na página 86

Siga os procedimentos recomendados para configurar regiões em um sistema com sistemas dearquivos raiz ZFS para garantir que o Live Upgrade possa ser usado em tal sistema.

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200874

Page 75: Guia de amdiminstracao do zfs solaris

▼ Como migrar um sistema de arquivos UFS com raízes de regiões em UFSpara um sistema de arquivos ZFSSiga as etapas a seguir para migrar um sistema de arquivos raiz UFS com regiões instaladas paraum sistema de arquivos raiz ZFS e para a configuração da raiz de região ZFS que pode seratualizada ou receber patches.

Nas etapas seguintes, o nome do pool de exemplo é rpool e o nome de exemplo do ambiente deinicialização atualmente ativo é S10BE*.

Atualize os sistema para o Solaris 10 10/08 se estiver executando uma versão anterior do Solaris10.Para obter mais informações sobre atualizações de um sistema que executa o Solaris 10,consulta Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning.

Crie o pool raiz.Para obter informações sobre os requisitos do pool raiz, consulte “Requisitos de instalação doSolaris e do Solaris Live Upgrade para suporte ao ZFS” na página 55.

Comprove que as regiões do ambiente do UFS estejam inicializadas.

Crie o novo ambiente de inicialização.# lucreate -n S10BE2 -p rpool

Este comando estabelece os conjuntos de dados no pool raiz do novo ambiente de inicializaçãoe copia o ambiente de inicialização atual (incluindo as regiões) em tais conjuntos de dados.

Ative o novo ambiente de inicialização.# luactivate s10BE2

Agora o sistema esta executando um sistema de arquivos raiz ZFS, mas as raízes de região doUFS ainda estão no sistema de arquivos raiz UFS. É necessário completar as próximas etapaspara migrar totalmente as regiões UFS para uma configuração ZFS suportada.

Reinicialize o sistema.# init 6

Migre as regiões para um BE do ZFS.

a. Inicialize as regiões.

b. Crie outro BE dentro do pool.# lucreate S10BE3

1

2

3

4

5

6

7

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 75

Page 76: Guia de amdiminstracao do zfs solaris

c. Ative o novo ambiente de inicialização.# luactivate S10BE3

d. Reinicialize o sistema.# init 6

Esta etapa verifica se o BE do ZFS e as regiões estão inicializados.

Nesta versão do Solaris, solucione quaisquer possíveis problemas do ponto de montagem.Devido a um erro no recurso Live Upgrade, o ambiente de inicialização que não estiver ativopode falhar ao ser inicializado porque o conjunto de dados ZFS ou o conjunto de dados ZFS daregião no ambiente de inicialização possuem um ponto de montagem inválido.

a. Consulte a saída do zfs list.Procure os pontos de montagem temporários incorretos. Por exemplo:# zfs list -r -o name,mountpoint rpool/ROOT/s10u6

NAME MOUNTPOINT

rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/

rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones

rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA

O ponto de montagem do BE do ZFS raiz (rpool/ROOT/s10u6) deve ser /.

b. Redefina os pontos de montagem do BE do ZFS e seus conjuntos de dados.Por exemplo:# zfs inherit -r mountpoint rpool/ROOT/s10u6

# zfs set mountpoint=/ rpool/ROOT/s10u6

c. Reinicialize o sistema.Quando a opção for apresentada para inicializar um ambiente de inicialização específico,tanto no menu GRUB quanto no prompt da OpenBoot Prom, selecione o ambiente deinicialização cujos pontos de montagem acabam de ser corrigidos.

▼ Como configurar um sistema de arquivos raiz ZFS com raízes de regiãoem ZFSSiga as etapas a seguir para configurar um sistema de arquivos raiz ZFS e a configuração da raizde região ZFS que pode ser atualizada ou receber patches. Nesta configuração, as raízes deregião ZFS são criadas como conjuntos de dados ZFS.

Nas etapas seguintes, o nome do pool de exemplo é rpool e o nome de exemplo do ambiente deinicialização atualmente ativo é S10be.

8

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200876

Page 77: Guia de amdiminstracao do zfs solaris

Instale o sistema com uma raiz ZFS, usando o método da instalação inicial interativa ou ométodo de instalação JumpStart do Solaris.Para obter mais informações sobre a instalação de um sistema de arquivos raiz ZFS usando ométodo da instalação inicial ou o método JumpStart do Solaris, consulte “Instalando umsistema de arquivos raiz ZFS (Instalação inicial)” na página 57 ou “Instalando um sistema dearquivos raiz ZFS (Instalação com JumpStart)” na página 63.

Inicialize o sistema a partir do pool raiz recém-criado.

Crie um conjunto de dados para agrupar as raízes da região.Por exemplo:# zfs create -o canmount=noauto rpool/ROOT/S10be/zones

O nome do conjunto de dados das regiões pode ser qualquer nome de conjunto de dadospermitido. Nas etapas a seguir, o nome do conjunto de dados de exemplo é zones.

A definição da propriedade canmount com o valor noauto permite que o conjunto de dados sejamontado somente pela ação explícita do Solaris Live Upgrade e do código de inicialização dosistema.

Monte o conjunto de dados recém-criado do contêiner das regiões.# zfs mount rpool/ROOT/S10be/zones

O conjunto de dados é montado em /zones.

Crie e monte um conjunto de dados para cada raiz de região.# zfs create -o canmount=noauto rpool/ROOT/S10be/zones/zonerootA

# zfs mount rpool/ROOT/S10be/zones/zonerootA

Defina as permissões apropriadas no diretório raiz da região.# chmod 700 /zones/zonerootA

Configure a região, definindo o caminho da região da seguinte forma:# zonecfg -z zoneA

zoneA: No such zone configured

Use ’create’ to begin configuring a new zone.

zonecfg:zoneA> create

zonecfg:zoneA> set zonepath=/zones/zonerootA

Você pode ativar as regiões para que se inicializem automaticamente quando o sistema forinicializado usando a seguinte sintaxe:

zonecfg:zoneA> set autoboot=true

1

2

3

4

5

6

7

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 77

Page 78: Guia de amdiminstracao do zfs solaris

Instale a região.# zoneadm -z zoneA install

Inicialize a região.# zoneadm -z zoneA boot

▼ Como atualizar ou aplicar patches em um sistema de arquivos raiz ZFScom raízes de região em ZFSUse as etapas seguinte quando precisar atualizar ou aplicar patches em um sistema de arquivosraiz ZFS com raízes de região em ZFS. Estas atualizações podem ser tanto uma melhora dosistema quanto uma aplicação de patches.

Nas etapas a seguir, newBE é o nome de exemplo do ambiente de inicialização no qual se realiza aatualização ou se aplicam os patches.

Crie um ambiente de inicialização para ser atualizado ou aplicar patches.# lucreate -n newBE

O ambiente de inicialização existente, incluindo todas as regiões, são clonados. São criadosnovos conjuntos de dados para cada conjunto de dados do ambiente de inicialização original.Os novos conjuntos de dados são criados no mesmo pool do pool raiz atual.

Selecione um dos procedimentos a seguir para atualizar o sistema ou aplicar patches ao novoambiente de inicialização.

■ Atualize o sistema.

# luupgrade -u -n newBE -s /net/install/export/s10u7/latest

No qual a opção -s é o local de um meio de instalação do Solaris.■ Aplique patches a um novo ambiente de inicialização.

# luupgrade -t -n newBE -t -s /patchdir 139147-02 157347-14

Ative o novo ambiente de inicialização depois que as atualizações deste sejam concluídas.# luactivate newBE

Inicialize a partir do ambiente de inicialização recém-ativado.# init 6

8

9

1

2

3

4

Migrando um sistema de arquivos raiz UFS para um sistema de arquivos raiz ZFS (Solaris Live Upgrade)

Guia de administração do ZFS Solaris • Setembro de 200878

Page 79: Guia de amdiminstracao do zfs solaris

Nesta versão do Solaris, solucione quaisquer possíveis problemas do ponto de montagem.Devido a um erro no recurso Live Upgrade, o ambiente de inicialização que não estiver ativopode falhar ao ser inicializado porque o conjunto de dados ZFS ou o conjunto de dados ZFS daregião no ambiente de inicialização possuem um ponto de montagem inválido.

a. Consulte a saída do zfs list.Procure os pontos de montagem temporários incorretos. Por exemplo:# zfs list -r -o name,mountpoint rpool/ROOT/newBE

NAME MOUNTPOINT

rpool/ROOT/newBE /.alt.tmp.b-VP.mnt/

rpool/ROOT/newBE/zones /.alt.tmp.b-VP.mnt//zones

rpool/ROOT/newBE/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA

O ponto de montagem do BE do ZFS raiz (rpool/ROOT/newBE) deve ser /.

b. Redefina os pontos de montagem do BE do ZFS e seus conjuntos de dados.Por exemplo:# zfs inherit -r mountpoint rpool/ROOT/newBE

# zfs set mountpoint=/ rpool/ROOT/newBE

c. Reinicialize o sistema.Quando a opção for apresentada para inicializar um ambiente de inicialização específico,tanto no menu GRUB quanto no prompt da OpenBoot Prom, selecione o ambiente deinicialização cujos pontos de montagem acabam de ser corrigidos.

Suporte do ZFS para dispositivos de permuta e despejoDurante a instalação inicial ou do Solaris Live Upgrade de um sistema de arquivos UFS, é criadauma área de permuta em um volume ZFS no pool raiz ZFS. O tamanho da área de permuta temcomo base a metade da memória física, porém não mais de 2 Gbytes e nem menos de 512Mbytes. Por exemplo:

# swap -l

swapfile dev swaplo blocks free

/dev/zvol/dsk/mpool/swap 253,3 16 8257520 8257520

Durante a instalação inicial ou do Solaris Live Upgrade de um sistema de arquivos UFS, é criadoum dispositivo de despejo em um volume ZFS no pool raiz ZFS. O tamanho do dispositivo dedespejo tem como base a metade da memória física, porém não mais de 2 Gbytes e nem menosde 512 Mbytes. O dispositivo de despejo não requer administração depois de configurado. Porexemplo:

5

Suporte do ZFS para dispositivos de permuta e despejo

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 79

Page 80: Guia de amdiminstracao do zfs solaris

# dumpadm

Dump content: kernel pages

Dump device: /dev/zvol/dsk/mpool/dump (dedicated)

Savecore directory: /var/crash/t2000

Savecore enabled: yes

Leve em consideração os seguintes problemas ao trabalhar com dispositivos de permuta edespejo do ZFS:

■ Devem ser usados volumes ZFS diferentes para área de permuta e os dispositivos de despejo.■ Atualmente, o uso de um arquivo de permuta em um sistema de arquivos ZFS não é

suportado.■ Devido ao CR 6724860, você deve executar savecore manualmente para salvar um despejo

de travamento ao usar um volume ZFS de despejo.■ Se precisar alterar a área de permuta ou o dispositivo de despejo após a instalação ou

atualização do sistema, use os comandos swap e dumpadm como nas versões anteriores doSolaris. Para obter mais informações, consulte o Capítulo 20, “Configuring Additional SwapSpace (Tasks),” no System Administration Guide: Devices and File Systems e o Capítulo 17,“Managing System Crash Information (Tasks),” no System Administration Guide: AdvancedAdministration.

Ajustando os tamanhos dos dispositivos de permuta edespejo do ZFSDevido às diferenças em como a instalação da raiz ZFS dimensiona os dispositivos de permuta edespejo, você pode precisar ajustar o tamanho destes dispositivos antes, durante ou depois dainstalação.

■ Você pode ajustar o tamanho dos volumes de permuta e despejo durante uma instalaçãoinicial. Para obter mais informações, consulte o Exemplo 4–1.

■ Você pode criar e dimensionar os volumes de permuta e despejo antes de realizar a operaçãocom o Solaris Live Upgrade. Por exemplo:1. Crie o pool de armazenamento.

# zpool create rpool mirror c0t0d0s0 c0t1d0s0

2. Dimensione o dispositivo de despejo. Defina o tamanho do bloco em 128 Kbytes.

# zfs create -V 2G -b 128k rpool/dump

3. Selecione um dos procedimentos seguintes para criar uma área de permuta:■ Em um sistema baseado em SPARC, dimensione a área de permuta. Defina o

tamanho do bloco em 8 Kbytes.

Suporte do ZFS para dispositivos de permuta e despejo

Guia de administração do ZFS Solaris • Setembro de 200880

Page 81: Guia de amdiminstracao do zfs solaris

# zfs create -V 2G -b 8k rpool/swap

■ Em um sistema baseado em x86, dimensione a área de permuta. Defina o tamanhodo bloco em 4 Kbytes.

# zfs create -V 2G -b 4k rpool/swap

O Solaris Live Upgrade não redimensiona os volumes de permuta e despejo existentes.■ Você pode redefinir a propriedade volsize dos dispositivos de permuta e despejo após a

instalação de um sistema. Por exemplo:

# zfs set volsize=2G rpool/dump

# zfs get volsize rpool/dump

NAME PROPERTY VALUE SOURCE

rpool/dump volsize 2G -

■ Você pode ajustar o tamanho dos volumes de permuta e despejo em um perfil do JumpStartusando a sintaxe de perfil semelhante à seguinte:

install_type initial_install

cluster SUNWCXall

pool rpool 16g 2g 2g c0t0d0s0

Neste perfil, as entradas 2g e 2g definem o tamanho da área de permuta e do dispositivo dedespejo como 2 Gbytes e 2 Gbytes, respectivamente.

Inicializando a partir de um sistema de arquivos raiz ZFSOs sistemas baseados em SPARC e em x86 usam o novo estilo de inicialização com um arquivode inicialização, que é a imagem de um sistema de arquivos que contém os arquivos necessáriospara a inicialização. Ao inicializar de um sistema de arquivos raiz ZFS , os nomes de caminho doarquivo de armazenamento e do arquivo de kernel são resolvidos no sistema de arquivos raizselecionado para a inicialização.

Quando o sistema é inicializado para a instalação, é usado um disco RAM para o sistema dearquivos raiz durante todo o processo de instalação, o que elimina a necessidade da inicializaçãoa partir de uma mídia removível.

Se fizer uma instalação inicial do Solaris 10 10/08 ou usar o Solaris Live Upgrade para migrarpara um sistema de arquivos raiz ZFS nesta versão, você pode inicializar de um sistema dearquivos raiz ZFS em um sistema baseado em SPARC ou em x86.

A inicialização de um sistema de arquivos ZFS é diferente da inicialização de um sistema dearquivos UFS porque com o ZFS um especificador de dispositivos identifica um pool dearmazenamento e não um único sistema de arquivos raiz. Um pool de armazenamento pode

Inicializando a partir de um sistema de arquivos raiz ZFS

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 81

Page 82: Guia de amdiminstracao do zfs solaris

conter vários conjuntos de dados inicializáveis ou sistemas de arquivos raiz ZFS. Ao inicializardo ZFS, você deve especificar um dispositivo de inicialização e um sistema de arquivos raizdentro do pool identificado pelo dispositivo de inicialização.

Por padrão, o conjunto de dados selecionado para inicialização é aquele identificado pelapropriedade bootfs do pool. Esta seleção padrão pode ser substituída ao especificar umconjunto de dados inicializável alternativo que esteja incluído no comando boot -Z.

Inicializando de um disco alternativo em um pool raizZFS espelhadoVocê pode criar um pool raiz ZFS espelhado quando o sistema for instalado ou anexar um discopara criar um pool raiz ZFS espelhado após a instalação. Consulte os problemas conhecidos emrelação aos pools raiz ZFS espelhados:

■ CR 6704717 – Não coloque o disco primário off-line em uma configuração de raiz ZFSespelhada. Se precisar colocar off-line ou desanexar um disco raiz espelhado parasubstituição, então inicialize a partir de outro disco espelhado do pool.

■ CR 6668666 – Você deve instalar as informações de inicialização nos discos anexadosusando os comandos installboot ou installgrub se desejar ativar a inicialização emoutros discos no espelho. Se criar um pool raiz ZFS espelhado com o método de instalaçãoinicial, esta etapa não necessária. Por exemplo, se c0t1d0s0 foi o segundo disco adicionadoao espelho, então os comandos installboot ou installgrub devem ser:

sparc# installboot -F zfs /usr/platform/‘uname -i‘/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0

x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0

Você pode inicializar de outros dispositivos em um pool raiz espelhado. Dependendo daconfiguração de hardware, pode ser necessário atualizar o PROM ou o BIOS para especificaroutro dispositivo de inicialização.

Por exemplo, neste pool você pode inicializar a partir de ambos os discos (c1t0d0s0 ouc1t1d0s0).

# zpool status

pool: rpool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

rpool ONLINE 0 0 0

mirror ONLINE 0 0 0

Inicializando a partir de um sistema de arquivos raiz ZFS

Guia de administração do ZFS Solaris • Setembro de 200882

Page 83: Guia de amdiminstracao do zfs solaris

c1t0d0s0 ONLINE 0 0 0

c1t1d0s0 ONLINE 0 0 0

Em um sistema baseado em SPARC, insira o disco alternativo no prompt ok.

ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1

Após reinicializar o sistema, comprove o dispositivo de inicialização ativo. Por exemplo:

# prtconf -vp | grep bootpath

bootpath: ’/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1,0:a’

Em um sistema baseado em x86, selecione um disco alternativo no pool raiz ZFS espelhado nomenu apropriado da BIOS.

Inicializando a partir de um sistema de arquivos raizZFS em um sistema baseado em SPARCEm um sistema baseado em SPARC com vários BEs do ZFS, você pode inicializar a partir dequalquer BE usando o comando luactivate. Depois de ativar o BE, você pode usar o comandode inicialização -L para exibir uma lista de BEs quando o dispositivo de inicialização contiverum pool de armazenamento do ZFS.

Durante o processo de instalação e do Solaris Live Upgrade, o sistema de arquivos raiz ZFS édesignado automaticamente como a propriedade bootfs.

Pode haver vários conjuntos de dados inicializáveis dentro de um pool. Por padrão, a entrada doconjunto de dados inicializável no arquivo /nome-do-pool/boot/menu.lst é identificada pelapropriedade bootfs do pool. No entanto, a entrada de menu.lstpode conter o comandobootfs, que especifica um conjunto de dados alternativo no pool. Desta forma, o arquivomenu.lst pode conter entradas para vários sistemas de arquivos dentro do pool.

Quando um sistema de arquivos é instalado com o sistema de arquivos raiz ZFS ou é migradopara um sistema de arquivos raiz ZFS, uma entrada semelhante à seguinte é adicionada aoarquivo menu.lst:

title zfs1008BE

bootfs mpool/ROOT/zfs1008BE

Quando um novo BE é criado, o arquivo menu.lst é atualizado. Até que o CR 6696226 sejacorrigido, você deve atualizar o arquivo menu.lst manualmente depois de ativar o BE com ocomando luactivate.

Em um sistema baseado em SPARC, há duas novas opções disponíveis:

Inicializando a partir de um sistema de arquivos raiz ZFS

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 83

Page 84: Guia de amdiminstracao do zfs solaris

■ Você pode usar o comando de inicialização -L para exibir uma lista dos conjuntos de dadosinicializáveis de um pool do ZFS. Em seguida, pode selecionar um dos conjuntos de dadosinicializáveis da lista. São exibidas as instruções para a inicialização de tal conjunto de dados.É possível inicializar o conjunto de dados selecionado seguindo tais instruções. Esta opçãoestá disponível somente quando o dispositivo de inicialização contiver um pool dearmazenamento do ZFS.

■ Use o comando de inicialização -Z conjunto-de-dados para inicializar um conjunto de dadosepecífico do ZFS.

EXEMPLO 4–5 Inicializando a partir de um ambiente de inicialização específico do ZFS

Se tiver vários BEs do ZFS em um pool de armazenamento do ZFS no dispositivo deinicialização do sistema, você pode usar o comando luactivate para especificar um BE padrão.

Por exemplo, os seguintes BEs do ZFS estão disponíveis conforme descrito pela saída delustatus:

# lustatus

Boot Environment Is Active Active Can Copy

Name Complete Now On Reboot Delete Status

-------------------------- -------- ------ --------- ------ ----------

zfs1008BE yes yes yes no -

zfs10082BE yes no no yes -

Se tiver vários BEs do ZFS no sistema baseado em SPARC, você pode usar o comando boot -L.Por exemplo:

ok boot -L

Executing last command: boot -L

Boot device: /pci@1f,0/pci@1/scsi@8/disk@1,0:a File and args: -L

1 zfs1008BE

2 zfs10082BE

Select environment to boot: [ 1 - 2 ]: 2

To boot the selected entry, invoke:

boot [<root-device>] -Z mpool/ROOT/zfs10082BE

Program terminated

ok boot -Z mpool/ROOT/zfs10082BE

EXEMPLO 4–6 SPARC: inicializando um sistema de arquivos no modo à prova de falhas

Em um sistema baseado em SPARC, você pode inicializar a partir do arquivo à prova de falhaslocalizado em /platform/`uname -i`/failsafe da seguinte forma. Por exemplo:

Inicializando a partir de um sistema de arquivos raiz ZFS

Guia de administração do ZFS Solaris • Setembro de 200884

Page 85: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–6 SPARC: inicializando um sistema de arquivos no modo à prova de falhas (Continuação)

ok boot -F failsafe

Se quiser inicializar um arquivo à prova de falha a partir de um determinado conjunto de dadosZFS, use uma sintaxe semelhante à seguinte:

ok boot -Z mpool/ROOT/zfs1008BE -F failsafe

Inicializando a partir de um sistema de arquivos raizZFS em um sistema baseado em x86As entradas seguintes são adicionadas ao arquivo /nome-do-pool /boot/grub/menu.lstdurante o processo de instalação ou durante a operação do Solaris Live Upgrade para inicializarautomaticamente o ZFS:

findroot (pool_mpool,0,a)

bootfs mpool/ROOT/zfs1008BE

kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS

module /platform/i86pc/boot_archive

Se o dispositivo identificado pelo GRUB como o dispositivo de inicialização contiver um poolde armazenamento do ZFS, o arquivo menu.lst é usado para criar o menu GRUB.

Em um sistema baseado em x86 com vários BEs do ZFS, você pode selecionar um BE no menuGRUB. Se o sistema de arquivos raiz correspondente a esta entrada do menu for um conjuntode dados ZFS, a opção seguinte é adicionada.

-B $ZFS-BOOTFS

EXEMPLO 4–7 x86: inicializando um sistema de arquivos ZFS

Ao inicializar de um sistema de arquivos ZFS, o dispositivo raiz é especificado pelo parâmetrode inicialização -B $ZFS-BOOTFS nas linhas kernel ou module na entrada do menu GRUB. Estevalor, semelhante a todos os parâmetros especificados pela opção -B, é passado ao kernel peloGRUB. Por exemplo:

findroot (pool_mpool,0,a)

bootfs mpool/ROOT/zfs1008BE

kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS

module /platform/i86pc/boot_archive

Inicializando a partir de um sistema de arquivos raiz ZFS

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 85

Page 86: Guia de amdiminstracao do zfs solaris

EXEMPLO 4–8 x86: inicializando um sistema de arquivos no modo à prova de falhas

O arquivo à prova de falhas do x86 é /boot/x86.miniroot-safe e pode ser inicializado pelaseleção da entrada à prova de falhas do Solaris no menu GRUB. Por exemplo:

title Solaris failsafe

bootfs mpool/ROOT/zfs1008BE

findroot (pool_mpool,0,a)

kernel /boot/multiboot kernel/unix -s -B console=ttyb

module /boot/x86.miniroot-safe

Solucionando problemas do ponto de montagem doZFS que impendem uma inicialização bem-sucedidaA melhor forma de alterar o ambiente de inicialização ativo é usando o comando luactivate.Se a inicialização do ambiente ativo falhar devido a um patch incorreto ou a um erro deconfiguração, a única forma de inicializar a partir de outro ambiente é selecionando talambiente no momento da inicialização. Você pode selecionar um BE alternativo no menuGRUB em um sistema baseado em x86 ou inicializá-lo explicitamente a partir da PROM em umsistema baseado em SPARC.

Devido a um erro no recurso Live Upgrade, o ambiente de inicialização que não estiver ativopode falhar ao ser inicializado porque os conjuntos de dados ZFS ou o conjunto de dados ZFSda região no ambiente de inicialização possuem um ponto de montagem inválido.

O mesmo erro também impede que o BE seja montado se tiver um conjunto de dados /vardiferente.

Os pontos de montagem podem ser corrigidos realizando as seguintes etapas:

▼ Como solucionar os problemas do ponto de montagem do ZFS

Inicialize o sistema a partir de um arquivo à prova de falhas.

Importe o pool.Por exemplo:# zpool import rpool

Consulte a saída de zfs list depois que o pool for importado.Procure os pontos de montagem temporários incorretos. Por exemplo:# zfs list -r -o name,mountpoint rpool/ROOT/s10u6

1

2

3

Inicializando a partir de um sistema de arquivos raiz ZFS

Guia de administração do ZFS Solaris • Setembro de 200886

Page 87: Guia de amdiminstracao do zfs solaris

NAME MOUNTPOINT

rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/

rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones

rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA

O ponto de montagem do BE raiz (rpool/ROOT/s10u6) deve ser /.

Se a inicialização estiver falhando devido a problemas com o ponto de montagem /var, procureum ponto de montagem temporário similar do conjunto de dados /var.

Redefina os pontos de montagem do BE do ZFS e seus conjuntos de dados.Por exemplo:# zfs inherit -r mountpoint rpool/ROOT/s10u6

# zfs set mountpoint=/ rpool/ROOT/s10u6

Reinicialize o sistema.Quando a opção for apresentada para inicializar um ambiente de inicialização específico, tantono menu GRUB quanto no prompt da OpenBoot Prom, selecione o ambiente de inicializaçãocujos pontos de montagem acabam de ser corrigidos.

4

5

Inicializando a partir de um sistema de arquivos raiz ZFS

Capítulo 4 • Instalando e inicializando um sistema de arquivos raiz ZFS 87

Page 88: Guia de amdiminstracao do zfs solaris

88

Page 89: Guia de amdiminstracao do zfs solaris

Gerenciando pools de armazenamento do ZFS

Este capítulo descreve como criar e administrar pools de armazenamento do ZFS.

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

■ “Componentes de um pool de armazenamento do ZFS” na página 89■ “Criando e destruindo pools de armazenamento do ZFS” na página 94■ “Gerenciando dispositivos em pools de armazenamento do ZFS” na página 103■ “Gerenciando propriedades do pool de armazenamento do ZFS” na página 118■ “Consultando status de pool de armazenamento do ZFS” na página 121■ “Migrando pools de armazenamento do ZFS” na página 128■ “Atualizando pools de armazenamento do ZFS” na página 135

Componentes de um pool de armazenamento do ZFSAs seções seguintes fornecem informações detalhadas sobre os componentes de pool dearmazenamento:

■ “Usando discos em um pool de armazenamento do ZFS” na página 89■ “Usando faixas em um pool de armazenamento do ZFS” na página 91■ “Usando arquivos em um pool de armazenamento do ZFS” na página 91

Usando discos em um pool de armazenamento do ZFSO mais básico elemento de um pool de armazenamento é um armazenamento físico. Oarmazenamento físico pode ser qualquer dispositivo de bloco com um tamanho de pelo menos128 Mbytes. Geralmente, este dispositivo é um disco rígido que é visível para o sistema nodiretório /dev/dsk .

Um dispositivo de armazenamento que pode ser um disco inteiro (c1t0d0) ou uma faixaindividual (c0t0d0s7). O modo recomendado de operação é usar um disco inteiro. Neste caso,

5C A P Í T U L O 5

89

Page 90: Guia de amdiminstracao do zfs solaris

não é necessário que o disco seja especialmente formatado. O ZFS formata o disco usando umrótulo EFI para conter uma única faixa grande. Quando usado desta forma, a tabela de partiçãoque é exibida pelo comando format aparece semelhante à seguinte:

Current partition table (original):

Total disk sectors available: 71670953 + 16384 (reserved sectors)

Part Tag Flag First Sector Size Last Sector

0 usr wm 34 34.18GB 71670953

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

7 unassigned wm 0 0 0

8 reserved wm 71670954 8.00MB 71687337

Para usar discos inteiros, estes devem ser nomeados usando a convenção padrão do Solaris,como /dev/dsk/cXtXdXsX. Alguns drivers de terceiros usam uma convenção de nomeaçãodiferente ou colocam o disco em um local diferente do diretório /dev/dsk. Para usar estesdiscos, é necessário rotular manualmente o disco e fornecer uma faixa para o ZFS.

O ZFS aplica um rótulo EFI quando você cria um pool de armazenamento com discos inteiros.

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

■ c0t0d6s2

■ /dev/foo/disk

O uso de discos inteiros é a forma mais simples de criar pools de armazenamento do ZFS. Asconfigurações do ZFS se tornam progressivamente mais complexas, dos pontos de vista degerenciamento, confiabilidade e desempenho, quando você constrói pools a partir de faixas dedisco, LUNs em matrizes de hardware RAID ou em volumes apresentados pelos gerenciadoresde volume baseados em software. As considerações abaixo podem ajudar você a determinarcomo 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 hardwareRAID, é necessário entender a relação entre os recursos de redundância do ZFS e os recursosde redundância oferecidos pela matriz. Determinadas configurações podem oferecerredundância e desempenho adequados, mas outras configurações não.

Componentes de um pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 200890

Page 91: Guia de amdiminstracao do zfs solaris

■ Você pode construir dispositivos lógicos para o ZFS usando volumes apresentados pelosgerenciadores de volume baseados em software, como SolarisTM Volume Manager (SVM) ouVeritas 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 umdesempenho 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. Este métodopermite que os dispositivos sejam reconfigurados em um sistema sem ser preciso atualizarqualquer estado do ZFS. Se um disco for alternado entre o controlador 1 e o controlador 2, oZFS usará o ID do dispositivo para detectar que o disco foi movido e deve ser acessado usando ocontrolador 2. O ID do dispositivo é exclusivo do firmware da unidade. Embora sejaimprovável, sabe-se que algumas atualizações de firmware alteram IDs de dispositivo. Se issoocorrer, o ZFS ainda assim pode acessar o dispositivo por caminho e atualizar automaticamenteo ID armazenado do dispositivo. Se você alterar inadvertidamente o caminho e o ID dodispositivo, exporte e torne a importar o pool para poder usá-lo.

Usando faixas em um pool de armazenamento do ZFSOs discos podem ser rotulados com um rótulo Solaris VTOC tradicional quando você cria umpool de armazenamento com uma faixa de disco.

Em um pool raiz ZFS inicializável, os discos do pool devem conter faixas. A configuração maissimples é colocar toda a capacidade do disco na faixa 0 e usar essa faixa para o pool raiz.

Se estiver pensando em usar faixas em um pool de armazenamento do ZFS que não seja umpool raiz ZFS inicializável, pode ser necessário rever as condições abaixo ao usar faixas:

■ O nome do dispositivo não é padrão.■ Um único disco é compartilhado entre o ZFS e outro sistema de arquivos, como o UFS.■ Um disco é usado como um dispositivo de permuta ou despejo.

Usando arquivos em um pool de armazenamento doZFSO ZFS também permite que usar arquivos do UFS como dispositivos virtuais no pool dearmazenamento. Este recurso se destina principalmente a testar e capacitar experimentossimples, não para uso em produção. O motivo é que qualquer uso de arquivos depende do

Componentes de um pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 91

Page 92: Guia de amdiminstracao do zfs solaris

sistema de arquivos subjacente para ter consistência. Se criar um pool do ZFS baseado emarquivos de um sistema de arquivos UFS, você estará implicitamente confiando no UFS paragarantir correção e semântica síncrona.

No entanto, os arquivos podem ser bastante úteis ao utilizar o ZFS pela primeira vez ouexperimentar layouts mais complicados quando não estão presentes dispositivos físicossuficientes. É necessário especificar todos os arquivos como caminhos completos e que estestenham um tamanho de pelo menos 64 Mbytes. Se um arquivo for movido ou renomeado, seránecessário exportar e reimportar o pool para usá-lo, uma vez que nenhum ID de dispositivoestará associado a arquivos pelos quais possam ser localizados.

Recursos de replicação de um pool de armazenamento do ZFSO ZFS oferece redundância de dados, bem como propriedades de autocorreção, em umaconfiguração espelhada e RAID-Z.

■ “Configuração de pool de armazenamento espelhado” na página 92■ “Configuração de pool de armazenamento RAID-Z” na página 92■ “Dados de autocorreção em uma configuração redundante” na página 94■ “Distribuição dinâmica em um pool de armazenamento” na página 94

Configuração de pool de armazenamento espelhadoUma configuração de pool de armazenamento espelhado requer pelo menos dois discos, depreferência em controladores separados. Vários discos podem ser usados em uma configuraçãoespelhada. 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” na página 95.

Configuração de pool de armazenamento RAID-ZAlém de uma configuração de pool em armazenamento espelhado, o ZFS fornece umaconfiguração RAID-Z com tolerância de falha de paridade única ou dupla. O RAID-Z deparidade única é semelhante ao RAID-5. O RAID-Z de paridade dupla é semelhante aoRAID-6.

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

Guia de administração do ZFS Solaris • Setembro de 200892

Page 93: Guia de amdiminstracao do zfs solaris

Todos os algoritmos tradicionais semelhantes ao RAID-5 (RAID-4, RAID-6, RDP eEVEN-ODD, por exemplo) sofrem um problema conhecido como “buraco de gravaçãoRAID-5”. Se apenas parte de uma faixa RAID-5 for gravada, e a potência se perder antes detodos os blocos terem sido registrados no disco, a paridade permanecerá fora de sincronia comos dados e, portanto, ficará inutilizada para sempre (a não ser que uma gravação subseqüente defaixa inteira a substitua). No RAID-Z, o ZFS usa faixas RAID de largura variável, de forma quetodas as gravações são gravações de faixa inteira. Este design é possível apenas porque o ZFSintegra o gerenciamento do sistema de arquivos e do dispositivo de tal forma que os metadadosdo sistema de arquivos têm informações suficientes sobre o modelo de redundância de dadossubjacente para lidar com faixas RAID de largura variável. O RAID-Z é a primeira soluçãosomente 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 podemconter aproximadamente (N-P)*X bytes e podem resistir a P dispositivo(s) falho(s) antes que aintegridade dos dados seja comprometida. São necessários pelo menos dois discos para umaconfiguração RAID-Z de paridade única e pelo menos três discos para uma configuraçãoRAID-Z de paridade dupla. Por exemplo, se houver três discos em uma configuração RAID-Zde paridade única, os dados da paridade ocuparão espaço igual a um dos três discos. Docontrá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

Uma configuração RAID-Z conceitual mais complexa teria a aparência semelhante à seguinte:

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

c12t0d0 c13t0d0 c14t0d0

Se você estiver criando uma configuração RAID-Z com muitos discos, como neste exemplo,uma configuração RAID-Z com 14 discos será dividida melhor em dois grupos de 7 discos. Asconfigurações RAID-Z com agrupamentos de dígito único de discos têm um melhordesempenho.

Para obter mais informações sobre a criação de um pool de armazenamento RAID-Z, consulte“Criando pools de armazenamento RAID-Z” na página 96.

Para obter mais informações sobre a escolha entre uma configuração espelhada ou umaconfiguração RAID-Z baseada em considerações de desempenho e espaço, consulte o seguinteblog:

http://blogs.sun.com/roller/page/roch?entry=when_to_and_not_to

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

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

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

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 93

Page 94: Guia de amdiminstracao do zfs solaris

Dados de autocorreção em uma configuraçãoredundanteO 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 deuma cópia redundante como também repara os dados incorretos substituindo-os pela cópiacorreta.

Distribuição dinâmica em um pool de armazenamentoPara cada dispositivo virtual que é adicionado ao pool, o ZFS distribui dados dinamicamenteem todos os dispositivos disponíveis. A decisão sobre o local no qual colocar os dados é tomadana hora da gravação, de forma que nenhuma faixa de largura fixa é criada no momento daalocação.

Quando dispositivos virtuais são adicionados a um pool, o ZFS aloca dados gradualmente aonovo dispositivo para manter o desempenho e as diretrizes de alocação de espaço. Cadadispositivo virtual também pode ser um dispositivo de espelho ou RAID-Z que contém outrosdispositivos de disco ou arquivos. Esta configuração possibilita flexibilidade no controle dascaracterísticas de falha no pool. Você pode criar, por exemplo, as seguintes configurações com 4discos:

■ 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

Embora o ZFS ofereça suporte a combinação de diferentes tipos de dispositivos virtuais dentrodo mesmo pool, esta prática não é recomendável. Você pode criar, por exemplo, um pool comum espelho bidirecional e uma configuração RAID-Z tridirecional. No entanto, a tolerância afalhas é tão boa quanto a do seu pior dispositivo virtual, RAID-Z neste caso. A práticarecomendável é usar os dispositivos virtuais de primeiro nível do mesmo tipo com o mesmonível de redundância em cada dispositivo.

Criando e destruindo pools de armazenamento do ZFSAs seções seguintes descrevem diferentes situações de criação e destruição de pools dearmazenamento do ZFS.

■ “Criando um pool de armazenamento do ZFS” na página 95■ “Manipulando erros de criação do pool de armazenamento do ZFS” na página 99■ “Destruindo pools de armazenamento do ZFS” na página 102■ “Exibindo informações do dispositivo virtual do pool de armazenamento” na página 98

Criando e destruindo pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 200894

Page 95: Guia de amdiminstracao do zfs solaris

Por sua natureza, criar e destruir pools é rápido e fácil. No entanto, tome cuidado ao executarestas operações. Embora sejam realizadas verificações para impedir o uso de dispositivos queestão sendo usados em um novo pool, o ZFS nem sempre sabe quando um dispositivo estásendo utilizado. Destruir um pool é ainda mais fácil. Use zpool destroy com cuidado. Trata-sede um comando simples com conseqüências significativas.

Criando um pool de armazenamento do ZFSPara criar um pool de armazenamento, use o comando zpool create. Este comando adotaum nome de pool e qualquer quantidade de dispositivos virtuais como argumentos. O nome dopool deve cumprir as convenções de nomeação descritas em “Requisitos para nomeação decomponentes do ZFS” na página 39.

Criando um pool de armazenamento básicoO seguinte comando cria um novo pool denominado tank que contém os discos c1t0d0 ec1t1d0:

# zpool create tank c1t0d0 c1t1d0

Estes discos inteiros estão localizados no diretório /dev/dsk e rotulados adequadamente peloZFS para conter uma única faixa grande. Os dados são distribuídos dinamicamente nos doisdiscos.

Criando um pool de armazenamento espelhadoPara criar um pool espelhado, use a palavra-chave mirror, seguida de uma quantidade dedispositivos de armazenamento que formarão o espelho. É possível especificar vários espelhoscom a repetição da palavra-chave mirror na linha de comando. O comando abaixo cria umpool 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 redundadosadequadamente 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 seguintes são suportadas em uma configuração espelhada do ZFS:

■ Adicionar outro conjunto de discos de um nível superior adicional vdev a uma configuraçãoespelhada existente. Para obter mais informações, consulte “Adicionando dispositivos a umpool de armazenamento” na página 104.

Criando e destruindo pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 95

Page 96: Guia de amdiminstracao do zfs solaris

■ Anexar discos adicionais a uma configuração espelhada existente. Ou, anexar discosadicionais a uma configuração não replicada para criar uma configuração espelhada. Paraobter mais informações, consulte “Anexando e desanexando dispositivos em um pool dearmazenamento” na página 107.

■ Substituir um disco ou discos em uma configuração espelhada existente desde que os discosde substituição sejam maiores ou iguais ao dispositivo a ser substituído. Para obter maisinformações, consulte “Substituindo dispositivos em um pool de armazenamento”na página 112.

■ Desanexe um disco ou disco em uma configuração espelhada desde que os dispositivosrestantes forneçam redundância adequada para a configuração. Para obter maisinformações, consulte “Anexando e desanexando dispositivos em um pool dearmazenamento” na página 107.

No momento, as operações seguintes não são suportadas em uma configuração espelhada:■ Não é possível remover um dispositivo de um pool armazenamento espelhado. Uma RFE é

preenchida para esse recurso.■ Não é possível dividir ou quebrar um espelho para fins de backup. Uma RFE é preenchida

para esse recurso.

Criando pools de armazenamento RAID-ZA 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 abaixomostra como criar um pool com um dispositivo RAID-Z único que está composto por doisdiscos:

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

Este exemplo demonstra que os discos podem ser especificados com o uso de caminhoscompletos. O dispositivo /dev/dsk/c5t0d0 é idêntico ao dispositivo c5t0d0.

Uma configuração semelhante pode ser criada com faixas de disco. Por exemplo:

# zpool create tank raidz c1t0d0s0 c2t0d0s0 c3t0d0s0 c4t0d0s0 c5t0d0s0

No entanto, os discos devem ser pré-formatados para terem uma faixa zero adequadamentedimensionada.

Você pode criar uma configuração RAID-Z de paridade dupla com o uso da palavra-chaveraidz2 quando o pool é criado. Por exemplo:

# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0

# zpool status -v tank

pool: tank

state: ONLINE

Criando e destruindo pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 200896

Page 97: Guia de amdiminstracao do zfs solaris

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

raidz2 ONLINE 0 0 0

c1t0d0 ONLINE 0 0 0

c2t0d0 ONLINE 0 0 0

c3t0d0 ONLINE 0 0 0

errors: No known data errors

No momento, as operações seguintes são suportadas em uma configuração RAID-Z do ZFS:■ Adicionar outro conjunto de discos de um nível superior adicional vdev a uma

configuração RAID-Z existente. Para obter mais informações, consulte “Adicionandodispositivos a um pool de armazenamento” na página 104.

■ Substitua um disco ou discos em uma configuração RAID-Z existente desde que os discos desubstituição sejam maiores ou iguais ao dispositivo a ser substituído. Para obter maisinformações, consulte “Substituindo dispositivos em um pool de armazenamento”na página 112.

No momento, as operações seguintes não são suportadas em uma configuração RAID-Z doZFS:■ Anexar um disco adicional a uma configuração RAID-Z existente.■ Desanexar um disco de uma configuração RAID-Z.■ Não é possível remover um dispositivo 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 dearmazenamento RAID-Z” na página 92.

Criando um pool de armazenamento do ZFS com dispositivos de logPor padrão, o ZIL é alocado dos blocos no pool principal. No entanto, pode ser possível obtermelhor desempenho usando dispositivos separados de log de intenção, como NVRAM ou umdisco dedicado. Para obter mais informações sobre os dispositivos de log ZFS, consulte“Configurando dispositivos separados de log ZFS” na página 21.

Você pode configurar o dispositivo de log quando o pool de armazenamento for criado ou apósa sua criação.

Por exemplo, crie um pool de armazenamento espelhado com dispositivos de log espelhados.

# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0

# zpool status

pool: datap

Criando e destruindo pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 97

Page 98: Guia de amdiminstracao do zfs solaris

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

datap ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t3d0 ONLINE 0 0 0

c1t4d0 ONLINE 0 0 0

logs ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t5d0 ONLINE 0 0 0

c1t8d0 ONLINE 0 0 0

errors: No known data errors

Exibindo informações do dispositivo virtual do poolde armazenamentoCada pool de armazenamento é constituído de um ou mais dispositivos virtuais. Um dispositivovirtual é uma representação interna do pool de armazenamento que descreve o layout doarmazenamento físico e suas características de falha. Como tal, um dispositivo virtualrepresenta os dispositivos de disco ou arquivos que são usados para criar o pool dearmazenamento. Um pool pode ter qualquer quantidade de dispositivos virtuais na partesuperior da configuração, conhecida como root vdev.

Dois dispositivos virtuais de primeiro nível ou raiz proporcionam redundância de dados:dispositivos virtuais espelhados e RAID-Z. Estes dispositivos virtuais consistem em discos,faixas de discos ou arquivos. Um sobressalente é um vdev especial que controla ossobressalentes disponíveis em um pool.

O exemplo abaixo mostra como criar um pool composto por dois vdevs raiz, cada espelho dedois discos.

# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

O exemplo abaixo mostra como criar um pool composto por um vdev raiz de quatro discos.

# zpool create mypool raidz2 c1d0 c2d0 c3d0 c4d0

É possível adicionar outro dispositivo a este pool de armazenamento com o uso do comandozpool add. Por exemplo:

Criando e destruindo pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 200898

Page 99: Guia de amdiminstracao do zfs solaris

# zpool add mypool raidz2 c2d0 c3d0 c4d0 c5d0

Os discos, faixas de discos ou arquivos que são usados em pools não redundantes quefuncionam como dispositivos virtuais de primeiro nível. Os pools de armazenamentonormalmente contêm múltiplos dispositivos virtuais de primeiro nível. O ZFS criadinamicamente faixas de dados entre todos os dispositivos virtuais de primeiro nível em umpool.

Os dispositivos virtuais e os dispositivos físicos contidos no pool de armazenamento do ZFS sãoexibidos 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 ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t2d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t3d0 ONLINE 0 0 0

c1t3d0 ONLINE 0 0 0

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

Detectando dispositivos em usoAntes de formatar um dispositivo, o ZFS determina se o disco está sendo usado pelo ZFS ou poralguma outra parte do sistema operacional. Se o disco estiver em uso, poderão ser exibidos erroscomo 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).

Criando e destruindo pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 99

Page 100: Guia de amdiminstracao do zfs solaris

/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 com o uso da opção -f, mas grande parte deles nãopode. Os usos abaixo não podem ser ignorados com o uso da opção - f, sendo necessáriocorrigi-los manualmente:

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

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

Dispositivo de despejo dedicado O disco está em uso como o dispositivo de despejodedicado para o sistema. Para corrigir este erro, use ocomando dumpadm.

Parte de um pool do ZFS O disco ou o arquivo faz parte de um pool dearmazenamento ativo do ZFS. Para corrigir este erro,use o comando zpool destroy para destruir o pool, seeste 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 dearmazenamento espelhado.

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

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

Parte de volume O disco faz parte de um volume SVM.

Live upgrade O disco está em uso como um ambiente de inicializaçãoalternativo para o Solaris Live Upgrade.

Parte de pool exportado do ZFS O disco faz parte de um pool de armazenamento que foiexportado 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 unidadeanexada a uma rede em uso por outro sistema. Tomecuidado ao substituir um pool potencialmente ativo.

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

Criando e destruindo pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008100

Page 101: Guia de amdiminstracao do zfs solaris

# 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 usar a opção -f.

Níveis de replicação inconsistentesNão é recomendável criar pools com dispositivos virtuais de diferentes níveis de replicação. Ocomando zpool tenta impedir que você crie por acidente um pool com níveis de redundânciainconsistentes. Se tentar criar um pool com uma configuração assim, serão exibidos erros comoos 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

Estes erros podem ser ignorados com a opção -f, embora esta prática não seja recomendável. Ocomando também avisa sobre a criação de um pool espelhado ou RAID-Z que use dispositivosde diferentes tamanhos. Embora esta configuração seja permitida, níveis de redundânciainconsistentes resultam em espaço não usado no dispositivo maior e requerem a opção -f paraignorar o aviso.

Simulando uma criação de pool de armazenamentoUma vez que a criação de um pool pode falhar inesperadamente de várias maneiras e que aformatação de discos é uma ação potencialmente perigosa, o comando zpool create tem umaopção adicional, -n, que simula a criação do pool sem realmente gravar no dispositivo. Estaopção executa a verificação de dispositivo em uso e a validação do nível de replicação, e relataquaisquer erros durante o processo. Se nenhum erro for encontrado, será exibida uma saídasemelhante à seguinte:

# zpool create -n tank mirror c1t0d0 c1t1d0

would create ’tank’ with the following layout:

tank

mirror

c1t0d0

c1t1d0

Criando e destruindo pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 101

Page 102: Guia de amdiminstracao do zfs solaris

Alguns erros não podem ser detectados sem a criação real do pool. O exemplo mais comum é aespecificação do mesmo dispositivo duas vezes na mesma configuração. Não é possível detectarcom certeza este erro sem gravar os dados de verdade, de forma que o comando create -n poderelatar êxito e ainda assim não criar o pool quando realmente executado.

Ponto de montagem padrão para pools de armazenamentoQuando um pool é criado, o ponto de montagem padrão para o conjunto de dados raiz é/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 emcima 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:

# zpool create home c1t0d0

default mountpoint ’/home’ exists and is not empty

use ’-m’ option to specify a different default

# zpool create -m /export/zfs home c1t0d0

# 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 pool 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 demontagem do ZFS” na página 161.

Destruindo pools de armazenamento do ZFSOs pools são destruídos com o uso do comando zpool destroy. Este comando destrói o poolmesmo se contiver conjuntos de dados montados.

# zpool destroy tank

Cuidado – Tome muito cuidado ao destruir um pool. Verifique se está destruindo o pool certo esempre tenha cópias dos dados. Se destruir por acidente o pool errado, poderá tentarrecuperá-lo. Para obter mais informações, consulte “Recuperando pools de armazenamentodestruídos do ZFS” na página 133.

Criando e destruindo pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008102

Page 103: Guia de amdiminstracao do zfs solaris

Destruindo um pool com dispositivos falhosO ato de destruir um pool requer que os dados sejam gravados em disco para indicar que o pooldeixou de ser válido. Estas informações de estado evitam que o dispositivo apareça como umpossível pool ao realizar uma importação. Se um ou mais dispositivos não estiveremdisponíveis, o pool pode ainda assim ser destruído. No entanto, as informações de estadonecessárias não serão gravadas nestes dispositivos danificados.

Estes dispositivos, quando devidamente reparados, são relatados como potencialmente ativosquando você cria um novo pool e aparecem como dispositivos válidos quando você procurapools a serem importados. Se um pool apresentar bastantes dispositivos falhos, de forma que opróprio pool é falho (o que significa que o dispositivo virtual de primeiro nível é falho), ocomando imprimirá um aviso e não poderá concluir sem a opção -f. Esta opção é necessáriaporque o pool não pode ser aberto, de forma que não se sabe se os dados estão ou nãoarmazenados em tal pool. 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” na página 125.

Para obter mais informações sobre a importação de pools, consulte “Importando pools dearmazenamento do ZFS” na página 132.

Gerenciando dispositivos em pools de armazenamento doZFS

Grande parte das informações básicas relacionadas a dispositivos é tratada em “Componentesde um pool de armazenamento do ZFS” na página 89. Após a criação de um pool, é possívelexecutar várias tarefas para gerenciar os dispositivos físicos dentro do pool.

■ “Adicionando dispositivos a um pool de armazenamento” na página 104■ “Anexando e desanexando dispositivos em um pool de armazenamento” na página 107■ “Colocando dispositivos off-line e on-line em um pool de armazenamento” na página 109■ “Limpando dispositivos de pool de armazenamento” na página 112■ “Substituindo dispositivos em um pool de armazenamento” na página 112■ “Designando sobressalentes no pool de armazenamento” na página 114

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 103

Page 104: Guia de amdiminstracao do zfs solaris

Adicionando dispositivos a um pool dearmazenamentoÉ possível adicionar espaço dinamicamente a um pool adicionando um novo dispositivo virtualde primeiro nível. Este espaço fica disponível imediatamente para todos os conjuntos de dadosdentro do pool. 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 do comando zpool create e seaplicam as mesmas regras. Os dispositivos são verificados para determinar se estão em uso e ocomando não pode alterar o nível de redundância sem a opção -f. O comando tambémsuporta 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 de zeepool.

Para obter mais informações sobre como é realizada a validação de dispositivos virtuais,consulte “Detectando dispositivos em uso” na página 99.

EXEMPLO 5–1 Adicionando discos a uma configuração espelhada do ZFS

No exemplo seguinte, outro espelho é adicionado à uma configuração espelhada do ZFS em umsistema Sun Fire x4500.

# zpool status tank

pool: tank

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008104

Page 105: Guia de amdiminstracao do zfs solaris

EXEMPLO 5–1 Adicionando discos a uma configuração espelhada do ZFS (Continuação)

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror 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 ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t2d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t3d0 ONLINE 0 0 0

c1t3d0 ONLINE 0 0 0

errors: No known data errors

EXEMPLO 5–2 Adicionando discos a uma configuração RAID-Z

Da mesma forma, os discos extras podem ser adicionados a uma configuração RAID-Z. Oexemplo abaixo ilustra como converter um pool de armazenamento com um dispositivoRAID-Z composto por 3 discos em um pool de armazenamento com dois dispositivos RAID-Zcomposto por 3 discos.

# zpool status

pool: rpool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

rpool ONLINE 0 0 0

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 105

Page 106: Guia de amdiminstracao do zfs solaris

EXEMPLO 5–2 Adicionando discos a uma configuração RAID-Z (Continuação)

raidz1 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 rpool raidz c2t2d0 c2t3d0 c2t4d0

# zpool status

pool: rpool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

rpool ONLINE 0 0 0

raidz1 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

c1t3d0 ONLINE 0 0 0

c1t4d0 ONLINE 0 0 0

raidz1 ONLINE 0 0 0

c2t2d0 ONLINE 0 0 0

c2t3d0 ONLINE 0 0 0

c2t4d0 ONLINE 0 0 0

errors: No known data errors

EXEMPLO 5–3 Adicionando um dispositivo de log espelhado a um pool de armazenamento do ZFS

O exemplo abaixo ilustra como adicionar um dispositivo de log espelhado a um pool dearmazenamento espelhado.Para obter mais informações sobre o uso de dispositivos de log nopool de armazenamento, consulte “Configurando dispositivos separados de log ZFS”na página 21.

# zpool status newpool

pool: newpool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

newpool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t9d0 ONLINE 0 0 0

c1t10d0 ONLINE 0 0 0

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008106

Page 107: Guia de amdiminstracao do zfs solaris

EXEMPLO 5–3 Adicionando um dispositivo de log espelhado a um pool de armazenamento do ZFS(Continuação)

errors: No known data errors

# zpool add newpool log mirror c1t11d0 c1t12d0

# zpool status newpool

pool: newpool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

newpool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t9d0 ONLINE 0 0 0

c1t10d0 ONLINE 0 0 0

logs ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t11d0 ONLINE 0 0 0

c1t12d0 ONLINE 0 0 0

errors: No known data errors

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

Anexando e desanexando dispositivos em um pool dearmazenamentoAlém do comando zpool add, você pode usar o comando zpool attach para adicionar umnovo dispositivo a um dispositivo espelhado ou não espelhado.

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

Neste exemplo, zeepool é um espelho bidirecional existente que é transformado em umespelho tridirecional pela anexação do novo dispositivo c2t1d0 ao dispositivo existente c1t1d0.

# zpool status

pool: zeepool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 107

Page 108: Guia de amdiminstracao do zfs solaris

EXEMPLO 5–4 Convertendo um pool de armazenamento espelhado bidirecional em um pool dearmazenamento espalhado tridirecional (Continuação)

zeepool ONLINE 0 0 0

mirror 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

pool: zeepool

state: ONLINE

scrub: resilver completed after 0h2m with 0 errors on Thu Aug 28 09:50:11 2008

config:

NAME STATE READ WRITE CKSUM

zeepool ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c2t1d0 ONLINE 0 0 0

Se o dispositivo existente fizer parte de um espelho bidirecional, a anexação do novo dispositivocriará um espelho tridirecional, e assim por diante. Nos dois casos, o novo dispositivo começa arealizar resilvering imediatamente.

EXEMPLO 5–5 Convertendo um pool de armazenamento não redundante do ZFS em um pool dearmazenamento espelhado do ZFS

Além disso, é possível converter um pool de armazenamento não redundante em um pool dearmazenamento redundante com uso do comando zpool attach. Por exemplo:

# zpool create tank c0t1d0

# zpool status

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

pool: tank

state: ONLINE

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008108

Page 109: Guia de amdiminstracao do zfs solaris

EXEMPLO 5–5 Convertendo um pool de armazenamento não redundante do ZFS em um pool dearmazenamento espelhado do ZFS (Continuação)

scrub: resilver completed after 0h2m with 0 errors on Thu Aug 28 09:54:11 2008

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

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

# zpool detach zeepool c2t1d0

No entanto, a operação será recusada se não houver outras cópias válidas dos dados. Porexemplo:

# zpool detach newpool c1t2d0

cannot detach c1t2d0: only applicable to mirror and replacing vdevs

Colocando dispositivos off-line e on-line em um poolde armazenamentoO 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ívelinstruir o ZFS a ignorar o dispositivo colocando-o off-line. O ZFS não envia solicitações a umdispositivo off-line.

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

O comando offline pode ser usado quando for necessário desconectar o armazenamentotemporariamente. Por exemplo, se for necessário desconectar fisicamente uma matriz de umconjunto de comutadores de Fibre Channel e conectar a matriz a um conjunto diferente, épossível usar os LUNs off-line da matriz que foi usada nos pools de armazenamento do ZFS.Após a matriz ser reconectada e estar operacional no novo conjunto de comutadores, é possívelcolocar os mesmos LUNs on-line. Os dados adicionados aos pools de armazenamento enquantoos LUNs estavam off-line podem sofrer resilvering nos LUNs após serem colocados on-line.

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 109

Page 110: Guia de amdiminstracao do zfs solaris

Esta situação é possível, pressupondo que os sistemas em questão reconhecem oarmazenamento depois de serem anexados aos novos comutadores, possivelmente através decontroladores diferentes, e os pools são configurados como configurações RAID-Z ouespelhados.

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

# zpool offline tank c1t0d0

bringing device c1t0d0 offline

Leve em consideração as seguintes questões ao colocar dispositivos 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 RAID-Z, nem colocaroff-line um dispositivo virtual de primeiro nível.

# zpool offline tank c1t0d0

cannot offline c1t0d0: no valid replicas

■ Por padrão, o estado off-line é persistente. O dispositivo permanece off-line quando osistema é reiniciado.Para colocar um dispositivo temporariamente off-line, use a opção zpool offline -t. Porexemplo:

# 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 usar o dispositivo colocado off-line em outro pool, mesmo depoisde o pool original ter sido destruído, será exibida uma mensagem semelhante à seguinte:

device is part of exported or potentially active ZFS pool. Please see zpool(1M)

Se quiser usar o dispositivo off-line em outro pool de armazenamento depois de destruir opool de armazenamento original, coloque primeiramente o dispositivo on-line, em seguidadestrua o pool de armazenamento original.

Outra forma de usar um dispositivo de outro pool de armazenamento caso queira manter opool de armazenamento original é substituir o dispositivo existente no pool de

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008110

Page 111: Guia de amdiminstracao do zfs solaris

armazenamento original por outro dispositivo semelhante. Para obter informações sobre asubstituição de dispositivos, consulte “Substituindo dispositivos em um pool dearmazenamento” na página 112.

Os dispositivos off-line aparecem no estado OFFLINE quando você consulta o status do pool.Para obter informações sobre consultas de status do pool, consulte “Consultando status de poolde armazenamento do ZFS” na página 121.

Para obter mais informações sobre a integridade de dispositivos, consulte “Determinando ostatus de integridade de pools de armazenamento do ZFS” na página 125.

Colocando um dispositivo on-lineApós um dispositivo ser colocado off-line, ele pode ser restaurado com o uso do comandozpool online:

# zpool online tank c1t0d0

bringing device c1t0d0 online

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

Se você tentar colocar um dispositivo falho on-line, será exibida uma mensagem de fmdsemelhante à seguinte :

# zpool online tank c1t0d0

Bringing device c1t0d0 online

#

SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major

EVENT-TIME: Thu Apr 24 03:07:05 MDT 2008

PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo2

SOURCE: zfs-diagnosis, REV: 1.0

EVENT-ID: b8ed8b2b-2c22-4281-bbfa-dd92d3cd924d

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 “Reparandoum dispositivo ausente” na página 253.

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 111

Page 112: Guia de amdiminstracao do zfs solaris

Limpando dispositivos de pool de armazenamentoSe um dispositivo for colocado off-line devido a uma falha que cause erros a serem listados nasaí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 dopool. Por exemplo:

# zpool clear tank

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

# zpool clear tank c1t0d0

Para obter mais informações sobre a limpeza de erros de zpool, consulte “Apagando errostransitórios” na página 256.

Substituindo dispositivos em um pool dearmazenamentoÉ possível substituir um dispositivo em um pool de armazenamento usando o comando zpool

replace.

Se você estiver substituindo fisicamente um dispositivo por outro dispositivo no mesmo localem um pool redundante, então, só é preciso identificar o dispositivo substituído. O ZFSreconhece que se trata de um disco diferente no mesmo local. Por exemplo, para substituir umdisco falho (c1t1d0) removendo o disco e substituindo-o no mesmo local, use a sintaxesemelhante à seguinte:

# zpool replace tank c1t1d0

Se você estiver substituindo um dispositivo em um pool de armazenamento não redundanteque contenha somente um dispositivo, será necessário especificar ambos os dispositivos. Porexemplo:

# zpool replace tank c1t1d0 c1t2d0

As etapas básicas para a substituição de um disco são:

■ 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.

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008112

Page 113: Guia de amdiminstracao do zfs solaris

■ 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, você deve desconfigurar o disco antes de colocá-looff-line. Se estiver substituindo um disco na mesma posição do slot do sistema, é possívelexecutar o comando zpool replace conforme identificado acima.

Para obter um exemplo de substituição de discos neste sistema, consulte o Exemplo 11–1.

Tenha em mente os cenários seguintes quando substituir dispositivos em um pool dearmazenamento do ZFS:

■ Se a propriedade autoreplace do pool for definida como on, qualquer dispositivo novoencontrado no mesmo local físico que um dispositivo que antes pertencia ao pool seráautomaticamente formatado e substituído sem o uso do comando zpool replace. Esterecurso pode não estar disponível em todos os hardwares.

■ O dispositivo de substituição deve ser maior que ou igual ao tamanho mínimo de todos osdispositivos em uma configuração espelhada ou RAID-Z.

■ Se o dispositivo de substituição for maior, a capacidade do pool é aumentada quando asubstituição é concluída. No momento, você deve exportar e importar o pool para ver acapacidade expandida. Por exemplo:

# zpool list tank

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 16.8G 94K 16.7G 0% ONLINE -

# zpool replace tank c0t0d0 c0t4d0

# zpool list tank

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 16.8G 112K 16.7G 0% ONLINE -

# zpool export tank

# zpool import tank

# zpool list tank

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 33.9G 114K 33.9G 0% ONLINE -

Para obter mais informações sobre a exportação e a importação de pools, consulte“Migrando pools de armazenamento do ZFS” na página 128.

■ Atualmente, ao aumentar o tamanho de um LUN que faz parte de um pool dearmazenamento, você deve realizar também as etapas de exportação e importação paraobter a capacidade estendida do disco.

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 113

Page 114: Guia de amdiminstracao do zfs solaris

■ Substituir muitos discos em um pool grande é demorado devido ao espelhamento de dadosnos novos discos. Além disso, você deve considerar a execução do comando zpool scrub

entre as substituições de disco para garantir que os dispositivos de substituição estejamoperacionais e os daods sejam gravados corretamente.

Para obter mais informações sobre a substituição de dispositivos, consulte “Reparando umdispositivo ausente” na página 253 e “Reparando um dispositivo danificado” na página 254.

Designando sobressalentes no pool dearmazenamentoO recurso de sobressalentes permite identificar os discos que poderiam ser usados parasubstituir um dispositivo falho ou defeituoso em um ou mais pontos de armazenamento. Adesignação de um dispositivo como sobressalente significa que o dispositivo não é umdispositivo ativo em um pool, mas se um dispositivo ativo no pool falhar o sobressalentesubstituirá automaticamente o dispositivo falho.

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

■ Quando o pool é criado com o comando zpool create

■ Após o pool ser criado com o comando zpool add

■ Os dispositivos sobressalentes podem ser compartilhados entre múltiplos pools

Designe dispositivos como sobressalentes ao criar o pool. Por exemplo:

# zpool create zeepool mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0

# zpool status zeepool

pool: zeepool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

zeepool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c2t1d0 ONLINE 0 0 0

spares

c1t2d0 AVAIL

c2t2d0 AVAIL

Designe sobressalentes adicionando-os a um pool após a sua criação. Por exemplo:

# zpool add zeepool spare c1t3d0 c2t3d0

# zpool status zeepool

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008114

Page 115: Guia de amdiminstracao do zfs solaris

pool: zeepool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

zeepool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c2t1d0 ONLINE 0 0 0

spares

c1t3d0 AVAIL

c2t3d0 AVAIL

Vários pools podem compartilhar dispositivos que são designados como sobressalentes. Porexemplo:

# zpool create zeepool mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0

# zpool create tank raidz c3t1d0 c4t1d0 spare c1t2d0 c2t2d0

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

# zpool remove zeepool c1t2d0

# zpool status zeepool

pool: zeepool

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

zeepool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c2t1d0 ONLINE 0 0 0

spares

c1t3d0 AVAIL

Não será possível remover um sobressalente se estiver sendo usado atualmente por um pool dearmazenamento.

Tenha em mente os pontos seguintes ao usar sobressalentes do ZFS:

■ Atualmente, o comando zpool remove pode ser usado apenas para remover sobressalentes.

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 115

Page 116: Guia de amdiminstracao do zfs solaris

■ Adicione um disco como um sobressalente que seja igual ou maior que o tamanho do maiordisco no pool. É permitido adicionar um disco menor como um sobressalente de um pool.Entretanto, quando o sobressalente menor é ativado, automaticamente ou com o comandozpool replace, a operação falha com um erro semelhante ao seguinte:

cannot replace disk3 with disk4: device is too small

■ É possível compartilhar um sobressalente nos pools. No entanto, não é possível exportar umpool com um sobressalente compartilhado em uso a menos que a opção zpool export -f

(forçar) seja usada. Este comportamento evita a possível situação de corrupção de dados aoexportar um pool com o sobressalente compartilhado em uso e outro pool tentar usar osobressalente compartilhado do pool exportado. Se exportar um pool com um sobressalentecompartilhado em uso por meio da opção-f, tenha em mente que esta operação pode levar àcorrupção de dados se outro pool tentar ativar o sobressalente compartilhado em uso.

Ativando e desativando sobressalentes no pool de armazenamentoOs sobressalentes são ativados das seguintes maneiras:

■ Substituição manual – Substitui um dispositivo falho em um pool de armazenamento porum sobressalente com o uso do comando zpool replace.

■ Substituição automática – Quando a falha é recebida, um agente FMA examina o pool paraverificar se existem sobressalentes disponíveis. Se existirem, ele substituirá o dispositivofalho por um sobressalente disponível.Se um sobressalente atualmente em uso falhar, o agente desanexará tal sobressalente,cancelando assim a substituição. O agente tenta, então, substituir o dispositivo por outrosobressalente, se houver um disponível. Este recurso é atualmente limitado pelo fato de omecanismo de diagnóstico do ZFS emitir falhas somente quando um dispositivo desaparecedo sistema.Se substituir fisicamente um dispositivo falho por um sobressalente ativo, você pode reativaro dispositivo original, porém substituído, usando o comando zpool detach para desanexaro sobressalente. Se definir a propriedade autoreplace do pool como on, o sobressalente édesanexado automaticamente do pool sobressalente quando o novo dispositivo for inseridoe a operação on-line terminar.

Substitua manualmente um dispositivo com um sobressalente com o uso do comando zpool

replace. Por exemplo:

# zpool replace zeepool c2t1d0 c2t3d0

# zpool status zeepool

pool: zeepool

state: ONLINE

scrub: resilver completed after 0h0m with 0 errors on Thu Aug 28 09:41:49 2008

config:

Gerenciando dispositivos em pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008116

Page 117: Guia de amdiminstracao do zfs solaris

NAME STATE READ WRITE CKSUM

zeepool ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

spare ONLINE 0 0 0

c2t1d0 ONLINE 0 0 0

c2t3d0 ONLINE 0 0 0

spares

c1t3d0 AVAIL

c2t3d0 INUSE currently in use

errors: No known data errors

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-D3

scrub: resilver completed after 0h12m with 0 errors on Thu Aug 28 09:29:43 2008

config:

NAME STATE READ WRITE CKSUM

zeepool DEGRADED 0 0 0

mirror DEGRADED 0 0 0

c1t2d0 ONLINE 0 0 0

spare DEGRADED 0 0 0

c2t1d0 UNAVAIL 0 0 0 cannot open

c2t3d0 ONLINE 0 0 0

spares

c1t3d0 AVAIL

c2t3d0 INUSE currently in use

errors: No known data errors

Atualmente, estão disponíveis três formas de desativar sobressalentes:

■ Cancelando o sobressalente removendo-o do pool de armazenamento■ Substituindo o dispositivo original por um sobressalente■ Realizando troca permanente no sobressalente

Após o dispositivo falho ser substituído, use o comando zpool detach para devolver osobressalente ao conjunto de sobressalentes. Por exemplo:

Gerenciando dispositivos em pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 117

Page 118: Guia de amdiminstracao do zfs solaris

# zpool detach zeepool c2t3d0

# zpool status zeepool

pool: zeepool

state: ONLINE

scrub: resilver completed with 0 errors on Mon Sep 22 14:23:06 2008

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

c1t3d0 AVAIL

c2t3d0 AVAIL

errors: No known data errors

Gerenciando propriedades do pool de armazenamento doZFS

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

# zpool get all mpool

NAME PROPERTY VALUE SOURCE

mpool size 33.8G -

mpool used 5.91G -

mpool available 27.8G -

mpool capacity 17% -

mpool altroot - default

mpool health ONLINE -

mpool guid 2689713858991441653 -

mpool version 10 default

mpool bootfs mpool/ROOT/zfs2BE local

mpool delegation on default

mpool autoreplace on local

mpool cachefile - default

mpool failmode continue local

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

Gerenciando propriedades do pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008118

Page 119: Guia de amdiminstracao do zfs solaris

NAME PROPERTY VALUE SOURCE

mpool autoreplace on default

TABELA 5–1 Descrições das propriedades do pool do ZFS

Nome dapropriedade Tipo Valor padrão Descrição

altroot Seqüência off Identifique um diretório raiz alternativo. Se definido, estediretório é anteposto a quaisquer pontos de montagem dentrodo pool. Esta propriedade pode ser usada ao examinar um pooldesconhecido, se os pontos de montagem não forem deconfiança ou em um ambiente de inicialização alternativo noqual os caminhos normais não são válidos.

available Número N/D Valor somente leitura que identifica a quantidade dearmazenamento disponível no pool.

O nome de coluna abreviado, avail, também pode fazerreferência a esta propriedade.

autoreplace Booleano off Controla a substituição automática do dispositivo. Se fordefinida como off, a substituição do dispositivo deve seriniciada pelo administrador usando o comando zpool

replace. Se for definida como on, qualquer dispositivo novoencontrado no mesmo local físico que um dispositivo queantes pertencia ao pool será automaticamente formatado esubstituído. O comportamento padrão é desativado (off). Onome de coluna abreviado replace também pode fazerreferência a esta propriedade.

bootfs Booleano N/D Identifica o conjunto de dados inicializável padrão do poolraiz. Espera-se que esta propriedade seja definidaprincipalmente pelos programas de instalação e atualização.

capacity Número N/D Valor somente leitura que identifica a porcentagem de espaçousado do pool.

O nome de coluna abreviado, cap, também pode fazerreferência a esta propriedade.

delegation Booleano on Controla se a um usuário não-privilegiado podem serconcedidas permissões de acesso definidas para o conjunto dedados. Para obter mais informações, consulte o Capítulo 9,“Administração delegada de ZFS”.

Gerenciando propriedades do pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 119

Page 120: Guia de amdiminstracao do zfs solaris

TABELA 5–1 Descrições das propriedades do pool do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

failmode Seqüência wait Controla o comportamento do sistema no caso de falhasirremediáveis do pool. Esta situação é causada normalmentepela perda de conectividade com o(s) dispositivos(s) dearmazenamento subjacente(s) ou por uma falha de todos osdispositivos do pool. O comportamento de tal situação édeterminado por um dos valores seguintes:■ wait – bloqueia todos os acessos de E/S até que a

conectividade com o dispositivo seja restaurada e os errossejam apagados com o comando zpool clear. Trata-se docomportamento padrão.

■ continue – retorna EIO a quaisquer novas solicitações deE/S escritas, mas permite a leitura dos dispositivos bonsrestantes. As solicitações escritas que ainda não foramenviadas ao disco podem ser bloqueadas. Depois dereconectar ou substituir o dispositivo, os erros devem serapagados com o comando zpool clear.

■ panic – imprime uma mensagem no console e gera umdespejo de travamento do sistema.

guid Seqüência N/D Valor somente leitura que identifica o identificador exclusivodo pool.

health Seqüência N/D Valor somente leitura que identifica o estado atual do pool,como ONLINE, DEGRADED, FAULTED, OFFLINE,REMOVED ou UNAVAIL..

size Número N/D Valor somente leitura que identifica o tamanho total do poolde armazenamento.

used Número N/D Valor somente leitura que identifica a quantidade de espaço dearmazenamento usado no pool.

version Número N/D Identifica a versão atual em disco do pool. O valor destapropriedade pode ser ampliado, mas nunca reduzido. Ométodo preferido de atualização de pools é com o comandozpool upgrade, embora esta propriedade possa ser usadaquando uma versão específica seja necessária para obter acompatibilidade com versões anteriores. Esta propriedadepode ser definida com qualquer número entre 1 e a versãoatual informada pelo comando zpool upgrade -v. O valorcurrent é um alias da versão mais recente suportada.

Gerenciando propriedades do pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008120

Page 121: Guia de amdiminstracao do zfs solaris

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

■ “Exibindo informações básicas do pool de armazenamento do ZFS” na página 121■ “Exibindo estatísticas de E/S do pool de armazenamento do ZFS” na página 123■ “Determinando o status de integridade de pools de armazenamento do ZFS” na página 125

Exibindo informações básicas do pool dearmazenamento do ZFSO comando zpool list pode ser usado para exibir informações básicas sobre pools.

Listando informações sobre todos os pools de armazenamentoSem argumentos, o comando exibe todos os campos para todos os pools do sistema. Porexemplo:

# zpool list

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 80.0G 22.3G 47.7G 28% ONLINE -

dozer 1.2T 384G 816G 32% ONLINE -

Esta saída exibe as seguintes informações:

NAME O nome do pool.

SIZE O tamanho total do pool, igual à soma do tamanho de todos os dispositivosvirtuais de primeiro nível.

USED A quantidade de espaço alocada para todos os conjuntos de dados emetadados internos. Observe que esta quantidade é diferente daquantidade de espaço relatada no nível do sistema de arquivos.

Para obter mais informações sobre a determinação de espaço disponível nosistema de arquivos, consulte “Contagem de espaço do ZFS” na página 50.

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

CAPACITY (CAP) A quantidade de espaço usada, expressa como uma porcentagem do espaçototal.

HEALTH O status de integridade atual do pool.

Consultando status de pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 121

Page 122: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre a integridade de pools, consulte“Determinando o status de integridade de pools de armazenamento doZFS” na página 125.

ALTROOT A raiz alternativa do pool, se houver alguma.

Para obter mais informações sobre pools de raiz alternativa, consulte“Usando pools de raiz alternativa do ZFS” na página 239.

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

# zpool list tank

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

tank 80.0G 22.3G 47.7G 28% ONLINE -

Listando estatísticas específicas de pool de armazenamentoAs estatísticas específicas podem ser solicitadas com o uso da opção -o. Esta opçãoproporciona 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 sobretodos os pools de armazenamento” na página 121.

Script de saída de pool de armazenamento do ZFSA saída padrão do comando zpool list está destinada à legibilidade, e não é fácil usá-la comoparte de um script de shell. Para ajudar em usos programáticos do comando, a opção -H podeser usada para suprimir os cabeçalhos de colunas e separar campos por guias, em vez de porespaços. Por exemplo, para solicitar uma lista simples de todos os nomes de pools no sistema:

# zpool list -Ho name

tank

dozer

Eis um outro exemplo:

# zpool list -H -o name,size

tank 80.0G

dozer 1.2T

Consultando status de pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008122

Page 123: Guia de amdiminstracao do zfs solaris

Exibindo estatísticas de E/S do pool dearmazenamento do ZFSPara solicitar estatísticas de E/S para um pool ou dispositivos virtuais específicos, use ocomando zpool iostat. Semelhante ao comando iostat, este comando pode exibir uminstantâneo estático de toda a atividade de E/S até o momento, bem como estatísticasatualizadas de todos os intervalos especificados. São relatadas as seguintes estatísticas:

USED CAPACITY A quantidade de dados atualmente armazenados no pool oudispositivo. Esta quantidade difere um pouco da quantidade deespaço disponível para os sistemas de arquivos atuais devido aosdetalhes de implementação interna.

Para obter mais informações sobre a diferença entre espaço de pool eespaço de conjunto de dados, consulte “Contagem de espaço do ZFS”na página 50.

AVAILABLE CAPACITY A quantidade de espaço disponível no pool ou dispositivo. Como nocaso da estatística de used, esta quantidade difere por uma pequenamargem da quantidade de espaço disponível para conjuntos dedados.

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

WRITE OPERATIONS O número de operações de E/S de gravação enviado para o pool oudispositivo.

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

WRITE BANDWIDTH A largura de banda de todas as operações de gravação, expressa comounidades por segundo.

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

# zpool iostat

capacity operations bandwidth

pool used avail read write read write

---------- ----- ----- ----- ----- ----- -----

tank 100G 20.0G 1.2M 102K 1.2M 3.45K

dozer 12.3G 67.7G 132K 15.2K 32.1K 1.20K

Consultando status de pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 123

Page 124: Guia de amdiminstracao do zfs solaris

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

# zpool iostat tank 2

capacity operations bandwidth

pool used avail read write read write

---------- ----- ----- ----- ----- ----- -----

tank 100G 20.0G 1.2M 102K 1.2M 3.45K

tank 100G 20.0G 134 0 1.34K 0

tank 100G 20.0G 94 342 1.06K 4.1M

Neste exemplo, o comando exibe estatísticas de uso somente do pool tank a cada dois segundosaté que você digite Ctrl-C. Como alternativa, você pode especificar um parâmetro de countadicional, o que faz com que o comando termine após o número especificado de iterações. Porexemplo, zpool iostat 2 3 imprimiria um resumo a cada dois segundos com três iterações,em um total de seis segundos. Se houver um pool único, as estatísticas serão exibidas em linhasconsecutivas. Se houver mais de um pool, uma linha tracejada adicional delineará cada iteraçãopara fornecer separação visual.

Listando estatísticas de dispositivo virtualAlém das estatísticas de E/S de todos os pools, o comando zpool iostat pode exibir estatísticasde dispositivos virtuais específicos. Este comando pode ser usado para identificar dispositivosanormalmente lentos, ou simplesmente 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

tank used avail read write read write

---------- ----- ----- ----- ----- ----- -----

mirror 20.4G 59.6G 0 22 0 6.00K

c1t0d0 - - 1 295 11.2K 148K

c1t1d0 - - 1 299 11.2K 148K

---------- ----- ----- ----- ----- ----- -----

total 24.5K 149M 0 22 0 6.00K

Observe duas coisas importantes ao visualizar estatísticas de E/S com base em um dispositivovirtual:

■ Em primeiro lugar, o uso do espaço está disponível somente para dispositivos virtuais deprimeiro nível. A forma como o espaço é alocado entre os dispositivos de espelho e RAID-Zé específica da implementação e não é expressa facilmente como um único número.

Consultando status de pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008124

Page 125: Guia de amdiminstracao do zfs solaris

■ Em segundo lugar, os números talvez não sejam somados com exatidão, como seria deesperar. Em especial, operações nos dispositivos espelhados e RAID-Z não serão exatamenteiguais. Esta diferença é particularmente evidente logo depois que um pool é criado, uma vezque uma quantidade significativa de E/S é feita diretamente para os discos, como parte dacriação do pool que não é considerado no nível de espelho. Com o tempo, estes númerosdevem se igualar gradativamente, embora dispositivos interrompidos, que não respondemou que estejam off-line também possam afetar esta simetria.

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

Determinando o status de integridade de pools dearmazenamento do ZFSO ZFS fornece um método integrado de exame da integridade de pools e dispositivos. Aintegridade 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, aspossíveis falhas de pool e dispositivo são relatadas pelo fmd e exibidas no console do sistema eno arquivo /var/adm/messages. Esta seção descreve como determinar a integridade de pools edispositivos. Este capítulo não documenta como reparar ou recuperar dados de pools semintegridade. Para obter mais informações sobre a solução de problemas e a recuperação dedados, consulte o Capítulo 11, “Solução de problemas e recuperação de dados do ZFS”.

Cada dispositivo pode se enquadrar em um dos seguintes estados:

ONLINE O dispositivo está em estado normal de funcionamento. Embora alguns errostransitórios possam ocorrer, o dispositivo está em perfeito funcionamento.

DEGRADED O dispositivo virtual falhou, mas ainda está em condições de funcionar. Esteestado é muito comum quando um dispositivo de espelho ou RAID-Z perdeum ou mais dispositivos constituintes. A tolerância a falhas do pool pode ficarcomprometida, uma vez que uma falha subseqüente em outro dispositivopode ser irrecuperável.

FAULTED O dispositivo virtual está completamente inacessível. Este status geralmenteindica falha total do dispositivo, de forma que o ZFS não é capaz de enviar oureceber dados dele. Se um dispositivo de primeiro nível estiver neste estado, opool estará totalmente inacessível.

OFFLINE O dispositivo virtual foi colocado explicitamente off-line pelo administrador.

UNAVAILABLE O dispositivo ou o dispositivo virtual não pode ser aberto. Em alguns casos,pools com dispositivos UNAVAILABLE aparecem no modo DEGRADED. Se umdispositivo virtual de primeiro nível não estiver disponível, nada no poolpoderá ser acessado.

Consultando status de pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 125

Page 126: Guia de amdiminstracao do zfs solaris

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

A integridade de um pool é determinada a partir da integridade de todos os seus dispositivosvirtuais de primeiro nível. Se todos os dispositivos virtuais estiverem ONLINE, o pool tambémestará ONLINE. Se algum dos dispositivos virtuais estiver DEGRADED ou UNAVAILABLE, o pooltambém estará DEGRADED. Se um dispositivo virtual de primeiro nível estiver FAULTED ouOFFLINE, o pool também estará FAULTED. Um pool no estado de falha estará totalmenteinacessível. Nenhum dado poderá ser recuperado até que os dispositivos necessários sejamanexados ou reparados. Um pool no estado danificado continuará a ser executado, mas talveznão atinja o mesmo nível de redundância de dados ou a mesma taxa de transferência de dadosque poderia ser atingida se o pool estivesse on-line.

Status básico de integridade do pool de armazenamentoA forma mais simples de solicitar uma visão geral rápida do status da integridade do pool é como uso do comando zpool status:

# zpool status -x

all pools are healthy

É possível examinar um determinado pool especificando o nome de tal pool para o comando.Qualquer pool que não esteja no estado ONLINE deve ser investigado no caso de haverproblemas potenciais, como descrito na seção a seguir.

Status de integridade detalhadoÉ possível solicitar um resumo mais detalhado da integridade com o uso da opção -v. Porexemplo:

# 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: none requested

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 0

mirror DEGRADED 0 0 0

c1t0d0 FAULTED 0 0 0 cannot open

Consultando status de pool de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008126

Page 127: Guia de amdiminstracao do zfs solaris

c1t1d0 ONLINE 0 0 0

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çãode mais informações. Cada artigo informativo fornece informações atualizadas sobre a melhorforma de obter recuperação do problema atual. Com o uso das informações detalhadas deconfiguração você pode determinar que dispositivo está danificado e como reparar o pool.

No exemplo acima, o dispositivo falho deve ser substituído. Após o dispositivo ser substituído,use 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 um pool tiver um dispositivo off-line, a saída do comando identificará o pool com problema.Por exemplo:

# zpool status -x

pool: tank

state: DEGRADED

status: One or more devices has been taken offline by the adminstrator.

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: none requested

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 0

mirror DEGRADED 0 0 0

c1t0d0 ONLINE 0 0 0

c1t1d0 OFFLINE 0 0 0

errors: No known data errors

As colunas READ e WRITE fornecem uma contagem dos erros de E/S exibidos no dispositivo,enquanto a coluna CKSUM fornece uma contagem dos erros de soma de verificação incorrigíveisque ocorreram no dispositivo. As duas contagens de erros indicam falhas potenciais dodispositivo e é necessária uma ação corretiva. Se forem relatados erros diferentes de zero em umdispositivo virtual de primeiro nível, partes dos dados poderão estar inacessíveis. A contagemde erros identifica quaisquer erros de dados conhecidos.

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

Consultando status de pool de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 127

Page 128: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre o diagnóstico e a correção de pools e dados falhos, consulte oCapítulo 11, “Solução de problemas e recuperação de dados do ZFS”.

Migrando pools de armazenamento do ZFSOcasionalmente, pode ser necessário mover um pool de armazenamento entre as máquinas.Para isso, os dispositivos de armazenamento devem ser desconectados da máquina original ereconectados à máquina de destino. Esta tarefa pode ser realizada tornando a ligar fisicamenteos cabos dos dispositivos ou utilizando dispositivos de portas múltiplas, como os dispositivosem uma SAN. O ZFS permite exportar o pool de uma máquina e importá-lo para a máquina dedestino, mesmo que as máquinas tenham endian diferentes. Para obter informações sobrereplicação ou migração de sistemas de arquivos entre diferentes pools de armazenamento quepossam residir em diferentes máquinas, consulte “Enviando e recebendo dados do ZFS”na página 180.

■ “Preparando para migração do pool de armazenamento do ZFS” na página 128■ “Exportando um pool de armazenamento do ZFS” na página 129■ “Determinando pools de armazenamento disponíveis para importação” na página 129■ “Localizando pools de armazenamento do ZFS a partir de diretórios alternativos”

na página 131■ “Importando pools de armazenamento do ZFS” na página 132■ “Recuperando pools de armazenamento destruídos do ZFS” na página 133■ “Atualizando pools de armazenamento do ZFS” na página 135

Preparando para migração do pool dearmazenamento do ZFSOs pools de armazenamento devem ser exportados explicitamente para indicar que estãoprontos para ser migrados. Esta operação libera quaisquer dados não gravados para o disco,grava os dados no disco, indicando que a exportação foi feita, e remove do sistema toda ainformação do pool.

Se o pool não for explicitamente exportado, mas em vez disso for removido manualmente dodisco, será possível importar o pool resultante em outro sistema. No entanto, pode ocorrer aperda dos últimos segundos das transações de dados, e o pool aparecerá falho na máquinaoriginal porque os dispositivos não estarão mais presentes. Por padrão, a máquina de destino serecusa a importar um pool que não tenha sido exportado explicitamente. Essa condição énecessária para impedir a importação acidental de um pool ativo composto porarmazenamentos de rede anexados que ainda estejam em uso em outro sistema.

Migrando pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008128

Page 129: Guia de amdiminstracao do zfs solaris

Exportando um pool de armazenamento do ZFSPara exportar um pool, use o comando zpool export. Por exemplo:

# zpool export tank

Uma vez executado este comando, o pool tank deixa de ser visível no sistema. O comando tentadesmontar quaisquer sistemas de arquivos montados dentro do pool antes de continuar. Sequalquer um dos sistemas de arquivos não for desmontado, você poderá forçar a desmontagemcom o uso da opção -f. Por exemplo:

# zpool export tank

cannot unmount ’/export/home/eschrock’: Device busy

# zpool export -f tank

Se não houver dispositivos disponíveis no momento da exportação, os discos não poderão serespecificados como exportados corretamente. Se um destes dispositivos for posteriormenteanexado 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á serexportado, mesmo com a opção -f. Para exportar um pool com um volume ZFS, primeirocertifique-se de que todos os consumidores do volume deixaram de estar ativos.

Para obter mais informações sobre volumes ZFS, consulte “Volumes ZFS” na página 231.

Determinando pools de armazenamento disponíveispara importaçãoUma vez removido o pool do sistema (através de exportação ou remoção forçada dosdispositivos), anexe os dispositivos ao sistema de destino. Embora o ZFS possa lidar comalgumas situações em que apenas uma parte dos dispositivos esteja disponível, todos osdispositivos dentro do pool devem ser movidos entre os sistemas. Os dispositivos não têmnecessariamente que ser anexados com o mesmo nome do dispositivo. O ZFS detecta quaisquerdispositivos movidos ou renomeados e ajusta a configuração adequadamente. Para descobrirpools disponíveis, execute o comando zpool import sem opções. Por exemplo:

# zpool import

pool: tank

id: 3778921145927357706

state: ONLINE

action: The pool can be imported using its name or numeric identifier.

config:

tank ONLINE

mirror ONLINE

Migrando pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 129

Page 130: Guia de amdiminstracao do zfs solaris

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 houver vários poolsdisponíveis para importação com o mesmo nome, você pode usar o identificador numéricopara diferenciá-los.

Da mesma forma que o comando zpool status, o comando zpool import se refere a umartigo informativo disponível na Web com as informações mais atualizadas em relação aosprocedimentos de correção de um problema que esteja impedindo um pool de ser importado.Neste caso, o usuário pode forçar o pool a ser importado. No entanto, a importação de um poolque esteja atualmente em uso por outro sistema em uma rede de armazenamento pode resultarna corrupção de dados e em avisos graves, uma vez que ambos os sistemas tentam gravar nomesmo armazenamento. Se alguns dispositivos não estiverem disponíveis no pool, mas houverredundância suficiente disponível para obter um pool utilizável, o pool aparecerá no estadoDEGRADED. Por exemplo:

# zpool import

pool: tank

id: 3778921145927357706

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:

tank DEGRADED

mirror DEGRADED

c1t0d0 UNAVAIL cannot open

c1t1d0 ONLINE

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

# zpool import

pool: dozer

id: 12090808386336829175

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:

raidz FAULTED

Migrando pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008130

Page 131: Guia de amdiminstracao do zfs solaris

c1t0d0 ONLINE

c1t1d0 FAULTED

c1t2d0 ONLINE

c1t3d0 FAULTED

Neste exemplo, dois discos de um dispositivo virtual RAID-Z estão ausentes, o que significa quenã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 sabequais eram os outros dispositivos que faziam parte do pool, embora o ZFS relate o máximo deinformações possíveis sobre a situação. Por exemplo:

# zpool import

pool: dozer

id: 12090808386336829175

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

raidz 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.

Localizando pools de armazenamento do ZFS a partirde diretórios alternativosPor padrão, o comando zpool import procura apenas dispositivos dentro do diretório/dev/dsk. Se houver dispositivos em outro diretório, ou se você estiver usando pools apoiadospor arquivos, será necessário usar a opção -d para pesquisar diferentes diretórios. Por exemplo:

# zpool create dozer mirror /file/a /file/b

# zpool export dozer

# zpool import -d /file

pool: dozer

id: 10952414725867935582

state: ONLINE

action: The pool can be imported using its name or numeric identifier.

config:

Migrando pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 131

Page 132: Guia de amdiminstracao do zfs solaris

dozer ONLINE

mirror ONLINE

/file/a ONLINE

/file/b ONLINE

# zpool import -d /file dozer

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

Importando pools de armazenamento do ZFSUma vez identificado um pool para importação, você pode importá-lo especificando o nome dopool ou o identificador numérico como um argumento para o comando zpool import. Porexemplo:

# zpool import tank

Se vários pools disponíveis tiverem o mesmo nome, especifique o pool que será importandousando 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 opool com outro nome. Por exemplo:

# zpool import dozer zeepool

Migrando pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008132

Page 133: Guia de amdiminstracao do zfs solaris

Este comando importa o pool exportado dozer usando o novo nome zeepool. Se o pool nãotiver sido exportado corretamente, o ZFS precisará do sinalizador -f para impedir que osusuá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. Paraobter mais informações sobre pools raiz alternativos, consulte “Usando pools de raiz alternativado ZFS” na página 239.

Recuperando pools de armazenamento destruídos doZFSO comando zpool import -D pode ser usado para recuperar um pool de armazenamentodestruído. Por exemplo:

# zpool destroy tank

# zpool import -D

pool: tank

id: 3778921145927357706

state: ONLINE (DESTROYED)

action: The pool can be imported using its name or numeric identifier. The

pool was destroyed, but can be imported using the ’-Df’ flags.

config:

tank ONLINE

mirror ONLINE

c1t0d0 ONLINE

c1t1d0 ONLINE

Na saída zpool import acima, você pode identificar este pool como o pool destruído por causadas seguintes informações de estado:

state: ONLINE (DESTROYED)

Para recuperar o pool destruído, emita o comando zpool import - D novamente com o pool aser recuperado e a opção -f. Por exemplo:

# zpool import -Df tank

# zpool status tank

pool: tank

Migrando pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 133

Page 134: Guia de amdiminstracao do zfs solaris

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t0d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

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 de qualquer forma. Neste caso, importe o pool danificado e, emseguida, tente corrigir a falha do dispositivo. Por exemplo:

# zpool destroy dozer

# zpool import -D

pool: dozer

id:

state: DEGRADED (DESTROYED)

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. The

pool was destroyed, but can be imported using the ’-Df’ flags.

see: http://www.sun.com/msg/ZFS-8000-2Q

config:

dozer DEGRADED

raidz ONLINE

c1t0d0 ONLINE

c1t1d0 ONLINE

c1t2d0 UNAVAIL cannot open

c1t3d0 ONLINE

# 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-D3

scrub: resilver completed after 0h0m with 0 errors on Thu Aug 28 10:01:48 2008

config:

NAME STATE READ WRITE CKSUM

dozer DEGRADED 0 0 0

Migrando pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008134

Page 135: Guia de amdiminstracao do zfs solaris

raidz ONLINE 0 0 0

c1t0d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

c1t2d0 UNAVAIL 0 0 0 cannot open

c1t3d0 ONLINE 0 0 0

errors: No known data errors

# zpool online dozer c1t2d0

Bringing device c1t2d0 online

# zpool status -x

all pools are healthy

Atualizando pools de armazenamento do ZFSSe os seus pools de armazenamento do ZFS forem de uma versão anterior do Solaris, como oSolaris 10 versão 6/06, você poderá atualizar os pools com o comando zpool upgrade para tirarproveito dos recursos de pool da versão 11/06 do Solaris 10. Além disso, o comando zpool

status foi modificado para notificar você quando os pools estão executando versões maisantigas. Por exemplo:

# zpool status

pool: test

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

test ONLINE 0 0 0

c1t27d0 ONLINE 0 0 0

errors: No known data errors

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

# zpool upgrade -v

This system is currently running ZFS version 3.

The following versions are supported:

VER DESCRIPTION

Migrando pools de armazenamento do ZFS

Capítulo 5 • Gerenciando pools de armazenamento do ZFS 135

Page 136: Guia de amdiminstracao do zfs solaris

--- --------------------------------------------------------

1 Initial ZFS version

2 Ditto blocks (replicated metadata)

3 Hot spares and double parity RAID-Z

For more information on a particular version, including supported releases, see:

http://www.opensolaris.org/os/community/zfs/version/N

Where ’N’ is the version number.

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

# zpool upgrade -a

Observação – Se atualizar os pools para a versão mais recente, eles não estarão acessíveis nossistemas que executarem versões mais antigas do ZFS.

Migrando pools de armazenamento do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008136

Page 137: Guia de amdiminstracao do zfs solaris

Gerenciando sistemas de arquivos ZFS

Este capítulo oferece informações detalhas sobre o gerenciamento de sistemas de arquivos ZFSSolaris TM. Conceitos como layout hierárquico de sistema de arquivos, herança de propriedade,gerenciamento de ponto de montagem automático e interações de compartilhamento estãoincluídos neste capítulo.

Um sistema de arquivos ZFS está construído sobre um pool de armazenamento. Os sistemas dearquivos podem ser criados e destruídos dinamicamente sem a necessidade de alocar ouformatar espaços subjacentes. Uma vez que os sistemas de arquivos são muito leves, e uma vezque são o ponto central da administração no ZFS, é provável que você crie vários deles.

Os sistemas de arquivos ZFS são administrados com o uso do comando zfs. O comando zfs

oferece um conjunto de subcomandos que realizam operações específicas em sistemas dearquivos. Este capítulo descreve estes subcomandos detalhadamente. Instantâneos, volumes eclones também são gerenciados com esses comandos, porém, neste capítulo, estes recursos sãotratados brevemente. Para obter informações detalhadas sobre instantâneos e clones, consulte oCapítulo 7, “Trabalhando com instantâneos e clones do ZFS”. Para obter informaçõesdetalhadas sobre volumes emulados, consulte “Volumes ZFS” na página 231.

Observação – O termo conjunto de dados é usado neste capítulo como um termo genérico parafazer referência a um sistema de arquivos, instantâneo, clone ou volume.

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

■ “Criando e destruindo sistemas de arquivos ZFS” na página 138■ “Introduzindo as propriedades do ZFS” na página 141■ “Consultando informações sobre o sistema de arquivos ZFS” na página 153■ “Gerenciando propriedades do ZFS” na página 155■ “Montando e compartilhando sistemas de arquivos ZFS” na página 161■ “Cotas e reservas do ZFS” na página 167■ “Enviando e recebendo dados do ZFS” na página 180

6C A P Í T U L O 6

137

Page 138: Guia de amdiminstracao do zfs solaris

Criando e destruindo sistemas de arquivos ZFSOs sistemas de arquivos ZFS podem ser criados e destruídos com os comandos zfs create ezfs destroy.

■ “Criando um sistema de arquivos ZFS” na página 138■ “Destruindo um sistema de arquivos ZFS” na página 139■ “Renomeando um sistema de arquivos ZFS” na página 140

Criando um sistema de arquivos ZFSOs sistemas de arquivos ZFS são criados usando o comando zfs create. O subcomandocreate apresenta um único argumento: o nome do sistema de arquivos a ser criado. O nome dosistema de arquivos é especificado como um nome de caminho que começa com o nome dopool:

nome-do-pool/[nome-do-sistema-de-arquivos/]nome-do-sistema-de-arquivos

O nome do pool e os nomes iniciais do sistema de arquivos no caminho identificam o local noqual o novo sistema de arquivos será criado na hierarquia. Todos os nomes intermediários dosistema de arquivos já devem existir no pool. O último nome do caminho identifica o nome dosistema de arquivos que será criado. O nome do sistema de arquivos deve estar de acordo comas convenções de nomeação definidas em “Requisitos para nomeação de componentes do ZFS”na página 39.

No exemplo abaixo, um sistema de arquivos denominado bonwick é criado no sistema dearquivos tank/home .

# zfs create tank/home/bonwick

O ZFS monta automaticamente o sistema de arquivos recém-criado se a criação de tal sistemativer sido bem-sucedida. Por padrão, os sistemas de arquivos são montados como /conjunto dedados, usando o caminho fornecido pelo nome do sistema de arquivos no subcomandocreate. Neste exemplo, o sistema de arquivos bonwick recém-criado está em/tank/home/bonwick. Para obter mais informações sobre os pontos de montagem gerenciadosautomaticamente, consulte “Gerenciando pontos de montagem do ZFS” na página 161.

Para obter mais informações sobre o comando zfs create , consulte zfs(1M).

Você pode definir as propriedades do sistema de arquivos quando o mesmo é criado.

No exemplo abaixo, um ponto de montagem de /export/zfs é especificado e criado para osistema de arquivos tank/home.

# zfs create -o mountpoint=/export/zfs tank/home

Criando e destruindo sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008138

Page 139: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre propriedades do sistema de arquivos, consulte“Introduzindo as propriedades do ZFS” na página 141.

Destruindo um sistema de arquivos ZFSPara destruir um sistema de arquivos ZFS, use o comando zfs destroy. O sistema de arquivosdestruído é desmontado e descompartilhado automaticamente. Para obter mais informaçõessobre montagens ou compartilhamentos gerenciados automaticamente, consulte “Pontos demontagem automáticos” na página 162

No exemplo abaixo, o sistema de arquivos tabriz é destruído.

# zfs destroy tank/home/tabriz

Cuidado – Nenhum aviso de confirmação é exibido com o subcomando destroy. Use-o comextrema precaução.

Se o sistema de arquivos que será destruído está ocupado e não pode ser desmontado, ocomando zfs destroy falha. Para destruir um sistema de arquivos ativo, use a opção -f. Useesta opção com cuidado já que ela pode desmontar e destruir sistemas de arquivos ativos,provocando comportamentos inesperados no aplicativo.

# zfs destroy tank/home/ahrens

cannot unmount ’tank/home/ahrens’: Device busy

# zfs destroy -f tank/home/ahrens

O comando zfs destroy também falha se um sistema de arquivos possuir filhos. Para destruirrepetidamente um sistema de arquivos e todos os seus descendentes, use a opção -r. Observeque uma destruição repetitiva também destrói instantâneos, por isso use esta opção comcuidado.

# zfs destroy tank/ws

cannot destroy ’tank/ws’: filesystem has children

use ’-r’ to destroy the following datasets:

tank/ws/billm

tank/ws/bonwick

tank/ws/maybee

# zfs destroy -r tank/ws

Se o sistema de arquivos a ser destruído tiver dependentes indiretos, mesmo o comando dedestruição repetitiva descrito acima falha. Para forçar a destruição de todos os dependentes,incluindo os sistemas de arquivos clonados fora da hierarquia, deve ser usada a opção -R. Useeste opção com muito cuidado.

Criando e destruindo sistemas de arquivos ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 139

Page 140: Guia de amdiminstracao do zfs solaris

# zfs destroy -r tank/home/schrock

cannot destroy ’tank/home/schrock’: filesystem has dependent clones

use ’-R’ to destroy the following datasets:

tank/clones/schrock-clone

# zfs destroy -R tank/home/schrock

Cuidado – Nenhum aviso de confirmação é exibido com as opções -f, - r ou -R, por isso useestas opções com precaução.

Para obter mais informações sobre instantâneos e clones, consulte o Capítulo 7, “Trabalhandocom instantâneos e clones do ZFS”.

Renomeando um sistema de arquivos ZFSOs sistemas de arquivos podem ser renomeados com o uso do comando zfs rename. Com osubcomando rename é possível realizar as seguintes operações:■ Alterar o nome de um sistema de arquivos■ Realocar o sistema de arquivos em um novo local dentro da hierarquia do ZFS■ Alterar o nome de um sistema de arquivos e realocá-lo com a hierarquia do ZFS

O exemplo abaixo usa o subcomando rename para fazer uma renomeação simples de umsistema de arquivos:

# zfs rename tank/home/kustarz tank/home/kustarz_old

Este exemplo renomeia o sistema de arquivos kustarz para kustarz_old.

O exemplo abaixo mostra como usar o zfs rename para realocar um sistema de arquivos.

# zfs rename tank/home/maybee tank/ws/maybee

Neste exemplo, o sistema de arquivos maybee é realocado de tank/home para tank/ws. Quandoum sistema de arquivos é realocado por meio de renomeação, o novo local deve estar dentro domesmo pool e deve ter espaço suficiente para conter este novo sistema de arquivos. Se o novolocal não tiver espaço suficiente, possivelmente por haver ultrapassado sua cota, a renomeaçãofalhará.

Para obter mais detalhes sobre as cotas, consulte “Cotas e reservas do ZFS” na página 167.

A operação de renomeação tenta uma seqüência de desmontagem/remontagem no sistema dearquivos e nos sistemas de arquivos descendentes. A renomeação falha se a operação não puderdesmontar um sistema de arquivos ativo. Se ocorrer este problema, será necessário forçar adesmontagem do sistema de arquivos.

Criando e destruindo sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008140

Page 141: Guia de amdiminstracao do zfs solaris

Para obter informações sobre a renomeação de instantâneos, consulte “Renomeandoinstantâneos do ZFS” na página 175.

Introduzindo as propriedades do ZFSAs propriedades são o mecanismo principal usado para controlar o comportamento de sistemasde arquivos, volumes, instantâneos e clones. A menos que fique estabelecido de outra forma, aspropriedades definidas na seção são válidas para todos os tipos de conjunto de dados.

■ “Propriedades nativas somente leitura do ZFS” na página 148■ “Propriedades nativas definíveis do ZFS” na página 149■ “Propriedades de usuário do ZFS” na página 152

As propriedades estão dividas em dois tipos: propriedades nativas e propriedades definidas pelousuário. As propriedades nativas exportam estatísticas internas ou controlam o sistema dearquivos ZFS. Além disso, as propriedades nativas ou são definíveis ou somente leitura. Aspropriedades de usuário não afetam o comportamento do ZFS, mas podem ser usadas paraanotar conjuntos de dados de forma significativa no ambiente. Para obter mais informaçõessobre as propriedades de usuário, consulte “Propriedades de usuário do ZFS” na página 152.

A maioria das propriedades definíveis também é herdável. Uma propriedade herdável é umapropriedade que, quando definida em um pai, é propagada para todos os seus descendentes.

Todas as propriedades herdáveis têm uma origem associada. A origem indica como umapropriedade foi obtida. A origem de uma propriedade pode ter os seguintes valores:

local

Uma origem local indica que a propriedade foi definida explicitamente no conjunto dedados usando o comando zfs set conforme descrito em “Definindo propriedades do ZFS”na página 156.

inherited from nome-do-conjunto-de-dadosO valor de inherited from nome-do-conjunto-de-dados significa que a propriedade foiherdada do antepassado nomeado.

default

O valor de default significa que a configuração da propriedade não foi herdada ou definidalocalmente. Esta origem é conseqüência de nenhum antepassado apresentar a propriedadecomo origem local.

A tabela seguinte identifica as propriedades nativas somente leitura e definíveis dos sistema dearquivos ZFS. As propriedades nativas somente leitura são identificadas como tal. Todas asoutras propriedades nativas listadas nesta tabela são definíveis. Para obter informações sobre aspropriedades de usuário, consulte “Propriedades de usuário do ZFS” na página 152.

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 141

Page 142: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS

Nome dapropriedade Tipo Valor padrão Descrição

aclinherit Seqüência secure Controla como as entradas ACL são herdadas quando osarquivos e diretórios são criados. Os valores são discard,noallow, secure e passthrough. Para obter uma descriçãodestes valores, consulte “Modos de propriedade da ACL”na página 193.

aclmode Seqüência groupmask Controla como uma entrada ACL é modificada durante umaoperação chmod. Os valores são discard, groupmask epassthrough. Para obter uma descrição destes valores,consulte “Modos de propriedade da ACL” na página 193.

atime Booleano on Controla se o tempo de acesso dos arquivos é atualizadoquando eles são lidos. A desativação desta propriedade evita aprodução de tráfego de gravação durante a leitura de arquivose pode proporcionar melhoras significativas no desempenho,embora possa confundir utilitários de correio e outrosutilitários semelhantes.

available Número N/D Propriedade somente leitura que identifica a quantidade deespaço disponível no conjunto de dados e todos os seus filhos,mas não assume nenhuma outra atividade no pool. Uma vezque o espaço é compartilhado dentro de um pool, o espaçodisponível pode ser limitado por vários fatores, inclusivetamanho físico do pool, cotas, reservas ou outros conjuntos dedados dentro do pool.

O nome de coluna abreviado, avail, também pode fazerreferência a esta propriedade.

Para obter informações sobre contagem de espaço, consulte“Contagem de espaço do ZFS” na página 50.

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008142

Page 143: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

canmount Booleano on Controla se determinado sistema de arquivos pode sermontado com o comando zfs mount. Esta propriedade podeser definida em qualquer sistema de arquivos e a propriedadeem si não pode ser herdada. No entanto, quando estapropriedade estiver definida como off , um ponto demontagem pode ser herdado pelos sistemas de arquivosdescendentes, mas o sistema de arquivos em si nunca émontado.

Quando a opção noauto estiver definida, um conjunto dedados pode ser montado e desmontado apenas explicitamente.O conjunto de dados não é montado automaticamente ao sercriado ou importado, e também não é montado pelo comandozfs mount- a nem desmontado pelo comando zfs

unmount-a.

Para obter mais informações, consulte “A propriedadecanmount” na página 150.

soma de

verificação

Seqüência on Controla a soma de verificação usada para verificar aintegridade dos dados. O valor padrão é on, que selecionaautomaticamente um algoritmo apropriado, atualmentefletcher2. Os valores são on, off, fletcher2 , fletcher4 esha256. O valor de off desativa a verificação da integridadedos dados do usuário. Não se recomenda o valor off.

compression Seqüência off Ativa ou desativa a compactação deste conjunto de dados. Osvalores são on, off e lzjb, gzip ou gzip-N. Nesse momento,definir esta propriedade como lzjb, gzip ou gzip- N tem omesmo efeito que defini-la como on. O valor padrão é off. Aativação da compactação em um sistema de arquivos comdados existentes compacta somente os novos dados. Os dadosexistentes permanecem descompactados.

O nome de coluna abreviado, compress, também pode fazerreferência a esta propriedade.

compressratio Número N/D Propriedade somente leitura que identifica a taxa decompactação atingida deste conjunto de dados, expressa comoum multiplicador. A compactação pode ser ativadaexecutando zfs set compression=on conjunto-de-dados.

Calculado a partir do tamanho lógico de todos os arquivos e daquantidade de dados físicos referenciados. O uso dapropriedade compression proporciona economias explícitas.

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 143

Page 144: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

copies Número 1 Define o número de cópias de dados do usuário por sistema dearquivos. Os valores disponíveis são 1, 2 ou 3. Essas cópias sãoadicionais a qualquer redundância de nível de pool. O espaçousado por várias cópias de dados do usuário é cobrado até oarquivo, conjunto de dados e contagens correspondentescontra cotas e reservas. Além disso, a propriedade used éatualizada quando várias cópias são ativadas. Leve emconsideração definir essa propriedade quando o sistema dearquivos for criado porque alterá-la em um sistema dearquivos existente afeta somente os dados recém-gravados.

creation Seqüência N/D Propriedade somente leitura que identifica a data e a hora emque este conjunto de dados foi criado.

devices Booleano on Controla a capacidade de abrir os arquivos de dispositivo nosistema de arquivos.

exec Booleano on Controla se os programas dentro deste sistema de arquivostêm permissão para serem executados. Também, quandodefinido como off, as chamadas de mmap(2) com PROT_EXEC

não são permitidas.

mounted booleano N/D Propriedade somente leitura que indica se o sistema dearquivos, clone ou instantâneo estão atualmente montados.Esta propriedade não se aplica aos volumes. O valor pode sersim ou não.

mountpoint Seqüência N/D Controla o ponto de montagem usado neste sistema dearquivos. Quando a propriedade mountpoint de um sistemade arquivos é alterada, o sistema de arquivos e os filhos queherdam o ponto de montagem são desmontados. Se o novovalor for legacy, então eles permanecem desmontados. Docontrário, serão remontados automaticamente no novo localse a propriedade anterior era legacy ou none ou se forammontados antes de a propriedade ter sido alterada. Além disso,quaisquer sistemas de arquivos compartilhados serãodescompartilhados e compartilhados no novo local.

Para obter mais informações sobre o uso desta propriedade,consulte “Gerenciando pontos de montagem do ZFS”na página 161.

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008144

Page 145: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

origin Seqüência N/D Propriedade somente leitura para volumes ou sistemas dearquivos clonados que identifica o instantâneo a partir do qualo clone foi criado. A origem não pode ser destruída (mesmocom as opções -r ou -f) enquanto o clone existir.

Os sistemas de arquivos não clonados apresentam uma origemcom valor none (nenhum).

quota Número(ou none)

none Limita a quantidade de espaço que um conjunto de dados eseus descendentes podem usar. Esta propriedade impõe umlimite de disco rígido na quantidade de espaço usado,incluindo todo o espaço usado pelos descendentes, inclusive ossistemas de arquivos e os instantâneos. A definição de umacota em um descendente de um sistema de arquivos que jápossui uma cota, não substitui a cota do antepassado, mas simimpõe um limite adicional. As cotas não podem ser definidasem volumes, já que a propriedade volsize age como uma cotaimplícita.

Para obter informações sobre a definição de cotas, consulte“Definindo cotas em sistemas de arquivos ZFS” na página 168.

readonly Booleano off Controla se este conjunto de dados pode ser modificado.Quando definida como on, não é possível realizar modificaçõesno conjunto de dados.

O nome de coluna abreviado, rdonly, também pode fazerreferência a esta propriedade.

recordsize Número 128K Especifica um tamanho do bloco sugerido para os arquivos nosistema de arquivos.

O nome de coluna abreviado, recsize, também pode fazerreferência a esta propriedade. Para obter uma descriçãodetalhada, consulte “A propriedade recordsize”na página 151.

referenced Número N/D Propriedade somente leitura que identifica a quantidade dedados acessíveis por este conjunto de dados, que pode ou nãoser compartilhado com outros conjuntos de dados no pool.

Quando um instantâneo ou um clone é criado, inicialmentefaz referência à mesma quantidade de espaço do sistema dearquivos ou do instantâneo a partir do qual foi criado, poisseus conteúdos são idênticos.

O nome de coluna abreviado, refer, também pode fazerreferência a esta propriedade.

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 145

Page 146: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

refquota Número(ou none)

none Define a quantidade de espaço que um conjunto de dadospode consumir. Essa propriedade reforça um limite rígido naquantidade de espaço usado. Esse limite rígido não inclui oespaço usado pelos descendentes, como instantâneos e clones.

refreservation Número(ou none)

none Define a quantidade mínima de espaço que é garantido paraum conjunto de dados, não incluindo seus descendentes,como instantâneos e clones. Quando a quantidade de espaçousada está abaixo deste valor, o conjunto de dados é tratadocomo se estivesse usando a quantidade de espaço especificadapor refreservation. As reservas de refreservation sãocalculadas no espaço usado dos conjuntos de dados pai, econtadas em relação às cotas e reservas dos conjuntos de dadospai.

Se refreservation estiver definida, um instantâneo épermitido somente se houver espaço disponível no pool forada reserva para alojar o número atual de bytes indicados noconjunto de dados.

O nome de coluna abreviado, refrserv, também pode fazerreferência a esta propriedade.

reservation Número(ou none)

none A quantidade mínima de espaço garantida para um conjuntode dados e seus descendentes. Quando a quantidade de espaçousada está abaixo deste valor, o conjunto de dados é tratadocomo se estivesse usando a quantidade de espaço especificadapor sua reserva. As reservas são calculadas no espaço usadodos conjuntos de dados pai, e contadas em relação às cotas ereservas dos conjuntos de dados pai.

O nome de coluna abreviado, reserv, também pode fazerreferência a esta propriedade.

Para obter mais informações, consulte “Definindo reservas nossistemas de arquivos ZFS” na página 170.

setuid Booleano on Controla se o setuid bit é respeitado no sistema de arquivos.

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008146

Page 147: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

sharenfs Seqüência off Controla se o sistema de arquivos está disponível no NFS e queopções são usadas. Se for definido como on, o comando zfs

share é chamado sem opções. Do contrário, o comando zfs

share é chamado com opções equivalentes ao conteúdo destapropriedade. Se for definida como off, o sistema de arquivos égerenciado com os comandos share e unshare de legado ecom o arquivo dfstab.

Para obter mais informações sobre compartilhamento desistemas de arquivos ZFS, consulte “Compartilhando edescompartilhando sistemas de arquivos ZFS” na página 166.

snapdir Seqüência hidden Controla se o diretório .zfs está oculto ou visível na raiz dosistema de arquivos. Para obter mais informações sobre o usode instantâneos, consulte “Visão geral dos instantâneos doZFS” na página 173.

type Seqüência N/D Propriedade somente leitura que identifica o tipo de conjuntode dados como filesystem (sistema de arquivos ou clone),volume ou snapshot.

used Número N/D Propriedade somente leitura que identifica a quantidade deespaço usada pelo conjunto de dados e todos os seusdescendentes.

Para obter uma descrição detalhada, consulte “A propriedadeused” na página 148.

volsize Número N/D Para volumes, especifica o tamanho lógico do volume.

Para obter uma descrição detalhada, consulte “A propriedadevolsize” na página 151.

volblocksize Número 8 Kbytes Para volumes, especifica o tamanho do bloco do volume. Otamanho do bloco não pode ser alterado depois que o volumetiver sido gravado. Portanto, defina o tamanho do bloco nomomento da criação do volume. O tamanho padrão do blocopara volumes é de 8 Kbytes. Qualquer potência de 2, a partir de512 bytes até 128 kbytes é válida.

O nome abreviado de coluna, volblock, também pode fazerreferência a esta propriedade.

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 147

Page 148: Guia de amdiminstracao do zfs solaris

TABELA 6–1 Descrições de propriedades nativas do ZFS (Continuação)Nome dapropriedade Tipo Valor padrão Descrição

zoned Booleano N/D Indica se este conjunto de dados foi adicionado à região nãoglobal. Se esta propriedade estiver definida, o ponto demontagem não é respeitado na região global e o ZFS não podemontar tal sistema de arquivos quando solicitado. Quandouma região é instalada pela primeira vez, esta propriedade édefinida para todos os sistemas de arquivos adicionados.

Para obter mais informações sobre o uso do ZFS com regiõesinstaladas, consulte “Usando ZFS em um sistema Solaris comregiões instaladas” na página 234.

xattr Booleano on Indica se os atributos estendidos estão ativados ou desativadosneste sistema de arquivos. O valor padrão é on.

Propriedades nativas somente leitura do ZFSAs propriedades nativas somente leitura são propriedades que podem ser recuperadas, mas nãopodem ser definidas. As propriedades nativas somente leitura não são herdadas. Algumaspropriedades nativas são específicas para um determinado tipo de conjunto de dados. Nessescasos, um tipo específico de conjunto de dados é mencionado na descrição da Tabela 6–1.

As propriedades nativas somente leitura estão listadas aqui e são descritas na Tabela 6–1.

■ available

■ creation

■ mounted

■ origin

■ compressratio

■ referenced

■ type

■ used

Para obter informações detalhadas, consulte “A propriedade used” na página 148.

Para obter mais informações sobre a contagem de espaço, incluindo as propriedades used,referenced e available, consulte “Contagem de espaço do ZFS” na página 50.

A propriedade usedA quantidade de espaço usada por este conjunto de dados e todos os seus descendentes. Estevalor é verificado de acordo com a cota e a reserva do conjunto de dados. O espaço usado nãoinclui a reserva do conjunto de dados, mas leva em consideração a reserva dos conjuntos de

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008148

Page 149: Guia de amdiminstracao do zfs solaris

dados descendentes. A quantidade de espaço que um conjunto de dados consome do pai, assimcomo a quantidade de espaço que é liberada quando o conjunto de dados é destruídorepetidamente, é a maior de seu espaço usado e de sua reserva.

Quando os instantâneos são criados, seu espaço é inicialmente compartilhado entre oinstantâneo e o sistema de arquivos e possivelmente com os instantâneos anteriores. Conformeo sistema de arquivos se altera, o espaço previamente compartilhado torna-se exclusivo doinstantâneo e é incluído no espaço usado do instantâneo. O espaço usado por um instantâneorepresenta seus dados exclusivos. Adicionalmente, a exclusão de instantâneos pode aumentar aquantidade de espaço exclusivo de (e ser usada por) outros instantâneos. Para obter maisinformações sobre instantâneos e problemas de espaço, consulte “Comportamento por espaçoexcedido” na página 50.

A quantidade de espaço usada, disponível ou referenciada não leva em consideração asalterações pendentes. As alterações pendentes são consideradas em geral depois de algunssegundos. A realização de uma alteração no disco usando fsync(3c) ou O_SYNC, não garantenecessariamente que as informações sobre uso de espaço sejam atualizadas imediatamente.

Propriedades nativas definíveis do ZFSAs propriedades nativas definíveis são propriedades cujos valores podem ser recuperados ealterados. As propriedades nativas definíveis são definidas usando o comando zfs set,conforme descrito em “Definindo propriedades do ZFS” na página 156 ou usando o comandozfs create conforme descrito em “Criando um sistema de arquivos ZFS” na página 138. Comexceção das cotas e reservas, as propriedades nativas definíveis são herdadas. Para obter maisinformações sobre cotas e reservas, consulte “Cotas e reservas do ZFS” na página 167.

Algumas propriedades nativas definíveis são específicas para um determinado tipo de conjuntode dados. Nesses casos, um tipo específico de conjunto de dados é mencionado na descrição naTabela 6–1. Se não for especificamente mencionado, um propriedade se aplica a todos os tiposde conjunto de dados: sistemas de arquivos, volumes, clones e instantâneos.

As propriedades definíveis estão listadas aqui e são descritas na Tabela 6–1.■ aclinherit

Para obter uma descrição mais detalhada, consulte “Modos de propriedade da ACL”na página 193.

■ aclmode

Para obter uma descrição mais detalhada, consulte “Modos de propriedade da ACL”na página 193.

■ atime

■ canmount

■ soma de verificação

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 149

Page 150: Guia de amdiminstracao do zfs solaris

■ compression

■ copies

■ devices

■ exec

■ mountpoint

■ quota

■ readonly

■ recordsize

Para obter uma descrição detalhada, consulte “A propriedade recordsize” na página 151.■ refquota

■ refreservation

■ reservation

■ sharenfs

■ setuid

■ snapdir

■ volsize

Para obter uma descrição detalhada, consulte “A propriedade volsize” na página 151.■ volblocksize

■ zoned

A propriedade canmountSe esta propriedade for definida como off, o sistema de arquivos não pode ser montando usandoos comandos zfs mount ou zfs mount -a. Definir esta propriedade é semelhante a definir apropriedade mountpoint como none, exceto que o conjunto de dados ainda apresenta umapropriedade mountpoint normal que pode ser herdada. Por exemplo, é possível definir estapropriedade como off, estabelecer propriedades herdáveis para os sistemas de arquivosdescendentes, mas o sistema de arquivos em si nunca é montado nem pode ser acessado pelosusuários. Neste caso, o sistema de arquivos pai, com esta propriedade definida como off, servecomo um contêiner, de modo que é possível definir atributos no contêiner, mas o contêiner emsi nunca está acessível.

No exemplo abaixo, userpool é criado e a propriedade canmount é definida como desativada.Os pontos de montagem dos sistemas de arquivos descendentes de usuário são definidos comoum ponto de montagem comum, /export/home. As propriedades que estão definidas nosistema de arquivos pai são herdadas pelos sistemas de arquivos descendentes, mas o sistema dearquivos pai em si nunca é montado.

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008150

Page 151: Guia de amdiminstracao do zfs solaris

# zpool create userpool mirror c0t5d0 c1t6d0

# zfs set canmount=off userpool

# zfs set mountpoint=/export/home userpool

# zfs set compression=on userpool

# zfs create userpool/user1

# zfs create userpool/user2

# zfs list -r userpool

NAME USED AVAIL REFER MOUNTPOINT

userpool 140K 8.24G 24.5K /export/home

userpool/user1 24.5K 8.24G 24.5K /export/home/user1

userpool/user2 24.5K 8.24G 24.5K /export/home/user2

Se a propriedade canmount for definida como noauto, significa que o conjunto de dados podeser montado apenas explicitamente, não automaticamente. Esta definição é usada pelo softwarede atualização do Solaris de modo que somente os conjuntos de dados pertencentes aoambiente de inicialização (BE) ativo são montados no momento da inicialização.

A propriedade recordsizeEspecifica um tamanho do bloco sugerido para os arquivos no sistema de arquivos.

Esta propriedade é designada unicamente para uso com volumes de trabalho de banco de dadosque acessam arquivos em registros de tamanho fixo. O ZFS ajusta automaticamente ostamanhos do bloco de acordo com os algoritmos internos otimizados para padrões de acessotípicos. Para bancos de dados que criam arquivos muito grandes, mas que acessam os arquivosem pequenos blocos aleatórios, estes algoritmos podem ser subótimos. A especificação de umrecordsize maior ou igual ao tamanho de registro do banco de dados pode resultar emmelhoras significativas no desempenho. O uso desta propriedade para sistemas de arquivoscom fins gerais é totalmente desaconselhado e pode afetar negativamente o desempenho. Otamanho especificado deve ser uma potência de dois maior ou igual a 512 e menor ou igual a128 Kbytes. A alteração de recordsize do sistema de arquivos afeta somente os arquivoscriados posteriormente. Os arquivos existentes não são afetados.

O nome de coluna abreviado, recsize, também pode fazer referência a esta propriedade.

A propriedade volsizeConsiste no tamanho lógico do volume. Por padrão, a criação de um volume estabelece umareserva para a mesma quantidade. Quaisquer alterações do volsize se refletem em umaalteração equivalente na reserva. Estas verificações são usadas para evitar comportamentosinesperados para os usuários. Um volume que contém menos espaço do que ele exige poderesultar em um comportamento indefinido ou corrupção de dados, dependendo de como ovolume é usado. Estes efeitos também podem ocorrer quando o tamanho do volume é alteradoenquanto ele está em uso, particularmente quando o espaço é diminuído. Deve-se ter extremocuidado ao ajustar o tamanho do volume.

Introduzindo as propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 151

Page 152: Guia de amdiminstracao do zfs solaris

Embora não seja recomendável, você pode criar um volume esparso especificando o sinalizador-s para zfs create -V, ou alterando a reserva depois de o volume ter sido criado. Um volumeesparso é definido como um volume em que a reserva não é igual ao tamanho do volume. Emum volume esparso, as alterações para volsize não se refletem na reserva.

Para obter mais informações sobre o uso de volumes, consulte “Volumes ZFS” na página 231.

Propriedades de usuário do ZFSAlém das propriedades nativas padrão, o ZFS oferece suporte a propriedades arbitrárias dousuário. As propriedades de usuário não afetam o comportamento do ZFS, mas podem serusadas para anotar conjuntos de dados com informações significativas no ambiente.

Os nomes das propriedades do usuário devem estar de acordo com as seguintes características:■ Conter dois pontos (': ') para distinguir das propriedades nativas.■ Conter letras em minúscula, números e os seguintes sinais de pontuação: ':', '+','.', '_'.■ O número máximo de caracteres para o nome da propriedade do usuário é de 256

caracteres.

A convenção esperada é que o nome da propriedade esteja dividido nos dois componentesseguintes, mas que este espaço de nome não seja imposto pelo ZFS:

module:property

Ao fazer uso programático das propriedades do usuário, use um nome de domínio reverso DNSpara o componente módulo dos nomes da propriedade a fim de diminuir a possibilidade de quedois pacotes desenvolvidos independentemente usem o mesmo nome de propriedade para finsdiferentes. Os nomes de propriedade que começam com "com.sun." estão reservados para usoda Sun Microsystems.

Os valores das propriedades de usuário apresentam as seguintes características:■ As seqüências de caracteres são sempre herdadas e nunca são validadas.■ O valor máximo da propriedade de usuário é de 1024 caracteres.

Por exemplo:

# zfs set dept:users=finance userpool/user1

# zfs set dept:users=general userpool/user2

# zfs set dept:users=itops userpool/user3

Todos os comandos que operam em propriedades, tais como zfs list, zfs get, zfs set, etc.,podem ser usados para manipular propriedades nativas e de usuário.

Por exemplo:

Introduzindo as propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008152

Page 153: Guia de amdiminstracao do zfs solaris

zfs get -r dept:users userpool

NAME PROPERTY VALUE SOURCE

userpool dept:users all local

userpool/user1 dept:users finance local

userpool/user2 dept:users general local

userpool/user3 dept:users itops local

Para limpar uma propriedade de usuário, use o comando zfs inherit. Por exemplo:

# zfs inherit -r dept:users userpool

Se a propriedade não estiver definida em nenhum conjunto de dados pai, ela é totalmenteremovida.

Consultando informações sobre o sistema de arquivos ZFSO comando zfs list oferece um amplo mecanismo para exibição e consulta de informaçõessobre o conjunto de dados. Nesta seção, serão tratadas tanto as consultas básicas quantos asconsultas complexas.

Listando informações básicas do ZFSÉ possível listar as informações básicas do conjunto de dados usando o comando zfs list semopções. Este comando exibe os nomes de todos os conjuntos de dados do sistema, incluindo aspropriedades used, available, referenced e mountpoint. Para obter mais informações sobreessas propriedades, consulte “Introduzindo as propriedades do ZFS” na página 141.

Por exemplo:

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool 476K 16.5G 21K /pool

pool/clone 18K 16.5G 18K /pool/clone

pool/home 296K 16.5G 19K /pool/home

pool/home/marks 277K 16.5G 277K /pool/home/marks

pool/home/marks@snap 0 - 277K -

pool/test 18K 16.5G 18K /test

Também é possível usar este comando para exibir conjuntos de dados específicosproporcionando o nome do banco de dados na linha de comando. Adicionalmente, use a opção-r para exibir repetidamente todos os descendentes de tal conjunto de dados. Por exemplo:

# zfs list -r pool/home/marks

NAME USED AVAIL REFER MOUNTPOINT

pool/home/marks 277K 16.5G 277K /pool/home/marks

pool/home/marks@snap 0 - 277K -

Consultando informações sobre o sistema de arquivos ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 153

Page 154: Guia de amdiminstracao do zfs solaris

O comando zfs list pode ser usado com nomes de caminho absolutos para conjuntos dedados, instantâneos e volumes. Por exemplo:

# zfs list /pool/home/marks

NAME USED AVAIL REFER MOUNTPOINT

pool/home/marks 277K 16.5G 277K /pool/home/marks

O exemplo abaixo ilustra como exibir tank/home/chua e todos os seus conjuntos de dadosdescendentes.

# zfs list -r tank/home/chua

NAME USED AVAIL REFER MOUNTPOINT

tank/home/chua 26.0K 4.81G 10.0K /tank/home/chua

tank/home/chua/projects 16K 4.81G 9.0K /tank/home/chua/projects

tank/home/chua/projects/fs1 8K 4.81G 8K /tank/home/chua/projects/fs1

tank/home/chua/projects/fs2 8K 4.81G 8K /tank/home/chua/projects/fs2

Para obter informações adiiconais sobre o comando zfs list , consulte zfs(1M).

Criando consultas complexas de ZFSA saída de zfs list pode ser personalizada com o uso das opções -o, -f e -H.

É possível personalizar a saída do valor da propriedade usando a opção -o e uma lista separadapor vírgula das propriedades desejadas. Forneça qualquer propriedade de conjunto de dadoscomo um valor válido. Para obter uma lista de todas as propriedades de conjunto de dadossuportadas, consulte “Introduzindo as propriedades do ZFS” na página 141. Além daspropriedades definidas em tal lista, a lista da opção -o também pode conter a literal name a fimde indicar que a saída deve incluir o nome do conjunto de dados.

O exemplo abaixo usa zfs list para exibir o nome do conjunto de dados, juntamente com aspropriedades sharenfs e mountpoint .

# zfs list -o name,sharenfs,mountpoint

NAME SHARENFS MOUNTPOINT

tank off /tank

tank/home on /tank/home

tank/home/ahrens on /tank/home/ahrens

tank/home/bonwick on /tank/home/bonwick

tank/home/chua on /tank/home/chua

tank/home/eschrock on legacy

tank/home/moore on /tank/home/moore

tank/home/tabriz ro /tank/home/tabriz

A opção -t pode ser usada para especificar os tipos de conjuntos de dados a serem exibidos. Ostipos válidos estão descritos na tabela abaixo.

Consultando informações sobre o sistema de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008154

Page 155: Guia de amdiminstracao do zfs solaris

TABELA 6–2 Tipos de conjuntos de dados ZFS

Tipo Descrição

filesystem Sistemas de arquivos e clones

volume Volumes

instantâneo Instantâneos

As opções -t utilizam uma lista separada por vírgulas dos tipos de conjuntos de dados a seremexibidos. O exemplo abaixo usa simultaneamente as opções -t e - o para exibir o nome e apropriedade used em todos os sistemas de arquivos:

# zfs list -t filesystem -o name,used

NAME USED

pool 476K

pool/clone 18K

pool/home 296K

pool/home/marks 277K

pool/test 18K

A opção -H pode ser usada para omitir o cabeçalho zfs list da saída gerada. Com a opção -H,todos os espaços em branco são liberados como tabulações. Esta opção pode ser útil quandouma saída analisável é necessária, por exemplo, ao realizar script. O exemplo abaixo ilustra asaída gerada do uso do comando zfs list com a opção -H:

# zfs list -H -o name

pool

pool/clone

pool/home

pool/home/marks

pool/home/marks@snap

pool/test

Gerenciando propriedades do ZFSAs propriedades do conjunto de dados são gerenciadas através dos subcomandos set, inherite get do comando zfs.

■ “Definindo propriedades do ZFS” na página 156■ “Herdando propriedades do ZFS” na página 156■ “Consultando propriedades do ZFS” na página 157

Gerenciando propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 155

Page 156: Guia de amdiminstracao do zfs solaris

Definindo propriedades do ZFSO comando zfs set pode ser usado para modificar qualquer propriedade definível de conjuntode dados. Ou então, é possível usar o comando zfs create para definir as propriedades quandoo conjunto de dados é criado. Para obter uma lista de propriedades definíveis de conjunto dedados, consulte “Propriedades nativas definíveis do ZFS” na página 149. O comando zfs set

usa uma seqüência de valor/propriedade no formato propriedade=valor e um nome de conjuntode dados.

O exemplo abaixo define a propriedade atime como off para tank/home. Somente umpropriedade pode ser definida ou modificada durante cada chamada de zfs set.

# zfs set atime=off tank/home

Além disso, qualquer propriedade do sistema de arquivos pode ser definida quando o sistemade arquivos é criado. Por exemplo:

# zfs create -o atime=off tank/home

É possível especificar as propriedades numéricas usando os seguintes sufixos (em ordem deimportância): BKMGTPEZ. Todos estes sufixos podem ser seguidos de b opcional, indicandobytes, com exceção do sufixo B, que já indica bytes. As quatro chamadas seguintes de zfs setsão expressões numéricas equivalentes indicando que a propriedade quota será definida com ovalor de 50 Gbytes no sistema de arquivos tank/home/marks:

# zfs set quota=50G tank/home/marks

# zfs set quota=50g tank/home/marks

# zfs set quota=50GB tank/home/marks

# zfs set quota=50gb tank/home/marks

Os valores de propriedades não numéricas fazem a diferenciação entre maiúsculas e minúsculase devem ser em minúsculas, com exceção de mountpoint e sharenfs. Os valores destaspropriedades podem apresentar maiúsculas e minúsculas misturadas.

Para obter mais informações sobre o comando zfs set, consulte zfs(1M).

Herdando propriedades do ZFSTodas as propriedades definíveis, com exceção de cotas e reservas, herdam o valor do seu pai, amenos que uma cota ou reserva esteja explicitamente definida no filho. Se nenhum antepassadotiver um valor explícito definido para uma propriedade herdada, é usado o valor padrão para apropriedade. O comando zfs inherit pode ser usado para limpar uma definição depropriedade, fazendo conseqüentemente que a definição seja herdada do pai.

Gerenciando propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008156

Page 157: Guia de amdiminstracao do zfs solaris

O exemplo abaixo usa o comando zfs set para ativar a compactação do sistema de arquivostank/home/bonwick. Em seguida, o zfs inherit é usado para cancelar a definição dapropriedade compression, fazendo com que a propriedade herde a definição padrão de off. Ovalor padrão é usado porque nem home nem tank apresentam a propriedade compressiondefinida localmente. Se ambos tivessem a compactação ativada, o valor definido do antepassadomais imediato seria usado (home, neste exemplo).

# zfs set compression=on tank/home/bonwick

# zfs get -r compression tank

NAME PROPERTY VALUE SOURCE

tank compression off default

tank/home compression off default

tank/home/bonwick compression on local

# zfs inherit compression tank/home/bonwick

# zfs get -r compression tank

NAME PROPERTY VALUE SOURCE

tank compression off default

tank/home compression off default

tank/home/bonwick compression off default

O subcomando inherit é aplicado repetidamente quando a opção -r está especificada. Noexemplo abaixo, o comando faz com que o valor da propriedade compression seja herdada portank/home e pelos descendentes que possa ter.

# zfs inherit -r compression tank/home

Observação – Tenha em mente que o uso da opção -r limpa a definição da propriedade atual detodos os conjuntos de dados descendentes.

Para obter mais informações sobre o comando zfs, consulte zfs(1M).

Consultando propriedades do ZFSA forma mais simples de consultar os valores de uma propriedade é usando o comando zfs

list. Para obter mais informações, consulte “Listando informações básicas do ZFS”na página 153. No entanto, para consultas complexas e para script, use o comando zfs get parafornecer informações mais detalhadas em um formato personalizado.

O comando zfs get pode ser usado para recuperar qualquer propriedade de conjunto dedados. O exemplo abaixo ilustra como recuperar uma única propriedade em um conjunto dedados:

# zfs get checksum tank/ws

NAME PROPERTY VALUE SOURCE

tank/ws checksum on default

Gerenciando propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 157

Page 158: Guia de amdiminstracao do zfs solaris

A quarta coluna, SOURCE, indica onde o valor desta propriedade foi definido. A tabela abaixodefine o significado dos possíveis valores da origem.

TABELA 6–3 Possíveis valores de SOURCE (zfs get)

Valor de origem Descrição

default Esta propriedade nunca foi definida explicitamente para este conjuntode dados ou para qualquer um dos seus antepassados. O valor padrãodesta propriedade está sendo usado.

inherited from

nome-do-conjunto-de-dadosEste valor da propriedade está sendo herdado do pai conformeespecificado pelo nome-do-conjunto-de-dados .

local Este valor de propriedade foi explicitamente definido para esteconjunto de dados usando zfs set.

temporary Este valor da propriedade foi definido usando a opção -o de zfsmount e é válido somente para o tempo de duração da montagem. Paraobter mais informações sobre as propriedades do ponto de montagem,consulte “Usando propriedades de montagem temporárias”na página 164.

- (none) Esta propriedade é somente leitura. Seu valor é gerado pelo ZFS.

É possível usar a palavra-chave especial all para recuperar todas as propriedades do conjuntode dados. O exemplo abaixo usa a palavra-chave all para recuperar todas as propriedadesexistentes do conjunto de dados:

# zfs get all mpool

NAME PROPERTY VALUE SOURCE

mpool type filesystem -

mpool creation Fri Aug 22 14:24 2008 -

mpool used 6.41G -

mpool available 26.8G -

mpool referenced 20.5K -

mpool compressratio 1.00x -

mpool mounted yes -

mpool quota none default

mpool reservation none default

mpool recordsize 128K default

mpool mountpoint /mpool default

mpool sharenfs off default

mpool checksum on default

mpool compression off default

mpool atime on default

mpool devices on default

mpool exec on default

mpool setuid on default

Gerenciando propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008158

Page 159: Guia de amdiminstracao do zfs solaris

mpool readonly off default

mpool zoned off default

mpool snapdir hidden default

mpool aclmode groupmask default

mpool aclinherit restricted default

mpool canmount on default

mpool shareiscsi off default

mpool xattr on default

mpool copies 1 default

mpool version 3 -

mpool utf8only off -

mpool normalization none -

mpool casesensitivity sensitive -

mpool vscan off default

mpool nbmand off default

mpool sharesmb off default

mpool refquota none default

mpool refreservation none default

Observação – As propriedades casesensitivity, nbmand, normalization, sharemgrutf8only evscan estão definidas com um valor fixo e não são suportadas no Solaris 10.

A opção -s de zfs get permite especificar, por tipo de origem, o tipo de propriedades a exibir.Esta opção usa uma lista separada por vírgulas indicando os tipos de origem desejados. Somenteas propriedades com o tipo de origem especificado são exibidas. Os tipos de origem válidos sãolocal, default, inherited, temporary e none. O exemplo abaixo ilustra todas as propriedadesdefinidas localmente no pool.

# zfs get -s local all pool

NAME PROPERTY VALUE SOURCE

pool compression on local

Todas as opções acima podem ser combinadas com a opção -r para exibir repetidamente aspropriedades especificadas em todos os filhos do conjunto de dados especificado. No exemploabaixo, todas as propriedades temporárias de todos os conjuntos de dados dentro de tank sãoexibidas repetidamente:

# zfs get -r -s temporary all tank

NAME PROPERTY VALUE SOURCE

tank/home atime off temporary

tank/home/bonwick atime off temporary

tank/home/marks atime off temporary

Um recurso recente permite realizar consultas com o comando zfs get sem especificar umsistema de arquivos de destino, o que significa que ele opera em todos os conjuntos ou sistemasde arquivos. Por exemplo:

Gerenciando propriedades do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 159

Page 160: Guia de amdiminstracao do zfs solaris

# zfs get -s local all

tank/home atime off local

tank/home/bonwick atime off local

tank/home/marks quota 50G local

Para obter mais informações sobre o comando zfs get, consulte zfs(1M).

Consultando propriedades do ZFS em busca de scriptO comando zfs get oferece suporte às opções -H e - o, que estão destinadas a script. A opção-H indica que qualquer informação de cabeçalho deve ser omitida e que todos os espaços embranco sejam substituídos por tabulação. O espaço em branco uniforme leva em consideraçãoos dados facilmente analisáveis. É possível usar a opção -o para personalizar a saída. Esta opçãousa uma lista separada por vírgulas dos valores a serem liberados. Todas as propriedadesdefinidas em “Introduzindo as propriedades do ZFS” na página 141, juntamente com as literaisname, value, property e source podem ser oferecidas na lista de -o.

O exemplo abaixo ilustra como recuperar um único valor usando as opções -H e -o de zfs get.

# zfs get -H -o value compression tank/home

on

A opção -p relata valores numéricos como seus valores exatos. Por exemplo, 1 Mbyte seriarelatado como 1000000. Esta opção pode ser usada da seguinte forma:

# zfs get -H -o value -p used tank/home

182983742

É possível usar a opção -r juntamente com qualquer uma das opções acima para recuperarrepetidamente os valores solicitados para todos os descendentes. O exemplo abaixo usa asopções -r, -o e - H para recuperar o nome do conjunto de dados e o valor da propriedade usedde export/home e seus descendentes, ao mesmo tempo em que omite qualquer saída decabeçalho:

# zfs get -H -o name,value -r used export/home

export/home 5.57G

export/home/marks 1.43G

export/home/maybee 2.15G

Gerenciando propriedades do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008160

Page 161: Guia de amdiminstracao do zfs solaris

Montando e compartilhando sistemas de arquivos ZFSEsta seção descreve como os pontos de montagem e os sistemas de arquivos compartilhados sãogerenciados no ZFS.

■ “Gerenciando pontos de montagem do ZFS” na página 161■ “Montando sistemas de arquivos ZFS” na página 163■ “Usando propriedades de montagem temporárias” na página 164■ “Desmontando sistemas de arquivos” na página 165■ “Compartilhando e descompartilhando sistemas de arquivos ZFS” na página 166

Gerenciando pontos de montagem do ZFSPor padrão, todos os sistemas de arquivos ZFS são montados pelo ZFS na inicialização usando oserviço do SMF (Service Management Facility) svc://system/filesystem/local. Os sistemasde arquivos são montados em /caminho, em que caminho é o nome do sistema de arquivos.

É possível substituir o ponto de montagem padrão definindo a propriedade mountpoint paraespecificar o caminho usando o comando zfs set. O ZFS cria automaticamente este ponto demontagem, se necessário, e monta automaticamente este sistema de arquivos quando ocomando zfs mount -a é chamado, sem a necessidade de que o arquivo /etc/vfstab sejaeditado.

A propriedade mountpoint é herdada. Por exemplo, se pool/home apresenta a propriedademountpoint definida como /export/stuff, então pool/home/user herda/export/stuff/user para a propriedade mountpoint.

A propriedade mountpoint pode ser definida como none para evitar que o sistema de arquivosseja montado. Além disso, a propriedade canmount está disponível para determinar se umsistema de arquivos pode ser montado. Para obter mais informações sobre a propriedadecanmount, consulte “A propriedade canmount” na página 150.

Se desejado, os sistemas de arquivos também podem ser gerenciados explicitamente através dasinterfaces de montagem de legado definindo a propriedade mountpoint como legacy usandozfs set. Tal ação evita que o ZFS seja montado automaticamente e gerencie este sistema dearquivos. As ferramentas de legado, que incluem os comandos mount e umount, e o arquivo/etc/vfstab devem ser usados. Para obter mais informações sobre montagem de legado,consulte “Pontos de montagem de legado” na página 162.

Ao alterar as estratégias de gerenciamento do ponto de montagem, aplicam-se os seguintescomportamentos:

■ Comportamento de ponto de montagem automático■ Comportamento de ponto de montagem de legado

Montando e compartilhando sistemas de arquivos ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 161

Page 162: Guia de amdiminstracao do zfs solaris

Pontos de montagem automáticos■ Ao alterar de legacy ou none, o ZFS monta automaticamente o sistema de arquivos.■ Se o ZFS estiver atualmente gerenciando o sistema de arquivos, mas este estiver atualmente

desmontado e a propriedade mountpoint estiver alterada, o sistema de arquivos permanecedesmontado.

Também é possível definir o ponto de montagem padrão do conjunto de dados raiz nomomento da criação usando a opção -m do zpool create. Para obter mais informações sobrea criação de pools de armazenamento, consulte “Criando um pool de armazenamento do ZFS”na página 95.

Todo conjunto de dados cuja propriedade mountpoint não for legacy é gerenciado pelo ZFS.No exemplo abaixo, é criado um conjunto de dados cujo ponto de montagem éautomaticamente gerenciado pelo ZFS.

# zfs create pool/filesystem

# zfs get mountpoint pool/filesystem

NAME PROPERTY VALUE SOURCE

pool/filesystem mountpoint /pool/filesystem default

# zfs get mounted pool/filesystem

NAME PROPERTY VALUE SOURCE

pool/filesystem mounted yes -

Também é possível definir explicitamente a propriedade mountpoint conforme ilustrado noexemplo abaixo:

# zfs set mountpoint=/mnt pool/filesystem

# zfs get mountpoint pool/filesystem

NAME PROPERTY VALUE SOURCE

pool/filesystem mountpoint /mnt local

# zfs get mounted pool/filesystem

NAME PROPERTY VALUE SOURCE

pool/filesystem mounted yes -

Quando a propriedade mountpoint é alterada, o sistema de arquivos é desmontadoautomaticamente do ponto de montagem antigo e é montado novamente no novo ponto demontagem. Os diretórios do ponto de montagem são criados conforme necessário. Se o ZFSnão puder desmontar um sistema de arquivos devido à que tal sistema está ativo, um erro érelatado e é necessário realizar a desmontagem manual forçada.

Pontos de montagem de legadoÉ possível gerenciar sistemas de arquivos ZFS com ferramentas de legado definindo apropriedade mountpoint como legacy. Os sistemas de arquivos de legado devem sergerenciados através dos comandos mount e umount e do arquivo /etc/vfstab. O ZFS nãomonta automaticamente sistemas de arquivos de legado na inicialização, e os comandos mount e

Montando e compartilhando sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008162

Page 163: Guia de amdiminstracao do zfs solaris

umount do ZFS não funcionam em conjuntos de dados deste tipo. Os exemplos abaixo ilustramcomo configurar e gerenciar um conjunto de dados ZFS no modo de legado:

# zfs set mountpoint=legacy tank/home/eschrock

# mount -F zfs tank/home/eschrock /mnt

Além disso, você deve montá-los criando entradas no arquivo /etc/vfstab . Do contrário, oserviço system/filesystem/local entra no modo de manutenção quando o sistema seinicializar.

Para montar automaticamente um sistema de arquivos de legado na inicialização, você deveadicionar uma entrada ao arquivo /etc/vfstab. O exemplo abaixo ilustra como pode ser aentrada no arquivo /etc/vfstab:

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

#

tank/home/eschrock - /mnt zfs - yes -

Observe que as entradas device to fsck e fsck pass estão definidas como -. Esta sintaxe sedeve a que o comando fsck não se aplica a sistemas de arquivos ZFS. Para obter maisinformações em relação à integridade de dados e à ausência de necessidade do fsck no ZFS,consulte “Semânticas transacionais” na página 34.

Montando sistemas de arquivos ZFSO ZFS monta automaticamente os sistemas de arquivos quando os sistemas de arquivos sãocriados ou quando o sistema é inicializado. O uso do comando zfs mount é necessário somenteao alterar as opções de montagem ou ao montar e desmontar explicitamente.

O comando zfs mount sem argumentos mostra todos os sistemas de arquivos montadosatualmente que são gerenciados pelo ZFS. Os pontos de montagem de legado gerenciados nãosão exibidos. Por exemplo:

# zfs mount

tank /tank

tank/home /tank/home

tank/home/bonwick /tank/home/bonwick

tank/ws /tank/ws

A opção -a pode ser usada para montar todos os sistemas de arquivos ZFS gerenciados. Ossistemas de arquivos gerenciados de legado não são montados. Por exemplo:

# zfs mount -a

Montando e compartilhando sistemas de arquivos ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 163

Page 164: Guia de amdiminstracao do zfs solaris

Por padrão, o ZFS não permite montagem em cima de um diretório não vazio. Para forçar umamontagem em cima de um diretório não vazio, é necessário usar a opção -O. Por exemplo:

# zfs mount tank/home/lalt

cannot mount ’/export/home/lalt’: directory is not empty

use legacy mountpoint to allow this behavior, or use the -O flag

# zfs mount -O tank/home/lalt

Pontos de montagem de legado devem ser gerenciados através de ferramentas de legado. Umatentativa de usar ferramentas do ZFS resulta em erro. Por exemplo:

# zfs mount pool/home/billm

cannot mount ’pool/home/billm’: legacy mountpoint

use mount(1M) to mount this filesystem

# mount -F zfs tank/home/billm

Quando um sistema de arquivos é montado, ele usa um conjunto de opções de montagem combase nos valores de propriedade associados ao conjunto de dados. A correlação entrepropriedades e opções de montagem é a seguinte:

Propriedade Opções de montagem

devices devices/nodevices

exec exec/noexec

readonly ro/rw

setuid setuid/nosetuid

A opção de montagem nosuid é um alias para nodevices,nosetuid .

Usando propriedades de montagem temporáriasSe qualquer uma das opções acima são definidas explicitamente usando a opção -o com ocomando zfs mount, o valor de propriedade associado é substituído temporariamente. Estesvalores de propriedade são relatados como temporary pelo comando zfs get e retorna àsconfigurações originais quando o sistema de arquivos é desmontado. Se um valor depropriedade for alterado enquanto o conjunto de dados estiver sendo montado, a alteração teráefeito imediatamente, substituindo qualquer definição temporária.

No exemplo abaixo, a opção de montagem somente leitura é definida temporariamente nosistema de arquivos tank/home/perrin:

# zfs mount -o ro tank/home/perrin

Montando e compartilhando sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008164

Page 165: Guia de amdiminstracao do zfs solaris

Neste exemplo, pressupõe-se que o sistema de arquivos está desmontado. Para alterartemporariamente uma propriedade em um sistema de arquivos atualmente montado, énecessário usar a opção especial remount. No exemplo abaixo, a propriedade atime étemporariamente alterada para off para um sistema de arquivos atualmente montado:

# zfs mount -o remount,noatime tank/home/perrin

# zfs get atime tank/home/perrin

NAME PROPERTY VALUE SOURCE

tank/home/perrin atime off temporary

Para obter mais informações sobre o comando zfs mount, consulte zfs(1M).

Desmontando sistemas de arquivosÉ possível desmontar arquivos de sistemas com o uso do subcomando zfs unmount. Ocomando unmount pode requerer o ponto de montagem ou o nome do sistema de arquivoscomo argumentos.

No exemplo abaixo, um sistema de arquivos é desmontado pelo nome do sistema de arquivos:

# zfs unmount tank/home/tabriz

No exemplo abaixo, o sistema de arquivos é desmontado pelo ponto de montagem:

# zfs unmount /export/home/tabriz

O comando unmount falhará se o sistema de arquivos estiver ativo ou ocupado. Para forçar adesmontagem de um sistema de arquivos, você pode usar a opção -f. Tome cuidado ao forçara desmontagem de um sistema de arquivos se o conteúdo estiver em uso ativamente. Poderesultar em um comportamento imprevisível do aplicativo.

# zfs unmount tank/home/eschrock

cannot unmount ’/export/home/eschrock’: Device busy

# zfs unmount -f tank/home/eschrock

Para proporcionar compatibilidade com versões anteriores, o comando de legado unmount

pode ser usado para desmontar sistemas de arquivos ZFS. Por exemplo:

# umount /export/home/bob

Para obter mais informações sobre o comando zfs unmount, consulte zfs(1M).

Montando e compartilhando sistemas de arquivos ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 165

Page 166: Guia de amdiminstracao do zfs solaris

Compartilhando e descompartilhando sistemas dearquivos ZFSSemelhante aos pontos de montagem, o ZFS pode compartilhar automaticamente sistemas dearquivos com o uso da propriedade sharenfs. Usando este método, não é necessáriomodificar o arquivo /etc/dfs/dfstab quando o novo sistema de arquivos é adicionado. Apropriedade sharenfs é uma lista de opções separada por vírgulas para passar para o comandoshare. O valor especial on é alias para as opções de compartilhamento padrão, que sãopermissões de read/write para todos. O valor especial off indica que o sistema de arquivosnão é gerenciado por ZFS e pode ser compartilhado através de formas tradicionais, como oarquivo /etc/dfs/dfstab. Todos os sistemas de arquivos cuja propriedade sharenfs não éoff são compartilhados durante a inicialização.

Controlando a semântica de compartilhamentoPor padrão, todos os sistemas de arquivos são descompartilhados. Para compartilhar um novosistema de arquivos, use a sintaxe zfs set semelhante à seguinte:

# zfs set sharenfs=on tank/home/eschrock

A propriedade é herdada e os sistemas de arquivos são compartilhados automaticamente nacriação se a propriedade herdada não for off. Por exemplo:

# zfs set sharenfs=on tank/home

# zfs create tank/home/bricker

# zfs create tank/home/tabriz

# zfs set sharenfs=ro tank/home/tabriz

Tanto tank/home/bricker como tank/home/tabriz são inicialmente graváveiscompartilhados, porque herdam a propriedade sharenfs de tank/home. Depois de apropriedade ser definida para ro (somente leitura), tank/home/tabriz é somente leituracompartilhado, independentemente da propriedade sharenfs que estiver definida paratank/home.

Descompartilhando sistemas de arquivos ZFSEnquanto a maioria dos sistemas de arquivos é compartilhada e descompartilhadaautomaticamente durante a inicialização, a criação e a destruição, os sistemas de arquivos àsvezes têm que ser descompartilhados explicitamente. Para isso, use o comando zfs unshare.

Por exemplo:

# zfs unshare tank/home/tabriz

Montando e compartilhando sistemas de arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008166

Page 167: Guia de amdiminstracao do zfs solaris

Este comando descompartilha o sistema de arquivos tank/home/tabriz. Paradescompartilhar todos os sistemas de arquivos ZFS no sistema, é necessário usar a opção - a.

# zfs unshare -a

Compartilhando sistemas de arquivos ZFSNa maioria das vezes, o comportamento automático do ZFS, compartilhando na inicialização ecriação, é suficiente para a operação normal. Se, por algum motivo, você descompartilhar umsistema de arquivos, pode compartilhá-lo novamente com o uso do comando zfs share. Porexemplo:

# zfs share tank/home/tabriz

Você também pode compartilhar todos os sistemas de arquivos ZFS no sistema usando a opção- a.

# zfs share -a

Comportamento de compartilhamento de legadoSe a propriedade sharenfs estiver off, o ZFS não tentará compartilhar ou descompartilhar osistema de arquivos em momento algum. Esta configuração permite administrar através demeios tradicionais, como o arquivo /etc/dfs/dfstab.

Ao contrário do comando mount tradicional, os comandos share e unshare tradicionais aindapodem funcionar em sistemas de arquivos ZFS. Como resultado, é possível compartilharmanualmente um sistema de arquivos com opções que são diferentes das configurações dapropriedade sharenfs. Este modelo administrativo não é recomendável . Opte por gerenciarcompartilhamentos NFS totalmente através do ZFS ou totalmente através do arquivo/etc/dfs/dfstab. O modelo administrativo do ZFS foi concebido para ser mais simples emenos trabalhoso do que o modelo tradicional. No entanto, em alguns casos, você pode preferircontrolar o comportamento de compartilhamento do sistema de arquivos através do modelofamiliar.

Cotas e reservas do ZFSO ZFS oferece suporte a cotas e reservas no nível do sistema de arquivos. A propriedade quotapode ser usada para definir um limite na quantidade de espaço que um sistema de arquivospode usar. Além disso, a propriedade reservation pode ser usada para garantir quedeterminada quantidade de espaço esteja disponível para um sistema de arquivos. Ambas aspropriedades se aplicam ao conjunto de dados em que estão definidos e a todos os descendentesde tal conjunto de dados.

Cotas e reservas do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 167

Page 168: Guia de amdiminstracao do zfs solaris

Ou seja, se uma cota estiver definida no conjunto de dados tank/home, a quantidade total deespaço usado por tank/home e todos os seus descendentes não pode exceder a cota. Do mesmomodo, se ao tank/home é dado uma reserva, tank/home e todos os seus descendentes utilizarão talreserva. A quantidade de espaço usada por um conjunto de dados e todos os seus descendentes érelatada pela propriedade used.

Além das propriedades quota e reservation, as propriedades refquota e refreservationestão disponíveis para gerenciar o espaço dos sistemas de arquivos sem contar com o espaçoconsumido pelos descendentes, como instantâneos e clones.

Considere os pontos abaixo ao determinar que recursos de cotas e reservas podem melhorar ogerenciamento dos seus sistemas de arquivos:

■ As propriedades quota e reservation são apropriadas para o gerenciamento do espaçoconsumido pelos conjuntos de dados.

■ As propriedades refquota e refreservation são apropriadas para o gerenciamento doespaço consumido por conjuntos de dados e instantâneos.

■ A definição de refquota ou refreservation com um valor maior do que quota oureservation não causa nenhum efeito. Se definir as propriedades quota ou refquota, asoperações que tentam ultrapassar ambos os valores falham. É possível ultrapassar umaquota que seja maior que refquota. Se alguns blocos de instantâneos estiverem impuros,você pode realmente ultrapassar a quota antes de ultrapassar a refquota.

Para obter mais informações, consulte os exemplos abaixo.

Definindo cotas em sistemas de arquivos ZFSAs cotas do ZFS podem ser definidas e exibidas com os comandos zfs set e zfs get. Noexemplo abaixo, é definida uma cota de 10 Gbytes em tank/home/bonwick.

# zfs set quota=10G tank/home/bonwick

# zfs get quota tank/home/bonwick

NAME PROPERTY VALUE SOURCE

tank/home/bonwick quota 10.0G local

As cotas do ZFS também causam impacto na saída dos comandos zfs list e df. Por exemplo:

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

tank/home 16.5K 33.5G 8.50K /export/home

tank/home/bonwick 15.0K 10.0G 8.50K /export/home/bonwick

tank/home/bonwick/ws 6.50K 10.0G 8.50K /export/home/bonwick/ws

# df -h /export/home/bonwick

Filesystem size used avail capacity Mounted on

Cotas e reservas do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008168

Page 169: Guia de amdiminstracao do zfs solaris

tank/home/bonwick 10G 8K 10G 1% /export/home/bonwick

Observe que, embora tank/home tenha um espaço de 33,5 Gbytes disponível,tank/home/bonwick e tank/home/bonwick/ws têm apenas 10 Gbytes de espaço disponível,devido à cota em tank/home/bonwick.

Não é possível definir uma cota para uma quantidade menor do que a atualmente em uso porum conjunto de dados. Por exemplo:

# zfs set quota=10K tank/home/bonwick

cannot set quota for ’tank/home/bonwick’: size is less than current used or

reserved space

A propriedade refquota pode ser definida em um conjunto de dados que limita a quantidadede espaço que o conjunto de dados pode consumir. Esse limite rígido não inclui o espaçoconsumido pelos descendentes, como instantâneos e clones. Por exemplo:

# zfs set refquota=10g students/studentA

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

profs 106K 33.2G 18K /profs

students 57.7M 33.2G 19K /students

students/studentA 57.5M 9.94G 57.5M /students/studentA

# zfs snapshot students/studentA@today

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

profs 106K 33.2G 18K /profs

students 57.7M 33.2G 19K /students

students/studentA 57.5M 9.94G 57.5M /students/studentA

students/studentA@today 0 - 57.5M -

Para obter vantagem adicional, você pode ajustar outra cota em um conjunto de dados paraajudar a gerenciar o espaço consumido pelos instantâneos. Por exemplo:

# zfs set quota=20g students/studentA

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

profs 106K 33.2G 18K /profs

students 57.7M 33.2G 19K /students

students/studentA 57.5M 9.94G 57.5M /students/studentA

students/studentA@today 0 - 57.5M -

Neste caso, o studentA pode atingir o limite rígido do refquota (10 Gbytes) e remover osarquivos a serem recuperados mesmo se houver instantâneos.

No exemplo acima, a menor das duas cotas (10 Gbytes versus 20 Gbytes) é exibida na saída dezfs list. Para ver o valor de ambas as cotas, use o comando zfs get. Por exemplo:

Cotas e reservas do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 169

Page 170: Guia de amdiminstracao do zfs solaris

# zfs get refquota,quota students/studentA

NAME PROPERTY VALUE SOURCE

students/studentA refquota 10G local

students/studentA quota 20G local

Definindo reservas nos sistemas de arquivos ZFSUma reserva do ZFS é uma alocação de espaço do pool que tem a garantia de estar disponívelpara um conjunto de dados. Como tal, não é possível reservar espaço para um conjunto dedados, se esse espaço não estiver disponível atualmente no pool. A quantidade total de todas asreservas não consumidas não pode exceder a quantidade de espaço não usado no pool. Areservas do ZFS podem ser definidas e exibidas com os comandos zfs set e zfs get. Porexemplo:

# zfs set reservation=5G tank/home/moore

# zfs get reservation tank/home/moore

NAME PROPERTY VALUE SOURCE

tank/home/moore reservation 5.00G local

As reservas do ZFS podem afetar a saída do comando zfs list. Por exemplo:

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

tank/home 5.00G 33.5G 8.50K /export/home

tank/home/moore 15.0K 10.0G 8.50K /export/home/moore

Observe que tank/home está usando 5 Gbytes de espaço, embora a quantidade total de espaçoreferida por tank/home e seus descendentes seja menor do que 5 Gbytes. O espaço usado refleteo espaço reservado para tank/home/moore. As reservas são consideradas no espaço usado doconjunto de dados pai e são contadas em relação à cota, à reserva ou a ambas.

# zfs set quota=5G pool/filesystem

# zfs set reservation=10G pool/filesystem/user1

cannot set reservation for ’pool/filesystem/user1’: size is greater than

available space

Um conjunto de dados pode usar mais espaço do que sua reserva desde que o espaço estejadisponível no pool que não está reservado e o uso atual do conjunto de dados esteja abaixo desua cota. Um conjunto de dados não pode consumir o espaço reservado de outro conjunto dedados.

As reservas não são cumulativas. Ou seja, uma segunda chamada de zfs set para definir umareserva não adiciona sua reserva à reserva existente. Em vez disso, a segunda reserva substitui aprimeira reserva.

Cotas e reservas do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008170

Page 171: Guia de amdiminstracao do zfs solaris

# zfs set reservation=10G tank/home/moore

# zfs set reservation=5G tank/home/moore

# zfs get reservation tank/home/moore

NAME PROPERTY VALUE SOURCE

tank/home/moore reservation 5.00G local

Você pode definir uma refreservation para garantir o espaço de um conjunto de dados quenão inclui o espaço consumido por instantâneos e clones. As reservas de refreservation sãocalculadas no espaço usado dos conjuntos de dados pai, e contadas em relação às cotas ereservas dos conjuntos de dados pai. Por exemplo:

# zfs set refreservation=10g profs/prof1

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

profs 10.0G 23.2G 19K /profs

profs/prof1 10G 33.2G 18K /profs/prof1

Também é possível definir um reserva no mesmo conjunto de dados para garantir o espaço doconjunto de dados e o espaço do instantâneo. Por exemplo:

# zfs set reservation=20g profs/prof1

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

profs 20.0G 13.2G 19K /profs

profs/prof1 10G 33.2G 18K /profs/prof1

As reservas regulares são calculas no espaço usado do pai.

No exemplo acima, a menor das duas cotas (10 Gbytes versus 20 Gbytes) é exibida na saída dezfs list. Para ver o valor de ambas as cotas, use o comando zfs get. Por exemplo:

# zfs get reservation,refreserv profs/prof1

NAME PROPERTY VALUE SOURCE

profs/prof1 reservation 20G local

profs/prof1 refreservation 10G local

Se refreservation estiver definida, um instantâneo é permitido somente se houver espaçodisponível no pool fora da reserva para alojar o número atual de bytes indicados no conjunto dedados.

Cotas e reservas do ZFS

Capítulo 6 • Gerenciando sistemas de arquivos ZFS 171

Page 172: Guia de amdiminstracao do zfs solaris

172

Page 173: Guia de amdiminstracao do zfs solaris

Trabalhando com instantâneos e clones do ZFS

Este capítulo descreve como criar e gerenciar instantâneos e clones do ZFS. Também sãofornecidas informações sobre como salvar os instantâneos.

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

■ “Visão geral dos instantâneos do ZFS” na página 173■ “Criando e destruindo instantâneos do ZFS” na página 174■ “Exibindo e acessando instantâneos do ZFS” na página 176■ “Revertendo a um instantâneo do ZFS” na página 177■ “Visão geral dos clones do ZFS” na página 178■ “Criando um clone do ZFS” na página 178■ “Destruindo um clone do ZFS” na página 179■ “Enviando e recebendo dados do ZFS” na página 180

Visão geral dos instantâneos do ZFSUm instantâneo é uma cópia de somente leitura de um sistema de arquivos ou volume. Osinstantâneos podem ser criados quase instantaneamente e no início não utilizam espaçoadicional em disco dentro do pool. No entanto, à medida que os dados se alteram dentro doconjunto de dados ativo, o instantâneo passa a consumir espaço em disco devido às contínuasreferências aos dados antigos e impede conseqüentemente a liberação de espaço.

Os instantâneos do ZFS contam com os seguintes recursos:

■ Resistem a reinicializações do sistema.■ O número máximo de instantâneos é teoricamente 264.■ Não usam armazenamento de apoio separado. Os instantâneos utilizam espaço em disco

diretamente do mesmo pool de armazenamento que o sistema de arquivos do qual foramcriados.

7C A P Í T U L O 7

173

Page 174: Guia de amdiminstracao do zfs solaris

■ Os instantâneos recursivos são criados rapidamente como uma operação atômica. Osinstantâneos são criados juntos (todos de uma vez) ou simplesmente não são criados. Avantagem das operações atômicas de instantâneos é que os dados do instantâneo sãoretirados sempre em um ponto consistente do tempo, mesmo nos sistemas de arquivosdescendentes.

Os instantâneos de volumes não podem ser acessados diretamente, mas podem ser clonados,revertidos, ter um backup, e assim por diante. Para obter mais informações sobre o backup deum instantâneo do ZFS, consulte “Enviando e recebendo dados do ZFS” na página 180.

Criando e destruindo instantâneos do ZFSOs instantâneos são criados com o comando zfs snapshot, que apresenta o nome doinstantâneo a ser criado como seu único argumento. O nome do instantâneo é especificado daseguinte forma:

filesystem@snapnamevolume@snapname

O nome do instantâneo deve estar de acordo com as convenções de nomeação definidas em“Requisitos para nomeação de componentes do ZFS” na página 39.

No exemplo seguinte, é criado um instantâneo de tank/home/ahrens denominado friday.

# zfs snapshot tank/home/ahrens@friday

É possível criar instantâneos para todos os sistemas de arquivos descendentes com a opção- r. Por exemplo:

# zfs snapshot -r tank/home@now

# zfs list -t snapshot

NAME USED AVAIL REFER MOUNTPOINT

tank/home@now 0 - 29.5K -

tank/home/ahrens@now 0 - 2.15M -

tank/home/anne@now 0 - 1.89M -

tank/home/bob@now 0 - 1.89M -

tank/home/cindys@now 0 - 2.15M -

Os instantâneos não possuem propriedades que possam ser modificadas. E as propriedades doconjunto de dados também não podem ser aplicadas a um instantâneo.

# zfs set compression=on tank/home/ahrens@tuesday

cannot set compression property for ’tank/home/ahrens@tuesday’: snapshot

properties cannot be modified

Os instantâneos são destruídos com o comando zfs destroy. Por exemplo:

Visão geral dos instantâneos do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008174

Page 175: Guia de amdiminstracao do zfs solaris

# zfs destroy tank/home/ahrens@friday

Um conjunto de dados não pode ser destruído se existirem instantâneos deste conjunto dedados. Por exemplo:

# zfs destroy tank/home/ahrens

cannot destroy ’tank/home/ahrens’: filesystem has children

use ’-r’ to destroy the following datasets:

tank/home/ahrens@tuesday

tank/home/ahrens@wednesday

tank/home/ahrens@thursday

Além disso, se foram criados clones de um instantâneo, tais clones devem ser destruídos antesque o instantâneo seja destruído.

Para obter mais informações sobre o subcomando destroy, consulte “Destruindo um sistemade arquivos ZFS” na página 139.

Renomeando instantâneos do ZFSÉ possível renomear instantâneos, porém eles devem ser renomeados dentro do pool e doconjunto de dados do qual foram criados. Por exemplo:

# zfs rename tank/home/cindys@083006 tank/home/cindys@today

Além disso, a seguinte sintaxe de atalho oferece uma sintaxe de renomeação de instantâneoequivalente, segundo o exemplo acima.

# zfs rename tank/home/cindys@083006 today

A operação de renomeação de instantâneo a seguir não é suportada porque o pool de destino e onome do sistema de arquivos são diferentes do pool e do sistema de arquivos onde oinstantâneo foi criado.

# zfs rename tank/home/cindys@today pool/home/cindys@saturday

cannot rename to ’pool/home/cindys@today’: snapshots must be part of same

dataset

É possível renomear instantâneos recursivamente com o comando zfs rename - r. Porexemplo:

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 270K 16.5G 22K /users

users/home 76K 16.5G 22K /users/home

users/home@yesterday 0 - 22K -

users/home/markm 18K 16.5G 18K /users/home/markm

users/home/markm@yesterday 0 - 18K -

Visão geral dos instantâneos do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 175

Page 176: Guia de amdiminstracao do zfs solaris

users/home/marks 18K 16.5G 18K /users/home/marks

users/home/marks@yesterday 0 - 18K -

users/home/neil 18K 16.5G 18K /users/home/neil

users/home/neil@yesterday 0 - 18K -

# zfs rename -r users/home@yesterday @2daysago

# zfs list -r users/home

NAME USED AVAIL REFER MOUNTPOINT

users/home 76K 16.5G 22K /users/home

users/home@2daysago 0 - 22K -

users/home/markm 18K 16.5G 18K /users/home/markm

users/home/markm@2daysago 0 - 18K -

users/home/marks 18K 16.5G 18K /users/home/marks

users/home/marks@2daysago 0 - 18K -

users/home/neil 18K 16.5G 18K /users/home/neil

users/home/neil@2daysago 0 - 18K -

Exibindo e acessando instantâneos do ZFSOs instantâneos de sistemas de arquivos podem ser acessados no diretório .zfs/snapshot

dentro da raiz que contém o sistema de arquivos. Por exemplo, se tank/home/ahrens estivermontado em /home/ahrens, então os dados do instantâneo tank/home/ahrens@thursday

poderão ser acessados no diretório /home/ahrens/.zfs/snapshot/thursday .

# ls /tank/home/ahrens/.zfs/snapshot

tuesday wednesday thursday

Os instantâneos podem ser listados da seguinte forma:

# zfs list -t snapshot

NAME USED AVAIL REFER MOUNTPOINT

pool/home/anne@monday 0 - 780K -

pool/home/bob@monday 0 - 1.01M -

tank/home/ahrens@tuesday 8.50K - 780K -

tank/home/ahrens@wednesday 8.50K - 1.01M -

tank/home/ahrens@thursday 0 - 1.77M -

tank/home/cindys@today 8.50K - 524K -

Os instantâneos criados para um sistema de arquivos específico podem ser listados da seguinteforma:

# zfs list -r -t snapshot -o name,creation tank/home

NAME CREATION

tank/home@now Wed Aug 27 16:35 2008

tank/home/ahrens@tuesday Wed Aug 27 16:35 2008

tank/home/ahrens@wednesday Wed Aug 27 16:35 2008

tank/home/ahrens@thursday Wed Aug 27 16:36 2008

tank/home/cindys@now Wed Aug 27 16:37 2008

Visão geral dos instantâneos do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008176

Page 177: Guia de amdiminstracao do zfs solaris

Contagem de espaço do instantâneoQuando um instantâneo é criado, seu espaço é inicialmente compartilhado entre o instantâneoe o sistema de arquivos e possivelmente com os instantâneos anteriores. À medida que o sistemade arquivos se altera, o espaço previamente compartilhado torna-se exclusivo do instantâneo e éincluído na propriedade used do instantâneo. Além disso, a exclusão de instantâneos podeaumentar a quantidade de espaço exclusivo de (e conseqüentemente ser usado por) outrosinstantâneos.

A propriedade referenced de espaço do instantâneo é a mesma que o sistema de arquivos tinhano momento em que o instantâneo foi criado.

Revertendo a um instantâneo do ZFSO comando zfs rollback pode ser usado para descartar todas as alterações feitas a partir deum instantâneo específico. O sistema de arquivos volta ao estado que se encontrava nomomento em que o instantâneo foi realizado. Por padrão, o comando só pode reverter uminstantâneo ao instantâneo mais recente.

Para reverter a um instantâneo anterior, todos os instantâneos intermediários devem serdestruídos. Os instantâneos anteriores podem ser destruídos especificando a opção -r.

Se os instantâneos intermediários possuírem clones, a opção -R também deve ser especificadapara destruí-los.

Observação – Se o sistema de arquivos que deseja reverter estiver atualmente montado, você devedesmontá-lo e montá-lo novamente. Se o sistema de arquivos não puder ser desmontado, areversão falhará. A opção -f obriga o sistema de arquivos a ser desmontado, se necessário.

No exemplo abaixo, o sistema de arquivos tank/home/ahrens é revertido ao instantâneotuesday:

# zfs rollback tank/home/ahrens@tuesday

cannot rollback to ’tank/home/ahrens@tuesday’: more recent snapshots exist

use ’-r’ to force deletion of the following snapshots:

tank/home/ahrens@wednesday

tank/home/ahrens@thursday

# zfs rollback -r tank/home/ahrens@tuesday

No exemplo acima, os instantâneos wednesday e thursday são removidos porque você reverteupara o instantâneo tuesday.

# zfs list -r -t snapshot -o name,creation tank/home/ahrens

NAME CREATION

tank/home/ahrens@tuesday Wed Aug 27 16:35 2008

Visão geral dos instantâneos do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 177

Page 178: Guia de amdiminstracao do zfs solaris

Visão geral dos clones do ZFSUm clone é um volume ou um sistema de arquivos gravável cujo conteúdo inicial é o mesmo doconjunto de dados do qual foi criado. Da mesma forma que os instantâneos, a criação de clonesé quase instantânea e inicialmente não utiliza espaço adicional no disco. Além disso, você poderealizar o instantâneo de um clone.■ “Criando um clone do ZFS” na página 178■ “Destruindo um clone do ZFS” na página 179■ “Substituindo um sistema de arquivos ZFS por um clone do ZFS” na página 179

Os clones podem ser criados somente a partir de um instantâneo. Quando um instantâneo éclonado, cria-se uma dependência implícita entre o clone e o instantâneo. Mesmo que o clonetenha sido criado em qualquer parte da hierarquia do conjunto de dados, o instantâneo originalnão poderá ser destruído enquanto tal clone existir. A propriedade origin revela essadependência e o comando zfs destroy lista tais dependências, se existirem.

Os clones não herdam as propriedades do conjunto de dados do qual foram criados. Use oscomandos zfs get e zfs set para ver e alterar as propriedades de um conjunto de dadosclonado. Para obter mais informações sobre a configuração das propriedades do conjunto dedados do ZFS, consulte “Definindo propriedades do ZFS” na página 156.

O clone compartilha inicialmente todo o seu espaço em disco com o instantâneo original, poressa razão a sua propriedade used é inicialmente zero. O clone passa a utilizar mais espaço àmedida que sofre alterações. A propriedade used do instantâneo original não leva emconsideração o espaço em disco utilizado pelo clone.

Criando um clone do ZFSPara criar um clone, use o comando zfs clone, especificando o instantâneo a partir do qualcriar o clone e o nome do novo sistema de arquivos ou volume. O novo sistema de arquivos ouvolume pode ser colocado em qualquer parte da hierarquia do ZFS. O tipo do novo conjunto dedados (por exemplo, sistema de arquivos ou volume) é o mesmo do instantâneo a partir do qualo clone foi criado. É possível criar o clone de um sistema de arquivos em um pool diferentedaquele no qual se encontra o instantâneo do sistema de arquivos original.

No exemplo abaixo, é criado um novo clone denominado tank/home/ahrens/bug123 com omesmo conteúdo inicial do instantâneo tank/ws/gate@yesterday .

# zfs snapshot tank/ws/gate@yesterday

# zfs clone tank/ws/gate@yesterday tank/home/ahrens/bug123

No exemplo abaixo, a partir do instantâneo projects/newproject@today é criada, para umusuário temporário, uma área de trabalho como projects/teamA/tempuser. As propriedadessão, então, definidas na área de trabalho clonada.

Visão geral dos clones do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008178

Page 179: Guia de amdiminstracao do zfs solaris

# zfs snapshot projects/newproject@today

# zfs clone projects/newproject@today projects/teamA/tempuser

# zfs set sharenfs=on projects/teamA/tempuser

# zfs set quota=5G projects/teamA/tempuser

Destruindo um clone do ZFSOs clones do ZFS são eliminados com o comando zfs destroy. Por exemplo:

# zfs destroy tank/home/ahrens/bug123

Os clones devem ser destruídos antes da destruição dos instantâneos pais.

Substituindo um sistema de arquivos ZFS por umclone do ZFSO comando zfs promote pode ser usado para substituir um sistema de arquivos ZFS ativo porum clone de um sistema de arquivos. Este recurso facilita a habilidade de clonar e substituir ossistemas de arquivos para que o sistema de arquivos de origem torne-se o clone do sistema dearquivos especificado. Além disso, este recurso possibilita destruir o sistema de arquivos a partirdo qual o clone foi originalmente criado. Sem promover o clone, você não pode destruir umsistema de arquivos de origem de clones ativos. Para obter mais informações sobre a destruiçãode clones, consulte “Destruindo um clone do ZFS” na página 179.

No exemplo abaixo, o sistema de arquivos tank/test/productA é clonado e o sistema dearquivos clone, tank/test/productAbeta , torna-se o sistema de arquivostank/test/productA.

# zfs create tank/test

# zfs create tank/test/productA

# zfs snapshot tank/test/productA@today

# zfs clone tank/test/productA@today tank/test/productAbeta

# zfs list -r tank/test

NAME USED AVAIL REFER MOUNTPOINT

tank/test 314K 8.24G 25.5K /tank/test

tank/test/productA 288K 8.24G 288K /tank/test/productA

tank/test/productA@today 0 - 288K -

tank/test/productAbeta 0 8.24G 288K /tank/test/productAbeta

# zfs promote tank/test/productAbeta

# zfs list -r tank/test

NAME USED AVAIL REFER MOUNTPOINT

tank/test 316K 8.24G 27.5K /tank/test

tank/test/productA 0 8.24G 288K /tank/test/productA

tank/test/productAbeta 288K 8.24G 288K /tank/test/productAbeta

tank/test/productAbeta@today 0 - 288K -

Visão geral dos clones do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 179

Page 180: Guia de amdiminstracao do zfs solaris

Na saída zfs list acima, você pode ver que a contagem de espaço do sistema de arquivosoriginal productA foi substituída pelo sistema de arquivos productAbeta.

Termine o processo de substituição renomeando os sistemas de arquivos. Por exemplo:

# zfs rename tank/test/productA tank/test/productAlegacy

# zfs rename tank/test/productAbeta tank/test/productA

# zfs list -r tank/test

NAME USED AVAIL REFER MOUNTPOINT

tank/test 316K 8.24G 27.5K /tank/test

tank/test/productA 288K 8.24G 288K /tank/test/productA

tank/test/productA@today 0 - 288K -

tank/test/productAlegacy 0 8.24G 288K /tank/test/productAlegacy

Opcionalmente, você pode remover o sistema de arquivos de legado. Por exemplo:

# zfs destroy tank/test/productAlegacy

Enviando e recebendo dados do ZFSO comando zfs send cria uma representação do fluxo de um instantâneo gravado em umasaída padrão. Por padrão, um fluxo inteiro é gerado. Você pode redirecionar a saída para umarquivo ou para outro sistema. O comando zfs receive cria um instantâneo cujo conteúdoestá especificado no fluxo fornecido na entrada padrão. Se um fluxo inteiro for recebido, umnovo sistema de arquivos também é criado. Com estes comandos, é possível enviar os dados doinstantâneo do ZFS e receber os dados do instantâneo e os sistemas de arquivos ZFS. Consulteos exemplos nesta seção.

■ “Enviando um instantâneo do ZFS” na página 181■ “Recebendo um instantâneo do ZFS” na página 182■ “Replicação remota de dados do ZFS” na página 186■ “Salvando dados do ZFS com outros produtos de backup” na página 186

Estão disponíveis as seguintes soluções de backup para salvamento de dados do ZFS:

■ Produtos de backup de empresa – Se precisar dos recursos a seguir, leve em consideraçãouma solução de backup de empresa:■ Restauração por arquivo■ Verificação da mídia de backup■ Gerenciamento da mídia

■ Instantâneos de sistema de arquivos e reversão de instantâneos – Use os comandos zfssnapshot e zfs rollback se quiser criar facilmente uma cópia de um sistema de arquivos ereverter para uma versão anterior do sistema de arquivos, se necessário. Se, por exemplo,quisesse restaurar um arquivo ou arquivos de uma versão anterior de um sistema dearquivos, você poderia usar esta solução.

Enviando e recebendo dados do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008180

Page 181: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre a criação e reversão de um instantâneo, consulte “Visãogeral dos instantâneos do ZFS” na página 173.

■ Salvar instantâneos – Use os comandos zfs send e zfs receive para enviar e receber uminstantâneo do ZFS. Você pode salvar alterações incrementais entre instantâneos, mas nãopode restaurar os arquivos individualmente. Você deve restaurar o instantâneo de todo osistema de arquivos. Estes comandos não oferecem uma solução de backup completa parasalvar dados do ZFS.

■ Replicação remota – Use os comandos zfs send e zfs receive quando quiser copiar umsistema de arquivos de um sistema a outro. Este processo difere do produto degerenciamento de volumes que pode espelhar os dispositivos através de uma WAN. Não énecessário nenhum hardware ou configuração especial. A vantagem da replicação de umsistema de arquivos ZFS é que você pode recriar um sistema de arquivos em um pool dearmazenamento de outro sistema e especificar diferentes níveis de configuração para o poolrecém-criado, tal como RAID-Z, mas com os dados de sistema de arquivos idênticos.

■ Utilitários de arquivo – Salvar dados do ZFS com utilitários de arquivos como tar, cpio epax ou produtos de backup de terceiros.

Enviando um instantâneo do ZFSVocê pode usar o comando zfs send para enviar uma cópia de um instantâneo e receber oinstantâneo em outro pool do mesmo sistema ou em outro pool de outro sistema usado paraarmazenar dados de backup. Por exemplo, para enviar o instantâneo de outro pool do mesmosistema, use uma sintaxe semelhante à seguinte:

# zfs send tank/data@snap1 | zfs recv spool/ds01

Se estiver enviando o fluxo de instantâneo a outro sistema, conduza a saída de zfs send atravésdo comando ssh. Por exemplo:

host1# zfs send tank/dana@snap1 | ssh host2 zfs recv newtank/dana

Durante o envio de um fluxo completo, o sistema de arquivos de destino não deve existir.

É possível salvar dados incrementais usando a opção i do -zfs send . Por exemplo:

host1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh host2 zfs recv newtank/dana

Observe que o primeiro argumento é o instantâneo mais antigo (snap1) e o segundo é oinstantâneo mais recente (snap2). Nesse caso, o sistema de arquivos newtank/dana deve existirpara que o recebimento incremental seja bem-sucedido.

A origem do snap1 incremental pode ser especificada como o último componente do nome doinstantâneo. Este atalho significa que é necessário especificar o nome do snap1 somente depoisdo símbolo @, que se supõe ser do mesmo sistema de arquivos que o snap2. Por exemplo:

Enviando e recebendo dados do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 181

Page 182: Guia de amdiminstracao do zfs solaris

host1# zfs send -i snap1 tank/dana@snap2 > ssh host2 zfs recv newtank/dana

Esta sintaxe é aquivalente ao exemplo da sintaxe incremental acima.

Se você tentar gerar um fluxo incremental do instantâneo1 de um sistema de arquivos diferente,é exibida a seguinte mensagem:

cannot send ’pool/fs@name’: not an earlier snapshot from the same fs

Se precisar restaurar várias cópias, você pode compactar uma representação de fluxo doinstantâneo do ZFS com o comando gzip. Por exemplo:

# zfs send pool/fs@snap | gzip > backupfile.gz

Recebendo um instantâneo do ZFSLeve em consideração as seguintes questões ao receber um instantâneo de um sistema dearquivos:■ O instantâneo e o sistema de arquivos são recebidos.■ O sistema de arquivos e todos os sistemas de arquivos descendentes são desmontados.■ Os sistemas de arquivos não podem ser acessados enquanto estiverem sendo recebidos.■ O sistema de arquivos original que será recebido não deve existir enquanto estiver sendo

recebido.■ Se houver um nome de sistema de arquivos em conflito, o zfs rename pode ser usado para

renomear o sistema de arquivos.

Por exemplo:

# zfs send tank/gozer@0830 > /bkups/gozer.083006

# zfs receive tank/gozer2@today < /bkups/gozer.083006

# zfs rename tank/gozer tank/gozer.old

# zfs rename tank/gozer2 tank/gozer

O zfs recv pode ser usado como um alias do comando zfs receive.

Se fizer uma alteração no sistema de arquivos de destino e quiser realizar outro envioincremental de um instantâneo, você deve primeiramente reverter o sistema de arquivos que oreceberá.

Por exemplo, se fizer a seguinte alteração no sistema de arquivos:

host2# rm newtank/dana/file.1

E realizar um envio incremental de tank/dana@snap3, você deve primeiramente reverte osistema de arquivos de destino para receber o novo instantâneo incremental. A etapa dereversão pode ser eliminada usando a opção -F. Por exemplo:

Enviando e recebendo dados do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008182

Page 183: Guia de amdiminstracao do zfs solaris

host1# zfs send -i tank/dana@snap2 tank/dana@snap3 | ssh host2 zfs recv -F newtank/dana

Quando um instantâneo incremental é recebido, o sistema de arquivos de destino já deverexistir.

Se fizer alterações em um sistema de arquivos e não reverter o sistema de arquivos de destinopara receber o novo instantâneo incremental ou não usar a opção -F, será exibida a seguintemensagem:

host1# zfs send -i tank/dana@snap4 tank/dana@snap5 | ssh host2 zfs recv newtank/dana

cannot receive: destination has been modified since most recent snapshot

As verificações seguintes são realizadas antes que a opção -F seja realizada:

■ Se o instantâneo mais recente não corresponder à origem incremental, nem a reversão nemo recebimento são concluídos e uma mensagem de erro é devolvida.

■ Se o nome de outro sistema de arquivos que não corresponde à origem incremental forfornecido por acidente ao comando zfs receive, nem a reversão nem o recebimento sãoconcluídos e a seguinte mensagem de erro é devolvida.

cannot send ’pool/fs@name’: not an earlier snapshot from the same fs

Enviando e recebendo fluxos complexos deinstantâneos do ZFSEsta seção descreve como usar as opções zfs send -I e -R para enviar e receber fluxos deinstantâneos mais complexos.

Tenha em mente os pontos seguintes ao enviar e receber fluxos de instantâneos do ZFS:

■ Use a opção zfs send -I para enviar todos os fluxos incrementais de um instantâneo paraum instantâneo cumulativo. Ou, use esta opção para enviar um fluxo incremental doinstantâneo original para criar um clone. O instantâneo original já deve existir no lado derecepção para aceitar o fluxo incremental.

■ Use a opção zfs send -R para enviar um fluxo de replicação de todos os sistemas dearquivos descendentes. Quando recebidos, todas as propriedades, instantâneos, sistemas dearquivo descendentes e clones são preservados.

■ Ou, use ambas as opções para enviar um fluxo de replicação incremental.■ As alterações nas propriedades e a renomeação e destruição de instantâneos e sistemas

de arquivos são preservadas.■ Se zfs recv -F não for especificado ao receber o fluxo de instantâneos, as destruições de

conjuntos de dados são ignoradas. A sintaxe de zfs recv -F neste caso também retémseu significado de reversão se necessário.

Enviando e recebendo dados do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 183

Page 184: Guia de amdiminstracao do zfs solaris

■ Como em outros casos (não zfs send -R) - i ou -I, se -I for usado, todos osinstantâneos entre snapA e snapD são enviados. Se -i for usado, somente o snapD (detodos os descendentes) é enviado.

■ Para receber qualquer um desses novos tipos de fluxos do zfs send, o sistema destinatáriodeve executar uma versão do software capaz de enviá-los. A versão de fluxo é incrementada.No entanto, você pode acessar os fluxos a partir das versões mais antigas do pool usandouma versão mais recente do software. Por exemplo, você pode enviar e receber os fluxoscriados com as opções mais recentes para e de um pool de versão 3. Porém, você deveexecutar um software recente para receber um fluxo enviado com as opções mais recentes.

EXEMPLO 7–1 Exemplos — Enviando e recebendo fluxos complexos de instantâneos do ZFS

É possível combinar um grupo de instantâneos incrementais em um instantâneo usando aopçãozfs send -I. Por exemplo:

# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I

Remova os instantâneos B, C e D.

# zfs destroy pool/fs@snapB

# zfs destroy pool/fs@snapC

# zfs destroy pool/fs@snapD

Receba o instantâneo combinado.

# zfs receive -d -F pool/fs < /snaps/fs@all-I

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool 428K 16.5G 20K /pool

pool/fs 71K 16.5G 21K /pool/fs

pool/fs@snapA 16K - 18.5K -

pool/fs@snapB 17K - 20K -

pool/fs@snapC 17K - 20.5K -

pool/fs@snapD 0 - 21K -

Você também pode usar o comando zfs send -I para combinar um instantâneo e uminstantâneo de clone a fim de criar um conjunto de dados combinado. Por exemplo:

# zfs create pool/fs

# zfs snapshot pool/fs@snap1

# zfs clone pool/fs@snap1 pool/clone

# zfs snapshot pool/clone@snapA

# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I

# zfs destroy pool/clone@snapA

# zfs destroy pool/clone

# zfs receive -F pool/clone < /snaps/fsclonesnap-I

Enviando e recebendo dados do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008184

Page 185: Guia de amdiminstracao do zfs solaris

EXEMPLO 7–1 Exemplos — Enviando e recebendo fluxos complexos de instantâneos do ZFS(Continuação)

Use o comando zfs send -R para replicar um sistema de arquivos ZFS e todos os sistemas dearquivos descendentes, até o instantâneo nomeado. Quando recebidos, todas as propriedades,instantâneos, sistemas de arquivo descendentes e clones são preservados.

No exemplo seguinte, são criados instantâneos dos sistemas de arquivos do usuário. É criadoum fluxo de replicação de todos os instantâneos do usuário. A seguir, os instantâneos e sistemasde arquivos originais são destruídos e recuperados.

# zfs snapshot -r users@today

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 187K 33.2G 22K /users

users@today 0 - 22K -

users/user1 18K 33.2G 18K /users/user1

users/user1@today 0 - 18K -

users/user2 18K 33.2G 18K /users/user2

users/user2@today 0 - 18K -

users/user3 18K 33.2G 18K /users/user3

users/user3@today 0 - 18K -

# zfs send -R users@today > /snaps/users-R

# zfs destroy -r users

# zfs receive -F -d users < /snaps/users-R

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 196K 33.2G 22K /users

users@today 0 - 22K -

users/user1 18K 33.2G 18K /users/user1

users/user1@today 0 - 18K -

users/user2 18K 33.2G 18K /users/user2

users/user2@today 0 - 18K -

users/user3 18K 33.2G 18K /users/user3

users/user3@today 0 - 18K -

Você pode usar o comando zfs send -R para replicar o conjunto de dados de users e seusdescendentes, e enviar o fluxo replicado para outro pool, users2.

# zfs create users2 mirror c0t1d0 c1t1d0

# zfs receive -F -d users2 < /snaps/users-R

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

users 224K 33.2G 22K /users

users@today 0 - 22K -

users/user1 33K 33.2G 18K /users/user1

users/user1@today 15K - 18K -

users/user2 18K 33.2G 18K /users/user2

Enviando e recebendo dados do ZFS

Capítulo 7 • Trabalhando com instantâneos e clones do ZFS 185

Page 186: Guia de amdiminstracao do zfs solaris

EXEMPLO 7–1 Exemplos — Enviando e recebendo fluxos complexos de instantâneos do ZFS(Continuação)

users/user2@today 0 - 18K -

users/user3 18K 33.2G 18K /users/user3

users/user3@today 0 - 18K -

users2 188K 16.5G 22K /users2

users2@today 0 - 22K -

users2/user1 18K 16.5G 18K /users2/user1

users2/user1@today 0 - 18K -

users2/user2 18K 16.5G 18K /users2/user2

users2/user2@today 0 - 18K -

users2/user3 18K 16.5G 18K /users2/user3

users2/user3@today 0 - 18K -

Replicação remota de dados do ZFSOs comandos zfs send e zfs recv podem ser usados para copiar remotamente umarepresentação de fluxo do instantâneo de um sistema a outro. Por exemplo:

# zfs send tank/cindy@today | ssh newsys zfs recv sandbox/restfs@today

Este comando envia os dados do instantâneo tank/cindy@today e o recebe no sistema dearquivos sandbox/restfs, além de criar um instantâneo restfs@today no sistema newsys.Neste exemplo, o usuário foi configurado para que use ssh no sistema remoto.

Salvando dados do ZFS com outros produtos debackupAlém dos comandos zfs send e zfs receive, você também pode usar utilitários de arquivo,como os comandos tar e cpio, para salvar os arquivos ZFS. Todos estes utilitários salvam erestauram ACLs e atributos do sistema ZFS. Verifique as opções adequadas para os comandostar e cpio.

Para obter informações atualizadas sobre problemas com ZFS e produtos de backup deterceiros, consulte as notas da versão do Solaris 10 ou a FAQ do ZFS, aqui:

http://opensolaris.org/os/community/zfs/faq/#backupsoftware

Enviando e recebendo dados do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008186

Page 187: Guia de amdiminstracao do zfs solaris

Usando ACLs para proteger arquivos ZFS

Este capítulo oferece informações sobre o uso das listas de controle de acesso (ACLs) paraproteger os arquivos ZFS proporcionando permissões mais granulares que as permissões doUNIX padrão.

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

■ “Novo modelo de ACL do Solaris” na página 187■ “Definindo ACLs em arquivos ZFS” na página 194■ “Definindo e exibindo ACLs em arquivos ZFS no formato verboso” na página 196■ “Definindo e exibindo ACLs em arquivos ZFS no formato compacto” na página 212

Novo modelo de ACL do SolarisAs versões anteriores do Solaris ofereciam suporte a implementações de ACL baseadasprincipalmente na especificação de ACL do esquema POSIX. As ACLs baseadas no esquemaPOSIX são usadas para proteger arquivos UFS e são traduzidas por versões do NFS antes doNFSv4

Com a introdução do NFSv4, um novo modelo de ACL oferece suporte total àinteroperabilidade que o NFSv4 oferece entre clientes e não-clientes UNIX. A novaimplementação de ACL, conforme definida na especificação NFSv4, proporciona semânticasmuito mais ricas baseadas nas ACLs de estilo NT.

As principais diferenças do novo modelo de ACL são os seguintes:

■ Baseado na especificação NFSv4 e semelhante às ACLs de estilo NT.■ Proporciona privilégios de acesso muito mais granulares. Para obter mais informações,

consulte a Tabela 8–2.■ É definido e exibido com os comandos chmod e ls em vez dos comandos setfacl e getfacl

.

8C A P Í T U L O 8

187

Page 188: Guia de amdiminstracao do zfs solaris

■ Oferece semânticas de herança mais ricas para designar como os privilégios de acesso serãoaplicados do diretório aos subdiretórios, e assim por diante. Para obter mais informações,consulte “Herança da ACL” na página 192.

Ambos os modelos de ACL proporcionam controles de acesso mais granulares que osdisponíveis nas permissões de arquivos padrão. Assim como as ACLs de esquema POSIX, asnovas ACLs compõem-se de várias entradas de controle de acesso (ACEs).

As ACLs de esquema POSIX usam uma única entrada para definir que permissões serão aceitase que permissões serão negadas. O novo modelo de ACL apresenta dois tipos de ACEs queafetam a verificação de acesso: ALLOW e DENY. Não é possível deduzir de nenhuma ACE quedefine um conjunto de permissões se as permissões definidas nesta ACE serão aceitas ounegadas.

A tradução entre ACLs de estilo NFSv4 e de esquema POSIX é a seguinte:

■ Se usar utilitários com ACL, como os comandos cp, mv, tar, cpio ou rcp, para transferirarquivos UFS com ACLs para um sistema de arquivos ZFS, as ACLs de esquema POSIX sãotraduzidas para as ACLs de estilo NFSv4 equivalentes.

■ Algumas ACLs de estilo NFSv4 são traduzidas para ACLs de esquema POSIX. Se uma ACLde estilo NFSv4– não for traduzida para uma ACL de esquema POSIX, será exibida aseguinte mensagem:

# cp -p filea /var/tmp

cp: failed to set acl entries on /var/tmp/filea

■ Se criar um arquivo UFS tar ou cpio com a opção de preservar ACL (tar -p ou cpio -P) emum sistema que executa uma versão atual do Solaris, você perderá as ACLs quando oarquivo for extraído para um sistema que executa uma versão anterior do Solaris.Todos os arquivos são extraídos com os modos de arquivo corretos, mas as entradas ACLsão ignoradas.

■ Você pode usar o comando ufsrestore para restaurar os dados dentro de um sistema dearquivos ZFS. Se os dados originais possuírem ACLs de estilo POSIX, elas são convertidasem ACLs de estilo NFSv4.

■ Se tentar definir uma ACL de estilo NFSv4 em um arquivo UFS, será exibida uma mensagemsemelhante à seguinte:

chmod: ERROR: ACL type’s are different

■ Se tentar definir uma ACL de esquema POSIX em um arquivo ZFS, será exibida umamensagem semelhante à seguinte:

# getfacl filea

File system doesn’t support aclent_t style ACL’s.

See acl(5) for more information on Solaris ACL support.

Novo modelo de ACL do Solaris

Guia de administração do ZFS Solaris • Setembro de 2008188

Page 189: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre outras limitações com ACLs e produtos de backup, consulte“Salvando dados do ZFS com outros produtos de backup” na página 186.

Descrições de sintaxe para definição de ACLsSão fornecidos dois formatos básicos de ACL:

Sintaxe para definição de ACLs comuns

chmod [options] A[index]{+|=}owner@ |group@ |everyone@:

access-permissions/...[:inheritance-flags]: deny | allow file

chmod [options] A-owner@, group@, everyone@:access-permissions/...[:inheritance-flags]:deny | allow file ...

chmod [options] A[index]- arquivo

Sintaxe para a configuração de ACLs incomuns

chmod [options] A[index]{+|=}user|group:name:access-permissions/...[:inheritance-flags]:deny | allow file

chmod [options] A-user|group:name:access-permissions /...[:inheritance-flags]:deny |

allow file ...

chmod [options] A[index]- arquivo

owner@, group@, everyone@Identifica o tipo de entrada ACL da sintaxe da ACL comum. Para obter uma descrição dostipos de entrada ACL, consulte a Tabela 8–1.

user or group:ACL-entry-ID=username or groupnameIdentifica o tipo de entrada ACL da sintaxe de ACL explícita. O tipo de entrada ACL dousuário ou do grupo deve conter também o ID da entrada ACL, nome do usuário ou nome dogrupo. Para obter uma descrição dos tipos de entrada ACL, consulte a Tabela 8–1.

access-permissions/.../Identifica as permissões de acesso que são aceitas ou negadas. Para obter uma descrição dosprivilégios de acesso da ACL, consulte a Tabela 8–2.

inheritance-flagsIdentifica uma lista opcional de sinalizadores de herança da ACL. Para obter uma descriçãodos sinalizadores de herança da ACL, consulte a Tabela 8–3.

deny | allowIdentifica se as permissões de acesso são aceitas ou negadas.

No exemplo abaixo, o valor do ID da entrada ACL não é relevante.

Novo modelo de ACL do Solaris

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 189

Page 190: Guia de amdiminstracao do zfs solaris

group@:write_data/append_data/execute:deny

O exemplo abaixo inclui um ID da entrada ACL porque um usuário específico (tipo da entradaACL) está incluído na ACL.

0:user:gozer:list_directory/read_data/execute:allow

Quando uma entrada ACL é exibida, ela se parece ao ilustrado abaixo:

2:group@:write_data/append_data/execute:deny

O 2 ou a designação do ID de índice neste exemplo identifica a entrada ACL na ACL maior, quepode ter várias entradas para owner, UIDs específicos, group e everyone. Você pode especificaro ID de índice com o comando chmod para identificar que parte da ACL quer modificar. Vocêpode identificar, por exemplo, o ID de índice ID 3 como A3 para o comando chmod, semelhantea:

chmod A3=user:venkman:read_acl:allow filename

Na tabela abaixo encontram-se as descrições dos tipos de entrada ACL, que são asrepresentações da ACL de proprietário, grupo e outros.

TABELA 8–1 Tipos de entrada ACL

Tipo de entrada ACL Descrição

owner@ Especifica o acesso concedido ao proprietário do objeto.

group@ Especifica o acesso concedido ao grupo proprietário do objeto.

everyone@ Especifica o acesso permitido a todos os usuários ou grupos que não correspondamcom nenhuma outra entrada ACL.

user Com um nome de usuário, especifica o acesso concedido a um usuário adicional doobjeto. Deve incluir o ID da entrada ACL, que contém um nome de usuário ou umID de usuário. Se o valor não for um UID numérico ou nome de usuário válidos, otipo de entrada ACL é inválido.

group Com um nome de grupo, especifica acesso concedido a um grupo adicional doobjeto. Deve incluir o ID da entrada ACL, que contém um nome de grupo ou um IDde grupo. Se o valor não for um GID numérico ou nome de grupo válidos, o tipo deentrada ACL é inválido.

Os privilégios de acesso da ACL estão descritos na tabela abaixo.

Novo modelo de ACL do Solaris

Guia de administração do ZFS Solaris • Setembro de 2008190

Page 191: Guia de amdiminstracao do zfs solaris

TABELA 8–2 Privilégios de acesso da ACL

Privilégio de acessoPrivilégio de acessocompacto Descrição

add_file w Permissão para adicionar um novo arquivo a um diretório.

add_subdirectory p Em um diretório, permissão para criar um subdiretório.

append_data p Espaço reservado. Ainda não implementado.

delete d Permissão para excluir um arquivo.

delete_child D Permissão para excluir um arquivo ou diretório dentro de umdiretório.

execute i Permissão para executar um arquivo ou pesquisar o conteúdo deum diretório.

list_directory a Permissão para listar o conteúdo de um diretório.

read_acl f Permissão para ler a ACL (ls).

read_attributes a Permissão para ler os atributos básicos (não-ACLs) de um arquivo.Considere os atributos básicos como sendo os atributos do nívelstat. Ao permitir este bit da máscara de acesso, a entidade podeexecutar ls(1) e stat(2).

read_data a Permissão para ler o conteúdo do arquivo.

read_xattr A Permissão para ler os atributos estendidos de um arquivo ourealizar uma pesquisa no diretório dos atributos estendidos doarquivo.

synchronize s Espaço reservado. Ainda não implementado.

write_xattr Q Permissão para criar atributos estendidos ou gravar no diretório deatributos estendidos.

A concessão de permissões a um usuário indica que o usuário podecriar um diretório de atributo estendido para um arquivo. Aspermissões do arquivo do atributo controlam o acesso do usuárioao atributo.

write_data w Permissão para modificar ou substituir o conteúdo de um arquivo.

write_attributes Um Permissão para alterar para um valor arbitrário os períodos detempo associados a um arquivo ou diretório.

write_acl C Permissão para gravar a ACL ou habilidade para modificar a ACLcom o comando chmod.

Novo modelo de ACL do Solaris

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 191

Page 192: Guia de amdiminstracao do zfs solaris

TABELA 8–2 Privilégios de acesso da ACL (Continuação)

Privilégio de acessoPrivilégio de acessocompacto Descrição

write_owner o Permissão para alterar o proprietário ou o grupo do arquivo. Ou, ahabilidade para executar os comandos chown ou chgrp no arquivo.

Permissão para tomar a propriedade de um arquivo ou permissãopara alterar a propriedade do grupo do arquivo para o grupo doqual o usuário é um membro. Se quiser alterar a propriedade dogrupo ou arquivo para um usuário ou grupo arbitrário, o privilégioPRIV_FILE_CHOWN é exigido.

Herança da ACLO objetivo de usar a herança da ACL é que um arquivo ou diretório recém-criado possa herdaras ACLs que pretendem herdar, mas levando em consideração os bits de permissão existentesno diretório pai.

Por padrão, as ACLs não são propagadas. Se definir uma ACL não-comum em um diretório, elanão será herdada por nenhum diretório subseqüente. Você deve especificar a herança de umaACL em um arquivo ou diretório.

Os sinalizadores de herança opcionais estão descritos na seguinte tabela.

TABELA 8–3 Sinalizadores de herança da ACL

Sinalizador de herançaSinalizador de herançacompacto Descrição

file_inherit f Herda somente a ACL do diretório pai até os arquivos dodiretório.

dir_inherit d Herda somente a ACL do diretório pai até os subdiretórios dodiretório.

inherit_only i Herda a ACL do diretório pai, mas se aplica somente aosarquivos e subdiretórios recém-criados e não ao própriodiretório. Este sinalizador requer o sinalizador file_inherit,o sinalizador dir_inherit, ou ambos, para indicar o queherdar.

no_propagate n Herda somente a ACL do diretório pai até o conteúdo doprimeiro nível do diretório, não herda o conteúdo do segundonível ou dos níveis subseqüentes. Este sinalizador requer osinalizador file_inherit, o sinalizador dir_inherit, ouambos, para indicar o que herdar.

- N/D Nenhuma permissão concedida.

Novo modelo de ACL do Solaris

Guia de administração do ZFS Solaris • Setembro de 2008192

Page 193: Guia de amdiminstracao do zfs solaris

Além disso, você pode definir a diretriz de herança da ACL padrão no sistema de arquivos paraque seja mais rigorosa ou menos rigorosa usando a propriedade aclinherit do sistema dearquivos. Para obter mais informações, consulte a próxima seção.

Modos de propriedade da ACLO sistema de arquivos ZFS inclui dois modos de propriedade relacionados às ACLs:

■ aclinherit – Esta propriedade determina o comportamento da herança da ACL. Os valoressão os seguintes:■ discard – Para novos objetos, nenhuma entrada ACL é herdada quando um arquivo ou

diretório é criado. A ACL no arquivo ou diretório é igual ao modo de permissão doarquivo ou diretório.

■ noallow – Para novos objetos, somente as entradas ACLs herdáveis com um tipo deacesso deny são herdadas.

■ secure restricted – Para novos objetos, as permissões write_owner e write_acl sãoremovidas quando uma entrada ACL é herdada.

■ passthrough – Quando o valor da propriedade estiver definido como passthrough, osarquivos são criados com um modo determinado pelas ACEs herdáveis. Se não houverACEs herdáveis que afetem o modo, então o modo será definido de acordo com o modosolicitado do aplicativo.

O modo padrão do aclinherit é securerestricted.■ aclmode – Esta propriedade modifica o comportamento da ACL quando um arquivo é

inicialmente criado ou sempre que um modo do arquivo ou diretório for modificado pelocomando chmod . Os valores são os seguintes:■ discard – Todas as entradas ACLs são removidas, exceto as entradas necessárias para

definir o modo do arquivo ou diretório.■ groupmask – As permissões de usuário ou grupo são reduzidas para que não sejam

maiores que os bits de permissão de grupo, a menos que seja uma entrada de usuáriocom o mesmo UID que o proprietário do arquivo ou diretório. Assim, as permissões deACL são reduzidas para que não sejam maiores que os bits de permissão de proprietário.

■ passthrough – Durante uma operação chmod, as ACEs diferentes de owner@, group@ oueveryone@ não são modificadas de nenhuma forma. As ACEs com owner@, group@ oueveryone@ são desativadas para definir o modo de arquivo conforme solicitado pelaoperação chmod.

O modo padrão da propriedade aclmode é groupmask .

Novo modelo de ACL do Solaris

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 193

Page 194: Guia de amdiminstracao do zfs solaris

Definindo ACLs em arquivos ZFSPor serem implementadas com ZFS, as ACLs estão compostas de uma matriz de entradas ACLs.O ZFS oferece um modelo de ACL puro, no qual todos os arquivos têm uma ACL.Normalmente, a ACL é comum porque representa somente entradas UNIXowner/group/other tradicionais.

Os arquivos ZFS ainda possuem bits de permissão e um modo, mas esses valores são mais de umcache do que a ACL representa. Se você alterar as permissões do arquivo, a ACL do arquivo seráconseqüentemente atualizada . Além disso, se remover uma ACL não-comum que permite queo usuário acesse o arquivo ou diretório, tal usuário poderia continuar tendo acesso ao arquivoou diretório devido aos bits de permissão do arquivo ou diretório que permitem acesso para ogrupo ou para todos. Todos as decisões de controles de acesso são controladas pelas permissõesrepresentadas em uma ACL do arquivo ou diretório.

As principais regras de acesso de ACL em um arquivo ZFS são as seguintes:■ O ZFS processa as entradas ACLs com o objetivo de listá-las na ACL, de cima para baixo.■ São processadas somente as entradas ACLs que têm “quem” corresponda ao solicitante do

acesso.■ Depois que a permissão allow (permitir) foi concedida, ela não pode ser negada por uma

entrada ACL deny (negar) subseqüente no mesmo conjunto de permissões da ACL.■ A permissão write_acl é concedida incondicionalmente ao proprietário, mesmo se a

permissão for explicitamente negada. Caso contrário, todas as permissões não especificadassão negadas.No caso de permissões negadas ou quando falta um acesso de permissão, o subsistema deprivilégios determina que solicitação de acesso é concedida ao proprietário do arquivo ou aosuperusuário. Este mecanismo evita que os proprietários de arquivos sejam bloqueados aseus arquivos e ativa o superusuário para que modifique os arquivos para recuperação.

Se definir uma ACL não-comum em um diretório, os filhos do diretório não herdarão a ACLautomaticamente. Se definir uma ACL não-comum e quiser que ela seja herdada pelos filhos dodiretório, você terá que usar os sinalizadores de herança da ACL. Para obter mais informações,consulte a Tabela 8–3 e “Definindo a herança da ACL em arquivos ZFS no formato verboso”na página 202.

Quando um novo arquivo é criado e dependendo do valor de umask, um padrão de ACLcomum, semelhante ao ilustrado abaixo, é aplicado:

$ ls -v file.1

-r--r--r-- 1 root root 206663 May 4 11:52 file.1

0:owner@:write_data/append_data/execute:deny

1:owner@:read_data/write_xattr/write_attributes/write_acl/write_owner

:allow

2:group@:write_data/append_data/execute:deny

Definindo ACLs em arquivos ZFS

Guia de administração do ZFS Solaris • Setembro de 2008194

Page 195: Guia de amdiminstracao do zfs solaris

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

Observe que, nesse exemplo, cada categoria de usuário (owner@, group@, everyone@) apresentaduas entradas ACLs. Uma entrada para permissões deny e uma entrada para permissões allow.

Encontra-se abaixo uma descrição dessa ACL do arquivo:

0:owner@ O proprietário não tem permissões para gravar e executar o arquivo(write_data/append_data/execute:deny).

1:owner@ O proprietário pode ler e modificar o conteúdo do arquivo (read_data/write_data/append_data). O proprietário também podemodificar os atributos do arquivo, tais como carimbos de data/hora, atributosestendidos e ACLs (write_xattr/write_attributes /write_acl). Alémdisso, o proprietário pode modificar a propriedade do arquivo(write_owner:allow)

2:group@ O grupo não tem permissões para modificar e executar o arquivo(write_data/append_data/execute:deny).

3:group@ O grupo tem permissões de leitura para o arquivo (read_data:allow ).

4:everyone@ Todos os que não são nem usuário nem grupo não têm permissão paraexecutar ou modificar o conteúdo do arquivo ou modificar os atributos doarquivo (write_data/append_data/write_xattr/execute/write_attributes /write_acl/write_owner:deny ).

5:everyone@ Todos os que não são nem usuário nem grupo têm permissões de leitura parao arquivo e os atributos do arquivo(read_data/read_xattr/read_attributes/read_acl/synchronize:allow ). A permissão de acesso synchronize não estáimplementada atualmente.

Quando um novo diretório é criado e dependendo do valor de umask, a ACL padrão dodiretório é semelhante ao ilustrado abaixo:

$ ls -dv dir.1

drwxr-xr-x 2 root root 2 Feb 23 10:37 dir.1

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data:deny

3:group@:list_directory/read_data/execute:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

Definindo ACLs em arquivos ZFS

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 195

Page 196: Guia de amdiminstracao do zfs solaris

/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Abaixo encontra-se uma descrição do diretório de ACL:

0:owner@ A lista de negações do proprietário está vazia no diretório (::deny).

1:owner@ O proprietário pode ler e modificar o conteúdo do diretório(list_directory/read_data/add_file/write_data//add_subdirectory/append_data ), pesquisar o conteúdo (execute) emodificar os atributos do arquivo, tais como carimbos de data/hora, atributosestendidos e ACLs ( write_xattr/write_attributes/write_acl). Alémdisso, o proprietário pode modificar a propriedade do diretório(write_owner:allow).

2:group@ O grupo não pode adicionar ou modificar o conteúdo do diretório (add_file/write_data/add_subdirectory/append_data

:deny).

3:group@ O grupo pode listar e ler o conteúdo do diretório. Além disso, o grupo tempermissão para executar pesquisas no conteúdo do diretório(list_directory/read_data/execute:allow ).

4:everyone@ Todos os que não são nem usuário nem grupo não têm permissão paramodificar ou adicionar ao conteúdo do diretório(add_file/write_data/add_subdirectory/append_data ). Além disso, apermissão para modificar qualquer atributo do diretório é negada.(write_xattr /write_attributes/write_acl/write_owner:deny).

5:everyone@ Todos os que não são nem usuário nem grupo têm permissão de leitura eexecução para o conteúdo e os atributos do diretório(list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow ). A permissão de acessosynchronize não está implementada atualmente.

Definindo e exibindo ACLs em arquivos ZFS no formatoverboso

O comando chmod pode ser usado para modificar as ACLs em arquivos ZFS. A sintaxe de chmodabaixo para a modificação de ACLs usa acl-specification para identificar o formato da ACL. Paraobter uma descrição de acl-specification, consulte “Descrições de sintaxe para definição deACLs” na página 189.

■ Adicionando entradas ACLs

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008196

Page 197: Guia de amdiminstracao do zfs solaris

■ Adicionando uma entrada ACL de um usuário

% chmod A+acl-specification filename

■ Adicionando uma entrada ACL por ID de índice

% chmod Aindex-ID+acl-specification filename

Esta sintaxe insere a nova entrada ACL no local do ID de índice especificado.■ Substituindo uma entrada ACL

% chmod A=acl-specification filename

% chmod Aindex-ID=acl-specification filename

■ Removendo entradas ACLs■ Removendo uma entrada ACL por ID de índice

% chmod Aindex-ID- filename

■ Removendo uma entrada ACL por usuário

% chmod A-acl-specification filename

■ Removendo todas as ACEs não-comuns de um arquivo

% chmod A- filename

As informações detalhadas da ACL são exibidas com o comando ls - v. Por exemplo:

# ls -v file.1

-rw-r--r-- 1 root root 206663 Feb 16 11:00 file.1

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

Para obter mais informações sobre o uso do formato compacto da ACL, consulte “Definindo eexibindo ACLs em arquivos ZFS no formato compacto” na página 212.

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 197

Page 198: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–1 Modificando ACLs comuns em arquivos ZFS

Esta seção oferece exemplos de configuração e exibição de ACLs comuns.

No exemplo abaixo, existe uma ACL comum no file.1:

# ls -v file.1

-rw-r--r-- 1 root root 206663 Feb 16 11:00 file.1

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

No exemplo abaixo, as permissões write_data são concedidas a group@.

# chmod A2=group@:append_data/execute:deny file.1

# chmod A3=group@:read_data/write_data:allow file.1

# ls -v file.1

-rw-rw-r-- 1 root root 206663 May 3 16:36 file.1

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:append_data/execute:deny

3:group@:read_data/write_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

No exemplo abaixo, as permissões no file.1 são redefinidas como 644.

# chmod 644 file.1

# ls -v file.1

-rw-r--r-- 1 root root 206663 May 3 16:36 file.1

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008198

Page 199: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–2 Definindo ACLs não-comuns em arquivos ZFS

Esta seção oferece exemplos de definições e exibições de ACLs não-comuns.

No exemplo abaixo, as permissões read_data/execute são adicionadas ao usuário gozer nodiretório test.dir.

# chmod A+user:gozer:read_data/execute:allow test.dir

# ls -dv test.dir

drwxr-xr-x+ 2 root root 2 Feb 16 11:12 test.dir

0:user:gozer:list_directory/read_data/execute:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

No exemplo abaixo, as permissões read_data/execute são removidas do usuário gozer.

# chmod A0- test.dir

# ls -dv test.dir

drwxr-xr-x 2 root root 2 Feb 16 11:12 test.dir

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data:deny

3:group@:list_directory/read_data/execute:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

EXEMPLO 8–3 A interação da ACL com permissões em arquivos ZFS

Estes exemplos de ACL ilustram a interação entre definir ACLs e alterar os bits de permissão doarquivo ou diretório.

No exemplo abaixo, existe uma ACL comum em file.2:

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 199

Page 200: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–3 A interação da ACL com permissões em arquivos ZFS (Continuação)

# ls -v file.2

-rw-r--r-- 1 root root 2703 Feb 16 11:16 file.2

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

No exemplo abaixo, as permissões allow da ACL são removidas de everyone@ .

# chmod A5- file.2

# ls -v file.2

-rw-r----- 1 root root 2703 Feb 16 11:16 file.2

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

Nesta saída, os bits de permissão do arquivo são redefinidos de 655 para 650. As permissões deleitura de everyone@ foram removidas com sucesso dos bits de permissão do arquivo quando aspermissões allow da ACL foram removidas de everyone@.

No exemplo abaixo, a ACL existente é substituída pelas permissões read_data/write_data emeveryone@.

# chmod A=everyone@:read_data/write_data:allow file.3

# ls -v file.3

-rw-rw-rw-+ 1 root root 1532 Feb 16 11:18 file.3

0:everyone@:read_data/write_data:allow

Nessa saída, a sintaxe chmod substitui com sucesso a ACL existente pelas permissõesread_data/write_data:allow para permitir leitura/gravação em owner, group e [email protected] modelo, everyone@ especifica para qualquer usuário ou grupo. Visto que não existenenhuma entrada ACL de owner@ ou de group@ para substituir as permissões para proprietárioe grupo, os bits de permissão são definidos como 666.

No exemplo abaixo, a ACL existente é substituída pelas permissões de leitura no usuário gozer.

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008200

Page 201: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–3 A interação da ACL com permissões em arquivos ZFS (Continuação)

# chmod A=user:gozer:read_data:allow file.3

# ls -v file.3

----------+ 1 root root 1532 Feb 16 11:18 file.3

0:user:gozer:read_data:allow

Nessa saída, as permissões do arquivo são calculadas para que sejam 000 porque não existenenhuma entrada ACL em owner@, group@ ou everyone@, o que representa os componentes depermissões tradicionais de um arquivo. O proprietário do arquivo pode solucionar esseproblema redefinindo as permissões (e a ACL) da seguinte forma:

# chmod 655 file.3

# ls -v file.3

-rw-r-xr-x+ 1 root root 0 Mar 8 13:24 file.3

0:user:gozer::deny

1:user:gozer:read_data:allow

2:owner@:execute:deny

3:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

4:group@:write_data/append_data:deny

5:group@:read_data/execute:allow

6:everyone@:write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:deny

7:everyone@:read_data/read_xattr/execute/read_attributes/read_acl

/synchronize:allow

EXEMPLO 8–4 Restaurando ACLs comuns em arquivos ZFS

Você pode usar o comando chmod para remover todas as ACLs não-comuns em um arquivo oudiretório. (exemplo de)

No exemplo abaixo, existem duas ACEs não-comuns em test5.dir.

# ls -dv test5.dir

drwxr-xr-x+ 2 root root 2 Feb 16 11:23 test5.dir

0:user:gozer:read_data:file_inherit:deny

1:user:lp:read_data:file_inherit:deny

2:owner@::deny

3:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

4:group@:add_file/write_data/add_subdirectory/append_data:deny

5:group@:list_directory/read_data/execute:allow

6:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 201

Page 202: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–4 Restaurando ACLs comuns em arquivos ZFS (Continuação)

7:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

No exemplo abaixo, as ACLs não-comuns de usuários gozer e lp são removidas. A ACLrestante contém seis valores padrão em owner@, group@ e everyone@.

# chmod A- test5.dir

# ls -dv test5.dir

drwxr-xr-x 2 root root 2 Feb 16 11:23 test5.dir

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data:deny

3:group@:list_directory/read_data/execute:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Definindo a herança da ACL em arquivos ZFS noformato verbosoÉ possível determinar como as ACLs são herdadas ou não nos arquivos e diretórios. Por padrão,as ACLs não são propagadas. Se uma ACL não-comum for definida em um diretório, a ACL nãoserá herdada por nenhum diretório subseqüente. Você deve especificar a herança de uma ACLem um arquivo ou diretório.

Além disso, são oferecidas duas propriedades de ACL que podem ser definidas globalmente emsistemas de arquivos: aclinherit e aclmode. Por padrão, aclinherit é definida comosecurerestricted e aclmode é definida como groupmask.

Para obter mais informações, consulte “Herança da ACL” na página 192.

EXEMPLO 8–5 Concedendo herança de ACL padrão

Por padrão, as ACLs não se propagam pela estrutura do diretório.

No exemplo abaixo, uma ACE não-comum de read_data/write_data/execute é aplicada nousuário gozer em test.dir.

# chmod A+user:gozer:read_data/write_data/execute:allow test.dir

# ls -dv test.dir

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008202

Page 203: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–5 Concedendo herança de ACL padrão (Continuação)

0:user:gozer:list_directory/read_data/add_file/write_data/execute:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Se for criado um subdiretório test.dir, a ACE não se propaga para o usuário gozer. Ousuário gozer teria acesso somente a sub.dir se as permissões em sub.dir lhe permitissemacessar como proprietário de arquivo, membro de grupo ou everyone@.

# mkdir test.dir/sub.dir

# ls -dv test.dir/sub.dir

drwxr-xr-x 2 root root 2 Jun 20 14:37 test.dir/sub.dir

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data:deny

3:group@:list_directory/read_data/execute:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

EXEMPLO 8–6 Permitindo herança de ACL em arquivos e diretórios

Estas séries de exemplos identificam as ACEs do arquivo e do diretório aplicadas quando osinalizador file_inherit está definido.

No exemplo abaixo, as permissões read_data/write_data são adicionadas nos arquivos dodiretório test.dir do usuário gozer para que ele tenha acesso de leitura em todos os arquivosrecém-criados.

# chmod A+user:gozer:read_data/write_data:file_inherit:allow test2.dir

# ls -dv test2.dir

drwxr-xr-x+ 2 root root 2 Jun 20 14:38 test2.dir

0:user:gozer:read_data/write_data:file_inherit:allow

1:owner@::deny

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 203

Page 204: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–6 Permitindo herança de ACL em arquivos e diretórios (Continuação)

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

No exemplo abaixo, as permissões do usuário gozer são aplicadas no arquivotest2.dir/file.2 recém-criado. A herança de ACL permitida,read_data:file_inherit:allow, indica que o usuário gozer pode ler o conteúdo de todos osarquivos recém-criados.

# touch test2.dir/file.2

# ls -v test2.dir/file.2

-rw-r--r--+ 1 root root 0 Jun 20 14:39 test2.dir/file.2

0:user:gozer:write_data:deny

1:user:gozer:read_data/write_data:allow

2:owner@:execute:deny

3:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

4:group@:write_data/append_data/execute:deny

5:group@:read_data:allow

6:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

7:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

Pelo fato de aclmode estar definida como modo padrão (groupmask) nesse arquivo, o usuáriogozer não tem a permissão write_data no file.2 porque a permissão de grupo do arquivonão lhe dá acesso.

Observe que a permissão inherit_only, aplicada quando os sinalizadores file_inherit oudir_inherit estão definidos, é usada para propagar a ACL pela estrutura do diretório. Comotal, o usuário gozer tem permissão concedida ou negada a partir das permissões de everyone@somente se ele for o proprietário do arquivo ou for um membro do grupo ao qual o arquivopertence. Por exemplo:

# mkdir test2.dir/subdir.2

# ls -dv test2.dir/subdir.2

drwxr-xr-x+ 2 root root 2 Jun 20 14:40 test2.dir/subdir.2

0:user:gozer:list_directory/read_data/add_file/write_data:file_inherit

/inherit_only:allow

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008204

Page 205: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–6 Permitindo herança de ACL em arquivos e diretórios (Continuação)

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

As séries de exemplos abaixo identificam as ACLs do arquivo e do diretório aplicadas quandoambos sinalizadores, file_inherit e dir_inherit , estão definidos.

No exemplo abaixo, o usuário gozer tem permissões de leitura, gravação e execução herdadaspor arquivos e diretórios recém-criados.

# chmod A+user:gozer:read_data/write_data/execute:file_inherit/dir_inherit:allow

test3.dir

# ls -dv test3.dir

drwxr-xr-x+ 2 root root 2 Jun 20 14:41 test3.dir

0:user:gozer:list_directory/read_data/add_file/write_data/execute

:file_inherit/dir_inherit:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

# touch test3.dir/file.3

# ls -v test3.dir/file.3

-rw-r--r--+ 1 root root 0 Jun 20 14:42 test3.dir/file.3

0:user:gozer:write_data/execute:deny

1:user:gozer:read_data/write_data/execute:allow

2:owner@:execute:deny

3:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

4:group@:write_data/append_data/execute:deny

5:group@:read_data:allow

6:everyone@:write_data/append_data/write_xattr/execute/write_attributes

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 205

Page 206: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–6 Permitindo herança de ACL em arquivos e diretórios (Continuação)

/write_acl/write_owner:deny

7:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

# mkdir test3.dir/subdir.1

# ls -dv test3.dir/subdir.1

drwxr-xr-x+ 2 root root 2 Jun 20 15:13 test3.dir/subdir.1

0:user:gozer:list_directory/read_data/add_file/write_data/execute

:file_inherit/dir_inherit/inherit_only:allow

1:user:gozer:add_file/write_data:deny

2:user:gozer:list_directory/read_data/add_file/write_data/execute:allow

3:owner@::deny

4:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

5:group@:add_file/write_data/add_subdirectory/append_data:deny

6:group@:list_directory/read_data/execute:allow

7:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

8:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Nestes exemplos, pelo fato de os bits de permissão do diretório pai em group@ e everyone@negarem as permissões de gravação e execução, o usuário gozer não tem permissões degravação e execução. A propriedade aclmode padrão é securerestricted, o que indica que aspermissões write_data e execute não são herdadas.

No exemplo abaixo, o usuário gozer tem permissões de leitura, gravação e execução herdadaspor arquivos recém-criados, mas que não são propagadas para o conteúdo subseqüente dodiretório.

# chmod A+user:gozer:read_data/write_data/execute:file_inherit/no_propagate:allow

test4.dir

# ls -dv test4.dir

drwxr-xr-x+ 2 root root 2 Jun 20 14:46 test4.dir

0:user:gozer:list_directory/read_data/add_file/write_data/execute

:file_inherit/no_propagate:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008206

Page 207: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–6 Permitindo herança de ACL em arquivos e diretórios (Continuação)

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Conforme ilustra o exemplo abaixo, quando um novo subdiretório é criado, a permissãoread_data/write_data/execute do usuário gozer não se propaga para o novo diretóriosub4.dir.

mkdir test4.dir/sub4.dir

# ls -dv test4.dir/sub4.dir

drwxr-xr-x 2 root root 2 Jun 20 15:14 test4.dir/sub4.dir

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data:deny

3:group@:list_directory/read_data/execute:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Conforme ilustra o exemplo abaixo, a permissão read_data/write_data/execute do gozer sepropaga para o arquivo recém-criado.

# touch test4.dir/file.4

# ls -v test4.dir/file.4

-rw-r--r--+ 1 root root 0 Jun 20 15:22 test4.dir/file.4

0:user:gozer:write_data/execute:deny

1:user:gozer:read_data/write_data/execute:allow

2:owner@:execute:deny

3:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

4:group@:write_data/append_data/execute:deny

5:group@:read_data:allow

6:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

7:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

EXEMPLO 8–7 Herança da ACL com o modo de ACL definido como passagem

Se a propriedade aclmode estiver definida como passthrough no sistema de arquivostank/cindy, o usuário gozer pode herdar a ACL aplicada em test4.dir para o file.4

recém-criado da seguinte forma:

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 207

Page 208: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–7 Herança da ACL com o modo de ACL definido como passagem (Continuação)

# zfs set aclmode=passthrough tank/cindy

# touch test4.dir/file.4

# ls -v test4.dir/file.4

-rw-r--r--+ 1 root root 0 Jun 20 15:25 test4.dir/file.4

0:user:gozer:write_data/execute:deny

1:user:gozer:read_data/write_data/execute:allow

2:owner@:execute:deny

3:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

4:group@:write_data/append_data/execute:deny

5:group@:read_data:allow

6:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

7:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

Essa saída ilustra que a ACLread_data/write_data/execute:allow:file_inherit/dir_inherit definida no diretóriopai, test4.dir, é passada para o usuário gozer.

EXEMPLO 8–8 Herança da ACL com o modo de ACL definido como descartar

Se a propriedade aclmode estiver definida como discard em um sistema de arquivos, as ACLspodem ser potencialmente descartadas quando os bits de permissão de um diretório se alteram.Por exemplo:

# zfs set aclmode=discard tank/cindy

# chmod A+user:gozer:read_data/write_data/execute:dir_inherit:allow test5.dir

# ls -dv test5.dir

drwxr-xr-x+ 2 root root 2 Feb 16 11:23 test5.dir

0:user:gozer:list_directory/read_data/add_file/write_data/execute

:dir_inherit:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008208

Page 209: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–8 Herança da ACL com o modo de ACL definido como descartar (Continuação)

# zfs set aclmode=discard tank/cindy

# chmod A+user:gozer:read_data/write_data/execute:dir_inherit:allow test5.dir

# ls -dv test5.dir

drwxr-xr-x+ 2 root root 2 Jun 20 15:21 test5.dir

0:user:gozer:list_directory/read_data/add_file/write_data/execute

:dir_inherit:allow

1:owner@::deny

2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

3:group@:add_file/write_data/add_subdirectory/append_data:deny

4:group@:list_directory/read_data/execute:allow

5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Se, mais tarde, você decidir comprimir os bits de permissão em um diretório, a ACLnão-comum é descartada. Por exemplo:

# chmod 744 test5.dir

# ls -dv test5.dir

drwxr--r-- 2 root root 2 Jun 20 15:21 test5.dir

0:owner@::deny

1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

2:group@:add_file/write_data/add_subdirectory/append_data/execute:deny

3:group@:list_directory/read_data:allow

4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/execute/write_attributes/write_acl/write_owner:deny

5:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl

/synchronize:allow

EXEMPLO 8–9 Herança da ACL com o modo de herança da ACL definido como não permitir

No exemplo abaixo, estão definidas duas ACLs não-comuns com herança de arquivo. Uma ACLconcede a permissão read_data e outra ACL nega a permissão read_data. Este exemplo ilustratambém como você pode especificar duas ACEs no mesmo comando chmod.

# zfs set aclinherit=noallow tank/cindy

# chmod A+user:gozer:read_data:file_inherit:deny,user:lp:read_data:file_inherit:allow

test6.dir

# ls -dv test6.dir

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 209

Page 210: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–9 Herança da ACL com o modo de herança da ACL definido como não permitir(Continuação)

drwxr-xr-x+ 2 root root 2 Jun 20 15:24 test6.dir

0:user:gozer:read_data:file_inherit:deny

1:user:lp:read_data:file_inherit:allow

2:owner@::deny

3:owner@:list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:allow

4:group@:add_file/write_data/add_subdirectory/append_data:deny

5:group@:list_directory/read_data/execute:allow

6:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:deny

7:everyone@:list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:allow

Conforme mostra o exemplo abaixo, quando um novo arquivo é criado, a ACL que concede apermissão read_data é descartada.

# touch test6.dir/file.6

# ls -v test6.dir/file.6

-rw-r--r-- 1 root root 0 Jun 20 15:25 test6.dir/file.6

0:owner@:execute:deny

1:owner@:read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:allow

2:group@:write_data/append_data/execute:deny

3:group@:read_data:allow

4:everyone@:write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:deny

5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize

:allow

EXEMPLO 8–10 Herança da ACL com o modo de herança de ACL definido como passagem

Um sistema de arquivos que apresenta a propriedade aclinherit definida como passthrough

herda todas as entradas da ACL sem as modificações feitas em tais entradas quando estas sãoherdadas. Quando o valor da propriedade estiver definido como passthrough, os arquivos sãocriados com um modo de permissão determinado pelas ACEs herdáveis. Se não houver ACEsherdáveis que afetem o modo de permissão, então o modo de permissão será definido de acordocom o modo solicitado do aplicativo.

Os exemplos seguintes usam a sintaxe compacta de ACL para mostrar como herdar bits depermissão definindo o modo aclinherit como passthrough.

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Guia de administração do ZFS Solaris • Setembro de 2008210

Page 211: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–10 Herança da ACL com o modo de herança de ACL definido como passagem(Continuação)

Neste exemplo, uma ACL está definida no test1.dir para forçar a herança. A sintaxe cria umaentrada ACL de owner@, group@ e everyone@ para os arquivos recém-criados. O diretóriosrecém-criados herdam uma entrada ACL de @owner, group@ e everyone@. Além disso, osdiretórios herdam outras 6 ACEs que propagam as ACEs para os arquivos e diretóriosrecém-criados.

# zfs set aclinherit=passthrough tank/cindys

# pwd

/tank/cindys

# mkdir test1.dir

# chmod A=owner@:rwxpcCosRrWaAdD:fd:allow,group@:rwxp:fd:allow,everyone@::fd:allow

test1.dir

# ls -Vd test1.dir

drwxrwx---+ 2 root root 2 Jul 29 10:56 test1.dir

owner@:rwxpdDaARWcCos:fd----:allow

group@:rwxp----------:fd----:allow

everyone@:--------------:fd----:allow

Neste exemplo, o arquivo recém-criado herda a ACL que foi especificada para ser herdada nosarquivos recém-criados.

# cd test1.dir

# touch file.1

# ls -V file.1

-rwxrwx---+ 1 root root 0 Jul 29 10:58 file.1

owner@:rwxpdDaARWcCos:------:allow

group@:rwxp----------:------:allow

everyone@:--------------:------:allow

Neste exemplo, o diretório recém-criado herda as ACEs que controlam o acesso a este diretório,bem como as ACEs para futuras propagações para os filhos do diretório recém-criado.

# mkdir subdir.1

# ls -dV subdir.1

drwxrwx---+ 2 root root 2 Jul 29 10:59 subdir.1

owner@:rwxpdDaARWcCos:fdi---:allow

owner@:rwxpdDaARWcCos:------:allow

group@:rwxp----------:fdi---:allow

group@:rwxp----------:------:allow

everyone@:--------------:fdi---:allow

everyone@:--------------:------:allow

Definindo e exibindo ACLs em arquivos ZFS no formato verboso

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 211

Page 212: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–10 Herança da ACL com o modo de herança de ACL definido como passagem(Continuação)

As entradas -di-- e f-i--- servem para propagar herança e não são consideradas durante ocontrole de acesso. Neste exemplo, é criado um arquivo com uma ACL comum em outrodiretório no qual as ACEs herdadas não estão presentes.

# cd /tank/cindys

# mkdir test2.dir

# cd test2.dir

# touch file.2

# ls -V file.2

-rw-r--r-- 1 root root 0 Jul 29 11:15 file.2

owner@:--x-----------:------:deny

owner@:rw-p---A-W-Co-:------:allow

group@:-wxp----------:------:deny

group@:r-------------:------:allow

everyone@:-wxp---A-W-Co-:------:deny

everyone@:r-----a-R-c--s:------:allow

Definindo e exibindo ACLs em arquivos ZFS no formatocompacto

Você pode definir e exibir as permissões em arquivos ZFS em um formato compacto que usaunicamente 14 letras para representar as permissões. As letras que representam as permissõescompactas estão listadas na Tabela 8–2 e na Tabela 8–3.

Você pode exibir listagens de ACLs compactas de arquivos e diretórios usando o comando ls

-V. Por exemplo:

# ls -V file.1

-rw-r--r-- 1 root root 206663 Feb 16 11:00 file.1

owner@:--x-----------:------:deny

owner@:rw-p---A-W-Co-:------:allow

group@:-wxp----------:------:deny

group@:r-------------:------:allow

everyone@:-wxp---A-W-Co-:------:deny

everyone@:r-----a-R-c--s:------:allow

A saída de ACL compacta é descrita da seguinte forma:

owner@ O proprietário não tem permissões de execução para o arquivo (x= execute).

owner@ O proprietário pode ler e modificar o conteúdo do arquivo (rw=read_data/write_data), (p= append_data). O proprietário também pode

Definindo e exibindo ACLs em arquivos ZFS no formato compacto

Guia de administração do ZFS Solaris • Setembro de 2008212

Page 213: Guia de amdiminstracao do zfs solaris

modificar os atributos do arquivo, tais como carimbo de data/hora, atributosestendidos e ACLs (A=write_xattr , W=write_attributes, C= write_acl).Além disso, o proprietário pode modificar a propriedade do arquivo(o=write_owner).

group@ O grupo não tem permissões de modificação e execução para o arquivo(write_data, p=append_data e x=execute).

group@ O grupo tem permissões de leitura para o arquivo (r= read_data).

everyone@ Todos os que não são nem usuário nem grupo não têm permissão para executarou modificar o conteúdo do arquivo nem para modificar os atributos do arquivo(w=write_data, x= execute, p=append_data, A=write_xattr,W=write_attributes , C=write_acl e o= write_owner).

everyone@ Todos os que não são nem usuários nem grupos têm permissões de leitura parao arquivo e para os atributos do arquivo (r=read_data, a=append_data,R=read_xattr , c=read_acl e s= synchronize). A permissão de acessosynchronize não está implementada atualmente.

A ACL de formato compacto oferece as seguintes vantagens em relação à ACL de formatoverboso:

■ As permissões podem ser especificadas como argumentos posicionais para o comandochmod.

■ Os hífens (-), que indicam "sem permissões", podem ser removidos e somente as letrasrequeridas devem ser especificadas.

■ Ambos sinalizadores, de permissões e de herança, estão definidos no mesmo modo.

Para obter mais informações sobre o uso de ACL de formato compacto, consulte “Definindo eexibindo ACLs em arquivos ZFS no formato verboso” na página 196.

EXEMPLO 8–11 Definindo e exibindo ACLs em formato compacto

No exemplo abaixo, existe uma ACL comum no file.1:

# ls -V file.1

-rw-r-xr-x 1 root root 206663 Feb 16 11:00 file.1

owner@:--x-----------:------:deny

owner@:rw-p---A-W-Co-:------:allow

group@:-w-p----------:------:deny

group@:r-x-----------:------:allow

everyone@:-w-p---A-W-Co-:------:deny

everyone@:r-x---a-R-c--s:------:allow

Neste exemplo, as permissões read_data/execute são adicionadas ao usuário gozer em file.1.

Definindo e exibindo ACLs em arquivos ZFS no formato compacto

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 213

Page 214: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–11 Definindo e exibindo ACLs em formato compacto (Continuação)

# chmod A+user:gozer:rx:allow file.1

# ls -V file.1

-rw-r-xr-x+ 1 root root 206663 Feb 16 11:00 file.1

user:gozer:r-x-----------:------:allow

owner@:--x-----------:------:deny

owner@:rw-p---A-W-Co-:------:allow

group@:-w-p----------:------:deny

group@:r-x-----------:------:allow

everyone@:-w-p---A-W-Co-:------:deny

everyone@:r-x---a-R-c--s:------:allow

Outra forma de adicionar as mesmas permissões para o usuário gozer é inserir uma nova ACLem uma posição específica, 4, por exemplo. As ACLs existentes nas posições 4–6 são levadaspara baixo. Por exemplo:

# chmod A4+user:gozer:rx:allow file.1

# ls -V file.1

-rw-r-xr-x+ 1 root root 206663 Feb 16 11:00 file.1

owner@:--x-----------:------:deny

owner@:rw-p---A-W-Co-:------:allow

group@:-w-p----------:------:deny

group@:r-x-----------:------:allow

user:gozer:r-x-----------:------:allow

everyone@:-w-p---A-W-Co-:------:deny

everyone@:r-x---a-R-c--s:------:allow

No exemplo abaixo, o usuário gozer tem permissões de leitura, gravação e execução que sãoherdadas pelos novos arquivos e diretórios através do formato compacto de ACL.

# chmod A+user:gozer:rwx:fd:allow dir.2

# ls -dV dir.2

drwxr-xr-x+ 2 root root 2 Aug 28 13:21 dir.2

user:gozer:rwx-----------:fd----:allow

owner@:--------------:------:deny

owner@:rwxp---A-W-Co-:------:allow

group@:-w-p----------:------:deny

group@:r-x-----------:------:allow

everyone@:-w-p---A-W-Co-:------:deny

everyone@:r-x---a-R-c--s:------:allow

Você também pode recortar e colar os sinalizadores de permissões e de herança da saída ls -Vno formato compacto chmod. Por exemplo, para duplicar os sinalizadores de permissões e deherança no dir.2 do usuário gozer para o usuário cindys em dir.2, copie e cole ossinalizadores de permissão e de herança (rwx-----------:f-----:allow ) no seu comandochmod. Por exemplo:

Definindo e exibindo ACLs em arquivos ZFS no formato compacto

Guia de administração do ZFS Solaris • Setembro de 2008214

Page 215: Guia de amdiminstracao do zfs solaris

EXEMPLO 8–11 Definindo e exibindo ACLs em formato compacto (Continuação)

# chmod A+user:cindys:rwx-----------:fd----:allow dir.2

# ls -dV dir.2

drwxr-xr-x+ 2 root root 2 Aug 28 14:12 dir.2

user:cindys:rwx-----------:fd----:allow

user:gozer:rwx-----------:fd----:allow

owner@:--------------:------:deny

owner@:rwxp---A-W-Co-:------:allow

group@:-w-p----------:------:deny

group@:r-x-----------:------:allow

everyone@:-w-p---A-W-Co-:------:deny

everyone@:r-x---a-R-c--s:------:allow

Definindo e exibindo ACLs em arquivos ZFS no formato compacto

Capítulo 8 • Usando ACLs para proteger arquivos ZFS 215

Page 216: Guia de amdiminstracao do zfs solaris

216

Page 217: Guia de amdiminstracao do zfs solaris

Administração delegada de ZFS

Este capítulo descreve como usar a administração delegada para permitir que usuáriosnão-privilegiados realizem tarefas de administração no ZFS.

■ “Visão geral da administração delegada de ZFS” na página 217■ “Delegando permissões do ZFS” na página 218■ “Exibindo permissões delegadas do ZFS (Exemplos)” na página 222■ “Delegando permissões do ZFS (Exemplos)” na página 223■ “Removendo permissões do ZFS (Exemplos)” na página 228

Visão geral da administração delegada de ZFSEste recurso permite distribuir permissões refinadas a usuários específicos, grupos ou a todos.São suportados dois tipos de permissões delegadas:

■ As permissões individuais podem ser explicitamente especificadas como criar, destruir,montar, realizar um instantâneo, etc.

■ Os grupos de permissões denominados conjuntos de permissões podem ser definidos. Umconjunto de permissões pode ser atualizado mais tarde e todos os consumidores desteconjunto adquirem automaticamente a alteração. Os conjuntos de permissões começamcom o caractere @ e estão limitados a 64 caracteres. Depois do caractere @, os caracteresrestantes do nome do conjunto apresentam as mesmas restrições que os nomes de umsistema de arquivos ZFS normal.

A administração delegada de ZFS oferece recursos semelhantes ao modelo de segurança RBAC.O modelo de delegação do ZFS oferece as seguintes vantagens na administração de pools dearmazenamento e sistemas de arquivos ZFS:

■ As permissões seguem o pool de armazenamento do ZFS quando tal pool for migrado.■ Oferece herança dinâmica para que seja possível controlar como as permissões se propagam

pelos sistemas de arquivos.

9C A P Í T U L O 9

217

Page 218: Guia de amdiminstracao do zfs solaris

■ Pode ser configurado de forma que somente o criador de um sistema de arquivos possadestruir tal sistema de arquivos.

■ Você pode distribuir permissões para especificar sistemas de arquivos. Os sistemas dearquivos recém-criados podem adquirir automaticamente as permissões.

■ Este modelo oferece uma administração simples de NFS. Por exemplo, um usuário compermissões explícitas pode criar um instantâneo sobre o NFS no diretório .zfs/snapshot

apropriado.

Considere o uso da administração delegada para distribuir tarefas do ZFS. Para obter maisinformações sobre o uso de RBAC para gerenciar tarefas gerais de administração do Solaris,consulte Parte III, “Roles, Rights Profiles, and Privileges,” no System Administration Guide:Security Services.

Desativando permissões delegadas do ZFSVocê pode ativar ou desativar a administração delegada definindo a propriedade delegationdo pool. Por exemplo:

# zpool get delegation users

NAME PROPERTY VALUE SOURCE

users delegation on default

# zpool set delegation=off users

# zpool get delegation users

NAME PROPERTY VALUE SOURCE

users delegation off local

Por padrão, a propriedade delegation é habilitada.

Delegando permissões do ZFSVocê pode usar o comando zfs allow a fim de conceder permissões em conjuntos de dadosZFS a usuários não-privilegiados das seguintes formas:

■ As permissões individuais podem ser concedidas a um usuário, grupo ou todos.■ Os grupos de permissões individuais podem ser concedidos como um conjunto de

permissões a um usuário, grupo ou todos.■ As permissões podem ser concedidas tanto localmente apenas ao conjunto de dados atual

quanto a todos os descendentes do conjunto de dados atual.

A tabela abaixo descreve as operações que podem ser delegadas e as permissões dependentesrequeridas para realizar as operações delegadas.

Delegando permissões do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008218

Page 219: Guia de amdiminstracao do zfs solaris

Permissão (Subcomando) Descrição Dependências

allow A capacidade que você tem de concederpermissões a outro usuário.

Também deve ter a permissão que estásendo concedida.

clone A capacidade de clonar quaisquerinstantâneos do conjunto de dados.

Deve também possuir as capacidadescreate e mount no sistema de arquivos deorigem.

create A capacidade de criar conjuntos dedados descendentes.

Também deve possuir a capacidade mount.

destroy A capacidade de destruir um conjuntode dados.

Também dever possuir a capacidademount.

mount A capacidade de montar e desmontar umconjunto de dados e de criar e destruir oslinks do dispositivo de volume.

promote A capacidade de promover um clone deum conjunto de dados.

Também deve possuir as capacidadesmount e promote no sistema de arquivos deorigem.

receive A capacidade de criar sistemas dearquivos dependentes com o comandozfs receive.

Também deve possuir as capacidadesmount e create.

rename A capacidade de renomear um conjuntode dados.

Também deve possuir as capacidadescreate e mount no novo pai.

reversão A capacidade de reverter uminstantâneo.

Também deve possuir a capacidade mount.

send A capacidade de enviar um fluxo deinstantâneo.

share A capacidade de compartilhar e cancelaro compartilhamento de um conjunto dedados.

instantâneo A capacidade de obter um instantâneode um conjunto de dados.

Além disso, você pode delegar as seguintes propriedades do ZFS a usuários não raiz:

■ aclinherit

■ aclmode

■ atime

■ canmount

■ casesensitivity

■ soma de verificação

■ compression

Delegando permissões do ZFS

Capítulo 9 • Administração delegada de ZFS 219

Page 220: Guia de amdiminstracao do zfs solaris

■ copies

■ devices

■ exec

■ mountpoint

■ nbmand

■ normalization

■ quota

■ readonly

■ recordsize

■ reservation

■ setuid

■ shareiscsi

■ sharenfs

■ sharesmb

■ snapdir

■ userprop

■ utf8only

■ version

■ volsize

■ vscan

■ xattr

■ zoned

Algumas destas propriedades podem ser definidas somente durante a criação do conjunto dedados. Para obter uma descrição destas propriedades, consulte “Introduzindo as propriedadesdo ZFS” na página 141.

Descrição de sintaxe para permissões de delegação(zfs allow)A sintaxe de zfs allow é a seguinte:

# zfs allow -[ldugecs] everyone|user|group[,,...] perm|@setname,...] filesystem| volume

A sintaxe de zfs allow abaixo (em negrito) identifica a quem as permissões são delegadas:

zfs allow [-uge]|user|group|everyone [,...] filesystem | volume

Podem ser especificadas várias entidades em uma lista separada por vírgulas. Se não forespecificada nenhuma opção -uge , o argumento é interpretado preferencialmente como apalavra-chave everyone, a seguir, como um nome de usuário e, por último, como um nome degrupo. Para especificar um usuário ou grupo denominado “everyone”, use a opção -u ou -g.Para especificar um grupo com o mesmo nome de um usuário, use a opção -g. A opção -c

concede as permissões no momento da criação.

Delegando permissões do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008220

Page 221: Guia de amdiminstracao do zfs solaris

A sintaxe de zfs allow abaixo (em negrito) identifica como as permissões e os conjuntos depermissões são especificados:

zfs allow [-s] ... perm|@setname [,...] filesystem | volume

Podem ser especificadas várias permissões em uma lista separada por vírgulas. Os nomes daspermissões são os mesmo dos subcomandos e propriedades do ZFS. Para obter maisinformações, consulte a seção anterior.

As permissões podem ser reunidas em conjuntos de permissões e são definidas pela opção -s. Osconjuntos de permissões podem ser usados por outros comandos zfs allow no sistema dearquivos especificado e seus descendentes. Os conjuntos de permissões são avaliadosdinamicamente, de modo que as alterações no conjunto são atualizadas imediatamente. Osconjuntos de permissões seguem as mesmas convenções de nomeação dos sistemas de arquivosZFS, mas o nome deve começar com o sinal de arroba (@) e não pode ter mais de 64 caracteres.

A sintaxe de zfs allow abaixo (em negrito) identifica como as permissões são delegadas:

zfs allow [-ld] ... ... filesystem | volume

A opção -l indica que a permissão é concedida ao conjunto de dados especificado e não a seusdescendentes, a menos que a opção -d também seja especificada. A opção -d indica que apermissão é concedida aos conjuntos de dados descendentes e não a este conjunto de dados, amenos que a opção -l também seja especificada. Se nenhuma das opções -ld foremespecificadas, as permissões são concedidas ao sistema de arquivos ou volume e a todos os seusdescendentes.

Removendo as permissões delegadas do ZFS (zfsunallow)Você pode remover as permissões concedidas anteriormente com o comando zfs unallow.

Por exemplo, suponha que delegou as permissões create, destroy, mount e snapshot daseguinte forma:

# zfs allow cindys create,destroy,mount,snapshot tank/cindys

# zfs allow tank/cindys

-------------------------------------------------------------

Local+Descendent permissions on (tank/cindys)

user cindys create,destroy,mount,snapshot

-------------------------------------------------------------

Para remover estas permissões, pode ser necessário usar uma sintaxe semelhante à seguinte:

# zfs unallow cindys tank/cindys

# zfs allow tank/cindys

Delegando permissões do ZFS

Capítulo 9 • Administração delegada de ZFS 221

Page 222: Guia de amdiminstracao do zfs solaris

Usando a administração delegada de ZFSEsta seção oferece exemplos de exibição e delegação de permissões delegadas do ZFS.

Exibindo permissões delegadas do ZFS (Exemplos)Você pode usar o comando seguinte para exibir permissões:

# zfs allow dataset

Este comando exibe permissões que são definidas ou concedidas a este conjunto de dados. Asaída contém os seguintes componentes:■ Conjuntos de permissões■ Permissões específicas ou permissões no momento da criação■ Conjunto de dados local■ Conjuntos de dados locais e descendentes■ Conjuntos de dados descendentes somente

EXEMPLO 9–1 Exibindo permissões básicas de administração delegada

A saída do exemplo seguinte indica que o usuário cindys tem permissões para criar, destruir,montar e realizar um instantâneo no sistema de arquivos tank/cindys.

# zfs allow tank/cindys

-------------------------------------------------------------

Local+Descendent permissions on (tank/cindys)

user cindys create,destroy,mount,snapshot

EXEMPLO 9–2 Exibindo permissões complexas de administração delegada

A saída deste exemplo indica as seguintes permissões nos sistemas de arquivos pool/fred epool.

Para o sistema de arquivos pool/fred:

■ São definidas dois conjuntos de permissões:■ @eng (create, destroy, snapshot, mount, clone, promote, rename)■ @simple (create, mount)

■ As permissões do tempo da criação são definidas para o conjunto de permissões @eng e apropriedade mountpoint. Tempo de criação significa que o conjunto de permissões @eng e apropriedade mountpoint são concedidas depois da criação do conjunto de dados.

■ Ao usuário tom é concedido o conjunto de permissões @eng e ao usuário joe são concedidasas permissões create, destroy e mount para sistemas de arquivos locais.

Usando a administração delegada de ZFS

Guia de administração do ZFS Solaris • Setembro de 2008222

Page 223: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–2 Exibindo permissões complexas de administração delegada (Continuação)

■ Ao usuário fred é concedido o conjunto de permissões @basic e as permissões share erename para os sistemas de arquivos locais e descendentes.

■ Ao usuário barney e ao grupo staff é concedido o conjunto de permissões @basic somentepara os sistemas de arquivos descendentes.

Para o sistema de arquivos pool:■ Está definido o conjunto de permissões @simple (create, destroy, mount).■ Ao grupo staff é concedido o conjunto de permissões @simple no sistema de arquivos

local.

Eis a saída deste exemplo:

$ zfs allow pool/fred

------------------------------------------------------------------------------

Permission sets on (pool/fred)

@eng create,destroy,snapshot,mount,clone,promote,rename

@simple create,mount

Create time permissions on (pool/fred)

@eng,mountpoint

Local permissions on (pool/fred)

user tom @eng

user joe create,destroy,mount

Local+Descendent permissions on (pool/fred)

user fred @basic,share,rename

Descendent permissions on (pool/fred)

user barney @basic

group staff @basic

------------------------------------------------------------------------------

Permission sets on (pool)

@simple create,destroy,mount

Local permissions on (pool)

group staff @simple

------------------------------------------------------------------------------

Delegando permissões do ZFS (Exemplos)EXEMPLO 9–3 Delegando permissões a um usuário individual

Ao fornecer as permissões create e mount a um usuário individual, você precisa ter certeza deque o usuário tem as permissões no ponto de montagem subjacente.

Por exemplo, para dar ao usuário marks as permissões create e mount em tank, defina primeiroas permissões:

Usando a administração delegada de ZFS

Capítulo 9 • Administração delegada de ZFS 223

Page 224: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–3 Delegando permissões a um usuário individual (Continuação)

# chmod A+user:marks:add_subdirectory:fd:allow /tank

A seguir, use o comando zfs allow para conceder as permissões create, destroy e mount. Porexemplo:

# zfs allow marks create,destroy,mount tank

Agora, o usuário marks pode criar seus próprios sistemas de arquivos no sistema de arquivostank. Por exemplo:

# su marks

marks$ zfs create tank/marks

marks$ ^D

# su lp

$ zfs create tank/lp

cannot create ’tank/lp’: permission denied

EXEMPLO 9–4 Delegando as permissões de criação e destruição a um grupo

O exemplo abaixo mostra como configurar um sistema de arquivos para que todos no grupostaff possam criar e montar sistemas de arquivos no sistema de arquivos tank, bem comodestruir seus próprios sistemas de arquivos. No entanto, os membros do grupo staff nãopodem destruir os sistemas de arquivos de outros.

# zfs allow staff create,mount tank

# zfs allow -c create,destroy tank

# zfs allow tank

-------------------------------------------------------------

Create time permissions on (tank)

create,destroy

Local+Descendent permissions on (tank)

group staff create,mount

-------------------------------------------------------------

# su cindys

cindys% zfs create tank/cindys

cindys% exit

# su marks

marks% zfs create tank/marks/data

marks% exit

cindys% zfs destroy tank/marks/data

cannot destroy ’tank/mark’: permission denied

Usando a administração delegada de ZFS

Guia de administração do ZFS Solaris • Setembro de 2008224

Page 225: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–5 Delegando permissões no nível correto do sistema de arquivos

Certifique-se de ter concedido a permissão aos usuários no nível correto do sistema de arquivos.Por exemplo, ao usuário marks são concedidas as permissões create, destroy e mount para ossistemas de arquivos locais e descendentes. Ao usuário marks é concedida a permissão localpara realizar instantâneos do sistema de arquivos tank, mas não tem permissão para realizarinstantâneos do seu próprio sistema de arquivos. Assim, ele não tem a permissãosnapshot nonível correto do sistema de arquivos.

# zfs allow -l marks snapshot tank

# zfs allow tank

-------------------------------------------------------------

Local permissions on (tank)

user marks snapshot

Local+Descendent permissions on (tank)

user marks create,destroy,mount

-------------------------------------------------------------

# su marks

marks$ zfs snapshot tank/@snap1

marks$ zfs snapshot tank/marks@snap1

cannot create snapshot ’mark/marks@snap1’: permission denied

Para conceder ao usuário marks a permissão no nível do descendente, use a opção zfs allow

- d. Por exemplo:

# zfs unallow -l marks snapshot tank

# zfs allow -d marks snapshot tank

# zfs allow tank

-------------------------------------------------------------

Descendent permissions on (tank)

user marks snapshot

Local+Descendent permissions on (tank)

user marks create,destroy,mount

-------------------------------------------------------------

# su marks

$ zfs snapshot tank@snap2

cannot create snapshot ’sandbox@snap2’: permission denied

$ zfs snapshot tank/marks@snappy

Agora, o usuário marks pode somente criar um instantâneo abaixo do nível tank.

EXEMPLO 9–6 Definindo e usando permissões delegadas complexas

Você pode conceder permissões específicas a usuários ou grupos. Por exemplo, o comando zfs

allow seguinte concede permissões específicas ao grupo staff. Além disso, as permissõesdestroy e snapshot são concedidas após a criação dos sistemas de arquivos tank.

Usando a administração delegada de ZFS

Capítulo 9 • Administração delegada de ZFS 225

Page 226: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–6 Definindo e usando permissões delegadas complexas (Continuação)

# zfs allow staff create,mount tank

# zfs allow -c destroy,snapshot tank

# zfs allow tank

-------------------------------------------------------------

Create time permissions on (tank)

destroy,snapshot

Local+Descendent permissions on (tank)

group staff create,mount

-------------------------------------------------------------

Por ser um membro do grupo staff, o usuário marks pode criar sistemas de arquivos tank.Além disso, o usuário marks pode criar um instantâneo de tank/marks2 porque possui aspermissões específicas para isso. Por exemplo:

# su marks

$ zfs create tank/marks2

$ zfs allow tank/marks2

-------------------------------------------------------------

Local permissions on (tank/marks2)

user marks destroy,snapshot

-------------------------------------------------------------

Create time permissions on (tank)

destroy,snapshot

Local+Descendent permissions on (tank)

group staff create

everyone mount

-------------------------------------------------------------

Porém, ele não pode criar um instantâneo em tank/marks porque não possui as permissõesespecíficas para isso. Por exemplo:

$ zfs snapshot tank/marks2@snap1

$ zfs snapshot tank/marks@snappp

cannot create snapshot ’tank/marks@snappp’: permission denied

Se tiver a permissão create no diretório de início, você pode criar seus próprios diretórios deinstantâneos. Esta situação é útil quando o sistema de arquivos está montado em NFS. Porexemplo:

$ cd /tank/marks2

$ ls

$ cd .zfs

$ ls

snapshot

$ cd snapshot

$ ls -l

Usando a administração delegada de ZFS

Guia de administração do ZFS Solaris • Setembro de 2008226

Page 227: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–6 Definindo e usando permissões delegadas complexas (Continuação)

total 3

drwxr-xr-x 2 marks staff 2 Dec 15 13:53 snap1

$ pwd

/tank/marks2/.zfs/snapshot

$ mkdir snap2

$ zfs list

NAME USED AVAIL REFER MOUNTPOINT

tank 264K 33.2G 33.5K /tank

tank/marks 24.5K 33.2G 24.5K /tank/marks

tank/marks2 46K 33.2G 24.5K /tank/marks2

tank/marks2@snap1 21.5K - 24.5K -

tank/marks2@snap2 0 - 24.5K -

$ ls

snap1 snap2

$ rmdir snap2

$ ls

snap1

EXEMPLO 9–7 Definindo e usando um conjunto de permissões delegadas do ZFS

O exemplo seguinte mostra como criar um conjunto de permissões @myset e conceder erenomear permissões no grupo staff para o sistema de arquivos tank. O usuário cindys,membro do grupo staff, possui a permissão para criar um sistema de arquivos em tank. Noentanto, o usuário lp não possui a permissão para criar um sistema de arquivos em tank.

# zfs allow -s @myset create,destroy,mount,snapshot,promote,clone,readonly tank

# zfs allow tank

-------------------------------------------------------------

Permission sets on (tank)

@myset clone,create,destroy,mount,promote,readonly,snapshot

-------------------------------------------------------------

# zfs allow staff @myset,rename tank

# zfs allow tank

-------------------------------------------------------------

Permission sets on (tank)

@myset clone,create,destroy,mount,promote,readonly,snapshot

Local+Descendent permissions on (tank)

group staff @myset,rename

# chmod A+group:staff:add_subdirectory:fd:allow tank

# su cindys

cindys% zfs create tank/data

Cindys% zfs allow tank

-------------------------------------------------------------

Permission sets on (tank)

@myset clone,create,destroy,mount,promote,readonly,snapshot

Usando a administração delegada de ZFS

Capítulo 9 • Administração delegada de ZFS 227

Page 228: Guia de amdiminstracao do zfs solaris

EXEMPLO 9–7 Definindo e usando um conjunto de permissões delegadas do ZFS (Continuação)

Local+Descendent permissions on (tank)

group staff @myset,rename

-------------------------------------------------------------

cindys% ls -l /tank

total 15

drwxr-xr-x 2 cindys staff 2 Aug 8 14:10 data

cindys% exit

# su lp

$ zfs create tank/lp

cannot create ’tank/lp’: permission denied

Removendo permissões do ZFS (Exemplos)Você pode usar o comando zfs unallow para remover as permissões concedidas. Por exemplo,o usuário cindys tem permissões para criar, destruir, montar e realizar um instantâneo nosistema de arquivos tank/cindys.

# zfs allow cindys create,destroy,mount,snapshot tank/cindys

# zfs allow tank/cindys

-------------------------------------------------------------

Local+Descendent permissions on (tank/cindys)

user cindys create,destroy,mount,snapshot

-------------------------------------------------------------

A sintaxe seguinte de zfs unallow remove a permissão de criação de instantâneo do usuáriocindys do sistema de arquivos tank/cindys:

# zfs unallow cindys snapshot tank/cindys

# zfs allow tank/cindys

-------------------------------------------------------------

Local+Descendent permissions on (tank/cindys)

user cindys create,destroy,mount

-------------------------------------------------------------

cindys% zfs create tank/cindys/data

cindys% zfs snapshot tank/cindys@today

cannot create snapshot ’tank/cindys@today’: permission denied

Como no outro o exemplo, o usuário marks tem as seguintes permissões em tank/marks:

# zfs allow tank/marks

-------------------------------------------------------------

Local+Descendent permissions on (tank/marks)

user marks create,destroy,mount

-------------------------------------------------------------

Usando a administração delegada de ZFS

Guia de administração do ZFS Solaris • Setembro de 2008228

Page 229: Guia de amdiminstracao do zfs solaris

Neste exemplo, a sintaxe seguinte de zfs unallow remove todas as permissões do usuáriomarks de tank/marks:

# zfs unallow marks tank/marks

A sintaxe seguinte de zfs unallow remove um conjunto de permissões do sistema de arquivostank.

# zfs allow tank

-------------------------------------------------------------

Permission sets on (tank)

@myset clone,create,destroy,mount,promote,readonly,snapshot

Create time permissions on (tank)

create,destroy,mount

Local+Descendent permissions on (tank)

group staff create,mount

-------------------------------------------------------------

# zfs unallow -s @myset tank

$ zfs allow tank

-------------------------------------------------------------

Create time permissions on (tank)

create,destroy,mount

Local+Descendent permissions on (tank)

group staff create,mount

-------------------------------------------------------------

Usando a administração delegada de ZFS

Capítulo 9 • Administração delegada de ZFS 229

Page 230: Guia de amdiminstracao do zfs solaris

230

Page 231: Guia de amdiminstracao do zfs solaris

Tópicos avançados do ZFS

Este capítulo descreve os volumes ZFS, o uso do ZFS em um sistema Solaris com regiõesinstaladas, pools de raiz alternativa e perfis de direitos do ZFS.

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

■ “Volumes ZFS” na página 231■ “Usando ZFS em um sistema Solaris com regiões instaladas” na página 234■ “Usando pools de raiz alternativa do ZFS” na página 239■ “Perfis de direitos do ZFS” na página 241

Volumes ZFSUm volume ZFS consiste em um conjunto de dados que representa um dispositivo de bloco epode ser usado como qualquer dispositivo de bloco. Os volumes ZFS são identificados comodispositivos no diretório /dev/zvol/{dsk,rdsk}/path.

No exemplo abaixo, é criado o volume ZFS de 5 Gbyte, tank/vol:

# zfs create -V 5gb tank/vol

Ao criar um volume, uma reserva com o tamanho inicial do volume é automaticamentedefinida. O tamanho da reserva se estende até igualar o tamanho do volume para que nãoocorra um comportamento inesperado. Por exemplo, se o tamanho do volume diminuir, osdados podem se corromper. Você deve ter cuidado ao alterar o tamanho do volume.

Além disso, se criar um instantâneo de um volume que muda de tamanho, você pode introduzirinconsistências no sistema de arquivos se tentar reverter o instantâneo ou criar um clone doinstantâneo.

Para obter informações sobre as propriedades do sistema de arquivos que podem ser aplicadas avolumes, consulte a Tabela 6–1.

10C A P Í T U L O 1 0

231

Page 232: Guia de amdiminstracao do zfs solaris

Se estiver usando um sistema Solaris com regiões instaladas, você não pode criar ou clonar umvolume ZFS em uma região não global. Qualquer tentativa de criar ou clonar um volume dedentro de uma região não global falhará. Para obter informações sobre o uso de volumes ZFSem uma região global, consulte “Adicionando volumes ZFS a uma região não global”na página 236.

Usando um volume ZFS como um dispositivo depermuta ou de despejoDurante a instalação de um sistema de arquivos raiz ZFS ou a migração de um sistema dearquivos UFS, é criado um dispositivo de permuta em um volume ZFS no pool raiz ZFS. Otamanho da área de permuta tem como base a metade do tamanho da memória física. Porexemplo:

# swap -l

swapfile dev swaplo blocks free

/dev/zvol/dsk/rpool/swap 253,3 16 8257520 8257520

Durante a instalação de um sistema de arquivos raiz ZFS ou a migração de um sistema dearquivos UFS, é criado um dispositivo de despejo em um volume ZFS no pool raiz ZFS. Otamanho do dispositivo de despejo tem como base a metade do tamanho da memória física. Odispositivo de despejo não requer administração depois de configurado. Por exemplo:

# dumpadm

Dump content: kernel pages

Dump device: /dev/zvol/dsk/rpool/dump (dedicated)

Savecore directory: /var/crash/t2000

Savecore enabled: yes

Devido ao CR 6724860, você deve executar savecore manualmente para salvar um despejo detravamento ao usar um volume ZFS de despejo.

Se precisar alterar a área de permuta ou o dispositivo de despejo após a instalação ou atualizaçãodo sistema, use os comandos swap e dumpadm como nas versões anteriores do Solaris. Se precisarconfigurar uma área de permuta adicional, crie um volume ZFS de um tamanho específico eative a permuta nesse dispositivo.

Para configurar uma área de permuta, crie um volume ZFS de um tamanho específico e ative apermuta nesse dispositivo.

No exemplo abaixo, o volume tank/vol de 5 Gbytes é adicionado como um dispositivo depermuta.

# zfs create -V 5gb tank/vol

# swap -a /dev/zvol/dsk/tank/vol

# swap -l

Volumes ZFS

Guia de administração do ZFS Solaris • Setembro de 2008232

Page 233: Guia de amdiminstracao do zfs solaris

swapfile dev swaplo blocks free

/dev/dsk/c0t0d0s1 32,33 16 1048688 1048688

/dev/zvol/dsk/tank/vol 254,1 16 10485744 10485744

Não permute para um arquivo em um sistema de arquivos ZFS. A configuração de arquivos depermuta ZFS não é suportada.

Para obter informações sobre o ajuste do tamanho dos volumes de permuta e despejo, consulte“Ajustando os tamanhos dos dispositivos de permuta e despejo do ZFS” na página 80.

Usando um volume ZFS como um destino iSCSI SolarisOs iniciadores e os destinos iSCSI Solaris são suportados na versão Solaris.

Além disso, é possível criar facilmente um volume ZFS como um destino iSCSI definindo apropriedade shareiscsi no volume. Por exemplo:

# zfs create -V 2g tank/volumes/v2

# zfs set shareiscsi=on tank/volumes/v2

# iscsitadm list target

Target: tank/volumes/v2

iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a

Connections: 0

Depois da criação do destino iSCSI, configure o iniciador iSCSI. Para obter mais informaçõessobre iniciadores e destinos iSCSI Solaris, consulte o Capítulo 14, “Configuring Solaris iSCSITargets and Initiators (Tasks),” no System Administration Guide: Devices and File Systems.

Observação – Os destinos iSCSI Solaris também podem ser criados e gerenciados com ocomando iscsitadm. Se definir a propriedade shareiscsi em um volume ZFS, não use ocomando iscsitadm para criar o mesmo dispositivo de destino. Do contrário, você ficará cominformações de destino duplicadas para o mesmo dispositivo.

Um volume ZFS como um destino iSCSI é gerenciado da mesma forma que outro conjunto dedados ZFS. No entanto, as operações de renomeação, exportação e importação são um poucodiferente nos destinos iSCSI.■ Quando um volume ZFS é renomeado, o nome do destino iSCSI permanece o mesmo. Por

exemplo:

# zfs rename tank/volumes/v2 tank/volumes/v1

# iscsitadm list target

Target: tank/volumes/v1

iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a

Connections: 0

Volumes ZFS

Capítulo 10 • Tópicos avançados do ZFS 233

Page 234: Guia de amdiminstracao do zfs solaris

■ A exportação de um pool que contém um volume ZFS compartilhado faz com que o destinoseja removido. A importação de um pool que contém um volume ZFS compartilhado fazcom que o destino seja compartilhado. Por exemplo:

# zpool export tank

# iscsitadm list target

# zpool import tank

# iscsitadm list target

Target: tank/volumes/v1

iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a

Connections: 0

Todas as informações de configuração do destino iSCSI são armazenadas com o conjunto dedados. Assim como um sistema de arquivos compartilhado NFS, um destino iSCSI que éimportado em um sistema diferente é compartilhado apropriadamente.

Usando ZFS em um sistema Solaris com regiões instaladasAs seções seguintes descrevem como usar o ZFS em um sistema com regiões Solaris.

■ “Adicionando sistemas de arquivos ZFS a uma região não global” na página 235■ “Delegando conjuntos de dados a uma região não global” na página 236■ “Adicionando volumes ZFS a uma região não global” na página 236■ “Usando pools de armazenamento do ZFS dentro de uma região” na página 237■ “Gerenciando propriedades do ZFS dentro de uma região” na página 237■ “Entendendo a propriedade zoned” na página 238

Leve em consideração os seguintes pontos ao associar os conjuntos de dados ZFS a regiões:

■ Você pode adicionar um sistema de arquivos ZFS ou clone do ZFS a uma região não globalcom ou sem delegar o controle administrativo.

■ Você pode adicionar um volume ZFS como um dispositivo a regiões não globais.■ Neste momento, não é possível associar instantâneos do ZFS a regiões.

Nas seções abaixo, um conjunto de dados ZFS refere-se a um sistema de arquivos ou clone.

A adição de um conjunto de dados permite que a região não global compartilhe espaço com aregião global, embora o administrador de regiões não possa controlar as propriedades ou criarnovos sistemas de arquivos na hierarquia do sistema de arquivos subjacente. Ocorre o mesmoao adicionar outro tipo de sistema de arquivos a uma região e deve ser usado quando o objetivoprincipal for unicamente compartilhar espaços comuns.

O ZFS também permite que os conjuntos de dados sejam delegados a uma região não global,proporcionando controle total do administrador de regiões sobre o conjunto de dados e seusfilhos. O administrador de regiões pode criar e destruir os sistemas de arquivos ou clones dentro

Usando ZFS em um sistema Solaris com regiões instaladas

Guia de administração do ZFS Solaris • Setembro de 2008234

Page 235: Guia de amdiminstracao do zfs solaris

deste conjunto de dados e modificar as propriedades do conjunto de dados. O administrador deregiões não pode afetar os conjuntos de dados que foram adicionados à região e não podeexceder as cotas máximas definidas no conjunto de dados exportado.

Leve em consideração as seguintes interações ao trabalhar com ZFS em um sistema Solaris comregiões instaladas:■ Um sistema de arquivos ZFS adicionado a uma região não global deve ter a propriedade

mountpoint definida como legado.■ Devido ao problema 6449301, não adicione um conjunto de dados ZFS em uma região não

global quando a região não global estiver configurada. Em vez disso, adicione um conjuntode dados ZFS depois que região for instalada.

Adicionando sistemas de arquivos ZFS a uma regiãonão globalVocê pode adicionar um sistema de arquivos ZFS como um sistema de arquivos genéricoquando o objetivo for unicamente compartilhar espaço com a região global. Um sistema dearquivos ZFS adicionado a uma região não global deve ter a propriedade mountpoint definidacomo legado.

O sistema de arquivos ZFS pode ser adicionado a uma região não global com o subcomando add

fs do comando zonecfg . Por exemplo:

No exemplo abaixo, um sistema de arquivos ZFS é adicionado a uma região não global por umadministrador global na região global.

# zonecfg -z zion

zonecfg:zion> add fs

zonecfg:zion:fs> set type=zfs

zonecfg:zion:fs> set special=tank/zone/zion

zonecfg:zion:fs> set dir=/export/shared

zonecfg:zion:fs> end

Esta sintaxe adiciona o sistema de arquivos ZFS, tank/zone/zion, à região zion já configurada,montada em /export/shared . A propriedade mountpoint do sistema de arquivos deve serdefinida como legacy (legado), e o sistema de arquivos já não poderá ser montado em outrolocal. O administrador de regiões pode criar e destruir arquivos dentro do sistema de arquivos.O sistema de arquivos não pode ser remontado em outro local e o administrador de regiões nãopode alterar propriedades, como atime, readonly, compression, etc., no sistema de arquivos. Oadministrador de regiões globais é responsável por definir e controlar as propriedades dosistema de arquivos.

Para obter mais informações sobre o comando zonecfg e a configuração dos tipos de recursoscom zonecfg, consulte Parte II, “Regiões,” no Guia de administração de sistema: recipientes doSolaris - gerenciamento de recursos e Solaris Zones.

Usando ZFS em um sistema Solaris com regiões instaladas

Capítulo 10 • Tópicos avançados do ZFS 235

Page 236: Guia de amdiminstracao do zfs solaris

Delegando conjuntos de dados a uma região nãoglobalSe a prioridade for delegar a administração do armazenamento a uma região, o ZFS oferecesuporte à adição de conjuntos de dados a uma região não global usando o subcomando add

dataset do comando zonecfg.

No exemplo abaixo, um sistema de arquivos ZFS é delegado a uma região não global por umadministrador global na região global.

# zonecfg -z zion

zonecfg:zion> add dataset

zonecfg:zion:dataset> set name=tank/zone/zion

zonecfg:zion:dataset> end

Ao contrário da adição de um sistema de arquivos, esta sintaxe faz com que o sistema dearquivos ZFS tank/zone/zion esteja visível dentro da região zion já configurada. Oadministrador de regiões pode definir as propriedades do sistema de arquivos, bem como criarfilhos. Além disso, o administrador de regiões pode fazer instantâneos, criar clones e, por outrolado, controlar toda a hierarquia do sistema de arquivos.

Para obter mais informações sobre que ações são permitidas dentro das regiões, consulte“Gerenciando propriedades do ZFS dentro de uma região” na página 237.

Adicionando volumes ZFS a uma região não globalOs volumes ZFS não podem ser adicionados a uma região não global com o subcomando add

dataset do comando zonecfg. Se for detectada uma tentativa de adicionar um volume ZFS, aregião pode se inicializar. No entanto, os volumes podem ser adicionados a uma região com osubcomando add device do comando zonecfg.

No exemplo abaixo, um volume ZFS é adicionado a uma região não global pelo administradorglobal na região global:

# zonecfg -z zion

zion: No such zone configured

Use ’create’ to begin configuring a new zone.

zonecfg:zion> create

zonecfg:zion> add device

zonecfg:zion:device> set match=/dev/zvol/dsk/tank/vol

zonecfg:zion:device> end

Esta sintaxe exporta o volume tank/vol para a região. Observe que a adição de um volumebruto a uma região apresenta riscos de segurança implícitos, mesmo que o volume nãocorresponda a um dispositivo físico. Em particular, o administrador de regiões poderia criar

Usando ZFS em um sistema Solaris com regiões instaladas

Guia de administração do ZFS Solaris • Setembro de 2008236

Page 237: Guia de amdiminstracao do zfs solaris

sistemas de arquivos inválidos que causariam graves danos no sistema quando houvesse umatentativa de montagem. Para obter mais informações sobre a adição de dispositivos a regiões eos riscos de segurança relacionados, consulte “Entendendo a propriedade zoned” na página 238.

Para obter mais informações sobre a adição de dispositivos a regiões, consulte Parte II,“Regiões,” no Guia de administração de sistema: recipientes do Solaris - gerenciamento derecursos e Solaris Zones.

Usando pools de armazenamento do ZFS dentro deuma regiãoOs pools de armazenamento do ZFS não podem ser criados ou modificados dentro de umaregião. O modelo de administração delegado centraliza o controle dos dispositivos dearmazenamento físico dentro da região global e o controle do armazenamento virtual emregiões não globais. Enquanto um conjunto de dados no nível do pool puder ser adicionado auma região, nenhum comando que modifique as características físicas do pool, como criar,adicionar ou remover dispositivos, poderá ser realizado de dentro de uma região. Mesmo se osdispositivos físicos forem adicionados a uma região com o subcomando add device docomando zonecfg, ou se os arquivos forem usados, o comando zpool não permite a criação denovos pools dentro da região.

Gerenciando propriedades do ZFS dentro de umaregiãoDepois que o conjunto de dados for adicionado a uma região, o administrador de regiõespoderá controlar propriedades específicas do conjunto de dados. Quando um conjunto dedados é adicionado a uma região, todos os seus antepassados estão visíveis como conjuntos dedados somente leitura, enquanto que o próprio conjunto de dados é gravável como seus filhos.Considere, por exemplo, a seguinte configuração:

global# zfs list -Ho name

tank

tank/home

tank/data

tank/data/matrix

tank/data/zion

tank/data/zion/home

Se tank/data/zion fosse adicionado a uma região, cada conjunto de dados teria as seguintespropriedades.

Usando ZFS em um sistema Solaris com regiões instaladas

Capítulo 10 • Tópicos avançados do ZFS 237

Page 238: Guia de amdiminstracao do zfs solaris

Conjunto de dados Visível Gravável Propriedades imutáveis

tank Sim Não -

tank/home Não - -

tank/data Sim Não -

tank/data/matrix Não - -

tank/data/zion Sim Sim sharenfs, zoned, quota,reservation

tank/data/zion/home Sim Sim sharenfs, zoned

Observe que todos os pais de tank/zone/zion estão visíveis como somente leitura, todas osfilhos são graváveis e os conjuntos de dados que não fazem parte da hierarquia pai não estãovisíveis de nenhuma forma. O administrador de regiões não pode alterar a propriedadesharenfs porque as regiões não globais não podem agir como servidores NFS. Também nãopode alterar a propriedade zoned porque isso apresentaria um risco de segurança, conformedescrito na próxima seção.

Qualquer outra propriedade configurável pode ser alterada, exceto a propriedade quota , e opróprio conjunto de dados. Este comportamento permite que o administrador de regiõescontrole o consumo de espaço de todos os conjuntos de dados usados pela região não global.

Além disso, as propriedades sharenfs e mountpoint não podem ser alteradas peloadministrador de regiões global depois que um conjunto de dados tiver sido adicionado a umaregião não global.

Entendendo a propriedade zonedQuando um conjunto de dados é adicionado a uma região não global, ele deve ser identificadocom uma marca especial para que determinadas propriedades não sejam interpretadas dentrodo contexto da região global. Depois que o conjunto de dados tiver sido adicionado a umaregião não global sob o controle de um administrador de regiões, já não será possível confiar noseu conteúdo. Como em qualquer sistema de arquivos, poderia haver binários setuid, linkssimbólicos ou, senão, conteúdos duvidosos que poderiam afetar a segurança da região global.Além disso, a propriedade mountpoint não pode ser interpretada no contexto da região global.Caso contrário, o administrador de regiões poderia afetar o espaço de nome da região global.Para abordar este último, o ZFS usa a propriedade zoned para indicar que um conjunto dedados foi delegado a uma região não global em um dado ponto no tempo.

A propriedade zoned é um valor booleano ativado automaticamente quando uma região,contendo um conjunto de dados ZFS, é inicializada pela primeira vez. Um administrador deregiões não terá que ativar esta propriedade manualmente. Se a propriedade zoned estiver

Usando ZFS em um sistema Solaris com regiões instaladas

Guia de administração do ZFS Solaris • Setembro de 2008238

Page 239: Guia de amdiminstracao do zfs solaris

definida, o conjunto de dados não poderá ser montado nem compartilhado na região global eserá ignorado quando o comando zfs share -a ou o comando zfs mount -a for executado. Noexemplo abaixo, o tank/zone/zion foi adicionado a uma região, enquanto que otank/zone/global não:

# zfs list -o name,zoned,mountpoint -r tank/zone

NAME ZONED MOUNTPOINT

tank/zone/global off /tank/zone/global

tank/zone/zion on /tank/zone/zion

# zfs mount

tank/zone/global /tank/zone/global

tank/zone/zion /export/zone/zion/root/tank/zone/zion

Observe a diferença entre a propriedade mountpoint e o diretório no qual o conjunto de dadostank/zone/zion está montado atualmente. A propriedade mountpoint reflete a propriedadecomo estando armazenada em disco, não onde o conjunto de dados está montado atualmenteno sistema.

Quando um conjunto de dados é removido de uma região ou quando uma região é destruída, apropriedade zoned não é apagada automaticamente. Este comportamento se deve aos riscos desegurança inerentes relacionados a essas tarefas. Devido ao fato de um usuário não confiável tertido total acesso ao conjunto de dados e seus filhos, a propriedade mountpoint pode ser definidacom valores defeituosos ou pode haver binários setuid nos sistemas de arquivos.

Para evitar eventuais riscos de segurança, a propriedade zoned deve ser apagada manualmentepelo administrador global se você quiser reutilizar o conjunto de dados. Antes de definir apropriedade zoned como off, certifique-se de que a propriedade mountpoint do conjunto dedados e de todos os seus filhos esteja definida com valores aceitáveis e que não existam bináriossetuid ou que a propriedade setuid esteja desativada.

Depois de ter verificado que não haja nenhuma vulnerabilidade na segurança, a propriedadezoned pode ser desativada através do comando zfs set ou zfs inherit. Se a propriedadezoned for desativada enquanto um conjunto de dados estiver sendo usado dentro de umaregião, o sistema pode se comportar de forma imprevisível. Altere a propriedade somente setiver certeza de que o conjunto de dados já não esteja sendo usado por uma região não global.

Usando pools de raiz alternativa do ZFSQuando um agrupamento é criado, ele é vinculado ao sistema do host. O sistema do hostmantém-se informado sobre o agrupamento para poder detectar quando o agrupamento nãoestá disponível. Ao mesmo tempo em que são úteis em operações normais, estas informaçõespodem comprovar obstáculos ao se realizar uma inicialização a partir de mídias alternativas ouao criar um agrupamento em uma mídia removível. Para resolver este problema, o ZFS ofereceum recurso de pools de raiz alternativa. O pool de raiz alternativa não é preservado emreinicializações do sistema e todos os pontos de montagem são modificados para terem relaçãocom a raiz do pool.

Usando pools de raiz alternativa do ZFS

Capítulo 10 • Tópicos avançados do ZFS 239

Page 240: Guia de amdiminstracao do zfs solaris

Criando pools de raiz alternativa do ZFSO uso mais comum em relação à criação de um pool de raiz alternativa é o uso deste com mídiasremovíveis. Nesse caso, os usuários querem normalmente um único sistema de arquivos equerem que tal sistema possa ser montado em qualquer parte do sistema de destino. Quandoum pool de raiz alternativa é criado com a opção -R, o ponto de montagem do sistema dearquivos raiz é automaticamente definido como /, que equivale à própria raiz alternativa.

No exemplo abaixo, um pool denominado morpheus é criado com /mnt como caminho de raizalternativa:

# zpool create -R /mnt morpheus c0t0d0

# zfs list morpheus

NAME USED AVAIL REFER MOUNTPOINT

morpheus 32.5K 33.5G 8K /mnt/

Observe o sistema de arquivos único, morpheus, cujo ponto de montagem é a raiz alternativa dopool, /mnt. O ponto de montagem armazenado no disco é / e o caminho completo para /mnt éinterpretado somente no contexto do pool de raiz alternativa. Este sistema de arquivos pode,portanto, ser exportado e importado em um pool arbitrário de raiz alternativa de outro sistema.

Importando pools de raiz alternativaOs pools também podem ser importados usando uma raiz alternativa. Este recurso leva emconsideração as situações de recuperação, nas quais os pontos de montagem não devem serinterpretados no contexto da raiz atual, mas sim em algum diretório temporário no qual sejapossível realizar correções. Este recurso também pode ser usado ao montar mídias removíveisconforme descrito acima.

No exemplo abaixo, um pool denominado morpheus é importado com /mnt como o caminhode raiz alternativa. Neste exemplo pressupõe-se que morpheus foi previamente exportado.

# zpool import -R /mnt morpheus

# zpool list morpheus

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

morpheus 33.8G 68.0K 33.7G 0% ONLINE /mnt

# zfs list morpheus

NAME USED AVAIL REFER MOUNTPOINT

morpheus 32.5K 33.5G 8K /mnt/morpheus

Usando pools de raiz alternativa do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008240

Page 241: Guia de amdiminstracao do zfs solaris

Perfis de direitos do ZFSSe desejar realizar as tarefas de gerenciamento do ZFS sem usar a conta de superusuário (raiz),você pode adotar uma função com um dos perfis seguintes para realizar as tarefas deadministração do ZFS:

■ Gerenciamento de armazenamento do ZFS – Oferece a capacidade de criar, destruir emanipular dispositivos dentro de um pool de armazenamento do ZFS

■ Gerenciamentos de sistema de arquivos ZFS – Oferece a capacidade de criar, destruir emodificar os sistemas de arquivos ZFS

Para obter mais informações sobre a criação ou atribuição de funções, consulte o SystemAdministration Guide: Security Services .

Além de usar as funções RBAC para administrar sistemas de arquivos ZFS, também se develevar em consideração o uso da administração delegada do ZFS nas tarefas de administraçãodistribuídas do ZFS. Para obter mais informações, consulte o Capítulo 9, “Administraçãodelegada de ZFS”.

Perfis de direitos do ZFS

Capítulo 10 • Tópicos avançados do ZFS 241

Page 242: Guia de amdiminstracao do zfs solaris

242

Page 243: Guia de amdiminstracao do zfs solaris

Solução de problemas e recuperação de dadosdo ZFS

Este capítulo descreve como identificar e realizar recuperações a partir dos modos de falha doZFS. Também são fornecidas informações sobre como evitar tais falhas.

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

■ “Modos de falha do ZFS” na página 243■ “Verificando a integridade dos dados do ZFS” na página 245■ “Identificando problemas no ZFS” na página 247■ “Reparando uma configuração do ZFS danificada” na página 252■ “Reparando um dispositivo ausente” na página 253■ “Reparando um dispositivo danificado” na página 254■ “Reparando dados danificados” na página 263■ “Reparando um sistema não inicializável” na página 266

Modos de falha do ZFSPor ser a combinação de um sistema de arquivos e um gerenciador de volumes, o ZFS podeexibir diferentes modos de falha. Este capítulo começa descrevendo os vários modos de falha,em seguida, aborda como identificá-los em um sistema em execução. E finalmente terminatratando o tema de como reparar os problemas. O ZFS pode encontrar-se com três tipos básicosde erros:

■ “Ausência de dispositivos em um pool de armazenamento do ZFS” na página 244■ “Dispositivos danificados em um pool de armazenamento do ZFS” na página 244■ “Dados corrompidos do ZFS” na página 244

Observe que um único pool pode sofrer os três tipos de erros, de modo que o procedimentocompleto de reparação implica em encontrar e corrigir o erro, passar para o próximo erro, eassim por diante.

11C A P Í T U L O 1 1

243

Page 244: Guia de amdiminstracao do zfs solaris

Ausência de dispositivos em um pool dearmazenamento do ZFSSe um dispositivo for completamente removido do sistema, o ZFS detecta que o dispositivo nãopode ser aberto e o coloca no estado não disponível. Dependendo do nível de repetição de dadosdo pool, isso pode ou não fazer com que todo o pool se torne indisponível. Se, em umdispositivo RAID-Z ou espelhado, um disco for removido, o pool continua acessível. Se todosos componentes de um espelho forem removidos, se mais de um dispositivo for removido emum dispositivo RAID-Z ou se um dispositivo de nível superior com um único disco forremovido, o pool se torna FAULTED. Nenhum dado pode ser acessado até que o dispositivo sejareanexado.

Dispositivos danificados em um pool dearmazenamento do ZFSO termo “danificado” abrange uma ampla variedade de possíveis erros. Os exemplos incluem osseguintes erros:■ Erros transitórios de E/S devido a disco ou controlador defeituosos■ Corrupção de dados em disco devido a raios cósmicos■ Erros de driver resultando em transferência de dados de ou para locais incorretos■ Substituição de partes do dispositivo físico realizada acidentalmente por outro usuário

Em alguns casos, estes erros são transitórios, como um erro de E/S aleatório durante problemascom o controlador. Em outros casos, o problema pode ser permanente, como a corrupção emdisco. Ainda assim, se o problema for permanente, isso não significa necessariamente que o erroocorrerá novamente. Por exemplo, se um administrador substitui acidentalmente parte de umdisco, e não houve nenhum tipo de falha de hardware, o dispositivo não precisa ser substituído.Identificar exatamente o que há de errado com o dispositivo não é uma tarefa fácil, por isso estetema é abordado mais detalhadamente mais adiante.

Dados corrompidos do ZFSA corrupção de dados ocorre quando um ou mais erros no dispositivo (indicando dispositivosausentes ou danificados) afetam o dispositivo virtual de nível superior . Por exemplo, a metadede um espelho pode sofrer milhares de erros de dispositivo sem jamais causar corrupção dedados. Haverá corrupção de dados se for encontrado um erro no local exatamente equivalentena outra parte do espelho.

A corrupção de dados é sempre permanente e requer cuidados especiais durante a reparação.Mesmo que os dispositivos subjacentes forem reparados ou substituídos, os dados originais nãopoderão ser recuperados. Freqüentemente, este tipo de situação requer a recuperação dos dados

Modos de falha do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008244

Page 245: Guia de amdiminstracao do zfs solaris

a partir de backups. Os erros dos dados são registrados à medida que vão sendo detectados, epodem ser controlados através de limpezas rotineiras do disco, de acordo com o exposto naseção seguinte. Quando um bloco corrompido é removido, o próximo ciclo de limpezareconhece que a corrupção já não existe e remove qualquer vestígio de erro do sistema.

Verificando a integridade dos dados do ZFSNão existe o utilitário fsck equivalente para o ZFS. Este utilitário é usado tradicionalmente paradois propósitos: reparação e validação de dados.

Reparação de dadosCom os sistemas de arquivos tradicionais, a forma como os dados são gravados estáinerentemente sujeita a falhas inesperadas, provocando inconsistências de dados. Por nãoserem transacionais, os sistemas de arquivos tradicionais podem apresentar blocos semreferências, contagens de link erradas ou outras estruturas de dados inconsistentes. A adição deregistros de ações resolve alguns destes problemas, porém pode trazer outros problemasquando o registro não puder ser revertido. Com o ZFS, nenhum destes problemas existe. Aúnica forma de que haja dados inconsistentes no disco é por meio de uma falha no hardware(em cujo caso o pool deve ter sofrido redundância) ou de um erro de software do ZFS.

Dado que o utilitário fsck está destinado a reparar problemas conhecidos específicos desistemas de arquivos individuais, é impossível escrever tal utilitário em um sistema de arquivosque não apresente problemas conhecidos. Experimentos futuros podem provar quedeterminados problemas de corrupção de dados são tão simples e comuns que um utilitário dereparação pode ser desenvolvido. Porém, estes problemas sempre podem ser evitados usandopools redundantes.

Se o pool não for redundante, haverá sempre a possibilidade de que a corrupção de dados tornealguns ou todos os dados inacessíveis.

Validação de dadosAlém da reparação de dados, o utilitário fsck confirma que os dados em disco não apresentamproblemas. Tradicionalmente, esta tarefa se realiza desmontando o sistema de arquivos eexecutando o utilitário fsck, levando o sistema possivelmente para o modo de usuário único noprocesso. Este quadro tem como resultado um tempo de inatividade proporcional ao tamanhodo sistema de arquivos que está sendo verificado. Em vez de exigir um utilitário explícito pararealizar a verificação necessária, o ZFS oferece um mecanismo para realizar verificaçõesrotineiras de todos os dados. Esta funcionalidade, conhecida como scrubbing, é usadageralmente na memória e em outros sistemas como um método de detecção e prevenção deerros, antes que estes provoquem falha de hardware ou software.

Verificando a integridade dos dados do ZFS

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 245

Page 246: Guia de amdiminstracao do zfs solaris

Controlando o scrubbing de dados do ZFSSempre que o ZFS encontrar um erro, através de scrubbing ou ao acessar um arquivo pordemanda, o erro é registrado internamente para que você possa ter uma visão geral rápida detodos os erros conhecidos no pool.

Scrubbing explícito de dados do ZFSA forma mais simples de verificar a integridade dos dados é iniciar um scrubbing explícito detodos os dados do pool. Esta operação percorre todos os dados do pool uma vez e comprova quetodos os blocos possam ser lidos. O scrubbing se desenvolve tão rápido quanto os dispositivospermitam, sem bem que a prioridade de qualquer E/S é menor que a prioridade dada àsoperações normais. Esta operação pode causar um impacto negativo no desempenho, embora osistema de arquivos deva permanecer utilizável e um pouco receptivo enquanto o scrubbingestiver sendo realizado. Para iniciar um scrubbing explícito, use o comando zpool scrub. Porexemplo:

# zpool scrub tank

O status do scrubbing atual pode ser exibido na saída zpool status. Por exemplo:

# zpool status -v tank

pool: tank

state: ONLINE

scrub: scrub completed after 0h13m with 0 errors on Thu Aug 28 09:57:41 2008

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c1t0d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

errors: No known data errors

Observe que pode ocorrer somente uma operação de scrubbing ativa de cada vez por pool .

É possível parar um scrubbing em andamento com a opção -s. Por exemplo:

# zpool scrub -s tank

Na maioria dos casos, as operações de scrubbing devem chegar até o final para garantir aintegridade dos dados. Interrompa o scrubbing de acordo com os seus próprios critérios se aoperação de scrubbing exercer impacto sobre o desempenho do sistema.

A realização de scrubbing rotineiros garante também E/S contínua para todos os discos dosistema. Scrubbing rotineiros apresentam a desvantagem de não permitir que o gerenciamento

Verificando a integridade dos dados do ZFS

Guia de administração do ZFS Solaris • Setembro de 2008246

Page 247: Guia de amdiminstracao do zfs solaris

de energia coloque os discos inativos no modo de energia baixa. Se o sistema estiver geralmenterealizando E/S sem parar ou se o consumo de energia não for uma preocupação, então estaquestão pode ser ignorada sem perigo.

Para obter mais informações sobre a interpretação da saída zpool status, consulte“Consultando status de pool de armazenamento do ZFS” na página 121.

Scrubbing e resilvering de dados do ZFSQuando um dispositivo é substituído, inicia-se uma operação de resilvering para mover osdados provenientes de cópias boas para o novo dispositivo. Esta ação é uma forma de scrubbingde disco. Portanto, somente uma destas ações pode ser realizada em um dado momento nopool. Se uma operação de scrubbing estiver em andamento, a operação de resilvering suspendeo scrubbing atual e o reinicia depois que o resilvering for concluído.

Para obter mais informações sobre o resilvering, consulte “Exibindo o status do resilvering”na página 261.

Identificando problemas no ZFSAs seções seguintes descrevem como identificar problemas nos sistemas de arquivos ou nospools de armazenamento do ZFS.

■ “Determinando se há problemas em um pool de armazenamento do ZFS” na página 248■ “Revisando a saída de zpool status” na página 249■ “Relatório de mensagens de erros do ZFS do sistema” na página 252

Você pode usar os seguintes recursos para identificar problemas na configuração do seu ZFS:

■ Informações detalhadas do pool de armazenamento do ZFS com o comando zpool status

■ As falhas de pool e dispositivo são relatadas com mensagens de diagnóstico de ZFS/FMA■ Os comandos anteriores do ZFS que modificaram informações de estado do pool podem ser

exibidos com o comando zpool history

A maioria das soluções de problemas do ZFS concentram-se no comando zpool status. Estecomando analisa as diferentes falhas no sistema e identifica o problema mais grave,apresentando-lhe ações sugeridas e um link a um artigo com mais informações. Observe que ocomando identifica somente um único problema com o pool, embora existam váriosproblemas. Os erros de corrupção de dados, por exemplo, indicam sempre que um dosdispositivos falhou. A substituição do dispositivo falho não corrige os problemas de corrupçãode dados.

Além disso, é fornecido um mecanismo de diagnóstico do ZFS para diagnosticar e relatar asfalhas de pool e de dispositivo. Também são relatados erros na soma de verificação, de E/S, dedispositivo e de pool associados às falhas do dispositivo e do pool. As falhas do ZFS, conforme

Identificando problemas no ZFS

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 247

Page 248: Guia de amdiminstracao do zfs solaris

relatadas por fmd, são exibidas no console, bem como no arquivo de mensagens do sistema. Namaioria dos casos, a mensagem fmd leva você ao comando zpool status para obter instruçõesde recuperação adicionais.

O processo básico de recuperação realiza-se da seguinte forma:■ Se for apropriado, use o comando zpool history para identificar os comandos anteriores

do ZFS que provocaram o erro. Por exemplo:

# zpool history

History for ’tank’:

2007-04-25.10:19:42 zpool create tank mirror c0t8d0 c0t9d0 c0t10d0

2007-04-25.10:19:45 zfs create tank/erick

2007-04-25.10:19:55 zfs set checksum=off tank/erick

Observe na saída acima que as somas de verificação estão desativadas no sistema de arquivostank/erick . Esta configuração não é recomendável.

■ Identifique os erros através das mensagens fmd exibidas no console do sistema ou nosarquivos /var/adm/messages.

■ Localize as instruções de recuperação adicionais no comando zpool status -x.■ Faça a reparação das falhas, tal como:

■ Substituir o dispositivo falho ou ausente e colocá-lo on-line.■ Restaurar a configuração falha ou os dados corrompidos a partir de um backup.■ Verificar a recuperação usando o comando zpool status - x.■ Fazer backup da configuração restaurada, se aplicável.

Este capítulo descreve como interpretar a saída zpool status a fim de diagnosticar o tipo defalha, e leva você a uma das seguintes seções sobre como reparar o problema. Embora a maioriado trabalho seja realizado automaticamente pelo comando, é importante entender exatamenteque problemas estão sendo identificados a fim de diagnosticar o tipo de falha.

Determinando se há problemas em um pool dearmazenamento do ZFSA forma mais fácil de determinar se há problemas conhecidos no sistema é usar o comandozpool status -x. Este comando descreve somente os pools que apresentam problemas. Se nãohouver pools defeituosos no sistema, o comando exibe uma mensagem simples, como aseguinte:

# zpool status -x

all pools are healthy

Sem o sinalizador -x, o comando exibe o status completo de todos os pools (ou do poolsolicitado, se especificado na linha de comando), mesmo que os pools não apresentem falhas.

Identificando problemas no ZFS

Guia de administração do ZFS Solaris • Setembro de 2008248

Page 249: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre opções de linha de comando para o comando zpool status,consulte “Consultando status de pool de armazenamento do ZFS” na página 121.

Revisando a saída de zpool status

A saída de zpool status completa se assemelha ao ilustrado abaixo:

# zpool status tank

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: none requested

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 0

mirror DEGRADED 0 0 0

c1t0d0 ONLINE 0 0 0

c1t1d0 OFFLINE 0 0 0

errors: No known data errors

Esta saída está divida em várias seções:

Informações gerais sobre o status do poolEste seção de cabeçalho na saída de zpool status contém os campos a seguir, alguns dos quaissão exibidos somente para os pools que apresentam problemas:

pool O nome do pool.

state O estado atual do pool. Esta informação se refere somente a capacidade que o poolapresenta de oferecer o nível de replicação necessário. Os pools que apresentam oestado ONLINE também podem apresentar dispositivos falhos ou corrupção dedados.

status Descrição do problema do pool. Este campo não é exibido se não houver nenhumproblema.

action Uma ação recomendada para a reparação de erros. Este campo consiste em umformulário resumido que leva o usuário a uma das seções posteriores. Este camponão é exibido se não houver nenhum problema.

Identificando problemas no ZFS

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 249

Page 250: Guia de amdiminstracao do zfs solaris

see Referência a um artigo com informações detalhadas sobre a reparação. Os artigoson-line são atualizados com mais freqüência que este guia e devem ser sempreconsultados como referência sobre os procedimentos de reparação mais a atuais.Este campo não é exibido se não houver nenhum problema.

scrub Identifica o status atual da operação de scrubbing, que deve incluir a data e a hora deconclusão do último scrubbing realizado, um scrubbing em andamento ou senenhum scrubbing foi solicitado.

errors Identifica erros de dados ou ausência de erros de dados conhecidos.

Informações de configuraçãoO campo config na saída de zpool status descreve o layout de configuração dos dispositivosque fazem parte do pool, bem como o estado e quaisquer erros gerados por estes dispositivos. Oestado pode ser um dos seguintes: ONLINE, FAULTED, DEGRADED, UNAVAILABLE ou OFFLINE. Se forexibido somente ONLINE, a tolerância a falhas do pool foi comprometida.

A segunda seção da saída de configuração exibe os erros de estatísticas. Estes erros estãodivididos em três categorias:

■ READ – erros de E/S ocorridos durante uma solicitação de leitura.■ WRITE – erros de E/S ocorridos durante uma solicitação de gravação.■ CKSUM – erros na soma de verificação. O dispositivo retornou dados corrompidos como

resultado de uma solicitação de leitura.

Estes erros podem ser usados para determinar se o dano é permanente. Uma pequenaquantidade de erros de E/S pode indicar uma interrupção temporária, enquanto que umagrande quantidade pode indicar um problema permanente com o dispositivo. Estes erros nãocorrespondem necessariamente à corrupção de dados conforme interpretado pelos aplicativos.Se o dispositivo estiver em uma configuração redundante, os dispositivos do disco podem exibirerros incorrigíveis, enquanto que no espelho ou no nível do dispositivo RAID-Z nenhum erro éexibido . Se for esse o caso, o ZFS recuperou com sucesso os dados bons e tentou eliminar osdados danificados das cópias existentes.

Para obter mais informações sobre a interpretação destes erros para determinar a falha dodispositivo, consulte “Determinando o tipo de falha do dispositivo” na página 254.

Finalmente, na última coluna da saída de zpool status se encontram informações adicionaisauxiliares. Estas informações abrangem o campo state, ajudando em diagnósticos de modos defalha. Se um dispositivo apresenta o estado FAULTED, este campo indica se o dispositivoencontra-se inacessível ou se os dados do dispositivo estão corrompidos. Se o dispositivo estiversendo submetido a um resilvering, este campo exibe o progresso atual.

Para obter mais informações sobre a monitoração do progresso de resilvering, consulte“Exibindo o status do resilvering” na página 261.

Identificando problemas no ZFS

Guia de administração do ZFS Solaris • Setembro de 2008250

Page 251: Guia de amdiminstracao do zfs solaris

Status do scrubbingA terceira seção da saída de zpool status descreve o status atual de qualquer scrubbingexplícito. Se qualquer tipo de erro for detectado no sistema, estas informações serão diferentes,embora possam ser usadas para determinar a precisão do relatório de erro de corrupção dedados. Se o último scrubbing acabou de ser concluído, provavelmente nenhuma corrupção dedados conhecida foi encontrada.

Para obter mais informações sobre o scrubbing de dados e como interpretar estas informações,consulte “Verificando a integridade dos dados do ZFS” na página 245.

Erros de corrupção de dadosO comando zpool status mostra também se os erros conhecidos estão associados ao pool.Estes erros podem ter sido encontrados durante o scrubbing do disco ou durante uma operaçãonormal. O ZFS mantém um registro de persistência de todos os erros de dados associados aopool. Este registro é alternado sempre que um scrubbing completo do sistema for concluído.

Os erros de corrupção de dados são sempre fatais. A presença de tais erros indica que comomínimo um aplicativo sofreu um erro de E/S devido a dados corrompidos dentro do pool. Oserros de dispositivo dentro de um pool redundante não têm como resultado a corrupção dedados e não são registrados como parte deste registro. Por padrão, somente o número de errosencontrado é exibido. Uma lista completa de erros e de suas condições específicas pode serencontrada usando a opção -v do zpool status. Por exemplo:

# zpool status -v

pool: tank

state: DEGRADED

status: One or more devices has experienced an error resulting in data

corruption. Applications may be affected.

action: Restore the file in question if possible. Otherwise restore the

entire pool from backup.

see: http://www.sun.com/msg/ZFS-8000-8A

scrub: resilver completed with 1 errors on Thu Aug 28 09:58:22 MDT 2008

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 1

mirror DEGRADED 0 0 1

c1t0d0 ONLINE 0 0 2

c1t1d0 UNAVAIL 0 0 0 corrupted data

errors: The following persistent errors have been detected:

DATASET OBJECT RANGE

5 0 lvl=4294967295 blkid=0

Identificando problemas no ZFS

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 251

Page 252: Guia de amdiminstracao do zfs solaris

Uma mensagem semelhante também é exibida pelo fmd no console do sistema e no arquivo/var/adm/messages. Estas mensagens também podem ser rastreadas através do comandofmdump.

Para obter mais informações sobre a interpretação dos erros de corrupção de dados, consulte“Identificando o tipo de corrupção de dados” na página 263.

Relatório de mensagens de erros do ZFS do sistemaAlém de manter um rastreio persistente de erros dentro do pool, o ZFS exibe tambémmensagens do registro do sistema quando ocorrem eventos de interesse. As situações abaixogeram eventos para notificar o administrador:

■ Transição de estado do dispositivo – Se um dispositivo passa a ser FAULTED, o ZFS registrauma mensagem indicando que a tolerância a falhas do pool pode estar em risco. Umamensagem semelhante é enviada se o dispositivo passar a ser on-line, restaurando anormalidade do pool.

■ Corrupção de dados – Se for detectado qualquer tipo de corrupção de dados, o ZFS registrauma mensagem descrevendo quando e onde a corrupção foi detectada. Esta mensagem éregistrada somente na primeira vez que a corrupção é detectada. Os acessos subseqüentesnão geram mensagens.

■ Falhas de pool e de dispositivos – Se ocorrer uma falha de pool ou de dispositivo, o daemondo gerenciador de falhas relata estes erros através das mensagens do registro do sistema,bem como através do comando fmdump.

Se o ZFS detectar um erro de dispositivo e se recuperar automaticamente, não ocorre nenhumanotificação. Tais erros não representam uma falha na integridade dos dados ou de redundânciado pool. São normalmente o resultado de um problema do driver acompanhado por seupróprio conjunto de mensagens de erro.

Reparando uma configuração do ZFS danificadaO ZFS mantém um cache de pools ativos e suas configurações no sistema de arquivos raiz. Seeste arquivo for corrompido ou perder de alguma forma a sincronia com o que está armazenadono disco, o pool não poderá mais ser aberto. O ZFS tenta evitar esta situação, embora sempreexista a possibilidade de haver corrupções arbitrárias dadas as qualidades do armazenamento edo sistema de arquivos subjacente. Esta situação resulta normalmente no desaparecimento deum pool do sistema quando tal pool deveria, na verdade, estar disponível. Esta situação tambémpode manifestar-se como uma configuração parcial com ausência de um número desconhecidode dispositivos virtuais de nível superior. Em ambos os casos, a configuração pode serrecuperada exportando o pool (se estiver visível) e importando-o novamente.

Reparando uma configuração do ZFS danificada

Guia de administração do ZFS Solaris • Setembro de 2008252

Page 253: Guia de amdiminstracao do zfs solaris

Para obter mais informações sobre a importação e exportação de pools, consulte “Migrandopools de armazenamento do ZFS” na página 128.

Reparando um dispositivo ausenteSe um dispositivo não puder ser aberto, será exibido como UNAVAILABLE na saída de zpoolstatus. Este status significa que o ZFS não pôde abrir o dispositivo quando o pool foi acessadopela primeira vez ou que o dispositivo se tornou indisponível a partir desse momento. Se odispositivo fizer com que o dispositivo virtual de nível superior não esteja disponível, então nãoserá possível acessar nada no pool. Do contrário, a tolerância a falhas do pool pode sercomprometida. Em ambos os casos, o dispositivo precisa simplesmente ser reanexado aosistema para recuperar a operação normal.

Por exemplo, uma mensagem do fmd semelhante à ilustrada abaixo deve ser vista depois de umafalha no dispositivo:

SUNW-MSG-ID: ZFS-8000-FD, TYPE: Fault, VER: 1, SEVERITY: Major

EVENT-TIME: Fri Aug 22 13:01:15 MDT 2008

PLATFORM: SUNW,Ultra-Enterprise, CSN: -, HOSTNAME: neo

SOURCE: zfs-diagnosis, REV: 1.0

EVENT-ID: 1f4f33d6-4973-4884-d494-a29b284d9554

DESC: The number of I/O errors associated with a ZFS device exceeded acceptable levels.

Refer to http://sun.com/msg/ZFS-8000-FD for more information.

AUTO-RESPONSE: The device has been offlined and marked as faulted. An attempt

will be made to activate a hot spare if available.

IMPACT: Fault tolerance of the pool may be compromised.

REC-ACTION: Run ’zpool status -x’ and replace the bad device.

O próximo passo é usar o comando zpool status -x para ver informações mais detalhadassobre o problema do dispositivo e a solução. Por exemplo:

É possível observar nesta saída que o dispositivo ausente c0t1d0 não está funcionando. Se vocêdetectar que a unidade é defeituosa, substitua o dispositivo.

Depois, use o comando zpool online para colocar o dispositivo substituído on-line. Porexemplo:

# zpool online tank c0t1d0

Comprove que o pool com o dispositivo substituído esteja em boas condições.

# zpool status -x tank

pool ’tank’ is healthy

Reparando um dispositivo ausente

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 253

Page 254: Guia de amdiminstracao do zfs solaris

Reanexando fisicamente o dispositivoA forma como é realizada a reanexação de um dispositivo ausente depende do dispositivo emquestão. Se o dispositivo for uma unidade anexada à rede, a conectividade deve ser restaurada.Se o dispositivo for um USB ou outro tipo de mídia removível, deve ser reanexado ao sistema. Seo dispositivo for um disco local, um controlador pode ter falhado, de forma que tal dispositivonão está mais visível no sistema. Neste caso, o controlador deve ser substituído, momento emque os discos estarão novamente disponíveis. Podem existir outros problemas que dependemdo tipo de hardware e de sua configuração. Se uma unidade falhar e não estiver mais visível nosistema (um evento improvável), o dispositivo deve ser tratado como um dispositivodanificado. Siga o procedimento descrito em “Reparando um dispositivo danificado”na página 254.

Notificando o ZFS da disponibilidade de umdispositivoDepois que um dispositivo é reanexado ao sistema, o ZFS pode ou não detectarautomaticamente sua disponibilidade. Se o pool já apresentava defeito ou se o sistema tiver sidoreinicializado como parte do procedimento de anexação, o ZFS reexamina todos os dispositivosao tentar abrir o pool. Se o pool estava danificado e o dispositivo foi substituído enquanto osistema estava em operação, você deve notificar o ZFS que o dispositivo está disponível e prontopara ser reaberto com o comando zpool online. Por exemplo:

# zpool online tank c0t1d0

Para obter mais informações sobre como colocar dispositivos on-line, consulte “Colocando umdispositivo on-line” na página 111.

Reparando um dispositivo danificadoEsta seção descreve como determinar os tipos de falha do dispositivo, apagar os errostransitórios e substituir um dispositivo.

Determinando o tipo de falha do dispositivoO termo dispositivo danificado é um tanto vago e pode descrever vários tipos de situaçõespossíveis:

Reparando um dispositivo danificado

Guia de administração do ZFS Solaris • Setembro de 2008254

Page 255: Guia de amdiminstracao do zfs solaris

■ Bit corrompido – Com o tempo, eventos aleatórios, como influências magnéticas e raioscósmicos, podem fazer com que os bits armazenados no disco se transformem em eventosimprevisíveis. Estes eventos são relativamente raros, mas comuns o suficiente para provocarcorrupção de dados em sistemas grandes ou que estão em funcionamento durante longosperíodos de tempo. Estes erros são normalmente transitórios.

■ Leituras ou gravações mal endereçadas – Erros de firmware ou falhas de hardware podemfazer com que leituras e gravações de blocos inteiros façam referência a locais incorretos nodisco. Estes erros são normalmente transitórios, embora uma grande quantidade podeindicar uma unidade defeituosa.

■ Erro do administrador – Os administradores podem substituir involuntariamente partesdo disco por dados defeituosos (como copiar /dev/zero sobre partes do disco) queprovocam a corrupção permanente deste. Estes erros são sempre transitórios.

■ Interrupções temporárias – Um disco pode não estar disponível durante um período detempo, causando falhas de E/S. Esta situação está associada geralmente a dispositivosanexados à rede, embora os discos locais também possam sofrer interrupções temporárias.Estes erros podem ou não ser transitórios.

■ Hardware defeituoso ou anormal – Esta situação é um resumo dos vários problemasapresentados por hardwares defeituosos. Tais problemas podem corresponder a errosconsistentes de E/S, a transportes falhos que provocam corrupção aleatória ou a inúmerasfalhas. Estes erros são normalmente permanentes.

■ Dispositivo off-line – Se um dispositivo estiver off-line, supõe-se que o administrador ocolocou neste estado porque estava possivelmente defeituoso. O administrador que colocouo dispositivo neste estado pode determinar se esta suposição é precisa.

A determinação exata do problema pode ser um processo difícil. O primeiro passo é verificar ascontagens de erros na saída de zpool status da seguinte forma:

# zpool status -v pool

Os erros estão divididos em erros de E/S e erros de soma de verificação, e ambos podem indicaro possível tipo de falha. As operações normais prevêem uma pequena quantidade de erros(apenas alguns erros em longos períodos de tempo). Se for exibida uma grande quantidade deerros, então esta situação indica provavelmente uma falha iminente ou completa do dispositivo.No entanto, o problema causado por erros de administrador pode resultar em grandescontagens de erros. Outra fonte de informações é o registro do sistema. Se o registro mostrarum grande número de mensagens de canal de fibra ou de SCSI, então esta situação indicaprovavelmente sérios problemas de hardware. Se não for gerada nenhuma mensagem noregistro do sistema, então o dano é provavelmente transitório.

O objetivo é responder à seguinte pergunta:

É provável que ocorra outro erro neste dispositivo?

Reparando um dispositivo danificado

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 255

Page 256: Guia de amdiminstracao do zfs solaris

Os erros que ocorrem somente uma vez são considerados transitórios e não indicam falhaspotenciais. Os erros que são persistentes ou suficientemente graves para indicar possível falhade hardware são considerados “fatais”. A ação de determinar o tipo de erro não está dentro doâmbito de nenhum software automatizado disponível atualmente com ZFS e muitas açõesdevem ser realizadas manualmente por você, o administrador. Depois de determinar o erro, aação apropriada poderá ser realizada. Apague os erros transitórios ou substitua o dispositivodevido aos erros fatais. Estes procedimentos de reparação estão descritos nas próximas seções.

Mesmo que os erros de dispositivo sejam considerados transitórios, eles podem ter provocadodentro do pool erros de dados que não podem ser corrigidos. Estes erros requeremprocedimentos de reparação especiais, mesmo se o dispositivo estiver em boas condições outiver sido reparado. Para obter mais informações sobre a reparação de erros de dados, consulte“Reparando dados danificados” na página 263.

Apagando erros transitóriosSe os erros de dispositivo forem considerados transitórios, em cujo caso não é provável quetenham efeito sobre o estado futuro do dispositivo, então tais erros podem ser apagados comsegurança a fim de indicar que não ocorreu um erro fatal. Para apagar os contadores de errosdos dispositivos RAID-Z ou espelhados, use o comando zpool clear. Por exemplo:

# zpool clear tank c1t0d0

Esta sintaxe apaga os erros e as contagens de erros de dados associados ao dispositivo.

Para apagar todos os erros associados aos dispositivos virtuais no pool e as contagens de errosde dados associadas ao pool, use a seguinte sintaxe:

# zpool clear tank

Para obter mais informações sobre como apagar erros do pool, consulte “Limpandodispositivos de pool de armazenamento” na página 112.

Substituindo um dispositivo em um pool dearmazenamento do ZFSSe o dano no dispositivo for permanente ou se houver grande possibilidade de que ocorramfuturos danos permanentes, o dispositivo deve ser substituído. Depende da configuração se odispositivo pode ou não ser substituído.

■ “Determinando se um dispositivo pode ser substituído” na página 257■ “Dispositivos que não podem ser substituídos” na página 258

Reparando um dispositivo danificado

Guia de administração do ZFS Solaris • Setembro de 2008256

Page 257: Guia de amdiminstracao do zfs solaris

■ “Substituindo um dispositivo em um pool de armazenamento do ZFS” na página 258■ “Exibindo o status do resilvering” na página 261

Determinando se um dispositivo pode ser substituídoPara que um dispositivo possa ser substituído, o pool deve estar no estado ONLINE. Odispositivo deve fazer parte de uma configuração redundante ou deve estar em boas condições(no estado ONLINE). Se o disco faz parte de uma configuração redundante, devem haverréplicas suficientes a partir das quais recuperar os dados bons. Se dois discos em um espelho dequatro lados estiverem defeituosos, então ambos discos podem ser substituídos porque hácópias em boas condições disponíveis. No entanto, se dois discos de um dispositivo RAID-Z dequatro vias estiverem defeituosos, então nenhum dos discos pode ser substituído porque não hácópias suficientes a partir das quais recuperar os dados. Se o dispositivo estiver danificado, masestiver on-line, poderá ser substituído, contanto que o pool não se encontre no estado FAULTED.

No entanto, os dados incorretos do dispositivo são copiados no novo dispositivo, a menos quehaja réplicas suficientes com dados corretos.

Na configuração abaixo, o disco c1t1d0 pode ser substituído e os dados do pool são copiados dacópia boa, c1t0d0 .

mirror DEGRADED

c1t0d0 ONLINE

c1t1d0 FAULTED

O disco c1t0d0 também pode ser substituído, embora não seja possível a autocorreção dosdados porque não há cópias boas disponíveis.

Na configuração abaixo, nenhum dos discos defeituosos pode ser substituído. Os discos ONLINEtambém não podem ser substituídos porque o próprio pool está defeituoso.

raidz FAULTED

c1t0d0 ONLINE

c2t0d0 FAULTED

c3t0d0 FAULTED

c3t0d0 ONLINE

Na configuração abaixo, ambos os discos de nível superior podem ser substituídos, embora osdados defeituosos presentes no disco sejam copiados no novo disco.

c1t0d0 ONLINE

c1t1d0 ONLINE

Se ambos os discos estiverem falhos, não será possível realizar substituições porque o própriopool pode estar falho.

Reparando um dispositivo danificado

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 257

Page 258: Guia de amdiminstracao do zfs solaris

Dispositivos que não podem ser substituídosSe a perda de um dispositivo tornar o pool defeituoso ou se o dispositivo contiver muitos errosde dados em uma configuração não redundante, então o dispositivo não poderá ser substituídocom segurança. Sem redundâncias suficientes, não haverá dados bons com os quais reparar odispositivo danificado. Neste caso, a única opção é destruir o pool e recriar a configuração,restaurando os dados no processo.

Para obter mais informações sobre a restauração de um pool inteiro, consulte “Reparando odano de todo o pool de armazenamento do ZFS” na página 266.

Substituindo um dispositivo em um pool de armazenamento do ZFSDepois de ter determinado qual dispositivo pode ser substituído, use o comando zpool

replace para substitui-lo. Se estiver substituindo o dispositivo danificado por outro, use oseguinte comando:

# zpool replace tank c1t0d0 c2t0d0

Este comando começa migrando os dados para o novo dispositivo a partir do dispositivodanificado ou de outros dispositivos do pool se este estiver em uma configuração redundante.Quando o comando estiver concluído, ele separa o dispositivo danificado da configuração,momento no qual o dispositivo pode ser removido do sistema. Se você já tiver removido odispositivo e o tiver substituído por um dispositivo novo no mesmo local, use a forma simplesde dispositivo do comando. Por exemplo:

# zpool replace tank c1t0d0

Este comando pega o disco não formatado, formata-o adequadamente e, em seguida, começa arealizar o resilvering dos dados do restante da configuração.

Para obter mais informações sobre o comando zpool replace, consulte “Substituindodispositivos em um pool de armazenamento” na página 112.

EXEMPLO 11–1 Substituindo um dispositivo em um pool de armazenamento do ZFS

O exemplo seguinte mostra como substituir um dispositivo (c1t3d0) no pool dearmazenamento espelhado tank em um sistema Sun Fire x4500. Se for substituir o c1t3d0 porum novo disco no mesmo local (c1t3d0), então desconfigure o disco antes de substituí-lo. Asetapas básicas são:

■ Primeiro coloque off-line o disco que será substituído. Não é possível desconfigurar umdisco que esteja sendo usado.

■ Identifique o disco (c1t3d0) que será desconfigurado e desconfigure-o. O pool estarádegradado com o disco off-line nesta configuração espelhada, mas continuará disponível.

Reparando um dispositivo danificado

Guia de administração do ZFS Solaris • Setembro de 2008258

Page 259: Guia de amdiminstracao do zfs solaris

EXEMPLO 11–1 Substituindo um dispositivo em um pool de armazenamento do ZFS (Continuação)

■ Substitua fisicamente o disco (c1t3d0). Certifique-se de que o LED azul "Preparado parasubstituição" esteja iluminado antes de remover o disco da unidade defeituosa.

■ Reconfigure o disco (c1t3d0).■ Coloque o disco (c1t3d0) novamente on-line.■ Execute o comando zpool replace para substituir o disco (c1t3d0).

Observação – Se a propriedade autoreplace=on do pool tiver sido definida anteriormente,qualquer dispositivo novo encontrado no mesmo local físico que um dispositivo que antespertencia ao pool será automaticamente formatado e substituído sem o uso do comandozpool replace. Este recurso pode não ser suportado em todos os hardwares.

# zpool offline tank c1t3d0

cfgadm | grep c1t3d0

sata1/3::dsk/c1t3d0 disk connected configured ok

# cfgadm -c unconfigure sata1/3

Unconfigure the device at: /devices/pci@0,0/pci1022,7458@2/pci11ab,11ab@1:3

This operation will suspend activity on the SATA device

Continue (yes/no)? yes

# cfgadm | grep sata1/3

sata1/3 disk connected unconfigured ok

<Replace the physical disk c1t3d0>

# cfgadm -c configure sata1/3

# cfgadm | grep sata3/7

sata3/7::dsk/c5t7d0 disk connected configured ok

# zpool online tank c1t3d0

# zpool replace tank c1t3d0

# zpool status

pool: tank

state: ONLINE

scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:44:46 2008

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t2d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t3d0 ONLINE 0 0 0

Reparando um dispositivo danificado

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 259

Page 260: Guia de amdiminstracao do zfs solaris

EXEMPLO 11–1 Substituindo um dispositivo em um pool de armazenamento do ZFS (Continuação)

c1t3d0 ONLINE 0 0 0

errors: No known data errors

Observe que o zpool output anterior pode mostrar o disco novo e o antigo abaixo docabeçalho replacing. Por exemplo:

replacing DEGRADED 0 0 0

c1t3d0s0/o FAULTED 0 0 0

c1t3d0 ONLINE 0 0 0

Este texto significa que o processo de substituição está em andamento e que está sendo realizadoo resilvering do novo disco.

Se você for substituir um disco (c1t3d0) por outro (c4t3d0), então será necessário apenasexecutar o comando zpool replace depois que o disco for substituído fisicamente. Porexemplo:

# zpool replace tank c1t3d0 c4t3d0

# zpool status

pool: tank

state: DEGRADED

scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:54:50 2008

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t2d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror DEGRADED 0 0 0

c0t3d0 ONLINE 0 0 0

replacing DEGRADED 0 0 0

c1t3d0 OFFLINE 0 0 0

c4t3d0 ONLINE 0 0 0

errors: No known data errors

Você pode ter que executar o comando zpool status várias vezes até que a substituição dodisco seja concluída.

Reparando um dispositivo danificado

Guia de administração do ZFS Solaris • Setembro de 2008260

Page 261: Guia de amdiminstracao do zfs solaris

EXEMPLO 11–1 Substituindo um dispositivo em um pool de armazenamento do ZFS (Continuação)

# zpool status tank

pool: tank

state: ONLINE

scrub: resilver completed after 0h0m with 0 errors on Tue Apr 22 14:54:50 2008

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t1d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t2d0 ONLINE 0 0 0

c1t2d0 ONLINE 0 0 0

mirror ONLINE 0 0 0

c0t3d0 ONLINE 0 0 0

c4t3d0 ONLINE 0 0 0

Exibindo o status do resilveringO processo de substituição de uma unidade pode demorar um longo período de tempo,dependendo do tamanho da unidade e da quantidade de dados do pool. O processo de mover osdados de um dispositivo a outro é conhecido como resilvering e pode ser monitorado com ocomando zpool status.

Os sistemas de arquivos tradicionais realizam resilvering de dados no nível do bloco. O ZFS, poreliminar a estrutura em camadas artificiais do gerenciador de volumes, pode realizar resilveringde uma forma muito mais eficaz e controlada. A duas principais vantagens deste recurso são:

■ O ZFS realiza resilvering somente da quantidade mínima de dados necessária. No caso deuma breve interrupção (em oposição a uma substituição completa de dispositivo), oresilvering do disco inteiro pode ser realizado em questão de minutos ou segundos. Melhorque realizar o resilvering completo do disco ou complicar a situação com o registro da “partesuja” suportado por alguns gerenciadores de volumes. Quando todo o disco é substituído, oprocesso de resilvering leva o tempo proporcional à quantidade de dados usados no disco. Asubstituição de um disco de 500 Gbytes pode levar alguns segundos se no pool houverapenas alguns gigabytes de espaço usado.

■ O resilvering é um processo seguro e que pode ser interrompido. Se o sistema perder energiaou for reinicializado, o processo de resilvering recomeça exatamente de onde parou, semnecessidade de nenhuma intervenção manual.

Para exibir o processo de resilvering, use o comando zpool status. Por exemplo:

Reparando um dispositivo danificado

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 261

Page 262: Guia de amdiminstracao do zfs solaris

# zpool status tank

pool: tank

state: ONLINE

status: One or more devices is currently being resilvered. The pool will

continue to function, possibly in a degraded state.

action: Wait for the resilver to complete.

scrub: resilver in progress for 0h2m, 16.43% done, 0h13m to go

config:

NAME STATE READ WRITE CKSUM

tank DEGRADED 0 0 0

mirror DEGRADED 0 0 0

replacing DEGRADED 0 0 0

c1t0d0 ONLINE 0 0 0

c2t0d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

Neste exemplo, o disco c1t0d0 está sendo substituído pelo c2t0d0. Este evento é observado nasaída do status pela presença do dispositivo virtual replacing na configuração. Este dispositivonão é real, e também não é possível criar um pool usando este tipo de dispositivo. O objetivodeste dispositivo é unicamente exibir o processo de resilvering e identificar exatamente quedispositivo está sendo substituído.

Observe que qualquer pool passando atualmente pelo processo de resilvering se encontra noestado ONLINE ou DEGRADED, porque o pool não pode proporcionar o nível de redundânciadesejado até que o processo de resilvering tenha sido concluído. Apesar de a E/S estar sempreprogramada com uma prioridade menor do que a E/S solicitada pelo usuário, o resilvering érealizado o mais rápido possível para minimizar o impacto no sistema. Depois da conclusão doresilvering, a configuração retorna à configuração nova e completa. Por exemplo:

# zpool status tank

pool: tank

state: ONLINE

scrub: resilver completed after 0h2m with 0 errors on Thu Aug 28 09:50:11 2008

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror ONLINE 0 0 0

c2t0d0 ONLINE 0 0 0

c1t1d0 ONLINE 0 0 0

errors: No known data errors

O pool está outra vez no estado ONLINE e o disco original defeituoso (c1t0d0) foi removido daconfiguração.

Reparando um dispositivo danificado

Guia de administração do ZFS Solaris • Setembro de 2008262

Page 263: Guia de amdiminstracao do zfs solaris

Reparando dados danificadosAs seções seguintes descrevem como identificar o tipo de corrupção de dados e como reparar osdados, se possível.

■ “Identificando o tipo de corrupção de dados” na página 263■ “Reparando arquivos ou diretórios corrompidos” na página 264■ “Reparando o dano de todo o pool de armazenamento do ZFS” na página 266

O ZFS usa a soma de verificação, a redundância e a autocorreção de dados para minimizar aspossibilidades de que ocorra corrupção de dados. No entanto, a corrupção de dados podeocorrer se o pool não for redundante, se a corrupção tiver ocorrido enquanto o pool estavadanificado ou se uma improvável série de eventos tiver provocado a corrupção de várias cópiasde um bloco de dados. Em relação à origem, o resultado é o mesmo: Os dados estãocorrompidos e, portanto, não podem ser acessados. A ação a ser tomada depende do tipo dosdados corrompidos e os seus valores relativos. Podem ser corrompidos dois tipos básicos dedados:

■ Metadados do pool – O ZFS requer uma determinada quantidade de dados a ser processadapara abrir um pool e acessar os conjuntos de dados. Se estes dados estiverem corrompidos,todo o pool ou partes inteiras da hierarquia de conjunto de dados se tornarão indisponíveis.

■ Dados do objeto – Neste caso, a corrupção está dentro de um arquivo ou um diretórioespecífico. Este problema pode fazer com que uma parte do arquivo ou diretório não possaser acessada ou que o objeto fique totalmente danificado.

Os dados são verificados durante operações normais, bem como durante o scrubbing. Paraobter mais informações sobre como verificar a integridade dos dados do pool, consulte“Verificando a integridade dos dados do ZFS” na página 245.

Identificando o tipo de corrupção de dadosPor padrão, o comando zpool status mostra somente que ocorreu uma corrupção, mas nãomostra onde esta corrupção ocorreu. Por exemplo:

# zpool status

pool: monkey

state: ONLINE

status: One or more devices has experienced an error resulting in data

corruption. Applications may be affected.

action: Restore the file in question if possible. Otherwise restore the

entire pool from backup.

see: http://www.sun.com/msg/ZFS-8000-8A

scrub: none requested

config:

Reparando dados danificados

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 263

Page 264: Guia de amdiminstracao do zfs solaris

NAME STATE READ WRITE CKSUM

monkey ONLINE 0 0 0

c1t1d0s6 ONLINE 0 0 0

c1t1d0s7 ONLINE 0 0 0

errors: 8 data errors, use ’-v’ for a list

Cada erro indica somente que em um dado momento ocorreu um erro. Os erros não estãonecessariamente presentes no sistema até este momento. Em circunstâncias normais, estasituação pode ocorrer. Certas interrupções temporárias podem resultar na corrupção de dados,que é automaticamente reparada depois que a interrupção termina. É realizado um scrubbingcompleto do pool a fim de examinar todos os blocos ativos no pool, assim o registro do erro éredefinido sempre que o scrubbing terminar. Se detectar que os erros já não estão presentes enão quiser esperar a conclusão do scrubbing, redefina todos os erros no pool com o comandozpool online.

Se a corrupção de dados estiver nos metadados de todo o pool, a saída é um pouco diferente. Porexemplo:

# zpool status -v morpheus

pool: morpheus

id: 1422736890544688191

state: FAULTED

status: The pool metadata is corrupted.

action: The pool cannot be imported due to damaged devices or data.

see: http://www.sun.com/msg/ZFS-8000-72

config:

morpheus FAULTED corrupted data

c1t10d0 ONLINE

No caso de corrupção de todo o pool, o pool é colocado no estado FAULTED porquepossivelmente não pode proporcionar o nível de redundância necessário.

Reparando arquivos ou diretórios corrompidosSe um arquivo ou um diretório estiver corrompido, o sistema ainda pode funcionardependendo do tipo de corrupção. Qualquer dano é efetivamente não recuperável, se nãohouver boas cópias de dados em nenhum local do sistema. Se os dados são importantes, vocênão tem outra opção a não ser restaurar os dados afetados a partir do backup. Mesmo assim, épossível recuperar essa corrupção sem ter que restaurar todo o pool.

Reparando dados danificados

Guia de administração do ZFS Solaris • Setembro de 2008264

Page 265: Guia de amdiminstracao do zfs solaris

Se o dano está dentro do bloco de dados de um arquivo, então o arquivo pode ser removido comsegurança, apagando assim o erro do sistema. Use o comando zpool status -v para exibir umalista de nomes de arquivos com erros persistentes. Por exemplo:

# zpool status -v

pool: monkey

state: ONLINE

status: One or more devices has experienced an error resulting in data

corruption. Applications may be affected.

action: Restore the file in question if possible. Otherwise restore the

entire pool from backup.

see: http://www.sun.com/msg/ZFS-8000-8A

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

monkey ONLINE 0 0 0

c1t1d0s6 ONLINE 0 0 0

c1t1d0s7 ONLINE 0 0 0

errors: Permanent errors have been detected in the following files:

/monkey/a.txt

/monkey/bananas/b.txt

/monkey/sub/dir/d.txt

/monkey/ghost/e.txt

/monkey/ghost/boo/f.txt

A saída anterior é descrita da seguinte forma:

■ Se o caminho completo do arquivo for encontrado e o conjunto de dados estiver montado, ocaminho completo do arquivo é exibido. Por exemplo:

/monkey/a.txt

■ Se o caminho completo do arquivo for encontrado, mas o conjunto de dados não estivermontado, então o nome do conjunto de dados é exibido sem a barra (/) precedente, seguidodo caminho dentro do conjunto de dados do arquivo. Por exemplo:

monkey/ghost/e.txt

■ Se o número do objeto não puder ser traduzido com sucesso para o caminho do arquivo,devido a um erro ou a que o objeto não possui um caminho de arquivo verdadeiro associadoa ele, como é o caso de dnode_t, então o nome do conjunto de dados seguido do número doobjeto é exibido. Por exemplo:

monkey/dnode:<0x0>

Reparando dados danificados

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 265

Page 266: Guia de amdiminstracao do zfs solaris

■ Se um objeto do conjunto de meta-objetos (MOS) estiver corrompido, então é exibida umamarca especial de <metadata>, seguida do número do objeto.

Se a corrupção estiver dentro dos metadados de um arquivo ou diretório, a única opção é moveros arquivos para outro local. É possível mover com segurança qualquer arquivo ou diretóriopara um local menos apropriado, permitindo que o objeto original seja restaurado no lugaradequado.

Reparando o dano de todo o pool de armazenamentodo ZFSSe o dano está nos metadados do pool, tal dano impede que o pool seja aberto, então você deverestaurar o pool e todos os seus dados a partir do backup. O mecanismo a ser usado varia muitode acordo com a configuração do pool e a estratégia de backup. Em primeiro lugar, salve aconfiguração conforme exibido pelo zpool status para que você possa recriá-la depois que opool for destruído. Em seguida, use zpool destroy -f para destruir o pool. Mantenha também,em um lugar seguro, um arquivo que descreva o layout dos conjuntos de dados e as diversaspropriedades de conjunto, já que estas informações não poderão ser acessadas se o pool nãopuder ser acessado. Com a configuração do pool e o layout do conjunto de dados, você podereconstruir a configuração completa depois de destruir o pool. Os dados podem, então, serpreenchidos usando o backup ou a estratégia de restauração de sua preferência.

Reparando um sistema não inicializávelO ZFS foi desenvolvido para ser robusto e estável apesar dos erros. Mesmo assim, os erros desoftware ou certos problemas inesperados podem provocar pane no sistema quando acessados.Como parte do processo de inicialização, cada pool deve ser aberto, o que significa que taisfalhas farão com que o sistema entre em um ciclo de reinicialização por pane. Para se recuperardeste problema, o ZFS deve ser instruído a não procurar os pools na inicialização.

O ZFS mantém um cache interno de pools disponíveis e suas configurações em/etc/zfs/zpool.cache. O local e o conteúdo deste arquivo são privados e estão sujeitos aalterações. Se o sistema se tornar não inicializável, inicialize com o ponto de referência noneusando a opção de inicialização -m milestone=none. Depois que o sistema estiver emoperação, remonte o sistema de arquivos raiz como gravável e, em seguida, renomeie ou mova oarquivo /etc/zfs/zpool.cache para outro local. Estas ações fazem com que o ZFS "esqueça"que há pools no sistema, evitando que ele tente acessar o pool defeituoso que está causando oproblema. Você pode, então, passar para o estado normal do sistema usando o comando svcadm

milestone all. É possível usar um processo semelhante ao inicializar a partir de uma raizalternativa para realizar reparações.

Reparando um sistema não inicializável

Guia de administração do ZFS Solaris • Setembro de 2008266

Page 267: Guia de amdiminstracao do zfs solaris

Depois que o sistema estiver em operação, você pode tentar importar o pool usando o comandozpool import. Entretanto, esta ação provavelmente provocará o mesmo erro ocorridodurante a inicialização, pois o comando usa o mesmo mecanismo para acessar os pools. Sehouver vários pools no sistema, adote o seguinte procedimento:

■ Renomeie ou mova o arquivo zpool.cache para outro local conforme mencionado acima.■ Determine qual pool pode apresentar problemas usando o comando fmdump -eV para exibir

os pools com erros fatais relatados.■ Importe os pools um por um, descartando os pools que apresentam problemas, conforme

descrito na saída de fmdump.

Reparando um sistema não inicializável

Capítulo 11 • Solução de problemas e recuperação de dados do ZFS 267

Page 268: Guia de amdiminstracao do zfs solaris

268

Page 269: Guia de amdiminstracao do zfs solaris

Índice

Aacessando

instantâneo do ZFS(exemplo de), 176

ACLsACL no arquivo ZFS

descrição detalhada, 195ACL no diretório do ZFS

descrição detalhada, 196definindo ACLs em arquivo ZFS (modo compacto)

(exemplo de), 213definindo ACLs no arquivo ZFS (modo compacto)

descrição, 212definindo ACLs no arquivo ZFS (modo verboso)

descrição, 196definindo em arquivos ZFS

descrição, 194definindo herança de ACL no arquivo ZFS (modo

verboso)(exemplo de), 202

descrição, 187descrição do formato, 189diferenças das ACLs baseadas no esquema

POSIX, 188herança da ACL, 192modificando a ACL comum no arquivo ZFS (modo

verboso)(exemplo de), 198

modo de proprideade aclmode, 193modo de propriedade aclinherit, 193modos de propriedade da ACL, 193privilégios de acesso, 190

ACLs (Continuação)restaurando ACL comum no arquivo ZFS (modoverboso)

(exemplo de), 201sinalizadores de herança da ACL, 192tipos de entrada, 190

ACLs baseadas no esquema POSIX, descrição, 188ACLs do NFSv4

descrição do formato, 189ACLS do NFSv4, diferenças das ACLs baseadas no

esquema POSIX, 188ACLs do NFSv4

herança da ACL, 192modelo

descrição, 187modos de propriedade da ACL, 193sinalizadores de herança da ACL, 192

ACLs do Solarisdescrição do formato, 189diferenças das ACLs baseadas no esquema

POSIX, 188herança da ACL, 192modos de propriedade da ACL, 193novo modelo

descrição, 187sinalizadores de herança da ACL, 192

adicionandodiscos a uma configuração RAID-Z (exemplo

de), 105dispositivos a um pool de armazenamento do ZFS

(zpool add)(exemplo de), 104

269

Page 270: Guia de amdiminstracao do zfs solaris

adicionando (Continuação)sistema de arquivos ZFS a uma região não global

(exemplo de), 235um dispositivo de log espelhado (exemplo de), 106volume ZFS a uma região não global

(exemplo de), 236administração delegada, visão geral, 217administração delegada de ZFS, visão geral, 217administração simplificada, descrição, 36ajustando, tamanhos de dispositivos de permuta e

despejo, 80anexando

dispositivos a um pool de armazenamento do ZFS(zpool attach)(exemplo de), 107

apagandoerros de dispositivo (zpool clear)

(exemplo de), 256armazenamento em pools, descrição, 34arquivos, como componentes de pools de

armazenamento do ZFS, 92arquivos de sistema ZFS

criando um volume ZFS(exemplo de), 231

atualizandopool de armazenamento do ZFS

descrição, 135autocorreção de dados, descrição, 94

Bblocos de inicialização, instalando com installboot e

installgrub, 82

Cclone, definição, 37clones

criando(exemplo de), 178

destruindo(exemplo de), 179

recursos, 178

colocando dispositivos on-line e off-linepool de armazenamento do ZFS

descrição, 109colocando um dispositivo off-line (zpool offline)

pool de armazenamento do ZFS(exemplo de), 110

colocando um dispositivo on-linepool de armazenamento do ZFS (zpool online)

(exemplo de), 111compartilhando

sistemas de arquivos ZFSdescrição, 166exemplo de, 166

componentes de, pool de armazenamento do ZFS, 89componentes do ZFS, requisitos para nomeação, 39comportamento por espaço excedido, diferenças entre o

ZFS e os sistemas de arquivos tradicionais, 51configuração espelhada

descrição, 92recurso de redundância, 92visão conceitual, 92

configuração RAID-Z(exemplo de), 96paridade dupla, descrição, 92paridade única, descrição, 92recurso de redundância, 92visão conceitual, 92

configuração RAID-Z, adicionando discos a, (exemplode), 105

conjunto de dadosdefinição, 37descrição, 137

conjuntos de permissões, definidos, 217contabilidade de espaço do ZFS, diferenças entre o ZFS

e os sistemas de arquivos tradicionais, 50controlando, validação de dados (scrubbing), 246cotas e reservas, descrição, 167criando

clone do ZFS(exemplo de), 178

hierarquia do sistema de arquivos ZFS, 44instantâneo do ZFS

(exemplo de), 174

Índice

Guia de administração do ZFS Solaris • Setembro de 2008270

Page 271: Guia de amdiminstracao do zfs solaris

criando (Continuação)pool de armazenamento do ZFS

descrição, 95pool de armazenamento do ZFS (zpool create)

(exemplo de), 95pool de armazenamento espelhado do ZFS (zpool

create)(exemplo de), 95

pool de armazenamento RAID-Z de paridade dupla(zpool create)(exemplo de), 96

pool de armazenamento RAID-Z de paridade única(zpool create)(exemplo de), 96

pools de raiz alternativa(exemplo de), 240

sistema de arquivos ZFS, 46(exemplo de), 138descrição, 138

um pool de armazenamento com dispositivos de log(exemplo de), 97

um pool de armazenamento do ZFS (zpool create)(exemplo de), 42

um sistema de arquivos ZFS básico (zpool create)(exemplo de), 42

volume emulado como dispositivo de permuta(exemplo de), 232

volume ZFS(exemplo de), 231

Ddados

corrompidos, 244corrupção identificada (zpool status -v)

(exemplo de), 251reparação, 245resilvering

descrição, 247scrubbing

(exemplo de), 246validação (scrubbing), 245

dados com soma de verificação, descrição, 35

definindoACLs em arquivo ZFS (modo compacto)

(exemplo de), 213ACLs em arquivos ZFS

descrição, 194ACLs no arquivo ZFS (modo compacto)

descrição, 212ACLs no arquivo ZFS (modo verboso)

descrição, 196cota do sistema de arquivos ZFS (zfs set quota)

exemplo de, 168cota do ZFS

(exemplo de), 156herança de ACL no arquivo ZFS (modo verboso)

(exemplo de), 202pontos de montagem de legado

(exemplo de), 163pontos de montagem do ZFS (zfs set mountpoint)

(exemplo de), 162propriedade atime do ZFS

(exemplo de), 156propriedade compression

(exemplo de), 46propriedade mountpoint, 46propriedade quota (exemplo de), 47propriedade sharenfs

(exemplo de), 46reserva do sistema de arquivos ZFS

(exemplo de), 170delegando

conjunto de dados a uma região não global(exemplo de), 236

permissões (exemplo de), 223delegando permissões, zfs allow, 220delegando permissões a um grupo, (exemplo de), 224delegando permissões a um usuário individual,

(exemplo de), 223desanexando

dispositivos de um pool de armazenamento do ZFS(zpool detach)(exemplo de), 109

descompartilhandosistemas de arquivos ZFS

exemplo de, 167

Índice

271

Page 272: Guia de amdiminstracao do zfs solaris

desmontandosistemas de arquivos ZFS

(exemplo de), 165destruindo

clone do ZFS(exemplo de), 179

instantâneo do ZFS(exemplo de), 175

pool de armazenamento do ZFSdescrição, 95

pool de armazenamento do ZFS (zpool destroy)(exemplo de), 102

sistema de arquivos ZFS(exemplo de), 139

sistema de arquivos ZFS com dependentes(exemplo de), 139

detectandodispositivos em uso

(exemplo de), 100níveis de replicação inconsistentes

(exemplo de), 101determinando

se um dispositivo pode ser substituídodescrição, 257

tipo de falha do dispositivodescrição, 254

diferenças entre o ZFS e os sistemas de arquivostradicionaiscomportamento por espaço excedido, 51contabilidade de espaço do ZFS, 50gerenciamento de volume tradicional, 51granularidade do sistema de arquivos, 49montando sistemas de arquivos ZFS, 51novo modelo de ACL do Solaris, 51

discos, como componentes de pools de armazenamentodo ZFS, 90

discos inteiros, como componentes de pools dearmazenamento do ZFS, 90

dispositivo virtual, definição, 39dispositivos de log espelhados, criando um pool com

(exemplo de), 97dispositivos de log espelhados, adicionando, (exemplo

de), 106

dispositivos de permuta e de despejodescrição, 79problemas, 80

dispositivos de permuta e despejo, ajustando tamanhosde, 80

dispositivos em usodetectando

(exemplo de), 100dispositivos separados de log, considerações sobre o

uso, 21dispositivos virtuais, como componentes de pools de

armazenamento do ZFS, 98distribuição dinâmica

descrição, 94recurso do pool de armazenamento, 94

Eenviando e recebendo

dados do sistema de arquivos ZFSdescrição, 180

espelho, definição, 38exibindo

estatísticas de E/S de pool de armazenamento do ZFSdescrição, 123

estatísticas de E/S de todos os pools dearmazenamento do ZFS(exemplo de), 123

estatísticas de E/S de vdev do pool dearmazenamento do ZFS(exemplo de), 124

histórico do comando, 27permissões delegadas (exemplo de), 222relatório de registro do sistema das mensagens de

erro do ZFSdescrição, 252

status de integridade detalhado do pool dearmazenamento do ZFS(exemplo de), 127

status de integridade do pool de armazenamento doZFS(exemplo de), 126

status de integridade dos pools de armazenamentodescrição de, 125

Índice

Guia de administração do ZFS Solaris • Setembro de 2008272

Page 273: Guia de amdiminstracao do zfs solaris

exportandopool de armazenamento do ZFS

(exemplo de), 129

Ggerenciamento de volume tradicional, diferenças entre

o ZFS e os sistemas de arquivos tradicionais, 51granularidade do sistema de arquivo, diferenças entre o

ZFS e os sistemas de arquivos tradicionais, 49

Hherdando

propriedades do ZFS (zfs inherit)descrição, 156

hierarquia do sistema de arquivos, criando, 44histórico do comando, histórico do zpool, 27histórico do zpool, (exemplo de), 27

Iidentificando

pool de armazenamento do ZFS para importação(zpool import -a)(exemplo de), 130

requisitos de armazenamento, 43tipo de corrupção de dados zpool status -v)

(exemplo de), 263importando

pool de armazenamento do ZFS(exemplo de), 133

pool de armazenamento do ZFS a partir de diretóriosalternativos (zpool import -d)(exemplo de), 132

pools de raiz alternativa(exemplo de), 240

inicializandosistema de arquivos raiz, 81um BE do ZFS com boot -L e boot -Z em sistema

SPARC, 84

instalação inicial do sistema de arquivos raiz ZFS,(exemplo de), 57

instalação JumpStartsistema de arquivos raiz

exemplos de perfil, 63problemas, 66

instalandosistema de arquivos raiz ZFS

(instalação inicial), 57instalação com JumpStart, 63recursos, 54requisitos, 55

instalando blocos de inicializaçãoinstallboot e installgrup

(exemplo de), 82instantâneo

acessando(exemplo de), 176

contagem de espaço, 177criando

(exemplo de), 174definição, 39destruindo

(exemplo de), 175recursos, 173renomeando

(exemplo de), 175revertendo

(exemplo de), 177

Llimpando

um dispositivo em um pool de armazenamento doZFS (zpool clear)descrição, 112

limpando um dispositivopool de armazenamento do ZFS)

(exemplo de), 112lista

informações do pool do ZFS, 44pools de armazenamento do ZFS

descrição, 121

Índice

273

Page 274: Guia de amdiminstracao do zfs solaris

lista (Continuação)sistemas de arquivos ZFS (zfs list)

(exemplo de), 47listando

descendentes dos sistemas de arquivos do ZFS(exemplo de), 154

pools de armazenamento do ZFS(exemplo de), 122

propriedades do ZFS (zfs list)(exemplo de), 157

propriedades do ZFS para script(exemplo de), 160

propriedades do ZFS por valor de origem(exemplo de), 159

sistemas de arquivos ZFS(exemplo de), 153

sistemas de arquivos ZFS sem informações decabeçalho(exemplo de), 155

tipos de sistemas de arquivos ZFS(exemplo de), 155

log de intenção ZFS (ZIL), descrição, 21luactivate

sistema de arquivos raiz(exemplo de), 70

lucreate

BE do ZFS a partir de um BE do ZFS(exemplo de), 72

migração de sistema de arquivos raiz(exemplo de), 69

Mmigrando

sistemas de arquivos raiz UFS para sistemas dearquivos raiz ZFS(Solaris Live Upgrade), 67problemas, 68

migrando pools de armazenamento do ZFS,descrição, 128

modelo de ACL, Solaris, diferenças entre o ZFS e ossistemas de arquivos tradicionais, 51

modificandoACL comum no arquivo ZFS (modo verboso)

(exemplo de), 198modo de propriedade aclinherit, 193modo de propriedade aclmode, 193modo de propriedade da ACL

aclinherit, 142aclmode, 142

modos de falha, 243ausência de dispositivos (falho), 244dados corrompidos, 244dispositivos danificados, 244

montandosistemas de arquivos ZFS

(exemplo de), 164montando sistemas de arquivos ZFS, diferenças entre o

ZFS e os sistemas de arquivos tradicionais, 51

Nníveis de replicação inconsistentes

detectando(exemplo de), 101

notificandoZFS sobre dispositivo reanexado (zpool online)

(exemplo de), 254

Ppalavras- chave de perfil do JumpStart, sistema de

arquivos raiz ZFS, 64perfis de direitos

para gerenciamento de sistemas de arquivos e poolsde armazenamento do ZFSdescrição, 241

ponto de montagempadrão para pools de armazenamento do ZFS, 102padrão para sistema de arquivos ZFS, 138

pontos de montagemautomático, 162gerenciando ZFS

descrição, 161legado, 161

Índice

Guia de administração do ZFS Solaris • Setembro de 2008274

Page 275: Guia de amdiminstracao do zfs solaris

pool, definição, 38pool de armazenamento do ZFS

adicionando dispositivos a (zpool add)(exemplo de), 104

pool de armazenamento espelhado (zpool create),(exemplo de), 95

pools de armazenamento do ZFSanexando dispositivos a (zpool attach)

(exemplo de), 107apagando erros de dispositivo(zpool clear)

(exemplo de), 256atualizando

descrição, 135ausência de dispositivos (falho)

descrição, 244colocando dispositivos on-line e off-line

descrição, 109colocando um dispositivo off-line (zpool offline)

(exemplo de), 110componentes, 89configuração espelhada, descrição de, 92configuração RAID-Z, descrição de, 92corrupção de dados identificada (zpool status -v)

(exemplo de), 251criando (zpool create)

(exemplo de), 95criando configuração espelhada (zpool create)

(exemplo de), 95criando uma configuração RAID-Z (zpool create)

(exemplo de), 96dados corrompidos

descrição, 244desanexando dispositivos de (zpool detach)

(exemplo de), 109destruindo (zpool destroy)

(exemplo de), 102determinando o tipo de falha do dispositivo

descrição, 254determinando se há problemas (zpool status -x)

descrição, 248determinando se um dispositivo pode ser substituído

descrição, 257dispositivo virtual

definição, 39

pools de armazenamento do ZFS (Continuação)dispositivos danificados

descrição, 244dispositivos virtuais, 98distribuição dinâmica, 94espelho

definição, 38estatísticas de E/S de vdev

(exemplo de), 124estatísticas de todos os pools

(exemplo de), 123exibindo o processo de resilvering

(exemplo de), 261exibindo status de integridade, 125

(exemplo de), 126exibindo status de integridade detalhado

(exemplo de), 127exportando

(exemplo de), 129identificando o tipo de corrupção de dados (zpool

status -v)(exemplo de), 263

identificando para importação (zpool import -a)(exemplo de), 130

identificando problemasdescrição, 248

importando(exemplo de), 133

importando de diretórios alternativos (zpoolimport -d)(exemplo de), 132

informações gerais sobre o status do pool parasolução de problemasdescrição, 249

limpando um dispositivo(exemplo de), 112

listando(exemplo de), 122

mensagens de erro do sistemadescrição, 252

migrandodescrição, 128

modos de falha, 243

Índice

275

Page 276: Guia de amdiminstracao do zfs solaris

pools de armazenamento do ZFS (Continuação)notificando ZFS sobre dispositivo reanexado (zpoolonline)

(exemplo de), 254perfis de direitos, 241ponto de montagem padrão, 102pool

definição, 38pools de raiz alternativa, 239RAID-Z

definição, 38realizando uma simulação (zpool create -n)

(exemplo de), 101recuperando um pool destruído

(exemplo de), 134reparação de dados

descrição, 245reparando arquivos ou diretórios corrompidos

descrição, 264reparando o dano de todo o pool

descrição, 266reparando um configuração danificada do ZFS, 252reparando um sistema não inicializável

descrição, 266resilvering

definição, 39script de saída de pool de armazenamento

(exemplo de), 122scrubbing de dados

(exemplo de), 246descrição, 246

scrubbing de dados e resilveringdescrição, 247

substituindo um dispositivo (zpool replace)(exemplo de), 112, 258

substituindo um dispositivo ausente(exemplo de), 253

usando arquivos, 92usando discos inteiros, 90validação de dados

descrição, 245pools de armazenamento do ZFS (zpool online)

colocando um dispositivo on-line(exemplo de), 111

pools de raiz alternativacriando

(exemplo de), 240descrição, 239importando

(exemplo de), 240propriedade altroot, descrição, 119propriedade atime, descrição, 142propriedade autoreplace, descrição, 119propriedade available, descrição, 142propriedade available, descrição, 119propriedade bootfs, descrição, 119propriedade canmount

descrição, 143descrição detalhada, 150

propriedade capacity, descrição, 119propriedade checksum, descrição, 143propriedade compression, descrição, 143propriedade compressratio, descrição, 143propriedade copies, descrição, 144propriedade creation, descrição, 144propriedade delegation, desativando, 218propriedade delegation, descrição, 119propriedade devices, descrição, 144propriedade exec, descrição, 144propriedade failmode, descrição, 120propriedade guid, descrição, 120propriedade health, descrição, 120propriedade mounted, descrição, 144propriedade mountpoint, descrição, 144propriedade origin, descrição, 145propriedade quota, descrição, 145propriedade read-only, descrição, 145propriedade recordsize

descrição, 145descrição detalhada, 151

propriedade referenced, descrição, 145propriedade refquota, descrição, 146propriedade refreservation, descrição, 146propriedade reservation, descrição, 146propriedade setuid, descrição, 146propriedade sharenfs

descrição, 147, 166propriedade size, descrição, 120

Índice

Guia de administração do ZFS Solaris • Setembro de 2008276

Page 277: Guia de amdiminstracao do zfs solaris

propriedade snapdir, descrição, 147propriedade type, descrição, 147propriedade used

descrição, 147descrição detalhada, 149

propriedade used, descrição, 120propriedade version, descrição, 120propriedade volblocksize, descrição, 147propriedade volsize

descrição, 147descrição detalhada, 151

propriedade xattr, descrição, 148propriedade zoned

descrição, 148descrição detalhada, 238

propriedades de ZFS, descrição de propriedadesherdáveis, 141

propriedades definíveis de ZFSaclinherit, 142aclmode, 142atime, 142checksum, 143devices, 144recordsize, 145

descrição detalhada, 151volblocksize, 147volsize, 147xattr, 148

propriedades definíveis do ZFScanmount, 143

descrição detalhada, 150compression, 143copies, 144descrição, 149exec, 144mountpoint, 144quota, 145read-only, 145refreservation, 146requota, 146reservation, 146setuid, 146sharenfs, 147snapdir, 147

propriedades definíveis do ZFS (Continuação)used

descrição detalhada, 149volsize

descrição detalhada, 151zoned, 148

propriedades do pool do ZFSalroot, 119autoreplace, 119available, 119bootfs, 119capacity, 119delegation, 119, 120guid, 120health, 120size, 120used, 120version, 120

propriedades do usuário do ZFS(exemplo de), 152descrição detalhada, 152

propriedades do ZFSaclinherit, 142aclmode, 142atime, 142available, 142canmount, 143

descrição detalhada, 150checksum, 143compression, 143compressratio, 143copies, 144creation, 144definíveis, 149descrição, 141devices, 144exec, 144gerenciamento dentro de uma região

descrição, 237herdável, descrição de, 141mounted, 144mountpoint, 144origin, 145

Índice

277

Page 278: Guia de amdiminstracao do zfs solaris

propriedades do ZFS (Continuação)propriedade zoned

descrição detalhada, 238propriedades do usuário

descrição detalhada, 152quota, 145read-only, 145recordsize, 145

descrição detalhada, 151referenced, 145refquota, 146refreservation, 146reservation, 146setuid, 146sharenfs, 147snapdir, 147somente leitura, 148type, 147used, 147

descrição detalhada, 149volblocksize, 147volsize, 147

descrição detalhada, 151xattr, 148zoned, 148

propriedades somente leitura de ZFSmounted, 144origin, 145

propriedades somente leitura do ZFSavailable, 142compression, 143creation, 144descrição, 148referenced, 145type, 147used, 147

RRAID-Z, definição, 38recebendo

dados do sistema de arquivos ZFS (zfs receive)(exemplo de), 182

recuperandopool de armazenamento destruído do ZFS

(exemplo de), 134recursos de replicação de ZFS, espelhado ou

RAID-Z, 92regiões

adicionando o sistema de arquivos ZFS a uma regiãonão global(exemplo de), 235

adicionando volume ZFS a uma região não global(exemplo de), 236

delegando conjunto de dados a uma região nãoglobal(exemplo de), 236

gerenciamento de propriedades do ZFS dentro deuma regiãodescrição, 237

propriedade zoneddescrição detalhada, 238

usando com sistemas de arquivos ZFSdescrição, 235

removendo permissões, zfs unallow, 221renomeando

instantâneo do ZFS(exemplo de), 175

sistema de arquivos ZFS(exemplo de), 140

reparandodano de todo o pool

descrição, 266reparando arquivos ou diretórios corrompidos

descrição, 264um sistema não inicializável

descrição, 266uma configuração danificada do ZFS

descrição, 252requisitos, para instalação e Live Upgrade, 55requisitos de armazenamento, identificando, 43requisitos de hardware e software, 41requisitos para nomeação, componentes do ZFS, 39resilvering, definição, 39resilvering e scrubbing de dados, descrição, 247

Índice

Guia de administração do ZFS Solaris • Setembro de 2008278

Page 279: Guia de amdiminstracao do zfs solaris

restaurandoACL

comum no arquivo ZFS (modo verboso), 201revertendo

instantâneo do ZFS(exemplo de), 177

rótulo EFIdescrição, 90interação com o ZFS, 90

Ssalvando

dados do sistema de arquivos ZFS (zfs send)(exemplo de), 181

scriptsaída de pool de armazenamento do ZFS

(exemplo de), 122scrubbing

(exemplo de), 246validação de dados, 245

semânticas transacionais, descrição, 35simulação

criação de pool de armazenamento do ZFS (zpoolcreate -n)(exemplo de), 101

sistema de arquivos, definição, 38sistema de arquivos raiz ZFS

instalação inicial do sistema de arquivos raizZFS, 57

instalando um sistema de arquivos raiz, 54requisitos de instalação e do Live Upgrade, 55

sistema de arquivos ZFS, descrição, 137sistemas de arquivos do ZFS

herdando propriedade de (zfs inherit)(exemplo de), 156

listando descendentes(exemplo de), 154

sistemas de arquivos raiz ZFSmigração de sistemas de arquivos raiz com o Solaris

Live Upgrade(exemplo de), 69

sistemas de arquivos ZFSACL no arquivo ZFS

descrição detalhada, 195ACL no diretório do ZFS

descrição detalhada, 196adicionando sistema de arquivos ZFS a uma região

não global(exemplo de), 235

adicionando volume ZFS a uma região não global(exemplo de), 236

administração simplificadadescrição, 36

armazenamento em poolsdescrição, 34

clonecriando, 178destruindo, 179substituindo um sistema de arquivos por

(exemplo de), 179clones

definição, 37descrição, 178

compartilhandodescrição, 166exemplo de, 166

conjunto de dadosdefinição, 37

contagem de espaço do instantâneo, 177criando

(exemplo de), 138criando um volume ZFS como dispositivo de

permuta(exemplo de), 232

dados com soma de verificaçãodescrição, 35

definindo a propriedade atime(exemplo de), 156

definindo a propriedade quota(exemplo de), 156

definindo ACLs em arquivo ZFS (modo compacto)(exemplo de), 213

definindo ACLs em arquivos ZFSdescrição, 194

Índice

279

Page 280: Guia de amdiminstracao do zfs solaris

sistemas de arquivos ZFS (Continuação)definindo ACLs no arquivo ZFS (modo compacto)

descrição, 212definindo ACLs no arquivo ZFS (modo verboso)

descrição, 196definindo herança de ACL no arquivo ZFS (modo

verboso)(exemplo de), 202

definindo o ponto de montagem (zfs setmountpoint)(exemplo de), 162

definindo o ponto de montagem de legado(exemplo de), 163

definindo uma reserva(exemplo de), 170

delegando conjunto de dados a uma região nãoglobal(exemplo de), 236

descompartilhandoexemplo de, 167

descrição, 34desmontando

(exemplo de), 165destruindo

(exemplo de), 139destruindo com dependentes

(exemplo de), 139dispositivos de permuta e de despejo

descrição, 79problemas, 80

dispositivos de permuta e despejoajustando os tamanhos de, 80

enviando e recebendodescrição, 180

gerenciamento dentro de uma regiãodescrição, 237

gerenciando pontos de montagemdescrição, 161

gerenciando pontos de montagem automáticos, 162gerenciando pontos de montagem de legado

descrição, 161inicializando um BE do ZFS com boot -L e boot -Z

(exemplo de SPARC), 84

sistemas de arquivos ZFS (Continuação)inicializando um sistema de arquivos raiz

descrição, 81instalação de sistema de arquivos raiz com

JumpStart, 63instantâneo

acessando, 176criando, 174definição, 39descrição, 173renomeando, 175revertendo, 177

instantâneosdestruindo, 175

listando(exemplo de), 153

listando propriedades de (zfs list)(exemplo de), 157

listando propriedades para script(exemplo de), 160

listando propriedades por valor de origem(exemplo de), 159

listando sem informações de cabeçalho(exemplo de), 155

listando tipos de(exemplo de), 155

migração de sistemas de arquivos raiz com o SolarisLive Upgrade, 67

modificando a ACL comum no arquivo ZFS (modoverboso)(exemplo de), 198

montando(exemplo de), 164

perfis de direitos, 241ponto de montagem padrão

(exemplo de), 138problemas de migração de sistemas de arquivos, 68recebendo fluxos de dados (zfs receive)

(exemplo de), 182renomeando

(exemplo de), 140requisitos para nomeação de componentes, 39restaurando ACL comum no arquivo ZFS (modo

verboso)

Índice

Guia de administração do ZFS Solaris • Setembro de 2008280

Page 281: Guia de amdiminstracao do zfs solaris

sistemas de arquivos ZFS, restaurando ACL comum noarquivo ZFS (modo verboso) (Continuação)

(exemplo de), 201salvando fluxos de dados (zfs send)

(exemplo de), 181semânticas transacionais

descrição, 35sistema de arquivos

definição, 38soma de verificação

definição, 37tipos de conjunto de dados

descrição, 154usando em um sistema Solaris com regiões instaladas

descrição, 235volume

definição, 39sistemas de arquivos ZFS (zfs set quota)

definindo cotaexemplo de, 168

sobressalentescriando

(exemplo de), 114descrição de

(exemplo de), 114Solaris Live Upgrade

migração de sistema de arquivos raiz(exemplo de), 69

para migração de sistemas de arquivos raiz, 67problemas de migração de sistemas de arquivos, 68

solução de problemasapagar erros de dispositivo(zpool clear)

(exemplo de), 256ausência de dispositivos (falho), 244corrupção de dados identificada (zpool status -v)

(exemplo de), 251determinando o tipo de corrupção de dados (zpool

status -v)(exemplo de), 263

determinando o tipo de falha do dispositivodescrição, 254

determinando se há problemas (zpool status-x), 248

solução de problemas (Continuação)determinando se um dispositivo pode ser substituído

descrição, 257dispositivos danificados, 244identificando problemas, 248informações gerais sobre o status do pool

descrição, 249modos de falha do ZFS, 243notificando ZFS sobre dispositivo reanexado (zpool

online)(exemplo de), 254

relatório de registro do sistema das mensagens deerro do ZFS, 252

reparando arquivos ou diretórios corrompidosdescrição, 264

reparando o dano de todo o pooldescrição, 266

reparando um sistema não inicializáveldescrição, 266

reparando uma configuração danificada doZFS, 252

substituindo um dispositivo (zpool replace)(exemplo de), 258, 261

substituindo um dispositivo ausente(exemplo de), 253

soma de verificação, definição, 37substituindo

um dispositivo (zpool replace)(exemplo de), 112, 258, 261

um dispositivo ausente(exemplo de), 253

Tterminologia

clone, 37conjunto de dados, 37dispositivo virtual, 39espelho, 38instantâneo, 39pool, 38RAID-Z, 38resilvering, 39sistema de arquivos, 38

Índice

281

Page 282: Guia de amdiminstracao do zfs solaris

terminologia (Continuação)soma de verificação, 37volume, 39

tipos de conjunto de dados, descrição, 154

Vverificando, integridade dos dados do ZFS, 245volume, definição, 39volume ZFS

como dispositivo de permuta, 232descrição, 231

Zzfs allow

descrito, 220exibindo permissões delegadas, 222

zfs create

(exemplo de), 46, 138descrição, 138

zfs destroy, (exemplo de), 139zfs destroy -r, (exemplo de), 139zfs get, (exemplo de), 157zfs get -H -o, (exemplo de), 160zfs get -s, (exemplo de), 159zfs inherit, (exemplo de), 156zfs list

(exemplo de), 47, 153zfs list -H, (exemplo de), 155zfs list -r, (exemplo de), 154zfs list -t, (exemplo de), 155zfs mount, (exemplo de), 164zfs promote, promoção de clone (exemplo de), 179zfs receive, (exemplo de), 182zfs rename, (exemplo de), 140zfs send, (exemplo de), 181zfs set atime, (exemplo de), 156zfs set compression, (exemplo de), 46zfs set mountpoint

(exemplo de), 46, 162zfs set mountpoint=legacy, (exemplo de), 163

zfs set quota

(exemplo de), 47zfs set quota, (exemplo de), 156zfs set quota

exemplo de, 168zfs set reservation, (exemplo de), 170zfs set sharenfs, (exemplo de), 46zfs set sharenfs=on, exemplo de, 166zfs unallow, descrito, 221zfs unmount, (exemplo de), 165zpool add, (exemplo de), 104zpool attach, (exemplo de), 107zpool clear

(exemplo de), 112descrição, 112

zpool create

(exemplo de), 42, 44pool básico

(exemplo de), 95pool de armazenamento espelhado

(exemplo de), 95pool de armazenamento RAID-Z

(exemplo de), 96zpool create -n

simulação(exemplo de), 101

zpool destroy, (exemplo de), 102zpool detach, (exemplo de), 109zpool export, (exemplo de), 129zpool import -a, (exemplo de), 130zpool import -D, (exemplo de), 134zpool import -d, (exemplo de), 132zpool import nome, (exemplo de), 133zpool iostat, todos os pools (exemplo de), 123zpool iostat -v, vdev (exemplo de), 124zpool list

(exemplo de), 44, 122descrição, 121

zpool list -Ho name, (exemplo de), 122zpool offline, (exemplo de), 110zpool online, (exemplo de), 111zpool replace, (exemplo de), 112zpool status -v, (exemplo de), 127zpool status -x, (exemplo de), 126

Índice

Guia de administração do ZFS Solaris • Setembro de 2008282

Page 283: Guia de amdiminstracao do zfs solaris

zpool upgrade, 135

Índice

283

Page 284: Guia de amdiminstracao do zfs solaris

284