數據存儲產業服務平臺

深入了解存儲技術:自動精簡配置(上)

按理說,沒有人愿意為自己不曾使用的東西付錢,但在過去相當長的一段時間里,企業的存儲系統管理者卻不得不這樣做。傳統磁盤存儲設備購買和配置的方式非常死板,導致存儲設備的空間利用率始終在低水平徘徊。因此過去十年間,如何提升存儲效率一直是業內的熱點主題,并成為大多數存儲專家研究的目標。但迄今為止,只有自動精簡配置技術在這方面實現了突破,產生了實實在在的效益。

自動精簡配置的概念也許很容易理解,但它事實上卻是一項復雜的技術。如果一個磁盤陣列僅僅針對實際的數據分配存儲空間,那么它就能比傳統存儲保存多得多的數據量。而傳統存儲會占用所有未來才可能用到的空間(從自動精簡配置的角度看,其實沒有任何必要)。此外,從磁盤陣列上移除那些應用程序創建和使用的數據有相當多的步驟,到目前為止還沒有一種標準的通信機制能幫助存儲識別應用層的數據到底有沒有被使用。

各存儲廠商針對這些問題所用的方法五花八門,但那些最有效的機制往往很難用在過去的存儲陣列上。這就是為什么新一代存儲系統往往來自于那些小公司,包括了高效的自動精簡配置技術,且已經發展了較長的時間。而那些行業領導型公司,也許直到最近才開始增加此類功能。

精簡寫分配

在傳統存儲設備里,磁盤與服務器端的可見容量是一一對應的。對于塊存儲技術而言,服務器端看到的是一個固定大小的盤、卷或者LUN,而且空間中的每一個(數據)位都指向后端磁盤陣列中相應的磁盤驅動器。比如Windows Server中C盤的空間是100GB,那么磁盤陣列里就一定會有幾塊磁盤組成RAID組,并提供這100GB的可訪問預留空間。

最基本的自動精簡配置應用是從傳統的空間分配方式直接演化而來的。所有的存儲空間匯集到一個資源池中,并使用統一大小的“頁面”將空間分塊,最終,按需分配給服務器的是資源池中的“頁面 “而不是最初的存儲空間。在我們提及的例子中,100GB大小的C盤可能只包含10GB的文件數據,而映射到后端磁盤陣列中的實際使用空間也僅僅10GB 而已。如果服務器端有新的文件寫入,陣列端則會從空閑資源池中劃撥新的空間給服務器。

這種“隨寫隨分配”的自動精簡配置方式今天已經相當普及。多數中端和企業級存儲陣列以及一些小型設備都包含這種功能。其中,有些產品是內置的原生功能;有的產品需要通過附加選件實現。不過,這個方式也有一定的問題。

一個顯而易見的問題在于,這樣的系統只能精簡一次。在寫入新文件時,大多數文件系統傾向于使用新的空間,以避免出現碎片;在刪除內容時,只會在文件系統層簡單的將該文件打上不可用標記,而不會寫零擦除或將空間釋放給后端的磁盤陣列。這些文件系統最終會吞噬掉全部預分配給它們的空間,即使并沒有太多的額外數據寫進來。這不僅僅降低了系統的效率,而且會帶來過量使用(over-commit)的風險,一旦磁盤陣列不能響應空間增加的請求,寫操作將陷入停頓。

這里我們要表達的觀點是,沒有精簡空間回收功能的自動精簡配置是沒有價值的,因為長期使用下來,用戶并不會獲得太多的收益。另外,多數的存儲管理員主觀上認為“精簡的存儲”必須始終保持“精簡”,所以有效地回收閑置空間正在迅速成為新的功能需求。

精簡回收的挑戰

對于自動精簡配置技術來說,回收閑置空間是比準確分配空間更難實現的部分。在各種自動精簡配置的實踐中,是否能讓閑置空間返回空閑存儲池是差異的關鍵,而且到目前為止,在這一點上業內各公司仍然處于各行其是的狀態。

難以實現精簡回收功能的根源在于應用程序和存儲系統之間缺乏溝通。像上文提到的那樣,文件系統不會有精簡的“意識”,當一份空間不在被使用時,沒有現成的機制去通報這些情況。而有效自動精簡配置的關鍵就是要發現回收閑置空間的機會。這里有兩種方法可以從底層實現這一機制:

· 存儲陣列可以偵聽其接收和保存的數據,并且當出現回收空間的機會時,陣列能夠嘗試去實現這個操作。

· 修改服務器端的設置,當空間不在使用時,從服務器端發信號給后端的磁盤陣列,提示陣列實行空間回收。

前一種方法技術上較難實現,但可能更有效,因為操作系統廠商似乎對為其產品增加精簡功能并沒有太多的熱情。像Data Robotics公司的Drobo存儲系統就可以偵聽某些常見的分區和文件系統類型,并判定出哪些磁盤塊是空閑的,之后進行回收和再利用。但是,考慮到可用的操作系統、應用程序和卷管理器軟件的數量十分龐大,因此這種技術實現起來是極其困難的。

而對于那些采用后一種精簡配置方法的企業來說,關鍵的話題則是改進服務器和存儲系統之間的通訊機制。

全零頁回收

最有名的精簡使能技術也許就是“全零頁回收(zero page reclaim)”。磁盤陣列以頁面為單位劃分存儲空間,并且按著存儲數據的需要分配頁面。如果發現某個頁面的內容全部為0,那么這個頁面將被回收到空閑資源池。未來發生的任何“讀請求“都會產生出全零頁面,而任何的”寫請求“都會觸發另一個頁面被分配出去。當然了,技術實現不可能像說的這么簡單。

事實上全部寫零可能是有問題的。畢竟,寫一個0與寫一個1需要消耗的CPU和 I/O資源是一樣的,而服務器和存儲系統為此損耗的效率也不亞于容量的浪費。為此,負責SCSI存儲接口標準的“T10技術委員會“已經指定了一個叫做 “WRITE_SAME”的SCSI命令,用以消除重復的I/O,而且,該命令還衍生出所謂的“丟棄位(discard bit)”,用來通知磁盤陣列它們不再需要保存那些全零數據。

大多數磁盤陣列還不具備在寫操作過程中發現全零頁的能力。相反,它們會先將數據寫入磁盤,隨后通過一個掃描進程找出并丟棄那些全零的數據頁。因此,只有在完成掃描和丟棄操作之后,空間才能釋放出來。這個進程可以通過后臺策略自動運行,亦可讓管理員手動開啟。有些磁盤陣列能在做卷鏡像或遷移的時候發現全零頁,進一步改進了空間的利用率。

原文作者:Stephen Foskett

原文地址:http://www.searchstorage.com.cn/showcontent_52818.htm

未經允許不得轉載:存儲在線-存儲專業媒體 » 深入了解存儲技術:自動精簡配置(上)
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走