btrfs et espace libre manquant

8

J'ai converti ma partition ext4 en btrfs et supprimé le sous-volume de sauvegarde après l'avoir fait. Ensuite, j'ai activé la compression (lzo) du système de fichiers dans le fichier fstab et tout est correct jusqu'à présent.

Ensuite, j'ai forcé la compression de tous les fichiers à l'aide de la commande de défragmentation avec le paramètre -c que la nouvelle compression est appliquée à tous les fichiers.

Ce faisant, j'ai remarqué que mon SSD était complètement rempli - avant d'avoir 6 Go d'espace libre. Non, je n'ai plus rien.

easteregg@x201s:~$ btrfs fi df /
Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

et

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /

Alors maintenant. Comment retrouver mon espace libre. Je m'attendais à gagner plus d'espace à cause de la compression lzo. Et maintenant!

Le fs est correctement monté.

easteregg@x201s:~$ mount
/dev/sda1 on / type btrfs (rw,noatime,ssd,compress=lzo)

Des idées pour résoudre ce problème?

œuf de Pâques
la source
J'ai maintenant compris: vous ne pouvez pas effectuer de rééquilibrage en ligne. Cela explique pourquoi rien n'a fonctionné pour moi. J'ai donc juste démarré mon système de secours et fait juste un rééquilibrage de tout le disque et ensuite j'ai exécuté la commande de défragmentation avec la compression activée. Maintenant, j'ai environ 17 concerts d'espace libre! nice :)
easteregg
1
En tant que meilleure pratique, ne conservez qu'un ensemble minimal d'instantanés et supprimez ceux qui sont inutiles pour éviter de gaspiller de l'espace sur le volume, car btrfs est un système de fichiers de copie sur écriture, au fil du temps, de plus en plus de blocs de données seront modifiés, faisant ainsi des instantanés occupant de plus en plus d'espace sur le disque.
Terry Wang
2
Voir aussi cette question , qui a une explication approfondie et des commentaires utiles.
ignis

Réponses:

8

Je sais que cette question est ancienne - mais à partir d'aujourd'hui, la commande balance résout ce problème:

Pendant la conversion, beaucoup d'espace sera alloué pour y déplacer des objets. Une fois alloué, il n'apparaîtra plus comme "gratuit" ou "non alloué". Pour résoudre ce problème, démarrez simplement un équilibre

btrfs balance start "path"

vous pouvez également indiquer à la commande balance, de n'équilibrer que les morceaux, qui sont utilisés pour un certain pourcentage - comme 0%, ce qui signifierait que les morceaux sont vides:

btrfs balance start "path" -dusage=0 -musage=0

Le paramètre -d signifie des options pour les données. Le paramètre -m signifie des options pour les métadonnées.

jouer avec la commande balance, ça devrait aider.

wuppi
la source
5

Regardez la sortie de btrfs fi df:

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

La totalpartie est l'espace alloué, tandis que la partie usedest réellement utilisée par btrfs. La différence entre totalet used(environ 15 Go) est votre espace manquant. Comme vous pouvez le voir, il a déjà été alloué pour les blocs de métadonnées.

Je n'ai qu'une expérience de loisir avec btrfs, mais je ne pense pas qu'une conversion ext4 soit le meilleur moyen de créer un système de fichiers btrfs bien présenté. Heureusement, vous pouvez rééquilibrer l'ensemble du système de fichiers pour lui faire refaire toutes les allocations.

Comme toujours, utilisez des sauvegardes.

ramslök
la source