
방금 하나의 RAID 파티션에서 다른 RAID 파티션으로 일부 데이터를 복사했습니다. 다음 출력을 보면 df
:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md127 1921673480 1652707240 171280736 91% /home/chris/mount/raid18t
/dev/md3 2881491232 1652719488 1082329968 61% /home/chris/mount/raid3t
이 Used
값은 동일하지 않습니다( 1652707240
vs 1652719488
). 그러나 du -s *
모든 디렉토리에서 실행하면 동일한 값/출력을 얻습니다...
왜 가치관에 차이가 있나요 Used
?
두 파일 시스템 모두 ext4입니다.
답변1
왜냐하면,dfsize on disk
보고뒤actual file size
파일이 동일한 경우에도 기본 파일 시스템 블록이 동일하다는 것을 의미하지는 않습니다 .
블록 크기를 고려하십시오.8천그리고 Disk-1
블록 크기는4K존재하다 Disk-2
.
파일 의 실제 크기는 foo
다음과 같습니다.11,000.
Disk-1/foo
2개의 블록을 차지합니다. 즉, 2개를 사용합니다.8천=16천.
Disk-2/foo
3개의 블록을 차지합니다. 즉, 3개를 사용합니다.4k=12k.
편집하다
재미삼아 작은 파일이 많이 포함된 디렉터리를 선택하세요. ls -l
파일 크기의 합계를 실행 하고 계산합니다. 실제 파일 크기입니다. 내 Linux 버전에서는 파일 크기가 열 5에 있습니다. 그래서 나는 다음을 수행할 것입니다.
ls -l | awk '{ttl=ttl+$5} END {print "Total file size " ttl}'
이것은 디렉토리에 있는 파일 크기의 합계를 계산합니다.
다음으로 디스크의 섹터 수 ls -ls
와 총 섹터 수를 나열합니다.
ls -ls | awk '{ttl=ttl+$1} END {print "Total sector count " ttl}'
내 시스템에서 부팅 디렉터리를 확인했습니다.
ls -lsR /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
섹터 151,352 바이트 153,894,246
du -xs /boot
151360
df /boot
1-K 블록: 499656
사용: 151756
이 3개 숫자의 차이점을 확인하셨나요?
ls
기본적으로 크기는 바이트 단위로 표시됩니다.
df
달리 구성하지 않는 한 1K 블록을 보고합니다.
내 디스크 구성에는 512바이트 섹터가 있습니다 fdisk
.
ls 명령에 숨겨진 파일과 디렉터리를 추가하면
ls -lRsa (…)
섹터 151,504바이트 154,045,696이
더 가깝지만 여전히 꺼져 있습니다.
이제 무슨 일이 일어나고 있는지 보여드리겠습니다.
- 편의를 위해 복사됨 -
ls -lsRa /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
섹터 151,504 바이트 154,045,696
df /boot
1-K 블록: 499656
사용됨: 151756
du -xs /boot
151360
echo "Hi" > junk
ls -ls junk
4 -rw-r--r-- ScottieH 사용자 3 정크
이 3바이트 파일은 4개 섹터를 사용한다는 점에 유의하세요!
- 크기 재계산 -
ls -lsRa /boot | awk '{if (($1+0) >0) tt_sec=tt_sec+$1; tt_byt=tt_byt+$6} END {print "Sectors " tt_sec " Bytes " tt_byt}'
섹터 151,508 바이트 154,045,972 <- 얼마나 더?
du -xs /boot
151364
df /boot
1-K 블록: 499656
사용: 151760
** 이 숫자가 어떻게 될지 아시겠습니까?안 돼요합산하시겠습니까? **