<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux 網(wǎng)絡(luò )文件系統的數據備份及恢復機制實(shí)現

Linux 網(wǎng)絡(luò )文件系統的數據備份及恢復機制實(shí)現

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

為了保證引入多版本特性后文件系統仍具有較好的性能,以及保證較高的空間利用率,我們開(kāi)發(fā)了一種高效的惰性版本生成算法。主要思想是:生成版本時(shí)不進(jìn)行文件的復制,僅復制目錄結構,在新版本生成后到下一版本生成前,如果有文件需要修改,則第一次修改時(shí)對該文件進(jìn)行復制,從而保證該文件狀態(tài)與對應的版本保持一致。

在一般情況下,目錄結構的數據量遠遠小于文件的數據量,因而這種方法可以大大降低版本生成時(shí)需要復制的數據量,因而具有較高的性能。同時(shí),這種把單個(gè)文件版本生成的實(shí)際操作推后到非做不可的時(shí)候,并且任意文件在兩次版本之間最多生成一次版本,因此這種惰性策略可以使需要實(shí)際生成版本的文件數量達到最少,同時(shí)還可以把多個(gè)文件版本生成操作分散到具體的文件操作中,從而避免了集中的一次性版本生成方法可能造成的服務(wù)暫時(shí)停頓的問(wèn)題。

版本生成后的結構如圖 2 所示。

圖 2 多版本生成示意圖

圖 2 多版本生成示意圖

具體算法包括兩個(gè)部分,即版本生成算法和文件第一次修改處理算法,版本生成算法主要完成版本生成工作,主要過(guò)程如下:

找到需要形成版本的最高層目錄作為原目錄;

利用文件系統提供的函數,生成新的目錄節點(diǎn),稱(chēng)為新目錄;

把原目錄中的結構復制到新目錄;

在原目錄中找到所有的子目錄,重復 2、3 步;

把新的子目錄對應的 inode 號替換上一層目錄中的老 inode 號;

重復上述過(guò)程,及到目錄樹(shù)中的所有目錄得到復制為止。

在上述策略中,新版本并沒(méi)有復制所有的文件,只是在復制的目錄結構中記錄下了該文件的 inode 號(即復制了目錄的結構,而不是把文件都進(jìn)行復制,從而節省了存儲和計算資源),因此,當有 NFS 請求需要對文件進(jìn)行版本生成后的第一次修改時(shí),需要復制該文件,生成新的版本。該實(shí)現過(guò)程參見(jiàn)如下流程圖:

圖 3 寫(xiě)時(shí)復制算法示意圖

圖 3 寫(xiě)時(shí)復制算法示意圖

這種文件復制策略其實(shí)是一種惰性算法,也即我們常說(shuō)的寫(xiě)時(shí)復制的方法,這個(gè)方法在 操作系統的子進(jìn)程對父進(jìn)程資源的繼承中有所體現。這個(gè)策略一方面可以最大限度減少復制文件的數量,另一方面則可以避免瞬間過(guò)大的文件復制工作量,影響文件服務(wù)的性能。該算法的過(guò)程如下:當文件操作為寫(xiě)操作時(shí),判斷該文件是否版本生成后的第一次寫(xiě)操作;若是則利用文件系統提供的底層函數生成一個(gè)新的文件,復制源文件的數據到新生成的文件,同時(shí)把該文件當前版本的 inode 節點(diǎn)中的版本號置為當前版本號,這樣新文件就成為該文件的最新版本。

雖然我們采用的算法可以有較好的性能,存儲開(kāi)銷(xiāo)也是最優(yōu),但是,每次版本生成肯定會(huì )造成服務(wù)性能的下降和空間的占用,而這些代價(jià)在一個(gè)比較安全可靠的環(huán)境中是可以適當降低的,即當系統比較安全的時(shí)候,可以選擇讓系統以更低的頻率進(jìn)行版本生成,相反,當系統安全狀況比較糟糕的時(shí)候,可以通過(guò)提高版本生成頻率適當降低服務(wù)性能來(lái)獲得更高的數據安全性能,當系統處于緊急狀態(tài)時(shí),甚至可以要求立即進(jìn)行版本生成。

基于這些考慮,我們采用了自適應的備份策略,災情評估系統可以動(dòng)態(tài)評估系統的災情程度,然后可以立即修改版本生成策略,以適應當時(shí)的安全要求。

NFS 數據恢復技術(shù)

企業(yè)應用 NFS 的一個(gè)重要目標就是要保證系統的高可用性,即使在出現嚴重災難、故障、攻擊等情況下能具有較好的生存能力。因此,當一個(gè)系統出現故障時(shí),如何快速地恢復系統,迅速投入到服務(wù)備份中去是相當重要的,所以,對于文件系統數據的恢復而言,也需要專(zhuān)門(mén)的考慮和設計。

本方案被配置成多個(gè)站點(diǎn)互為備份的情況,即平時(shí)只有一個(gè)主站點(diǎn)在服務(wù),其他站點(diǎn)處于同步備份狀態(tài),當某個(gè)站點(diǎn)出現故障或災難時(shí),或者是被非法入侵者攻破時(shí),系統可以立即分配新的主站點(diǎn)把被破壞的站點(diǎn)替換下來(lái),進(jìn)入恢復狀態(tài),其他正常的站點(diǎn)仍可提供正常的服務(wù)。

當然,也存在所有站點(diǎn)均出現故障的情況,但是由于我們采用了多種措施,如動(dòng)態(tài)隨機遷移、災情評估與響應策略等,再配合傳統的防火墻、IDS 等安全系統,可以極大限度地減少這種幾率。因此,我們的數據恢復問(wèn)題主要考慮上述這種情形,即個(gè)別服務(wù)器出現故障退出服務(wù)而其他系統依然正常的情況。

首先,我們來(lái)分析一下系統退出后數據的情形,主要涉及到退出的服務(wù)器和正常的主服務(wù)器與備份服務(wù)器,如圖 4 所示:

圖 4 一個(gè)系統退出后數據狀態(tài)示意圖

圖 4 一個(gè)系統退出后數據狀態(tài)示意圖

在上圖中,退出服務(wù)器最后生成的版本號為 i,系統退出后,一方面主文件服務(wù)器會(huì )察覺(jué)到同步數據無(wú)法從退出服務(wù)器返回結果,這樣的話(huà)它就會(huì )重發(fā)同步請求,經(jīng)過(guò) 3 次重發(fā)后,如果依然沒(méi)有返回信息,則認為該服務(wù)器退出服務(wù),因此會(huì )把同步到磁盤(pán)文件中,并記錄下該服務(wù)器在同步數據文件中的起始位置,這當由多個(gè)文件服務(wù)器退出時(shí)可以分別識別出來(lái)。由于退出系統無(wú)法繼續保持同步,因此其狀態(tài)會(huì )與工作的文件服務(wù)器不一致,具體表現在以下幾個(gè)方面:

當退出時(shí)間很短時(shí),數據不一致僅存在于緩沖區中,這時(shí)如果退出服務(wù)器能立即重新投入使用,則不需要進(jìn)行額外的數據恢復,數據同步可以通過(guò)主服務(wù)器同步請求的重試來(lái)達到。

當主服務(wù)器確認退出服務(wù)器退出后,會(huì )把未同步的數據寫(xiě)入特定的同步數據文件中,這時(shí)的不一致性包括了緩沖區中的數據和同步數據文件中的數據,這時(shí)的數據恢復需要做兩方面的工作:

把同步數據文件中的正確數據一次性發(fā)送給退出服務(wù)器,退出服務(wù)器把它寫(xiě)入本地的同步數據文件;

建立本地的緩沖區,建立起同步機制,接收同步數據,同時(shí)啟動(dòng)數據同步進(jìn)程,先同步數據文件中的數據,當緩沖區數據因沒(méi)有處理而達到一定程度時(shí),會(huì )自動(dòng)把部分數據追加到同步數據文件的后面,這時(shí),退出服務(wù)器已經(jīng)恢復了正常工作,實(shí)際上也不需要過(guò)多的數據恢復工作。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>