Este capítulo oferece uma visão geral do sistema de arquivos Oracle Solaris 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:
Esta seção resume os novos recursos do sistema de arquivos ZFS.
Dividindo um conjunto de armazenamento do ZFS espelhado (zpool split)
Utilizando dispositivos de cache no conjunto de armazenamento do ZFS
Cotas e reservas do ZFS somente para dados do sistema de arquivos
Aprimoramentos no histórico do comando do ZFS (zpool history)
Sobressalentes para dispositivos do pool de armazenamento do ZFS
Substituindo um sistema de arquivos do ZFS por um clone do ZFS (zfs promote)
Atualizando conjuntos de armazenamento do ZFS (zpool upgrade)
Versão 10 9/10 do Oracle Solaris: nessa versão do Solaris, você pode utilizar o comandozpool split para dividir um conjunto de armazenamento espelhado, o que desanexa um disco ou discos do conjunto espelhado original para criar outro conjunto idêntico.
Para maiores informações, consulte Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado.
Versão 10 9/10 do Oracle Solaris: nessa versão do Solaris, cada conjunto de armazenamento do ZFS possui um processo associado, zpool-poolname. Os segmentos nesse processo são os segmentos de processamento de E/S do conjunto que manipulam tarefas de E/S tais como compactação e soma de verificação, que estão associadas ao conjunto. A finalidade desse processo é oferecer visibilidade em cada utilização de CPU do conjunto de armazenamento. Informações sobre esse processo podem ser revisadas utilizando os comandos ps e prstat. Esses processos estão disponíveis apenas na região global. Para obter mais informações, consulte SDC(7).
Versão 10 9/10 do Oracle Solaris: nessa versão do Solaris, a saída zpool list mudou para oferecer melhores informações de alocação de espaço. Por exemplo:
# zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 136G 55.2G 80.8G 40% ONLINE - |
Os campos USED e AVAIL anteriores foram substituídos por ALLOC e FREE.
O campo ALLOC identifica a quantidade de espaço físico alocado para todos os conjuntos de dados e metadados internos. O campo FREE identifica a quantidade de espaço não alocada no conjunto.
Para maiores informações, consulte, Exibindo informações sobre os conjuntos de armazenamento ZFS.
Versão 10 9/10 do Oracle Solaris: um conjunto de armazenamento pode ficar danificado se dispositivos subjacentes ficarem indisponíveis, se ocorrer uma falha de energia ou se mais do que o número suportado de dispositivos falharem em uma configuração de ZFS redundante. Essa versão oferece novos recursos de comandos para recuperar seu conjunto de armazenamento danificado. No entanto, utilizar esse recurso de recuperação significa que as últimas transações que ocorreram previamente à interrupção do conjunto podem ser perdidas.
Tanto o comando zpool clear quanto o zpool import suportam a opção -F para possivelmente recuperar um conjunto danificado. Além disso, executar os comandos zpool status, zpool clear ou zpool import reporta automaticamente um conjunto danificado e esses comandos descrevem como recuperá-lo.
Para mais informações, consulte Reparando o dano de todo o pool de armazenamento do ZFS.
Versão 10 9/10 do Oracle Solaris: estão disponíveis os seguintes aprimoramentos de dispositivo de log:
A propriedade logbias: é possível utilizar essa propriedade para oferecer uma dica ao ZFS sobre a manipulação de solicitações síncronas para um conjunto de dados específico. Se logbias estiver definida como latência, o ZFS utiliza os dispositivos de log separados do conjunto, se houver algum, para manipular as solicitações em baixa latência. Se logbias estiver definida como throughput, o ZFS não utiliza os dispositivos de log separados do conjunto. Em vez disso, o ZFS otimiza operações síncronas para throughput de conjunto global e uso eficiente de recursos. O valor padrão é latência. Para a maioria das configurações, é recomendado o valor padrão. Utilizar o valor logbias=throughput pode melhorar o desempenho da gravação de arquivos de banco de dados.
Remoção do dispositivo de log: agora é possível remover um dispositivo de log de um conjunto de armazenamento do ZFS utilizando o comando zpool remove. Um dispositivo de log único pode ser removido especificando o nome do dispositivo. Um dispositivo de log espelhado pode ser removido especificando o espelho de nível superior para o log. Quando um dispositivo de log separado é removido do sistema, os registros de transação ZIL são gravados no conjunto principal.
Dispositivos virtuais de nível superior redundantes agora são identificados com um identificador numérico. Por exemplo, em um conjunto de armazenamento espelhado de dois discos, o dispositivo virtual de nível superior é mirror-0.
Para obter mais informações, consulte o Exemplo 4–3.
Versão 10 9/10 do Oracle Solaris: nessa versão do Solaris, uma configuração RAID-Z redundante agora pode possuir paridade única, dupla ou tripla, o que significa que uma, duas ou três falhas de dispositivo podem ser sustentadas respectivamente, sem qualquer perda de dados. Você pode especificar a palavra-chave raidz3 para uma configuração de RAID-Z de paridade tripla. Para mais informações, consulte Criando um conjunto de armazenamento RAID-Z.
Versão 10 9/10 do Oracle Solaris: se implementar diferentes políticas de instantâneo automáticas de maneira que instantâneos mais antigos estejam sendo inadvertidamente destruídos pelo zfs receive por não existirem mais no lado de envio, você pode considerar a utilização do recurso de contenção de instantâneos nessa versão do Solaris.
Manter um instantâneo o impede de ser destruído. Além disso, esse recurso permite que um instantâneo com clones seja excluído, ficando pendente a remoção do último clone utilizando o comando zfs destroy -d.
É possível manter um instantâneo ou um conjunto de instantâneos. Por exemplo, a sintaxe a seguir coloca uma marcação de contenção keep em tank/home/cindys/snap@1 .
# zfs hold keep tank/home/cindys@snap1 |
Para mais informações, consulte Contendo instantâneos do ZFS.
Versão 10 9/10 do Oracle Solaris: nessa versão do Solaris, um evento de sistema ou sysevent é fornecido quando um dispositivo subjacente é expandido. O ZFS foi aprimorado para reconhecer esses eventos e ajustar o conjunto com base no novo tamanho do LUN expandido, dependendo da configuração da propriedade autoexpand. É possível utilizar a propriedade do conjunto autoexpand para ativar ou desativar a expansão automática do conjunto quando um evento de expansão de LUN dinâmico for recebido.
Esses recursos permitem que você expanda um LUN e o conjunto resultante pode acessar o espaço expandido sem precisar exportar e importar o conjunto ou reinicializar o sistema.
Por exemplo, a expansão LUN automática é ativada no conjunto tank.
# zpool set autoexpand=on tank |
Ou você pode criar o conjunto com a propriedade autoexpand ativada.
# zpool create -o autoexpand=on tank c1t13d0 |
A propriedade autoexpand está desativada por padrão para que você possa decidir se deseja ou não a expansão do LUN.
Um LUN também pode ser expandido utilizando o comando zpool online - e. Por exemplo:
# zpool online -e tank c1t6d0 |
É possível redefinir a propriedade autoexpand depois do LUN ser anexado ou disponibilizado com a utilização do recurso zpool replace. Por exemplo, o conjunto a seguir é criado com um disco de 8 GB (c0t0d0). O disco de 8 GB é substituído por um disco de 16 GB (c1t13d0), mas o tamanho do conjunto não é expandido até que a propriedade autoexpand seja ativada.
# zpool create pool c0t0d0 # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 8.44G 76.5K 8.44G 0% ONLINE - # zpool replace pool c0t0d0 c1t13d0 # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 8.44G 91.5K 8.44G 0% ONLINE - # zpool set autoexpand=on pool # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 91.5K 16.8G 0% ONLINE - |
Outra maneira de expandir o LUN no exemplo acima sem ativar a propriedade autoexpand é utilizar o comando zpool online - e mesmo que o dispositivo já esteja online. Por exemplo:
# zpool create tank c0t0d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 8.44G 76.5K 8.44G 0% ONLINE - # zpool replace tank c0t0d0 c1t13d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 8.44G 91.5K 8.44G 0% ONLINE - # zpool online -e tank c1t13d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 16.8G 90K 16.8G 0% ONLINE - |
Os aprimoramentos adicionais de substituição de dispositivo nessa versão incluem os recursos a seguir:
Em versões anteriores, o ZFS não era capaz de substituir um disco existente por outro disco ou anexar um disco se o disco de substituição fosse de um tamanho ligeiramente diferente. Nessa versão, é possível substituir um disco existente por outro disco ou anexar um novo disco que seja nominalmente do mesmo tamanho, desde que o conjunto não esteja cheio.
Nessa versão, não é necessário reinicializar o sistema ou exportar e importar um conjunto para expandir um LUN. Conforme descrito acima, você pode ativar a propriedade autoexpand ou utilizar o comando zpool online - e para expandir o tamanho total de um LUN.
Para obter informações sobre a substituição de dispositivos, consulte Substituindo dispositivos em um pool de armazenamento.
Versão 10 10/09 do Solaris: nessa versão do Solaris, é possível configurar um perfil JumpStart para identificar um arquivo Flash de um conjunto raiz ZFS. Para mais informações, consulte Instalando um sistema de arquivos raiz ZFS (instalação de arquivo do Oracle Solaris Flash).
Versão 10 10/09 do Solaris: em versões anteriores do Solaris, você podia aplicar cotas e reservas para um sistema de arquivos ZFS para gerenciar e reservar espaço em disco.
Nessa versão do Solaris, é possível definir uma cota na quantidade de espaço em disco utilizado por arquivos que pertencem a um determinado usuário ou grupo. Você pode considerar definir cotas de usuário e grupo em um ambiente com um grande número de usuários ou grupos.
É possível definir uma cota de usuário utilizando a propriedade zfs userquota. Para definir uma cota de grupo, utilize a propriedade zfs groupquota. Por exemplo:
# zfs set userquota@user1=5G tank/data # zfs set groupquota@staff=10G tank/staff/admins |
Você pode exibir a cota atual de usuários ou grupos configurando como a seguir:
# zfs get userquota@user1 tank/data NAME PROPERTY VALUE SOURCE tank/data userquota@user1 5G local # zfs get groupquota@staff tank/staff/admins NAME PROPERTY VALUE SOURCE tank/staff/admins groupquota@staff 10G local |
Exiba informações de cota gerais como a seguir:
# zfs userspace tank/data TYPE NAME USED QUOTA POSIX User root 3K none POSIX User user1 0 5G |
# zfs groupspace tank/staff/admins TYPE NAME USED QUOTA POSIX Group root 3K none POSIX Group staff 0 10G |
É possível exibir a utilização de espaço de um usuário individual visualizando a propriedade userused@usuário. A utilização do espaço em disco de um grupo pode ser visualizada através da utilização da propriedade groupused@ grupo. Por exemplo:
# zfs get userused@user1 tank/staff NAME PROPERTY VALUE SOURCE tank/staff userused@user1 213M local # zfs get groupused@staff tank/staff NAME PROPERTY VALUE SOURCE tank/staff groupused@staff 213M local |
Para mais informações sobre como definir cotas de usuário, consulte Definindo cotas e reservas do ZFS.
Versão 10 /10/09 do Solaris: em versões anteriores do Solaris, você podia aplicar a herança ACL para que todos os arquivos fossem criados com as permissões 0664 ou 0666. Nessa versão, se você quiser opcionalmente incluir o bit executar do modo de criação de arquivo no ACL herdado, é possível definir o modo aclinherit para passar a permissão de executar ao ACL herdado.
Se aclinherit=passthrough-x estiver ativado em um conjunto de dados ZFS, você pode incluir permissões de executar para um arquivo de saída que seja gerado a partir das ferramentas de compilação cc ou gcc. Se a ACL herdada não inclui permissões de executar, então a saída executável do compilador não será executável até que você utilize o comando chmod para alterar as permissões do arquivo.
Para obter mais informações, consulte o Exemplo 8–12.
Solaris 10 10/09 e Oracle Solaris 10 9/10: os aprimoramentos do sistema de arquivos do ZFS a seguir estão incluídos nessas versões.
Aprimoramentos de propriedade de fluxo de instantâneos do ZFS: é possível definir uma propriedade recebida que seja diferente de sua configuração de propriedade local. Por exemplo, é possível receber um fluxo com a propriedade de compactação desativada, mas você deseja a compactação ativada no sistema de arquivos recebedor. Isso significa que o fluxo recebido possui um valor de compactação recebido de off e um valor de compactação local deon. Uma vez que o valor local ignora o valor recebido, não é necessário se preocupar com a configuração no lado de envio substituindo o valor do lado recebido. O comando zfs get mostra o valor efetivo da propriedade de compactação na coluna VALUE.
As novas propriedades e opções de comando do ZFS para suportar valores de propriedade locais e de envio são como a seguir:
Utilize o zfs inherit - S para reverter um valor de propriedade local para o valor recebido, se houver algum. Se uma propriedade não possuir um valor recebido, o comportamento do comando zfs inherit - S é o mesmo do comando zfs inherit sem a opção- S. Se a propriedade não possuir um valor recebido, o comando zfs inherit mascara o valor recebido com o valor herdado até que a emissão de um comando zfs inherit -S o reverta para o valor recebido.
É possível utilizar o zfs get -o para incluir a nova coluna RECEIVED não padrão. Ou utilize o comando zfs get -o all para incluir todas as colunas, inclusive a RECEIVED.
É possível utilizar a opção zfs send -p para incluir propriedades no fluxo de envio sem a opção -R.
Além disso, é possível utilizar a opção zfs send -e para utilizar o último elemento do nome do instantâneo enviado para determinar o novo nome do instantâneo. O exemplo a seguir envia o instantâneo poola/bee/cee@1 ao sistema de arquivos poold/eee e utiliza somente o último elemento (cee@1) do nome do instantâneo para criar o instantâneo e o sistema de arquivos recebido.
# zfs list -rt all poola NAME USED AVAIL REFER MOUNTPOINT poola 134K 134G 23K /poola poola/bee 44K 134G 23K /poola/bee poola/bee/cee 21K 134G 21K /poola/bee/cee poola/bee/cee@1 0 - 21K - # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee # zfs list -rt all poold NAME USED AVAIL REFER MOUNTPOINT poold 134K 134G 23K /poold poold/eee 44K 134G 23K /poold/eee poold/eee/cee 21K 134G 21K /poold/eee/cee poold/eee/cee@1 0 - 21K - |
Definindo as propriedades do sistema de arquivos do ZFS no momento da criação do conjunto: é possível definir as propriedades do sistema de arquivos do ZFS quando o conjunto é criado. No exemplo a seguir, a compactação é ativada no sistema de arquivos do ZFS que é criado quando o conjunto é criado:
# zpool create -O compression=on pool mirror c0t1d0 c0t2d0 |
Definindo as propriedades do cache em um sistema de arquivos do ZFS: duas novas propriedades do sistema de arquivos do ZFS permitem que você controle o que é armazenado em cache no cache primário (ARC) e no cache secundário (L2ARC). As propriedades do cache são definidas como segue:
primarycache – Controla o que é colocado no cache no ARC.
secondarycache – Controla o que é colocado no cache no L2ARC.
Os valores possíveis para ambas as propriedades – all, none e metadata. Se forem definidas como todos, os dados do usuário e os metadados serão armazenados em cache. Se forem definidas como nenhum, nem os dados do usuário nem os metadados serão armazenados em cache. Se forem definidas como metadados, somente os metadados serão armazenados em cache. O padrão e all.
É possível definir essas propriedades em um sistema de arquivos existente ou quando um sistema de arquivos é criado. Por exemplo:
# zfs set primarycache=metadata tank/datab # zfs create -o primarycache=metadata tank/newdatab |
Quando essas propriedades são definidas no sistema de arquivos existente, somente E/S nova é armazenada em cache com base no valor dessas propriedades.
Alguns ambientes de banco de dados podem se beneficiar de não colocar os dados do usuário no cache. É necessário determinar se as definições das propriedades do cache são apropriadas para seu ambiente.
Visualizar propriedades de contabilidade de espaço em disco: novas propriedades de sistema de arquivos de somente leitura lhe ajudam a identificar o uso do espaço em disco para clones, sistemas de arquivos, volumes e instantâneos. As propriedades são as seguintes:
usedbychildren: identifica a quantidade de espaço em disco utilizado pelos filhos desse conjunto de dados, que seria liberado se todos os filhos do conjunto de dados fossem destruídos. A abreviatura da propriedade é usedchild.
usedbydataset: identifica a quantidade de espaço em disco utilizado por esse próprio conjunto de dados, que seria liberado se o conjunto de dados fosse destruído, depois de primeiramente destruir quaisquer instantâneos e remover quaisquer reservas. A abreviatura da propriedade é usedds.
usedbyrefreservation: identifica a quantidade de espaço em disco utilizado por uma reserva definida nesse conjunto de dados, que seria liberado se a reserva fosse removida. A abreviatura da propriedade é usedrefreserv.
usedbysnapshots: identifica a quantidade de espaço em disco utilizado por instantâneos desse conjunto de dados, que seria liberado se todos os instantâneos do conjunto de dados fossem destruídos. Observe que essa não é a soma das propriedades utilizadas do instantâneo, porque o espaço em disco pode ser compartilhado por instantâneos múltiplos. A abreviatura da propriedade é usedsnap.
Essas novas propriedades discriminam o valor da propriedade utilizado nos diversos elementos que consomem espaço em disco. Em particular, o valor da propriedade utilizado é discriminado como a seguir:
used property = usedbychildren + usedbydataset + usedbyrefreservation + usedbysnapshots |
É possível visualizar essas propriedades ao utilizar o comando zfs list - o space. Por exemplo:
$ zfs list -o space NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD rpool 25.4G 7.79G 0 64K 0 7.79G rpool/ROOT 25.4G 6.29G 0 18K 0 6.29G rpool/ROOT/snv_98 25.4G 6.29G 0 6.29G 0 0 rpool/dump 25.4G 1.00G 0 1.00G 0 0 rpool/export 25.4G 38K 0 20K 0 18K rpool/export/home 25.4G 18K 0 18K 0 0 rpool/swap 25.8G 512M 0 111M 401M 0 |
O comando acima é equivalente ao comando zfs list - o name,avail,used,usedsnap,usedds,usedrefreserv,usedchild -t filesystem,volume.
Listando instantâneos: a propriedade listsnapshots do conjunto controla se a exibição das informações do instantâneo estão exibidos pelo comando zfs list. O valor padrão é on, o que significa que as informações do instantâneo são exibidas por padrão.
Se seu sistema possuir muitos instantâneos do ZFS e você desejar desativar a exibição das informações do instantâneo no comando zfs list, desabilite o listsnapshots devidamente como a seguir:
# zpool get listsnapshots pool NAME PROPERTY VALUE SOURCE pool listsnapshots on default # zpool set listsnaps=off pool |
Se você desativar a propriedade listsnapshots, é possível utilizar o comando zfs list -t snapshots para listar as informações do instantâneo. Por exemplo:
# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT pool/home@today 16K - 22K - pool/home/user1@today 0 - 18K - pool/home/user2@today 0 - 18K - pool/home/user3@today 0 - 18K - |
Versão 10 10/09 do Solaris: nessa versão, o ZFS identifica as falhas de log intencionais na saída do comando zpool status. A Fault Management Architecture (FMA) também reporta esses erros. O ZFS e o FMA descrevem como recuperar uma falha de log intencional.
Por exemplo, se o sistema for desligado abruptamente antes que as operações de gravação síncrona sejam validadas para um conjunto com um dispositivo de log separado, você verá mensagens semelhantes as seguintes:
# zpool status -x pool: pool state: FAULTED status: One or more of the intent logs could not be read. Waiting for adminstrator intervention to fix the faulted pool. action: Either restore the affected device(s) and run 'zpool online', or ignore the intent log records by running 'zpool clear'. scrub: none requested config: NAME STATE READ WRITE CKSUM pool FAULTED 0 0 0 bad intent log mirror ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 logs FAULTED 0 0 0 bad intent log c0t5d0 UNAVAIL 0 0 0 cannot open |
É possível solucionar a falha do dispositivo de log das seguintes maneiras:
Substitua ou recupere o dispositivo de registro. Neste exemplo, o dispositivo é c0t5d0.
Coloque o dispositivo de registro de volta on-line.
# zpool online pool c0t5d0 |
Redefina a condição de erro do dispositivo de log falho.
# zpool clear pool |
Se desejar recuperar esse erro sem substituir o dispositivo de log falho, é possível limpar o erro com o comando zpool clear. Nesse cenário, o conjunto irá operar em um modo degradado e os logs serão gravados no conjunto principal até que o dispositivo de log separado seja substituído.
Considere o uso de dispositivos de log espelhados para evitar o cenário de falha do dispositivo de log.
Versão 10 10/09 do Solaris: nessa versão, ao criar um conjunto é possível especificar dispositivos de cache, que são utilizados para armazenar em cache dados do conjunto de armazenamento.
Os dispositivos de cache fornecem uma camada adicional de cache entre a memória principal e o disco. A utilização dos dispositivos de cache oferece a maior melhoria de desempenho para cargas de trabalho de leitura aleatória do conteúdo geralmente estático.
Um ou mais dispositivos de cache podem ser especificados quando se cria o conjunto. Por exemplo:
# zpool create pool mirror c0t2d0 c0t4d0 cache c0t0d0 # zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 cache c0t0d0 ONLINE 0 0 0 errors: No known data errors |
Depois que os dispositivos de cache são adicionados, eles gradualmente são preenchidos com o conteúdo da memória principal. Dependendo do tamanho do dispositivo de cache, poderá demorar mais de uma hora para que os dispositivos sejam preenchidos. A capacidade e as leituras podem ser monitoradas usando o comando zpool iostat como segue:
# zpool iostat -v pool 5 |
Os dispositivos de cache podem ser adicionados ou removidos de um conjunto depois dele ser criado.
Para mais informações, consulte Criando um conjunto de armazenamento do ZFS com dispositivos de cache e Exemplo 4–4.
Versão 10 5/09 do Solaris: essa versão amplia o suporte à migração de regiões em um ambiente do ZFS com o Oracle Solaris Live Upgrade. Para obter mais informações, consulte Utilizando o Oracle Solaris Live Upgrade para migrar ou atualizar um sistema com regiões (no mínimo Solaris 10 5/09).
Para obter uma lista dos problemas conhecidos dessa versão, consulte as notas de versão do Solaris 10 5/09.
Versão 10 10/08 do Solaris 10: essa versão permite que você instale e inicialize um sistema de arquivos raiz do ZFS. Você pode usar a opção de instalação inicial ou o recurso JumpStart para instalar um sistema de arquivos raiz ZFS. Ou você pode utilizar o recurso Oracle Solaris Live Upgrade para migrar um sistema de arquivos raiz do UFS para um sistema de arquivos raiz do ZFS. O suporte do ZFS para dispositivos de permuta e despejo também é oferecido. Para mais informações, consulte Capítulo 5Instalando e inicializando um sistema de arquivos raiz ZFS do Oracle Solaris.
Para obter uma lista de problemas conhecidos dessa versão, visite o site a seguir:
http://hub.opensolaris.org/bin/view/Community+Group+zfs/boot
Consulte também as notas de versão do Solaris 10 10/08.
Versão 10 10/08 do Solaris: essa versão permite que você reverta um conjunto de dados sem desmontá-lo primeiro. Dessa forma, a opção zfs rollback - f não é mais necessária para forçar uma operação de desmontagem. A opção -f não possui mais suporte e é ignorada se for especificada.
Versão 10 10/08 do Solaris: essa versão inclui os aprimoramentos a seguir no comando zfs send. Ao utilizar esse comando, é possível efetuar as tarefas a seguir:
Enviar todos os fluxos incrementais de um instantâneo para um instantâneo cumulativo. Por exemplo:
# 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 |
Essa sintaxe envia todos os instantâneos incrementais entre fs@snapA e fs@snapD para fs@combo.
Enviar 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 |
Enviar um fluxo de replicação de todos os sistemas de arquivos descendentes até os instantâneos com nome. Quando recebidos, todas as propriedades, instantâneos, sistemas de 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.
Enviar um fluxo de replicação incremental. Por exemplo:
# zfs send -R -[iI] @snapA pool/fs@snapD |
Para um exemplo mais amplo, consulte o Exemplo 7–1.
Para mais informações, consulte Enviando e recebendo fluxos complexos de instantâneos do ZFS.
Versão 10 10/08 do Solaris: além dos recursos de reserva e cota do ZFS, essa versão inclui as cotas e reservas do conjunto de dados que não incluem descendentes, tais como instantâneos e clones, na contabilidade do espaço em disco.
A propriedade refquota impõe um limite rígido sobre a quantidade de espaço em disco que um conjunto de dados pode utilizar. Esse limite rígido não inclui o espaço em disco utilizado pelos descendentes, como instantâneos e clones.
A propriedade refreservation define a quantidade mínima de espaço em disco que é garantida para um conjunto de dados, não incluindo seus descendentes.
Por exemplo, é possível definir um limite refcota de 10 GB para studentA que define um limite rígido de 10 GB do espaço em disco referenciado. Para obter flexibilidade adicional, você pode ajustar uma cota de 20 GB que lhe permite gerenciar os instantâneos do studentA.
# zfs set refquota=10g tank/studentA # zfs set quota=20g tank/studentA |
Para mais informações, consulte Definindo cotas e reservas do ZFS.
Versão 10 10/08 do Solaris: as propriedades do conjunto de armazenamento do ZFS foram introduzidas em uma versão anterior. Essa versão oferece duas propriedades cachefile e failmode.
A seguir, são descritas as novas propriedades do conjunto de armazenamento dessa versão:
A propriedade cachefile: essa propriedade controla onde as informações de configuração do conjunto são armazenadas em cache. Todos os conjuntos no cache são automaticamente importados quando o sistema é inicializado. No entanto, os ambientes de instalação e de cluster podem precisar armazenar em cache essas informações em um local diferente, de forma que os conjuntos não sejam automaticamente importados.
É possível configurar essa propriedade para armazenar em cache a configuração de conjunto em um local diferente que possa ser importado depois, utilizando o comando zpool import -c. Na maioria das configurações ZFS, essa propriedade não seria usada.
A propriedade cachefile não é persistente, não sendo armazenada em disco. Essa propriedade substitui a propriedade temporary, que foi usada para indicar que as informações de pool não deveriam ser armazenadas em cache nas versões anteriores do Solaris.
A propriedade failmode: essa propriedade determina o comportamento de uma falha catastrófica de conjunto devido à perda da conectividade do dispositivo ou à falha de todos os dispositivos no conjunto. A propriedade failmode pode ser configurada com estes valores: wait, continue ou panic. O valor padrão é espera, o que significa que você deve reconectar o dispositivo ou substituir um dispositivo com falha e, em seguida, limpar o erro com o comando zpool clear.
A propriedade failmode é definida como outras propriedades ZFS configuráveis, que podem ser configuradas antes ou depois do conjunto ser 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 uma descrição dessas propriedades, consulte Tabela 4–1.
Versão 10 10/08 do Solaris: o comando zpool history foi aprimorado para oferecer os novos recursos a seguir:
As informações dos eventos do sistema de arquivos do ZFS são exibidos. Por exemplo:
# zpool history History for 'rpool': 2010-06-23.09:30:12 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=/tmp/root/etc/zfs/zpool.cache rpool c1t0d0s0 2010-06-23.09:30:13 zfs set canmount=noauto rpool 2010-06-23.09:30:13 zfs set mountpoint=/rpool rpool 2010-06-23.09:30:13 zfs create -o mountpoint=legacy rpool/ROOT 2010-06-23.09:30:14 zfs create -b 8192 -V 2048m rpool/swap 2010-06-23.09:30:14 zfs create -b 131072 -V 1024m rpool/dump 2010-06-23.09:30:15 zfs create -o canmount=noauto rpool/ROOT/zfsBE 2010-06-23.09:30:16 zpool set bootfs=rpool/ROOT/zfsBE rpool 2010-06-23.09:30:16 zfs set mountpoint=/ rpool/ROOT/zfsBE 2010-06-23.09:30:16 zfs set canmount=on rpool 2010-06-23.09:30:16 zfs create -o mountpoint=/export rpool/export 2010-06-23.09:30:17 zfs create rpool/export/home |
A opção -l pode ser utilizada para exibir um formato longo que inclui o nome de usuário, o nome do host e a região na qual a operação foi efetuada. Por exemplo:
# zpool history -l rpool History for 'tank': 2010-06-24.13:07:58 zpool create tank mirror c2t2d0 c2t5d0 [user root on neo:global] 2010-06-24.13:08:23 zpool scrub tank [user root on neo:global] 2010-06-24.13:38:42 zpool clear tank [user root on neo:global] 2010-06-29.11:44:18 zfs create tank/home [user root on neo:global] 2010-06-29.13:28:51 zpool clear tank c2t5d0 [user root on neo:global] 2010-06-30.14:07:40 zpool add tank spare c2t1d0 [user root on neo:global |
A opção -i pode ser utilizada para exibir informações de eventos internos para fins de diagnóstico. Por exemplo:
# zpool history -i tank History for 'tank': 2010-06-24.13:07:58 zpool create tank mirror c2t2d0 c2t5d0 2010-06-24.13:08:23 [internal pool scrub txg:6] func=1 mintxg=0 maxtxg=6 2010-06-24.13:08:23 [internal pool create txg:6] pool spa 22; zfs spa 22; zpl 4; uts neo 5.10 Generic_142909-13 sun4u 2010-06-24.13:08:23 [internal pool scrub done txg:6] complete=1 2010-06-24.13:08:23 zpool scrub tank 2010-06-24.13:38:42 zpool clear tank 2010-06-24.13:38:42 [internal pool scrub txg:69] func=1 mintxg=3 maxtxg=8 2010-06-24.13:38:42 [internal pool scrub done txg:69] complete=1 2010-06-29.11:44:18 [internal create txg:14241] dataset = 34 2010-06-29.11:44:18 zfs create tank/home 2010-06-29.13:28:51 zpool clear tank c2t5d0 2010-06-30.14:07:40 zpool add tank spare c2t1d0 |
Para mais informações sobre o uso do comando zpool history, consulte Resolvendo problemas com o ZFS.
Versão 10 10/08 do Solaris: o comando zfs upgrade foi incluído nessa versão para proporcionar futuros aprimoramentos do sistema de arquivos do ZFS aos sistemas de arquivos existentes. Os conjuntos de armazenamento do ZFS possuem um recurso de atualização semelhante para fornecer aprimoramentos aos conjuntos de armazenamento existentes.
Por exemplo:
# zfs upgrade This system is currently running ZFS filesystem version 3. All filesystems are formatted with the current version. |
Os sistemas de arquivos atualizados e quaisquer fluxos criados a partir desses sistemas de arquivos atualizados através do comando zfs send não estão acessíveis em sistemas que executam versões mais antigas do software.
Versão 10 10/08 do Solaris: nessa versão, é possível conceder permissões detalhadas para permitir que usuários não privilegiados efetuem tarefas de administração do ZFS.
É possível utilizar os comandos zfs allow e zfs unallow para delegar e remover permissões.
É possível modificar a administração delegada com a propriedade delegação do conjunto. 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 mais informações, consulte Capítulo 9Administração delegada de ZFS e zfs(1M).
Versão 10 10/08 do Solaris: o log intencional do ZFS (ZIL) é oferecido para satisfazer as exigências de POSIX para transações síncronas. Por exemplo, em geral os bancos de dados exigem que suas transações estejam em dispositivos de armazenamento estáveis ao retornar de uma chamada do sistema. NFS e outros aplicativos também podem utilizar fsync() para garantir a estabilidade dos dados. Por padrão, o ZIL é alocado a partir dos blocos no conjunto de armazenamento principal. Nessa versão do Solaris, você pode decidir se deseja que os blocos ZIL continuem a ser alocados a partir do conjunto de armazenamento principal ou a partir de um dispositivo de log separado. Pode ser possível obter melhor desempenho utilizando dispositivos de log intencional separados no conjunto de armazenamento do ZFS, como com NVRAM ou um disco dedicado.
Os dispositivos de log intencional do ZFS não estão relacionados aos arquivos de log do banco de dados.
É possível configurar o dispositivo de log do ZFS quando o conjunto de armazenamento for criado ou depois da sua criação. Para exemplos sobre a configuração dos dispositivos de log, consulte Criando um conjunto de armazenamento do ZFS com dispositivos de log e Adicionando dispositivos a um pool de armazenamento.
É possível anexar um dispositivo de log a um dispositivo de log existente para criar um dispositivo de log espelhado. Essa operação é idêntica à anexação de um dispositivo em um conjunto de armazenamento não espelhado.
Ao determinar se a configuração de um dispositivo de registro ZFS é apropriada para o seu ambiente, leve em consideração o seguinte:
Qualquer melhoria no desempenho visto pela implementação de um dispositivo de log separado depende do tipo de dispositivo, da configuração de hardware do conjunto e da carga de trabalho do aplicativo. Para obter informações preliminares sobre desempenho, consulte este blog:
Os dispositivos de log podem ser não replicado ou espelhados, mas o RAID-Z não é suportado por 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 é revertido ao conjunto de armazenamento.
Os dispositivos de log podem ser adicionados, substituídos, anexados, desanexados, importados e exportados como parte do conjunto de armazenamento maior. Dispositivos de log podem ser removidos a partir da versão 10 9/10 do Solaris.
O tamanho mínimo de um dispositivo de log é o mesmo do tamanho mínimo de cada dispositivo em um conjunto, que é de 64 MB. A quantidade de dados em atividade que pode ser armazenada em um dispositivo de registro é relativamente pequena. Os blocos de registro são liberados quando a transação de registro (chamada do sistema) é enviada.
O tamanho máximo de um dispositivo de log deve ser aproximadamente a metade do tamanho da memória física, porque essa é a quantidade máxima de possíveis dados em atividade que podem ser armazenados. Por exemplo, se um sistema possuir 16 GB de memória física, considere que o tamanho máximo de um dispositivo de log será de 8 GB.
Versão 10 10/08 do Solaris: é possível utilizar a opção -p com os comandos zfs create, zfs clone e zfs rename para criar rapidamente um conjunto de dados intermediário não existente, se ele ainda não existir.
No exemplo a seguir, conjuntos de dados do ZFS (users/area51) são criados no conjunto 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 |
O conjunto de dados intermediário já existe durante a operação de criação, a operação será concluída com êxito.
As propriedades especificadas se aplicam ao conjunto de dados de destino e não ao conjunto de dados intermediário. 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. Quaisquer propriedades 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).
Versão 10 10/08 do Solaris: nessa versão, o ZFS responde de maneira mais eficiente aos dispositivos removidos e pode agora identificar automaticamente dispositivos que são inseridos.
Você pode substituir um dispositivo atual por um dispositivo equivalente, sem precisar usar o comando zpool replace.
A propriedade autoreplace controla a substituição automática de dispositivos. Se for definido como off, a substituição do dispositivo deve ser iniciada pelo administrador utilizando o comando zpool replace. Se for definido como on, qualquer dispositivo novo encontrado no mesmo local físico de um dispositivo que antes pertencia ao conjunto será automaticamente formatado e substituído. O comportamento padrão é off.
O estado do conjunto de armazenamento REMOVED é fornecido quando um dispositivo ou de reserva tiver sido fisicamente removido enquanto o sistema estava em execução. Um dispositivo de reserva é substituído pelo dispositivo removido, se disponível.
Se um dispositivo for removido e depois inserido, o dispositivo será colocado on-line. Se um de reserva foi ativado quando o dispositivo foi reinserido, o de reserva é removido quando a operação on-line for concluída.
Quando os dispositivos são removidos ou inseridos, a detecção automática depende do hardware e pode não ser suportada em todas as plataformas. Por exemplo, os dispositivos USB são configurados automaticamente ao serem inseridos. No entanto, você pode ter que usar o comando cfgadm -c configure para configurar uma unidade SATA.
Os de reservas são verificados periodicamente para garantir que estejam on-line e disponíveis.
Para mais informações, consulte zpool(1M).
Versão 10 10/08 do Solaris: é possível renomear recursivamente todos os instantâneos descendentes do ZFS utilizando o comando zfs rename -r. Por exemplo:
Primeiro, um instantâneo de um conjunto de sistemas de arquivos do ZFS é criado.
# 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, os instantâneos são renomeados 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 - |
Um instantâneo é o único tipo de conjunto de dados que pode ser renomeado recursivamente.
Para mais informações sobre instantâneos, consulte Visão geral dos instantâneos do ZFS e esta entrada do blog que descreve como criar instantâneos sucessivos:
http://blogs.sun.com/mmusante/entry/rolling_snapshots_made_easy
Versão 10 10/08 do Solaris: nessa versão do Solaris, é possível definir a compactação gzip em sistemas de arquivos do ZFS além da compactação lzjb. É possível especificar a compactação como gzip ou 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 mais informações sobre a configuração das propriedades do ZFS, consulte Definindo propriedades do ZFS.
Versão 10 10/08 do Solaris: como um recurso de segurança, os metadados do sistema de arquivos do ZFS são armazenados automaticamente várias vezes em diferentes discos, se possível. Este recurso é conhecido como blocos idem.
Nessa versão do Solaris, também é possível armazenar cópias múltiplas dos dados do usuário que também são armazenadas por sistema de arquivos ao utilizar 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 a qualquer redundância de nível de conjunto, tal 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 os seguintes:
Melhora a retenção de dados, permitindo recuperações de falhas de leituras em blocos irrecuperáveis, como falhas de mídia (comumente conhecidas como bit rot) em todas as configurações do ZFS.
Oferece proteção de dados, mesmo quando apenas um disco único está disponível.
Permite que você selecione as políticas de proteção de dados por bases de sistema de arquivos, além das capacidades do conjunto de armazenamento.
Dependendo da alocação de blocos idênticos no conjunto de armazenamento, as cópias múltiplas podem ser colocadas em um único disco. Uma falha de disco cheio subsequente pode fazer com que todos os blocos idênticos fiquem indisponíveis.
É possível levar em consideração o uso de blocos idênticos ao criar acidentalmente um conjunto não redundante e quando precisar definir as políticas de retenção de dados.
Para obter uma descrição detalhada de como armazenar cópias múltiplas em um sistema com um conjunto de disco único ou um conjunto de disco múltiplo pode afetar a proteção geral dos dados, consulte este blog:
http://blogs.sun.com/relling/entry/zfs_copies_and_data_protection
Para mais informações sobre a configuração das propriedades do ZFS, consulte Definindo propriedades do ZFS.
Versão 10 8/07 do Solaris: é possível utilizar o comando zpool status -v para exibir uma lista de arquivos com erros persistentes. Anteriormente, era necessário utilizar o comando find -inum para identificar os nomes de arquivos na lista de inodes exibida.
Para mais informações sobre a exibição de uma lista de arquivos com erros persistentes, consulte Reparando arquivos ou diretórios corrompidos.
Versão 10 8/07 do Solaris: nessa versão do Solaris, é possível criar um volume ZFS como um dispositivo de destino do iSCSI do Solaris definindo a propriedade shareiscsi no volume ZFS. Esse método é uma forma conveniente de configurar rapidamente um 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, é possível configurar o iniciador iSCSI. Para mais informações sobre a configuração do iniciador iSCSI do Solaris, consulte Capítulo 14, Configuring Oracle Solaris iSCSI Targets and Initiators (Tasks), no System Administration Guide: Devices and File Systems.
Para mais informações sobre gerenciamento de volumes do ZFS como um destino de iSCSI, consulte Usando um volume ZFS como um destino iSCSI Solaris.
Versão 10 8/07 do Solaris: nessa versão do Solaris, o ZFS registra automaticamente comandos zfs e zpool bem-sucedidos que modificam as informações de estado do conjunto. 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 |
Esses recursos permitem que você ou a equipe de suporte do Oracle identifique os comandos reais do ZFS que foram executados para corrigir um cenário de erro.
É possível identificar um conjunto 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 |
Nessa versão do Solaris, o comando zpool history não registra o ID de usuário, o nome do host nem o nome da região. No entanto, essas informações são gravadas a partir da versão 10 10/08 do Solaris. Para mais informações, consulte Aprimoramentos no histórico do comando do ZFS (zpool history).
Para mais informações sobre soluções de problemas do ZFS, consulte Resolvendo problemas com o ZFS.
Versão 10 8/07 do Solaris: é possível utilizar a propriedade xattr para desativar ou ativar os atributos estendidos para um sistema de arquivos do ZFS específico. O valor padrão é on. Para obter uma descrição das propriedades do ZFS, consulte Introduzindo as propriedades do ZFS.
Versão 10 8/07 do Solaris: a nova propriedade canmount permite que você especifique se um conjunto de dados pode ser montado através da utilização do comando zfs mount. Para mais informações, consulte A propriedade canmount.
Versão 10 8/07 do Solaris: além das propriedades nativas padrão que podem ser utilizadas para exportar estatísticas internas ou controlar o comportamento do sistema de arquivos do ZFS, o ZFS fornece propriedades do usuário. As propriedades do usuário não afetam o comportamento do ZFS, mas podem ser utilizadas para anotar conjuntos de dados com informações significativas no ambiente.
Para mais informações, consulte Propriedades de usuário do ZFS.
Versão 10 8/07 do Solaris: nessa versão do Solaris, é possível definir propriedades ao criar um sistema de arquivos, não apenas depois do sistema de arquivos ter 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 |
Versão 10 8/07 do Solaris: nessa versão do Solaris, é possível utilizar várias formulários do comando zfs get para exibir informações sobre todos os conjuntos de dados caso você não especifique um conjunto de dados ou caso você especifique todos. Em versões anteriores, não era possível recuperar todas as informações 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 |
Versão 10 8/07 do Solaris: nessa versão do Solaris, é possível utilizar 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 do recebimento ser iniciado. O uso dessa opção pode ser necessário quando o sistema de arquivos for modificado depois da reversão ocorrer, mas antes de o recebimento ser iniciado.
Para mais informações, consulte Recebendo um instantâneo do ZFS.
Versão 10 11/06 do Solaris: ao utilizar o comando zfs snapshot para criar um instantâneo do sistema de arquivos, é possível utilizar a opção - r para criar recursivamente instantâneos para todos os sistemas de arquivos descendentes. Além disso, é possível utilizar a opção-r para destruir recursivamente todos os 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. Os instantâneos são criados juntos (todos de uma vez) ou simplesmente não são criados. O benefício de tal operação é que os dados do instantâneo são sempre tirados em momento consistente, mesmo através de sistemas de arquivos descendentes.
Para mais informações, consulte Criando e destruindo instantâneos do ZFS.
Versão 10 11/06 do Solaris: uma configuração RAID-Z redundante agora pode possuir configuração de paridade única ou dupla, o que significa que uma ou duas falhas de dispositivo podem ser sustentadas respectivamente, sem qualquer perda de dados. Você pode especificar a palavra-chave raidz2 para realizar uma configuração de RAID-Z de paridade dupla. Ou você pode especificar as palavras-chave raidz ou raidz1 para realizar uma configuração RAID-Z de paridade única.
Para mais informações, consulte Criando um conjunto de armazenamento RAID-Z ou zpool(1M).
Versão 10 11/06 do Solaris: o recurso de reserva do ZFS permite que você identifique os discos que poderiam ser utilizados para substituir um dispositivo falho ou defeituoso em um ou mais conjuntos de armazenamento. Designar um dispositivo como um de reserva significa que, se um dispositivo ativo no conjunto falhar, o dispositivo de reserva substitui automaticamente o dispositivo falho. Ou então, é possível substituir manualmente um dispositivo em um conjunto de armazenamento por um de reserva.
Para mais informações, consulte Designando sobressalentes no pool de armazenamento e zpool(1M).
Versão 10 11/06 do Solaris: o comando zfs promote permite que você substitua um sistema de arquivos existente do ZFS existente por um clone desse sistema de arquivos. Esse recurso é útil quando você deseja executar testes em uma versão alternativa de um sistema de arquivos e, em seguida, tornar essa versão alternativa em um sistema de arquivos ativo.
Para mais informações, consulte Substituindo um sistema de arquivos ZFS por um clone do ZFS e zfs(1M).
Versão 10 6/06 do Solaris: é possível atualizar seus conjuntos de armazenamento para uma versão mais nova a fim de obter benefícios dos recursos mais recentes por meio do comando zpool upgrade. Além disso, o comando zpool status foi modificado para notificá-lo quando os conjuntos estiverem executando versões mais antigas do ZFS.
Para mais informações, consulte Atualizando pools de armazenamento do ZFS e zpool(1M).
Se desejar utilizar o console de administração do ZFS em um sistema com um conjunto de uma versão anterior do Solaris, certifique-se de atualizar os conjuntos antes de utilizar o console. Para determinar se os conjuntos precisam ser atualizados, utilize o comando zpool status. Para obter informações sobre o console de administração do ZFS, consulte Gerenciamento do ZFS baseado na Web.
Versão 10 6/06 do Solaris: nessa versão do Solaris, os comandos zfs backup e zfs restore foram renomeados como zfs send e zfs receive para uma descrição mais exata de suas funções. Esses comandos enviam e recebem representações de fluxo de dados do ZFS.
Para mais informações sobre esses comandos, consulte Enviando e recebendo dados do ZFS.
Versão 10 6/06 do Solaris: essa versão inclui o comando zpool import -D, que permite que você recupere conjuntos que foram destruído anteriormente com o comando zpool destroy.
Para mais informações, consulte Recuperando pools de armazenamento destruídos do ZFS.
Versão 10 6/06 do Solaris: essa versão inclui um mecanismo de diagnóstico do ZFS que é capaz de diagnosticar e relatar falhas do conjunto e do dispositivo. Também são relatados erros na soma de verificação, de E/S, de dispositivo e de pool associados às falhas do dispositivo e do pool.
O mecanismo de diagnóstico não inclui a análise prognóstica de erros de E/S e de soma de verificação, nem ações antecipatórias com base nas análises de falhas.
Se ocorrer uma falha no ZFS, aparecerá uma mensagem similar a seguinte:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Ao revisar a ação recomendada, que será seguir as direções mais específicas no comando zpool status, você poderá identificar e resolver rapidamente a falha.
Para obter um exemplo de recuperação de um problema do ZFS reportado, consulte Reparando um dispositivo faltando.
Versão 10 6/06 do Solaris: essa versão inclui o comando zpool clear para limpar contagens de erros associadas a um dispositivo ou a um conjunto. Anteriormente, as contagens de erros eram limpas quando um dispositivo em um conjunto era colocado on-line com o comando zpool online. Para mais informações, consulte Limpando erros de dispositivo de conjunto de armazenamento e zpool(1M).
Versão 10 6/06 do Solaris: nessa versão, é possível definir e exibir ACLs NFSv4 em dois formatos: verboso e compacto. É possível utilizar o comando chmod para definir qualquer um dos formatos ACL. É possível utilizar o comando ls - Vpara exibir o formato compacto da ACL. É possível utilizar o comando ls -vpara exibir o formato verboso da ACL.
Para mais informações, consulte Definindo e exibindo ACLs em arquivos ZFS no formato compacto, chmod(1) e ls(1).
Versão 10 6/06 do Solaris: uma nova ferramenta de monitoração do sistema de arquivos, fsstat, relata as operações dos sistemas de arquivos. A atividade pode ser relatada por ponto de montagem ou por tipo de sistema de arquivos. O exemplo abaixo mostra a atividade geral 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 |
Para mais informações, consulte fsstat(1M).
Versão 10 6/06 do Solaris: uma ferramenta de gerenciamento do ZFS com base na Web, o console de administração do ZFS, permite que você efetue as tarefas administrativas a seguir:
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.
Criar um instantâneo de um sistema de arquivos ou um volume.
Reverter um sistema de arquivos para um instantâneo anterior.
É possível acessar o console de administração do ZFS através de um navegador da Web seguro em:
https://system-name:6789/zfs |
Se você digitar o URL apropriado e não conseguir encontrar o console Administração do ZFS, o servidor nã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 |
Não é possível usar o console de gerenciamento Solaris (smc) para gerenciar pools de armazenamento e sistemas de arquivos ZFS.
O sistema de arquivos do ZFS é um novo e revolucionário sistema de arquivos que basicamente altera a forma como os sistemas de arquivos são administrados, com recursos e benefícios que não são encontrados nos sistemas de arquivos disponíveis atualmente. O ZFS é robusto, dimensionável e fácil de administrar.
O ZFS usa o conceito de pools de armazenamento para gerenciar armazenamentos físicos. Os sistemas de arquivos sempre foram construídos em cima de um dispositivo físico. Para abordar vários dispositivos e prevenir a redundância de dados, introduziu-se o conceito de um gerenciador de volumes, com o intuito de fornecer uma representação de um dispositivo único para que os sistemas de arquivos não precisassem ser modificados, a fim de aproveitar os vários dispositivos. Esse design adicionou outra camada de complexidade e, finalmente, impediu certos avanços do sistema de arquivos porque o sistema de arquivos não possuia controle sobre a localização física dos dados nos volumes virtualizados.
O ZFS elimina totalmente o gerenciamento de volumes. Em vez de forçá-lo a criar volumes virtualizados, o ZFS agrega os dispositivos em um conjunto de armazenamento. O conjunto de armazenamento descreve as características físicas do armazenamento (layout do dispositivo, redundância de dados e assim por diante) e atua como um armazenamento de dados arbitrário a partir do qual podem ser criados sistemas de arquivos. Os sistemas de arquivos já não estão mais limitados a dispositivos individuais, permitindo-lhes compartilhar espaço em disco com todos os sistemas de arquivos do conjunto. Já não é mais necessário pré-determinar o tamanho de um sistema de arquivos, visto que os sistemas de arquivos crescem automaticamente dentro do espaço em disco alocado para o conjunto de armazenamento. Quando novos armazenamentos são adicionados, todos os sistemas de arquivos que estão dentro do conjunto podem utilizar imediatamente o espaço adicional sem trabalho adicional. Em muitos aspectos, o conjunto de armazenamento trabalha de maneira similar a um sistema de memória virtual: quando uma memória DIMM é adicionada a um sistema, o sistema operacional não o força a executar comandos para configurar a memória e atribuí-la a processos individuais. Todos os processos do sistema usam automaticamente a memória adicional.
O ZFS é um sistema de arquivos transacional, o que significa que o estado do sistema de arquivos é sempre consistente no disco. Os sistemas de arquivos tradicionais substituem os dados no local, o que significa que, se a máquina apagar, por exemplo, entre o momento em que um bloco de dados está sendo alocado e o momento em que está sendo vinculado a um diretório, o sistema de arquivos ficará em um estado de inconsistência. Historicamente, esse problema era solucionado através da utilização do comando fsck. Esse comando era responsável por revisar e verificar o estado do sistema de arquivos e tentar reparar quaisquer inconsistências encontradas durante o processo. Esse problema de sistemas de arquivos inconsistentes deu muito trabalho aos administradores e nunca era garantido que o comando fsck resolvesse todos os possíveis problemas. Mais recentemente, os sistemas de arquivos introduziram o conceito de ocorrências . O processo de ocorrências registra ações em um diário diferente, que pode então ser reproduzido de forma segura se ocorrer uma quebra no sistema. Esse processo introduz uma sobrecarga desnecessária, pois os dados precisam ser gravados duas vezes, resultando frequentemente em novos conjuntos de problemas, tais como quando o diário não pode ser reproduzido apropriadamente.
Com um sistema de arquivos transacional, os dados são gerenciados utilizando as semânticas de copiar ao gravar. Os dados nunca são substituídos e nenhuma seqüência de operações é totalmente comprometida ou totalmente ignorada. Assim, o sistema de arquivos nunca será corrompido por perdas acidentais de energia ou por quebra no sistema. Embora as últimas partes de dados gravadas possam se perder, 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 que nunca se perderão.
Com o ZFS, todos os dados e metadados são verificados ao utilizar um algoritmo de soma de verificação selecionável pelo usuário. Os sistemas de arquivos tradicionais, que oferecem a soma de verificação, efetuavam tal soma com base em blocos sem necessidade, devido à camada de gerenciamento de volumes e ao design do sistema de arquivos tradicional. O design tradicional significa que determinadas falhas, tais como gravar um bloco completo em um local incorreto, podem resultar em dados incorretos mas sem erros de soma de verificação. As somas de verificação do ZFS são armazenadas de forma que essas falhas sejam detectados e possam ser recuperados adequadamente. Todas as somas de verificação e recuperações de dados são efetuadas na camada do sistema de arquivos e são evidentes para os aplicativos.
Além disso, o ZFS oferece a autocorreção de dados. O ZFS suporta conjuntos de armazenamento com níveis variados de redundância de dados. Quando um bloco de dados incorreto é detectado, o ZFS busca os dados corretos em outra cópia redundante e repara os dados incorretos substituindo-os pela cópia dados corretos.
Um elemento de design fundamental do sistema de arquivos do ZFS é a escalabilidade. O sistema de arquivos em si é de 128 bits, permitindo 256 quatrilhões de zettabytes de armazenamento. 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 este for criado pela primeira vez. Todos os algoritmos foram gravados levando-se em consideração a escalabilidade. Os diretórios podem possuir até 248 (256 trilhões) de entradas e não há limites para o número de sistemas de arquivos ou para o número de arquivos que pode ser contido em um sistema de arquivos.
Um instantâneo é uma cópia de somente leitura de um volume ou de um sistema de arquivos. Os instantâneos podem ser criados rápida e facilmente. No início, os instantâneos não utilizam espaço adicional em disco dentro do conjunto.
Conforme os dados dentro dos conjuntos de dados ativos são alterados, o instantâneo passa a utilizar mais espaço em disco 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.
O mais importante é que o ZFS oferece um modelo de administração muito simplificado. Através do uso de um layout de sistema de arquivos hierárquico, da herança de propriedade e do gerenciamento automático de pontos de montagem e de semânticas compartilhadas de NFS, o ZFS facilita a criação e o gerenciamento de sistemas de arquivos sem a necessidade de vários comandos ou de editar os arquivos de configuração. Você pode definir facilmente as cotas ou reservas, habilitar ou desabilitar a compactação ou gerenciar os pontos de montagem de numerosos sistemas de arquivos com um único comando. É possível examinar ou substituir dispositivos sem conhecer um conjunto separado de comandos do gerenciador de volume. É possível enviar e receber fluxos de instantâneos do sistema de arquivos.
O ZFS gerencia sistemas de arquivos através de uma hierarquia que possibilita esse gerenciamento simplificado de propriedades como cotas, reservas, compactação e pontos de montagem. Nesse modelo, sistemas de arquivos são o ponto central de controle. Os sistemas de arquivos em si são muito baratos (equivalentes à criação de um novo diretório), de modo que você é estimulado a criar um sistema de arquivos para cada usuário, projeto, área de trabalho, etc. Esse design permite que você defina pontos de gerenciamento detalhados.
Esta seção descreve a terminologia básica utilizada neste livro:
Um ambiente de inicialização criado pelo comando lucreate e possivelmente atualizado pelo comando luupgrade, mas que não está ativo ou não é o ambiente de inicialização principal. O ambiente de inicialização alternativo pode ser alterado para o ambiente de inicialização primário por meio da execução do comando luactivate.
Uma verificação de 256 bits dos dados em um bloco de sistemas de arquivos. A capacidade da soma de verificação pode variar do fletcher4 (padrão) simples e rápido a verificações criptograficamente seguras como SHA256.
Um sistema de arquivos cujo conteúdo inicial é idêntico ao conteúdo de um instantâneo.
Para informações sobre clones, consulte Visão geral dos clones do ZFS.
Um nome genérico dos componentes do ZFS a seguir: clones, sistemas de arquivos, instantâneos e volumes.
Cada conjunto de dados é identificado por um nome único no espaço de nome do ZFS. Os conjuntos de dados são identificados com o seguinte formato:
pool/caminho [@snapshot]
Identifica o nome do pool de armazenamento que contém o conjunto de dados
É o nome do caminho delimitado por barra para o componente do conjunto de dados
É um componente opcional que identifica um instantâneo de um conjunto de dados
Para mais informações sobre conjuntos de dados, consulte o Capítulo 6Gerenciando sistemas de arquivos ZFS do Oracle Solaris.
Conjunto de dados ZFS de tipo filesystem montado dentro do espaço de nome padrão do sistema e que se comporta como outros sistemas de arquivos.
Para mais informações sobre sistemas de arquivos, consulte o Capítulo 6Gerenciando sistemas de arquivos ZFS do Oracle Solaris.
Um dispositivo virtual que armazena cópias idênticas de dados em dois ou mais discos. Se um disco falha em um espelho, qualquer outro disco desse espelho pode fornecer os mesmos dados.
Grupo lógico de dispositivos que descreve o layout e as características físicas do armazenamento disponível. O espaço em disco para os conjuntos de dados é alocado a partir de um conjunto.
Para mais informações sobre conjuntos de armazenamento, consulte o Capítulo 4Gerenciando conjuntos de armazenamento ZFS do Oracle Solaris.
Um ambiente de inicialização que é usado pelo comando lucreate para construir o ambiente de inicialização alternativo. Por padrão, o ambiente de inicialização primário é o ambiente de inicialização atual. Esse padrão pode ser ignorado com o uso da opção lucreate -s.
Um dispositivo virtual que armazena dados e paridades em discos múltiplos. Para mais informações sobre o RAID-Z, consulte Configuração de pool de armazenamento RAID-Z.
O processo de cópia de dados de um dispositivo para outro é conhecido como resilvering. Por exemplo, se um dispositivo do espelho é substituído ou colocado off-line, os dados de um dispositivo do espelho atualizado são copiados para o dispositivo do espelho recém-restaurado. Em produtos de gerenciamento de volumes tradicionais, faz-se referência a esse processo como resincronização espelhada.
Para mais informações sobre resilvering do ZFS, consulte Exibindo o status do resilvering.
Uma cópia de somente de leitura de um volume ou de um sistema de arquivos em um determinado ponto do tempo.
Para mais informações sobre instantâneos, consulte Visão geral dos instantâneos do ZFS.
Dispositivo lógico em um pool, que pode ser um dispositivo físico, um arquivo ou um conjunto de dispositivos.
Para mais informações sobre dispositivos virtuais, consulte Exibindo informações do dispositivo virtual do pool de armazenamento.
Um conjunto de dados que representa um dispositivo de bloco. Por exemplo, você pode criar um volume ZFS como um dispositivo de permuta.
Para obter informações sobre volumes ZFS, consulte Volumes ZFS.
Cada componente do ZFS, tal como conjuntos de dados e conjuntos, deve ser nomeado de acordo com as regras a seguir:
Cada componente pode conter somente caracteres alfanuméricos além dos quatro caracteres 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 espelho, raidz , raidz1, raidz2, raidz3 ou sparenão é permitido porque esses nomes são reservados.
Os nomes de conjuntos não 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 (%).
Além disso, não são permitidos componentes vazios.