官术网_书友最值得收藏!

1.5.3 對象存儲文件系統體系結構

對象存儲系統的概念一經提出,受到學術界和工業界的廣泛關注。眾多研究機構和廠商紛紛開發出各具特色的原型系統,其中備受人們關注的有集群文件系統公司的Lustre系統,Panasas公司開發的Activescale Storage Cluster以及IBM公司的Storage Tank系統。這些對象存儲系統在性能上較傳統的SAN和NAS系統都有很大的提高,特別是在可擴展性方面特點尤為突出。

1.Lustre

Lustre是一個開放源碼的、基于對象存儲的高性能分布式文件系統,由集群文件系統(cluster file system, CFS)公司研發,已經開放的版本為1.4.6,在其官方網站(http://www.lustre.org)可以自由下載。目前,Lustre在美國能源部(DOE)、Lawrence Livermore國家實驗室、Los Alamos國家實驗室、Sandia國家實驗室、Pacific Northwest國家實驗室的高性能計算系統中已得到了初步的應用。Lustre運行在商業設備上,使用基于對象的磁盤(object-based disks, OBD)存儲數據,元數據服務器(MDS)為整個文件系統提供元數據服務。Lustre由三個部分組成,即客戶端、MDS和存儲服務器(object storage target, OST)。三個部分通過高速的互聯網連接。Lustre把文件當作由元數據服務器定位的對象,元數據服務器指導實際的文件I/O請求到存儲服務器,存儲服務器管理在基于對象的磁盤組上的物理存儲。對于客戶端而言,Lustre是一個透明的文件系統,無須知道具體數據所在的位置,可以透明地訪問整個文件系統中的數據。客戶端同OST進行文件數據的交互,包括文件數據的讀寫、對象屬性的改變等;同MDS進行元數據的交互,包括目錄管理、命名空間管理等。由于采用元數據和存儲數據相分離的技術,可以充分分離計算和存儲資源,使得客戶端計算機可以專注于用戶和應用程序的請求,存儲服務器和元數據服務器專注于讀、傳輸和寫數據。存儲服務器端的數據備份和存儲配置以及存儲服務器擴充等操作不會影響到客戶端,存儲服務器和元數據服務器均不會成為性能瓶頸。三個組成部分除了各自的獨特功能以外,相互之間共享諸如鎖、請求處理、消息傳遞等模塊。Lustre是一個高度模塊化的系統,三個組成部分可以在一個節點上工作,也可以在不同的節點上工作。

2005年3月中旬,惠普公司宣布正式向國內市場推出其第二款基于惠普“存儲網格”體系結構的產品——HP StorageWorks Scalable File Share(HP SFS)。惠普公司推出的SFS是首款采用Lustre技術的商業化產品。Lustre技術已經于2004年在世界上最大的10個Linux集群之一的美國能源部西北太平洋國家實驗室(PNNL)上投入使用。PNNL的HP Linux超級集群配備了1800多顆安騰2處理器,運算速度可達11 Teraflops(1 Teraflop相當于每秒1萬億次浮點運算),并且可以在單一的53 TB基于Lustre的文件共享系統中提供3.2GB/s的帶寬來運行生產負載。獨立的Linux客戶機可以向并行Lustre服務器以650MB/s的速度來寫入數據。這套系統消除了I/O帶寬瓶頸問題,從而為用戶在成百甚至上千臺獨立的、分布式的文件系統之間拷貝文件節約了大量時間。

2.Activescale Storage Cluster

同集群文件系統公司一樣,Panasas公司也開發出了自己的對象存儲系統——Activescale Storage Cluster,應用于大規模的Linux集群環境。該系統由StorageBlade, DirectorBlade和Panasas文件系統組成。

StorageBlade就是對象存儲體系結構中的OSD,數據保存在StorageBlade上。目前,系統中每個StorageBlade包含兩個120GB或者150GB的SATA硬盤用于存放數據。StorageBlade使用的是1.2 GHz Intel Celeron CPU,配備512MB SDRAM作為內存。StorageBlade使用一個千兆位以太網作為傳輸接口。這就使得StorageBlade具有了相當的處理和數據傳輸能力。DirectorBlade就是對象存儲體系結構中的MDS。DirectorBlade擁有很強的處理能力,使用Intel LV Xeon 2.4 GHz的CPU,并配備了4GB的DDR內存。為了保證DirectorBlade擁有足夠的數據傳輸帶寬,DirectorBlade配備了兩個千兆位以太網接口。根據需要,DirectorBlade還可以再添加一個,組成雙機熱備份。Activescale Storage Cluster使用千兆位以太網作為網絡連接,其中對外的連接由4個千兆位以太網進行捆綁,提供了高速的訪問接口。Panasas文件系統運行在Activescale Storage Cluster上,為應用程序提供文件系統接口,將應用程序的文件請求發送給DirectorBlade和StorageBlade,并將StorageBlade返回的數據交給應用程序。Panasas文件系統在客戶端將需要寫到StorageBlade的數據進行RAID分帶,將包括校驗數據在內的所有分帶分別寫入各個StorageBlade,從而使數據的存儲更可靠。DirectorBlade也為文件系統提供了元數據訪問、文件和目錄訪問管理,以及客戶端上數據的Cache一致性。Panasas文件系統在可擴展性上表現非常突出,當OSD的數量從30增加到300時,整個系統的集合訪問帶寬幾乎呈直線增長。

3.IBM Storage Tank

IBM公司在原有的GPFS文件系統之上進行改進,開發出了Storage Tank存儲系統。總體上來講,Storage Tank仍然屬于SAN文件系統,但它在很大程度上借鑒了對象存儲的理念,使得Storage Tank在性能和可擴展性方面較傳統的SAN系統有了很大的改進。

Storage Tank是一個異構可擴展的SAN文件系統。它可以提供異構環境下的文件共享訪問,對數據進行集中管理,而且能提供企業級的可擴展性。Storage Tank采用積極的緩存策略,盡量在客戶端緩存文件元數據和數據。即使打開的文件被關閉,都可以在下次使用時利用已經緩存的文件信息,整個文件系統由管理員按照目錄結構劃分成多個文件集(fileset)。每一個文件集都是一個相對獨立的整體,可以進行獨立的元數據處理和文件系統備份等。不同的文件集可以分配到不同的元數據服務器處理,形成元數據服務器機群,提供系統的擴展性、性能、可用性等。

在Storage Tank中,塊虛擬層將整個SAN的存儲進行統一的虛擬管理,為文件系統提供統一的存儲空間。這樣的分層結構有利于簡化文件系統的設計和實現。同時,它們的客戶端支持多種操作系統,是一個支持異構環境的分布式文件系統。Storage Tank采用了基于策略的文件數據位置選擇方法,能有效地利用系統資源、提高性能、降低成本。與傳統的SAN相比,Storage Tank在數據管理上改動較大。傳統的SAN在管理數據塊時是進行統一管理的,向上也是提供統一的塊訪問接口。而Storage Tank在此基礎上進行改進。對于存儲資源,它仍然使用統一的塊管理,但在此之上增加了一個抽象層,對上提供普通的文件服務,文件到塊的映射關系由此抽象層管理。這就使得數據管理具有更清晰的層次,更具模塊化。系統的可擴展性較傳統的SAN也有較大的提高。由于使用普通的文件訪問接口,就很容易讓不同環境下的用戶使用,提高了系統的可用性。

4.對象存儲系統體系結構

對象存儲系統是一個分布式的網絡文件系統。它主要由三個部分組成:設備端、元數據服務器端和客戶端。這三個部分通過高速網絡進行互聯,目前大多數的對象存儲文件系統都是采用高速的以太網作為互聯網絡。

對象存儲文件系統的設備端部分就運行在各個OSD上。OSD是一個智能設備,除了擁有大量的存儲資源外,它還擁有自己的CPU和內存。對象存儲文件系統的設備端主要負責OSD內的對象及其屬性的組織和在存儲介質上的物理存放,并向外提供基于對象的訪問接口。對象存儲文件系統的設備端接收從網絡上發來的各種請求,對其進行命令解析和安全驗證。當安全驗證通過后,將數據從存儲介質上讀出,以對象為基本傳輸單位發送給請求者。用戶在向OSD發出數據請求時,以對象為基本單元,而對象在存儲介質上的物理分布對用戶來說是透明的。

對象存儲文件系統的元數據服務器部分運行在元數據服務器上。元數據服務器可以是一臺普通的服務器,也可以是集群服務器。對象文件系統元數據服務器部分主要負責維護用戶請求的文件到OSD上的對象的映射關系、安全認證信息和Cache數據一致性等。與SAN不同的是,對象存儲文件系統的元數據服務器部分所管理的是對象一級的元數據。而對象在磁盤上的組織等元數據交由存儲該對象的OSD管理。這就大大減輕了對象存儲系統元數據服務器的負載,減小了元數據服務器成為瓶頸的可能,增加了整個對象存儲系統的可擴展性。

對象存儲文件系統的客戶端運行在各種用戶的終端機或者大型的集群服務器上。它主要負責給用戶提供一個友好的訪問界面,能夠高效、安全地利用OSD提供的存儲資源。為了不影響用戶的應用,客戶端要求能支持各種平臺環境,并能在用戶不修改應用程序的情況下提供高效、安全的服務。因此,客戶端一般提供兩種使用方式,一種是以API或者系統調用的形式提供給用戶直接使用;另一種就是直接在Linux環境下掛載出一個目錄或者在Windows環境下創建一個邏輯盤符供用戶使用。

5.對象存儲的設備端

對象存儲文件系統設備端運行在對象存儲設備上。對象存儲設備是一個智能存儲設備,它擁有自己的CPU、內存、EPROM、網絡接口、塊設備接口和磁盤等存儲介質。對象存儲設備體系結構如圖1.6所示。

圖1.6 對象存儲設備體系結構

如圖1.6所示,對象存儲文件系統設備端運行在對象存儲設備上時,通過網絡接口接收和發送數據。此時接收和發送的數據都是以對象作為基本傳輸單元的;而對象及其屬性在磁盤等存儲介質上如何存放,磁盤上的空間如何管理等都由運行在OSD上的對象存儲文件系統客戶端部分管理。OSD的一些配置信息和啟動參數都存放在EPROM中。

當數據請求到達OSD后,網絡接口將接收到的數據存放到內存中,交由CPU進行處理。CPU從數據中提取出請求命令、對象ID、對象內偏移、讀寫長度等相關信息。CPU得到這些信息后,根據對象存儲文件系統客戶端部分軟件設計的一種機制找到對象所存放的磁盤及其具體的位置,并向磁盤發出讀寫請求,完成操作。最后通過網絡端口向請求發出者返回相關信息。

從圖1.6中我們可以看出,較傳統的存儲設備而言,OSD具有了相當的處理能力。因此,對象存儲文件系統就將對象在存儲介質上的具體存放的任務交由OSD負責。同時,OSD可以利用自己的處理能力合理安排對象及其屬性在不同磁盤上的分布,在OSD所掛載的多個磁盤上做負載平衡。

另外,每個對象都有屬性,OSD還可以自己定義對象的屬性,而對象的屬性反映了對象的特征。這樣一來,OSD就可以利用對象的屬性把對象進行分類管理,方便用戶使用。另外,對象存儲文件系統的設備端部分可以利用OSD的處理器和內存,借助對象的屬性,對用戶訪問的對象進行預取和緩存,提高OSD的性能。另外,在響應讀寫請求時,OSD還以對象為基本單元負責數據的安全。因此,用戶訪問OSD只能以對象為基本單元,用戶無法讀取OSD中磁盤上指定位置的數據塊。這就使得對象存儲系統中有關數據的安全信息較SAN而言大為減少,相應的管理也更為合理。

6.對象存儲文件系統元數據服務器

對象存儲文件系統的元數據服務器部分運行在普通的服務器或者集群服務器上,它負責管理由用戶訪問時所使用的文件名到OSD上的對象ID的映射關系、對象存儲文件系統中的Cache數據一致性、用戶認證以及安全證書等。

對象存儲文件系統的元數據服務器部分與客戶端和OSD通過Socket進行通信。MDS負責維護文件到對象的對應關系,并實時掌握OSD的各種信息,如負載、可利用空間等。這通過這些信息對負載和對象在OSD間的分布進行實時的調度,實現OSD間的負載平衡。此外,元數據服務器還負責管理用戶的訪問權限。與傳統的分布式文件系統不同的是,這里的元數據服務器對權限的管理以對象為基本單元,其粒度介于塊和文件之間,相對于塊一級和文件一級而言,在易管理性和可共享性上做了很好的折中。與此同時,元數據服務器還負責對用戶的認證以及安全證書的發放。

對象存儲文件系統的元數據服務器部分為每個用戶維護著一張文件與對象之間的對應表。一個文件可以對應多個對象,多個文件也可以聚合起來,在一個文件中存放。這可以通過元數據表中的Flag值來表示:Flag為0時,表明一個文件對應了多個對象,索引號表明文件對應的各對象的排列順序,偏移表示對象在文件中的起始的偏移地址;Flag為1時,表明多個文件聚合存放在一個對象中,索引號表明各文件在這個對象中的排列順序,偏移表示各文件在這個對象中的起始偏移地址。OSD號是指各OSD設備的設備號,它是各OSD設備的唯一標識。對象號是全局唯一的,根據OSD命令集的規定,它是一個128位無符號數。要注意的是,這里的文件名對某個用戶而言是全局唯一的,因為對象存儲系統同時可以對多個用戶提供服務,但每個用戶所看到的文件視圖應該是各自獨立的。

7.對象存儲文件系統客戶端

對象存儲文件系統的客戶端部分運行在用戶的終端PC機或者高性能集群服務器上。它提供一套標準的訪問接口供用戶調用,使得用戶在訪問對象存儲系統時像訪問本地文件系統一樣。

用戶對各種應用程序不進行任何修改就可以在對象存儲系統上運行。用戶的終端PC機或者高性能集群服務器所使用的操作系統平臺是各不相同的。為了保證用戶的應用程序能透明地訪問對象存儲系統,對象存儲文件系統就必須能在Windows操作系統下創建出一個虛擬的盤符或者在Linux操作系統下掛載一個目錄。當用戶訪問虛擬盤符或者這個目錄時,實際上使用的就是對象存儲系統中的存儲資源。與此同時,對象存儲文件系統還提供一套標準的API供用戶調用。用戶可以根據自己的要求直接調用API來使用對象存儲系統,從而提高性能。

對象存儲文件系統客戶端接收到上層應用發下來的讀寫請求時,通過與元數據服務器交互,獲知所訪問的文件由哪些對象組成,在哪個OSD上。然后直接與OSD通信進行數據訪問。在進行數據傳輸時,不需要元數據服務器干預。這種結構大大減小了元數據服務器的負載,用戶在進行數據訪問時的性能和效率也大為提高。也正因為此,對象存儲系統具有很強的可擴展能力。

8.OSD命令集

OSD命令集(Information Technology-SCSI Object-Based Storage Device Commands)由美國T10工作組指定和修改。T10工作組是美國信息技術標準國際委員會(The International Committee for Information Technology Standards, INCITS)旗下的一個標準制定組織,主要負責指定SCSI存儲接口方面的標準。INCITS隸屬于美國國家標準研究所(American National Standards Institute, ANSI)。

T10工作組維護的OSD命令集于2004年7月30日又一次做了修改。該命令集已經于2004年11月15日由INCITS出版(ANSI/INCITS 400—2004)。目前T10工作組正在制訂下一代OSD命令集(Information Technology-SCSI Object-Based Storage Device Commands-2, OSD-2)。OSD命令集定義了一組用于對象存儲的命令集,從而替代傳統的“塊”一級的存儲模式。OSD命令集是SCSI-3命令集的擴充。它的指定主要用來定義一種能提供高效的輸入/輸出接口、可自我管理、自我分配、可變長的數據存儲容器——對象。

2005年9月全球網絡存儲工作協會(中國)(Storage Networking Industry Association, SNIAChina)和《計算機世界》共同主辦的美國網絡存儲世界(Storage Networking World, SNW)大會中國分會上,希捷公司(Seagate)、美國Emulex公司和IBM共同進行了面向對象的存儲設備聯合技術演示。該次SNW上的演示是OSD第一次展示在驅動器上生成文件系統,同時也是第一個符合OSD命令集的原型設備。

OSD命令集的主要包含4部分內容:對象存儲模型、對象存儲命令一般格式、對象存儲命令和對象存儲命令的參數。

對象存儲模型定義了一種全新的存儲模式。傳統的存儲系統中文件系統分為兩個層次:文件系統用戶組件和文件系統存儲管理組件。這兩個部分都運行在主機系統中。而對象存儲模式將這兩個部分進行了拆分。文件系統存儲管理組件被下移到對象存儲設備(OSD)上,稱為OSD存儲管理組件。對象存儲管理組件向上以對象存儲接口提供服務。文件系統用戶組件通過對象存儲接口,調用OSD上的對象存儲管理組件。這種存儲模型的實質就是將用戶與存儲設備之間的接口由“塊”變為對象。對象在磁盤上的分布與管理由OSD負責,減輕了主機的負擔。對象存儲模型中還定義了一種基于三方通信的安全模型。

OSD命令集是SCSI-3命令集的擴充,它的命令形式和SCSI命令十分相似。與SCSI命令不同的是,OSD命令中除了有對數據的操作外,每個命令都包含處理對象屬性的部分。OSD命令集定義了20個對象操作命令,其中包括常見的讀、寫等操作,也定義了一些對象存儲系統特有的操作命令,如LIST, LIST Collection等。對象存儲命令的參數較為復雜,也是它的一大特色。主要是因為對象都具有屬性,而每個OSD命令都有對對象屬性進行處理的部分。正是因為對象擁有屬性,而屬性反映了對象的某些特征,這就使得OSD能較為合理地自我管理和分配對象在磁盤上的分布,OSD就能提供高效的基于對象的存儲服務。對象存儲命令的參數主要分為屬性參數、診斷參數、日志參數、模型參數等。

9.對象存儲文件系統的數據訪問流程

對象存儲文件系統的三個部分是一個不可分割的有機整體,它們通過高速互聯網絡互相通信,共同為用戶提供服務。對象存儲文件系統的數據訪問流程(以寫數據為例)如圖1.7所示。

圖1.7 對象存儲文件系統的數據訪問流程

典型的對象存儲文件系統的寫數據的訪問流程具體步驟如下:

①用戶在使用對象存儲文件系統時,以寫文件為例,首先向對象存儲文件系統客戶端發出寫請求,同時將所寫文件的文件名、文件的數據及其長度傳給對象文件系統客戶端。對象文件系統客戶端在接收到寫請求后,首先與元數據服務器進行通信,獲取寫文件的安全認證等相關信息。

②元數據服務器接到用戶的請求后,就會對用戶進行安全檢測,判斷是否是合法用戶、是否擁有寫權限等。安全檢測通過后,就會根據目前整個系統的負載和各OSD上存儲資源的使用情況,合理分配一些OSD負責接收用戶的數據,并將相關信息返回給客戶端。其中包括用戶可以將文件寫到哪些OSD上,文件由哪些對象組成,其對象ID是多少以及安全證書等。

③與此同時,MDS將與被分配用來接收數據的OSD進行通信,讓其做好準備接收數據,并將相關的安全認證信息告訴此OSD。

④對象文件系統客戶端得到這些信息后,直接與OSD建立連接,向OSD發出寫對象請求,并將安全證書發送給OSD。OSD接收到安全證書后對其進行安全檢驗,通過后開始接收數據。此時的數據都以對象為單位進行傳輸。數據傳輸完成后,創建對象的相關屬性。

⑤數據傳輸完成后,向用戶返回信息,通知數據已經接收完成。對象存儲文件系統客戶端得知數據傳輸完畢后,向上層應用程序返回信息。

⑥與此同時,通知元數據服務器數據傳輸完畢,讓其記錄文件到對象的索引信息。整個寫請求操作完成。

整個數據傳輸的過程是一個三方通信的過程。用戶在進行文件數據傳輸時,直接和OSD通信,元數據服務器沒有直接干預,這就使得元數據服務器不再成為分布式文件系統的瓶頸。另外,元數據服務器對整個對象存儲系統中各OSD的負載情況了如指掌,當用戶有訪問請求時,元數據服務器可以合理安排那些OSD相應請求,做到OSD間的負載平衡。而且元數據服務器管理的是對象的元數據,較SAN系統而言,其管理的數據量要小很多,從而擺脫了元數據服務器成為分布式文件系統的瓶頸。

用戶的應用程序要能從OSD讀寫數據,就必須由對象文件系統客戶端、元數據服務器端和OSD合作共同完成。三方通過高速網絡進行連接,保持實時交互。文件由哪些對象組成、分布在哪些OSD上都是由元數據服務器根據整個對象存儲系統的實時負載合理地進行分配。

主站蜘蛛池模板: 昌宁县| 青田县| 城市| 阜新| 贵港市| 通榆县| 遂宁市| 博爱县| 苍南县| 富民县| 阿拉善盟| 鹤壁市| 乳山市| 加查县| 堆龙德庆县| 合肥市| 五大连池市| 增城市| 葵青区| 永寿县| 灌云县| 剑川县| 舞钢市| 沽源县| 焦作市| 辛集市| 开江县| 灵璧县| 得荣县| 阿荣旗| 邵阳市| 林西县| 溆浦县| 温泉县| 聊城市| 化隆| 都江堰市| 左贡县| 广汉市| 大姚县| 固原市|