Estoy usando Dirvish en un sistema de servidor Ubuntu para hacer una copia de seguridad de un disco duro en una unidad externa usb 3.0. Hasta hace unos días, todo funcionaba bien, pero ahora cada copia de seguridad falla con "no queda espacio en el dispositivo (28)" y "sistema de archivos lleno". Lamentablemente, no es tan simple: hay> 500 GB libres en el dispositivo.
Detalles:
rsync_error:
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename1>.eDJiD9": No space left on device (28)
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename2>.RHuUAJ": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename3>.9tVK8Z": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename4>.t3ARSV": No space left on device (28)
[... some more files ...]
rsync: connection unexpectedly closed (2712185 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
el registro se ve más o menos como de costumbre hasta que llega:
<SomeFilename1>
<SomeFilename2>
<SomeFilename3>
<SomeFilename4>
<PartOfAFilename>filesystem full
write error, filesystem probably full
broken pipe
RESULTS: warnings = 0, errors = 1
Pero, como se dijo anteriormente, hay mucho espacio en el dispositivo:
df -h
/dev/sdg1 2.7T 2.0T 623G 77% /mnt/backupsys/shd
y también quedan muchos inodes:
df -i
/dev/sdg1 183148544 2810146 180338398 2% /mnt/backupsys/shd
El dispositivo está montado como rw:
mount
/dev/sdg1 on /mnt/backupsys/shd type ext3 (rw)
El proceso se ejecuta como root.
Estaba a punto de decir que no he cambiado nada, pero eso no es del todo cierto: he activado acl para la unidad que estoy respaldando:
/dev/md0 on /mnt/md0 type ext4 (rw,acl)
¿Podría ser el problema? Si es así, ¿cómo? root aún tiene acceso completo a los archivos.
EDITAR:
Acabo de comprobar los directorios temporales:
- / tmp contiene solo una carpeta .webmin que está vacía
- / var / tmp está vacío
El sistema de archivos donde residen estos directorios tiene mucho espacio libre e inodos:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 289G 55G 220G 20% /
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 19202048 167644 19034404 1% /
EDIT2:
Los directorios son bastante grandes, pero no> 2 GB. El que falla la copia de seguridad ni siquiera es uno de los más grandes, contiene 7530 archivos.
EDITAR3:
Una información que no consideré relevante al publicar esta pregunta:
El día antes de que las copias de seguridad comenzaran a fallar, activé acls en los sistemas de archivos de los que se realizó una copia de seguridad. Supongo ahora que esto provocó que Dirvish (o rsync) pensara que todos los archivos habían cambiado, por lo que la lista de archivos que se iban a copiar en lugar de vincularse era muy grande. Esto podría significar que algunos tampones eran demasiado pequeños.
Hoy una copia de seguridad completa en un disco vacío funcionó a la perfección. Probaré una copia de seguridad incremental a continuación. Esto mostrará si la activación de acls fue la causa del problema.
fuente
Respuestas:
Mi sospecha (ver EDIT3) aparentemente estaba en lo cierto: agregar soporte de acl al sistema de archivos hizo que rsync / dirvish pensara que todos los archivos habían cambiado. Entonces, en lugar de hacer una copia de seguridad incremental y simplemente crear enlaces duros a los archivos ya existentes, trató de crear una copia de seguridad completa que, por supuesto, falló porque el disco duro no tenía suficiente espacio para eso.
Entonces el mensaje de error era realmente correcto.
Después de comenzar nuevamente con un disco de copia de seguridad vacío, las copias de seguridad incrementales funcionaron como antes.
fuente
Mirar el 2% de los inodos restantes me hizo pensar en las reservas de raíz que impone el sistema de archivos EXT. Es posible que desee ver estos:
Intentaría .tar.gz algunas de las copias de seguridad más antiguas con la esperanza de que reduciría la cantidad de inodos en uso.
fuente
df
salida es el porcentaje de Inodes utilizados, por lo que se utiliza el 2% de los Inodes y queda el 98%.Veo que dummzeuch encuentra una solución a su problema, pero en realidad hay un caso más que encontré donde el disco puede tener suficientes inodes / espacio libre y aún muestra "no queda espacio en el dispositivo" al intentar transferir ciertos directorios.
Esto es causado por colisiones hash en dispositivos de bloque formateados con el sistema de archivos ext4 donde la indexación de directorios también está habilitada, especialmente cuando un directorio único contiene más de 100k archivos y el nombre de los archivos se genera a partir del mismo algoritmo (archivos de caché, nombres de archivo md5sum, etc. .)
La solución es probar con otro algoritmo de indexación de directorio:
o deshabilitar completamente la indexación de directorios para ese dispositivo de bloque (puede afectar el rendimiento)
Otra solución es ver qué está llenando el directorio con dichos archivos y arreglar el software.
La posible solución es dividir el contenido de la carpeta con un gran volumen de archivos en múltiples subcarpetas separadas.
Axel Wagner presenta la descripción completa del problema aquí
http://blog.merovius.de/2013/10/20/ext4-mysterious-no-space-left-on.html
Salud.
fuente
Hay un límite de tamaño de 2 GB en el directorio en sí, es decir, si tiene tantos archivos que el tamaño del directorio es> 2 GB (NO el tamaño de los archivos en el directorio), tendrá un problema. Dicho esto, con solo 2.8M inodos utilizados, eso no debería ser un problema. Suele ocurrir alrededor de 15 millones de inodes.
Entonces, esto puede no ser de mucha ayuda, pero ¿prueba ext4 en su dispositivo de respaldo?
fuente
find /mnt/backupsys/shd -type d -exec ls -ld {} \;
para ver el tamaño real de los directorios.Aumente su límite de observadores de Inotify en sysctl:
Y reiniciar, o hacer la
sysctl -w
versión de eso también.Eso generalmente lo hará. Algo tiene demasiados archivos abiertos en el núcleo, y el error es totalmente engañoso. Dropbox es un ejemplo clásico de esto.
fuente
Te sugiero que verifiques un par de otras cosas:
fuente
Acabo de encontrar este tema mientras buscaba una solución a mi problema.
De hecho, hay al menos otra razón para ENOSPC. Y también lo confundo con rsync, mientras copio de un sistema de archivos ZFS a uno EXT4:
En este caso:
man 7 xattr
explica:En mi caso, significa que tengo que formatear todo el sistema de archivos. :-(
fuente