雲存儲是在雲計算(Cloud Computing)概念上延伸和發展出來的一個概念。 它的目標是將應用軟體與存放裝置相結合,通過應用軟體實現存放裝置向存儲服務的轉變。 簡單來說,雲存儲不是存儲,而是服務。 這種服務能夠在網路上隨需提供虛擬存儲,也被稱為資料存儲即服務(Data Storage as a Service, DaaS)。 客戶根據實際需要購買的存儲容量支付費用。 任何根據固定的容量增加量來提供存儲的方式都不是雲存儲。
雲存儲對消費者來講,不是指某一個具體的設備,而是一個由許許多多個存放裝置和伺服器所構成的集合體。 消費者使用雲存儲,不是使用某一個存放裝置,而是使用整個雲存儲系統帶來的一種資料訪問服務。
雲存儲主要分為三類:一是公共雲存儲,比較為大家所熟知的 dropbox 就是典型的公共雲存儲;二是企業級私有雲存儲;三是把公共雲和私有雲結合在一起的混合雲存儲。 這幾種雲存儲的一個共有特點就是:用戶端主動發出管理指令,服務端被動回應。 因此可以將其視為用戶端資料管理系統。
CDMI 是什麼?
隨著資訊資料爆炸式地增長,雲存儲正以強勁的姿態在 IT 市場上佔據越來越重要的角色。 隨之而來的則是雲存儲服務提供者在資料存儲、管理、保護以及資料採礦上面臨的越來越嚴峻的挑戰。 因此,雲存儲管理的標準化勢在必行。 為了消除使用者的困惑、行業過度分散以及市場增長動力上的相關損失,存儲行業標準組織 SNIA 于 2010 年 4 月公佈的第一個雲存儲標準 CDMI。
CDMI 是雲資料管理介面(Cloud Data Management Interface)的縮寫,它為雲存儲定義了資料管理介面規範。 它制定了用戶端與雲資料中心之間的資料交換介面,標準化了用戶端資料管理系統,規範了用戶端如何管理資料中心的資料。
圖 1 展示了 CDMI 工作的基本流程。 用戶端與資料中心通過 REST 協定,使用 URI 唯一化任一資料塊並由 HTTP 協定存取,使資料塊與 URI 形成一一對應,從而構成用戶端主動資料中心被動的資料管理介面。
圖 1. CDMI 工作基本流程圖
CDMI 與常見的資料存儲方式
目前,常見的雲存儲資料訪問方式可歸納為以下三種:
第一種是通過傳統的資料訪問協定(如圖 2)訪問塊存儲和檔存儲。 CDMI 規範可以支援這種塊(邏輯單元號或虛擬卷)和檔(通過通用互聯網檔案系統、網路檔案系統或 WebDAV 訪問的檔案系統)存儲用戶端。 塊和檔的底層存儲空間被抽象化為封裝器。
圖 2. 傳統資料存儲方式
另一種方式是表空間存儲(table space storage)(如圖 3)。 CDMI 規範也可以抽象化為簡單的表存儲空間以供資料庫操作,但重點是可擴充性而非功能性。 CDMI 並不基於虛擬化的關聯表(RDBMS)實例。 每個 RDBMS 都有自己的專有介面,而 CDMI 甚至都沒有在雲裡面提供訪問虛擬 RDBMS 的方式。 SNIA 對此的解釋是:「由於該領域的創新速度很快,我們最好還是等待這種類型的雲存儲進一步發展,而不是馬上標準化該類存儲的功能介面。 」
圖 3. 表空間資料存儲方式
第三種則是目前正趨於成熟的物件型存儲方式(如圖 4)。 CDMI 將物件看作是可以通過 URI(統一資源識別碼)來訪問的獨一無二的專案,資料物件被看作可以創建、搜索、更新和刪除(CRUD)的獨立資源。 通過物件,封裝器可以封裝其他封裝器。 準確地說,CDMI 定義了應用程式在雲中創建、搜索、更新和刪除資料元件的功能介面。 用戶端將可以發現雲存儲服務的功能,並利用 CDMI 來管理封裝器和其中的資料。 此外,通過 CDMI 介面還可以在封裝器和它們的資料元件上設定中繼資料。
圖 4. 物件型資料存儲方式
CDMI 還可以用於行政管理和管理型應用程式,以便管理封裝器、帳號、安全訪問和監視/帳單資訊,甚至還可以用於其他我們所熟知的協定所訪問的存儲,比如 SAN(存儲局域網)、NAS(網路附加存儲)、FTP、WebDAV 和 HTTP /REST。 用戶端可以看到底層存儲和資料服務的功能,從而理解這個雲服務。
CDMI 與 RESTful
REST 的定義是 Representational State Transfer,即表現層狀態轉化。 在 RESTful 架構中,每個 URI 代表一個資源,用戶端通過四個 HTTP 動詞:GET 用來獲取資源,POST 用來新建資源(也可以用於更新資源),PUT 用來更新資源,DELETE 用來刪除資源,對伺服器端資源進行操作,實現" 表現層狀態轉化"。
CDMI 在所有可能的設計處使用了 Restful 原理。 具體來說,CDMI 定義了一系列 RESTful HTTP 操作,用來處理雲存儲作業系統,如分配和訪問封裝器和物件、管理使用者和組、實現存取控制、添加中繼資料、提供查詢、傳輸資料等。
CDMI 使用 RESTful HTTP 作為物件存儲資料路徑的原因在於,RESTful 的通用架構規則簡單並且適用于多平臺,易於學習和被開發者使用。 各大雲平台產品所提供的開放介面十分相似,但是又不完全相同,通過使用 RESTful 能夠有一定層次的封裝,從而減少開發人員和消費者的負擔。
CDMI 中繼資料
雲存儲中,資料存儲是很重要的一部分,中繼資料詳細表明了存儲中的資料是如何在雲中管理的,對降低資料管理的複雜性起到了重要作用。 SNIA 存儲行業資源網域模式(SIRDM)還提供了一個處理雲中繼資料的框架(如圖 5)。 從圖中可以看出,SIRDM 提供的中繼資料框架中主要包括三種中繼資料:使用者中繼資料,存儲系統中繼資料,資料系統中繼資料。 在 CDMI 規範中,除了這三種中繼資料,還包括 HTTP 中繼資料。
圖 5.雲存儲中繼資料框架
使用者中繼資料主要由 CDMI 用戶端生成,與物件相關聯。 通過查詢特定的使用者中繼資料值,可以得到資料物件和封裝器物件。 使用者中繼資料的名字不能以「cdmi_」作為開頭。
資料系統中繼資料同樣是由 CDMI 用戶端生成,與資料物件或封裝器物件相關聯,用於使用者指定對相關資料的需求,這些資料需求則由雲存儲中的資料服務部分來處理。
存儲系統中繼資料則是由雲存儲系統生成的唯讀型中繼資料,用於給用戶端提供存取控制資訊等中繼資料。
HTTP 中繼資料只與 CDMI 中 HTTP 協定的使用相關聯,比如協定內容大小、類型等,與 CDMI 規範並沒有太多關聯。
CDMI 物件模型
圖 6.CDMI 物件模型
CDMI 的物件模型結構如圖 6 所示,對於資料存儲的操作,用戶端只需要知道封裝器物件和資料物件。 所有資料的路徑實現都需要支援至少一級封裝器和一定數量的資料物件組。 用戶端可以發出一個 PUT 請求給封裝器的 URI,然後創建一個有特定名字的新的封裝器,圖中的 KEY/VALUE 中繼資料是可選的。 一旦封裝器被創建,用戶端可以發送一個 PUT 請求來創建一個資料物件的 URI。 用戶端可以通過 GET 請求獲取到實際的資料物件和它的數值。
CDMI 同時也定義了一類被稱作為佇列的物件,當存儲或讀取資料時,這類物件能夠保證資料按照先進先出的順序進行操作。
CDMI 還提供對域的支援,允許管理員使用者許可權和存儲物件相關聯。 域可以允許在 ACL 上使用使用者認證映射原則的規範,允許授予特殊的雲相關的特權,允許外部使用者授權系統的代理,例如 LDAP 或者 Active Directory。 域可以是層次性的,允許一個公司層面的域有多個子功能變數名稱用於部門或者個人。 同時,域的概念還能被用於聚集使用的資料,這些資料被用作訂單,監控以及度量。
CDMI 物件模型中的封裝器資源和與之關聯的 URI 允許了客戶可以去發現雲存儲提供的功能和 CDMI 的具體實現。 用戶端可以看到底層存儲和資料服務的功能,從而理解這個雲服務。
在使用 CDMI 規範的雲存儲系統中,每次新建物件時,都會有一個全域唯一的標示符與之對應,我們稱之為物件識別碼(Object ID)。 物件識別碼 是一串字串,其格式如圖 7 所示。 物件識別碼 的最大長度是 40 位元組,第 0 位元組是保留字節為 0,第 1 至 3 位元組為企業的 SNMP 號(關於企業 SNMP 號的具體細節可以參考[RFC2578]和HTTP://www.iana.org/assignments/ente rprise-numbers/enterprise-numbers),可以唯一確定生成此物件識別碼 的雲存儲供應商,因此不同雲服務提供者生成的物件識別碼 彼此之間並不會有衝突。 第 4 位元組同樣是保留字節 0,第 5 位元組表示了整個物件識別碼 的長度,第 6 至 7 位元組為 CRC,通過 CRC 校驗可以保證物件識別碼 的完整性。 剩下的位元組則是不透明的資料位元組,每個資料物件都有雲服務提供者生成的唯一的不透明資料位元組。
圖 7.CDMI 物件識別碼 格式
物件識別碼 對用戶端進行資料存取有很大的作用。 前文提到過,用戶端是通過 Restful HTTP 形式的 URI 進行資料存取的,系統有了 root 封裝器的 URI 之後,資料物件的 URI 則是將物件識別碼 連接在 root 封裝器的 URI 之後。 比如:如果某個 CDMI 系統的 root 封裝器的 URI 是:HTTP://cloudStorage.sample.com/root,那麼存取某個資料物件的 URI 可以是 HTTP://cloudStorage.sample.com /root/cdmi_objectid/<objectID>。
CDMI 的優勢與不足
CDMI 的提出,説明使用者解決了日益增長的資料可訪問性、安全性、移動性和成本問題,使雲存儲用戶端和雲存儲服務商都可以簡化雲存儲的各個方面。 用戶端可以發現雲存儲服務的功能,並利用 CDMI 來管理封裝器和其中的資料,同時 CDMI 也為雲存儲使用者提供了一個簡單而通用的介面,説明他們尋找合適的雲存儲服務提供者以滿足他們自己的專有要求。 而對於雲存儲服務商來說,CDMI 為他們提供了一個通用的介面來宣傳推廣他們的獨特功能,並説明使用者發現他們的服務。
同樣對雲存儲服務開發商來說,CDMI 的出現也使其應用程式有了更廣泛的相容性。 CDMI 為那些雲存儲應用程式開發人員提供了唯一的多廠商和基於行業標準的開發介面,確保了應用程式開發商可以有相容的服務提供者,為雲應用程式開發商創造了一個潛在的使用者市場。
但是,CDMI 規範略有不足之處是並沒有提供通過可靠性和品質來衡量雲存儲供應商品質的方式,所以它不能絕對防止資料丟失這樣風險的存在。 當然,SNIA 畢竟只是一個行業協會,其宗旨是促進成員間的共同協作,以便讓客戶可以使用不同的 SNIA 成員的產品並根據需要在這些產品間切換。 它也沒有權利規定成員必須向客戶提供服務品質保證。 不過,可以預見的是 SNIA 應該會説明客戶從遵守 CDMI 的雲存儲供應商切換到其他供應商。
雲存儲發展趨勢
物件型存儲標準作為雲存儲中一種比較成熟的存儲方式,正逐漸成為未來的發展趨勢,其最主要的特點在於存儲的資料除了數位還有貼上標籤的中繼資料,並進一步封裝了資料的屬性。
CDMI 這種基於物件的存儲標準,可以實現資料的扁平化,操作簡單化、共用有效化。 基於這樣一個標準,存儲的發展也將由大封裝器向小封裝器發展,一直發展為基於某物件的封裝器。 這一特性從某種程度上也印證了物件雲存儲與互聯網之間的密切關係。
結束語
雲存儲作為一種新興的技術理念,正在改變著傳統存儲的提供與使用方式,也對存儲行業帶來了深遠影響。 CDMI 作為一種業界公認的存儲介面標準,使雲存儲變得更加便利,並且能夠以更低的成本在不同的雲環境之間遷移和管理資料。 相信雲存儲在 CDMI 規範下會發展得更加成熟。