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


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

  雲存儲伴隨着雲計算產生,作為雲計算的先驅,它很早就進入了廣大研究人員的視野,由於其前瞻性,眾多企業都將其作為進軍雲計算的第一步。

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

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

  此外,分布式文件系統還需要隱藏內部的實現細節,對用戶和應用程序屏蔽各個計算機節點底層文件系統之間的差異,以提供給用戶統一的訪問接口和方便的資源管理手段 。很顯然,作為一種典型的分布式系統,雲存儲需要分布式文件系統的底層支撐方能實現我們所希望的功能。

  1 雲計算技術

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

  在一定程度上,我們可以認為雲計算是分布式計算、並行計算和網格計算等計算概念的商業發展 ,其基本原理是用戶通過互聯網來應用計算機集群上的資源。通過本地計算機連接互聯網向集群發送需求信息,遠端的計算機集群資源收到用戶需求信息后,將為該用戶提供必要的資源並進行運算,最后將計算結果返回至本地計算機。

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

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

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

  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控制、用戶請求區分、數據副本策略以及調度機制等很多方面。本文工作將為我們對雲存儲技術進行更深入的研究提供基礎支撐。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM