web-dev-qa-db-fra.com

ZFS: recompressez les fichiers existants après un changement d'algorithme de compression

J'ai un pool créé en 2011, 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 sur 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 de lzjb.

Je peux penser à quelques options pour résoudre ce problème et regagner (un peu) d'espace:

  1. 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.

  2. É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 de compression globales, plutôt que de les décomposer en algorithmes individuels.

14
rowan194

Vous devez recopier les données (complètes ou partielles) ou zfs envoyer/recevoir les données vers un nouveau pool ou système de fichiers ZFS.

Il n'y a pas d'autre option.

14
ewwhite