zfs, détruire un snapshot récalcitrant

Quand on réplique des datasets zfs entre deux serveurs, il arrive qu’une erreur se produise et que le clone temporaire ne soit pas automatiquement effacé, ce qui ensuite bloque les réplications…

On essai de détruire le snapshot

[root@zfs] ~# zfs list -H -o name -t snapshot | xargs -n1 zfs destroy
 cannot destroy 'tank/vol/hsm@auto-20111122.0715-1w': dataset already exists
Comment s'en sortir

On liste les snapshots, notez qu’on ne vois pas le clone

[root@zfs] ~# zfs list -H -o name -t snapshot
 tank/vol/hsm@auto-20111122.0715-1w
Trouver le nom du clone qui empêche la destruction du snapshot, c'est celui avec le % dans le nom
[root@zfs] ~# zfs -d tank
 Dataset mos [META], ID 0, cr_txg 4, 178M, 183 objects
 Dataset tank/shared [ZPL], ID 32, cr_txg 49, 31.4K, 4 objects
 Dataset tank/vol/hsm/%auto-20111122.0730-1w [ZPL], ID 17221, cr_txg 2005726, 584G, 2009587 objects
 Dataset tank/vol/hsm@auto-20111122.0715-1w [ZPL], ID 17215, cr_txg 2004014, 584G, 2009587 objects
 Dataset tank/vol/hsm [ZPL], ID 77, cr_txg 436135, 584G, 2009587 objects
 Dataset tank/doc [ZPL], ID 52, cr_txg 435968, 32.9K, 5 objects
 Dataset tank/backup [ZPL], ID 44, cr_txg 185, 2.04T, 6375302 objects
 Dataset tank/tof [ZPL], ID 38, cr_txg 52, 32.2K, 5 objects
 Dataset tank [ZPL], ID 16, cr_txg 1, 37.4K, 8 objects
On détruite le coupable
[root@zfs] ~# zfs destroy tank/vol/hsm/%auto-20111122.0730-1w
 cannot open 'tank/vol/hsm/%auto-20111122.0730-1w': dataset does not exist
Une erreur se produit, mais si regarde le clone a disparu
[root@zfs] ~# zfs -d tank
 Dataset mos [META], ID 0, cr_txg 4, 178M, 177 objects
 Dataset tank/shared [ZPL], ID 32, cr_txg 49, 31.4K, 4 objects
 Dataset tank/vol/hsm@auto-20111122.0715-1w [ZPL], ID 17215, cr_txg 2004014, 584G, 2009587 objects
 Dataset tank/vol/hsm [ZPL], ID 77, cr_txg 436135, 584G, 2009587 objects
 Dataset tank/doc [ZPL], ID 52, cr_txg 435968, 32.9K, 5 objects
 Dataset tank/backup [ZPL], ID 44, cr_txg 185, 2.04T, 6375302 objects
 Dataset tank/tof [ZPL], ID 38, cr_txg 52, 32.2K, 5 objects
 Dataset tank [ZPL], ID 16, cr_txg 1, 37.4K, 8 objects
on peut maintenant détruire le snapshot
[root@zfs] ~# zfs destroy tank/vol/hsm@auto-20111122.0715-1w
Pas d'erreur, on vérifie
root@zfs] ~# zfs -d tank
 Dataset mos [META], ID 0, cr_txg 4, 178M, 173 objects
 Dataset tank/shared [ZPL], ID 32, cr_txg 49, 31.4K, 4 objects
 Dataset tank/vol/hsm [ZPL], ID 77, cr_txg 436135, 584G, 2009587 objects
 Dataset tank/doc [ZPL], ID 52, cr_txg 435968, 32.9K, 5 objects
 Dataset tank/backup [ZPL], ID 44, cr_txg 185, 2.04T, 6375302 objects
 Dataset tank/tof [ZPL], ID 38, cr_txg 52, 32.2K, 5 objects
 Dataset tank [ZPL], ID 16, cr_txg 1, 37.4K, 8 objects
Il a disparu, la réplication va pouvoir repartir...