Better Together with XFS File System and Veeam Fast Clone

  • 26 June 2022
  • 1 comment
  • 498 views

Userlevel 3
Badge

 

Fast Clone是Veeam Backup & Replication快速克隆技术,可帮助创建快速备份文件副本,生成一份新的合成全备份文件。使用Fast Clone的目的是提高合成全备份创建和转换的速度,减少了磁盘空间的同时并减少了存储设备的负载。

借助Fast Clone这项技术,Veeam Backup & Replication可以引用卷上的现有数据块,而不是在文件之间复制数据块,即仅是在修改文件时才复制数据块。

Veeam Backup & Replication支持对以下类型的备份存储库进行Fast Clone:

  • Linux server

  • Microsoft Windows server

  • SMB share

关于Fast Clone的技术介绍,请参考以下网址:

https://helpcenter.veeam.com/docs/backup/vsphere/backup_repository_block_cloning.html?ver=110

所以当使用Veeam Backup & Replication的Hardened Repository对备份数据进行加固时,则可以使用Fast Clone技术结合Linux系统上的XFS文件系统(Reflink),实现加快合成全备份的时间和减少备份空间的消耗。

 

以下介绍XFS文件系统(Reflink)的工作原理。

使用Ext4、或NTFS文件系统当作备份空间,在首次执行完全备份后,将定期执行增量备份和合成合备份(Synthetic Full),那么合成全备份时所需的空间、以及Backup Repository占用的空间,如下图所示。

6Q9jQ3.jpg

使用XFS文件系统当作备份空间,则会结合使用XFS文件系统的(Reflink)快速指向未修改、未变化的数据块,从而快速“生成”合成全备份,并且占用更少Backup Repository的空间(至少30%以上),如下图所示。

zVNmvu.jpg

​​

本次测试环境版本如下:

VBR v11.0.1.1261 P20220302
Linux OS CeotOS 8.3.2011 4.18.0-240.el8.x86_64
XFS 5.0.0-4.el8  
     

 

一、创建XFS文件系统

[root@FastClone_XFS ~]# lsblk	#检查Linux系统底层是否识别到新增磁盘,新增磁盘为/dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 14.4G 0 part
├─cl-root 253:0 0 12.8G 0 lvm /
└─cl-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 100G 0 disk
sdc 8:32 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
[root@FastClone_XFS ~]# parted /dev/sdb mklabel gpt #把/dev/sdb格式化成gpt格式
信息: You may need to update /etc/fstab.

[root@FastClone_XFS ~]# parted /dev/sdb mkpart primary 1 100% #创建主分区1的全部可用空间
信息: You may need to update /etc/fstab.

[root@FastClone_XFS ~]# pvcreate /dev/sdb1 #创建pv物理卷
Physical volume "/dev/sdb1" successfully created.
[root@FastClone_XFS ~]# vgcreate vg_veeam /dev/sdb1 #创建名称为vg_veeam的卷组
Volume group "vg_veeam" successfully created
[root@FastClone_XFS ~]# lvcreate -l +100%free -n lv_veeam /dev/vg_veeam #创建名称为lg_veeam的逻辑卷,并分配全部可用空间
Logical volume "lv_veeam" created.
[root@FastClone_XFS ~]# mkfs.xfs -b size=4096 -m reflink=1,crc=1 /dev/mapper/vg_veeam-lv_veeam #格式化成xfs文件系统
meta-data=/dev/mapper/vg_veeam-lv_veeam isize=512 agcount=4, agsize=327424 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1309696, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
[root@FastClone_XFS ~]# mkdir /FastClone #创建挂载目录
[root@FastClone_XFS ~]# blkid |grep /dev/mapper/vg_veeam-lv_veeam #获取UUID
/dev/mapper/vg_veeam-lv_veeam: UUID="560bda46-a46b-4994-97ea-e824602397aa" BLOCK_SIZE="512" TYPE="xfs"
[root@FastClone_XFS ~]# echo 'UUID=XXXX /FastClone xfs defaults 0 0' | sudo tee -a /etc/fstab #把上一行的UUID替换此行的XXXX,实现开机自动挂载
UUID=560bda46-a46b-4994-97ea-e824602397aa /FastClone xfs defaults 0 0
[root@FastClone_XFS ~]# mount -a #自动挂载目录
[root@FastClone_XFS ~]# df -Th |grep /FastClone #检查挂载目录及空间大小
/dev/mapper/vg_veeam-lv_veeam xfs 100G 68M 100G 1% /FastClone
[root@FastClone_XFS ~]#

 

二、分析XFS文件系统(Reflink)

首先创建一个1GB的文件,其中of=xfs_test是文件名,bs=1M是最小容量单元,count=1024是生成文件的大小。

[root@FastClone_XFS FastClone]# pwd
/FastClone
[root@FastClone_XFS FastClone]# dd if=/dev/urandom of=xfs_test bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.99281 s, 134 MB/s
[root@FastClone_XFS FastClone]#

执行df -Th命令,检查/FastClone占用空间大小:1.8G。

[root@FastClone_XFS FastClone]# df -Th
Filesystem                   Type     Size Used Avail Use% Mounted on
devtmpfs                     devtmpfs 465M     0 465M   0% /dev
tmpfs                         tmpfs     485M     0 485M   0% /dev/shm
tmpfs                         tmpfs     485M  6.7M 478M   2% /run
tmpfs                         tmpfs     485M     0 485M   0% /sys/fs/cgroup
/dev/mapper/cl-root           xfs       7.5G  1.9G  5.6G  26% /
/dev/sda2                     xfs     1014M 169M 846M  17% /boot
/dev/sda1                     vfat     599M  6.9M 592M   2% /boot/efi
/dev/mapper/vg_veeam-lv_veeam xfs       100G  1.8G   99G   2% /FastClone
tmpfs                         tmpfs     97M     0   97M   0% /run/user/0
[root@FastClone_XFS FastClone]#

使用Reflink参数,创建文件xfs_test的副本。

[root@FastClone_XFS FastClone]# cp -v --reflink=always xfs_test xfs_test_copy
'xfs_test' -> 'xfs_test_copy'
[root@FastClone_XFS FastClone]#

执行ls -hsl命令,检查文件大小:xfs_test、xfs_test_copy分别是1GB。

[root@FastClone_XFS FastClone]# ls -hsl
total 2.0G
1.0G -rw-r--r-- 1 root root 1.0G Jun 25 13:23 xfs_test
1.0G -rw-r--r-- 1 root root 1.0G Jun 25 13:31 xfs_test_copy
[root@FastClone_XFS FastClone]#

执行df -Th命令,再次检查/FastClone占用空间大小:还是1.8G,即生成的xfs_test_copy文件后,并未消耗磁盘占用空间。

[root@FastClone_XFS FastClone]# df -Th
Filesystem                   Type     Size Used Avail Use% Mounted on
devtmpfs                     devtmpfs 465M     0 465M   0% /dev
tmpfs                         tmpfs     485M     0 485M   0% /dev/shm
tmpfs                         tmpfs     485M  6.7M 478M   2% /run
tmpfs                         tmpfs     485M     0 485M   0% /sys/fs/cgroup
/dev/mapper/cl-root           xfs       7.5G  1.9G  5.6G  26% /
/dev/sda2                     xfs     1014M 169M 846M  17% /boot
/dev/sda1                     vfat     599M  6.9M 592M   2% /boot/efi
/dev/mapper/vg_veeam-lv_veeam xfs       100G  1.8G   99G   2% /FastClone
tmpfs                         tmpfs     97M     0   97M   0% /run/user/0
[root@FastClone_XFS FastClone]#
​检查xfs_test、xfs_test_copy两个文件的内容属性,它们都有相同的extent,并且它们在磁盘内部的物理位置相同,所以由此可以证明:创建的xfs_test_copy文件并没有写入任何数据块,只是引用并使用与xfs_test文件相同的数据块1073741824 (262144 blocks of 4096 bytes)
[root@FastClone_XFS FastClone]# filefrag -v xfs_test xfs_test_copy
Filesystem type is: 58465342
File size of xfs_test is 1073741824 (262144 blocks of 4096 bytes)
ext:     logical_offset:       physical_offset: length:   expected: flags:
  0:        0..  262143:         24..    262167: 262144:             last,shared,eof
xfs_test: 1 extent found
File size of xfs_test_copy is 1073741824 (262144 blocks of 4096 bytes)
ext:     logical_offset:       physical_offset: length:   expected: flags:
  0:        0..  262143:         24..    262167: 262144:             last,shared,eof
xfs_test_copy: 1 extent found
[root@FastClone_XFS FastClone]#

 

三、创建Repository并启用Fast Clone

本次不再介绍创建Repository的使用方法,它与创建Linux Repository的方法一致。在此只介绍:User fast cloning on XFS volumes与synthetic full(合成合备份)。

在创建Repository时,勾选:User fast cloning on XFS volumes。如果是Hardened Repository,则需要勾选Make recent backups immutable for X days,才可以实现加固备份数据。

IRilyU.jpg

在创建Backup Job、或Backup Copy Job时,选择创建好的Repository。

9EHCcO.jpg

并选择:synthetic full的执行时间。

JxptIV.jpg

到了执行合成全备份的时间,会执行Fast Clone功能。

EQkxSF.jpg

如果不是XFS文件系统、或者是没有开启User fast cloning on XFS volumes功能,则在合成全备份时无法使用Fast Clone功能。

M8oK6r.jpg

​​

首次全备份时间:06:44s。

UeKMxm.jpg

增量备份时间:02:05s。

If3gQ8.jpg

使用Fast Clone功能的合成全备份(Synthetic full)时间:00:13s。Backup Job、或Backup Copy Job选择备份虚拟机数量越多、容量越大时,节省合成全备份的时间就越明显。

037Bux.jpg

 

四、检查备份文件

查看全成备份生成的备份文件:Backup Job_FastCloneD2022-06-28T001608_D18C.vbk的文件属性。注意:shared的位置。

1XYxxE.jpg

查看首次全备份生成的备份文件:Backup Job_FastCloneD2022-06-25T182903_8633.vbk的文件属性。注意:shared的位置。

Uqo8f9.jpg

通过比较发现:合成全备份生成的vbk文件,里面有部分数据块是直接”指向“首次全备份生成的vbk文件的,即两个vbk文件里面的部分数据块有”shared“关系。

km4cIq.jpg

通过检查df -Th命令行查看到/FastClone目录空间2.8G,比FastClone备份目录下占用的4.1G空间要小的多。

ev3ojd.jpg

 

最后强烈建议:如果Backup Repository是基于Disk的,在Windows系统下格式化成ReFS、Linux系统下格式化成XFS,这样可以使用Fast Clone的技术,可以显著提升合成全备份的效率和节省备份空间。

 

 

 

如对以上过程有技术疑问,请联系本文作者📧:helly.wu@veeam.com


1 comment

厉害,文档清晰明了!感谢!~

Comment