Lustre文件系統簡介
Lustre名字是由Linux和Clusters演化而來,是為解決海量存儲問題而設計的全新文件系統。是下一代的集群文件系統,可支持10,000個節點,PB的存儲量,100GB/S的傳輸速度,***的安全性和可管理性。 目前Lustre已經運用在一些領域,例如HP SFS產品等。
集群存儲簡介:
在集群里,一組獨立的節點或主機可以象一個系統一樣步調一致地工作。整個集群只有唯一的命名空間。廠商們也已經制造了一些軟件和硬件設備,它們可以把不相干的文件系統融合成只使用一個命名空間的文件系統。用戶可以訪問并共享其他用戶的數據,而無需考慮是什么介質或其所處的是哪臺主機。
集群存儲系統需要解決的最基本的問題:
(1)提供共享訪問數據,便于集群應用程序的編寫和存儲的負載均衡;
(2)提供高性能的存儲,在I/O級和數據吞吐率方面能滿足成百上千臺規模的Linux集群服務器聚合訪問的需求。
與分布式文件系統相比:
數據不需要從一個文件系統拷貝或復制到另一個文件系統,通過集群系統共享應用和數據的任務執行起來要比在單獨的設備上執行快得多;
集群可以為文件和文件系統提供更多的空間;
因為只需要管理一個文件系統,而不再是每個存儲設備或主機都需要一個文件系統,管理也更容易了;如果集群內的某臺服務器出現了故障,另一臺服務器就可以把它的工作接手過來,故障恢復也成為了現實;
用戶也可以同時對位于其網絡上的存儲設備里的所有文件進行訪問。
二、對象存儲文件系統
2.1 對象存儲文件系統架構
對象存儲文件系統的核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,并且基于對象存儲設備(Object-based Storage Device,OSD)構建存儲系統,每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布,對象存儲文件系統通常有以下幾部分組成。
1、對象
對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性的組合,這些屬性可以定義基于文件的RAID參數、數據分布和服務質量等,而傳統的存儲系統中用文件或塊作為基本的存儲單位,在塊存儲系統中還需要始終追蹤系統中每個塊的屬性,對象通過與存儲系統通信維護自己的屬性。在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問該對象。通常有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各種屬性,組對象是存儲設備上共享資源管理策略的對象集合等。
2、對象存儲設備
對象存儲設備具有一定的智能,它有自己的CPU、內存、網絡和磁盤系統,目前國際上通常采用刀片式結構實現對象存儲設備。OSD提供三個主要功能:
(1) 數據存儲。OSD管理對象數據,并將它們放置在標準的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
(2) 智能分布。OSD用其自身的CPU和內存優化數據分布,并支持數據的預取。由于OSD可以智能地支持對象的預取,從而可以優化磁盤的性能。
(3)每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS 系統中,這些元數據是由文件服務器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
3、元數據服務器(Metadata Server,MDS)
MDS控制Client與OSD對象的交互,主要提供以下幾個功能:
(1) 對象存儲訪問。MDS構造、管理描述每個文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然后才可以訪問。
(2) 文件和目錄訪問管理。MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
(3) Client Cache一致性。為了提高Client性能,在對象存儲文件系統設計時通常支持Client方的Cache。由于引入Client方的Cache,帶來了Cache一致性問題,MDS支持基于Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
優勢: Lustre是基于對象的存儲系統,減少元數據服務器的inode。
Lustre實際上還是將數據條帶化到各個存儲目標上,所以可以實現高度聚合io能力。
Lustre原生態支持海量小文件讀寫。且對大文件讀寫在linux內核做了特殊優化。
工作:
但是Lustre是個對用戶透明的share文件系統,條帶化數據的"位置信息"不能很***的暴露出來。所以要用上Hadoop的map/reduce優勢還有許多工作要做。
實現廉價的Lustre容錯冗余機制,實現基于對象的副本復制策略。
不足:還有目前Lustre只能部署在linux特定內核的平臺上,需要對內核打補丁,限制lustre的普及。
Lustre容錯機制采用對每個OSS采用RAID方法,成本昂貴,需要通過副本的方式實現廉價的容錯。