Re: XFS reflink vs ThinLVM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 13/01/20 13:21, Gionatan Danti wrote:
On 13/01/20 12:43, Carlos Maiolino wrote:
I should have mentioned it, my apologies.

'extsize' argument for mkfs.xfs will set the size of the blocks in the RT
section.

Although, the 'extsize' command in xfs_io, will set the extent size hints on any
file of any xfs filesystem (or filesystem supporting FS_IOC_FSSETXATTR).

Notice you can use xfs_io extsize to set the extent size hint to a directory,
and all files under the directory will inherit the same extent hint.

My bad, I forgot about xfs_io.
Thanks for the detailed explanation.

Well, I did some test with a reflinked file and I must say I am impressed on how well XFS handles small rewrites (for example 4K).

From my understanding, by mapping at 4K granularity but allocating at 128K, it avoid most read/write amplification *and* keep low fragmentation. After "speculative_cow_prealloc_lifetime" it reclaim the allocated but unused space, bringing back any available free space to the filesystem. Is this understanding correct?

I have a question: how can I see the allocated-but-unused cow extents? For example, giving the following files:

[root@neutron xfs]# stat test.img copy.img
  File: test.img
  Size: 1073741824      Blocks: 2097400    IO Block: 4096   regular file
Device: 810h/2064d      Inode: 131         Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:unlabeled_t:s0
Access: 2020-01-13 15:40:50.280711297 +0100
Modify: 2020-01-13 16:21:55.564726283 +0100
Change: 2020-01-13 16:21:55.564726283 +0100
 Birth: -

  File: copy.img
  Size: 1073741824      Blocks: 2097152    IO Block: 4096   regular file
Device: 810h/2064d      Inode: 132         Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:unlabeled_t:s0
Access: 2020-01-13 15:40:50.280711297 +0100
Modify: 2020-01-13 15:40:57.828552412 +0100
Change: 2020-01-13 15:41:48.190492279 +0100
 Birth: -

I can clearly see that test.img has an additional 124K allocated after a 4K rewrite. This matches my expectation: a 4K rewrite really allocates a 128K blocks, leading to 124K of temporarily "wasted" space.

But both "filefrag -v" and "xfs_bmap -vep" show only the used space as seen by an userspace application (ie: 262144 blocks of 4096 bytes = 1073741824 bytes).

How can I check the total allocated space as reported by stat?
Thanks.

--
Danti Gionatan
Supporto Tecnico
Assyoma S.r.l. - www.assyoma.it
email: g.danti@xxxxxxxxxx - info@xxxxxxxxxx
GPG public key ID: FF5F32A8



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux