Tengo un disco SCSI en un servidor (hardware Raid 1), 32G, ext3 fileytem. df
me dice que el disco está 100% lleno. Si elimino 1G, esto se muestra correctamente.
Sin embargo, si ejecuto a du -h -x /
, du
me dice que solo se usan 12G (lo uso -x
debido a algunas monturas Samba).
Entonces, mi pregunta no es sobre diferencias sutiles entre los comandos du y df, sino sobre cómo puedo averiguar qué causa esta gran diferencia.
Reinicié la máquina por un fsck que no tenía errores. ¿Debo correr badblocks
? lsof
me muestra que no hay archivos eliminados abiertos, lost+found
está vacío y no hay una declaración obvia de advertencia / error / falla en el archivo de mensajes.
No dude en solicitar más detalles de la configuración.
linux
ext3
disk-space-utilization
scsi
initall
fuente
fuente
Respuestas:
Verifique los archivos ubicados debajo de los puntos de montaje. Con frecuencia, si monta un directorio (digamos un sambafs) en un sistema de archivos que ya tenía un archivo o directorios, pierde la capacidad de ver esos archivos, pero aún así están consumiendo espacio en el disco subyacente. He tenido copias de archivos mientras estaba en modo de usuario único volcado de archivos en directorios que no podía ver, excepto en modo de usuario único (debido a que otros sistemas de directorios se montan encima de ellos).
fuente
Acabo de tropezar con esta página al intentar localizar un problema en un servidor local.
En mi caso, el
df -h
ydu -sh
no coinciden en un 50% del tamaño del disco duro.Esto fue causado por apache (httpd) que mantenía grandes archivos de registro en la memoria que habían sido eliminados del disco.
Esto se rastreó ejecutando
lsof | grep "/var" | grep deleted
dónde/var
estaba la partición que necesitaba limpiar.La salida mostró líneas como esta:
httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)
La situación se resolvió reiniciando apache (
service httpd restart
) y eliminó 2 gb de espacio en disco, permitiendo que se borren los bloqueos de los archivos eliminados.fuente
kill -9 'pid'
que liberar las cerraduras. por ejemplo: para su httpd lo hubiera sidokill -9 32617
.lsof
comosudo
o no todos los descriptores de archivos abiertos se mostrarásudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd)
.httpd
espacio de reinicio no se libera. Cuando corrí/etc/init.d/rsyslog restart
funcionó: Dlsof -a +L1 /var
, donde-a
significa Y todas las condiciones (el valor predeterminado es OR),+L1
significa enumerar solo los archivos con un recuento de enlaces inferior a 1 (es decir, archivos eliminados con descriptores de archivo abiertos) y/var
restringir a los archivos bajo ese punto de montajeEstoy de acuerdo con la respuesta de OldTroll como la causa más probable de su espacio "perdido".
En Linux, puede volver a montar fácilmente toda la partición raíz (o cualquier otra partición) en otro lugar de su sistema de archivos, por ejemplo, / mnt, simplemente emita un
entonces puedes hacer un
y ver qué usa tu espacio.
PD: lo siento por agregar una nueva respuesta y no un comentario, pero necesitaba un poco de formato para que esta publicación sea legible.
fuente
/var/lib/docker/aufs/diff/
mount -o bind / /mnt
me dio una información adicional que estaba buscando. ¡Gracias!Mira lo que
df -i
dice. Puede ser que se haya quedado sin inodos, lo que podría suceder si hay una gran cantidad de archivos pequeños en ese sistema de archivos, que utiliza todos los inodos disponibles sin consumir todo el espacio disponible.fuente
du -s
el mismo subárbol, obtendrá una buena idea si ese es el caso aquí.En mi caso, esto tenía que ver con grandes archivos borrados. Fue bastante doloroso de resolver antes de encontrar esta página, que me puso en el camino correcto.
Finalmente resolví el problema mediante el uso
lsof | grep deleted
, que me mostró qué programa contenía dos archivos de registro muy grandes (un total de 5 GB de mi partición raíz de 8 GB disponible).fuente
Los archivos abiertos por un programa en realidad no desaparecen (dejan de consumir espacio en disco) cuando los elimina, desaparecen cuando el programa los cierra. Un programa puede tener un archivo temporal enorme que usted (y du) no puede ver. Si es un programa zombie, es posible que deba reiniciar para borrar esos archivos.
fuente
kill -9 'pid'
para liberar las cerraduras y recuperar el espacio en disco.Pruebe esto para ver si un proceso inactivo / bloqueado está bloqueado mientras sigue escribiendo en el disco: lsof | grep "/ mnt"
Luego intente eliminar cualquier PID que esté atascado (especialmente busque líneas que terminen en "(eliminado"))
fuente
¡Este es el método más fácil que he encontrado hasta la fecha para encontrar archivos grandes!
Aquí hay un ejemplo si su montaje raíz está lleno / (montaje / raíz) Ejemplo:
cd / (para que estés en la raíz)
ls | xargs du -hs
Salida de ejemplo:
entonces notarías que la tienda es grande, haz un cd / store
y corre de nuevo
ls | xargs du -hs
en este caso el directorio vms es el espacio hog.
fuente
baobab
? (ver marzocca.net/linux/baobab/baobab-getting-started.html )ls
+xargs
parece excesivo,du -sh /*
funciona bien soloPara mí, necesitaba ejecutar
sudo du
ya que había una gran cantidad de archivos acoplables debajo de los/var/lib/docker
cuales un usuario que no es sudo no tiene permiso para leer.fuente
Una posibilidad más a tener en cuenta: está casi garantizado que verá una gran discrepancia si está usando Docker y ejecuta df / du dentro de un contenedor que está utilizando montajes de volumen. En el caso de un directorio montado en un volumen en el host docker, df informará los totales de df del HOST. Esto es obvio si lo piensa, pero cuando reciba un informe de un "contenedor fuera de control que llena el disco", asegúrese de verificar el consumo del espacio de archivos del contenedor con algo como esto
du -hs <dir>
.fuente
Así que también tuve este problema en Centos 7 y encontré una solución después de probar un montón de cosas como bleachbit y limpieza / usr y / var a pesar de que solo mostraban alrededor de 7G cada una. Todavía mostraba 50G de 50G utilizados en la partición raíz, pero solo mostraba 9G de uso de archivos. Ejecuté un cd ubuntu en vivo y desmonté la partición 50G ofensiva, abrí la terminal y ejecuté xfs_check y xfs_repair en la partición. Luego volví a montar la partición y mi directorio perdido + encontrado se expandió a 40G. Clasifiqué el perdido + encontrado por tamaño y encontré un archivo de registro de texto de 38G para steam que eventualmente solo repitió un error de mp3. Eliminé el archivo grande y ahora tengo espacio y el uso de mis discos está de acuerdo con el tamaño de mi partición raíz. Todavía me gustaría saber cómo hacer que el registro de vapor no vuelva a crecer tanto.
fuente
xfs_fsr
solucionó este problema para nosotrossi el disco montado es una carpeta compartida en una máquina con Windows, entonces parece que df mostrará el tamaño y el uso del disco de todo el disco de Windows, pero du mostrará solo la parte del disco a la que tiene acceso también. (y está montado). en este caso, el problema debe solucionarse en la máquina con Windows.
fuente
Algo similar nos sucedió en producción, el uso del disco fue del 98%. Hizo la siguiente investigación:
a)
df -i
para verificar el uso del inodo, el uso del inodo fue del 6%, por lo que no hay archivos mucho más pequeñosb) Montaje
root
y comprobación de archivos ocultos. No se pudieron presentar archivos adicionales .du
Los resultados fueron los mismos que antes del montaje.c) Finalmente, se verificaron los
nginx
registros. Se configuró para escribir en el disco, pero un desarrollador eliminó el archivo de registro directamente, longinx
que provocó que todos los registros se mantuvieran en la memoria. Como el archivo/var/log/nginx/access.log
se eliminó del disco,rm
no se pudo ver,du
pero se accedió al archivonginx
y, por lo tanto, todavía se mantuvo abiertofuente
Tuve el mismo problema que se menciona en este tema, pero en un VPS. Así que probé todo lo que se describe en este tema pero sin éxito. La solución fue un contacto de soporte con nuestro proveedor de VPS que realizó un nuevo cálculo de cuotas y corrigió la diferencia de espacio de
df -h
ydu-sh /
.fuente
Hoy me encontré con este problema en un cuadro de FreeBSD. El problema era que era un artefacto de
vi
(novim
, no estoy seguro sivim
crearía este problema). El archivo consumía espacio pero no se había escrito completamente en el disco.Puede verificar eso con:
Esto examina todos los archivos abiertos y los ordena (numéricamente
-n
) en la octava columna (clave,-k8
), que muestra los últimos diez elementos.En mi caso, la entrada final (más grande) se veía así:
Esto significaba que el proceso (PID) 12345 consumía 1.46G (la octava columna dividida por 1024³) de disco a pesar de la falta de
du
notarlo.vi
es horrible al ver archivos extremadamente grandes; incluso 100 MB es grande para ello. 1.5G (o por grande que sea ese archivo) es ridículo.La solución era
sudo kill -HUP 12345
(si eso no funcionara,sudo kill 12345
y si eso también falla, lo temidokill -9
entraría en juego).Evite los editores de texto en archivos grandes. Ejemplos de soluciones para el desnatado rápido:
Suponiendo longitudes de línea razonables:
{ head -n1000 big.log; tail -n1000 big.log } |vim -R -
wc -l big.log |awk -v n=2000 'NR==FNR{L=$1;next}FNR%int(L/n)==1' - big.log |vim -R -
Asumiendo líneas irrazonablemente grandes:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Estos se usan
vim -R
en lugar deview
porquevim
casi siempre es mejor ... cuando está instalado. Siéntase libre de colocarlos en su lugarview
o en suvi -R
lugar.Si va a abrir un archivo tan grande para editar en realidad, considerar
sed
oawk
o algún otro enfoque programático.fuente
compruebe si su servidor tiene instalado el agente ossec. O algún proceso está utilizando los archivos de registro eliminados. En mi hace un tiempo era agente ossec.
fuente
compruebe el / lost + found, tenía un sistema (centos 7) y algunos de los archivos en / lost + found ocuparon todo el espacio.
fuente