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