hard-drive – Error "No queda espacio en el dispositivo" a pesar de tener mucho espacio, en btrfs

Pregunta:

Casi en todas partes recibo fallas en los registros quejándose de que No space left on device

Registros de Gitlab:

==> /var/log/gitlab/nginx/current <==
2016-11-29_20:26:51.61394 2016/11/29 20:26:51 [emerg] 4871#0: open() "/var/opt/gitlab/nginx/nginx.pid" failed (28: No space left on device)

Registros de correo electrónico de Dovecot:

Nov 29 20:28:32 aws-management dovecot: imap(email@www.sitename.com): Error: open(/home/vmail/emailuser/Maildir/dovecot-uidlist.lock) failed: No space left on device

Salida de df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/xvda1     ext4      7.8G  3.9G  3.8G  51% /
devtmpfs       devtmpfs  1.9G   28K  1.9G   1% /dev
tmpfs          tmpfs     1.9G   12K  1.9G   1% /dev/shm
/dev/xvdh      btrfs      20G   13G  7.9G  61% /mnt/durable
/dev/xvdh      btrfs      20G   13G  7.9G  61% /home
/dev/xvdh      btrfs      20G   13G  7.9G  61% /opt/gitlab
/dev/xvdh      btrfs      20G   13G  7.9G  61% /var/opt/gitlab
/dev/xvdh      btrfs      20G   13G  7.9G  61% /var/cache/salt

Parece que también hay mucho espacio de inodos. Salida de df -i

Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     524288 105031 419257   21% /
devtmpfs       475308    439 474869    1% /dev
tmpfs          480258      4 480254    1% /dev/shm
/dev/xvdh           0      0      0     - /mnt/durable
/dev/xvdh           0      0      0     - /home
/dev/xvdh           0      0      0     - /opt/gitlab
/dev/xvdh           0      0      0     - /var/opt/gitlab
/dev/xvdh           0      0      0     - /var/cache/salt

Salida de btrfs fi show

Label: none  uuid: 6546c241-e57e-4a3f-bf43-fa933a3b29f9
        Total devices 4 FS bytes used 11.86GiB
        devid    1 size 10.00GiB used 10.00GiB path /dev/xvdh
        devid    2 size 10.00GiB used 9.98GiB path /dev/xvdi
        devid    3 size 10.00GiB used 9.98GiB path /dev/xvdj
        devid    4 size 10.00GiB used 9.98GiB path /dev/xvdk

Salida de btrfs fi df /mnt/durable

Data, RAID10: total=17.95GiB, used=10.12GiB
Data, single: total=8.00MiB, used=0.00
System, RAID10: total=16.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, RAID10: total=2.00GiB, used=1.74GiB
Metadata, single: total=8.00MiB, used=0.00
unknown, single: total=272.00MiB, used=8.39MiB

¿Cuál podría ser la causa de esto? Estoy usando una versión básica de Linux AMI ec2 kernal 4.4.5-15.26.amzn1.x86_64

Actualizar

Ejecutar el comando sugerido a continuación btrfs fi balance start -dusage=5 /mnt/durable me devolvió un error de lo siguiente:

ERROR: error during balancing '/mnt/durable' - No space left on device There may be more info in syslog - try dmesg | tail

Después de eliminar manualmente un montón de archivos más grandes por un total de ~ 1GB, reinicié la máquina y lo intenté nuevamente, asegurándome de que estaba usando sudo y el comando se ejecutó. Luego reinicié mi máquina una vez más por si acaso y parece haber resuelto el problema

Respuesta:

Bienvenido al mundo de BTRFS. Tiene algunas características tentadoras, pero también algunos problemas exasperantes.

En primer lugar, algo de información sobre su configuración, parece que tiene cuatro unidades en un volumen BTRFS "raid 10" (por lo que todos los datos se almacenan dos veces en diferentes discos). Este volumen BTRFS luego se divide en subvolúmenes en diferentes puntos de montaje. Los subvolúmenes comparten un grupo de espacio en disco, pero tienen números de inodo separados y se pueden montar en diferentes lugares.

BTRFS asigna espacio en "fragmentos", un fragmento se asigna a una clase específica de datos o metadatos. Lo que puede suceder (y parece que sucedió en su caso) es que todo el espacio libre se asigne a fragmentos de datos sin dejar espacio para los metadatos.

También parece que (por razones que no entiendo del todo) que los BTRF "se agotan" de espacio de metadatos antes de que el indicador de la proporción de espacio de metadatos utilizado alcance el 100%.

Esto parece ser lo que sucedió en su caso, hay mucho espacio de datos libre pero no hay espacio libre que no se haya asignado a fragmentos y espacio libre insuficiente en los fragmentos de metadatos existentes.

La solución es ejecutar un "reequilibrio". Esto moverá los datos para que algunos fragmentos se puedan devolver al grupo gratuito "global" donde se pueden reasignar como fragmentos de metadatos.

btrfs fi balance start -dusage=5 /mnt/durable

El número después de -dusage establece qué tan agresivo es el reequilibrio, es decir, qué tan cerca de vaciar los bloques deben ser reescritos. Si el saldo dice que reescribió 0 bloques, intente nuevamente con un valor más alto de -dusage .

Si el saldo falla, intentaré reiniciar y / o liberar espacio eliminando archivos.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım