當前位置:
首頁 > 科技 > DDN收購Intel Lustre系統業務,詳解Lustre系統架構、配置和調優

DDN收購Intel Lustre系統業務,詳解Lustre系統架構、配置和調優

DDN公司近日宣布收購Intel公司Lustre文件系統業務和相關資產(Intel收購Whamcloud獲得Lustre文件系統)。這項重要收購將加強DDN在大規模數據方面的全球市場領導地位,幫助DDN為Lustre客戶提供更加強大的現場支持和投資雄厚的技術路線圖。這項收購也使得DDN可以將Lustre在高性能計算方面的領導地位拓展到那些快速增長中的市場,如數據分析、人工智慧和混合雲。

本次收購Intel公司的開源Lustre文件系統的全部資產,旨在將這項先進的文件系統技術加入DDN已頗為充實的高性能計算、數據分析和雲存儲產品組合中(DDN的HPC產品家族中,主要包括Lustre和GPFS並行文件系統)。

Lustre已經在數千個數據中心部署,領域遍及健康、能源、製造、金融服務、學術、研究和高性能計算實驗室。在全球最快的那些高性能計算機使用的存儲系統中,Lustre也持續地佔據著頭把交椅。Lustre長期被公認為是擁有最先進技術的並行文件系統。


Lustre文件系統是什麼

Lustre架構是一種集群存儲體系結構,其核心組件就是Lustre文件系統。該文件系統可在Linux操作系統上運行,並提供了符合POSIX標準的UNIX文件系統介面。

Lustre架構用於許多不同種類的集群。眾所周知,它服務於許多全球最大的高性能計算(HPC)集群,提供了數以萬計的客戶端,PB級存儲和每秒數百GB的吞吐量。許多HPC站點使用Lustre文件系統作為全站範圍的全局文件系統,為數十個群集提供服務。

Lustre文件系統具有按需擴展容量和性能的能力,降低了部署多個獨立文件系統的必要性(如每個計算群集部署一個文件系統),從而避免了在計算集群之間複製數據,簡化了存儲管理。Lustre文件系統不僅可將許多伺服器的存儲容量進行聚合,也可將其I / O吞吐量進行聚合,並通過添置伺服器進行擴展。通過動態地添加伺服器,輕鬆實現整個集群的吞吐量和容量的提升。

雖然Lustre文件系統可以在許多工作環境中運行,但也並非就是所有應用程序的最佳選擇。當單個伺服器無法提供所需容量時,使用Lustre文件系統集群無疑是最適合的。在某些情況下,由於其強大的鎖定和數據一致性,即使在單個伺服器環境下Lustre文件系統也比其他文件系統表現得更好。

目前,Lustre文件系統並不特別適用於「端對端」的用戶模式。在這種模式下,客戶端和伺服器在同一節點上運行,每個節點共享少量存儲。由於Lustre缺少軟體級別的數據副本,如果一個客戶端或伺服器發生故障,存儲在該節點上的數據在該節點重新啟動前將不可訪問。


Lustre文件系統特性

Lustre文件系統可運行在各種廠商的內核上。一個Lustre文件系統在客戶端節點數量、磁碟存儲量、帶寬上進行擴大或縮小。可擴展性和性能取決於可用磁碟、網路帶寬以及系統中伺服器的處理能力。 Lustre文件系統可以以多種配置進行部署,這些配置的可擴展性遠遠超出了迄今所觀察到生產系統中的規模和性能。

下表中列出了一些Lustre文件系統的可擴展性和性能:

其他Lustre軟體性能特徵如下:

性能增強的ext4文件系統:Lustre文件系統使用改進版的ext4日誌文件系統來存儲數據和元數據。這個版本被命名為ldiskfs,不僅性能有所提升且提供了Lustre文件系統所需的附加功能。

Lustre 2.4或更高版本中,可使用ZFS作為Lustre的MDT,OST和MGS存儲的後備文件系統。這使Lustre能夠利用ZFS的可擴展性和數據完整性特性來實現單個存儲目標。

符合POSIX標準:通過完整的POSIX測試集,像測試本地文件系統Ext4一樣,測試Lustre文件系統客戶端,只有極少量例外。在集群中,大多數操作都是原子操作,因此客戶端永遠不會看到損壞的數據或元數據。 Lustre軟體支持mmap()文件I /O操作。

高性能異構網路:Lustre軟體支持各種高性能低延遲的網路,可使用遠程直接內存訪問(RDMA)方式,實現在InfiniBand、Intel OmniPath等高級網路上的快速高效網路傳輸。可使用Lustre路由橋接多個RDMA網路以獲得最佳性能。Lustre軟體同時也集成了網路診斷。

高可用性:Lustre文件系統通過OSTs(OSS targets)的共享存儲分區實現主動/主動故障切換。 Lustre 2.3或更早版本通過使用MDT(MDS target)的共享存儲分區實現主動/被動故障切換。 Lustre文件系統可以與各種高可用性(HA)管理器一起工作,以實現自動故障切換並消除了單點故障(NSPF)。這使得應用程序透明恢復成為可能。多重掛載保護(MMP)提供了對高可用性系統中錯誤的綜合保護,避免導致文件系統損壞。

Lustre 2.4或更高版本中,可配置多個MDT的主動/主動故障切換。這允許了通過添加MDT存儲設備和MDS節點來擴展Lustre文件系統的元數據性能。

安全性:默認情況下,TCP連接只允許授權埠通過。 UNIX組成員身份在MDS上進行驗證。

訪問控制列表(ACL)及擴展屬性:Lustre安全模型遵循UNIX文件系統原則,並使用POSIX ACL進行增強。此外還有一些額外功能,如root squash。

互操作性:Lustre文件系統可運行在各種CPU架構和大小端混合的群集上,連續發布的Lustre主要軟體版本之間保持互操作性性。

基於對象的體系結構:客戶端與磁碟文件結構相互隔離,可在不影響客戶端的情況下升級存儲體系結構。

位元組粒度文件鎖和細粒度元數據鎖:許多客戶端可以同時讀取和修改相同的文件或目錄。 Lustre分散式鎖管理器(LDLM)確保了文件系統中所有客戶端和伺服器之間的文件是一致的。其中,MDT鎖管理器負責管理inode許可權和路徑名。每個OST都有其自己的鎖管理器,用於鎖定存儲在其上的文件條帶,其性能可隨著文件系統大小增長而擴展。

配額:用戶、組和項目配額可用於Lustre文件系統。

容量增長:通過向群集添加新的OST和MDT,可以在不中斷服務的情況下增加Lustre文件系統的大小和集群總帶寬。

受控文件布局:可以在每個文件,每個目錄或每個文件系統基礎上配置跨OST的文件布局。這允許了在單個文件系統中調整文件I/O以適應特定的應用程序要求。 Lustre文件系統使用RAID-0進行條帶化並可在OST之間調節空間使用大小。

網路數據完整性保護:從客戶端發送到OSS的所有數據的校驗和可防止數據在傳輸期間被損壞。

MPI I/O:Lustre架構具有專用的MPI ADIO層,優化了並行I/O以匹配基礎文件系統架構。

NFS和CIFS導出:可以使用NFS(通過Linux knfsd)或CIFS(通過Samba)將Lustre文件重新導出,使其可以與非Linux客戶端(如Microsoft Windows 和Apple Mac OS X)共享。

災難恢復工具:Lustre文件系統提供在線分散式文件系統檢查(LFSCK),當發生主要文件系統錯誤的情況下恢復存儲組件之間的一致性。 Lustre文件系統在存在文件系統不一致的情況下也可以運行,而LFSCK可以在文件系統正在使用時運行,因此LFSCK不需要在文件系統恢復生產之前完成。

性能監視:Lustre文件系統提供了多種機制來檢查性能和進行調整。

開放源代碼:為在Linux操作系統上運行,Lustre軟體使用GPL 2.0許可證。


Lustre文件系統主要組件

一個Lustre安裝實例包括管理伺服器(MGS)和一個或多個與Lustre網路(LNet)互連的Lustre文件系統。Lustre文件系統組件的基本配置如下圖所示:


管理伺服器(MGS)

MGS存儲集群中所有Lustre文件系統的配置信息,並將此信息提供給其他Lustre組件。每個Lustre目標(Target)通過聯繫MGS提供信息,而Lustre客戶通過聯繫MGS獲取信息。MGS最好有自己的存儲空間,以便可以獨立管理。但同時,MGS可以與MDS放在一起,並共享存儲空間,如上圖中所示。


Lustre文件系統組件

每個Lustre文件系統由以下組件組成:

元數據伺服器(MDS)- MDS使存儲在一個或多個MDT中的元數據可供Lustre客戶端使用。每個MDS管理Lustre文件系統中的名稱和目錄,並為一個或多個本地MDT提供網路請求處理。

元數據目標(MDT)- 在Lustre 2.3或更早版本中,每個文件系統只有一個MDT。 MDT在MDS的附加存儲上存儲元數據(例如文件名,目錄,許可權和文件布局)。雖然共享存儲目標上的MDT可用於多個MDS,但一次只能有一個MDS可以訪問。如果當前MDS發生故障,則備用MDS可以為MDT提供服務,並將其提供給客戶端。這被稱為MDS故障切換。

在Lustre 2.4中,分散式命名空間環境(DNE)中可支持多個MDT。除保存文件系統根目錄的主MDT之外,還可以添加其他MDS節點,每個MDS節點都有自己的MDT,以保存文件系統的子目錄樹。

在Lustre 2.8中,DNE還允許文件系統將單個目錄的文件分布到多個MDT節點。分布在多個MDT上的目錄稱為條帶化目錄。

對象存儲伺服器(OSS):OSS為一個或多個本地OST提供文件I / O服務和網路請求處理。通常,OSS服務於兩個到八個OST,每個最多16TB;在專用節點上配置一個MDT;在每個OSS節點上配置兩個或更多OST;而在大量計算節點上配置客戶端。

對象存儲目標(OST):用戶文件數據存儲在一個或多個對象中,每個對象位於Lustre文件系統的單獨OST中。每個文件的對象數由用戶配置,並可根據工作負載情況調試到最優性能。

Lustre客戶端:Lustre客戶端是運行Lustre客戶端軟體的計算、可視化或桌面節點,可掛載Lustre文件系統。

Lustre客戶端軟體為Linux虛擬文件系統和Lustre伺服器之間提供了介面。客戶端軟體包括一個管理客戶端(MGC),一個元數據客戶端(MDC)和多個對象存儲客戶端(OSC)。每個OSC對應於文件系統中的一個OST。

邏輯對象卷(LOV)通過聚合OSC以提供對所有OST的透明訪問。因此,掛載了Lustre文件系統的客戶端會看到一個連貫的同步名字空間。多個客戶端可以同時寫入同一文件的不同部分,而其他客戶端可以同時讀取文件。

與LOV文件訪問方式類似,邏輯元數據卷(LMV)通過聚合MDC提供一種對所有MDT透明的訪問。這使得了客戶端可將多個MDT上的目錄樹視為一個單一的連貫名字空間,並將條帶化目錄合併到客戶端形成一個單一目錄以便用戶和應用程序查看:


Lustre網路 (LNet)

Lustre Networking(LNet)是一種定製網路API,提供處理Lustre文件系統伺服器和客戶端的元數據和文件I/O數據的通信基礎設施。


Lustre 集群

在系統規模上,一個Lustre文件系統集群可以包含數百個OSS和數千個客戶端(如下圖所示)。 Lustre集群中可以使用多種類型的網路,OSS之間的共享存儲啟用故障切換功能。


Lustre文件系統存儲與I/O

在 Lustre 2.0 中,引入了Lustre文件標識符(FID)來替換用於識別文件或對象的UNIX inode編號。 FID是一個128位的標識符,其中,64位用於存儲唯一的序列號,32位用於存儲對象標識符(OID),另外32位用於存儲版本號。序列號在文件系統(OST和MDT)中的所有Lustre目標中都是唯一的。這一改變使未來支持多種 MDT 和ZFS(均在Lustre 2.4中引入)成為了可能。

同時,在此版本中也引入了一個名為FID-in-dirent(也稱為dirdata)的ldiskfs功能,FID作為文件名稱的一部分存儲在父目錄中。該功能通過減少磁碟I/O顯著提高了ls命令執行的性能。 FID-in-dirent是在創建文件時生成的。

在 Lustre 2.4 中,LFSCK文件系統一致性檢查工具提供了對現有文件啟用FID-in-dirent的功能。具體如下:

為1.8版本文件系統上現有文件生成IGIF模式的FID。

驗證每個文件的FID-in-dirent,如其無效或丟失,則重新生成FID-in-dirent。

驗證每個linkEA條目,如其無效或丟失,則重新生成。 linkEA由文件名和父類FID組成,它作為擴展屬性存儲在文件本身中。因此,linkEA可以用來重建文件的完整路徑名。

有關文件數據在OST上的位置信息將作為擴展屬性布局EA,存儲在由FID標識的MDT對象中(具體如下圖所示))。若該文件是普通文件(即不是目錄或符號鏈接),則MDT對象1對N地指向包含文件數據的OST對象。若該MDT文件指向一個對象,則所有文件數據都存儲在該對象中。若該MDT文件指向多個對象,則使用RAID 0將文件數據劃分為多個對象,將每個對象存儲在不同的OST上。

當客戶端讀寫文件時,首先從文件的MDT對象中獲取布局EA,然後使用這個信息在文件上執行I / O,直接與存儲對象的OSS節點進行交互。具體過程如下圖所示。

Lustre文件系統的可用帶寬如下:

網路帶寬等於OSS到目標的總帶寬。

磁碟帶寬等於存儲目標(OST)的磁碟帶寬總和,受網路帶寬限制。

總帶寬等於磁碟帶寬和網路帶寬的最小值。

可用的文件系統空間等於所有OST的可用空間總和。


Lustre文件系統條帶化

Lustre文件系統高性能的主要原因之一是能夠以輪詢方式跨多個OST將數據條帶化。用戶可根據需要為每個文件配置條帶數量,條帶大小和OST。當單個文件的總帶寬超過單個OST的帶寬時,可以使用條帶化來提高性能。同時,當單個OST沒有足夠的可用空間來容納整個文件時,條帶化也能發揮它的作用。

如圖下圖所示,條帶化允許將文件中的數據段或「塊」存儲在不同的OST中。

在Lustre文件系統中,通過RAID 0模式將數據在一定數量的對象上進行條帶化。一個文件中處理的對象數稱為stripe_count。每個對象包含文件中的一個數據塊,當寫入特定對象的數據塊超過stripe_size時,文件中的下一個數據塊將存儲在下一個對象上。stripe_count和stripe_size的默認值由為文件系統設置的,其中,stripe_count為1,stripe_size為1MB。用戶可以在每個目錄或每個文件上更改這些值。

下圖中,文件C的stripe_size大於文件A的stripe_size,表明更多的數據被允許存儲在文件C的單個條帶中。文件A的stripe_count為3,則數據在三個對象上條帶化。文件B和文件C的stripe_count是1。OST上沒有為未寫入的數據預留空間。

最大文件大小不受單個目標大小的限制。在Lustre文件系統中,文件可以跨越多個對象(最多2000個進行分割,每個對象可使用多達16 TB的ldiskfs,多達256PB的ZFS。也就是說,ldiskfs的最大文件大小為31.25 PB,ZFS的最大文件大小為8EB。Lustre文件系統上的文件大小受且僅受OST上可用空間的限制,Lustre最大可支持2 ^ 63位元組(8EB)的文件。


配置簡單的Lustre文件系統

通過使用Lustre提供的管理工具,Lustre文件系統可以按照不同的設置配置起來。下面的流程給出了如何配置一個簡單的Lustre文件系統(由一個合在一起的MGS/MDS、一個OSS帶兩個OST、一個客戶端組成)。此配置過程假定您已完成以下任務:

設置並配置您的硬體

下載並安裝Lustre軟體

以下的可選步驟如必要,則應在配置Lustre軟體前完成:

在用作OSTs或MDTs的塊設備上設置硬體或軟體RAID。

在乙太網介面上設置網路介面綁定。

設置lnet模塊參數,指定Lustre Networking(LNet)的配置,以配合Lustre文件系統工作,測試LNet配置。默認情況下,LNet將使用它在系統上發現的第一個TCP / IP介面。如果這種網路配置足夠了,就不需要配置LNet。如果您使用InfiniBand或多個乙太網介面,則需要修改LNet配置。

運行基準測試腳本 sgpdd-survey以獲得您的硬體基準性能。對您的硬體進行基準測試可以簡化那些與Lustre軟體無關的調試性能問題,確保您在安裝時獲得最佳性能


Lustre其他附加配置選項

這一部分我們將介紹如何擴展Lustre文件系統並利用Lustre配置實用程序更改配置。


擴展Lustre文件系統:Lustre文件系統可以通過添加OST或客戶端來進行擴展。

更改條帶化默認配置:文件布局條帶類型的默認配置如下表所示(使用 lfs setstripe來更改文件布局配置)。

使用Lustre配置工具。如須進行其他附加配置,Lustre提供了一些實用的配置工具,具體如下所示:

mkfs.lustre:用於為Lustre伺服器格式化磁碟。

tunefs.lustre:用於在Lustre目標磁碟上修改配置信息。

lctl:用於通過ioctl介面直接控制Lustre功能,允許訪問各種配置,維護和調試功能。

mount.lustre:用於啟動Lustre客戶端或目標伺服器。

需要注意,在一些示例腳本可在Lustre軟體安裝目錄中找到。如您安裝了Lustre源代碼,則腳本位於luster/tests子目錄中。利用這些腳本您可以快速設置一些簡單的標準Lustre配置。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

聊聊Cloud Foundry開源PaaS雲平台
詳談Lustre背後的故事,ZFS前世和今生

TAG:架構師技術聯盟 |