如何判断一个xfs文件系统enable或者没有enable reflink
xfs_info 一个xfs文件系统如果发现reflink等于0则表示没有enable reflink
如果等于1则表示reflink enabled了
sh-4.2# xfs_info /u01
meta-data=/dev/mapper/VGExaDbDisk.u01.20.img-LVDBDisk isize=256 agcount=50, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0 rmapbt=0
= reflink=0
data = bsize=4096 blocks=65536000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
如何查看一个xfs文件系统的版本
第一种方式可以查看该机器上所安装的xfs的版本
sh-4.2# rpm -qa | grep xfs xfsprogs-4.15-6.0.1.el7.x86_64
还有一种方式就是使用xfs_db命令
首先查看xfs文件系统锁关联的磁盘设备 sh-4.2# mount | grep /u01 /dev/mapper/VGExaDbDisk.u01.20.img-LVDBDisk on /u01 type xfs (rw,relatime,attr2,inode64,prjquota) /dev/mapper/VGExaDbDisk.grid19.0.0.0.211019.img-LVDBDisk on /u01/app/19.0.0.0/grid type xfs (rw,relatime,attr2,inode64,noquota) 然后使用xfs_db命令 sh-4.2# xfs_db -r /dev/mapper/VGExaDbDisk.u01.20.img-LVDBDisk xfs_db> version versionnum [0xb4e4+0x28a] = V4,Nlink,DIRV2,QUOTA,ALIGN,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,FTYPE
测试cp --reflink 在xfs 文件系统上
/u01/newtrace是一个xfs的文件系统 sh-4.2# df -h /u01/newtrace/ Filesystem Size Used Avail Use% Mounted on /dev/loop0 280G 1.9G 279G 1% /u01/newtrace 下面我们dd一个5G的文件 sh-4.2# dd if=/dev/zero of=./a.data bs=1024000000 count=5 status=progress 5120000000 bytes (5.1 GB) copied, 3.995597 s, 1.3 GB/s 5+0 records in 5+0 records out 5120000000 bytes (5.1 GB) copied, 3.99569 s, 1.3 GB/s sh-4.2# ls -al total 5200000 drwxr-xr-x 2 root root 56 Feb 20 18:17 . drwxr-xr-x 9 root oinstall 107 Feb 20 18:02 .. -rw-r--r-- 1 root root 102400000 Feb 20 18:04 1.txt -rw-r--r-- 1 root root 102400000 Feb 20 18:04 1.txt.reflink_1 -rw-r--r-- 1 root root 5120000000 Feb 20 18:17 a.data 可以看到这个文件系统的可用空间少了5G sh-4.2# df -h /u01/newtrace/ Filesystem Size Used Avail Use% Mounted on /dev/loop0 280G 6.6G 274G 3% /u01/newtrace 我们创建一个reflink文件 sh-4.2# cp --reflink=always a.data a.data.reflink ls -al看到a.data.reflink是5G大小,但实际上是和a.data共享block的,其实没有占用空间 sh-4.2# ls -al total 10200000 drwxr-xr-x 2 root root 78 Feb 20 18:18 . drwxr-xr-x 9 root oinstall 107 Feb 20 18:02 .. -rw-r--r-- 1 root root 102400000 Feb 20 18:04 1.txt -rw-r--r-- 1 root root 102400000 Feb 20 18:04 1.txt.reflink_1 -rw-r--r-- 1 root root 5120000000 Feb 20 18:17 a.data -rw-r--r-- 1 root root 5120000000 Feb 20 18:18 a.data.reflink 从df的输出看,可用空间并没有减少 sh-4.2# df -h /u01/newtrace Filesystem Size Used Avail Use% Mounted on /dev/loop0 280G 6.6G 274G 3% /u01/newtrace 使用filefrag可以看出其物理block是一样的范围 sh-4.2# filefrag -e -k ./a.data.reflink Filesystem type is: 58465342 File size of ./a.data.reflink is 5120000000 (5000000 blocks of 1024 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 4999999: 100080.. 5100079: 5000000: eof ./a.data.reflink: 1 extent found sh-4.2# filefrag -e -k ./a.data Filesystem type is: 58465342 File size of ./a.data is 5120000000 (5000000 blocks of 1024 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 4999999: 100080.. 5100079: 5000000: eof ./a.data: 1 extent found



