운영체제는 데비안입니다. 출력 df -h /
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 97G 0 100% /
lsof
/var/log/syslog
파일 핸들이 열려 있지만 /var/log/syslog.7.gz
.
/var/log/syslog.7.gz
그래서 수십 메가바이트의 디스크 공간을 확보하기 위해 삭제했습니다 .
다시 출력 df -h /
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 97G 0 100% /
/var/log의 일부 파일에서 이것을 시도했습니다. 먼저 lsof를 사용하여 파일 핸들이 열려 있지 않은지 확인한 다음 제거를 시도하고 즉시 df를 확인했지만 avail은 여전히 0이었습니다. 다양한 크기의 다양한 파일을 사용하여 이 작업을 수행하세요. 그러나 -h 없이 df를 실행하면 "사용된" 공간이 줄어드는 것을 볼 수 있으므로 최소한 그게 전부입니다.
여기서 무슨 일이 일어나고 있는 걸까요? 다시 시작하지 않고 "사용 가능한" 양을 늘리려면 어떻게 해야 합니까?
답변1
몇 가지 문제:
-h
숫자가 기가바이트 단위인 경우 "수십 메가바이트"의 절약 효과는 사람이 읽을 수 있는 출력에 표시되지 않습니다.- 삭제했지만 다른 프로세스에서 아직 열려 있는 파일이 여전히 존재합니다. 이는 프로그램에서 아직 열려 있는 로그 파일을 삭제하려고 하면 발생할 수 있습니다.
root
대부분의 Linux 파일 시스템에는 사용자(및 대부분의 데몬) 만 채울 수 있는 "예약된" 공간이 있습니다 . 해방되더라도일부공간이 부족하면 일반 사용자는 여전히 파티션에 쓸 수 없습니다. 비슷한 방법을 사용하여tune2fs
예약된 금액을 확인할 수 있습니다.
답변2
df-h
귀하의 경우 표시된 데이터는 Gb 단위입니다. 삭제된 여러 Mb 파일은 여기에 표시되지 않습니다.
말씀하신 대로 그렇지 않으면 -h
사용된 공간이 줄어들게 됩니다. 그래서 공간을 되찾고 있는 것입니다. 그것만으로는 충분하지 않습니다.
삭제되었지만 아직 사용 중인 대용량 파일을 찾고( lsof | grep deleted
여기서 도움을 받을 수 있음) 프로세스를 다시 시작하여 대용량 파일을 열어야 합니다.
대용량 파일도 찾아야 합니다.할 수 있는예를 들어 find / -xdev -size +500M -ls
500Mb보다 큰 루트 파티션의 모든 파일이 검색됩니다. 100Gb 파일 시스템에서는 시간이 좀 걸릴 수 있지만 낭비되는 대용량 파일을 찾는 좋은 방법입니다!
시도해 볼 수 있는 몇 가지 단축키가 있습니다. 예를 들어 를 검색하면 /tmp
에서 /var
많은 내용을 볼 수 있으며 /var
, 특히 패키지를 다운로드하여 apt
삭제할 수 있으므로 du -hs /var/* | sort -h
때로는 유용합니다.