최근 FreeBSD 서버의 드라이브에 디스크 공간이 부족했습니다. 문제를 일으키는 파일을 잘라 냈지만 df
을 실행할 때 변경 사항이 반영되지 않습니다. 파티션에 du -d0
을 실행하면 올바른 값이 표시됩니다. 이 정보를 강제 업데이트 할 수있는 방법이 있습니까? 여기서 발생하는 결과가 다른 이유는 무엇입니까?FreeBSD에서 업데이트 된 정보를 보여주기 위해`df`를 얻으십시오.
답변
이것은 아마도 에 파일을 자른 것 같습니다. du 및 df은 this post on unix.com explains과 다른 점을보고합니다. 그냥 공간이 사용되지 않는다고해서 그것이 반드시 자유라는 것을 의미하는 것은 아닙니다. ...
df --sync가 작동합니까?
BSD에서 디렉토리 엔트리는 기본 파일 데이터 (inode)에 대한 많은 참조 중 하나 일뿐입니다. rm (1) 명령으로 파일을 삭제하면 참조 횟수 만 줄어 듭니다. 참조 횟수가 여전히 양수인 경우 (예 : 파일에 심볼릭 링크로 인해 다른 디렉토리 항목이있는 경우) 기본 파일 데이터가 삭제되지 않습니다.
최신 BSD 사용자는 파일을 열어 놓은 프로그램이 참조를 가지고 있음을 종종 깨닫지 못합니다. 이는 프로세스가 파일을 사용하는 동안 기본 파일 데이터가 사라지는 것을 방지합니다. 참조 카운트가 0이되면 프로세스가 파일을 닫으면 파일 공간이 사용 가능으로 표시됩니다. 이 구성표는 일부 지정되지 않은 프로그램이 여전히 열려 있기 때문에 파일을 삭제할 수없는 Microsoft Windows 유형 문제를 피하기 위해 사용됩니다. 백그라운드 프로세스가 할당 된 상태로 유지됩니다/tmp를/고양이 테스트에서 사용하는 파일 공간을 종료하고 때까지
이를 관찰하는 쉬운 방법은 다음과
cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test
을하는 것입니다 사용할 수없는 안양에 의해보고 된 (1) du (1) 명령은 더 이상 파일 이름이 없으므로 명령을 처리 할 수 없습니다.
프로세스가 파일을 닫지 않고 충돌이 발생해도 파일 데이터는 여전히 존재하지만 참조되지 않는다면 파일 시스템 공간을 복구하려면 fsck (8) 실행이 필요합니다.
파일 열기 프로세스는 newsyslog (8) 명령이 syslogd 또는 다른 로깅 프로그램에 신호를 보내서 로그 파일을 닫은 후 다시 열어야한다는 것을 알려주는 한 가지 이유입니다.
Softupdates는 실제 inode 공간 복구가 지연 될 수 있으므로 파일 시스템의 자유 공간에도 영향을 미칠 수 있습니다. sync (8) 명령을 사용하여이를보다 빨리 수행 할 수 있습니다.