갑자기 사용 가능한 디스크 공간이 모두 /
사라졌습니다.
디스크에 공간을 확보하면(예를 들어 ~50GB의 항목을 삭제하여) 몇 분 후에 사용 가능한 디스크 공간이 0으로 돌아갑니다(에 따라 df
).
분명히 일부 프로세스는 빠른 속도로 디스크 공간을 차지하고 있지만 그것이 무엇인지 알 수 없습니다.
하지만 한 가지 확실한 것은 디스크에 10GB보다 큰 파일이 없고 1GB보다 큰 파일은 모두 현재보다 훨씬 오래되었기 때문에 그것이 무엇이든 많은 작은 파일을 생성해야 한다는 것입니다.
디스크 공간을 차지하는 요소를 어떻게 찾을 수 있나요?
FWIW , df
.du
du
예를 들어 아래에는 60년대에서 찍은 여러 "스냅샷"이 나와 있습니다 df
. 따로. (디스크에 공간을 만든 후에 이 작업을 수행했습니다.) du
의 출력이 ( 에서 495G
) 안정적으로 유지되지만 df
사용 가능한 공간의 양이 꾸준히 줄어드는 것을 확인하세요. (나는 주어진 추천을 따랐다.여기. IOW가 을 /mnt/root
가리키고 있습니다 /
.)
# while true; do du -sh /mnt/root && df -h /mnt/root; sleep 60; done
495G /mnt/root
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 880G 824G 12G 99% /mnt/root
495G /mnt/root
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 880G 825G 11G 99% /mnt/root
495G /mnt/root
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 880G 827G 8.9G 99% /mnt/root
495G /mnt/root
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 880G 827G 8.1G 100% /mnt/root
495G /mnt/root
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 880G 828G 7.5G 100% /mnt/root
답변1
삭제된 파일을 처리하고 있으므로 du
사용된 공간을 등록하지 않지만 df
등록합니다.
삭제된 파일은 소유자 프로세스가 중지된 후에만 사라집니다. 그런 일이 발생하지 않는 동안 계속 사용됩니다.
따라서 범인 프로세스를 찾으려면 다음을 수행하는 것이 좋습니다.
sudo lsof -nP | grep '(deleted)'
그런 다음 프로세스를 종료합니다.
sudo kill -9 $(lsof | grep deleted | cut -d " " -f4)
답변2
당신은 사용할 수 있습니다iotop
가장 많은 디스크 쓰기 작업을 수행하는 프로세스를 확인합니다.
예:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]