許宏年,孫洪波,孫 琰
(1.長(zhǎng)春工程學(xué)院現(xiàn)代教育技術(shù)中心;3.空軍航空大學(xué),長(zhǎng)春130012)
隨著高校信息化的普及與發(fā)展,越來(lái)越多的部門(mén)都開(kāi)始重視網(wǎng)站的建設(shè)。對(duì)于這些部門(mén)的維護(hù)管理人員來(lái)說(shuō),他們工作的重心除了正常的維護(hù)以外,同時(shí)信息安全與存儲(chǔ)技術(shù)也越來(lái)越引起各部門(mén)人員的注意,一個(gè)良好的備份系統(tǒng)存儲(chǔ)方案是一個(gè)部門(mén)網(wǎng)站生存的關(guān)鍵。目前我們大多使用軟件tar、dump等程序備份數(shù)據(jù),但是這種備份方式?jīng)]有控制中心,也沒(méi)有日志,出錯(cuò)不方便查找,管理起來(lái)也相對(duì)麻煩。
基于此,本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Linux的開(kāi)源備份系統(tǒng)Bacula,該系統(tǒng)有如下特點(diǎn):
(1)確保文件的屬性被完善保存和恢復(fù),因?yàn)槊恳慌_(tái)計(jì)算機(jī)都安裝有一個(gè)客戶端;
(2)Bacula是一個(gè)開(kāi)源軟件,速度快,安裝配置相對(duì)簡(jiǎn)單;
(3)模塊化的設(shè)計(jì)使Bacula有很強(qiáng)的擴(kuò)展性;
(4)內(nèi)置任務(wù)調(diào)度程序,并可以設(shè)置任務(wù)優(yōu)先級(jí);
(5)數(shù)據(jù)操作更安全。每個(gè)后臺(tái)程序之間使用CRAM-MD5口令驗(yàn)證,文件數(shù)據(jù)可以減刑MD5或者SHA1簽名驗(yàn)證;
(6)高級(jí)功能。備份數(shù)據(jù)至CD/DVD介質(zhì)及磁帶機(jī),使用Bacula配合建立Linux容災(zāi)系統(tǒng)。
Bacula采用模塊化設(shè)計(jì),核心由3個(gè)模塊組成。Director模塊(Bacula-dir.conf):用于指揮整個(gè)系統(tǒng)運(yùn)行,包括job FileSet schedule等模塊配置工作,同時(shí)調(diào)用另外2個(gè)模塊工作。另一個(gè)是Storage Daemon模塊(Bacula-sd.conf):存儲(chǔ)端,負(fù)責(zé)把網(wǎng)絡(luò)中傳來(lái)的數(shù)據(jù)備份到指定的地方,恢復(fù)的時(shí)候負(fù)責(zé)把數(shù)據(jù)傳出去。最后一個(gè)是File Daemon模塊(Bacula-fd.conf):備份時(shí)把文件傳出,恢復(fù)時(shí)接受數(shù)據(jù)并恢復(fù)。
通過(guò)理論分析可知,可以把任意N臺(tái)客戶機(jī)的資料,備份到任意N臺(tái)存儲(chǔ)的機(jī)器上。同時(shí)在director上就可以知道所有的log(包括什么備份成功了,什么備份失敗了,什么備份有錯(cuò)誤了)會(huì)集中到指定的地方,讓管理工作更簡(jiǎn)單一點(diǎn)。同時(shí)要考慮的是,單機(jī)備份比較容易,網(wǎng)絡(luò)備份就需要考慮各個(gè)Linux主機(jī)的時(shí)間差異。圖1是系統(tǒng)的體系結(jié)構(gòu)圖。
圖1 系統(tǒng)體系結(jié)構(gòu)
系統(tǒng)平臺(tái):服務(wù)器server:操作系統(tǒng)為linuxas4最小化安裝,IP為192.172.1.1,角色為備份服務(wù)器兼存儲(chǔ)服務(wù)器,主機(jī)為client,IP是192.172.1.2,為需要備份的主機(jī)。
2.2.1 Bacula在服務(wù)器端的安裝
2.2.2 在服務(wù)器端創(chuàng)建mysql腳本
2.2.3 Bacula在服務(wù)器端上的配置
在配置服務(wù)器端文件時(shí),首先要明白Job的概念。Job是一個(gè)模塊化的設(shè)計(jì),要注意一個(gè)任務(wù)(Job)在執(zhí)行過(guò)程中,需要調(diào)用很多其他的參數(shù)設(shè)置如:Client、FileSet、Schedule等,從而使得任務(wù)配置完成。為什么這些配置不全寫(xiě)在Job配置文件中呢,因?yàn)槿绻@么多的參數(shù)全部寫(xiě)在Job里,那么就會(huì)導(dǎo)致Job的參數(shù)設(shè)計(jì)非常復(fù)雜,查找問(wèn)題的時(shí)候也不方便,解決這種問(wèn)題的辦法就是模塊化的設(shè)計(jì),會(huì)使設(shè)計(jì)和運(yùn)行都更快一些。
下面簡(jiǎn)單用一句話說(shuō)明一下一個(gè)Job的執(zhí)行過(guò)程:在建立一個(gè)備份任務(wù)(job)時(shí),首先需要選擇一臺(tái)備份的計(jì)算機(jī)(Client),確定需要備份的文件(FileSet)及備份時(shí)間周期和備份類型(Schedule),最后選擇備份到哪里(Storage),通過(guò)對(duì)這樣類似的十幾個(gè)設(shè)置值進(jìn)行設(shè)置,就完成了一個(gè)備份任務(wù)(job)。
圖2 一個(gè)完整JOB的關(guān)系圖
下面開(kāi)始在Bacula-dir.conf設(shè)計(jì)一個(gè)完整的job,名稱為backupjob1,服務(wù)器IP為192.172.1.1,備份的Client客戶端的IP為192.172.1.2,為了方便設(shè)置,在配置文件里大部分的名稱都統(tǒng)一為backupdb。
(1)關(guān)于bacula-dir.conf的配置內(nèi)容
下面我們定義了一個(gè)備份的名字(Name)為backupjob1備份的Job,其中作業(yè)的類型(Type)為backup(備份),文件集(FileSet)為backupdb,客戶端(Client)為backupdb,數(shù)據(jù)存儲(chǔ)的位置(Storage)backupdb,作業(yè)的運(yùn)行計(jì)劃(Schedule)為backupdb,在這里設(shè)置的所有配置名字,都會(huì)在下面的模塊中分別設(shè)置。
FileSet定義了備份或者排除哪些文件。FileSet的Name必須與相關(guān)Job的名字相同;Include包括需要備份的文件和目錄,特別注意路徑只能是絕對(duì)路徑,每個(gè)FileSet可以有多個(gè)Include;Options定義了一個(gè)Include的選項(xiàng),包括從中過(guò)濾哪些文件、壓縮、簽名等。
Client為每一臺(tái)機(jī)器定義一個(gè)Client資源。通常Client需要設(shè)定一個(gè)Name;Address是計(jì)算機(jī)的IP地址;Password是設(shè)定與Director建立鏈接時(shí)使用的密碼;File Retention設(shè)定了文件信息在數(shù)據(jù)庫(kù)的保存時(shí)間,如果AutoPrune為yes,bacula會(huì)自動(dòng)清理數(shù)據(jù),但要注意的是并不會(huì)刪除備份數(shù)據(jù);Job Retention定義了作業(yè)信息在數(shù)據(jù)庫(kù)保留的時(shí)間。
Schedule資源定義了Job的運(yùn)行計(jì)劃,特別注意如果Job里沒(méi)有引用Schedule,那么只能手動(dòng)運(yùn)行。每個(gè)Schedule可以有多個(gè)運(yùn)行計(jì)劃,每個(gè)運(yùn)行計(jì)劃都包括Level、Date-time-specification等,其中時(shí)間的配置比較復(fù)雜。
(2)關(guān)于bacula-sd.conf配置
bacula-sd.conf的配置相對(duì)內(nèi)容需要一些Storage定義了備份的名字、Director定義所要登陸的Director名字和密碼、Device定義存儲(chǔ)設(shè)備的特性。
2.3.1 安裝bacula
2.3.2 關(guān)于bacula-fd.conf的配置
2.3.3 啟動(dòng)bacula的fd進(jìn)程
#bacula-ctl-fd start
到此bacula的服務(wù)器在客戶端的配置全部完成。
在服務(wù)器Bacula目錄下找執(zhí)行如下操作:
可以看到有一個(gè)大小10M的文件,證明備份成功!
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Linux的開(kāi)源軟件Bacula備份系統(tǒng),通過(guò)對(duì)服務(wù)器和客戶端的配置,實(shí)現(xiàn)了對(duì)遠(yuǎn)程機(jī)器的備份和恢復(fù)工作。該系統(tǒng)同時(shí)也支持在Windows系統(tǒng)下使用,可直接架構(gòu)于服務(wù)器上,為部門(mén)的數(shù)據(jù)安全提供了一個(gè)完整的備份方案。
[1]孫東奇,王秀梅.用Rsync實(shí)現(xiàn)Linux文件系統(tǒng)備份[J].教育信息化,2006,2:35-36.
[2]于勇雷,李濤,趙奎等.一種基于Linux的網(wǎng)絡(luò)備份系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2005(11):166-168.
[3]張興發(fā),蔣朝根.分布式Linux下數(shù)據(jù)庫(kù)文件自動(dòng)備份與恢復(fù)[J].計(jì)算機(jī)時(shí)代,2006(1):16-17.
長(zhǎng)春工程學(xué)院學(xué)報(bào)(自然科學(xué)版)2011年4期