按理說(shuō),沒有人愿意為自己不曾使用的東西付錢,但在過(guò)去相當(dāng)長(zhǎng)的一段時(shí)間里,企業(yè)的存儲(chǔ)系統(tǒng)管理者卻不得不這樣做。傳統(tǒng)磁盤存儲(chǔ)設(shè)備購(gòu)買和配置的方式非常死板,導(dǎo)致存儲(chǔ)設(shè)備的空間利用率始終在低水平徘徊。因此過(guò)去十年間,如何提升存儲(chǔ)效率一直是業(yè)內(nèi)的熱點(diǎn)主題,并成為大多數(shù)存儲(chǔ)專家研究的目標(biāo)。但迄今為止,只有自動(dòng)精簡(jiǎn)配置技術(shù)在這方面實(shí)現(xiàn)了突破,產(chǎn)生了實(shí)實(shí)在在的效益。
自動(dòng)精簡(jiǎn)配置的概念也許很容易理解,但它事實(shí)上卻是一項(xiàng)復(fù)雜的技術(shù)。如果一個(gè)磁盤陣列僅僅針對(duì)實(shí)際的數(shù)據(jù)分配存儲(chǔ)空間,那么它就能比傳統(tǒng)存儲(chǔ)保存多得多的數(shù)據(jù)量。而傳統(tǒng)存儲(chǔ)會(huì)占用所有未來(lái)才可能用到的空間(從自動(dòng)精簡(jiǎn)配置的角度看,其實(shí)沒有任何必要)。此外,從磁盤陣列上移除那些應(yīng)用程序創(chuàng)建和使用的數(shù)據(jù)有相當(dāng)多的步驟,到目前為止還沒有一種標(biāo)準(zhǔn)的通信機(jī)制能幫助存儲(chǔ)識(shí)別應(yīng)用層的數(shù)據(jù)到底有沒有被使用。
各存儲(chǔ)廠商針對(duì)這些問題所用的方法五花八門,但那些最有效的機(jī)制往往很難用在過(guò)去的存儲(chǔ)陣列上。這就是為什么新一代存儲(chǔ)系統(tǒng)往往來(lái)自于那些小公司,包括了高效的自動(dòng)精簡(jiǎn)配置技術(shù),且已經(jīng)發(fā)展了較長(zhǎng)的時(shí)間。而那些行業(yè)領(lǐng)導(dǎo)型公司,也許直到最近才開始增加此類功能。
精簡(jiǎn)寫分配
在傳統(tǒng)存儲(chǔ)設(shè)備里,磁盤與服務(wù)器端的可見容量是一一對(duì)應(yīng)的。對(duì)于塊存儲(chǔ)技術(shù)而言,服務(wù)器端看到的是一個(gè)固定大小的盤、卷或者LUN,而且空間中的每一個(gè)(數(shù)據(jù))位都指向后端磁盤陣列中相應(yīng)的磁盤驅(qū)動(dòng)器。比如Windows Server中C盤的空間是100GB,那么磁盤陣列里就一定會(huì)有幾塊磁盤組成RAID組,并提供這100GB的可訪問預(yù)留空間。
最基本的自動(dòng)精簡(jiǎn)配置應(yīng)用是從傳統(tǒng)的空間分配方式直接演化而來(lái)的。所有的存儲(chǔ)空間匯集到一個(gè)資源池中,并使用統(tǒng)一大小的“頁(yè)面”將空間分塊,最終,按需分配給服務(wù)器的是資源池中的“頁(yè)面 “而不是最初的存儲(chǔ)空間。在我們提及的例子中,100GB大小的C盤可能只包含10GB的文件數(shù)據(jù),而映射到后端磁盤陣列中的實(shí)際使用空間也僅僅10GB而已。如果服務(wù)器端有新的文件寫入,陣列端則會(huì)從空閑資源池中劃撥新的空間給服務(wù)器。
這種“隨寫隨分配”的自動(dòng)精簡(jiǎn)配置方式今天已經(jīng)相當(dāng)普及。多數(shù)中端和企業(yè)級(jí)存儲(chǔ)陣列以及一些小型設(shè)備都包含這種功能。其中,有些產(chǎn)品是內(nèi)置的原生功能;有的產(chǎn)品需要通過(guò)附加選件實(shí)現(xiàn)。不過(guò),這個(gè)方式也有一定的問題。
一個(gè)顯而易見的問題在于,這樣的系統(tǒng)只能精簡(jiǎn)一次。在寫入新文件時(shí),大多數(shù)文件系統(tǒng)傾向于使用新的空間,以避免出現(xiàn)碎片;在刪除內(nèi)容時(shí),只會(huì)在文件系統(tǒng)層簡(jiǎn)單的將該文件打上不可用標(biāo)記,而不會(huì)寫零擦除或?qū)⒖臻g釋放給后端的磁盤陣列。這些文件系統(tǒng)最終會(huì)吞噬掉全部預(yù)分配給它們的空間,即使并沒有太多的額外數(shù)據(jù)寫進(jìn)來(lái)。這不僅僅降低了系統(tǒng)的效率,而且會(huì)帶來(lái)過(guò)量使用(over-commit)的風(fēng)險(xiǎn),一旦磁盤陣列不能響應(yīng)空間增加的請(qǐng)求,寫操作將陷入停頓。
這里我們要表達(dá)的觀點(diǎn)是,沒有精簡(jiǎn)空間回收功能的自動(dòng)精簡(jiǎn)配置是沒有價(jià)值的,因?yàn)殚L(zhǎng)期使用下來(lái),用戶并不會(huì)獲得太多的收益。另外,多數(shù)的存儲(chǔ)管理員主觀上認(rèn)為“精簡(jiǎn)的存儲(chǔ)”必須始終保持“精簡(jiǎn)”,所以有效地回收閑置空間正在迅速成為新的功能需求。
精簡(jiǎn)回收的挑戰(zhàn)
對(duì)于自動(dòng)精簡(jiǎn)配置技術(shù)來(lái)說(shuō),回收閑置空間是比準(zhǔn)確分配空間更難實(shí)現(xiàn)的部分。在各種自動(dòng)精簡(jiǎn)配置的實(shí)踐中,是否能讓閑置空間返回空閑存儲(chǔ)池是差異的關(guān)鍵,而且到目前為止,在這一點(diǎn)上業(yè)內(nèi)各公司仍然處于各行其是的狀態(tài)。
難以實(shí)現(xiàn)精簡(jiǎn)回收功能的根源在于應(yīng)用程序和存儲(chǔ)系統(tǒng)之間缺乏溝通。像上文提到的那樣,文件系統(tǒng)不會(huì)有精簡(jiǎn)的“意識(shí)”,當(dāng)一份空間不在被使用時(shí),沒有現(xiàn)成的機(jī)制去通報(bào)這些情況。而有效自動(dòng)精簡(jiǎn)配置的關(guān)鍵就是要發(fā)現(xiàn)回收閑置空間的機(jī)會(huì)。這里有兩種方法可以從底層實(shí)現(xiàn)這一機(jī)制:
· 存儲(chǔ)陣列可以偵聽其接收和保存的數(shù)據(jù),并且當(dāng)出現(xiàn)回收空間的機(jī)會(huì)時(shí),陣列能夠嘗試去實(shí)現(xiàn)這個(gè)操作。
· 修改服務(wù)器端的設(shè)置,當(dāng)空間不在使用時(shí),從服務(wù)器端發(fā)信號(hào)給后端的磁盤陣列,提示陣列實(shí)行空間回收。
前一種方法技術(shù)上較難實(shí)現(xiàn),但可能更有效,因?yàn)椴僮飨到y(tǒng)廠商似乎對(duì)為其產(chǎn)品增加精簡(jiǎn)功能并沒有太多的熱情。像Data Robotics公司的Drobo存儲(chǔ)系統(tǒng)就可以偵聽某些常見的分區(qū)和文件系統(tǒng)類型,并判定出哪些磁盤塊是空閑的,之后進(jìn)行回收和再利用。但是,考慮到可用的操作系統(tǒng)、應(yīng)用程序和卷管理器軟件的數(shù)量十分龐大,因此這種技術(shù)實(shí)現(xiàn)起來(lái)是極其困難的。
而對(duì)于那些采用后一種精簡(jiǎn)配置方法的企業(yè)來(lái)說(shuō),關(guān)鍵的話題則是改進(jìn)服務(wù)器和存儲(chǔ)系統(tǒng)之間的通訊機(jī)制。
全零頁(yè)回收
最有名的精簡(jiǎn)使能技術(shù)也許就是“全零頁(yè)回收(zero page reclaim)”。磁盤陣列以頁(yè)面為單位劃分存儲(chǔ)空間,并且按著存儲(chǔ)數(shù)據(jù)的需要分配頁(yè)面。如果發(fā)現(xiàn)某個(gè)頁(yè)面的內(nèi)容全部為0,那么這個(gè)頁(yè)面將被回收到空閑資源池。未來(lái)發(fā)生的任何“讀請(qǐng)求“都會(huì)產(chǎn)生出全零頁(yè)面,而任何的”寫請(qǐng)求“都會(huì)觸發(fā)另一個(gè)頁(yè)面被分配出去。當(dāng)然了,技術(shù)實(shí)現(xiàn)不可能像說(shuō)的這么簡(jiǎn)單。
事實(shí)上全部寫零可能是有問題的。畢竟,寫一個(gè)0與寫一個(gè)1需要消耗的CPU和I/O資源是一樣的,而服務(wù)器和存儲(chǔ)系統(tǒng)為此損耗的效率也不亞于容量的浪費(fèi)。為此,負(fù)責(zé)SCSI存儲(chǔ)接口標(biāo)準(zhǔn)的“T10技術(shù)委員會(huì)“已經(jīng)指定了一個(gè)叫做“WRITE_SAME”的SCSI命令,用以消除重復(fù)的I/O,而且,該命令還衍生出所謂的“丟棄位(discard bit)”,用來(lái)通知磁盤陣列它們不再需要保存那些全零數(shù)據(jù)。
大多數(shù)磁盤陣列還不具備在寫操作過(guò)程中發(fā)現(xiàn)全零頁(yè)的能力。相反,它們會(huì)先將數(shù)據(jù)寫入磁盤,隨后通過(guò)一個(gè)掃描進(jìn)程找出并丟棄那些全零的數(shù)據(jù)頁(yè)。因此,只有在完成掃描和丟棄操作之后,空間才能釋放出來(lái)。這個(gè)進(jìn)程可以通過(guò)后臺(tái)策略自動(dòng)運(yùn)行,亦可讓管理員手動(dòng)開啟。有些磁盤陣列能在做卷鏡像或遷移的時(shí)候發(fā)現(xiàn)全零頁(yè),進(jìn)一步改進(jìn)了空間的利用率。
原文地址:http://www.searchstorage.com.cn/showcontent_52818.htm