ZFS: rimozione di file da istantanee?


10

Supponiamo che io abbia un set di dati con 100 istantanee e voglio rm -rftutte le cartelle denominate "cache" in tutte le istantanee.

Voglio davvero liberare lo spazio, non solo nasconderlo in strati di istantanee, quindi creare un clone e rimuoverlo da esso, quindi scattare una nuova istantanea non sembra fare quello che voglio.

Qualche modo semi-automatico di farlo? Qualche giro attorno alla lista zfs -t istantanea, clone zfs, promozione zfs, istantanea zfs?

(cross-post da /superuser/313197 poiché vedo che questo ha più cose ZFS)


3
Non eseguire il crosspost, ma attendere la migrazione della domanda.
Sven

Inoltre, non sono sicuro che sia possibile: le istantanee sono di sola lettura e se si utilizza la coppia clone / promozionale, si annullerà la dipendenza tra l'istantanea clonata e il set di dati "HEAD", che probabilmente non è quello che si volere. Consulta il documento qui: download.oracle.com/docs/cd/E19253-01/819-5461/gbcxz/index.html
Sven

Aspetterei la migrazione, ma sembra che ci sia una buona quantità di domande ZFS anche su SU, quindi ho dubitato che sarebbe stato spostato automaticamente ... -posting.
Tino Didriksen,

@TinoDidriksen potresti fornire un riferimento a quel meta post per favore? Mi piacerebbe vederlo Grazie.
Pensa al

2
Il post a cui hai fatto riferimento non è una politica ufficiale. C'è una FAQ su MSO che spiega come gestire le domande che l'utente pensa siano in argomento per più siti. Per riassumere, il cross posting non è consentito. Se dopo la pubblicazione decidi che sarebbe meglio altrove e non hai ottenuto buone risposte, puoi contrassegnarlo per la migrazione o puoi eliminarlo e chiedere nuovamente, ma devi personalizzare il post sul sito in cui ti trovi chiedendo. Hai ripubblicato la stessa domanda parola per parola senza aspettare, il che non riesce le linee guida in entrambi i meta post sul cross posting.
Pensa al

Risposte:


9

Le istantanee sono di sola lettura. Se hai bisogno che quelle cartelle scompaiano, devi eliminare l'intera istantanea.

Puoi fare un backup (con qualcosa come tar), escludendo le cartelle offensive, quindi eliminare l'istantanea. Ovviamente il backup è ora in formato tar, o qualunque altra cosa; ma almeno hai ancora una copia di backup.


2
Il vero vantaggio di questa soluzione è che ora devi archiviare ogni bit di dati n volte per davvero, mentre un'istantanea memorizzerebbe solo i blocchi modificati. In questo modo, probabilmente finirai con molto più spazio di quanto hai risparmiato con l'eliminazione delle cache dai file tar.
Sven

Dedupe ti aiuterebbe , ma tu hai ragione. Sono abbastanza sicuro che non c'è alcun modo di modificare quelle istantanee come vuole però.
Chris S,

Ho sia la compressione gzip-1 sia il dedup, quindi la copia di dati identici occupa solo spazio di contabilità. Ma vorrei ovviamente un modo per evitare di copiare affatto.
Tino Didriksen,

Dubito che in caso di più file tar quasi dello stesso dedup di dati sarebbe di grande aiuto, poiché l'aggiunta o la sottrazione di un solo byte all'inizio del file significherebbe che nessun blocco sarebbe identico a un altro, rendendo inutile il dedup.
Sven

@SvenW Dopo aver riletto la domanda, vedo che lo sta facendo per cercare di risparmiare spazio; con la quale la mia risposta non mi aiuta davvero a meno che non sposti i file tar dal computer, che potrebbe comunque esportare le istantanee comunque. Sembra che sia bloccato tutto intorno.
Chris S,

14

Puoi provare quanto segue:

  1. Clona l'istantanea più vecchia in un nuovo filesystem (chiamala fsnew).
  2. Promuovi il clone ( fsnew) per permetterti di distruggere l'istantanea su cui si basa il filesystem.
  3. Rimuovi i file offensivi.
  4. Crea un'istantanea di fsnew.

Ora cerca l'istantanea dopo, rsynccon il --inplaceflag dell'istantanea per saltare i file che non desideri. Il --inplaceflag riduce il numero di scritture e consente di creare istantanee più piccole.

  1. Crea un'istantanea di fsnew.
  2. Distruggi l'istantanea originale.

Al termine, dovresti avere un'istantanea fsnewche corrisponda alle istantanee dal filesystem originale con i file offensivi rimossi.

Se si dispone dello spazio sull'unità, è possibile che si desideri saltare il comando "destro" fino a quando lo script non funziona correttamente.


Dovrai anche passare l' --deleteopzione a rsync, altrimenti perderai le cancellazioni avvenute tra le istantanee. Altrimenti questa è un'ottima idea.
Tobia,

1
  1. Distruggi l'istantanea originale.

Non è possibile distruggere l'istantanea di orig dopo aver promosso l'azione. Solo in questo caso distruggi il set di dati principale.

esempio (dopo aver promosso il clone).

zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

impossibile distruggere 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': lo snapshot ha cloni dipendenti

usa '-R' per distruggere i seguenti set di dati:

media1/media/backup@auto-20190531.1622-2y

media1 / media / backup

zfs destroy media1/media/backup@auto-20190531.1622-2y

zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

impossibile distruggere 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': lo snapshot ha cloni dipendenti

usa '-R' per distruggere i seguenti set di dati:

media1 / media / backup

Dopo quella "divertente" operazione, devo fare le prossime

zfs snapshot media1 / media / backup @ 1

zfs invia media1 / media / backup @ 1 | pv | zfs riceve media1 / media / backupnew

zfs destroy media1 / media / backup @ 1

zfs destroy -R media1 / media / backup

zfs rinomina media1 / media / backupnuovo media1 / media / backup

O invertirne uno. zfs promuove media1 / media / backup e dopo aver eliminato il clone in qualsiasi momento, perché avrai una grande istantanea al posto di src))

Solo rsync / backup può aiutare qui.


-3

Le istantanee ZFS per un particolare filesystem ZFS sono disponibili nella .zfs/snapshotsdirectory nella radice del filesystem. Dovresti essere in grado di scrivere uno script che attraversa questa cartella ed rmè il file che ti serve, che dovrebbe eliminarlo dalle istantanee stesse.


3
Le istantanee di ZFS sono di sola lettura. Non puoi cancellare da loro.
Sven

Mio male, non sono sicuro di dove avrei avuto l'impressione che potresti :(
crescere
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.