Ho un pool creato nel 2011 che utilizza lzjb compression
e non è stato fino a un paio d'anni dopo che un aggiornamento mi ha permesso di impostare la compressione lz4
. Stimo che almeno il 20% del contenuto (per spazio) sull'array sia stato creato prima del 2013, il che significa che è ancora compresso usando lzjb
.
Posso pensare a un paio di opzioni per risolvere questo problema e riguadagnare (un po ') spazio:
Eseguire il backup e il ripristino in un nuovo pool. Non molto pratico, poiché non ho spazio di archiviazione ridondante sufficiente per contenere la copia temporanea. Il ripristino richiederebbe inoltre che il pool rimanga offline per diverse ore.
Scrivi uno script per ricopiare qualsiasi file con un timestamp precedente al 2013. Potenzialmente rischioso, specialmente se soffoca su spazi o altri caratteri speciali e finisce per alterare il nome originale.
C'è un modo per convincere ZFS a ricomprimere i blocchi legacy usando l'attuale algoritmo di compressione? Un po 'come uno scrub, ma guarisce la compressione.
Una domanda correlata: esiste un modo per vedere l'utilizzo di ciascun tipo di algoritmo di compressione? zdb mostra solo le statistiche di compressione complessive, piuttosto che scomporle in singoli algoritmi.
export LC_ALL=C
all'inizio dello script e tutti i caratteri speciali non ASCII nei nomi dei file verranno mantenuti intatti. Mantenere intatti gli spazi bianchi e il trattino è più complicato, usare virgolette doppie e --
, ad es cp -- "$SOURCE" "$TARGET"
.
--
) "più complicato". È importante quanto evitare l'iniezione di SQL, per esempio.