호스트를 재부팅하지 않고 디스크 여유 크기 업데이트


23

LHEL2와 함께 RHEL4를 사용합니다. GB보다 큰 파일을 제거한 후에도 df명령을 사용할 때 파티션 크기가 업데이트되지 않습니다 .

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

그러나 du를 사용하여 확인하면 적절한 크기가 표시됩니다.

-bash-3.00$ sudo du -sh /var/
 179M   /var/

df 출력은 / var 파티션이 3.6Gb 사용됨을 표시하지만 du는 단지 179Mb임을 나타냅니다.

이제 문제는 sync 또는 partprobe가 정보를 업데이트하지 않는다는 것입니다. 그러나 반드시 호스트를 재부팅하면 문제가 해결됩니다. 그러나 이것은 프로덕션 서버이므로 재부팅 할 수 없습니다. 호스트를 재부팅하지 않고 디스크 정보를 수동으로 업데이트 할 수있는 방법이 있습니까?


1
삭제 된 파일 (예 : 삭제 된 파일을 보유하고있는 프로세스)을 열었을 것입니다. 알고 싶은 lsof것을 시도하십시오 . Used / avail은 파티션 테이블에 저장되지 않으며 partprobe (또는 모든 유형의 파티션 다시 읽기)는 전혀 도움이되지 않습니다.
Mat

답변:


28

파일이 제거 / 삭제 / 링크 해제 될 때 프로세스에 의해 파일이 계속 열려 있으면 파일의 데이터가 아닌 파일의 디렉토리 항목 만 삭제됩니다. 파일이 모든 프로세스에 의해 완전히 닫히면 데이터는 사용 가능한 공간 풀로 리턴됩니다. 이 방법으로 익명의 파일을 가질 수 있기 때문에 기능입니다.

파일 시스템에 열려있는 삭제 된 파일이 있는지 확인하려면 /mount/point마운트 지점 ( /var있는 경우) 인 다음 명령 중 하나를 실행 하십시오.

lsof +L1 /mount/point

링크가 열려 있지 않은 열린 파일에 대한기사는 이에 대해 더 자세히 설명합니다.


2
로그를 삭제했지만 df서버 프로세스를 다시 시작할 때까지 사용 가능한 공간을 표시하지 않았습니다. 감사!
fet

삭제 된 파일을 표시하는 'lsof + L1'로 lsof를 호출하는 것이 좋습니다. 편집 제안 제작
누누 페레이라

그럼 어떻게 닫을까요?
faressoft
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.