xfs文件系统的完全备份、增量备份及数据恢复

一、文件系统

什么是文件管理系统,顾名思义,就是管理文件的一套系统,比如用于对文件的编辑、移动、拷贝、粘贴等。主要用于控制所有程序在不使用数据时如何存储数据、如何访问数据等等。

二、文件系统类型

centos7.0开始默认文件系统是xfs
centos6默认文件系统是ext4
centos5默认文件系统是ext3

2.1 EXT文件系统

实际上最早使用的是MINIX文件系统,MINIX文件系统用于IBM PC/AT 微型计算机,作为该微型计算机的文件扩展系统。但是它并不是自由开源的系统,是需要付费才能使用的。大家可以来看一下IBM PC/AT微型计算机的样式,感觉还是不错的,挺有年代感。
IBM PC/AT 微型计算机

2.1.1 EXT(first extended filesystem)

第一代文件扩展系统,该文件系统解决了MINIX文件系统中数据存储容量、性能等问题。ext可以处理高达2GB存储空间并处理 255个字符的文件名。而MINIX文件系统最多能处理14个字符的文件名,并且只能处理64MB的存储空间。

2.1.2 EXT2(second extended filesystem)

第二代扩展文件系统,文件由inode进行唯一标识,因此该文件系统也被称“索引式文件系统”,是LINUX内核所用的文件系统,它取代了EXT文件系统。最大可支持2TB的文件系统,到linux核心2.6版时,扩展到可支持32TB。但由于目前核心2.4所能使用的单一分割区最大只有2048GB(2TB),实际上能使用的文件系统容量最多也只有 2048GB(2TB)。该文件系统也存在一些问题,如果在将数据写入到磁盘的时候,系统发生崩溃或断电,则容易发生灾难性的数据损坏。

2.1.3 EXT3(Third extended filesystem)

第三代扩展文件系统,它属于一种日志文件系统,是对ext2系统文件的扩展及数据存储安全性能的优化,同时它也兼容ext2文件系统。所谓“日志式文件系统” ,其最大的特点是:它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。

2.1.4 EXT4(Fourth extended filesystem)

第四代文件扩展系统,由ext3文件系统改进而来。Theodore Ts’o(是当时 ext3 主要开发人员)在2006年发表的ext4,于两年后在2.6.28内核版本中被加入到了Linux 主线。Ts’o 将ext4描述为一个显著扩展ext3但仍然依赖于旧技术的临时技术。它支持大文件系统,提高了对碎片的抵抗力。EXT家族文件系统有以下几个特点:

  • EXT家族支持度最广;
  • 创建文件系统(格式化)慢;
  • 修复慢;
  • 文件系统存储容量有限。

2.2 XFS文件系统

XFS是一种日志文件系统,被称为业界最先进的、最具可升级性的文件系统技术,其性能要优于EXT家族的文件系统。在centos7版本都是选择xfs格式作为默认的文件系统,该版本仍然支持ext4文件系统。对于XFS文件系统,每个单文件系统最大可以支持8EB,单个文件可以支持16TB。

然而对于XFS、EXT4文件系统来说:拥有一个日志文件系统只能在掉电或者和存储设备意外断开连接时提供数据安全性,并不能在文件系统出磁盘损坏或者发生逻辑错误时保护数据。对于这种情况,用户可以采用廉价的磁盘冗余阵列的方案,也就是经常说的安装系统之前先做raid,目的就是为了在我某一块磁盘坏掉时保证数据的不丢失(即通过校验机制对数据的重构),从而保证数据的安全性、完整性。XFS文件系统具有以下特点:

  • 高容量,支持大存储;
  • 高性能,创建/修复文件系统快;
  • 格式化速度快。

三、数据备份的方式

  • 完全备份(Full Backup) :完全备份就是每次把指定的备份目录完整复制一遍,不管目录下的文件有没有变化。
  • 增量备份(Differential Backup):所谓的增量备份就是每次将之前做过备份之后有变化的文件进行备份。比如, 第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。
  • 差异备份(Incremental Backup ):对于差异备份就是每次都将第一次完整备份以来有变化的文件进行备份。
备份工具 数据恢复工具
xfsdump xfsrestore

本次的xfs文件系统的备份和备份后的数据恢复用的就是以上两个工具。


四、XFS文件系统完全备份及恢复

4.1 文件系统完全备份

4.1.1 备份工具(xfsdump)

XFS文件系统提供了xfsdump和xfsrestore工具协助备份XFS文件系统中的数据,xfsdump按inode顺序备份一个XFS文件系统。

与传统的UNIX文件系统不同,XFS不需要在备份前被卸载,对于使用中的XFS文件系统做备份就可以保证镜像的一致性。在备份和恢复的过程是可以被中断然后继续的,无需冻结文件系统,xfsdump提供了高性能的多线程备份操作,即它可以把一次备份的数据拆分为多个数据流,每个数据流可以被发往不同的目的地。

4.1.2 备份等级

0        --完全备份(文件系统默认备份等级)
1—9      --增量备份

事先做好准备测试环境:做文件系统并挂载使用。

(1)查看磁盘情况:

lsblk
df -Th
ls /dev/sd*

在这里插入图片描述
(2)磁盘做分区:

fdisk /dev/sdb

在这里插入图片描述
(3)磁盘格式化(制作文件系统):

mkfs.xfs /dev/sdb1

在这里插入图片描述
(4)挂载使用:

mkdir /sdb              --创建挂载点
mount /dev/sdb1 /sdb    --挂载
df -Th                  --查看挂载情况

在这里插入图片描述
(5)准备测试文件:

mkdir /sdb/test
cd /sdb/test
echo 系统文件拷贝 > a.txt
echo 系统文件备份 > b.txt
tree /sdb/    --以树状形式查看

4.1.3 文件系统备份

(1)备份整个分区:

采用交互式操作。

语法:xfsdump -f [备份存放路径] [要备份的的设备或挂载点]
-----------------------------------------------------------------------------------------
【注意】:备份的路径这里不能写/sdb1/,可以写成/dev/sdb1或/sdb1
mkdir /back   --创建用于存放系统文件备份的目录
xfsdump -f /back/dump_sdb1 /dev/sdb1  --把分区备份到/back/目录下并命名为dump_sdb1

在这里插入图片描述
(2)备份整个分区:

免交互式操作,方便做后期通过任务计划做定时备份。

语法:xfsdump -f [备份存放路径] [要备份的的设备或挂载点] -L [会话标签名] -M [设备标签名]
-----------------------------------------------------------------------------------------
参数解释:
-f    --指定备份到哪个目录
-L    --指定会话标签
-M    --指定设备标签
xfsdump -f /back/dump_sdb1_0 /dev/sdb1 -L dump_sdb1_0 -M sdb1_0

在这里插入图片描述
(3)备份分区中某个目录或文件:

语法:xfsrestore -f [备份存放路径] -s [要备份的目录或文件的相对路径] -L [会话标签名] -M [设备标签名]
参数解释:
-s      --指定分区中文件或目录的相对路径
xfsdump -f /back/dump_sda1_0 -s grub2/grub.cfg /boot -L dump_sda1_0 -M sda1_0

在这里插入图片描述
(4)查看已备份的文件系统:

每次备份成功后,都会在/var/lib/xfsdump/inventory 目录下生成档案信息,详细记录备份的信息,如挂载点、挂载设备、会话标签、设备标签、备份目录等相关信息。
cd /var/lib/xfsdump/inventory
xfsdump -I

在这里插入图片描述

4.2 文件系统数据恢复

4.2.1 恢复工具(xfsrestore)

拷贝的数据恢复工具使用的是xfsrestore,而且只能用这个工具来解析。

语法:xfsrestore -f [已备份文件路径] [恢复后的文件路径]

(1)先删除挂载点下的内容:
在这里插入图片描述
(2)恢复文件系统数据:
在这里插入图片描述
(3)tree查看,数据成功恢复:
在这里插入图片描述
【注意】:

(1)xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统;
(2)xfsdump必须使用root的权限才能操作;
(3)xfsdump只能备份xfs文件系统;
(4)xfsdump备份下来的数据只能让xfsrestore来解析;
(5)xfsdump是通过文件系统的UUID来分辨备份档案的,因此不能备份两个具有相同UUID的文件系统。

五、XFS文件系统增量备份及恢复

5.1 第一次增量备份

(1)向挂载目录增加新内容:

mkdir /sdb/test1
echo "第一次增量备份" > /sdb/test1/a1.txt
echo "第一次增量备份" > /sdb/test1/b1.txt
tree /sdb/

在这里插入图片描述

(2)一次增量备份:

等级为1的一次增量备份

【注意】前提得先完整备份一次:
xfsdump -f /back/dump_sdb1_0 /sdb1 -L dump_sdb1_0 -M sdb1_0 --先完整备份一次
xfsdump -l 1 -f /back/dump_sdb1_1 /dev/sdb1 -L dump_sdb1_1 -M sdb1_1   
-----------------------------------------------------------------------------------------
参数解释:
l   ---指定备份等级

在这里插入图片描述

5.2 第二次增量备份

(1)再次向挂载目录增加新内容:

mkdir /sdb/test2
echo "第二次增量备份" > /sdb/test1/a2.txt
echo "第二次增量备份" > /sdb/test1/b2.txt
tree /sdb/

在这里插入图片描述
(2)二次增量备份:

等级为2的二次增量备份

xfsdump -l 2 -f /back/dump_sdb1_2 /dev/sdb1 -L dump_sdb1_2 -M sdb1_2  

在这里插入图片描述
(3)看看存放备份的目录:
在这里插入图片描述

5.3 增量备份数据恢复

先删掉挂载点/sdb/下的数据(为了测试效果)。

5.3.1 先恢复完全备份

此时会有两种情况,不同情况的恢复方式不同,需注意。

  • 情况1:如果两次增量备份都是1级备份,只需恢复最后一次增量即可。
  • 情况2:如果第一次是1级备份,第二次是2级备份,则恢复数据时先恢复完全备份,然后是1级备份,最后再是2级备份。[ 上述案例操作属于第二种情况 ]

5.3.2 针对情况2的数据恢复

(1)先删掉/sdb/下的数据:
在这里插入图片描述
(2)先完全恢复:

xfsrestore -f /back/dump_sdb1_0 /sdb/    --完全恢复

在这里插入图片描述
在这里插入图片描述
(3)恢复第一次备份:

xfsrestore -f /back/dump_sdb1_1 /sdb/    --恢复第1次备份

在这里插入图片描述
在这里插入图片描述
(4)恢复第二次备份:

xfsrestore -f /back/dump_sdb1_2 /sdb/    --恢复第2级备份

在这里插入图片描述
在这里插入图片描述
至此,数据成功恢复。

猜你喜欢

转载自blog.csdn.net/IT_ZRS/article/details/108035746