몇 가지 다른 디스크 사용량 값을 pydf
사용하여 이 현상을 여러 번 확인했습니다 . df
예를 들어:
$ df -h | grep sdb1
/dev/sdb1 11T 9.6T 705G 94% /mnt/disk
$ pydf | grep sdb1
/dev/sdb1 11T 10T 704G 88.6 [############.] /mnt/disk
pydf
10TB/88.6% 사용된 것으로 표시되고 df -h
9.6TB/94% 사용된 것으로 표시됩니다.
인덱스 노드를 추가하더라도 다음이 pydf -i
표시됩니다.
$ pydf -i | grep sdb1
/dev/sdb1 349M 205k 349M 0.1 [.............] /mnt/disk
아무래도 0.4TB라는 디스크 공간을 감당하기에는 디스크 공간이 너무 작은 것 같습니다.
참고 - 차이점사용 가능한 디스크 공간이 없습니다.pydf
- 이것은 "라이브" 시스템이므로 명령 간에 사용 가능한 디스크 공간이 약간 변경됩니다(704GB 대 705GB). - 유휴 시스템에서 실행하고 KB를 사용하면 와 같은 숫자 입니다 df
.
누구든지 차이점을 설명할 수 있나요?
이 예는 Debian Linux 10의 것이지만 다른 시스템에서도 본 적이 있습니다.
추가 정보:
블록 크기는 4096바이트이며 블록 크기를 강제로 적용할 때 비교는 다음과 같습니다("열"과 일치하도록 편집됨).
$ (df --block-size=4096 && pydf --blocks) | grep sdb1
/dev/sdb1 2906334056 2568838216 191006112 94% /mnt/disk
/dev/sdb1 2906334056 2568838332 191005996 88.4 [#######.] /mnt/disk
또, "라이브 시스템"이기 때문에 값이 조금 다르지만, 그러기 위해서는 값(백분율 제외)을 동일하게 불러도 괜찮다고 생각합니다.
해당 파일 시스템에 있는 내용은 기본적으로 DVR(Digital Video Recorder) 데이터 디스크이므로 대부분 50-300MB의 대용량 비디오 클립이 있고 다른 (더 작은) 파일은 거의 없습니다.
답변1
df(1)
매뉴얼 페이지 에서 다음과 같은 내용을 읽을 수 있습니다.
값은 블록당 512바이트 개수로 표시됩니다.
따라서 한 가지 결론은 df
덩어리로 측정하는 것이고 다른 도구는 다른 것으로 측정하는 것입니다. 두 도구 모두 파일 크기에 대한 정보를 얻기 위해 어떤 형태의 stat
호출( 아마도)을 사용할 수 있습니다 .lstat
stat(2)
struct stat {
...
off_t st_size; /* file size, in bytes */
blkcnt_t st_blocks; /* blocks allocated for file */
파일 크기는 바이트 단위로 측정되며 파일에 할당된 블록 수입니다. 이것은 테스트를 제안할 수 있습니다. 1바이트를 포함하는 파일의 st_size 및 st_blocks는 무엇입니까?
#include <sys/stat.h>
#include <stdio.h>
int main(void) {
struct stat buf;
stat("file", &buf);
printf("size\t%lld\nblocks\t%lld\n", buf.st_size, buf.st_blocks);
return 0;
}
스크립트는 blocksize
적합한 테스트 파일로 컴파일됩니다.
$ make blocksize
cc -O2 -pipe -o blocksize blocksize.c
$ printf 1 > file
$ ./blocksize
size 1
blocks 4
1바이트 파일의 크기는 1이지만 이 시스템에서는 4블록의 공간을 소비한다는 것을 보여줍니다. 블록 수와 블록 크기는 다를 수 있지만 이는 파일 크기별로 계산하는 도구( st_size
)와 사용된 파일 시스템 블록 수를 계산하는 도구 ( ) st_blocks
간의 차이점을 설명합니다 .