在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
根据我所能理解的,original.img文件显示文件系统上的实际大小比表观大小大8kb。 我想更好地理解这一点。 另一个盒子上的ext4文件系统上也有一个50GB的映像文件,显示其实际磁盘空间使用量比其外观尺寸大92k。 这两个文件都通过KVM / qemu / libvirt进行了精简configuration,并且已经在testing虚拟机中用于各种各样的事情,但是它们的内部文件系统从未接近完整。
列出的其他文件只是一些testing的结果,我正在做的事情是让我的脑袋缠住发生的事情。 这些报告的大小对我有意义。
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.
那么,original.img文件中额外的8k是由于盘区信息,文件碎片还是其他原因?
谢谢。
当写入触发了文件中新扩展的分配时,XFS有时会推测性地分配超出当前写入操作所需的额外扩展。 这个想法是,将来的写入可能会导致文件进一步增长,所以通过先占性地分配额外的扩展块可以获得额外的性能。