引言:在信息化推進的過程中,各種業(yè)務系統(tǒng)和應用遍地開花,產(chǎn)生大量業(yè)務的數(shù)據(jù)。與此同時,虛擬化技術(shù)的應用推廣,把各個業(yè)務系統(tǒng)的應用和數(shù)據(jù)分離到獨立的服務器上,以方便管理升級維護,充分利用硬件資源。這必然導致網(wǎng)絡(luò)中心的數(shù)據(jù)備份工作增加許多。那么,要如何應對越來越多的數(shù)據(jù)備份工作呢?本文將就這一問題深入探討一番。
在信息系統(tǒng)安全等級保護工作中,圍繞計算機系統(tǒng)所采取的許多安全保護措施,都是為了保證系統(tǒng)數(shù)據(jù)在應用、存儲、傳輸和處理等過程中的安全性,以實現(xiàn)數(shù)據(jù)的機密性、完整性、可控性和不可否認性,同時可以進行數(shù)據(jù)備份和恢復。本文主要關(guān)注其中的數(shù)據(jù)備份工作。
數(shù)據(jù)安全威脅主要來自以下幾種形式:
1.數(shù)據(jù)存儲設(shè)備故障。這是最普通的情況,隨著數(shù)據(jù)存儲設(shè)備性能的提高與改進,這種故障會進一步減少。
2.數(shù)據(jù)存儲介質(zhì)毀壞。這里包括機械性毀損和電磁性毀損,包括人為因素造成的損壞、意外事件造成的損壞和介質(zhì)壽命因素造成的損壞等。通過使用冗余設(shè)備,這種故障能得到有效抑制。3.各種天災造成的損壞。包括地震、海嘯和山崩等地質(zhì)災害,以及風災、水災、雪災、火災、低溫和高溫等災害造成的數(shù)據(jù)系統(tǒng)損壞。
4.衍生災害。天災人禍都可能引發(fā)衍生性災害,可能造成電力系統(tǒng),天、地通信系統(tǒng)等損壞,進而導致數(shù)據(jù)系統(tǒng)損壞。
5.人為無意因素造成對數(shù)據(jù)誤操作引發(fā)的數(shù)據(jù)損失,甚至是數(shù)據(jù)災難。
6.人為有意因素造成的數(shù)據(jù)損壞。例如黑客、病毒和惡意程序攻擊等有意因素,都會對數(shù)據(jù)造成破壞。
為此,為了保障數(shù)據(jù)安全,我們必須根據(jù)數(shù)據(jù)的重要性和本單位的實際情況,采取相應的數(shù)據(jù)備份策略和備份技術(shù)來保障數(shù)據(jù)的安全可用。
差異備份策略在避免了完全備份和增量備份兩種策略缺陷的同時,又具有它們的所有優(yōu)點。
數(shù)據(jù)備份技術(shù)主要有雙機熱備、數(shù)據(jù)冷備份、數(shù)據(jù)異地備份等。
我們單位目前主要采取的數(shù)據(jù)備份策略是異地磁盤每周全份、每天增備,而數(shù)據(jù)備份方式主要有:
1.采購有授權(quán)備份節(jié)點數(shù)限制的備份軟件對重要的幾臺服務器數(shù)據(jù)進行備份。
2.通過創(chuàng)建快照或者克隆對虛擬機進行備份。
3.通過FTP方式進行網(wǎng)絡(luò)備份。
4.通過移動硬盤的方式進行離線備份。
現(xiàn)有的手工備份工作繁瑣,查漏麻煩,購買商業(yè)軟件的授權(quán)節(jié)點數(shù)又面臨資金問題。隨著需要備份的數(shù)據(jù)越來越多,是繼續(xù)購買授權(quán)節(jié)點數(shù)還是繼續(xù)手工備份呢?
我們在此過程中,一直在考慮其他性價比高的解決方案。比如,是否可以通過開源軟件進行備份,并把它集成進我們最近構(gòu)建的開源網(wǎng)絡(luò)運維統(tǒng)一平臺,實現(xiàn)與其他網(wǎng)絡(luò)管理工作在同一個平臺管理,避免在多個平臺進行管理或是手工操作而導致的管理不便。
Rsync是類UNIX系統(tǒng)下的數(shù)據(jù)鏡像備份工具——Remote sync(遠程同步)。它是一個遠程數(shù)據(jù)同步工具,可通過LAN 或互聯(lián)網(wǎng)快速同步多臺主機間的文件。
Rsync本來是用以取代 rcp的一個工具,它當前由 rsync.samba.org 維護。Rsync 使用所謂的”Rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。
(1)鏡像:可以鏡像保存整個目錄樹和文件系統(tǒng),可以很容易做到保持原來文件的權(quán)限、時間、軟硬鏈接等等。
(2)快速:第一次同步時,Rsync 會復制全部內(nèi)容,但在下一次只傳輸修改過的文件。
(3)省帶寬:Rsync在傳輸數(shù)據(jù)的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
(4)安全:可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接,支持匿名傳輸,以方便進行網(wǎng)站鏡象。
(5)特權(quán):安裝和執(zhí)行Rsync 無需特別的權(quán)限。
Rsync之所以同步文件的速度相當快,是因為“Rsync同步算法”能在很短的時間內(nèi)計算出需要備份的數(shù)據(jù),關(guān)于Rsync的同步算法描述如下:
假定A與B是在1號和2號兩臺計算機之間同步相似的文件,其中1號對文件A擁有訪問權(quán),2號對文件B擁有訪問權(quán)。并且假定主機1號與2號之間的網(wǎng)絡(luò)帶寬很小。那么Rsync算法將通過下面的五個步驟來完成:
(1) 2號將文件B分割成一組不重疊的固定大小為S字節(jié)的數(shù)據(jù)塊,最后一塊可能會比S?。?/p>
(2) 2號對每一個分割好的數(shù)據(jù)塊執(zhí)行兩種校驗:一種是32位的滾動弱校驗,另一種是128位的MD4強校驗;
(3) 2號將這些校驗結(jié)果發(fā)給1號;
(4) 1號通過搜索文件A的所有大小為S的數(shù)據(jù)塊(偏移量可以任選,不一定非要是S的倍數(shù)),來尋找與文件B的某一塊有著相同的弱校驗碼和強校驗碼的數(shù)據(jù)塊。這項工作可以借助滾動校驗的特性很快完成;
(5) 1號發(fā)給2號一串指令來生成文件A在2號上的備份。這里的每一條指令要么是對文件B經(jīng)擁有某一個數(shù)據(jù)塊而不需重傳的證明,要么是一個數(shù)據(jù)塊,這個數(shù)據(jù)塊肯定是沒有與文件B的任何一個數(shù)據(jù)塊匹配上的。
必須同時在備份源服務器A和備份目標服務器B上都安裝Rsync,其中服務器A上是以服務器模式運行Rsync,而服務器B上則以客戶端方式運行Rsync。這樣在服務器A上運行Rsync守護進程,在備份服務器B上定時運行客戶程序來備份源服務器A上需要備份的內(nèi)容。
根據(jù)學校的數(shù)據(jù)備份的實際需求和開源工具的比較,我們選擇比較成熟的Rsync軟件,在實現(xiàn)數(shù)據(jù)同步的同時,把同步日志發(fā)送到以Cacti為基礎(chǔ)搭建的統(tǒng)一網(wǎng)管平臺的Syslog模塊里進行統(tǒng)一管理,并結(jié)合統(tǒng)一網(wǎng)管平臺的Threshold模塊實現(xiàn)異常報警,構(gòu)建統(tǒng)一網(wǎng)絡(luò)數(shù)據(jù)備份系統(tǒng),具體建設(shè)方案如下:在Linux下 用 Rsync+Syslog,再 用cwRsync+NTsyslog。
基本備份功能通過免費軟件Rsync實現(xiàn),Linux和Windows操作系統(tǒng)均有相應的Rsync軟件。
(1)安裝Rsync軟件
Centos下安裝Rsync的命令為yum install rsync。
Window s下 安裝 cw Rsync則 是下載經(jīng)典免費版本cwRsyncServer-v4.1.0,按默認方式安裝即可。
(2)配置服務器端
Centos下配置Rsync的命令為vim /etc/rsyncd.conf,Windows下的配置文件路徑則為“C:Program Files (x86)ICW sync.conf”。
下面以Windows下的配置文件為例,Centos下類之:
##全局參數(shù)開始##
use chroot = false #如果“use chroot”指定為true,那么Rsync在傳輸文件前,首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實現(xiàn)額外的安全防護,但是缺點是需要root權(quán)限,并且不能備份指向外部的符號連接所指向的目錄文件,默認情況下chroot的值為true。
strict modes = false #該選項指定是否監(jiān)測密碼文件的權(quán)限,如果該選項值為true,那么密碼文件只能被rsync服務器運行身份的用戶訪問,其他任何用戶不能訪問該文件,默認值為true。
hostsallow =192.168.1.100 #指該選項指定哪些IP的客戶允許連接該模塊??蛻裟J蕉x可以是以下形式:單個IP地址,例如:192.167.0.1;整個網(wǎng)段,例如 :192.168.0.0/24,也可以是192.168.0.0 /255.255.255.0。
多個IP或網(wǎng)段需要用空格隔開,“*”則表示所有,默認是允許所有主機連接。
hosts deny = * #指定不允許連接Rsync服務器的機器,可以使用hosts allow的定義方式來進行定義。默認是沒有hosts deny定義。
log file = rsyncd.log#指定Rsync的日志文件,而不把日志發(fā)送給syslog
#為了集中管理日志,上行需注釋掉,以便log不存在本地而是發(fā)到syslog
pid file = rsyncd.pid#指定Rsync的pid文件
port = 873 # 指定服務運行端口,默認是873
uid = 0 #不指定用戶id,不加這一行將無法使用任何賬戶
gid = 0 #不指定用戶組id
max connections = 10#指定該模塊的最大并發(fā)連接數(shù)量以保護服務器,超過限制的連接請求被告知隨后再試。默認值是0,也就是沒有限制。
##全局參數(shù)結(jié)束##
#以下為模塊參數(shù),我們可以通過根據(jù)自己的需要,來指定多個模塊
read only = false #該選項設(shè)定是否允許客戶上載文件,如果為true那么所有的上載請求都會失敗,如果為false并且服務器目錄讀寫權(quán)限允許那么上載是允許的,默認值為true。
transfer logging = yes#使Rsync服務器使用ftp格式的文件來記錄下載和上載操作在自己單獨的日志中
lock file = rsyncd.lock #指定支持max connections參數(shù)的鎖文件
#auth users = servicescada #認證用戶名
#secrets file = rsync.password #認證用戶的用戶名和密碼存儲位置
##模塊test參數(shù)結(jié)束
定期執(zhí)行功能,通過操作系統(tǒng)的計劃任務實現(xiàn)。
(1)Centos下 通 過crontab命令加入操作系統(tǒng)的計劃任務
此計劃任務為每天凌晨1:00以root用戶和指定的/etc/rsyncd.password文件內(nèi)保存的密碼登錄192.168.1.1,把 192.168.1.1的test模塊里的文件夾同步到本地的/home/backup/192.168.1.1/目錄,同步參數(shù)為azu(其中-a, --archive歸 檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬 性,等 于 -rlptgoD;-z,--compress對備份的文件在傳輸時進行壓縮處理;-u, --update僅僅進行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時間晚于要備份的文件,不覆蓋更新的文件)。
我們亦可以通過寫shell腳本來實現(xiàn)豐富功能,比如實現(xiàn)每7天全備、每天差備,調(diào)用系統(tǒng)的mailx軟件在同步異常或恢復時發(fā)送郵件通知。
(2)Windows下通過系統(tǒng)控制面板里的計劃任務來實現(xiàn)。
建立bat文件內(nèi)容如下:
然后在控制面板的計劃任務里面添加相應的任務即可。Windows下亦可以通過bat腳本調(diào)用vb script來實現(xiàn)以上Centos里用shell來實現(xiàn)的豐富功能。
服務器在安裝好Rsync軟件后,可能在后續(xù)的系統(tǒng)更新或是安裝其他軟件時破壞了Rsync服務而導致無法同步。那么我們能不能像監(jiān)控網(wǎng)頁、數(shù)據(jù)庫服務一樣來對此服務進行實時監(jiān)控呢?
我們可以選擇Windows下的hostmonitor、whats up等服務監(jiān)控軟件進行監(jiān)控,而筆者此處是選擇了已經(jīng)集成在網(wǎng)絡(luò)運維統(tǒng)一平臺里的Nagios模塊對此服務進行實時監(jiān)控,并在服務異常時調(diào)用Threshold發(fā)送郵件報警。
我們在前面的Rsync配置文件rsync.conf中提到需要注釋log file = rsyncd.log,以便Rsync軟件把日志作為系統(tǒng)日志syslog處理。
在UNIX類操作系統(tǒng)上,syslog廣泛應用于系統(tǒng)日志。syslog日志消息既可以記錄在本地文件中,也可以通過網(wǎng)絡(luò)發(fā)送到接收syslog的服務器。接收syslog的服務器可以對多個設(shè)備的syslog消息進行統(tǒng)一的存儲,或者解析其中的內(nèi)容做相應的處理。常見的應用場景是網(wǎng)絡(luò)管理工具、安全管理系統(tǒng)、日志審計系統(tǒng)。
修改備份源服務器的/etc/syslog.conf文 件,在有關(guān)配置行的操作動作部分用一個“@”字符+日志服務器IP。如*.*@192.168.1.200
在Windows操作系統(tǒng)下沒有自帶syslog客戶端軟件,但可以通過安裝NTSyslog軟件來實現(xiàn)把系統(tǒng)日志轉(zhuǎn)發(fā)到指定的日志服務器。
筆者的日志服務器為用Cacti搭建的網(wǎng)絡(luò)運維統(tǒng)一平臺里的服務器,通過其中的Syslog模塊來查看相應的服務器、防火墻、交換機、IPS等日志,此處特別針對Rsync的日志做了二次開發(fā),以方便在Syslog模塊下查看。
與傳統(tǒng)的cp、tar備份方式相比,Rsync具有安全性高、備份迅速、支持增量備份等優(yōu)點,通過Rsync可以解決對實時性要求不高的數(shù)據(jù)備份需求,例如定期的備份文件服務器數(shù)據(jù)到遠端服務器,對本地磁盤定期做數(shù)據(jù)鏡像等。
隨著應用系統(tǒng)規(guī)模的不斷擴大,對數(shù)據(jù)的安全性和可靠性也提出了更高的要求,Rsync在高端業(yè)務系統(tǒng)中也逐漸暴露出了很多不足。
首先,Rsync同步數(shù)據(jù)時,需要掃描所有文件后進行比對,進行差量傳輸。如果文件數(shù)量達到了百萬甚至千萬量級,掃描所有文件將是非常耗時的,而且正在發(fā)生變化的往往是其中很少的一部分,這是非常低效的方式。
其次,Rsync不能實時的去監(jiān)測、同步數(shù)據(jù),雖然它可以通過Linux守護進程的方式進行觸發(fā)同步,但是兩次觸發(fā)動作一定會有時間差,這樣就會導致服務端和客戶端數(shù)據(jù)可能出現(xiàn)不一致,而無法在應用故障時完全的恢復數(shù)據(jù)。基于以上原因,Rsync+Inotify組合出現(xiàn)了!
Inotify是一種強大的、細粒度的、異步的文件系統(tǒng)事件監(jiān)控機制,Linux內(nèi)核從2.6.13起,加入了Inotify支持,通過Inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動等各種細微事件,利用這個內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而Inotify-tools就是這樣的一個第三方軟件。
Rsync可以實現(xiàn)觸發(fā)式的文件同步,但是通過crontab守護進程方式進行觸發(fā),同步數(shù)據(jù)和實際數(shù)據(jù)會有差異,而Inotify可以監(jiān)控文件系統(tǒng)的各種變化,當文件有任何變動時,就觸發(fā)Rsync同步,這樣剛好解決了同步數(shù)據(jù)的實時性問題。
所以,如果業(yè)務系統(tǒng)對數(shù)據(jù)同步的實時性要求很高,要求實現(xiàn)正式服務器一旦出現(xiàn)故障,則備份服務器可以馬上上線這樣的類似容災系統(tǒng)的功能的話,我們可以通過先克隆虛擬機到異地,再在正式服務器上安裝Inotify(Windows下也支持管道符,可以通過Inotifywait再結(jié)合自己寫腳本來實現(xiàn))。
通過采用多個免費工具的整合,實現(xiàn)統(tǒng)一網(wǎng)絡(luò)數(shù)據(jù)備份系統(tǒng),把日志和服務監(jiān)控集成進網(wǎng)絡(luò)運維統(tǒng)一平臺進行管理。下一步工作是把數(shù)據(jù)備份作業(yè)的配置和最近一次運行的狀態(tài)通過圖形化來查看管理,以提高日常工作效率。