ERREUR btrfs: erreur lors de l'équilibrage - Pas d'espace disponible sur l'appareil

15

Mon système Kubuntu 12.04 a manqué d'espace sur la partition racine et ne démarre pas. La commande df -hmontre beaucoup d'espace disponible (avec seulement 37% utilisé):

/dev/sda2        45G   17G   29G  37%

La page suivante indique que je dois exécuter la commande balance:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

Je ne suis pas entièrement convaincu que c'est la meilleure approche, mais c'est la seule que j'ai trouvée. Cependant, lorsque j'exécute cette commande, j'obtiens cette erreur:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

J'obtiens la même erreur avec:

$ sudo btrfs fi balance start -dusage=1 /mount/point

Quelle est la bonne solution?

MountainX-for-Monica
la source

Réponses:

15

Il existe des moyens de balancefonctionner dans cette situation.

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

Si la commande d'équilibre se termine par "Terminé, a dû déplacer 0 bloc XX sur XX", vous devez augmenter le paramètre de pourcentage "poussière" jusqu'à ce qu'au moins un bloc soit déplacé.

si la commande balance échoue avec:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Vous devrez peut-être supprimer des fichiers de l'appareil pour faire de la place. Exécutez ensuite à nouveau la commande balance.

Cependant, grâce au blog de Marc: btrfs - Fixing Btrfs Filesystem Full Problems here is another option:

Une astuce pour contourner ce problème consiste à ajouter un périphérique (même une clé USB fera l'affaire) à votre système de fichiers btrfs. Cela devrait permettre à la balance de démarrer, puis vous pouvez supprimer le périphérique avec la suppression de périphérique btrfs lorsque la balance est terminée. Il a également été dit sur la liste que le noyau 3.14 peut résoudre certains problèmes d'équilibrage que les noyaux plus anciens ne peuvent pas, alors essayez si le noyau est ancien.

MountainX-for-Monica
la source
7
J'ai constaté que de temps en temps, j'avais également besoin mount -oremount,clear_cache /mountpointde corriger les calculs d'espace libre. (Ils deviennent corrompus ...)
rrauenza
1
@rrauenza, merci! Vous devriez ajouter cela comme réponse :)
mwfearnley
0

J'ai tout essayé dans la réponse acceptée et le blog de Marc, y compris l'incrémentation du -dusageparamètre et l'ajout d'un autre périphérique de blocage, en vain. Même après avoir supprimé certains fichiers et libéré un peu d'espace sur le disque qui était plein, balancen'a pas pu terminer. Pour une raison quelconque, il semblait toujours déplacer des données sur le disque presque plein. En fin de compte, ce qui a fonctionné pour moi, c'était de restreindre l'équilibrage à l'appareil complet:

btrfs balance start -ddevid=<dev_id> <path>

où le dev_idpeut être trouvé avec:

btrfs fi show 
z7sg
la source
Aucun de ceux-ci n'a fonctionné
rencontré
Cela a fait planter mon système et le volume est devenu indisponible même si j'ai redémarré le système. J'ai installé un volume avec EXT4 et maintenant j'espère pouvoir me débarrasser du système BTRFS très sensible que je considère comme un échec avec beaucoup de problèmes de conception.
Al Bundy
0

sudo apt-btrfs-snapshot delete-old-than 3d Supprime les instantanés de plus de 3 jours. Lorsque vous déplacez des données, les données d'instantané deviennent déplacées et les données réelles doivent être écrites à plusieurs endroits sur le lecteur. Cela supprime les instantanés relatifs aux anciennes données dans les anciens emplacements et libère ces secteurs pour une nouvelle utilisation. Je recommande également duperemove pour dédupliquer les données et les extensions sur le système de fichiers btrfs.

D337z
la source