Ignorar Links de Navegao | |
Sair do Modo de Exibio de Impresso | |
![]() |
Guia de administração do ZFS Oracle Solaris |
1. Sistema de arquivos Oracle Solaris ZFS (introdução)
2. Introdução ao ZFS do Oracle Solaris
3. Diferenças entre o sistema de arquivos tradicional e o ZFS do Oracle Solaris
4. Gerenciando conjuntos de armazenamento ZFS do Oracle Solaris
5. Instalando e inicializando um sistema de arquivos raiz ZFS do Oracle Solaris
6. Gerenciando sistemas de arquivos ZFS do Oracle Solaris
7. Trabalhando com instantâneos e clones do ZFS do Oracle Solaris
Visão geral dos instantâneos do ZFS
Criando e destruindo instantâneos do ZFS
Renomeando instantâneos do ZFS
Exibindo e acessando instantâneos do ZFS
Contabilidade de espaço em disco para instantâneos do ZFS
Identificação de diferenças do instantâneo do ZFS (zfs diff
Substituindo um sistema de arquivos ZFS por um clone do ZFS
Enviando e recebendo dados do ZFS
Salvando dados do ZFS com outros produtos de backup
Enviando um instantâneo do ZFS
Recebendo um instantâneo do ZFS
Aplicação de valores de propriedade diferentes a um fluxo de instantâneos do ZFS
Enviando e recebendo fluxos complexos de instantâneos do ZFS
8. Uso de ACLs e atributos para proteger arquivos ZFS do Oracle Solaris
9. Administração delegada do ZFS do Oracle Solaris
10. Tópicos avançados do ZFS do Oracle Solaris
11. Solução de problemas e conjunto de recuperação do Oracle Solaris ZFS
O comando zfs send cria uma representação do fluxo de um instantâneo gravado em uma saída padrão. Por padrão, um fluxo inteiro é gerado. Você pode redirecionar a saída para um arquivo ou para outro sistema. O comando zfs receive cria um instantâneo cujo conteúdo está especificado no fluxo fornecido na entrada padrão. Se um fluxo inteiro for recebido, um novo sistema de arquivos também é criado. Com estes comandos, é possível enviar os dados do instantâneo do ZFS e receber os dados do instantâneo e os sistemas de arquivos ZFS. Consulte os exemplos nesta seção.
Aplicação de valores de propriedade diferentes a um fluxo de instantâneos do ZFS
Enviando e recebendo fluxos complexos de instantâneos do ZFS
Estão disponíveis as seguintes soluções de backup para salvamento de dados do ZFS:
Produtos de backup da empresa: se precisar dos recursos a seguir, então considere uma solução de backup de empresa:
Restauração por arquivo
Verificação da mídia de backup
Gerenciamento de mídia
Instantâneos de sistemas de arquivos e reversão de instantâneos: utilize os comandos zfs snapshot e zfs rollback se desejar criar facilmente uma cópia de um sistema de arquivos e reverter para uma versão anterior do sistema de arquivos, se necessário. Por exemplo, para restaurar um arquivo ou arquivos de uma versão anterior de um sistema de arquivos, você poderia utilizar esta solução.
Para obter mais informações sobre a criação e reversão de um instantâneo, consulte Visão geral dos instantâneos do ZFS.
Salvar instantâneos – Use os comandos zfs send e zfs receive para enviar e receber um instantâneo do ZFS. Você pode salvar alterações incrementais entre instantâneos, mas não pode restaurar os arquivos individualmente. Você deve restaurar o instantâneo de todo o sistema de arquivos. Estes comandos não oferecem uma solução de backup completa para salvar dados do ZFS.
Replicação remota: utilize os comandos zfs send e zfs receive para copiar um sistema de arquivos de um sistema a outro. Este processo difere do produto de gerenciamento 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 um sistema de arquivos ZFS é que você pode recriar um sistema de arquivos em um pool de armazenamento de outro sistema e especificar diferentes níveis de configuração para o pool recé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 e pax ou produtos de backup de terceiros. Atualmente, os comandos tar e cpio traduzem as ACLs de estilo NFSv4 corretamente, mas o comando pax não.
Alé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. Estes utilitários salvam e restauram ACLs e atributos do arquivo do ZFS. Verifique as opções adequadas para os comandos tar e cpio.
Para obter informações atualizadas sobre problemas com o ZFS e produtos de backup de terceiros, consulte as notas da versão do Solaris 10 ou o FAQ do ZFS, disponível aqui:
http://hub.opensolaris.org/bin/view/Community+Group+zfs/faq/#backupsoftware
Você pode utilizar o comando zfs send para enviar uma cópia de um fluxo de instantâneo e receber o fluxo de instantâneo em outro conjunto do mesmo sistema ou em outro conjunto de outro sistema utilizado para armazenar dados de backup. Por exemplo, para enviar o fluxo de instantâneo de outro conjunto do mesmo sistema, utilize uma sintaxe semelhante à seguinte:
# zfs send tank/dana@snap1 | zfs recv spool/ds01
O zfs recv pode ser usado como um alias do comando zfs receive.
Se estiver enviando o fluxo de instantâneo a outro sistema, conduza a saída de zfs send através do comando ssh. Por exemplo:
host1# zfs send tank/dana@snap1 | ssh host2 zfs recv newtank/dana
Ao enviar 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 (snap1) é o instantâneo mais antigo e o segundo (snap2) é o instantâneo mais recente. Nesse caso, o sistema de arquivos newtank/dana deve existir para que o recebimento incremental tenha êxito.
A origem do snap1 incremental pode ser especificada como o último componente do nome do instantâneo. Este atalho significa que é necessário especificar o nome do snap1 somente depois do símbolo @, que se supõe ser do mesmo sistema de arquivos que o snap2. Por exemplo:
host1# zfs send -i snap1 tank/dana@snap2 > ssh host2 zfs recv newtank/dana
Esta sintaxe de atalho é equivalente à sintaxe incremental no exemplo anterior.
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, considere compactar uma representação de fluxo de instantâneo do ZFS com o comando gzip. Por exemplo:
# zfs send pool/fs@snap | gzip > backupfile.gz
Leve em consideração as seguintes questões ao receber um instantâneo de um sistema de arquivos:
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 um sistema de arquivos com o mesmo nome já existir, é possível utilizar o comando zfs rename 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
Se fizer uma alteração no sistema de arquivos de destino, e quiser efetuar outro envio incremental de um instantâneo, é necessário, primeiramente, reverter o sistema de arquivos receptor.
Considere o seguinte exemplo. Primeiro, faça uma alteração ao sistema de arquivos, como segue:
host2# rm newtank/dana/file.1
Então, efetue um envio incremental de tank/dana@snap3. No entanto, é necessário reverter o sistema de arquivos receptor para receber o novo instantâneo incremental. Ou então, a etapa de reversão pode ser eliminada utilizando a opção -F . Por exemplo:
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á dever existir.
Se fizer alterações ao sistema de arquivos e não reverter o sistema de arquivos receptores para receber o novo instantâneo incremental ou não utilizar a opção -F, será exibida uma mensagem similar à seguinte:
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 à fonte incremental, nem a reversão nem o recebimento são concluídos e uma mensagem de erro é devolvida.
Se acidentalmente for fornecido o nome de um sistema de arquivos diferentes que não correspondem à fonte incremental especificada no comando zfs receive, nem a reversão e nem o recebimento são concluídos e a seguinte mensagem de erro é devolvida:
cannot send 'pool/fs@name': not an earlier snapshot from the same fs
Você pode enviar um fluxo de instantâneos com um determinado valor de propriedade do sistema de arquivos, mas pode especificar um valor de propriedade local quando o fluxo de instantâneos for recebido. Ou você pode especificar que o valor de propriedade original seja usado quando o fluxo de instantâneos for recebido para recriar o sistema de arquivos original. Além disso, você pode desativar uma propriedade do sistema de arquivos quando o fluxo de instantâneos for recebido.
Em alguns casos, as propriedades do sistema de arquivos em um fluxo de envio podem não se aplicar ao sistema de arquivos de recebimento ou às propriedades do sistema de arquivos local, como o valor de propriedade mountpoint, que pode interferir em uma restauração.
Por exemplo, o sistema de arquivos tank/data tem a propriedade de compactação desativada. Um instantâneo do sistema de arquivos tank/data- é enviado com propriedades (opção p) para um pool de backup e é recebido com a propriedade de compactação ativada.
# zfs get compression tank/data NAME PROPERTY VALUE SOURCE tank/data compression off default # zfs snapshot tank/data@snap1 # zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool # zfs get -o all compression bpool/data NAME PROPERTY VALUE RECEIVED SOURCE bpool/data compression on off local
No exemplo, a propriedade compression é ativada quando o instantâneo é recebido em bpool. Portanto, para bpool/data, o valor de compactação é on.
Se este fluxo de instantâneos for envado para um novo pool, restorepool, para fins de recuperação, você pode manter toas as propriedades originais do instantâneo. Nesse caso, você usaria o comando zfs send -b para restaurar as propriedades originais do instantâneo. Por exemplo:
# zfs send -b bpool/data@snap1 | zfs recv -d restorepool # zfs get -o all compression restorepool/data NAME PROPERTY VALUE RECEIVED SOURCE restorepool/data compression off off received
No exemplo, o valor de compactação é off, que representa o valor de compactação do instantâneo do sistema de arquivos tank/data original.
Se você tiver um valor de propriedade do sistema de arquivos local em um fluxo de instantâneos e quiser desativar a propriedade quando for recebida, use o comando zfs receive -i. Por exemplo, o comando a seguir envia um fluxo de instantâneos recursivo de sistemas de arquivos do diretório inicial com todas as propriedades do sistema de arquivos reservadas para um pool de backup, mas sem os valores de propriedade de cota:
# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none local bpool/home@snap1 quota - - bpool/home/lori quota none default bpool/home/lori@snap1 quota - - bpool/home/mark quota none default bpool/home/mark@snap1 quota - -
Se o instantâneo recursivo não foi recebido com a opção -i, a propriedade de cota seria definida nos sistemas de arquivos recebidos.
# zfs send -R tank/home@snap1 | zfs recv bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none received bpool/home@snap1 quota - - bpool/home/lori quota 10G received bpool/home/lori@snap1 quota - - bpool/home/mark quota 10G received bpool/home/mark@snap1 quota - -
Esta seção descreve como usar as opções zfs send -I e -R para enviar e receber fluxos de instantâneos mais complexos.
Considere os pontos a seguir ao enviar e receber fluxos de instantâneos do ZFS complexos:
Use a opção zfs send -I para enviar todos os fluxos incrementais de um instantâneo para um instantâneo cumulativo. Ou, utilize esta opção para enviar um fluxo incremental do instantâneo original para criar um clone. O instantâneo original já deve existir no lado de recepção para aceitar o fluxo incremental.
Use a opção zfs send -R para enviar um fluxo de replicação de todos os sistemas de arquivos descendentes. Quando o fluxo de replicação é recebido, todas as propriedades, instantâneos, sistemas de arquivo descendentes e clones são preservados.
Utilize ambas opções para enviar um fluxo de replicação incremental.
As alterações feitas às propriedades são preservadas, assim como as operações rename e destroy do instantâneo e do sistema de arquivos.
Se zfs recv -F não for especificado ao receber o fluxo de replicação, as operações destroy do conjunto de dados são ignoradas. A sintaxe de zfs recv -F neste caso também retém seu significado de reversão se necessário.
Como em outros casos (não zfs send -R) - i ou -I, se -I for usado, todos os instantâneos entre snapA e snapD são enviados. Se -i é utilizado, apenas snapD (para todos os descendentes) são enviados.
Para receber qualquer um desses novos tipos de fluxos do zfs send, o sistema destinatário deve 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 usando uma versão mais recente do software. Por exemplo, você pode enviar e receber os fluxos criados com as opções mais recentes para e de um pool de versão 3. Porém, você deve executar um software recente para receber um fluxo enviado com as opções mais recentes.
Exemplo 7-1 Enviando e recebendo fluxos complexos de instantâneos do ZFS
É possível combinar um grupo de instantâneos incrementais em um instantâneo usando a opçãozfs send -I. Por exemplo:
# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I
Então, deve-se remover snapB, snapC e snapD.
# zfs destroy pool/fs@snapB # zfs destroy pool/fs@snapC # zfs destroy pool/fs@snapD
Para receber o instantâneo combinado, utilize o comando a seguir.
# 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 um instantâ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
Utilize o comando zfs send -R para replicar um sistema de arquivos ZFS e todos os sistemas de arquivos descendentes, até o instantâneo nomeado. Quando este fluxo é recebido, todas as propriedades, instantâneos, sistemas de arquivo descendentes e clones são preservados.
No exemplo seguinte, são criados instantâneos para os sistemas de arquivos do usuário. Um fluxo de replicação é criado para todos os instantâneos do usuário. A seguir, os instantâneos e sistemas de arquivos originais são destruídos e, então, 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 -
No exemplo a seguir, o comando zfs send -R foi utilizado para replicar o conjunto de dados users e seus descendentes, e enviar o fluxo replicado para outro conjunto, 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 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 -
Os comandos zfs send e zfs recv podem ser usados para copiar remotamente uma representaçã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 os recebe no sistema de arquivos sandbox/restfs. O comando também cria um instantâneo restfs@today no sistema newsys. Neste exemplo, o usuário foi configurado para que use ssh no sistema remoto.