XFS/EXT4:为什么磁盘上的实际文件大小大于表观大小?澄清

XFS/EXT4:为什么磁盘上的实际文件大小大于表观大小?澄清

在运行 XFS 文件系统上的 KVM/qemu 的 CentOS 7.1.1503(3.10.0-229.el7.x86_64)系统上,我试图找出具体是什么在为 VM 磁盘映像文件添加额外的空间。

$ ls -ls --block-size=1k
15728648 -rw-------. 1 qemu qemu 15728640 Aug  8 07:50 original.img
15728640 -rw-------. 1 qemu qemu 15728640 Aug  8 08:25 original.imgcopied
 2288960 -rw-------. 1 qemu qemu 15728640 Aug  8 09:36 original.imgsparsified
15728640 -rw-------. 1 qemu qemu 15728640 Aug  7 13:23 thickprov.img
       0 -rw-------. 1 qemu qemu 15728640 Aug  7 13:28 thinprov.img

$ filefrag *
original.img: 1 extent found
original.imgcopied: 1 extent found
original.imgsparsified: 713 extents found
thickprov.img: 1 extent found
thinprov.img: 0 extents found

这是这些文件所在的文件系统:

# xfs_info /dev/mapper/centos_centsager-home
meta-data=/dev/mapper/centos_centsager-home isize=256    agcount=4, agsize=15968512 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=63874048, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=31188, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

据我所知,原始 .img 文件显示文件系统上的实际大小比其显示大小大 8kb。我想更好地理解这一点。我在另一个盒子上的 ext4 文件系统上还有一个 50GB 的映像文件,显示其实际磁盘空间使用量比其显示大小大 92k。这两个文件都是通过 KVM/qemu/libvirt 进行厚配置的,并已在测试虚拟机中用于各种用途,但它们的内部文件系统从未接近满载。

列出的其他文件只是我进行一些测试的结果,目的是弄清楚发生了什么。这些报告的大小对我来说是有意义的。

15728640  15728640  original.imgcopied     # 'cp' of original.img
 2288960  15728640  original.imgsparsified # 'virt-sparsify' of original.img
15728640  15728640  thickprov.img          # Fresh VM create with same parameters as original.img
       0  15728640  thinprov.img           # Same VM create but with a sparse allocation.

那么,原始 .img 文件中的额外 8k 是由于范围信息、文件碎片还是其他完全不同的原因?

谢谢。

答案1

当写入触发文件中新扩展区的分配时,XFS 有时会推测性地分配超出当前写入操作所需扩展区的额外扩展区。其想法是,未来的写入很可能会导致文件进一步增大,因此通过预先分配额外扩展区可以获得额外的性能。

相关内容