Abaixo está minha lista de volumes e instantâneos do ZFS, bem como a origem e o clone de cada um.
Quero excluir todos os instantâneos, mas manter todos os sistemas de arquivos. Como posso fazer isso?
Eu tentei zfs promoteseguir tentando excluir cada sistema de arquivos para muitas combinações diferentes dos sistemas de arquivos. Isso muda em torno de onde os instantâneos "vivem"; por exemplo, zfs promote tank/containers/sixmove o instantâneo Fde tank/containers/three@Fpara tank/containers/six@F. Os dados ativos no sistema de arquivos não são modificados (o que eu quero!), Mas ainda não consigo excluir o instantâneo (o que não é o que eu quero).
Um típico zfs destroytentativa diz-me que tem clones dependentes, alguns dos quais (os instantâneos) I não querem destruir, mas outros dos quais (os sistemas de arquivos) I não querem destruir.
Por exemplo.
# zfs destroy tank/containers/six@A
cannot destroy 'tank/containers/six@A': snapshot has dependent clones
use '-R' to destroy the following datasets:
tank/containers/five
tank/containers/two@B
tank/containers/two
No exemplo acima, eu não quero destruir tank/containers/fiveou tank/containers/two, mas se eu tiver zfs promotecinco e dois, ainda não posso destruir nenhum instantâneo. Há uma solução?
# zfs list -t all -o name,origin,clones
NAME ORIGIN CLONES
tank - -
tank/containers - -
tank/containers/five tank/containers/two@B -
tank/containers/four tank/containers/six@C -
tank/containers/one - -
tank/containers/one@E - tank/containers/three
tank/containers/two tank/containers/six@A -
tank/containers/two@B - tank/containers/five
tank/containers/six tank/containers/three@F -
tank/containers/six@A - tank/containers/two
tank/containers/six@C - tank/containers/four
tank/containers/three tank/containers/one@E -
tank/containers/three@F - tank/containers/six