因为生产业务集群中的服务器比较多,经常出现配置故障,硬件故障,所以就想到系统备份,查了一些相关的资料,国内主流的方法是用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,具体参数的意思,还有可以选的值都有解释,本例中按照我写的是可以实现备份还原的,
方法1
BACKUP_PROG_EXCLUDE
为ReaR 添加路径到变量时,请不要省略默认值或包含路径/tmp
。
要将路径/excluded_folder_1/
和文件添加/excluded_file_2
到排除项,请使用以下保留默认值的语法。
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/excluded_folder_1/' '/excluded_file_2')
... 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
是备份服务器的名称。
# rear -d -v recover
(7)确保SELinux在下次启动时重新标记文件:
# touch /mnt/local/.autorelabel
否则可能无法登录系统,因为/etc/passwd文件可能具有不正确的SELinux上下文。
(8)最后重启就行了,选择从本地磁盘启动,已经重建成功了,进去系统之后,我之前的文件都在,编译安装的ssh版本也是8.0,并不是系统自带的6.6
如果发生灾难,您可以按照Recovery test
已测试且与备份服务器具有相同硬件的服务器部分中所述继续执行恢复步骤。