Tengo un pequeño Intel NUC con una unidad de 30 GB. Mi problema es que esta unidad está llena pero no puedo encontrar la causa.
df
reportando lo siguiente
Filesystem 1K-blocks Used Available Use% Mounted on
udev 899412 0 899412 0% /dev
tmpfs 189284 2676 186608 2% /run
/dev/sda2 28414508 27751116 0 100% /
tmpfs 946404 0 946404 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 946404 0 946404 0% /sys/fs/cgroup
/dev/loop0 128 128 0 100% /snap/bare/5
/dev/loop1 56832 56832 0 100% /snap/core18/2128
/dev/loop2 56832 56832 0 100% /snap/core18/2246
tmpfs 946404 0 946404 0% /tmp
/dev/loop3 314880 314880 0 100% /snap/makemkv/381
/dev/loop4 66688 66688 0 100% /snap/gtk-common-themes/1515
/dev/loop5 63360 63360 0 100% /snap/core20/1169
/dev/loop6 63360 63360 0 100% /snap/core20/1081
/dev/loop7 33280 33280 0 100% /snap/snapd/13270
/dev/loop8 317184 317184 0 100% /snap/makemkv/385
/dev/loop9 33280 33280 0 100% /snap/snapd/13640
/dev/loop10 66816 66816 0 100% /snap/gtk-common-themes/1519
/dev/sda1 306584 5356 301228 2% /boot/efi
tmpfs 189280 4 189276 1% /run/user/1000
Al calcular esto, se obtienen alrededor de ~14 GB de espacio en disco utilizado.
Corrersudo lsof | grep REG | grep -v "stat: No such file or directory" | grep -v DEL | awk '{if ($NF=="(deleted)") {x=3;y=1} else {x=2;y=0}; {print $(NF-x) " " $(NF-y) } }' | sort -n -u | numfmt --field=1 --to=iec | tail -10
me da una lista con algunos procesos que importan:
5,5M /usr/lib/php/20190902/fileinfo.so
6,8M /usr/lib/jellyfin/bin/libcoreclr.so
8,0M /var/log/journal/6296b00d07874d0a9533eed0efb81840/user-1000.journal
8,2M /usr/lib/jellyfin/bin/System.Private.Xml.dll
8,3M /usr/lib/locale/locale-archive
8,9M /usr/lib/jellyfin/bin/System.Private.CoreLib.dll
10M /usr/lib/udev/hwdb.bin
24M /snap/snapd/13640/usr/lib/snapd/snapd
27M /usr/lib/x86_64-linux-gnu/libicudata.so.66.1
64M /memfd:pulseaudio
Ejecutar sudo du -sh / --exclude=disks --total
me da un total de 13 GB.
Entonces, básicamente no tengo ideas sobre cómo averiguar dónde faltan ~ 16 GB que el sistema informa que están en algún lugar llenando mi disco.
Y el informe en realidad se comporta como tal, ejecutándose
cd ~/ && touch example && echo "FooBar" > example
-bash: echo: write error: No space left on device
Gracias de antemano y cualquier idea es una buena idea, básicamente tengo un dispositivo que en este momento no se puede utilizar y mis opciones se están agotando (básicamente, una reinstalación limpia/comprar un SSD más grande para un dispositivo que no debería usar más). de 20 gb)
Respuesta1
Algunas posibilidades para intentar encontrar lo que llena su partición "/":
lsof -nP +L1
# debe enumerar todos los archivos que fueron eliminados (desvinculados) pero que aún están abiertos por un proceso y, por lo tanto, aún ocupan la distribución- Vea también esa respuesta:https://unix.stackexchange.com/a/68532/27616que proporciona algunas informaciones adicionales y cosas para probar
- Otra posibilidad: verifique (con
df -ih /
) si no tiene "millones" de archivos pequeños en ese/
sistema de archivos: cada archivo ocupa al menos una "pequeña" cantidad de disco (generalmente porque ocupa al menos 1 inodo, cuyo tamaño varía dependiendo de el tamaño del archivo y el sistema de archivos). Esto puede sumar... si el espacio mínimo en disco ocupado es de 512 bytes, tener 1 millón de archivos de 1 byte cada uno seguirá ocupando 512 millones de bytes en lugar de 1 millón de bytes.df
mostrará el espacio en disco ocupado (se cuenta el espacio de inodo completo), mientras quedu
mostrará los tamaños de archivos agregados (es decir, solo el contenido de esos archivos, no el espacio que ocupan los inodos que contienen este contenido) - Otra posibilidad: podría haber algunos archivos grandes ocultos por un sistema de archivos montado. Es decir, algunos archivos podrían estar "debajo" de un sistema de archivos montado (tal vez coloques una gran cantidad de archivos grandes en el
/tmp
directorio(el que está en el/
sistema de archivos y que luego se usa como punto de montaje para montar el/tmp
sistema de archivos)? Esto podría suceder si coloca cosas allí mientras el/tmp
sistema de archivos no estaba montado. Para verificar esto, puede, en Linux, volver a montar/
(usando un dispositivo de bucle libre) como de solo lectura en algún lugar (por ejemplo: montarlo debajo de un/mnt/readonlyroot/
punto de montaje) y explorarlo usandodu -hs /mnt/readonlyroot
y comparar condu -hxs /
#-x
evita que du descienda a otro sistema de archivos. montado debajo/
, como el/tmp
sistema de archivos, por ejemplo).- comando para montar (por segunda vez)
/
como solo lectura debajo de algún punto de montaje: puedes (desde lo más alto de mi memoria... no puedo verificar eso en Linux en este momento):mkdir -p /mnt/rootreadonly/
para crear el punto de montaje del directorio (que, irónicamente, estará dentro del sistema de archivos "/"...)mount -o loop -o ro /dev/sda2 /mnt/rootreadonly
(para que el sistema de archivos "/" aparezca allí como de solo lectura. Especifico sda2 aquí mientras muestra que su sistema de archivos "/" está en "/dev/sda2" en su pregunta. Alguna otra persona que lea esta respuesta debería verificar primero el resultado paramount
ver de dónde/
viene su sistema de archivos...)
- comando para montar (por segunda vez)