重大變化:從打孔機(jī)制到應(yīng)用程序數(shù)據(jù)塊
NFS(即網(wǎng)絡(luò)文件系統(tǒng))算得上是計(jì)算發(fā)展史上最為成功的兩大文件協(xié)議之一。從20世紀(jì)80年代的NFSv2到20世紀(jì)90年代深入人心的NFSv3,再到如今最新的NFS4.1標(biāo)準(zhǔn)——如果大家對NFSv4.1與pNFS(并行NFS)還不熟悉,那么不妨馬上了解一下——該協(xié)議的開發(fā)目的是為了滿足用戶需求以及數(shù)據(jù)訪問與處理方面的不斷變化。
數(shù)據(jù)存儲業(yè)務(wù)迎來了爆炸式增長。根據(jù)IDC公司的調(diào)查,2010年中全世界范圍內(nèi)售出的開放式系統(tǒng)存儲容量接近1EB(即1000PB)。而2011年中一個(gè)季度所售出的的存儲容量就超過了2007年全年的總和。這樣的數(shù)據(jù)增長幅度無疑令人驚訝,那么是什么樣的需求推動(dòng)了這種增長呢?顯然,我們所能看到的、對存儲消費(fèi)行為推動(dòng)力最大的趨勢正是近年來虛擬化與云計(jì)算的興起。二者都使海量數(shù)據(jù)在管理及處理方面變得更為簡便。
上述類型的需求也同時(shí)促使NFS標(biāo)準(zhǔn)根據(jù)新情況做出又一輪修改:NFSv4.2也就隨之誕生。NFSv4.1與pNFS相較于NFSv3,在安全性與可擴(kuò)展性方面提升明顯,管理機(jī)制也有了長足進(jìn)步。NFSv4.2還在最新展望中承諾為NFSv4.1用戶提供期待已久的多種功能——這些功能將令NFS不僅扮演“日常”協(xié)議的角色,更將成為一套虛擬化數(shù)據(jù)中心內(nèi)部應(yīng)用程序的首選分布式文件協(xié)議。
服務(wù)器端副本
虛擬化意味著計(jì)算的移動(dòng)化趨勢。不再被局限于固定地點(diǎn)的固定物理硬件,操作系統(tǒng)與應(yīng)用程序能夠以無縫方式人一臺服務(wù)器轉(zhuǎn)移到另一臺。但每套虛擬機(jī)在運(yùn)作中都離不開主數(shù)據(jù)與輔助數(shù)據(jù),這些數(shù)據(jù)在計(jì)算平臺發(fā)生轉(zhuǎn)換時(shí)也需要同時(shí)進(jìn)行遷移。如今,客戶端需要從源數(shù)據(jù)服務(wù)器處讀取數(shù)據(jù),并將這些數(shù)據(jù)直接轉(zhuǎn)寫到另一套目的數(shù)據(jù)服務(wù)器中,這種三路式聯(lián)網(wǎng)結(jié)構(gòu)使得數(shù)據(jù)副本帶來潛在的成本支出與不必要的遷移行為。
服務(wù)器端副本(簡稱SSC)機(jī)制完全消除了復(fù)制操作這一過程。相反,它會根據(jù)客戶端要求從一臺數(shù)據(jù)服務(wù)器上讀取完整的文件乃至文件目錄,并通過客戶端將這些內(nèi)容上傳至另一臺數(shù)據(jù)服務(wù)器,也就是說SSC允許目標(biāo)服務(wù)器與源服務(wù)器之間直接通信。客戶端負(fù)責(zé)管理復(fù)制流程,但并不涉及數(shù)據(jù)的具體遷移工作。數(shù)據(jù)在不同的數(shù)據(jù)服務(wù)器之間直接傳輸,而SSC則消除了過去那些令人頭痛的高維護(hù)成本以及對帶寬要求極嚴(yán)的服務(wù)器-客戶端-服務(wù)器通路。另外,復(fù)制操作由于網(wǎng)絡(luò)原因發(fā)生擁堵的可能性也大幅降低。
空間預(yù)留保障
每當(dāng)面臨數(shù)據(jù)存儲空間不足的情況,就拿塊硬盤填充進(jìn)去,這樣的處理方式其實(shí)面臨著一大根本性障礙,即:每塊硬盤的購置、運(yùn)行及管理都會在一定程度上提高運(yùn)營成本。許多存儲系統(tǒng)管理員都已經(jīng)敏銳地意識到,用戶常常會高估自己所需要的存儲容量;而且高估的程度往往超乎想象。多年以來,人們通過一系列高效技術(shù)創(chuàng)建起一整套巨大的虛擬存儲池,而構(gòu)成這一龐大體系的正是無數(shù)小型物理存儲系統(tǒng)。
自動(dòng)按需配置作為上述技術(shù)中的一員,為用戶提供了大量可直觀查看的存儲空間。雖然這種做法目前可謂司空見慣,但這種做法其實(shí)并不能完全應(yīng)對快速增長的使用環(huán)境。舉例來說,兩位用戶在查看時(shí)可能發(fā)現(xiàn)自己還有50%的剩余空間:但實(shí)際上他們雙方都沒有那么多容量可用。
NFSv4.2中的空間預(yù)留保障功能將徹底扭轉(zhuǎn)這一局勢,無論是否采用按需配置策略,特定文件將始終擁有最大程度的可用空間。
打孔
盡管對特定類型數(shù)據(jù)的處理已經(jīng)令人滿意,并保證了終端用戶始終能夠根據(jù)需求獲得足夠的存儲空間,但上述保障功能常常會大幅度拉低硬盤存儲機(jī)制的利用效率,導(dǎo)致管理員們的優(yōu)化努力淪為泡影。
舉例來說,當(dāng)管理程序創(chuàng)建一個(gè)虛擬磁盤文件時(shí),它通常會嘗試為文件分配預(yù)留空間,這樣的虛擬機(jī)執(zhí)行操作的過程中就不會發(fā)生分配沖突類錯(cuò)誤。應(yīng)用程序中的這類文件往往實(shí)際體積為零,這種情況必然導(dǎo)致I/O性能與存儲效率的大幅走低。
為了支持更高的存儲效率,NFSv4.2推出了一套專為稀疏文件排布打造的支持技術(shù)。這就是俗稱的“打孔”機(jī)制,即將文件中已被刪除或未被使用的部分送回存儲系統(tǒng)的空閑容量池中(如圖一所示)。
圖一:按需配置方案與打孔方案
按需配置方案移除了為那些永遠(yuǎn)不會真正需要的存儲行為保留的空間,而真正的空閑容量就能夠?yàn)閺V大用戶所使用。NFSv4.2的打孔方案則更進(jìn)一步,通過對擁有預(yù)留空間的文件進(jìn)行頻繁掃描找出無用數(shù)據(jù),并將其預(yù)留空間釋放出來。而客戶端所查看到的結(jié)果并無變化:NFSv4.2能夠以透明化方式正確反饋剩余空間情況。
應(yīng)用程序數(shù)據(jù)塊(簡稱ADB)
應(yīng)用程序數(shù)據(jù)塊(簡稱ADB)延用了打孔機(jī)制中的零體積數(shù)據(jù)塊概念,支持應(yīng)用程序?qū)⒏鞣N功能性模塊寫入數(shù)據(jù)塊。舉例來說,管理程序或數(shù)據(jù)庫應(yīng)用程序通過向虛擬機(jī)鏡像或數(shù)據(jù)庫中寫入監(jiān)控模塊以提供復(fù)雜的數(shù)據(jù)破損檢查功能。ADB允許這類應(yīng)用程序在某個(gè)單獨(dú)文件中對這些數(shù)據(jù)塊進(jìn)行定義,而NFSv4.2則能夠利用一套經(jīng)過大幅度簡化的映射對其加以存儲,最終達(dá)到節(jié)約空間的目的。這事實(shí)上是一種消除重復(fù)數(shù)據(jù)的管理方式。
讓我們舉個(gè)簡單的例子。大家的應(yīng)用程序可能會以利用十六進(jìn)制字符串0xDEADBEEF寫入數(shù)據(jù)塊的方式對文件進(jìn)行初始化。按理來說,初始化過程應(yīng)該需要對文件中每一個(gè)數(shù)據(jù)塊都寫入以上內(nèi)容。但ADB能夠從中“找到”規(guī)律,注意到該映射內(nèi)數(shù)據(jù)塊存在的目的在于初始化,并決定不向塊中寫入內(nèi)容。
當(dāng)數(shù)據(jù)塊接收到一條讀取請求時(shí),存儲系統(tǒng)能夠檢查對應(yīng)文件的映射,并認(rèn)定需要查詢的目標(biāo)為初始化數(shù)據(jù)塊,進(jìn)而自動(dòng)將0xDEADBEEF這一結(jié)果發(fā)送至應(yīng)用程序。顯然返回的結(jié)果能夠滿足應(yīng)用程序的需求,同時(shí)整個(gè)過程中沒有涉及任何額外操作,這就顯著節(jié)約了存儲空間與I/O性能。
有了這項(xiàng)功能,NFSv4.2將能夠迅速高效地為數(shù)據(jù)存儲初始化節(jié)約空間;創(chuàng)建大型數(shù)據(jù)庫或是虛擬機(jī)鏡像的任務(wù)現(xiàn)在也完全能夠通過一次操作就徹底搞定。
應(yīng)用程序I/O提示
隨著數(shù)據(jù)流通量的不斷飆升,I/O量自然也是水漲船高;與此同時(shí),采用緩存或SSD的分層存儲系統(tǒng)也逐步令傳統(tǒng)的高速DRAM與低速硬盤之間的效率沖突趨于緩和。NFSv4.2為應(yīng)用程序創(chuàng)造了一套通向底層存儲系統(tǒng)的數(shù)據(jù)通信訪問模式。舉例來說,數(shù)據(jù)的讀取是具備一定先后順序的,因此應(yīng)該將讀取放在第一位。而有些數(shù)據(jù)的讀取及寫入過程往往會重復(fù)多次,因此考慮利用緩存保存這些常用數(shù)據(jù)。接下來,有些數(shù)據(jù)寫入比較頻率、但讀取次數(shù)很少,所以要保證這類數(shù)據(jù)不會進(jìn)入緩存。
那么這一整套機(jī)制什么時(shí)候才會投付使用呢?
NFSv4.2規(guī)范很可能于今年3月份獲得批準(zhǔn),而客戶端及服務(wù)器供應(yīng)商要花多長時(shí)間才能將這套機(jī)制部署到位,就完全取決于作為用戶的我們支持這一新技術(shù)的力度啦。
這就又帶來一個(gè)問題:你還在用NFSv3嗎?如果答案是肯定的,你所失去的不僅僅是NFSv4、NFSv4.1以及pNFS所擁有的那么多先進(jìn)功能,更是無緣邂逅雄心勃勃、技術(shù)先進(jìn)的NFSv4.2。至于原因嘛,只有一點(diǎn)——為了提高安全性,從NFSv3到NFSv4的升級中包含了一系列本質(zhì)性“改造”,因此NFSv3無法與NFSv4的后續(xù)版本直接銜接。
盡管存在上述問題,不過距離NFSv4.2真正面世還有一段時(shí)間,大家不妨把握最后的機(jī)會,在新項(xiàng)目中盡管采用NFSv4及更新的協(xié)議,以準(zhǔn)備迎接NFS家族中這位了不起的新成員。