ระบบไฟล์ XFS ที่สร้างขึ้นใหม่แสดงให้เห็นว่าใช้ 78 GB


18

เรามีอาร์เรย์ขนาด 12 TB RAID 6 ซึ่งควรจะตั้งค่าเป็นพาร์ติชันเดียวที่มีระบบไฟล์XFS ในการสร้างระบบไฟล์ใหม่มันบอกว่ามันมีการใช้งาน 78 GB แต่ไม่มีไฟล์ในไดรฟ์

[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

ฉันทำอะไรผิดหรือเปล่า? นี่เป็นการออกแบบหรือเปล่า?

ดูเหมือนว่าระบบไฟล์บันทึกจะใช้เวลาประมาณ 2 GB เท่านั้นและฉันไม่สามารถทราบได้ว่ามีอะไรอีกบ้างที่สามารถใช้พื้นที่ได้

[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

นี่คือ Dell FX2 ที่มีโหนดการคำนวณ FC430 สี่โหนดและโหนดหน่วยเก็บข้อมูล FD332 สองโหนดซึ่งใช้ Red Hat Enterprise Linux 8 ( Ootpa )


มันว่างเปล่าจริงเหรอ? พยายามทำซ้ำ (ด้วยภาพขนาด 12TB การตั้งค่าเริ่มต้น mkfs bsize=4096 blocks=2929687500) df -hผลลัพธ์คือSize 11T, Used 12Gไม่ใช่78Gตามตัวอย่างของคุณ xfsdumpสร้างไฟล์ 21KB ... ;-)
frostschutz

2
โอ้ฉันสังเกตเห็นว่าคุณมีแต่เริ่มต้นสำหรับผมก็คือreflink=1 reflink=0ด้วยreflink=1มันยังบอกว่า78Gใช้สำหรับฉันดังนั้นฉันสามารถทำซ้ำได้ในขณะนี้
frostschutz

ดังนั้นดูเหมือนว่านี่เป็นการออกแบบ แต่ถ้าคุณแน่ใจว่า reflink จะไม่ทำสิ่งใดสำหรับกรณีการใช้งานของคุณคุณสามารถลองปิดมันได้
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 ใหม่คือ 78G, 12G หรือต่ำที่สุดที่ 33M ขึ้นอยู่กับคุณสมบัติของข้อมูลเมตาที่คุณเปิดใช้งานในเวลา mkfs


RedHat 8 มีreflinks=1ค่าเริ่มต้น
yakatz

24

ระบบไฟล์ทั้งหมดมีค่าใช้จ่ายสำหรับโครงสร้างข้อมูลภายในของตัวเอง ข้อมูลภายในนี้ใช้สำหรับระบบไฟล์เพื่อสร้างไฟล์และไดเรกทอรีในอนาคตและติดตามตำแหน่งที่ทุกอย่างถูกจัดสรร ข้อมูลนี้เรียกว่า "ข้อมูลเมตา" โดยรวม มันเป็นข้อมูล "เกี่ยวกับ" ข้อมูลในระบบไฟล์ ข้อมูลเมตาถือว่าเป็นค่าใช้จ่ายเนื่องจากใช้เนื้อที่ แต่ไม่ใช่ข้อมูลผู้ใช้ โอเวอร์เฮดนี้เป็นผลข้างเคียงที่หลีกเลี่ยงไม่ได้ของการใช้ระบบไฟล์ใด ๆ

ตามโพสต์บล็อกนี้ XFS มีค่าใช้จ่ายประมาณ 0.5% ของพื้นที่ดิสก์ทั้งหมด (โปรดทราบว่าโพสต์นี้มาจาก 2009 แต่ไม่มีเหตุผลที่ควรมีการเปลี่ยนแปลงอย่างมาก) guestfishเขาได้ผลโดยการทดสอบว่าระบบแฟ้มของค่าใช้จ่ายมากกว่าโหลระบบไฟล์ที่แตกต่างกันโดยใช้

0.5% ของพื้นที่ 12TB ของคุณคือ 60GB ดังนั้นจึงดูเหมือนว่าใกล้เคียงกับการใช้งานที่คาดหวัง ฉันคิดว่าหมายเลขของเขาควรจะสูงกว่า 0.5% เล็กน้อย แต่มันถูกปัดเศษ


9
น่าสังเกตว่าระบบไฟล์บางระบบรายงานขนาดที่จัดสรรเต็มรูปแบบจากนั้นเรียกเก็บเงินค่าโสหุ้ยการทำบัญชีกับพื้นที่ที่ใช้ในขณะที่คนอื่นลบการทำบัญชีออกจากขนาดเต็มและรายงานเฉพาะพื้นที่ไฟล์เป็น "ใช้"
chrylis -on strike-

3
ระบบไฟล์เหนือหัว ... ทำให้ผู้คนถามว่าทำไมฮาร์ดไดรฟ์ของพวกเขาถึงไม่รายงานว่ามีอะไรอยู่บนสติ๊กเกอร์ตั้งแต่ปี 1983
J ...

3
@J ... ที่จริงแล้วฮาร์ดไดรฟ์มักจะทำการตลาดที่ขนาดโดยใช้ 1GB = 1,000MB แทนที่จะเป็น 1024MB ดังนั้น HD ที่วางตลาดที่ 512GB นั้นจริง ๆ แล้วเล็กกว่าขนาดที่แสดงไว้ 12GB มันเลวร้ายยิ่งกว่า TB เนื่องจากใช้ 1TB = 1,000 GB = 1000 * 1,000 MB 1TB HD จริงๆแล้วเป็น 976GB แทนที่จะเป็น 1024GB วัณโรค 48GB หายไปจากวัณโรค
Justin Lessard

4
ความแตกต่างในการวัดกิกะไบต์ (ฐาน 10) VS gibibytes (ฐาน 2) dfไม่ปรากฏขึ้นเป็นพื้นที่ที่ใช้ใน
yakatz

1
@JustinLessard คุณลืมเรื่องค่าใช้จ่ายในระดับ MiB และ KiB ฮาร์ดไดรฟ์ขนาด 512 GB นั้นจริงแล้วมีขนาดเล็กกว่า 32 GiB มากกว่า 512 GiB จริง และนั่นไดรฟ์ 1 TB นั้นมีค่ามากกว่า 0.909 TiB เมื่อคิดเป็นค่าใช้จ่ายของ TiB, GiB, MiB และ KiB (1 * 1,000 ^ 4/1024 ^ 4) = 0.90949
penguin359
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.