I performed more testing by switching my test machine from CentOS 7.9 to Oracle Linux 7.9 using
centos2ol.sh script.
It installs UEK by default, so I was able to create XFS with reflinks. You have to specify both crc and reflinks flags:
Code: Select all
$ sudo mkfs.xfs -m reflink=1,crc=1 /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=8323008 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=33292032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16255, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
What is good, there is an easy way to VERIFY if XFS file system has reflinks enabled (this is a piece of info I was trying to find and couldn't):
Code: Select all
$ sudo xfs_db /dev/sdc1 -c version
versionnum [0xbca5+0x18a] = V5,NLINK,DIRV2,ALIGN,LOGV2,EXTFLG,SECTOR,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE,FINOBT,SPARSE_INODES,REFLINK
If the output of this command includes reflink - the filesystem should be fine, however it is not all.
As I mention previously, the kernel has to support it too and this is my main complain about generic "system requirements" advice from Veeam
"For other distributions, XFS integration support is experimental, with kernel version 5.4 or later recommended."
It is really lacking specifics. Oracle Linux 7.9 can be switched to RHCK which is version 3.10 and it does not support reflinks - and attempt to use filesystem with reflinks flag set on that kernel can create many issues, I saw an article from RH about this.
It would be beneficial to have more detailed requirements for
experimental support of XFS advanced capabilities, for example:
- Kernel 4.9 or higher, 5.0 or higher is recommended
- xfsprogs package version 5 or higher
- File system created with flags reflink=1,crc=1
Just for the record, Oracle 7.9 with UEK:
Code: Select all
$ rpm -q xfsprogs
xfsprogs-5.4.0-1.0.1.el7.x86_64
$ uname -r
5.4.17-2136.304.4.4.el7uek.x86_64
I haven't upgraded my actual repository yet, since it will require file system to be recreated, but I am planning this work.
Hopefully, this information will help others, since it is not available from Veeam directly.