引言
現代企業在發展過程中不僅積累了大量的電子文檔,并且還在加速不斷產生新的文檔。這些文檔涉及企業的核心技術資產和敏感信息,需要安全可靠的存放。長期以來,由于缺少有效的管理模式和技術手段,文檔被分散存放在個人PC機上,產生了各種信息安全問題和一致性問題。有些企業配合OA系統的應用,采用了如FTP、NAS、SAN等文件服務器形式,但是部署復雜、維護不便,有的成本過于昂貴,容量擴充、備份恢復等需要大量人工干預,容易發生操作失誤導致文檔數據損失。特別是系統管理員具有超級權限,能夠輕易訪問不同用戶的文檔,對文檔的安全性和保密性構成威脅。這些問題已成為企業的一塊心病,制約著企業信息化的發展。
目前,“云存儲”技術提供了一種較好的解決方案,變分散存儲為集中管理,同時提供高可用性、高可靠性以及彈性擴容能力,把用戶從各管各的文檔、各維護各的服務器的模式中解放出來,有效滿足了企業文檔的安全存儲要求。出于安全考慮,具有傳統網絡安全邊界的私有云存儲成為眾多企業關注的焦點。目前商業化的私有云存儲建設成本較高,不易為普通企業所承受。另外,企業已經為IT基礎設施建設做了大量的投入,棄之不用而另起爐灶難以為企業接受,也不符合綠色環保和節約資源的理念。如何充分利用企業現有IT設施建立企業的私有云存儲服務,滿足企業文檔集中存儲和集中管理的要求,打破私有云建設的成本壁壘,保護企業投資、平滑過渡,是云計算發展亟待解決的問題。
廣州國邁科技有限公司研發的魅云文檔安全存儲系統,具有私有云存儲的基本特征,既可以在專用服務器上部署,也可以在企業現有IT設施上部署。通過把現有的專用存儲設備、服務器存儲資源甚至個人PC機存儲資源虛擬化成一個存儲池,實現了統一的存儲資源調配、大容量存儲、高性能訪問、數據冗余備份恢復、容量彈性擴充、存儲位置透明、身份認證和文檔權限管理等關鍵功能。系統提供了標準化的文件訪問接口,無縫支持企業現有的各種應用系統,其異地備份和異地共享的能力,滿足企業IT設施的多地域分布的需要。
1 系統設計目標
系統設計的目標如下:
1)高可靠、高可用、良好的容錯性。設備故障處置作為系統的一種常態進行設計 。通過必要的實時監控、錯誤偵測和容錯機制,當服務器或存儲介質無法工作時,能夠及時檢測和快速恢復,保證重要數據的可用性。
2)安全性和權限管理。用戶訪問嚴格受控,系統在設計上能夠控制操作系統管理員無法訪問未授權文檔。另外,從單臺服務器中不能獲得一個完整文檔。
3)支持大容量存儲要求和動態擴容。
4)易用性。不對用戶現有使用模式產生影響,用戶不用改變使用習慣,應用程序不需要修改。系統的維護簡單,設備故障恢復和容量擴充等工作具備一定的自動化能力。
5)具備較高的并發能力和吞吐量。
2 系統的存儲模型
系統采用“星型結構”,由單個中心控制節點服務器和多個存儲節點服務器組成。存儲節點根據所處機架、地域、虛擬網段、安全區等不同因素在邏輯上劃歸為不同的簇,簇內節點以局網連接為典型連接方式,不同的簇可能處于不同的機架、不同的網段或不同的地域。控制節點負責元數據的維護、存儲節點監控、更新數據節點列表、響應客戶端請求、負載均衡、故障恢復、存儲策略等。存儲節點負責文檔的數據存儲。客戶端與控制節點之間只進行元數據的傳輸;客戶端和數據節點之間直接傳輸文檔數據;存儲節點之間采用接力傳輸方式傳輸文檔數據和元數據指令;存儲節點和控制節點之間傳輸元數據和指令數據。每個文檔被分成若干等長的數據塊,數據塊被分布存放在簇中的不同存儲節點上,每個數據塊的副本則分布存放到不同簇的節點上。系統總體結構如圖1所示。
圖1 系統總體結構
2.1 存儲模型的工作原理
當客戶端向控制節點提交寫文檔操作請求時,控制節點將根據客戶端所處位置、數據塊數量、存儲節點的狀態參數等,應用哈希算法進行數據塊和數據塊副本的存儲決策,生成數據塊的存儲節點鏈表,并將此表發送給客戶端。客戶端和表中的第一個簇的各個存儲節點通信,向其發送數據塊數據和節點鏈表數據。存儲節點一方面負責在本地存放數據塊,同時負責將數據塊復制后發送給鏈表中的下一個存儲節點,直至鏈表的下一個節點為空。存儲節點正確完成一個塊的存儲時,把塊的編號和存儲路徑等元數據發送給控制節點。
當客戶端提交讀請求時,控制節點把離客戶端最近的簇的存儲節點放在鏈表的第一節點位置,并將所有的元數據信息一次性發送給客戶端。客戶端根據元數據信息并發訪問存儲節點,在客戶端動態進行文檔的組裝,最后形成完整的文檔。
2.2 核心元數據管理
系統元數據是存儲系統的核心數據結構,描述了所有存儲文檔的相關信息,由目錄結構、文件映射、數據塊映射構成,是客戶端目錄結構的完整反映。文件映射包含了文件名稱和數據塊列表的對應關系,數據塊映射包含了數據塊名稱和存儲節點以及存儲路徑的對應關系。客戶端訪問文件時,應提交完整的文件路徑。控制節點通過路徑分析,查找到數據塊的映射,并返回給客戶端。由于元數據總量不大,為提高元數據的訪問速度,把整個元數據裝入服務器內存。
為保證元數據的可靠性,系統定期持久化保存元數據的數據文件,并在日志文件中記錄對元數據的修改操作。當控制節點進行故障恢復時,首先從數據文件中恢復出最后的元數據,然后執行日志中的每條記錄,使元數據恢復到最新的狀態。
2.3 文檔數據存儲原理
為保證文檔數據存儲的一致性,防止多個客戶端同時對一個文檔修改,系統采用了租約的控制方式。客戶端在寫訪問(包括創建)某個文檔時,首先向控制節點申請獲得該文檔的租約,每個文檔只有一個租約。在租約期結束前,客戶端可以做文檔的修改操作,一旦租約到期,客戶端或者申請租約的更新,或者視為放棄租約,由控制節點收回。
系統采用流水線式的寫入方式配合租約來保證多個副本寫入的一致性。如前面所述,控制節點生成存儲節點鏈表,該鏈表和文檔的租約相關聯,每個節點負責本地的寫入并且將副本復制轉發給鏈表中的下一個存儲節點,直至最后一個節點。確認信息則按照鏈表的逆向順序發送,當最后一個節點完成存儲操作時,向控制節點發送數據映射記錄,并向鏈表中的前一個節點發送確認信息,當第一個節點收到后續節點的確認信息時,客戶端的寫入調用正確返回,客戶端通知控制節點完成寫操作。如果中間環節發生寫入錯誤時,客戶端調用錯誤返回,客戶端通知控制節點清除與此文檔租約相關的映射記錄,并通知存儲節點刪除相關數據塊。如果租約到期而未收到客戶端的更新請求,控制節點認為客戶端可能發生了問題,將檢查與租約相關的映射記錄,按照操作失敗方式進行處理。
系統采用創建新數據塊、最后刪除舊數據塊的方式進行文檔的修改,使得數據一致性處理變得相對簡單。對企業應用而言,絕大多數文檔都是創建后存儲而不修改,因此復雜的修改操作對系統的性能影響不會太大。數據塊大小應選取一個較為平衡的值,保證每個副本的創建和寫入時耗費低、出錯率低、成功率高。
為保證文檔數據的正確性,系統采用了數據校驗的方法,即對每個數據塊計算校驗值,將校驗值和數據塊一起存放,當數據傳輸時重新計算校驗值,通過比對確定是否發生了數據錯誤。當存儲節點進行故障恢復時,也通過校驗值的計算確定是否發生數據錯誤,從而決定是否執行數據塊的副本恢復。
控制節點實時監控存儲節點的狀態,當某一數據塊的副本數量低于一定值時,控制節點將按照策略啟動恢復機制,重新選擇副本存放的節點,并發送恢復命令給數據源存儲節點。
2.4 數據塊的存儲策略
控制節點綜合計算存儲節點的IO性能、存儲容量、網絡帶寬、CPU負載、虛擬網絡劃分等因素決定數據塊的存儲策略,包括簇的構成、副本的存放位置等。一個簇通常由處于同一機架上的若干服務器構成,或者一個虛擬局網內的服務器構成。不同機架或位于異地的服務器通常處于不同的簇中。簇中的服務器間具有相對較高的網絡帶寬連接,而客戶端往往和某一個簇具有較為直接的網絡連接關系。系統盡可能保證重要的文檔能夠在一個簇發生全故障時,仍然有較大的概率能夠從其他簇上恢復出整個文檔。
存儲節點向控制節點發送心跳信息保持聯系。心跳信息包含了存儲節點的各種參數數據,如當前的存儲容量、10統計、CPU性能和占用情況、內存占用、網絡負載等。控制節點根據這些數據,動態調整存儲節點的存儲優先級,并維護簇隊列和簇內服務器隊列。當客戶端申請創建文件時,控制節點首先選擇和客戶端最近的簇作為第一個簇,并將副本盡可能分布到不同地域的簇上,然后根據哈希算法把不同的數據塊分布到簇內服務器隊列的不同服務器上。
2.5 節點故障的恢復和動態擴容
如果控制節點發現存儲節點的心跳超時,它有兩種做法:一是報告管理員進行人工干預,二是啟動自動恢復程序。因為服務器故障以網絡中斷為多,而真正發生硬盤損壞的情形較少,通過人工干預可以減少耗時的自動恢復過程發生。一旦控制節點檢測到存儲節點恢復心跳,它將發送元數據檢查指令,要求存儲節點檢查本地所有數據塊的元數據信息和數據塊數據的正確性。控制節點根據存儲節點的檢查報告,對比本地的元數據信息決定是否對該存儲節點進行數據塊的恢復操作。
如果人工確定一臺服務器發生了故障,可以通過控制臺強制控制節點啟動存儲節點的減程序。控制節點分析該存儲節點上的數據塊元數據,找到所有數據塊的源存儲節點,發送增加數據塊副本的指令,使受到影響的數據塊副本數量恢復到故障前的水平。
如果控制節點發現了一個新的心跳信息不在本地的存儲節點列表中,則將其作為一個新的存儲節點加入到隊列中,啟動存儲節點的加程序,完成擴容。任何一臺服務器或PC機只要運行存儲節點軟件,就可以成為一個存儲節點。存儲節點軟件可以收集和統計本機的運行狀態,由控制節點計算出合適的存儲策略,在不影響或少影響本機其他應用程序的前提下,盡量發揮其計算和存儲能力。
2.6 客戶端工作原理
客戶端訪問文檔時,一次性從控制節點獲得完整的元數據信息,避免反復交互。客戶端利用完整的元數據信息并發訪問信息給多臺存儲節點服務器,并完成文檔的動態組裝,實現高性能的文件讀取訪問。為減少寫操作失敗對應用的影響,客戶端緩存完整的文檔數據,并負責透明的重寫操作。通過攔截用戶頻繁的改寫操作,減少對服務器的寫操作。客戶端分析寫操作所在數據塊位置,可以發出單個數據塊而不是整個文檔的寫請求,有效減少了存儲節點數據處理量和傳輸量。客戶端支持傳輸數據的校驗,當發現數據錯誤時,自動請求重發。如果判斷存儲節點出現故障時,客戶端會自動選擇另一個服務器副本,無需向控制節點請求,使客戶端表現出良好的響應性能。
2.7 存儲模型的特點
數據流和控制流分離,降低了控制節點的負載,避免了控制節點成為系統的瓶頸。控制節點可以采用比較成熟的熱備份方式,防止出現單點故障。單一中心的體系結構使系統實現相對簡單高效。
文件數據分布較為徹底。文檔被劃分成不同的數據塊,數據塊存放在不同的服務器上,提高了并發訪問性能以及成功恢復的概率,也阻止了從單臺設備對完整文檔的訪問,降低了系統管理員隨意訪問文檔的可能性。客戶端和多個存儲節點之間實現并發傳輸操作,提高了系統的吞吐能力。
系統實現了存儲和訪問的負載均衡,控制節點實時探查存儲節點的狀態參數,集中控制數據的分布策略,保證數據存儲的均衡和網絡訪問的均衡。客戶端在讀取文檔時總是先訪問跳數最少的一個簇,并從中恢復一個完整的文檔,具有較高的訪問速度。存儲策略保證了各種廉價的服務器和普通的PC機也能夠有效地成為存儲系統的一部分,而不影響駐留其中的各種應用。
存儲容量動態擴充,存儲節點可以隨時增加,控制節點自動發現、自動調整,無需用戶的干預,對客戶端影響很小。具備高容錯能力,單個存儲節點故障和一個簇故障都不會影響文檔數據的完整性恢復。控制節點對存儲節點的動態探查,可及時發現存儲節點故障,執行恢復策略。
3 權限管理
系統面向企業的文檔存儲安全需求,實現了嚴格的權限管理機制。首先,用戶、管理員、審計員的權限相互獨立,特別是管理員(包括操作系統管理員)沒有察看用戶文件的權限,提高了文檔的保密性。其次,通過預先強制設定的“我的空間、共享空間、向他人共享空間、他人向我共享空間等類型根目錄,方便用戶直接進行文檔的私密存儲和共享操作。在此基礎上可快速靈活建立起部門內部的文件共享、部門之間的文件共享等目錄,滿足大多數文件存儲管理需要。第三,系統支持用戶名口令、證書驗證和指紋驗證登錄,與現有認證系統易于集成。
4 應用接口
按照云存儲的要求,系統提供了標準的文件操作接口,如NFS、POSIX等,可以和絕大多數應用系統無縫集成,對用戶現有模式沒有影響,特別是實現了企業最常用的文件服務器接口。當用戶使用Windows操作系統時,只要正確登錄系統,就能在資源管理中看到前述的4個目錄。用戶可以立即使用,也可以在其中創建新的共享目錄,并賦予更復雜的權限劃分。所有操作和本機操作完全一致,如拷貝、刪除、創建文件、創建目錄、拖放、粘貼等,用戶感覺無差異。
5 結語
文中描述了魅云分布式文檔安全存儲系統的存儲設計原理。它結合了云存儲系統的設計要求,參考了國內外分布式存儲系統的設計思想,面向國內企業IT的實際情況,實現了低成本、高可靠、高性能、大容量的分布式存儲。單一中心的體系結構設計清晰簡明,通過控制流和數據流的分離,避免出現數據訪問的瓶頸。文檔分塊、分布式存儲和冗余副本存儲,實現了高可靠性和高性能。為保證多個數據副本的存儲一致性,引入了流水線式的副本存儲策略和文檔租約機制。存儲節點和控制節點之間的心跳提供存儲節點的動態擴容、故障探查、故障恢復、負載均衡、存儲策略等功能的實現基礎。簇邏輯的引入,保證了客戶端的高性能訪問和更強的容災能力。內置強制的權限管理機制為用戶直接使用系統提供了強有力的安全保障。標準化的訪問接口支持和用戶現有應用系統的無縫集成。
通過多個用戶的實際使用,反映出系統提供的大容量存儲數據的安全性、可靠性和高性能可以有效解決企業文檔存儲的安全問題,具有較強的實用性。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.guhuozai8.cn/
本文標題:面向企業文檔安全存儲的分布式文件系統
本文網址:http://m.guhuozai8.cn/html/consultation/1083953360.html