雲存儲及其分佈式文件系統

  隨着信息化程度的不斷提升,全球數據日益膨脹。面對當前PB級的海量數據存儲需求,傳統的存儲系統在容量和性能的擴展上存在瓶頸。雲存儲以其擴展性強、性價比高、容錯性好等優點獲得了業界的普遍認同。服務器

  雲存儲伴隨着雲計算產生,做爲雲計算的先驅,它很早就進入了廣大研究人員的視野,因爲其前瞻性,衆多企業都將其做爲進軍雲計算的第一步。網絡

  文件系統 是操做系統的重要組成部分,用來管理和存儲大量的文件信息,負責對文件的存儲空間進行分配和管理,並對存人其中的文件進行保護和檢索,同時爲用戶提供包括文件建立、刪除、命名、讀寫、訪問控制等一系列功能。此外,文件系統還能夠根據存取權限及訪問操做類型來指定用戶對文件的存取。架構

  分佈式文件系統除了具備本地文件系統的全部功能外,還必須管理整個系統中全部計算機上的文件資源,從而把整個分佈式文件資源以統一的視圖呈現給用戶。併發

  此外,分佈式文件系統還須要隱藏內部的實現細節,對用戶和應用程序屏蔽各個計算機節點底層文件系統之間的差別,以提供給用戶統一的訪問接口和方便的資源管理手段 。很顯然,做爲一種典型的分佈式系統,雲存儲須要分佈式文件系統的底層支撐方能實現咱們所但願的功能。負載均衡

  1 雲計算技術分佈式

  目前學術界以及工業界對雲計算還沒造成一個統一的定義。在文獻中,雲計算被定義爲一個包含大量可用虛擬資源的資源池,該資源池通常由基礎設施提供商按照服務等級協議採用按時付費或按需付費的模式進行開發管理,其中的虛擬資源根據不一樣負載進行動態配置,以達到優化資源利用率的目的。高併發

  在必定程度上,咱們能夠認爲雲計算是分佈式計算、並行計算和網格計算等計算概念的商業發展 ,其基本原理是用戶經過互聯網來應用計算機集羣上的資源。經過本地計算機鏈接互聯網向集羣發送需求信息,遠端的計算機集羣資源收到用戶需求信息後,將爲該用戶提供必要的資源並進行運算,最後將計算結果返回至本地計算機。性能

  在上述過程當中,雲計算向用戶提供的並不是計算資源,而是一種服務。雲計算屏蔽了它的內部設備部署細節、網絡接口以及運行在其上的軟件運行機制,其只是把外部訪問接口暴露給用戶。用戶不須要了解雲的內部實現細節,只須要經過互聯網連接其外部應用接口便可得到所需服務。優化

  雲計算具備規模龐大、資源虛擬化、高可靠性、可擴展性、通用性、以用戶爲中心以及計費靈活等特色。雲環境下,用戶面對的再也不是複雜的硬件和軟件資源,而是最終所需的服務,用戶從過去「購買產品」轉變到「購買服務」上來;用戶不須要購買硬件設施,也不須要爲機房支付設備供電、空調製冷、專人維護等費用,而只需支付相應資源使用費用,便可獲得相應服務。google

  目前雲計算技術發展迅速,和傳統預先購置和部署設備的計算方式相比,其獨特的按需付費和彈性擴展的資源供給方式具備明顯的性能優點,所以,其必將成爲將來最值得推廣和應用的技術之一。

  2 雲存儲系統

  雲存儲是實現雲計算系統架構中的一個重要組成部分。隨着信息技術的不斷髮展,全球數據規模日益膨脹。因爲傳統的SAN (Storage Arew Network) 或NAS(Network Attached Storage) 存儲技術在存儲容量和可擴展性上存在瓶頸,而且在硬件設備的部署數量上也存在必定限制,這使得用戶升級系統的成本大大增長。雲存儲採用可擴展的分佈式文件系統,並使用廉價的Pc機來進行系統部署,從而使得總體存儲架構可以保持極低的成本。

  雲存儲是經過集羣應用、網格技術、分佈式文件系統等,將網絡中大量類型各異的存儲設備整合起來,並對外提供數據存儲和業務訪問功能的系統。簡單來講,雲存儲是對虛擬化存儲資源的管理和使用。

  雲存儲是存儲領域一個新的概念,其目前已成爲學術界和工業界的一個研究熱點。區別於傳統的存儲技術,雲存儲提供了更好的可擴展性,當需增長存儲能力時,只需添加服務器便可實現,而不須要對存儲系統的結構進行從新設計;同時隨着存儲能力的增長,雲存儲系統的性能不會降低。

  雲存儲專一於解決雲計算中海量數據的存儲問題,它既能夠給雲計算技術提供專業的存儲解決方案,又能夠獨立發佈存儲服務。雲存儲將存儲做爲服務,它將分別位於網絡中不一樣位置的大量類型各異的存儲設備經過集羣應用、網格技術和分佈式文件系統等集合起來協同工做,經過應用軟件進行業務管理,並經過統一的應用接口對外提供數據存儲和業務訪問功能。在使用一個獨立的存儲設備時,咱們須要瞭解該設備的型號、接口以及該設備所使用的傳輸協議;

  若是使用雲存儲,則不存在上述問題。對用戶來講,雲存儲系統中的全部設備都是透明的,用戶沒必要關心雲存儲系統內部是如何實現的,也無需瞭解存儲的提供方式和底層基礎,任何一個受權用戶均可以經過網絡來使用雲存儲系統提供的數據存儲和業務訪問服務。

  目前,雲存儲的興起正在顛覆傳統的存儲系統架構,其正以良好的可擴展性、性價比和容錯性等優點獲得業界的普遍認同。

  3 雲存儲分佈式文件系統

  由上節討論可知,雲存儲系統具備良好的可擴展性、容錯性,以及內部實現對用戶透明等特性,這一切都離不開分佈式文件系統的支撐。現有的雲存儲分佈式文件系統包括GFS、HDFS、Lustre、FastDFS、PVFS、GPFS、PFS、Ceph和TFS等。它們的許多設計理念相似,同時也各有特點。下面對現有的分佈式文件系統進行詳細介紹。

  3.1 Google File System (GFS)

  GFS是一個可擴展的分佈式文件系統,其主要用於處理大的分佈式數據密集型應用。GFS的一大特點就是其運行於大量普通的廉價硬件上,經過GFS文件系統提供容錯功能,並給大量用戶提供可處理海量數據的高性能服務。和傳統標準相比,GFS文件規模巨大,其主要用來處理大文件。此外,GFS大多經過直接追加新數據來改變文件,而非覆蓋現有數據,一旦數據寫入完成,文件就僅支持讀操做。

  3.2 Lustre文件系統

  Lustre文件系統是一種典型的基於對象存儲技術 的分佈式文件系統, 目前,該文件系統已經普遍用於國外許多高性能計算機構,如美國能源部、Sandia國家實驗室、Pacific Northwest國家實驗室等。Top500機器中有多臺均採用的是Lustre文件系統。

  Lustre文件系統的大文件性能良好 ,其經過基於對象的數據存儲格式,將同一數據文件分爲若干個對象分別存儲於不一樣的對象存儲設備。大文件I/O操做被分配到不一樣的對象存儲設備上並行實施,從而實現很大的聚合帶寬。此外,因爲Lustre融合了傳統分佈式文件系統的特點和傳統共享存儲文件系統的設計理念,所以其具備更加有效的數據管理機制、全局數據共享、基於對象存儲、存儲智能化,以及可快速部署等一系列優勢。

  儘管如此,因爲Lustre採用分佈式存儲結構將元數據和數據文件分開存儲,訪問數據以前須要先訪問元數據服務器,這一過程增長了網絡開銷,從而使得Lustre的小文件I/O操做性能較差。

  3.3 FastDFS文件系統

  FastDFS是一個輕量級分佈式文件系統,其體系架構如圖所示,整個文件系統由客戶端(Cli—ent)、跟蹤器(Tracker)和存儲節點(Storage)三部分組成。系統服務端有Tracker和Storage兩個角色,Tracker用來負責做業的調度和負載均衡,Storage則用於存儲文件,並負責管理文件。爲支持大容量的數據存儲,Storage採用分卷或分組的數據組織方式;存儲系統可由一個或多個卷組成,一個卷能夠由一臺或多臺存儲服務器構建。

  同一個卷下的多臺存儲服務器中的數據文件都是相同的,卷與卷之間的文件則相互獨立,經過這種數據組織方式,能夠很好地實現數據冗餘備份以及系統負載均衡的目的。

                                     圖 FastDFS文件系統體系結構示意圖

  3.4 Parallel Virtual File System (PVFS)

  由Clemson大學設計併成功開發的PVFS是一種構建在Linux操做系統之上的開源並行虛擬文件系統。PVFS基於傳統的C/S架構進行設計,整個文件系統由管理結點、計算結點和I/0結點三大部分組成,管理結點負責處理文件的元數據,計算節點用來執行各類計算任務,I/0結點則主要負責數據文件的存儲和讀寫,並負責給計算結點提供所需的數據。

  在整個集羣系統範圍內,PVFS使用一致的全局命名空間,另外,PVFS應用對象存儲的概念,將數據文件條塊化爲多個對象並分別存儲到多個存儲結點上。因爲在網絡通訊方面,PVFS只支持TCP網絡通訊協議,這使得其靈活性不足;

  此外,因爲PVFS應用對象存儲的概念進行數據文件的存儲,其在處理小文件時性能也不太理想。

  3.5 General Parallel File System (GPFS)

  GPFS的前身是Tiger Shark多媒體文件系統,其是IBM專爲Linux集羣系統設計的並行共享文件系統。在系統結構上,GPFS主要借鑑了IBM Linux集羣系統中的虛擬共享磁盤技術,計算節點能夠經過使用交換網絡來同時並行訪問系統中多個磁盤中的數據,並依賴這一訪問方式來實現較高的I/O帶寬。

  GPFS的主要特色包括:經過循環的方式將大文件存儲在不一樣的磁盤上,同時經過合併操做來處理小文件的讀寫,使用動態選舉的元數據結點來管理元數據;此外,GPFS還具備基於日誌的失效節點的自動恢復策略以及集中式的數據鎖機制。

  3.6 Parallel File System (PFS)

  Sun公司的PFS分佈式文件系統能夠很好地支持高性能和可擴展的I/O操做,其主要設計思想是將文件分佈在多個磁盤和服務器上,並將存放文件的多個設備邏輯上當作一個虛擬磁盤來統一管理。

  很顯然,PFS能夠同時跨越多個存儲系統,能夠將整個PFS中的全部存儲設備都當作是這個虛擬磁盤的一部分;

  當有多個節點同時訪問同一文件時,PFS能夠並行地爲這些節點提供訪問服務。PFS分佈式文件系統構建於Solaris操做系統之上,主要包括宿主節點、計算節點、I/O從屬節點和I/O主機節點。宿主節點是PFS提供給其它系統的人口,只有成功登陸到宿主節點的用戶纔是合法的,才能夠訪問PFS內部的數據文件。計算節點主要用來管理PFS系統的通訊和內存資源。L/O主機節點則主要負責文件系統的目錄管理和存儲塊管理,同時爲存儲數據文件提供讀寫服務。

  I/O從屬節點僅用來處理磁盤的讀寫操做和空白塊的分配工做。

  3.7 Ceph雲存儲文件系統

  Ceph是Califomia大學Santa Cruz分校的Sage Weil設計的一種雲存儲分佈式文件系統。Ceph雲存儲文件系統的主要目標是設計基於POSIX的無節點故障分佈式文件系統,而且數據文件具備容錯和無縫複製功能。

  Ceph文件系統具備三大特色,首先,其使用多個元數據服務器來構建系統的命名空間,這顯著強化了元數據服務器的併發訪問功能;

  其次,在元數據服務器上,Ceph文件系統採用了動態的子樹劃分技術,並支持元數據服務器的負載遷移,能夠很好地實現元數據的負載均衡;最後,Ceph文件系統提供基於對象存儲設備的對象文件系統,並將數據文件做爲一個存儲對象來對待,這有效地提升了數據文件的讀寫效率。

  3.8 Taobao File System (TFS)

  Taobao file system (TFS)是由淘寶開發的雲存儲文件系統,其主要面向海量非結構化數據存儲問題提供服務。TFS部署在普通的Linux集羣上,爲淘寶網提供高可靠、高併發的大量小文件數據存儲服務。TFS採用扁平化的數據組織結構將文件名映射到文件的物理地址,簡化了文件訪問流程,必定程度上優化了系統讀寫性能。

  一個TFS集羣由兩個NameServer節點和多個DataServer節點組成,TFS的服務程序都是做爲一個用戶級的程序運行在普通Linux機器上。TFS將衆多的小文件合併成大文件,並稱這個大文件爲Block,Block存儲在DataServer上,每一個Block在TFS系統內均擁有惟一的Id號。

  NameServer負責維護block與DataServer之間的映射關係。NameServer採用HA結構,即雙機互爲熱備份,來實現容災功能,兩臺NameServer同時運行,其中一臺爲主節點,另一臺做爲備用節點。當主NameServer節點出現故障後,迅速將備份NameServer切換爲主節點並對外提供服務。

  4 結語

  自雲計算技術出現以來,隨着科學技術的不斷髮展,以及學術界和工業界的不斷推動,雲計算應用不斷髮展壯大,雲存儲也逐漸從理論走向實踐。

  本文首先對雲計算技術進行介紹,而後引出雲存儲的概念,並對雲存儲的技術原理、性能優點等進行分析,同時指出分佈式文件系統是實現雲存儲系統高可擴展、高容錯性、高性價比等一系列性能優點的基礎保障。最後對現有的雲存儲分佈式文件系統進行詳細而深刻的討論。

  在雲存儲的發展和應用過程當中,近年來不斷有新的熱點出現並被普遍討論和研究,如雲存儲數據中心部署、雲存儲QoS控制、用戶請求區分、數據副本策略以及調度機制等不少方面。本文工做將爲咱們對雲存儲技術進行更深刻的研究提供基礎支撐。

相關文章
相關標籤/搜索