“ls -lh”는 개별 크기의 합보다 작은 총 크기를보고합니다. ls -aiFlh /var/lib/nova/instances/_base/ total 143G 29884440

어떤 상황 ls -lh에서 개별 파일의 합계보다 작은 합계 가 표시됩니까? 예를 들면 다음과 같습니다.

$ ls -lh /var/lib/nova/instances/_base
total 100G
-rw-rw-r-- 1 nova         nova 4.3M 2012-02-14 14:07 00000001
-rw-rw-r-- 1 nova         nova 5.7M 2012-02-14 14:07 00000002
-rw-rw-r-- 1 nova         nova  42G 2012-03-08 15:24 1574bddb75c78a6fd2251d61e2993b5146201319.part
-rw-rw-r-- 1 libvirt-qemu kvm   24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
-rw-r--r-- 1 libvirt-qemu kvm   65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
-rw-rw-r-- 1 libvirt-qemu kvm  160G 2012-02-24 16:06 ephemeral_0_160_None
-rw-rw-r-- 1 libvirt-qemu kvm   80G 2012-02-24 22:38 ephemeral_0_80_None
-rw-r--r-- 1 libvirt-qemu kvm   10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
-rw-r--r-- 1 libvirt-qemu kvm   10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm

편집 : 이제 주석에서 요청 당 몇 가지 추가 플래그가 표시됩니다.

$ ls -aiFlh  /var/lib/nova/instances/_base/
total 143G
29884440 drwxrwxr-x 2 nova         nova 4.0K 2012-03-08 15:45 ./
29884427 drwxr-xr-x 6 nova         nova 4.0K 2012-03-08 15:05 ../
29884444 -rw-rw-r-- 1 nova         nova 4.3M 2012-02-14 14:07 00000001
29884445 -rw-rw-r-- 1 nova         nova 5.7M 2012-02-14 14:07 00000002
29884468 -rw-r--r-- 1 nova         nova  65G 2012-03-08 15:59 1574bddb75c78a6fd2251d61e2993b5146201319.converted
29884466 -rw-rw-r-- 1 nova         nova  58G 2012-03-08 15:35 1574bddb75c78a6fd2251d61e2993b5146201319.part
29884446 -rw-rw-r-- 1 libvirt-qemu kvm   24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
29884467 -rw-r--r-- 1 libvirt-qemu kvm   65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
29884443 -rw-rw-r-- 1 libvirt-qemu kvm  160G 2012-02-24 16:06 ephemeral_0_160_None
29884442 -rw-rw-r-- 1 libvirt-qemu kvm   80G 2012-02-24 22:38 ephemeral_0_80_None
29884447 -rw-r--r-- 1 libvirt-qemu kvm   10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
29884441 -rw-r--r-- 1 libvirt-qemu kvm   10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm


답변

스파 스 파일이 있으면 발생합니다.

$ mkdir test; cd test
$ truncate -s 1000000000 file-with-zeroes
$ ls -l
total 0
-rw-r--r-- 1 gim gim 1000000000 03-08 22:18 file-with-zeroes

스파 스 파일은 파일 시스템 블록으로 채워지지 않은 (또는 부분적으로 만) 파일입니다. 희소 파일의 채워지지 않은 영역을 읽으면 0을 얻습니다. 이러한 빈 영역에는 실제 디스크 공간이 필요하지 않으며보고 된 ‘총계’ ls는 파일이 차지하는 디스크 공간에 해당합니다 (예 🙂 du.


답변

출력에 의해 주어진 있습니다 ls -ldu미묘하지만 중요한 차이가있다. 이 시도:

dd if=/dev/urandom of=aaa bs=1024 count=1

지금

ls -l aaa
-rw-r--r-- 1 abc abc 1024 2012-03-08 15:45 aaa

이므로

du -h aaa
4.0K    aaa

파일 시스템이 크기를 4096 (내 리눅스 상자에서) 청크로 할당하기 때문입니다. 이를 IO 블록이라고합니다. 다음을 통해이를 확인할 수 있습니다.

    stat aaa
  File: `aaa'
  Size: 1024        Blocks: 8          IO Block: 4096   regular file

답변

허용 된 답변은 절대적으로 정확합니다. 겉보기 크기를 보려면 다음을 사용할 수 있습니다.

du --apparent-size

디스크 사용이 아닌 겉보기 크기를 인쇄합니다. 겉보기 크기는 일반적으로 더 작지만 ( ‘스파 스’) 파일의 구멍, 내부 조각화, 간접 블록 등으로 인해 더 클 수 있습니다.