Os instantâneos são criados com o comando zfs snapshot, que apresenta o nome do instantâneo a ser criado como seu único argumento. O nome do instantâneo é especificado da seguinte forma:
filesystem@snapname volume@snapname |
O nome do instantâneo deve estar de acordo com os requisitos de identificação em Requisitos para nomeação de componentes do ZFS.
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 rpool/ROOT/zfs2BE@zfs2BE 78.3M - 4.53G - tank/home@now 0 - 26K - tank/home/ahrens@now 0 - 259M - tank/home/anne@now 0 - 156M - tank/home/bob@now 0 - 156M - tank/home/cindys@now 0 - 104M - |
Os instantâneos não possuem propriedades que possam ser modificadas. E as propriedades do conjunto de dados também não podem ser aplicadas a um instantâneo. Por exemplo:
# zfs set compression=on tank/home/ahrens@now cannot set compression property for 'tank/home/ahrens@now': snapshot properties cannot be modified |
Os instantâneos são destruídos com o comando zfs destroy. Por exemplo:
# zfs destroy tank/home/ahrens@now |
Um conjunto de dados não pode ser destruído se existirem instantâneos deste conjunto de dados. 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 antes que o instantâneo seja destruído.
Para obter mais informações sobre o subcomando destroy, consulte Destruindo um sistema de arquivos ZFS.
Se você possui uma política de instantâneo automático diferente, na qual instantâneos mais antigos estão sendo destruídos sem aviso pelo zfs receive por não existirem mais no lado de envio, é possível utilizar a função de contenção de instantâneos.
Conter um instantâneo evita que ele seja destruído. Além disso, este recurso permite que instantâneos com clones possam ser excluídos enquanto a remoção do último clone está pendente utilizando o comando zfs destroy - d. Cada instantâneo possui uma contagem associada para referência do usuário, inicializada no zero. Esta contagem aumenta de um em um quando uma contenção é colocada em um instantâneo e diminui de um em um quando uma contenção é liberada.
Na versão anterior do Solaris, instantâneos poderiam ser destruídos apenas através do comando zfs destroy se esses não tivessem clones. Nesta versão do Solaris, o instantâneo também deve possuir uma contagem para referência do usuário em zero.
É possível conter um instantâneo ou conjunto de instantâneos. Por exemplo, a sintaxe a seguir põe uma marcação para conter, manter, em tank/home/cindys/snap@1 .
# zfs hold keep tank/home/cindys@snap1 |
É possível utilizar a opção -r como recurso para conter os instantâneos de todos os sistemas de arquivos descendentes. Por exemplo:
# zfs snapshot -r tank/home@now # zfs hold -r keep tank/home@now |
Esta sintaxe adiciona uma única referência, manter, ao instantâneo ou ao conjunto de instantâneos. Cada instantâneo possui sua própria marcação do espaço de nome e as marcações de contenção devem ser únicas no espaço. Se existir uma contenção em um instantâneo, as tentativas para destruir o instantâneo contido através do comando zfs destroy falharão. Por exemplo:
# zfs destroy tank/home/cindys@snap1 cannot destroy 'tank/home/cindys@snap1': dataset is busy |
Se deseja destruir um instantâneo contido, utilize a opção -d. Por exemplo:
# zfs destroy -d tank/home/cindys@snap1 |
Utilize o comando zfs holds para exibir uma lista de instantâneos contidos. Por exemplo:
# zfs holds tank/home@now NAME TAG TIMESTAMP tank/home@now keep Thu Jul 15 11:25:39 2010 |
# zfs holds -r tank/home@now NAME TAG TIMESTAMP tank/home/cindys@now keep Thu Jul 15 11:25:39 2010 tank/home/mark@now keep Thu Jul 15 11:25:39 2010 tank/home@now keep Thu Jul 15 11:25:39 2010 |
É possível utilizar o comando zfs release para liberar a contenção de um instantâneo ou de um conjunto de instantâneos. Por exemplo:
# zfs release -r keep tank/home@now |
Se uma contenção for liberada, o instantâneo pode ser destruído através do comando zfs destroy. Por exemplo:
# zfs destroy -r tank/home@now |
Duas novas propriedades identificam as informações de contenção de instantâneos:
A propriedade defer_destroy está on se o instantâneo foi marcado para destruição adiada utilizando o comando zfs destroy -d. Caso contrário, a propriedade está off.
A propriedade userrefs está definida para o número de contenções do instantâneo, também chamada de contagem para referência do usuário.
É possível renomear instantâneos, porém eles devem ser renomeados dentro do conjunto e do conjunto de dados a partir do qual foram criados. Por exemplo:
# zfs rename tank/home/cindys@083006 tank/home/cindys@today |
Além disso, a sintaxe do atalho a seguir é equivalente à sintaxe anterior:
# zfs rename tank/home/cindys@083006 today |
A operação rename de instantâneo a seguir não é suportada porque o conjunto de destino e o nome do sistema de arquivos são diferentes do conjunto e do sistema de arquivos onde o instantâ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 |
Como recurso, é possível renomear instantâneos com o comando zfs rename - r. Por exemplo:
# 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 - 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 - |