Hệ thống tập tin XFS mới được tạo cho thấy 78 GB được sử dụng


18

Chúng tôi có một mảng RAID 6 12 TB được cho là được thiết lập thành một phân vùng duy nhất với hệ thống tệp XFS . Khi tạo hệ thống tệp mới, nó cho biết nó có 78 GB đang sử dụng, nhưng không có tệp nào trên ổ đĩa.

[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

Tôi đã làm gì sai sao? Đây có phải là do thiết kế?

Có vẻ như nhật ký hệ thống tệp chỉ chiếm khoảng 2 GB và tôi không thể tìm ra thứ gì khác có thể sử dụng dung lượng.

[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

Thông tin phân vùng:

[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

Đây là một Dell FX2 với bốn nút tính toán FC430 và hai nút lưu trữ FD332, chạy Red Hat Enterprise Linux 8 ( Ootpa ).


Có thực sự trống rỗng? Cố gắng tái tạo (với hình ảnh 12TB, cài đặt mkfs mặc định bsize=4096 blocks=2929687500), df -hkết quả là Size 11T, Used 12G, không 78Gtheo ví dụ của bạn. xfsdumptạo tệp
21KB

2
Ah, tôi nhận thấy bạn có reflink=1nhưng mặc định cho tôi là reflink=0. Với reflink=1, nó cũng nói 78Gđược sử dụng cho tôi, vì vậy tôi có thể sao chép nó ngay bây giờ.
frostschutz

Vì vậy, có vẻ như đây là do thiết kế, nhưng nếu bạn chắc chắn rằng các vật phản xạ sẽ không làm gì cho trường hợp sử dụng của bạn, bạn có thể xem xét tắt nó đi.
frostschutz

Tôi không biết. Điều duy nhất ở đây sẽ là các tệp qcow2 cho các máy ảo.
yakatz

Có vẻ như một số công cụ libvirt hỗ trợ phản xạ, nhưng có thể không đáng để gặp rắc rối: stackoverflow.com/a/41968000/597234 Tôi có thể phù hợp với toàn bộ VM trong không gian đã lưu.
yakatz

Câu trả lời:


2

Đối với XFS, hệ thống tệp trống "Kích thước được sử dụng" như được hiển thị bởi df -hdường như phụ thuộc rất nhiều vào tính năng siêu dữ liệu bạn bật vào mkfs.xfsthời điểm nào.

Kiểm tra với tệp 12TB trống:

# truncate -s 12TB xfstest.img

Cài đặt mặc định (trên hệ thống ArchLinux hiện tại của tôi):

# 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/

Sử dụng 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

Sử dụng crc=0, reflink=0: (vì một số lý do, điều đó cũng biến 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

Nói ngắn gọn:

# 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)

Vì vậy, không gian "Được sử dụng" trên hệ thống tệp 12TB mới là 78G, 12G hoặc thấp nhất là 33M tùy thuộc vào tính năng siêu dữ liệu nào bạn bật tại thời điểm mkfs.


RedHat 8 reflinks=1theo mặc định
yakatz

24

Tất cả các hệ thống tập tin có một chi phí chung cho cấu trúc dữ liệu nội bộ của riêng họ. Thông tin nội bộ này được sử dụng cho hệ thống tệp để tạo tệp và thư mục trong tương lai và để theo dõi nơi mọi thứ được phân bổ. Dữ liệu này được gọi chung là "siêu dữ liệu". Đó là dữ liệu "về" dữ liệu trên hệ thống tập tin. Siêu dữ liệu được coi là một chi phí chung, vì nó chiếm dung lượng nhưng không phải là dữ liệu người dùng. Chi phí này là một tác dụng phụ không thể tránh khỏi khi sử dụng bất kỳ hệ thống tập tin nào.

Theo bài đăng trên blog này , XFS có tổng chi phí khoảng 0,5% tổng dung lượng đĩa. (Lưu ý rằng bài đăng này là từ năm 2009, nhưng không có lý do gì điều này nên thay đổi mạnh mẽ). Ông đã đạt được kết quả đó bằng cách kiểm tra chi phí hệ thống tập tin của hơn một chục hệ thống tập tin khác nhau bằng cách sử dụng guestfish.

0,5% dung lượng 12TB của bạn là 60 GB, do đó có vẻ như khá gần với mức sử dụng dự kiến. Tôi nghi ngờ số của anh ta nên cao hơn 0,5% một chút, nhưng nó đã được làm tròn.


9
Đáng lưu ý rằng một số hệ thống tệp báo cáo kích thước được phân bổ đầy đủ và sau đó tính phí ghi sổ trên không gian đã sử dụng, trong khi các hệ thống khác trừ đi sổ sách từ kích thước đầy đủ và chỉ báo cáo không gian tệp là "đã sử dụng".
chrylis -on đình công-

3
Hệ thống tập tin trên cao ... khiến mọi người hỏi tại sao ổ cứng của họ không báo cáo những gì trên nhãn dán kể từ năm 1983.
J ...

3
@J ... Trên thực tế, ổ cứng thường tiếp thị kích thước ở đó bằng cách sử dụng 1GB = 1000MB thay vì 1024MB. Vì vậy, một HD được bán trên thị trường ở mức 512GB thực sự nhỏ hơn 12GB so với kích thước được liệt kê. Nó thậm chí còn tệ hơn với TB vì họ sử dụng 1TB = 1000 GB = 1000 * 1000 MB. HD 1TB thực sự là 976GB thay vì 1024GB. Một con gà trống bị mất 48 GB.
Justin Lessard

4
Sự khác biệt trong việc đo gigabyte (cơ sở 10) so với gibibytes (cơ sở 2) không hiển thị dưới dạng không gian được sử dụng trong df.
yakatz

1
@JustinLessard Bạn đã quên mất chi phí hoạt động ở cấp độ MiB và KiB. Một ổ cứng 512 GB thực sự nhỏ hơn 32 GiB so với ổ 512 GiB thật. Và trên đó, ổ đĩa 1 TB thực sự giống như 0,90 TiB khi chiếm tổng chi phí TiB, GiB, MiB và KiB. (1 * 1000 ^ 4/1024 ^ 4) = 0.90949
chim cánh cụt359
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.