centos7 如何使用ReaR进行系统备份(如何使用NFS方法设置ReaR备份)
因为生产业务集群中的服务器比较多,经常出现配置故障,硬件故障,所以就想到系统备份,查了一些相关的资料,国内主流的方法是用tar命令打包整个操作系统,我试了效果并不理想,所以尝试用rear工具进行备份还原
操作系统是
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
官方记录是 6 7 8都可以使用这个工具备份,我只测试了centos7的
首先备份下来的系统是要保存下来的,建议放到其他服务器,或者是专门的存储上,所以此案例使用的nfs的存储方式
----------------------------------------------------前提条件--nfs准备------------------------------------------------------------------
nfs-server:10.0.0.52
nfs-client:10.0.0.51
nfs-server:
nfs需要两个组件
# rpm -qa|grep -E "rpcbind|nfs-utils" rpcbind-0.2.0-47.el7.x86_64 nfs-utils-1.3.0-0.61.el7.x86_64
如果没有的话,自行安装,yum的方式即可
启动nfs服务需要先启动 rpcbind 再启动nfs
systemctl enable rpcbind.service
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
配置服务端
# mkdir /storage # cat /etc/exports /storage *(rw,sync,no_root_squash)
nfs配置文件的参数
ro:表示只读权限 rw:读写权限 sync:数据同步写内存硬盘 async:将数据先保存在内存缓冲区中,必要时才写入磁盘; all_squash:不管你访问共享目录的用户是谁,都必须压缩为nfsnobody用户的权限; no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; root_squash: 如果访问共享目录是root的权限用户,对共享目录的权限会被压缩为nfsnobody用户的权 no_root_squash:来访的root用户保持root帐号权限; no_squash:访问共享目录时,用户如果是root权限,对共享目录也具有root权限(最好不要设置,增加服务安全隐患,稍后再提) anonuid=<UID>:指定匿名访问用户的本地用户UID,要和root_squash 以及 all_squash一同使用; anongid=<GID>:指定匿名访问用户的本地用户组GID,要和root_squash 以及 all_squash一同使用; 【anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid】 secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器; insecure:允许客户端从大于1024的tcp/ip端口连接服务器; wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率; no_wdelay:若有写操作则立即执行,应与sync配合使用; subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限; no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;】
nfs-client
同样的两个组件,安装即可
# rpm -qa|grep -E "rpcbind|nfs-utils" rpcbind-0.2.0-47.el7.x86_64 nfs-utils-1.3.0-0.61.el7.x86_64
先启动rpcbind 在启动nfs 设置开机自启
--------------------------------------------------------------------------至此nfs安装完毕-------------------------------------------------------------------------
在设置ReaR之前,您需要根据您的环境制定备份还原计划。在本教程中,我们将:
- 设置NFS服务器以保存备份文件。
- 将文件备份到NFS服务器并将灾难恢复系统存储到ISO映像。
- 使用灾难恢复系统引导还原服务器并完成恢复。
1.安装rear
# yum install rear genisoimage syslinux
2.修改配置文件
# cat /etc/rear/local.conf # Default is to create Relax-and-Recover rescue media as ISO image # set OUTPUT to change that # set BACKUP to activate an automated (backup and) restore of your data # Possible configuration values can be found in /usr/share/rear/conf/default.conf # # This file (local.conf) is intended for manual configuration. For configuration # through packages and other automated means we recommend creating a new # file named site.conf next to this file and to leave the local.conf as it is. # Our packages will never ship with a site.conf. OUTPUT=ISO OUTPUT_URL=nfs://10.0.0.52/storage BACKUP=NETFS BACKUP_URL=nfs://10.0.0.52/storage BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/var/tmp' '/var/crash') NETFS_KEEP_OLD_BACKUP_COPY=
这里赘述一句,本人英文水平不是特别高,但是通过注释行可以看到,rear配置文件是有个示例文件的/usr/share/rear/conf/default.conf,具体参数的意思,还有可以选的值都有解释,本例中按照我写的是可以实现备份还原的,
更改BACKUP_PROG_EXCLUDE
变量时要小心。这个选项是排除备份的目录,如果你的生产环境数据太大,肯定要单独备份数据,系统备份尽量的只备份系统自带的文件
方法1
BACKUP_PROG_EXCLUDE
为ReaR 添加路径到变量时,请不要省略默认值或包含路径/tmp
。
要将路径/excluded_folder_1/
和文件添加/excluded_file_2
到排除项,请使用以下保留默认值的语法。
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/excluded_folder_1/' '/excluded_file_2')
如果/tmp
未从备份中排除内容,则会出现此问题。一旦备份与/tmp
内容一起恢复,文件结构/tmp
就会导致/sbin/fixfiles
脚本无法重新标记正确引导所需的所有文件。/sbin/fixfiles
在调查表明,问题是影响从符号链接文件的SELinux /tmp
和/var/tmp
目录。
默认情况下,ReaR /tmp
从文件中/usr/share/rear/conf/default.conf
排除备份的内容和其他目录,因此如果不删除默认排除,则可以避免此问题。
... BACKUP_PROG_EXCLUDE=( '/tmp/*' '/dev/shm/*' $VAR_DIR/output/\* ) ...
3.创建灾难恢复系统并生成备份文件
# rear -d -v mkbackup
具体的命令选项可以--help查看,自行查看
Rear将检查当前备份系统并收集必要的信息,如磁盘布局,要排除的文件和引导加载程序等。然后/var/lib/rear/output
默认情况下将创建具有灾难恢复系统的可引导ISO映像。最后,要备份的文件以及可引导的ISO映像将转移到NFS服务器。
4.恢复测试。
(1)将可引导ISO映像刻录到CD或DVD。就是截图中的rear-t2.iso ,这是rear默认保存的名字,软碟通可以刻录
(2)从恢复介质引导测试服务器。
(3)选择Recover <hostname>
。这里hostname
是备份服务器的名称。
(4)以root身份登录,无需密码。
(5)将备份恢复到此测试服务器:
# rear -d -v recover
(6)恢复备份后,可以选择留在灾难恢复系统的shell中以检查测试服务器上的重新创建。如果一切正常,请重新启动测试服务器并从本地硬盘启动。进入rear的shell之后,系统默认的路径是在/mnt/local中,就像救援模式根目录在/mnt/sysimage中一样,也就是说/mnt/local就是根目录
(7)确保SELinux在下次启动时重新标记文件:
# touch /mnt/local/.autorelabel
否则可能无法登录系统,因为/etc/passwd文件可能具有不正确的SELinux上下文。
(8)最后重启就行了,选择从本地磁盘启动,已经重建成功了,进去系统之后,我之前的文件都在,编译安装的ssh版本也是8.0,并不是系统自带的6.6
提示:Automatic Recover <hostname>
只要手动恢复测试服务器时没有发生错误,您也可以选择自动执行恢复过程。
如果发生灾难,您可以按照Recovery test
已测试且与备份服务器具有相同硬件的服务器部分中所述继续执行恢复步骤。