web-dev-qa-db-fra.com

Btrfs compressera-t-il automatiquement les fichiers existants lorsque la compression est activée?

J'ai choisi btrfs comme format de mon système de fichiers / dans le programme d'installation de Ubuntu 12.04 LTS. Une fois l'installation terminée, j'ai ajouté compress=lzo aux options de montage dans /etc/fstab et redémarré.

Les fichiers existants seront-ils automatiquement compressés maintenant ou dois-je explicitement faire quelque chose pour que cela se produise?

25
ændrük

Vous devrez exécuter btrfs fi defragment pour forcer la recompression des données existantes. Sinon, seules les nouvelles données seront compressées.

De la FAQ :

... envisagez de remonter avec -o compress et réécrivez des fichiers particuliers sur place, ou exécutez btrfs fi defragment pour tout recompresser. Cela peut prendre un peu de temps.

27

J'ai réalisé ce que Norbert Fabritius avait dit, mais je n'ai remarqué aucune compression dans les fichiers existants - df -h/ avant btrfs fi défragmenter = 658MB | df -h/ après btrfs fi défragmenter = 658MB. Les nouveaux fichiers sont ok. Chercher un peu m'apporte cette citation:

Courir ceci:

# btrfs filesystem defragment ~/stuff

ne défragmente pas le contenu du répertoire.

C'est par conception. btrfs fi defrag fonctionne sur le seul objet du système de fichiers transmis à> lui. Cela signifie que la commande défragmente uniquement les métadonnées détenues par le répertoire> objet, et non le contenu du répertoire. Si vous voulez défragmenter le contenu> du répertoire, quelque chose comme ceci serait plus utile:

# find -xdev -type f -exec btrfs fi defrag '{}' \;

Après cela, mon/cela occupe 656MB - rien d’énorme, mais il y a certainement une compression.

Source: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

J'espère que cette aide.

Désolé pour mon anglais.

10
J. Neto

Selon la documentation d'Oracle, vous pouvez compresser des fichiers existants sur un système de fichiers en ligne existant en défragmentant chaque fichier qu'il contient à l'aide des options -c, -clzo ou -czlib. LZO est recommandé pour la vitesse.

find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} +

Ceci utilise la commande find pour exécuter le défragmenteur btrfs sur chaque fichier du système de fichiers racine (indiqué par la barre oblique juste après la commande "find" au début). Si vous avez d'autres sous-volumes, vous pouvez les utiliser à nouveau avec le chemin d'un sous-volume (j'en ai un dans/home, par exemple) au lieu de la barre oblique simple.

Vous aurez besoin des privilèges root pour cela, alors ajoutez Sudo au début si nécessaire.

Voir:

8
Geoff

Selon ArchWiki :

Conseil: La compression peut également être activée par fichier sans utiliser l'option de montage compress; appliquez simplement chattr +c au fichier. Appliqué aux répertoires, les nouveaux fichiers seront automatiquement compressés au fur et à mesure.

Très agréable! Que Dieu bénisse BTRFS!

Aussi, à partir de le wiki BTRFS :

Puis-je forcer la compression sur un fichier sans utiliser l'option de montage compress?

Oui. L'utilitaire chattr prend en charge la définition de l'attribut de fichier c qui marque l'inode pour compresser les données nouvellement écrites.

2
Geremia

Selon https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options les algorithmes de compression suivants sont disponibles:

compress,compress-force
Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression:

 - compress=zlib - Better compression ratio. It's the default and safe for olders kernels.
 - compress=lzo - Faster compression.
 - compress=no - Disables compression (starting with kernel 3.6). 

compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38.

Note that old (before 2012) btrfs-progs versions will probably fail some operations (e.g. fsck) on filesystems with LZO compression. 

Remarque: Cet article est la réponse à la question supplémentaire de savoir quel type d'algorithme de compression est disponible, ce qui a été demandé ci-dessous ...

2
Rostislav Stribrny