簡介
分散式存儲系統,是將數據分散存儲在多台獨立的設備上。傳統的網路存儲系統採用集中的存儲伺服器存放所有數據,存儲伺服器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲套用的需要。分散式網路存儲系統採用可擴展的系統結構,利用多台存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易於擴展。
關鍵技術
元數據管理
在大數據環境下,元數據的體量也非常大,元數據的存取性能是整個分散式檔案系統性能的關鍵。常見的元數據管理可以分為集中式和分散式元數據管理架構。集中式元數據管理架構採用單一的元數據伺服器,實現簡單.但是存在單點故障等問題。分散式元數據管理架構則將元數據分散在多個結點上.進而解決了元數據伺服器的性能瓶頸等問題.並提高了元數據管理架構的可擴展性,但實現較為複雜,並引入了元數據一致性的問題。另外,還有一種無元數據伺服器的分散式架構,通過線上算法組織數據,不需要專用的元數據伺服器。但是該架構對數據一致性的保障很困難.實現較為複雜。檔案目錄遍歷操作效率低下,並且缺乏檔案系統全局監控管理功能。
系統彈性擴展技術
在大數據環境下,數據規模和複雜度的增加往往非常迅速,對系統的擴展性能要求較高。實現存儲系統的高可擴展性首先要解決兩個方面的重要問題,包含元數據的分配和數據的透明遷移。元數據的分配主要通過靜態子樹劃分技術實現,後者則側重數據遷移算法的最佳化。此外,大數據存儲體系規模龐大.結點失效率高,因此還需要完成一定的自適應管理功能。系統必須能夠根據數據量和計算的工作量估算所需要的結點個數,並動態地將數據在結點間遷移。以實現負載均衡;同時.結點失效時,數據必須可以通過副本等機制進行恢復,不能對上層套用產生影響。
存儲層級內的最佳化技術
構建存儲系統時.需要基於成本和性能來考慮,因此存儲系統通常採用多層不同性價比的存儲器件組成存儲層次結構。大數據的規模大,因此構建高效合理的存儲層次結構,可以在保證系統性能的前提下,降低系統能耗和構建成本,利用數據訪問局部性原理.可以從兩個方面對存儲層次結構進行最佳化。從提高性能的角度,可以通過分析套用特徵,識別熱點數據並對其進行快取或預取,通過高效的快取預取算法和合理的快取容量配比,以提高訪問性能。從降低成本的角度,採用信息生命周期管理方法,將訪問頻率低的冷數據遷移到低速廉價存儲設備上,可以在小幅犧牲系統整體性能的基礎上,大幅降低系統的構建成本和能耗。
針對套用和負載的存儲最佳化技術
傳統數據存儲模型需要支持儘可能多的套用,因此需要具備較好的通用性。大數據具有大規模、高動態及快速處理等特性,通用的數據存儲模型通常並不是最能提高套用性能的模型.而大數據存儲系統對上層套用性能的關注遠遠超過對通用性的追求。針對套用和負載來最佳化存儲,就是將數據存儲與套用耦合。簡化或擴展分散式檔案系統的功能,根據特定套用、特定負載、特定的計算模型對檔案系統進行定製和深度最佳化,使套用達到最佳性能。這類最佳化技術在谷歌、Facebook等網際網路公司的內部存儲系統上,管理超過千萬億位元組級別的大數據,能夠達到非常高的性能。
考慮因素
一致性
分散式存儲系統需要使用多台伺服器共同存儲數據,而隨著伺服器數量的增加,伺服器出現故障的機率也在不斷增加。為了保證在有伺服器出現故障的情況下系統仍然可用。一般做法是把一個數據分成多份存儲在不同的伺服器中。但是由於故障和並行存儲等情況的存在,同一個數據的多個副本之間可能存在不一致的情況。這裡稱保證多個副本的數據完全一致的性質為一致性。
可用性
分散式存儲系統需要多台伺服器同時工作。當伺服器數量增多時,其中的一些伺服器出現故障是在所難免的。我們希望這樣的情況不會對整個系統造成太大的影響。在系統中的一部分節點出現故障之後,系統的整體不影響客服端的讀/寫請求稱為可用性。
分區容錯性
分散式存儲系統中的多台伺服器通過網路進行連線。但是我們無法保證網路是一直通暢的,分散式系統需要具有一定的容錯性來處理網路故障帶來的問題。一個令人滿意的情況是,當一個網路因為故障而分解為多個部分的時候,分散式存儲系統仍然能夠工作。