1. 程式人生 > >三種儲存型別比較-檔案、塊、物件儲存

三種儲存型別比較-檔案、塊、物件儲存

    20世紀電子與資訊科技迅速發展,機器計算迅速普及,馮·諾依曼在1945年6月30日,提出了儲存程式邏輯架構,即現有的計算機都遵循的“馮·諾依曼體系架構”,具體如下圖:

  我們可以看出,馮諾依曼體系結構與人腦(生物)計算模型匹配度相當準確。我們通常把運算器和控制器合併成中央處理器(CPU),內部小容量的儲存提供快速的訪問,外部儲存器提供大容量的儲存空間。在不同的計算機時代,我們可以按照不同的角度來理解馮諾依曼體系結構。在單機計算時代(包括大型機小型機、微機)內部儲存器可理解為記憶體(即Memory),外部儲存器可理解為物理硬碟(包括本地硬碟和通過網路對映的邏輯卷)。在本地硬碟空間不足,可靠性無法滿足業務需求的情況下,
SAN
儲存出現了,通過網路對映的邏輯卷(即SAN儲存提供的LUN)成為增強版的硬碟。為了解決資料共享的問題,NAS儲存隨之誕生。
     但馮諾依曼體系架構沒有考慮平行計算和資料共享情形,在如今的網路時代,大量計算裝置通過網路形成一個龐大、相互獨立但又邏輯統一的計算系統,因此我們可以總結出一個數據儲存的通用模型,這個模型包括兩級儲存,其儲存容量差距約1000倍:

  如果將上圖中每一個計算模組理解為一個計算核心,那麼高速儲存單元則是CPU內的快取(單位為KB~MB),海量儲存單元則是記憶體(單位為GB);如果把每一個計算模組理解為一個CPU,那麼高速儲存單元則是記憶體(單位為GB~TB),海量儲存是物理硬碟或通過網路對映給

伺服器的邏輯卷(或網路檔案系統,單位為TB~PB);如果把計算模組理解為針對某一項任務或某一組任務提供計算能力的伺服器叢集,把SAN或NAS等擁有TB~PB級儲存規模的網路儲存裝置理解為高速儲存單元,那麼具備PB~EB級儲存容量的海量儲存單元將基於什麼技術和產品構建呢?

  SAN和NAS技術已經出現了數十年,目前單臺SAN或NAS裝置最大容量已經達到PB級別,但在應對EB級資料挑戰時,還是顯得有些力不從心。這主要由於其架構和服務介面決定的。        SAN使用SCSI協議作為底層協議,SCSI協議管理的粒度非常小,通常以位元組(byte)或千位元組(KB)為單位;同時SCSI協議沒有提供讀寫鎖機制以確保不同應用併發讀寫時的資料一致性,因此難以實現EB級儲存資源管理和多個伺服器/伺服器叢集之間資料共享。
       NAS使用檔案協議訪問資料,通過檔案協議儲存裝置能夠準確識別資料內容,並提供了非常豐富的檔案訪問介面,包括複雜的目錄/檔案的讀寫鎖。檔案和目錄採用樹形結構管理,每個節點使用一種叫做inode的結構進行管理,每一個目錄和檔案都對應一個iNode。目錄深度或同一目錄下的子節點數隨著整體檔案數量的增加而快速增加,通常檔案數量超過億級時,檔案系統複雜的鎖機制及頻繁的元資料訪問將極大降低系統的整體效能。      傳統的RAID技術和Scale-up架構也阻止了傳統的SAN和NAS成為EB級高可用,高效能的海量儲存單元。傳統的RAID基於硬碟,通常一個RAID組最多包含20+塊硬碟,即使PB級規模的SAN或NAS也將被分割成多個儲存孤島,增加了EB級規模應用場景下的管理複雜度;同時Scale-up架構決定了即使SAN和NAS儲存容量達到EB級,效能也將成為木桶的短板。      那麼如何才能應對資訊爆炸時代的資料洪流呢?我們設想能否有一種“超級資料圖書館”,它提供海量的、可共享的儲存空間給很多使用者(伺服器/伺服器叢集)使用,提供超大的儲存容量,其儲存容量規模千倍於當前的高速儲存單元(SAN和NAS),使用者或應用訪問資料時無需知道圖書館對這些書如何擺放和管理(佈局管理),只需要提供唯一編號(ID)就可以獲取到這本書的內容(資料)。如果某一本書變得老舊殘破,系統自動地將即將失效或已經失效的書頁(儲存介質)上的資料抄寫(恢復/重構)到新的紙張(儲存介質)上,並重新裝訂這本書,資料使用者無需關注這一過程,只是根據需要去獲取資料資源。這種“超級資料圖書館”是否真的存在呢?   分散式物件儲存的誕生      物件儲存技術的出現和大量自動化管理技術的產生,使得“超級資料圖書館”不再是人類遙不可及的夢想。物件儲存系統(Object-Based Storage System)改進了SAN和NAS儲存的劣勢,保留了NAS的資料共享等優勢,通過高階的抽象介面替代了SCSI儲存塊和檔案訪問介面(不同地區的使用者訪問不同的POSIX檔案系統,不僅浪費時間,而且讓運維管理變的更復雜。相對而言,分散式儲存系統的優勢明顯。在分散式儲存系統上做應用開發更便利,易維護和擴容,自動負載平衡。以 RESTful HTTP介面代替了POSIX介面和QEMU Driver介面),遮蔽了儲存底層的實現細節,將NAS垂直的樹形結構改變成平等的扁平結構,從而提高了擴充套件性、增強了可靠性、具備了平臺無關性等重要儲存特性。(Erasure Code: 是將檔案轉換成一個碎片集合,每一個碎片很小,碎片被打散分佈到一組伺服器資源池裡。只要存留的碎片數量足夠,就可以合成為原本的檔案。這可以在保持原本的資料健壯性的基礎上大大減少需要的儲存空間。 不過Erasure Code並非適應所有的場景,尤其不適合網路延遲敏感的業務( 不過Erasure Code並非適應所有的場景,尤其不適合網路延遲敏感的業務))   SNIA(網路儲存工業協會)定義的物件儲存裝置是這樣的: Ø 物件是自完備的,包含元資料、資料和屬性   n 儲存裝置可以自行決定物件的具體儲存位置和資料的分佈      n 儲存裝置可以對不同的物件提供不同的QoS Ø 物件儲存裝置相對於塊裝置有更高的“智慧”,上層通過物件ID來訪問物件,而無需瞭解物件的具體空間分佈情況 換句話說物件儲存是智慧化、封裝得更好的塊,是“檔案”或其他應用級邏輯結構的組成部分,檔案與物件的對應關係由上層直接控制,物件儲存裝置本身也可能是個分散式的系統——這就是分散式物件儲存系統了。   用物件替代傳統的塊的好處在於物件的內容本身來自應用,其具有內在的聯絡,具有“原子性”,因此可以做到: Ø 在儲存層進行更智慧的空間管理 Ø 內容相關的資料預取和快取 Ø 可靠的多使用者共享訪問 Ø 物件級別的安全性 同時,物件儲存架構還具有更好的可伸縮性。一個物件除了ID和使用者資料外,還包含了屬主、時間、大小、位置等源資料資訊,許可權等預定義屬性,乃至很多自定義屬性      具備EB級規模擴充套件性的分散式物件儲存,通過對應用提供統一的名稱空間,構建EB級統一、可共享資料的儲存資源池,有效地填補上述通用計算模型中“網路計算”場景海量儲存單元空白,通過高層次的資料模型抽象,可以簡化應用對資料訪問,同時使得海量儲存更加智慧。 物件是資料和自描述資訊的集合,是在磁碟上儲存的基本單元。物件儲存通過簡化資料的組織形式(如將樹形的“目錄”和“檔案”替換為扁平化的“ID”與“物件”)、降低協議與介面的複雜度(如簡化複雜的鎖機制,確保最終一致性),從而提高系統的擴充套件性以應對資訊爆炸時代海量資料的挑戰。同時物件的智慧自管理功能也能有效降低系統維護複雜度,幫助使用者降低整體擁有成本(TCO)。