디스크 공간 사용량이 df & du로 누적되지 않습니다


13

디스크 공간을 확보하려고합니다.을 수행하면 df -h/ dev / mapper / vg00-var라는 파일 시스템이 있으며 4G, 3.8G, 205M이 남았습니다.

그것은 내 / var 디렉토리에 해당합니다.

/ var로 내려 가서 수행 du -kscxh *하면 총계는 2.1G입니다.

2.1G + 200M free = 2.3G ... 그래서 제 질문은 나머지 1.7G는 어디에 있습니까?


무엇합니까 du -shx /var말은?
Kyle Smith

1
열린 파일 핸들이있는 파일을 삭제했을 수도 있습니다. OS는 핸들이 닫힐 때까지 공간을 해제하지 않지만 "du"로 표시되지 않습니다. "lsof / var | grep deleted"(또는 이와 유사한 것)를 실행하여 확인할 수 있습니다. 로그가 회전하지만 로깅 프로세스가 올바른 방식으로 HUP되지 않은 경우 실제로 / var / log와 같은 놀라운 결과는 아닙니다.
cjc

나는 미쳐 간 로그 파일을 삭제하고 있었지만 마치 회전하지 않은 것처럼 보였지만 어쨌든 친구 '재부팅'에서 한 단어 이메일을 보았습니다. 내 디스크 공간을 다시 찾았습니다 .... 현재 재난을 피했습니다.
Codecraft

@Codecraft 예, 재부팅하면 열린 파일 핸들이 완전히 지워 지지만 망치로 달걀을 깨는 것과 같습니다.
cjc

내가 노른자위를 얻는 한 @cjc ...! 계란을 망치지 않고 열린 파일 핸들을 지우는 방법에 대한 제안 사항이 있습니까?
Codecraft

답변:


20

삭제 된 큰 로그 파일, 데이터베이스 파일 또는 이와 유사한 파일을 삭제 한 파일을 보유한 프로세스를 기다리는 일부 로그 파일이 삭제되었을 수 있습니다.

Linux에서 파일 삭제는 단순히 파일의 링크를 해제합니다. 실제로 해당 파일에 연결된 파일 핸들이 없으면 삭제됩니다. 따라서 rm을 사용하여 수동으로 삭제하는 2GB 로그 파일이 있으면 syslog 데몬을 다시 시작하거나 HUP신호를 보낼 때까지 디스크 공간이 확보되지 않습니다 .

시험

lsof -n | grep -i deleted

삭제 된 좀비 파일이 여전히 떠 다니는지 확인하십시오.


명령을 실행하지 못했지만 방금 말한 것처럼 보였습니다-수동으로 일부 로그를 죽였고 결국 재부팅으로 인해 디스크 공간이 다시 계산되어 올바르게 표시되었습니다.
Codecraft

/ var / log / apache / 디렉토리를 채우는 Apache 로그를 사용하여 우리에게 도움이되었습니다. 따라서 전체 서버 나 syslog를 다시 시작하지 않아도 위 명령의 출력에서 ​​찾을 수있는 서비스 만 있습니다.
Yvan

그냥 이걸 가지고 있었어 우리는 tomcat6 catalina.out을 logrotate에 잡히지 않았습니다 .4Gb에 도달했을 때 그것을 삭제하고 logrotate를 고쳤습니다. 몇 주 후에 우리는 왜 4Gb가 돌아 오지 않았는지 궁금해했습니다. 이 lsof명령은 삭제 대기중인 많은 바람둥이 파일이 있음을 보여주었습니다. 바람둥이를 다시 시작하면 갑자기 많은 양의 공간이 돌아옵니다!
Nick

마침내 나를 위해 일한 대답. PostgreSQL이 충돌하여 1TiB 디스크에서 400GiB (!!!)의 연결되지 않은 파일에 대한 열린 연결을 유지했습니다. Postgres를 다시 시작하면 문제가 해결되었습니다.
sudo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.