Angenommen, ich habe ein Dataset mit 100 Snapshots und möchte rm -rf
in allen Snapshots alle Ordner mit dem Namen "Cache" verwenden.
Ich möchte den Speicherplatz tatsächlich freigeben und nicht nur in Schichten von Schnappschüssen verstecken. Ein Klon zu erstellen und daraus zu entfernen und dann einen neuen Schnappschuss zu erstellen, scheint also nicht das zu tun, was ich will.
Irgendein halbautomatischer Weg, das zu tun? Einige Wraps um zfs Liste -t Snapshot, zfs Klon, zfs fördern, zfs Snapshot?
(Cross-Posting von /superuser/313197, da ich sehe, dass dies mehr ZFS-Zeug hat)
Antworten:
Schnappschüsse sind schreibgeschützt. Wenn Sie diese Ordner nicht mehr benötigen , müssen Sie den gesamten Snapshot löschen.
Sie können ein Backup (mit so etwas wie tar) erstellen, ohne die fehlerhaften Ordner auszuschließen, und dann den Snapshot löschen. Offensichtlich hat das Backup jetzt das Format tar oder was auch immer. Aber zumindest haben Sie noch eine Sicherungskopie.
quelle
Sie könnten Folgendes versuchen:
fsnew
).fsnew
), damit Sie den Snapshot zerstören können, auf dem das Dateisystem basiert.fsnew
.Nun für jeden Snapshot nach,
rsync
mit dem--inplace
Flag vom Snapshot bis zum neuen Überspringen von Dateien, die Sie nicht möchten. Das--inplace
Flag reduziert die Anzahl der Schreibvorgänge und ermöglicht kleinere Snapshots.fsnew
.Wenn dies erledigt ist, sollten Sie einen Snapshot haben
fsnew
, der den Snapshots aus dem ursprünglichen Dateisystem entspricht, wobei die fehlerhaften Dateien entfernt wurden.Wenn Sie über Speicherplatz auf dem Laufwerk verfügen, können Sie den Befehl "destroy" überspringen, bis Ihr Skript ordnungsgemäß funktioniert.
quelle
--delete
Option auch an übergebenrsync
, da sonst Löschvorgänge zwischen Snapshots verloren gehen. Ansonsten ist das eine tolle Idee.Sie können den ursprünglichen Schnappschuss nach dem Heraufstufen der Aktion nicht zerstören. Nur wenn dies der Fall ist, zerstören Sie den übergeordneten Datensatz.
Beispiel (nach dem Klon fördern).
zfs zerstören media1/cheers/[email protected]
'media1/cheers/[email protected]' kann nicht zerstört werden: Snapshot hat abhängige Klone
Verwenden Sie '-R', um die folgenden Datensätze zu zerstören:
media1/media/[email protected]
media1 / media / backup
zfs zerstören media1/media/[email protected]
zfs zerstören media1/cheers/[email protected]
'media1/cheers/[email protected]' kann nicht zerstört werden: Snapshot hat abhängige Klone
Verwenden Sie '-R', um die folgenden Datensätze zu zerstören:
media1 / media / backup
Nach dieser "lustigen" Operation muss ich die nächsten machen
zfs snapshot media1 / media / backup @ 1
zfs send media1 / media / backup @ 1 | pv | zfs erhalten media1 / media / backupnew
zfs zerstören media1 / media / backup @ 1
zfs zerstören -R media1 / media / backup
zfs benennt media1 / media / backupnew media1 / media / backup um
ODER invertieren fördern. zfs bewirbt media1 / media / backup und löscht danach den Klon erneut, da Sie einen großen Schnappschuss an src-Stelle haben))
Hier kann nur rsync / backup helfen.
quelle
Die ZFS-Snapshots für ein bestimmtes ZFS-Dateisystem befinden sich im
.zfs/snapshots
Verzeichnis im Stammverzeichnis des Dateisystems. Sie sollten in der Lage sein, ein Skript zu schreiben, das diesen Ordner durchläuft, undrm
die Dateien, die Sie benötigen, um es aus den Snapshots selbst zu löschen.quelle