XFS/EXT4: Почему фактический размер файла на диске превышает видимый размер? осветление
В системе CentOS 7.1.1503 (3.10.0-229.el7.x86_64) под управлением KVM/qemu в файловой системе XFS я пытаюсь выяснить, что конкретно добавляет дополнительное пространство в файл образа виртуальной машины.
$ 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 показывает, что фактический размер файловой системы на 8 КБ больше, чем видимый размер. Я хотел бы получить лучшее понимание этого. У меня также есть файл образа 50 ГБ в файловой системе ext4 на другом компьютере, который показывает, что его фактическое использование дискового пространства на 92 КБ больше, чем его кажущийся размер. Оба этих файла были плотно предоставлены через 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.
Итак, есть ли дополнительные 8 КБ в оригинальном файле.img из-за информации о размерах, фрагментации файла или чего-то еще целиком?
Благодарю.
1 ответ
Когда запись запускает выделение нового экстента в файле, XFS иногда умозрительно выделяет дополнительные экстенты сверх тех, которые требуются для текущей операции записи. Идея состоит в том, что будущие записи вполне могут привести к дальнейшему росту файла, поэтому за счет преимущественного выделения дополнительных экстентов можно повысить производительность.