ERROR btrfs: error durante el equilibrio - No queda espacio en el dispositivo

15

Mi sistema Kubuntu 12.04 se quedó sin espacio en la partición raíz y no se iniciará. El comando df -hmuestra mucho espacio disponible (con solo el 37% utilizado):

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

La siguiente página indica que debo ejecutar el comando de equilibrio:

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

No estoy completamente seguro de que este sea el mejor enfoque, pero es el único que encontré. Sin embargo, cuando ejecuto ese comando, aparece este error:

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

Me sale el mismo error con:

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

¿Cuál es la solución correcta?

MountainX-for-Monica
fuente

Respuestas:

15

Hay formas de balancecorrer en esta situación.

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

Si el comando de equilibrio termina con "Listo, tuvo que reubicar 0 de XX fragmentos", entonces necesita aumentar el parámetro de porcentaje de "dusage" hasta que se reubique al menos un fragmento.

si el comando de equilibrio falla con:

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

En realidad, es posible que deba eliminar archivos del dispositivo para hacer espacio. Luego ejecute el comando de equilibrio nuevamente.

Sin embargo, gracias al blog de Marc: btrfs - Solucionar problemas completos del sistema de archivos Btrfs aquí hay otra opción:

Un truco para evitar esto es agregar un dispositivo (incluso una llave USB funcionará) a su sistema de archivos btrfs. Esto debería permitir que se inicie el equilibrio, y luego puede eliminar el dispositivo con la eliminación del dispositivo btrfs cuando finalice el equilibrio. También se ha dicho en la lista que el núcleo 3.14 puede solucionar algunos problemas de equilibrio que los núcleos más antiguos no pueden, por lo tanto, intente si su núcleo es antiguo.

MountainX-for-Monica
fuente
77
Descubrí que, ocasionalmente, también necesitaba mount -oremount,clear_cache /mountpointcorregir los cálculos de espacio libre. (Se corrompen ...)
rrauenza
1
@rrauenza, gracias! Debería agregar eso como respuesta :)
mwfearnley
0

Intenté todo en la respuesta aceptada y el blog de Marc, incluido el incremento del -dusageparámetro y la adición de otro dispositivo de bloqueo, todo fue en vano. Incluso después de eliminar algunos archivos y liberar un poco de espacio en el disco que estaba lleno, balanceno se pudo completar. Por alguna razón, siempre parecía estar moviendo datos al disco casi lleno. Al final, lo que funcionó para mí fue restringir el equilibrio al dispositivo completo:

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

donde dev_idse puede encontrar con:

btrfs fi show 
z7sg
fuente
Ninguno de estos funcionó
reunió
Esto bloqueó mi sistema y el volumen dejó de estar disponible incluso cuando reinicié el sistema. Instalé un volumen con EXT4 y ahora espero poder deshacerme del sistema BTRFS muy sensible, que considero un error con muchos problemas de diseño.
Al Bundy
0

sudo apt-btrfs-snapshot delete-older-than 3d Elimina instantáneas de más de 3 días. A medida que mueve los datos, los datos de la instantánea se vuelven fuera de lugar y los datos reales deben escribirse en varios lugares en el disco. Esto elimina las instantáneas relacionadas con datos antiguos en ubicaciones antiguas y libera esos sectores para su uso nuevamente. También recomiendo duperemove para deduplicar datos y extensiones en el sistema de archivos btrfs.

D337z
fuente