df 출력의 크기와 사용된 공간이 여유 공간과 모순되는 이유

df 출력의 크기와 사용된 공간이 여유 공간과 모순되는 이유

다음 명령을 실행하십시오.

$ df -h

다음과 같은 출력을 제공합니다.

Filesystem                        Size  Used Avail Use% Mounted on
/dev/md2                           91G   85G  1.2G  99% /home

즉, 총 91GiB 중 85GiB만 사용되어 6GiB Avail(91 - 85 = 6)가 남게 됩니다.

Avail1.2GiB만 필요합니까?

이 질문은 다음과 같은 것이 아니라 Used - Size출력의 및 열 사이의 모순에 대해 명시적으로 설명합니다.Availdfdfdu이 관련 질문.

내 경우에는 파일 시스템에서 삭제된 파일이 아직 사용 중이지는 않았다.

답변1

기본적으로 ext2, ext3 및 ext4 파일 시스템은 루트 사용자를 위해 용량의 5%를 예약합니다. 이렇게 하면 조각화가 줄어들고 루트 사용자나 루트 소유 데몬이 중요한 작업을 수행할 때 디스크 공간이 부족해질 가능성이 줄어듭니다. 이 예약 이유에 대한 자세한 내용은 다음 질문에 대한 답변에서 확인할 수 있습니다.이 관련 질문.

예약 규모를 확인할 수 있습니다.tune2fs주문하다:

tune2fs -l /dev/md2 | grep "Reserved block count:"

-m예약 비율은 다음 명령의 옵션을 사용하여 변경할 수 있습니다 tune2fs.

tune2fs -m 0 /dev/md2

-r다음 명령의 옵션을 사용하여 유지되는 예약된 블록 수를 변경할 수 있습니다 tune2fs.

tune2fs -r 0 /dev/md2

예약된 공간은 운영 체제에 독립적인 정적 컨텐츠가 있는 대규모 파일 시스템에서는 가장 유용하지 않습니다. 이러한 파일 시스템의 경우 보존 기간을 0으로 줄이는 것이 합리적입니다. 파일 시스템은 /, /root, /var및 디렉터리가 포함된 시스템을 포함하여 기본 5% 보존 상태로 유지하는 것이 가장 좋으며 /tmp데몬 및 기타 운영 체제 서비스에서 런타임에 임시 파일이나 로그를 생성하는 데 자주 사용됩니다.

답변2

이 효과의 가장 일반적인 원인은 열려 있는 파일이 삭제되었기 때문입니다.

커널은 파일이 삭제될 때 파일이 사용 중이 아닌 경우에만 파일에 대한 디스크 블록을 해제합니다. 그렇지 않으면 파일이 닫히거나 시스템이 다시 시작될 때까지 이 작업이 지연됩니다.

임시 파일을 남겨두지 않도록 하기 위한 Unix 세계의 일반적인 방법은 다음과 같습니다.

  1. 프로세스가 임시 파일을 생성하고 엽니다.
  2. 프로세스는 열린 파일 설명자를 계속 유지하면서 파일의 링크를 해제(즉, 삭제)합니다.
  3. 프로세스는 일반적으로 파일 설명자를 사용하여 파일을 읽고 씁니다.
  4. 프로세스가 완료된 후 파일 설명자가 닫히고 커널이 공간을 확보합니다.
  5. 프로세스(또는 시스템)가 예기치 않게 종료되면 임시 파일이 삭제되었으므로 정리가 필요하지 않습니다.
  6. 보너스로, 파일을 삭제하면 임시 파일을 생성할 때 이름이 충돌할 가능성이 줄어들고 루트를 제외한 모든 사람에게 실행 중인 프로세스에 대한 추가 모호한 레이어가 제공됩니다.

이 동작을 통해 프로세스는 갑자기 자신의 발 밑에서 빠져나오는 파일을 처리할 필요가 없으며 파일을 삭제하기 위해 프로세스가 서로 협상할 필요가 없습니다. 그러나 일반적으로 사용 중인 파일을 삭제하는 것이 허용되지 않으므로 이는 Windows 시스템 사용자에게는 예상치 못한 동작입니다.

lsof 명령은 루트로 실행될 때 열려 있는 모든 파일을 표시하고 특히 제거된 삭제된 파일을 나타냅니다.

# lsof 2>/dev/null | grep deleted
bootlogd   2024       root    1w      REG                9,3         58     917506 /tmp/init.0W2ARi (deleted)
bootlogd   2024       root    2w      REG                9,3         58     917506 /tmp/init.0W2ARi (deleted)

문제가 있는 프로세스를 중지하고 다시 시작하거나 서버를 다시 시작하면 문제가 해결됩니다.

예를 들어, 삭제된 파일이 마운트된 파일 시스템 이미지인 경우 커널은 해당 파일을 열어 둘 수도 있습니다. 이 경우 파일 시스템을 마운트 해제하거나 서버를 다시 시작하면 문제가 해결됩니다.

귀하의 경우 "누락된" 공간의 양으로 판단하여 설치 후 삭제한 Centos DVD 이미지와 같이 VPS를 설정하는 데 사용한 파일에 대한 참조를 찾아보겠습니다.

관련 정보