Linux 網(wǎng)絡(luò)文件系統(tǒng)的數(shù)據(jù)備份及恢復(fù)機(jī)制實(shí)現(xiàn)
基于分布版本的快速恢復(fù):當(dāng)停頓時(shí)間太長(zhǎng)而不存在一個(gè)相同的版本,或文件服務(wù)器數(shù)據(jù)出現(xiàn)損壞(如磁盤(pán)故障造成數(shù)據(jù)損毀)時(shí),需要采用此種方法。具體辦法如下:直接把正常服務(wù)器上的最新版本傳送到退出服務(wù)器,然后按照上述的第 2 種情況進(jìn)行同步數(shù)據(jù)文件的同步。
正如上面所述,全部服務(wù)器均出現(xiàn)問(wèn)題的概率是很小的,但是,不能簡(jiǎn)單的排除這種情況的出現(xiàn),特別是本方案采用數(shù)據(jù)同步機(jī)制,即多個(gè)站點(diǎn)的數(shù)據(jù)是保持快速同步的,這雖然能保證動(dòng)態(tài)遷移的順利完成,但是也帶來(lái)較大的風(fēng)險(xiǎn),就是會(huì)出現(xiàn)數(shù)據(jù)”污染”的自動(dòng)傳播,當(dāng)主文件服務(wù)器中的文件數(shù)據(jù)因?yàn)槟承┰?主要是對(duì)文件的非法訪問(wèn))造成數(shù)據(jù)非法修改時(shí),會(huì)立即傳播到其他備份節(jié)點(diǎn),這樣的話(huà),不管服務(wù)遷移到哪臺(tái)機(jī)器均會(huì)出現(xiàn)錯(cuò)誤。
針對(duì)這種情況,我們采取了以下措施:當(dāng)發(fā)現(xiàn)非法修改造成數(shù)據(jù)污染時(shí),系統(tǒng)可以自動(dòng)命令各站點(diǎn)恢復(fù)到指定的版本,如前一版本(可以由管理員配置成前一、二、三個(gè)版本);管理員也可以干預(yù)這一過(guò)程,強(qiáng)制各站點(diǎn)恢復(fù)到同一指定的版本,從而保證全局文件系統(tǒng)使用同一正確版本。
NFS 文件細(xì)粒度恢復(fù)技術(shù)
在傳統(tǒng)恢復(fù)技術(shù)中,一方面由于數(shù)據(jù)備份不是實(shí)時(shí)進(jìn)行的,當(dāng)出現(xiàn)事故需要恢復(fù)時(shí),最新的備份數(shù)據(jù)與最新數(shù)據(jù)之間存在一個(gè)時(shí)間差,這樣就造成了該時(shí)間段內(nèi)數(shù)據(jù)的丟失(見(jiàn)圖 5);同時(shí),傳統(tǒng)的數(shù)據(jù)備份是一定時(shí)間段后數(shù)據(jù)的增量備份,是一段時(shí)間內(nèi)所有文
Linux 網(wǎng)絡(luò)文件系統(tǒng)簡(jiǎn)介
網(wǎng)絡(luò)文件系統(tǒng)(NFS)協(xié)議是由 Sun MicroSystem 公司在 20 世紀(jì) 80 年代為了提供對(duì)共享文件的遠(yuǎn)程訪問(wèn)而設(shè)計(jì)和實(shí)現(xiàn)的,它采用了經(jīng)典的客戶(hù)機(jī)/服務(wù)器模式提供服務(wù)。為了達(dá)到如同 NFS 協(xié)議通過(guò)使用 Sun 公司開(kāi)發(fā)的遠(yuǎn)在本機(jī)上使用本地文件系統(tǒng)一樣便捷的效果,NFS 通過(guò)使用遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC Protocol)來(lái)實(shí)現(xiàn)運(yùn)行在一臺(tái)計(jì)算機(jī)上的程序來(lái)調(diào)用在另一臺(tái)遠(yuǎn)程機(jī)器上運(yùn)行的子程序。同時(shí),為了解決不同平臺(tái)上的數(shù)據(jù)交互問(wèn)題,它提供了外部數(shù)據(jù)表示(XDR)來(lái)解決這個(gè)問(wèn)題。為了靈活地提供文件共享服務(wù),該協(xié)議可以在 TCP 協(xié)議或者是 UDP 協(xié)議上運(yùn)行,典型的情況是在 UDP 協(xié)議上運(yùn)行。在此基礎(chǔ)上,NFS 在數(shù)據(jù)的傳送過(guò)程中需要 RPC 命令得到確認(rèn),而且在需要的時(shí)候會(huì)要重傳,這樣既可以通過(guò) UDP 協(xié)議獲得較高的通信效率,也能通過(guò) RPC 來(lái)獲得較高的通信可靠性。
由于 NFS 基于 C/S 模式提供服務(wù),所以它的核心組件主要包括客戶(hù)機(jī)和服務(wù)器兩部分。圖 1 詳細(xì)說(shuō)明了 NFS 的主要組件以及主要的配置文件。在服務(wù)器端,portmap、mountd、nfsd 三個(gè)監(jiān)控程序?qū)⒃诤笈_(tái)運(yùn)行。portmap 監(jiān)控程序用來(lái)注冊(cè)基于 RPC 的服務(wù)。當(dāng)一個(gè) RPC 的監(jiān)控程序啟動(dòng)的時(shí)候,它告訴 portmap 監(jiān)控程序它在哪一個(gè)端口進(jìn)行偵聽(tīng),并且它在進(jìn)行什么樣的 RPC 服務(wù)。當(dāng)一個(gè)客戶(hù)機(jī)向服務(wù)器提出一個(gè) RPC 請(qǐng)求,那么它就會(huì)和 portmap 監(jiān)控程序取得聯(lián)系以確定 RPC 消息應(yīng)該發(fā)往的端口號(hào)。而 Mountd 監(jiān)控程序的功能是來(lái)讀取服務(wù)器端的/etc/exportfs 文件并且創(chuàng)建一個(gè)將服務(wù)器的本地文件系統(tǒng)導(dǎo)出的主機(jī)和網(wǎng)絡(luò)列表,因而客戶(hù)機(jī)的掛接(mount)請(qǐng)求都被定位到 mountd 監(jiān)控程序(daemon)。當(dāng)驗(yàn)證了服務(wù)器確實(shí)具有掛接所請(qǐng)求的文件系統(tǒng)的權(quán)限以后,mountd 為請(qǐng)求的掛接點(diǎn)返回一個(gè)文件句柄。而 nfsd 監(jiān)控程序則被服務(wù)器用來(lái)處理客戶(hù)機(jī)端發(fā)送過(guò)來(lái)的請(qǐng)求。由于服務(wù)器需要同時(shí)處理多個(gè)客戶(hù)機(jī)的請(qǐng)求,所以在缺省情況下,操作系統(tǒng)將會(huì)自動(dòng)啟動(dòng)八個(gè) nfsd 線(xiàn)程。當(dāng)然,如果 NFS 服務(wù)器特別忙的時(shí)候,系統(tǒng)有可能根據(jù)實(shí)際情況啟動(dòng)更多的線(xiàn)程。
圖 1 網(wǎng)絡(luò)文件系統(tǒng)簡(jiǎn)圖
NFS 的客戶(hù)機(jī)與服務(wù)器之間通過(guò) RPC 進(jìn)行通信,通信過(guò)程如下所示:
用戶(hù)將 NFS 服務(wù)器的共享目錄掛載到本地文件系統(tǒng)中。
客戶(hù)訪問(wèn) NFS 目錄中的文件時(shí),NFS 客戶(hù)端向 NFS 服務(wù)器端發(fā)送 RPC 請(qǐng)求。
NFS 服務(wù)端接收客戶(hù)端發(fā)來(lái)的 RPC 請(qǐng)求,并將這個(gè)請(qǐng)求傳遞給本地文件訪問(wèn)程序,然后訪問(wèn)服務(wù)器主機(jī)上的一個(gè)本地的磁盤(pán)文件。NFS 服務(wù)器可以同時(shí)接收多個(gè) NFS 客戶(hù)端的請(qǐng)求,并對(duì)其進(jìn)行并發(fā)控制。
NFS 客戶(hù)端向服務(wù)器主機(jī)發(fā)出一個(gè) RPC 調(diào)用,然后等待服務(wù)器的應(yīng)答。NFS 客戶(hù)端收到服務(wù)器的應(yīng)答后,把結(jié)果信息展現(xiàn)給用戶(hù)或應(yīng)用程序。
NFS 下的數(shù)據(jù)備份、恢復(fù)的主要功能
對(duì)數(shù)據(jù)進(jìn)行備份與恢復(fù)是保證數(shù)據(jù)安全和業(yè)務(wù)連續(xù)性的非常成熟的做法。在 Linux 下的本地文件系統(tǒng)(例如 Ext2、Ext3 等)中,數(shù)據(jù)備份和恢復(fù)一般采用常規(guī)的辦法來(lái)進(jìn)行操作,例如使用 Tar、Archive 等。而對(duì)于 NFS 來(lái)說(shuō),其數(shù)據(jù)備份需要采用量身定制的方法來(lái)進(jìn)行。
為了保證數(shù)據(jù)在災(zāi)難環(huán)境中的可用性和業(yè)務(wù)連續(xù)性,針對(duì)它的數(shù)據(jù)備份、恢復(fù)方案應(yīng)具備如下重要功能:
通過(guò)對(duì)系統(tǒng)重要數(shù)據(jù)的快速備份,切實(shí)保證系統(tǒng)數(shù)據(jù)的安全;
可以根據(jù)指令完成備份系統(tǒng)的實(shí)時(shí)切入,保證服務(wù)不被中斷,保持系統(tǒng)持續(xù)運(yùn)行的能力;
通過(guò)實(shí)時(shí)記錄所有文件的操作日志,系統(tǒng)管理員能夠在發(fā)生災(zāi)難的情況下對(duì)日志進(jìn)行分析和取證,從而發(fā)現(xiàn)入侵者的蛛絲馬跡。
NFS 多版本備份技術(shù)
為了保證服務(wù)器出現(xiàn)故障后能迅速恢復(fù),要求系統(tǒng)數(shù)據(jù)能快速恢復(fù)到一個(gè)最近的正確狀態(tài),所有這些都需要多版本技術(shù)的支持,通過(guò)同步記錄文件的在某些時(shí)刻的狀態(tài),在整個(gè)系統(tǒng)范圍內(nèi)建立起類(lèi)似于數(shù)據(jù)庫(kù)系統(tǒng)的”檢查點(diǎn)”,以保證上述目標(biāo)的實(shí)現(xiàn)。
對(duì)于多版本系統(tǒng)而言,需要較好地解決兩個(gè)方面的問(wèn)題:性能和空間利用率。對(duì)于前者,最主要的是保證在生成版本的時(shí)候能夠快速完成,同時(shí)恢復(fù)時(shí)也具有較好的性能。此外,系統(tǒng)引入多版本造成的整體開(kāi)銷(xiāo)也應(yīng)該比較理想。對(duì)于第二點(diǎn),主要考慮是節(jié)約磁盤(pán)空間,雖然隨著硬件技術(shù)的不斷發(fā)展,磁盤(pán)空間越來(lái)越大,性?xún)r(jià)比也越來(lái)越高,但是當(dāng)版本較多而且文件數(shù)量較多、較大時(shí),引入多版本增加的開(kāi)銷(xiāo)也可能相當(dāng)可觀,同時(shí),較大的空間也意味著版本生成時(shí)可能需要更多的寫(xiě)操作,這樣也必將影響總體性能。
評(píng)論