나는리눅스 센트OS서버, 운영 체제 + 주변에서 사용되는 소프트웨어 패키지5GB. 그러다가 나는 돌아섰다97GBWindows 서버에서 해당 Linux 서버의 두 폴더로 데이터를 전송한 후 디스크 사용량을 계산한 결과 두 폴더의 전체 크기가 디스크 사용량 크기보다 큰 것을 발견했습니다.
각 폴더에서 한 번 실행하고 du -sh
한 번 사용하십시오.50GB, 다른 하나는 사용47GB
그러나 실행할 때 df -h
사용되는 공간은96GB. (50GB+47GB+5GB)>96GB
질문이 있으신가요? 이 두 폴더에는 많은 수의 파일(1백만 개 이상)이 포함되어 있습니다. 감사해요.
답변1
이것du
이 페이지에서는 값이 서로 다른 이유에 대한 통찰력을 제공하지만 크기는 둘 중 더 작아야 함 을 나타내는 것 같습니다 .
df
할당된 총 블록 수를 사용하고 du
여전히 디스크에 블록이 필요한 inode와 같은 메타데이터를 제외하고 파일 자체만 살펴봅니다. 또한 응용 프로그램이 열려 있는 동안 파일을 삭제하면 du
해당 파일은 여유 공간으로 보고되지만 df
응용 프로그램이 종료될 때까지는 보고되지 않습니다.
답변2
du
그보다 큰 경우 df
일반적인 원인은 "희소 블록"입니다. 프로그램이 실제로 디스크 블록에 쓰지 않고 대신 찾는 경우 inode의 블록 할당 맵에서 0 포인터를 얻고 유지하지 않습니다. 실제 디스크 공간입니다. 나중에 작성하면 실제 디스크 블록이 할당되고 매핑이 새 블록을 가리키도록 변경됩니다.