Guia de administração do ZFS Oracle Solaris

Visão geral dos clones do ZFS

Um clone é um volume ou um sistema de arquivos gravável cujo conteúdo inicial é o mesmo do conjunto 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 em disco adicional. Além disso, você pode realizar o instantâneo de um clone.

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 clone tenha sido criado em qualquer parte da hierarquia do conjunto de dados, o instantâneo original não poderá ser destruído enquanto tal clone existir. A propriedade origin revela essa dependê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 os comandos zfs get e zfs set para ver e alterar as propriedades de um conjunto de dados clonado. Para obter mais informações sobre a configuração das propriedades do conjunto de dados do ZFS, consulte Definindo propriedades do ZFS.

O clone compartilha inicialmente todo o seu espaço em disco com o instantâneo original e, por essa razão, o valor de sua propriedade used é inicialmente zero. O clone passa a utilizar mais espaço em disco à medida que sofre alterações. A propriedade used do instantâneo original não inclui o espaço em disco consumido pelo clone.

Criando um clone do ZFS

Para criar um clone, use o comando zfs clone, especificando o instantâneo a partir do qual criar o clone e o nome do novo sistema de arquivos ou volume. O novo sistema de arquivos ou volume pode ser colocado em qualquer parte da hierarquia do ZFS. O novo conjunto de dados é do mesmo tipo (por exemplo, sistema de arquivos ou volume) que o instantâneo a partir do qual o clone foi criado. É possível criar um clone de um sistema de arquivos em um conjunto diferente daquele no qual se encontra o instantâneo do sistema de arquivos original.

No exemplo a seguir, um novo clone chamado tank/home/ahrens/bug123 com o mesmo conteúdo inicial do instantâneo tank/ws/gate@yesterday é criado:


# 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 um usuário temporário, uma área de trabalho como projects/teamA/tempuser. As propriedades são, então, definidas na área de trabalho clonada.


# 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 ZFS

Os 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 um clone do ZFS

O comando zfs promote pode ser usado para substituir um sistema de arquivos ZFS ativo por um clone de um sistema de arquivos. Este recurso permite clonar e substituir os sistemas de arquivos para que o sistema de arquivos original torne-se o clone do sistema de arquivos especificado. Além disso, este recurso possibilita destruir o sistema de arquivos a partir do qual o clone foi originalmente criado. Sem promover o clone, não é possível destruir um sistema de arquivos original de clones ativos. Para obter mais informações sobre a destruição de clones, consulte Destruindo um clone do ZFS.

No exemplo a seguir, o sistema de arquivos tank/test/productA é clonado e, então, o clone do sistema de arquivos, tank/test/productAbeta , torna-se o sistema de arquivos tank/test/productA original.


# 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                  104M  66.2G    23K  /tank/test
tank/test/productA         104M  66.2G   104M  /tank/test/productA
tank/test/productA@today      0      -   104M  -
tank/test/productAbeta        0  66.2G   104M  /tank/test/productAbeta
# zfs promote tank/test/productAbeta
# zfs list -r tank/test
NAME                           USED  AVAIL  REFER  MOUNTPOINT
tank/test                      104M  66.2G    24K  /tank/test
tank/test/productA                0  66.2G   104M  /tank/test/productA
tank/test/productAbeta         104M  66.2G   104M  /tank/test/productAbeta
tank/test/productAbeta@today      0      -   104M  -

Nesta saída zfs list, note que as informações de contabilidade de espaço em disco do sistema de arquivos productA original foram substituídas pelo sistema de arquivos productAbeta.

É possível completar o processo de substituição de clone 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

Opcionalmente, você pode remover o sistema de arquivos de legado. Por exemplo:


# zfs destroy tank/test/productAlegacy