许宏年,孙洪波,孙 琰
(1.长春工程学院现代教育技术中心;3.空军航空大学,长春130012)
随着高校信息化的普及与发展,越来越多的部门都开始重视网站的建设。对于这些部门的维护管理人员来说,他们工作的重心除了正常的维护以外,同时信息安全与存储技术也越来越引起各部门人员的注意,一个良好的备份系统存储方案是一个部门网站生存的关键。目前我们大多使用软件tar、dump等程序备份数据,但是这种备份方式没有控制中心,也没有日志,出错不方便查找,管理起来也相对麻烦。
基于此,本文设计并实现了一种基于Linux的开源备份系统Bacula,该系统有如下特点:
(1)确保文件的属性被完善保存和恢复,因为每一台计算机都安装有一个客户端;
(2)Bacula是一个开源软件,速度快,安装配置相对简单;
(3)模块化的设计使Bacula有很强的扩展性;
(4)内置任务调度程序,并可以设置任务优先级;
(5)数据操作更安全。每个后台程序之间使用CRAM-MD5口令验证,文件数据可以减刑MD5或者SHA1签名验证;
(6)高级功能。备份数据至CD/DVD介质及磁带机,使用Bacula配合建立Linux容灾系统。
Bacula采用模块化设计,核心由3个模块组成。Director模块(Bacula-dir.conf):用于指挥整个系统运行,包括job FileSet schedule等模块配置工作,同时调用另外2个模块工作。另一个是Storage Daemon模块(Bacula-sd.conf):存储端,负责把网络中传来的数据备份到指定的地方,恢复的时候负责把数据传出去。最后一个是File Daemon模块(Bacula-fd.conf):备份时把文件传出,恢复时接受数据并恢复。
通过理论分析可知,可以把任意N台客户机的资料,备份到任意N台存储的机器上。同时在director上就可以知道所有的log(包括什么备份成功了,什么备份失败了,什么备份有错误了)会集中到指定的地方,让管理工作更简单一点。同时要考虑的是,单机备份比较容易,网络备份就需要考虑各个Linux主机的时间差异。图1是系统的体系结构图。
图1 系统体系结构
系统平台:服务器server:操作系统为linuxas4最小化安装,IP为192.172.1.1,角色为备份服务器兼存储服务器,主机为client,IP是192.172.1.2,为需要备份的主机。
2.2.1 Bacula在服务器端的安装
2.2.2 在服务器端创建mysql脚本
2.2.3 Bacula在服务器端上的配置
在配置服务器端文件时,首先要明白Job的概念。Job是一个模块化的设计,要注意一个任务(Job)在执行过程中,需要调用很多其他的参数设置如:Client、FileSet、Schedule等,从而使得任务配置完成。为什么这些配置不全写在Job配置文件中呢,因为如果这么多的参数全部写在Job里,那么就会导致Job的参数设计非常复杂,查找问题的时候也不方便,解决这种问题的办法就是模块化的设计,会使设计和运行都更快一些。
下面简单用一句话说明一下一个Job的执行过程:在建立一个备份任务(job)时,首先需要选择一台备份的计算机(Client),确定需要备份的文件(FileSet)及备份时间周期和备份类型(Schedule),最后选择备份到哪里(Storage),通过对这样类似的十几个设置值进行设置,就完成了一个备份任务(job)。
图2 一个完整JOB的关系图
下面开始在Bacula-dir.conf设计一个完整的job,名称为backupjob1,服务器IP为192.172.1.1,备份的Client客户端的IP为192.172.1.2,为了方便设置,在配置文件里大部分的名称都统一为backupdb。
(1)关于bacula-dir.conf的配置内容
下面我们定义了一个备份的名字(Name)为backupjob1备份的Job,其中作业的类型(Type)为backup(备份),文件集(FileSet)为backupdb,客户端(Client)为backupdb,数据存储的位置(Storage)backupdb,作业的运行计划(Schedule)为backupdb,在这里设置的所有配置名字,都会在下面的模块中分别设置。
FileSet定义了备份或者排除哪些文件。FileSet的Name必须与相关Job的名字相同;Include包括需要备份的文件和目录,特别注意路径只能是绝对路径,每个FileSet可以有多个Include;Options定义了一个Include的选项,包括从中过滤哪些文件、压缩、签名等。
Client为每一台机器定义一个Client资源。通常Client需要设定一个Name;Address是计算机的IP地址;Password是设定与Director建立链接时使用的密码;File Retention设定了文件信息在数据库的保存时间,如果AutoPrune为yes,bacula会自动清理数据,但要注意的是并不会删除备份数据;Job Retention定义了作业信息在数据库保留的时间。
Schedule资源定义了Job的运行计划,特别注意如果Job里没有引用Schedule,那么只能手动运行。每个Schedule可以有多个运行计划,每个运行计划都包括Level、Date-time-specification等,其中时间的配置比较复杂。
(2)关于bacula-sd.conf配置
bacula-sd.conf的配置相对内容需要一些Storage定义了备份的名字、Director定义所要登陆的Director名字和密码、Device定义存储设备的特性。
2.3.1 安装bacula
2.3.2 关于bacula-fd.conf的配置
2.3.3 启动bacula的fd进程
#bacula-ctl-fd start
到此bacula的服务器在客户端的配置全部完成。
在服务器Bacula目录下找执行如下操作:
可以看到有一个大小10M的文件,证明备份成功!
本文设计并实现了一种基于Linux的开源软件Bacula备份系统,通过对服务器和客户端的配置,实现了对远程机器的备份和恢复工作。该系统同时也支持在Windows系统下使用,可直接架构于服务器上,为部门的数据安全提供了一个完整的备份方案。
[1]孙东奇,王秀梅.用Rsync实现Linux文件系统备份[J].教育信息化,2006,2:35-36.
[2]于勇雷,李涛,赵奎等.一种基于Linux的网络备份系统的设计与实现[J].计算机应用研究,2005(11):166-168.
[3]张兴发,蒋朝根.分布式Linux下数据库文件自动备份与恢复[J].计算机时代,2006(1):16-17.