¿Hay alguna manera de decirle al núcleo que devuelva el espacio libre en el disco ahora? ¿Como escribir a algo en / proc /? Usando Ubuntu 11.10 con ext4.
Este es probablemente un tema antiguo y muy repetido. Después de presionar 0 espacio, solo me di cuenta de que mi editor no podía guardar los archivos de código fuente que he abierto, que para mi horror ahora tienen un tamaño de 0 bytes en la lista de carpetas, fui a eliminarlo.
Eliminé cientos de MB de archivos grandes tanto del usuario como de la raíz, y también hice algunos enlaces permanentes.
Justo antes de hacerlo, apt-get clean
había más de 900 MB en / var / cache / apt / archives, ahora solo hay 108 KB:
# du
108 /var/cache/apt/archives
Una hora después todavía no hay espacio libre y no puedo guardar mis preciosos archivos abiertos en el editor, pero observe la disparidad a continuación:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
¿Alguna sugerencia? Apagué algunos servicios / procesos, pero no estoy seguro de cómo verificar quién podría estar comiendo activamente el espacio en disco.
Más información
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
Respuestas:
Verifique
lsof
si hay archivos abiertos. El espacio no se liberará hasta que estén cerrados.le dirá qué archivos eliminados aún se mantienen abiertos.
fuente
mysqld
bloqueos en / tmp, pero muchosapport-gt
usos de archivos extintos en / var / lib / apt / lists / partial / que aparentemente se han ido acumulando. Entonces podríakillall apport-gt
pero lo investigaré primero.lsof +L1
(seleccione archivos abiertos que se han desvinculado).Use
lsof
para encontrar el archivo eliminado, pero abierto, que todavía consume espacio:Encuentre la entrada en
/proc/<pid>/fd/
ese cooresponds al identificador de archivo:Ahora, justo
cat /dev/null
en el fd:Tenga en cuenta que el inodo todavía está abierto, pero ahora es de longitud 0
fuente
cat
truncar. En Bourne shell, simplemente> /proc/3446/fd/128
servirá.df
no mostrará el espacio reservado pararoot
(incluso cuando se ejecuta comoroot
):Cómo cambiar el "porcentaje de bloque reservado"
Reduce el espacio reservado al 4%
# tune2fs -m4 /dev/sda4
df -h
ahora mostró 45 millones gratis.Ponlo de nuevo al 5%
# tune2fs -m5 /dev/sda4
fuente
df
muestra el espacio utilizable por el usuario normal. Como apt se ejecuta como root, el espacio reservado solo es útil para proteger contra los rellenos causados por usuarios no root (= usuarios normales y servicios que tienen su propio usuario).mkfs
estos días debe reservar por ejemplo. 5% o 300 MB, lo que sea menor . ¡Simplemente reajuste algunos de mis servidores al 2% y liberé los GB de nuevo!En Ubuntu, si eliminó archivos usando su papelera, es muy probable que sus archivos no se eliminen por completo.
Incluso después de vaciar la papelera, sus archivos permanecerán
~/.local/share/Trash/expunged
hasta después de un reinicio y tal vez incluso más tiempo.No he encontrado una buena razón para esto, pero si me quedo sin espacio, siempre
rm
elimino manualmente los archivos de basura eliminados.fuente
Explicación: Salida de
Grep
lsof
para extraer solo archivos eliminados. Sed extrae la identificación del proceso y la identificación del descriptor de archivo de cada línea, y crea una cadena en formato{pid}/fd/{fid}
. Mientras realiza un bucle y no genera nada en cada archivo, configurándolos como vacíos.fuente
Me pregunto si
sync
es de alguna ayuda aquí, pero no debería serlo, como IIRC en la mayoría de los sistemas (¿"muchos"?), Los sistemas de archivos se sincronizan cada 30 s.Verificaría el registro del kernel (así
dmesg
) para ver si algo desagradable está sucediendo y lo ejecutarélsof
para ver si algún archivo grande y eliminado aún está abierto (en realidad, creo que los archivos eliminados se marcarán así en lalsof
salida).Hay dos razones (una de ellas señalada en la pregunta que vincula) que pueden hacer que los archivos eliminados no liberen espacio.
unlink()
editó un archivo con más de un enlace)Pero no sé de una razón específica por la que eso podría suceder con tantos archivos ...
fuente
sync
Nunca ayudó. En cuanto a los registros, es un sistema Ubuntu, por lo que es bastante defectuoso, por lo que sí, suelen ser ruidosos.apport
se ha implementado a menudo porque cada actualización de apt-get se bloquea cada noche, aunque / var / crash tiene solo 77 MB. También noté queatd
ha inundado / var / log / syslog con líneas repetidas, comoatd[8892]: File a0015c0152ab76 is in wrong format - aborting
probablemente porque los pocos archivos en / var / spool / cron / atspool eran todos de tamaño 0, por lo que el problema era circular, por supuestoCentOS 6.3 también hace lo que realmente no se vaciando-bote de basura cuando-vacias-bote de basura. No pude encontrar una manera de recuperar el espacio hasta que simplemente corrí
rm -rf ~/.local/share/Trash/expunged/
. Causó mucho rascarse la cabeza.fuente