새로 작성된 XFS 파일 시스템에 78GB 사용 표시


18

XFS 파일 시스템 과 함께 단일 파티션으로 설정되는 12TB RAID 6 어레이가 있습니다. 새 파일 시스템을 만들 때 사용중인 용량은 78GB이지만 드라이브에 파일이 없습니다.

[root@i00a ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         32G     0   32G   0% /dev
tmpfs            32G     0   32G   0% /dev/shm
tmpfs            32G   11M   32G   1% /run
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sdb3       154G  3.9G  150G   3% /
/dev/sdb2      1014M  153M  862M  16% /boot
/dev/sdb1       599M  6.7M  593M   2% /boot/efi
/dev/sdc1       187G  1.6G  185G   1% /var
tmpfs           6.3G     0  6.3G   0% /run/user/0
/dev/sda1        11T   78G   11T   1% /export/libvirt

내가 뭐 잘못 했어요? 의도적으로 설계된 것입니까?

파일 시스템 로그가 약 2GB를 차지하는 것처럼 보이며 공간을 사용할 수있는 다른 것을 파악할 수 없습니다.

[root@i00a ~]# xfs_info /export/libvirt/
meta-data=/dev/sda1              isize=512    agcount=11, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2929458688, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

파티션 정보 :

[root@irb00a ~]# parted /dev/sda1
GNU Parted 3.2
Using /dev/sda1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Unknown (unknown)
Disk /dev/sda1: 12.0TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  12.0TB  12.0TB  xfs

이것은 Red Hat Enterprise Linux 8 ( Ootpa )을 실행하는 4 개의 FC430 컴퓨팅 노드와 2 개의 FD332 스토리지 노드가있는 Dell FX2입니다 .


정말 비어 있습니까? (12TB 이미지, 기본 mkfs 설정으로 bsize=4096 blocks=2929687500) 재생하려고 하면 df -h결과가 Size 11T, Used 12G아닙니다 78G. xfsdump21KB 파일 생성 ... ;-)
frostschutz

2
아, 나는 당신이 가지고 reflink=1있지만 기본값은이었습니다 reflink=0. 을 사용하면 나 reflink=1에게도 78G사용 되었다고 표시 되어 지금 재현 할 수 있습니다.
frostschutz

따라서 이것은 의도적 인 것으로 보이지만 리플 링크가 유스 케이스에 아무런 영향을 미치지 않을 것이라고 확신한다면 끄는 것이 좋습니다.
frostschutz

모르겠어요 여기서 유일한 것은 가상 머신 용 qcow2 파일입니다.
yakatz

일부 libvirt를 도구처럼 보인다는 reflink을 지원하지만 가능성이 문제가 가치가되지 않습니다 : stackoverflow.com/a/41968000/597234은 아마 저장 공간에 전체 추가 VM에 맞게 할 수 있습니다.
yakatz

답변:


2

XFS의 경우 빈 파일 시스템 "사용 된 크기"는 표시된 df -h메타 데이터 기능에 따라 크게 달라지는 것 같습니다 mkfs.xfs.

빈 12TB 파일로 테스트 :

# truncate -s 12TB xfstest.img

기본 설정 (현재 ArchLinux 시스템) :

# mkfs.xfs xfstest.img 
meta-data=xfstest.img            isize=512    agcount=11, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=2929687500, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       11T   12G   11T   1% /dev/shm/loop
# umount loop/

사용 reflink=1:

# mkfs.xfs -m reflink=1 -f xfstest.img
meta-data=xfstest.img            isize=512    agcount=11, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2929687500, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       11T   78G   11T   1% /dev/shm/loop

crc=0, reflink=0: 사용 하기 (어떤 이유로 finobt=0, sparse=0)

# mkfs.xfs -m reflink=0 -m crc=0 -f xfstest.img 
meta-data=xfstest.img            isize=256    agcount=11, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=2929687500, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       11T   33M   11T   1% /dev/shm/loop

한마디로 :

# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       11T   78G   11T   1% /dev/shm/loop (reflink=1, crc=1)
/dev/loop0       11T   12G   11T   1% /dev/shm/loop (reflink=0, crc=1)
/dev/loop0       11T   33M   11T   1% /dev/shm/loop (reflink=0, crc=0)

따라서 새로운 12TB 파일 시스템의 "사용 된"공간은 mkfs 시간에 사용 가능한 메타 데이터 기능에 따라 78G, 12G 또는 33M 정도로 낮습니다.


RedHat 8은 reflinks=1기본적으로
yakatz

24

모든 파일 시스템에는 자체 내부 데이터 구조에 대한 오버 헤드가 있습니다. 이 내부 정보는 파일 시스템이 미래에 파일과 디렉토리를 작성하고 모든 것이 할당 된 위치를 추적하는 데 사용됩니다. 이 데이터를 통칭하여 "메타 데이터"라고합니다. 파일 시스템의 데이터에 대한 데이터입니다. 메타 데이터는 공간을 차지하지만 사용자 데이터는 아니기 때문에 오버 헤드로 간주됩니다. 이 오버 헤드는 파일 시스템 사용으로 인한 피할 수없는 부작용입니다.

이 블로그 게시물 에 따르면 XFS는 전체 디스크 공간의 약 0.5 %의 오버 헤드를가집니다. (이 게시물은 2009 년부터 작성되었지만 크게 변경 될 이유는 없습니다.) 그는를 사용하여 수십 가지가 넘는 파일 시스템의 파일 시스템 오버 헤드를 테스트함으로써 그 결과를 얻었습니다 guestfish.

12TB 공간의 0.5 %는 60GB이므로 예상 사용량과 거의 비슷합니다. 그의 숫자는 0.5 %보다 약간 높아야했지만 반올림 한 것 같습니다.


9
일부 파일 시스템은 전체 할당 된 크기를보고 한 다음 사용 된 공간에 대해 부기 오버 헤드를 청구하는 반면 다른 시스템은 전체 크기에서 부기를 빼고 파일 공간 만 "사용 된"것으로보고한다는 점에 주목할 필요가 있습니다.
chrylis

3
파일 시스템 오버 헤드 ... 사람들이 왜 1983 년 이후로 하드 드라이브가 스티커의 내용을보고하지 않는지 묻습니다.
J ...

3
@J ... 사실, 하드 드라이브는 종종 1024MB 대신 1GB = 1000MB를 사용하는 시장입니다. 따라서 512GB로 판매되는 HD는 실제로 표시된 크기보다 12GB 작습니다. 1TB = 1000GB = 1000 * 1000MB를 사용하기 때문에 TB에서는 훨씬 더 나빠집니다. 1TB HD는 실제로 1024GB 대신 976GB입니다. TB로 48GB를 잃었습니다.
Justin Lessard

4
기가 바이트 (기본 10)와 기가 바이트 (기본 2) 측정의 차이는에 사용 된 공간으로 표시되지 않습니다 df.
yakatz

1
@JustinLessard MiB 및 KiB 수준에서의 오버 헤드를 잊었습니다. 512GB 하드 드라이브는 실제 512GiB 드라이브보다 실제로 32GiB 이상입니다. 그리고 1TB 드라이브는 TiB, GiB, MiB 및 KiB 오버 헤드를 고려할 때 실제로 0.909TiB와 비슷합니다. (1 * 1000 ^ 4 / 1024 ^ 4) = 0.90949
펭귄 359
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.