J'ai un pool qui a été créé en 2011, en utilisant lzjb compression
, et ce n'est que quelques années plus tard qu'une mise à niveau m'a permis de définir la compression lz4
. J'estime qu'au moins 20% du contenu (par espace) sur le tableau a été créé avant 2013, ce qui signifie qu'il est toujours compressé à l'aide lzjb
.
Je peux penser à quelques options pour résoudre ce problème et regagner (un peu) d'espace:
Sauvegardez et restaurez dans un nouveau pool. Pas vraiment pratique, car je n'ai pas de stockage redondant suffisant pour contenir la copie temporaire. La restauration nécessiterait également que le pool soit hors ligne pendant plusieurs heures.
Écrivez un script pour recopier n'importe quel fichier avec un horodatage antérieur à 2013. Potentiellement risqué, surtout s'il s'étouffe avec des espaces ou d'autres caractères spéciaux et finit par altérer le nom d'origine.
Existe-t-il un moyen d'obtenir que ZFS recompresse les blocs hérités à l'aide de l'algorithme de compression actuel? Un peu comme un gommage, mais guérissant la compression.
Une question connexe: existe-t-il un moyen de voir l'utilisation de chaque type d'algorithme de compression? zdb affiche simplement les statistiques globales de compression, plutôt que de les décomposer en algorithmes individuels.
export LC_ALL=C
au début du script et tous les caractères spéciaux non ASCII des noms de fichiers seront conservés intacts. Garder les espaces et les tirets intacts est plus délicat, utilisez des guillemets doubles et --
, par exemple cp -- "$SOURCE" "$TARGET"
.
--
"compliqué" d' obéir aux règles fondamentales de programmation du shell (guillemets doubles autour des variables ou à utiliser ). C'est aussi important que d'éviter l'injection SQL, par exemple.