30GB 드라이브를 갖춘 작은 Intel NUC가 있습니다. 내 문제는 드라이브가 꽉 찼는데 이유를 찾을 수 없다는 것입니다.
df
다음을 신고하세요
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
이는 약 14GB의 사용된 디스크 공간에 해당합니다.
달리기sudo 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
나는 몇 가지 중요한 프로세스가 포함된 목록을 받았습니다.
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
실행 후 sudo du -sh / --exclude=disks --total
총 13GB의 공간이 생겼습니다 .
따라서 기본적으로 시스템이 내 드라이브를 채우는 어딘가에서 누락된 것으로 보고하는 ~16GB를 파악하는 방법을 모르겠습니다.
보고서가 실제로 실행되는 방식입니다.
cd ~/ && touch example && echo "FooBar" > example
-bash: echo: write error: No space left on device
미리 감사드리며 어떤 아이디어라도 좋은 생각이 될 것입니다. 기본적으로 현재 작동하지 않는 장치가 있고 옵션이 부족합니다(기본적으로 사용해서는 안 되는 장치에 대해 완전히 다시 설치하거나 추가 구매). 더 이상 20GB 이상의 대용량 SSD)
답변1
"/" 파티션을 채우는 것을 찾으려고 시도할 수 있는 몇 가지 가능성은 다음과 같습니다.
lsof -nP +L1
# 삭제(링크 해제)되었지만 여전히 프로세스에 의해 열려 있어 여전히 dist를 차지하는 모든 파일을 나열해야 합니다.- 이 답변도 참조하십시오.https://unix.stackexchange.com/a/68532/27616몇 가지 추가 정보와 시도해 볼 사항을 제공합니다.
- 또 다른 가능성:
df -ih /
이 파일 시스템에 "수백만" 개의 작은 파일이 없는지 확인(사용)/
하십시오. 각 파일은 최소한 "소량"의 디스크를 차지합니다(보통 1개 이상의 inode를 차지하기 때문입니다. 파일 크기와 파일 시스템에 따라 다름). 이것은 합산될 수 있습니다... 점유된 최소 디스크 공간이 512바이트인 경우 각각 1바이트의 파일 100만 개가 있으면 여전히 100만 바이트 대신 5억 1200만 바이트를 차지하게 됩니다.df
점유된 디스크 공간이 표시되고(전체 inode 공간 계산)du
추가된 파일 크기가 표시됩니다(즉, 해당 파일의 내용만 표시되고 이 콘텐츠를 포함하는 inode가 차지하는 공간은 표시되지 않음). - 또 다른 가능성: 마운트된 파일 시스템이 일부 대용량 파일을 숨기고 있을 수 있습니다. 즉, 일부 파일은 마운트된 파일 시스템 "아래"에 있을 수 있습니다.
/tmp
목차/
(파일 시스템을 마운트하기 위한 마운트 지점으로 사용되는 파일 시스템의 것/tmp
)? 마운트되지 않은 파일 시스템에 항목을 넣으면/tmp
이런 일이 발생할 수 있습니다 . 이를 확인하려면/
Linux에서 읽기 전용으로 다시 마운트(자유 사이클 장치 사용)한 다음(예: 마운트 지점 아래에 마운트 ) du drop을 사용하여 아래에 마운트된 다른 파일 시스템 (예: 파일 시스템) 으로/mnt/readonlyroot/
검색할 수 있습니다du -hs /mnt/readonlyroot
내용을 .du -hxs /
-x
/
/tmp
- 특정 마운트 지점에서 읽기 전용으로 마운트하는 명령(두 번째)
/
: 다음을 수행할 수 있습니다(제 기억으로는...지금은 Linux에서 확인할 수 없습니다).mkdir -p /mnt/rootreadonly/
디렉토리 마운트 지점 생성(아이러니하게도 "/" 파일 시스템 내부에 위치하게 됩니다...)mount -o loop -o ro /dev/sda2 /mnt/rootreadonly
("/" 파일 시스템을 읽기 전용으로 표시하려면 질문에 "/" 파일 시스템이 "/dev/sda2"에 있음을 표시했기 때문에 여기에 sda2를 지정하고 있습니다. 이 답변을 읽는 다른 사람들은 먼저 출력을 확인해야 합니다. 파일 시스템의 출처는mount
...)/
- 특정 마운트 지점에서 읽기 전용으로 마운트하는 명령(두 번째)