下一代Linux文件系統將如何發展?
原創【51CTO 4月19日外電頭條】GNU/Linux在支持文件系統創新方面已經取得了極大的成功,目前已支持超過50種文件系統,毫無疑問,這一成功與Linux一向的開源策略是密不可分的。隨著數據的爆炸式增長,存儲行業已經發生了翻天覆地的變化,文件系統如何才能緊跟時代步伐,滿足越來越高要求的存儲需要呢?
硬盤的成本/容量曲線趨勢繼續遵守著名的摩爾定律,與此同時,我們也看到固態硬盤增長勢頭喜人,它因消除了機械硬盤固有的性能限制得到了廠商和消費者的重視,虛擬化也在改變存儲架構設計,應用程序也開始向基于FC的HTTP存儲協議轉移。
存儲容量幾乎每年以40%的速度遞增,現在市場上已經可以看到容量為2TB的機械硬盤,但它們的性能卻沒有按比例提高,固態硬盤的出現解決了傳統機械硬盤的許多弊病,因此未來幾年勢必會引發一場存儲革命,文件系統也需要為存儲革命做好準備,未來的文件系統必需解決擴展,并行處理和滿足新工作負載類型方面的問題。
POSIX API標準制約了創新
IDE和SCSI已經逐漸被SAS取代,終于超越了6Gbps的門檻,Infiniband和10GbE通過遠程直接內容訪問(Remote Direct Memory Access ,RDMA)和TCP卸載引擎提高了網絡I/O,iSCSI大有取代FC SAN的趨勢,和傳統的使用NFS和CIFS協議應用程序不同,基于Internet的程序通常是使用HTTP/HTTPS訪問地理分散的存儲。
我們已經使用POSIX API訪問文件系統的歷史已經長達30年,它是一個標準,但它也是弱點,是它遏制了創新,應用程序開發人員需要新的API標準執行對象存儲和key-value存儲。
諸如卷管理,全局命名空間,壓縮,加密,克隆/快照,重復數據刪除,RAID和遠程站點復制技術都應該由文件系統實現,由于歷史原因,這些功能都是在文件系統之外實現的,因此效率低下,復雜程度較高。
文件系統不應局限于在內核空間實現
關于內核空間和用戶空間性能問題的爭論應該歇歇了,上下文切換不再是什么大問題,因為堆棧和網絡中的其它部分造成的延遲才是真正的限制因素。在用戶空間中實現的新興文件系統應該受到重視。原來大家都認為底層組件,如磁盤設備驅動和磁盤文件系統應該駐留在內核中,但現在是時候讓大部分代碼在用戶空間中實現了。例如,Hadoop和GlusterFS就是完全在用戶空間中實現的。有關Hadoop的使用可參考51CTO之前發布的使用Linux 和Hadoop進行分布式計算一文。
變革和創新
1、適合于直接附加存儲(Direct Attached Storag,DAS)的文件系統
Linux文件系統Ext3是迄今為止最穩定的Linux文件系統,但現在是時候考慮Ext4(內核2.6.31或更高才支持)了,因為它解決了諸如文件和目錄大小限制的局限性,基于延伸區(extent)分配機制能夠有效地存儲大文件,更快地執行fsck(文件系統檢查)和日志校驗和檢查,但Ext4只是一個暫時的解決方案。
Linux社區希望Linux支持ZFS和Btrfs(B-tree文件系統),Btrfs將類似ZFS的功能引入到Linux內核中,Btrfs不僅僅是一個磁盤文件系統,它還具有軟RAID管理,卷管理,克隆/快照和壓縮功能,它支持跨多塊磁盤動態增大或收縮卷。
Btrfs RAID可以從一個故障陣列快速重構,其速度比硬件RAID控制器還快,因為它只重新條帶化使用了的數據塊,執行快照需要的空間和時間也更少,Btrfs的目標是取代Linux默認文件系統Ext4,來自Oracle的Chris Mason是該項目的主要貢獻者。
2、網絡文件系統(NFS)
NFS于1995年推出,NFS v3是目前應用最廣泛的NAS協議,所有服務器操作系統(除微軟Windows外)和存儲廠商都支持它,2000年發布的NFS v4在許多方面都做了改進,但沒有取得廣泛應用。NFS v4.1(pNFS)應該會出現轉機,因為它帶來了人們迫切需要的并行I/O架構,并為低延遲高帶寬I/O增加了RDMA支持。
這是NFS的一個重大進步,允許用戶轉移到可橫向擴展的架構,但它的設計是基于一個統一的元數據服務器,這可能會限制擴展能力,并且存在一個潛在的單點故障,因此要想成為主流應用尚需時日,這期間需要解決NFS v3/4的擴展性問題,通過在集群文件系統上集成NFS,利用虛擬IP和循環DNS技術,可以構建一個可擴展的NAS解決方案。
3、集群/分布式文件系統
集群或分布式文件系統允許跨多個存儲服務器使用一個全局命名空間,并實現了智能分散I/O和數據,以克服NFS(和CIFS)的擴展性限制,每個廠商都有他們自己的內部協議,但對于應用程序是透明的,因為共享存儲是通過標準的POSIX接口訪問的。
這樣的文件系統有Oracle Lustre,IBM GPFS和GlusterFS,它們之間的主要區別是處理元數據的方式有所不同,Lustre使用的是中央控制元數據服務器,GPFS使用的是分布式元數據服務器模型,GlusterFS使用的是無元數據模型。在選擇集群文件系統時,關鍵就是要了解元數據的處理方式。
另一個不同點是Lustre和GPFS是在內核中實現的,GlusterFS是在用戶空間實現的,這些集群文件系統都實現了前面談到的關鍵存儲堆棧功能,它們都可以擴展到PB級存儲容量。
4、分布式對象存儲/key-value存儲
許多現代應用程序需要簡單對象API訪問諸如get/put,get/put屬性和lock/unlock這樣成對出現的數據,對象訪問允許將內存和磁盤看作是通過序列化的信息持久化塊。
大多數數據處理功能(如XML解析,哈希表,全文檢索等)都開始轉向更高級的應用程序庫,對象存儲API也適合構建NoSQL規模的數據庫。很多Web 2.0應用正在逐漸轉向Cassendra等NoSQL式存儲,比如前日的Digg和Twitter。
目前對象存儲還沒有標準化,雖然WebDAV,Hadoop,Apache Cassandra和Amazon S3都遵循這個模型,如果是構建一個新應用程序,它們也是很好的選擇,但在未標準化之前,POSIX API將是必需的。(參考閱讀:詳解NoSQL數據庫Apache Cassandra的配置)
小結
預計到2012年,數據存儲增長將會超過1800EB,要應對這種增長勢頭,文件系統的關鍵挑戰是要解決擴展能力,并行處理能力,以及支持新的工作負載類型。新興Linux文件系統技術值得認真考慮,因為它們的定位就是要解決這些問題。
【51CTO.com譯稿,合作站點轉載請注明原文譯者和出處?!?/p>
原文:Next-Gen Linux File Systems: Change Is the New Constant 作者:Anand Babu
【編輯推薦】