云存储与 CDMI(云数据管理接口)

最近在做的项目涉及到云存储安全接口的设计,所以在这里先简单记一下和CDMI相关的基础知识,这一篇文章基本介绍了

CDMI的基础以及和REST的关系。

云存储

云存储是在云计算(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 工作基本流程图

CDMI 与常见的数据存储方式

目前,常见的云存储数据访问方式可归纳为以下三种:

第一种是通过传统的数据访问协议(如图 2)访问块存储和文件存储。CDMI 规范可以支持这种块(逻辑单元号或虚拟卷)和文件(通过通用互联网文件系统、网络文件系统或 WebDAV 访问的文件系统)存储客户端。块和文件的底层存储空间被抽象化为封装器。

图 2. 传统数据存储方式
传统数据存储方式

另一种方式是表空间存储(table space storage)(如图 3)。CDMI 规范也可以抽象化为简单的表存储空间以供数据库操作,但重点是可扩展性而非功能性。CDMI 并不基于虚拟化的关联表(RDBMS)实例。每个 RDBMS 都有自己的专有接口,而 CDMI 甚至都没有在云里面提供访问虚拟 RDBMS 的方式。SNIA 对此的解释是:“由于该领域的创新速度很快,我们最好还是等待这种类型的云存储进一步发展,而不是马上标准化该类存储的功能接口。”

图 3. 表空间数据存储方式
表空间数据存储方式

第三种则是目前正趋于成熟的对象型存储方式(如图 4)。CDMI 将对象看作是可以通过 URI(统一资源 ID)来访问的独一无二的项目,数据对象被看作可以创建、搜索、更新和删除(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.云存储元数据框架
图 5.云存储元数据框架

用户元数据主要由 CDMI 客户端生成,与对象相关联。通过查询特定的用户元数据值,可以得到数据对象和封装器对象。用户元数据的名字不能以“cdmi_”作为开头。

数据系统元数据同样是由 CDMI 客户端生成,与数据对象或封装器对象相关联,用于用户指定对相关数据的需求,这些数据需求则由云存储中的数据服务部分来处理。

存储系统元数据则是由云存储系统生成的只读型元数据,用于给客户端提供访问控制信息等元数据。

HTTP 元数据只与 CDMI 中 HTTP 协议的使用相关联,比如协议内容大小、类型等,与 CDMI 规范并没有太多关联。

CDMI 对象模型

图 6.CDMI 对象模型
CDMI 对象模型

CDMI 的对象模型结构如图 6 所示,对于数据存储的操作,客户端只需要知道封装器对象和数据对象。所有数据的路径实现都需要支持至少一级封装器和一定数量的数据对象组。客户端可以发出一个 PUT 请求给封装器的 URI,然后创建一个有特定名字的新的封装器,图中的 KEY/VALUE 元数据是可选的。一旦封装器被创建,客户端可以发送一个 PUT 请求来创建一个数据对象的 URI。客户端可以通过 GET 请求获取到实际的数据对象和它的数值。

CDMI 同时也定义了一类被称作为队列的对象,当存储或读取数据时,这类对象能够保证数据按照先进先出的顺序进行操作。

CDMI 还提供对域的支持,允许管理员用户权限和存储对象相关联。域可以允许在 ACL 上使用用户认证映射原则的规范,允许授予特殊的云相关的特权,允许外部用户授权系统的代理,例如 LDAP 或者 Active Directory。域可以是层次性的,允许一个公司层面的域有多个子域名用于部门或者个人。同时,域的概念还能被用于聚集使用的数据,这些数据被用作订单,监控以及度量。

CDMI 对象模型中的封装器资源和与之关联的 URI 允许了客户可以去发现云存储提供的功能和 CDMI 的具体实现。客户端可以看到底层存储和数据服务的功能,从而理解这个云服务。

在使用 CDMI 规范的云存储系统中,每次新建对象时,都会有一个全局唯一的标示符与之对应,我们称之为对象 ID(Object ID)。对象 ID 是一串字符串,其格式如图 7 所示。对象 ID 的最大长度是 40 字节,第 0 字节是保留字节为 0,第 1 至 3 字节为企业的 SNMP 号(关于企业 SNMP 号的具体细节可以参考[RFC2578]和http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers),可以唯一确定生成此对象 ID 的云存储提供商,因此不同云服务提供商生成的对象 ID 彼此之间并不会有冲突。第 4 字节同样是保留字节 0,第 5 字节表示了整个对象 ID 的长度,第 6 至 7 字节为 CRC,通过 CRC 校验可以保证对象 ID 的完整性。剩下的字节则是不透明的数据字节,每个数据对象都有云服务提供商生成的唯一的不透明数据字节。

图 7.CDMI 对象 ID 格式
CDMI 对象 ID 格式

对象 ID 对客户端进行数据存取有很大的作用。前文提到过,客户端是通过 Restful HTTP 形式的 URI 进行数据存取的,系统有了 root 封装器的 URI 之后,数据对象的 URI 则是将对象 ID 连接在 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 这种基于对象的存储标准,可以实现数据的扁平化,操作简单化、共享有效化。基于这样一个标准,存储的发展也将由大封装器向小封装器发展,一直发展为基于某对象的封装器。这一特性从某种程度上也印证了对象云存储与互联网之间的密切关系。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CDMI 存储管理接口规范 描述存储及部分管理接口的规范性文档, 可惜当下是全英文的.(呵呵,英语好的家伙有福了) 1 - Scope Defines the scope of this document 2 - References Lists the normative references for this document 3 - Terms Provides terminology used in this document 4 - Conventions Describes the conventions used in presenting the interfaces and the typographical conventions used in this document 5 - Overview of Cloud Storage Provides a brief overview of cloud storage and details the philosophy behind this International Standard as a model for the operations 6 - Common Operations Gives an example of the resources that may be accessed and the representations used to modify them 7 - Interface Standard Provides a description of HTTP status codes, Cloud Data Management Interface (CDMI) object types, object references, and object manipulations 8 - Data Object Resource Operations Provides the normative standard of data object resource operations 9 - Container Object Resource Operations Provides the normative standard of container object resource operations 10 - Domain Object Resource Operations Provides the normative standard of domain object resource operations 11 - Queue Object Resource Operations Provides the normative standard of queue object resource operations 12 - Capability Object Resource Operations Provides the normative standard of capability object resource operations 13 - Exported Protocols Discusses how virtual machines in the cloud computing environment may use the exported protocols from CDMI containers 14 - Snapshots Discusses how snapshots are accessed under CDMI containers 15 - Serialization/Deserialization Discusses serialization and deserialization, including import and export of serialized data under CDMI 16 - Metadata Provides the normative standard of the metadata used in the interface 17 - Retention and Hold Management Describes the optional retention management disciplines to be implemented into the system management functions 18 - Scope Specification Describes the structure of the scope specification for JSON objects 19 - Results Specification Provides a standardized mechanism to define subsets of CDMI object contents 20 - Logging Describes CDMI functional logging for object functions, security events, data management events, and queues 21 - Notification Queues Describes how CDMI clients may efficiently discover what changes have occurred to the system 22 - Query Queues Describes how CDMI clients may efficiently discover what content matches a given set of metadata query criteria or full-content search criteria Annex A - (normative) Transport Security Provides normative text for securing the HTTP communications protocol for transferring CDMI messages Annex B - (informative) Bibliography Provides informative references that may contain additional useful information

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值