NFS協議和pNFS的概念和應用
NFS協議是網絡存儲的發展根基,也是網絡共享的基本協議。那么對于目前這個領域的發展我們來簡單談談。首先我們需要了解NFS的基本概念以及相應的一些應用。之后我們來介紹一下PNFS的知識。
NFS(網絡文件系統)是在1984年由Sun微系統公司設計開發的,目的是為了連接它們的系統.在其發展過程中,通過促成文件系統之間的連接,革命性地改變了存儲行業,使得一個環境中的所有文件都能夠處于公共視野之下.
回溯到1984年,當時的高速主干網絡是10Mb/s以太網,而磁盤驅動器的容量是按照MB計算,而不是GB.NFS滿足了需求,并很快就在行業內得到廣泛使用,并成為標準.
從那時候起,NFS進行了一些有限的改進,一些是針對性能,但是大部分的改進幅度都是很微小的--許多是針對安全,以及為了跟上其他UNIX標準.我們都熟悉NFSv1,v2,v3,現在是v4版本,而且我們都抱怨NFS的性能,因為網絡和存儲的性能增長要更快,而NFS卻沒有跟上步伐.
自從NFS誕生,網絡已經從10Mb/s以太網發展到了10Gb以太網(三個數量級的性能增長),存儲已經從3Mb/s磁盤驅動器發展到了400Mb/s光纖通道RAID(獨立磁盤冗余陣列),這也是133倍的性能增長.而與此同時,NFS只是從4KB數據包發展到了64KB.對于一些不好的網絡,大的數據包還可能是個問題,但是當我們需要在高速網絡上傳輸大量數據的時候,我們就需要更好的技術.好消息就是NFS的未來馬上就要實現了.
不用擔心,NFS v4.1來了
理解NFSv4.1(也被叫做pNFS)的***方法就是讀一些文章.pNFS(并行NFS)是NFSv4.1協議的一部分,可以讓數據在設備之間進行高速移動.這原來是在另外一個組中進行開發的.pNFS.com提供了一些關于為什么需要pNFS的背景知識(閱讀下面所列出的問題,它們詳細的指出了現有的NFS協議所具有的一些問題).
本圖描繪了pNFS系統的架構:
關于這張圖,最有意思的就是IEFT(國際互聯網工程任務組)準備支持T10 OSD協議(T10:SCSI存儲接口技術委員會,OSD:基于對象存儲設備),并將其作為NFSv4.1的一部分.這也就意味著,通過NFSv4.1,你可以從NFS服務器中按照塊、T10 OSD對象或文件來移動數據.很重要的一點就是,隨著NFSv4.1開始啟動,由于大部分廠商在還僅僅只是將這些方法中的一個方法作為實施的開始,因此就有一些問題.
同樣重要的是,作為傳輸機制的一部分,數據和元數據是分開的.因此對于基于塊的存儲來說,一般情況下,索引節點以及任何非直接的擴展都被聚集在一起,而塊地址則是通過使用DMA(直接內存存取)來從網絡上直接獲得.和NFSv4以及更早版本的NFS在網絡上讀取文件的方式比起來,這種方式的性能將是一日千里.當然,如果是在10Mb/s以太網,或者1Gb以太網上讀取文件,不同方式的差別不會很大,但是你也會感覺到采用新方法所帶來的改善.現在,如果你擁有10Gb以太網,或者說DDR(雙數據率)IB(InfiniBand),或者說未來更快的網絡,那么現有的NFS協議可以讓這些高速網絡的運行得簡直就像在1Gb以太網上一樣.
1991年左右,我被一個站點叫去做技術支持.他們有兩臺Cray超級計算機,通過HiPPI連接(高性能并行接口,800MB),而且他們還由一個FDDI(光纖式分布數據接口,100Mb).你可能會疑惑,為什么HiPPI的速度不是FDDI的八倍,而是只高出10%呢.他們問,為什么他們花了這么多錢來部署HiPPI,結果卻只得到10%的性能提升.我不能給出很好的答案.當然,HiPPI上ftp和rcp的運行要更快.這趟訪問的唯一一個好處就是我去了德國,因為我不能給客戶以滿意的答復.在當時,NFS甚至在高速網絡上也運行不快.NFS做了一些細微的調整,使得它在1Gb以太網上也能夠被接受,但是它還是不能達到網絡的速度.轉眼過去15年,我們馬上就要進入商品高速網絡時代,如10GB以太網,但是目前版本的NFS還是不能勝任.下面是對NFS問題的描述:
"客戶對存儲I/O帶寬的要求的增長遠遠快于網絡文件服務器所能提供的能力.當我們在NFS協議上進行安裝時,就會越來越多的遇到這種問題.這個問題可以通過提高服務器帶寬的方式來解決.這個草案建議對NFS文件服務進行改進,讓NFS文件服務能夠隨客戶群擴展而擴展.建議的方法就是通過并行化文件服務,將所有可能的帶寬都集中到一個單一的文件系統上,這樣的結果就是多個網絡連接到多個要求數據傳輸的服務器終端.我們要在NFS架構內部實現這種方式,比如通過一個NFSv4協議的次版本".
顯然,IETF的這個聲明顯示它理解NFS目前的局限,并正努力解決它們.幾乎所有的主要廠商都介入到了NFSv4.1(pNFS)的制訂,包括但不限于,EMC、IBM、NetApp、Sun,當然還有Linux社團.甚至還有一些網路傳言說,微軟正準備在未來的Windows版本中考慮NFSv4.1.我對此持懷疑態度.
NFSv4.1的局限
和有些人想的相反,NFS是一個協議,而不是文件系統.NFS允許通用的外部接口進入文件系統.即使它的名字是這樣,它也不是一個文件系統.這也就是說你要受到底層文件系統性能的約束.例如,如果微軟將NFSv4.1納入未來某個版本的Windows系統,而你的攝像頭連接是在10Gb以太網上,但是這并不是說你可以通過FAT32文件系統在你舊的計算機上以1GB/秒的速度導出數據.這里有很多限制.
事實是,在這里,我們的媒介不能以1Gb/s的速率傳輸數據,更重要的是,你受制于文件系統的性能.即時你擁有能夠以1Gb/s速率傳輸數據的媒介,鑒于目前的數據格式,FAT32文件系統也不可能支持這種數據速率.
我相信NFSv4.1會使很多文件系統相形見絀.現在,這些NFS文件系統可以借口說它們被目前的NFS性能局限所限制,這可能是實情,但是未來就不是如此了.我一直在嘗試的一件事情就是在一臺本地NFS文件服務器設備上運行性能測試,以測試我的讀寫速度究竟能有多快.然后我會觀察底層硬件,并判斷性能瓶頸是出在文件系統還是硬件上.在這些時間里,我發現,更經常的是,性能瓶頸是在文件系統上而不是硬件上.由于目前的NFS協議有局限,而10Gb以太網則沒有,因此,在NFS上連接到服務器的文件系統可以將性能問題歸咎于協議,但是這種日子將很快過去.
作為一名悲觀論者,我的看法是一些廠商將選擇不支持NFSv4.1和10Gb以太網,直到它們能夠讓它們的文件系統能夠和NFSv4.1及10Gb以太網***配合,使數據傳輸達到網絡的速度.沒有一個廠商會希望讓自己看起來很糟糕得.擁有高性能文件系統的那些廠商(我們都知道他們它們是誰)可能是***支持NFSv4.1的廠商.因為你總是被數據通道中最慢的組件所約束,因此那些文件系統不支持高性能數據傳輸的廠商也可能不支持NFSv4.1.在未來幾年中觀察NFS4.1的進展是一件非常有意思的事情,特別是如果你理解廠商之所以這么做的原因的話.