基于对象的存储设备.doc

上传人:hw****26 文档编号:3099684 上传时间:2019-05-21 格式:DOC 页数:24 大小:2.64MB
下载 相关 举报
基于对象的存储设备.doc_第1页
第1页 / 共24页
基于对象的存储设备.doc_第2页
第2页 / 共24页
基于对象的存储设备.doc_第3页
第3页 / 共24页
基于对象的存储设备.doc_第4页
第4页 / 共24页
基于对象的存储设备.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、参考(http:/ 存储区域网络(SAN)中使用的 SCSI 块 I / O 的命令集,它通过直接访问在磁盘驱动器或光纤通道层次的数据提供了较高的随机 I / O 和数据吞吐性能。 网络附加存储(NAS)系统使用网络文件系统(NFS)或通用互联网文件系统(CIFS)的命令集访问数据。 因为在媒介上的元数据是共享的,多个节点可以同时访问数据。相反,对象存储是基于封装了用户数据的数据对象,包括数据的属性和元数据。 数据,属性和元数据的结合,使对象存储得以确定数据的布局或每个对象的基础上的服务质量,这就提高了灵活性和可管理性。对象存储的独特设计,不同于传统的基于块接口的标准存储设备。 对象存储是一个

2、磁盘驱动器的智能进化,它可以存储和提供对象而不仅仅是简单地将数据存放于磁道和扇区。这个任务的完成是通过将底层存储功能移动到存储设备中,并通过对象接口来访问设备实现的。 使用对象存储的系统提供以下好处,这是在典型的 IT 存储应用范围内是广泛可取的: 存储层的智能空间管理 数据感知的预取和缓存 健壮性,多个客户端的共享访问 使用卸载的数据路径的可扩展 可靠的安全保障OSD 历史在 1983 年推出第一小型计算机系统接口(SCSI)光盘驱动器, SCSI 标准是由美国国家标准学会(ANSI)于 1986 年批准的。 从那时起的未来数年,这一基本协议已没有显著改变。 在存储设备和主机电脑之间的物理接

3、口却有过从宽 SCSI 到快速 SCSI 再到光纤通道SCSI(FCP ) 、串行连接 SCSI(SAS)的巨大变化。 在 1983 年初始的接口速度为 5 MB /秒。如今,接口速度可达 320 MB /秒。 第一个 SCSI 磁盘的容量为 5 MB。 今天,SCSI 逻辑接口用到了 300 GB 的磁盘驱动器上。 纵向记录的面密度已达到约 200 GB / in2,新兴的垂直记录技术和热辅助磁记录(HAMR)技术将是这一数值达到 1TB /in 2。然而,逻辑接口,或者说命令集,在此期间只有少量的增加。 今天的接口作为 ANSI T10 SCSI OSD V1 标准化了, ANSI T10

4、 SCSI OSD V1 由卡内基梅隆大学在始于 1994 年被称为网络连接的安全磁盘(NASD)的政府资助研究项目中完成。在接下来的几年中,这一工作仍将得到一组由国家存储工业协会(NSIC)组织的业界合作者的支持和提倡。这项工作促成了草案接口标准化的 ANSI T10 规范的提交,该委员会负责 SCSI 接口标准,并将其命名为项目 T10/1355-D。在接下来的几年中,这个接口由具有各种工业界和学术界的贡献者的全球网络存储工业协会(SNIA)的 OSD 技术工作组进行了修改和扩展,并促成了在 2004 年 T10 标准草案的完成。该标准于 2004 年 9 月被批准,并成为了 ANSI T

5、10 SCSI OSD 的 V1 的命令集,作为 INCITS 400-2004 公布。SNIA 继续致力于接口的进一步扩展,如 ANSI T10 SCSI OSD 的 V2 的命令集。OSD 功能:基本概念与传统的数据访问方法,包括基于块的方法(并行SCSI、SAS 、FCP,ATA,SATA )和基于文件的方法( NFS 和 CIFS)相比,基于对象的数据访问模型是一个新兴的技术。一个 OSD 类似于一个逻辑单元。不同于传统的面向块的设备提供作为无关联块阵列组织的数据的访问方式,对象存储允许以存储对象的方式来访问数据。 存储对象是一个组织数据的虚拟个体,该虚拟个体通过用户以逻辑上相关的方式

6、进行制定。 存储对象的空间是由 OSD 的本身进行分配而不是一个基于主机的文件系统。 OSDs 对所有必要的底层存储设备进行管理,包括空间管理和提供安全功能。 因为对于对象没有基于主机的元数据(如inode 信息) ,那么对于应用程序而言获取一个对象的唯一方法就是通过它的对象标识符(OID) 。 下图将传统的基于块的磁盘数据结构与基于对象的磁盘数据结构进行了对比。 0 1 2 3 45 6 7 8 91 0 1 1 1 2 1 3 1 41 5 1 6 1 7 1 8 1 9基于块的磁盘基于对象的磁盘对象对象对象对象对象对象对象图 1 基于块的磁盘与基于对象的磁盘的对比OSD 中对象的集合,形

7、成一个单一的 OID 的平坦空间。 虚拟文件的层次结构可以通过重新排列对象的指针来模拟,如下所示。 0 1 2 3 45 6 7 8 91 0 1 1 1 2 1 3 1 41 5 1 6 1 7 1 8 1 9对象对象对象对象对象对象对象对象对象对象对象对象对象对象文件名 / i n o d e s对象 / O I D s虚拟视图 A 虚拟视图 B图 2 传统的层次,平坦模型和虚拟的数据访问模型对象是在 OSD 中数据存储的基本单位。 每个对象是完备的,它由用户数据、一个OID、元数据(构成对象的块的物理位置)和属性构成,如下所示。 对象对象对象对象对象对象对象对象D a t aO I D属

8、性元数据基于对象磁盘元数据 :C r e a t i o n d a t e / t i m e ; o w n e r s h i p , s i z e 参考属性 :A c c e s s p a t t e r n s , c o n t e n t , i n d e x e s 用户提供的属性 :R e t e n t i o n , Q o S 图 3 包含数据、OID、元数据和属性的对象ANSI T10 SCSI OSD 标准定义了四种不同的对象: 根对象 -OSD 本身 用户对象 由来自应用程序或客户端的 SCSI 命令创建 集合对象 一组用户对象,如所有的.mp3 对象或所有

9、属于同一个项目的对象 分区对象 -为一组用户对象和集合对象的容器,这些用户对象和集合对象具有相同的安全和空间管理的特点,如配额和密钥值这些对象,如下图所示。 对象类型根对象 ( O S D )分区对象集合对象用户对象图 4 对象类型:根对象,分区对象,用户对象,集合对象因为每个对象是完备的,这样不同对象的迁移和共享是可能的。文件系统和其他基于主机的数据管理应用程序同时存储用户数据和元数据。 OSD 的对象属性保证了 OSD 对象上应用程序的关联性,如根对象、分区对象、集合对象或用户对象。属性可以用来描述一个 OSD 对象的具体特点,如 OSD 的对象所占用的总字节数,OSD 的对象的逻辑大小,

10、或 OSD 对象的最后修改时间。属性页的编号表明了该属性页所关联的 OSD 对象类型,据 ANSI T10 SCSI OSD 标准的定义对于每个对象有 232 种属性页,而每个属性页有 232 种属性。 只有小范围的属性命名空间是由标准预定义的。 最主要的部分可以由应用程序定义,这就提供了很好的数据服务和有助于改善服务质量(QoS) 。 两类属性包括: 存储属性(类似的 inode) - OSD 使用来管理对于数据的块的分配,如 OID、数据块的指针、逻辑长度、使用的容量。 用户属性 -用于应用程序和元数据管理者存储对象相关的更高层次的信息,如密度、容量、性能、成本、适应性、权能、可管理性、可

11、靠性、可用性、可维护性、互操作性、安全性、用电量、配额数据对象的属性和元数据的存储是直接的,并在层与层之间和跨设备自动进行的。当对象通过某个系统层或设备,该系统层能根据它所理解的属性值产生反应。忽略其他属性,不修改也没有动作。 因此,标记为高可靠性的对象与标记为临时的对象是区别对待的。数据的存储属性将高服务级别与数据关联起来,以获得更好的数据缓存、预取和迁移等,如本图所示。 A t t i b u t e s L a y e r 0 A t t i b u t e s L a y e r 1 A t t i b u t e s L a y e r 2 A t t i b u t e s L a

12、 y e r 3A t t i b u t e s L a y e r 0 A t t i b u t e s L a y e r 1 A t t i b u t e s L a y e r 2 A t t i b u t e s L a y e r 3A t t i b u t e s L a y e r 0 A t t i b u t e s L a y e r 1 A t t i b u t e s L a y e r 2 A t t i b u t e s L a y e r 3A t t i b u t e s L a y e r 0 A t t i b u t e s L a y

13、e r 1 A t t i b u t e s L a y e r 2 A t t i b u t e s L a y e r 3L a y e r 0L a y e r 1L a y e r 2L a y e r 3图 5 属性层服务级别SCSI 架构模型SCSI 架构模型(SAM)的扩展 OSD 定义了这些 OSD 特定命令和扩展的 SCSI 命令描述块(CDB): APPEND (write without offset) CREATE (object), REMOVE (object) CREATE COLLECTION, REMOVE COLLECTION, LIST COLLECT

14、ION, FLUSH COLLECTION CREATE PARTITION, REMOVE PARTITION, FLUSH PARTITION FLUSH (force object to media), FLUSH OSD, LIST (objects) FORMAT (OSD) GET ATTR (of an object), SET ATTR PERFORM SCSI COMMAND (such as a SCSI INQUIRY) READ (object with OID), WRITE SET KEY (shared secret for a single object) SE

15、T MASTER KEY (shared secret for OSD) S C S I B l o c kC o m m a n d s( d i s k d r i v e )( S B C , S B C - 2 , S B C - 3 )R e d u c e d B l o c kC o m m a n d s( d i s k d r i v e )( R B C , R B C A M 1 )S C S I S t r e a mC o m m a n d s( t a p e d r i v e )( S S C , S S C - 2 , S S C - 3 )S C S I

16、 M e d i aC h a n g e C o m m a n d s( j u k e b o x )( S M C , S M C - 2 , S M C - 3 )M u l t i - M e d i aC o m m a n d s( D V D )( M M C , M M C - 2 , M M C -3 , M M C - 4 , M M C - 5 , M M C - 6 )S C S I C o n t r o l l e rC o m m a n d s( R A I D )( S C C - 2 )S C S I E n c l o s u r eS e r v i

17、 c e s( S E S , S E S A M 1 , S E S - 2 )O b j e c t - b a s e dS t o r a g e D e v i c e( O S D , O S D - 2 )B r i d g e C o n t r o l l e rC o m m e n t( B B C )A u t o m a t i o n D r i v eI n t e r f a c e - C o m m a n d s( A D C , A D C - 2 )P r i m a r y C o m m a n d s ( f o r a l l d e v i

18、c e s )( S P C , S P C - 2 , S P C - 3 , S P C - 4 )A r c h i t e c t u r e M o d e l( S A M , S A M - 2 , S A M - 3 , S A M - 4 )S C S I P a r a l l e l i n t e r f a c e( S P I - 2 , S P I -4 , S P I - 5 )R e l a t e d s t a n d a r d s a n d t e c h n i c a l r e p o r t s( S D V , P I P , S S M

19、,S S M - 2 , E P I )S e r i a l B u s P r o t o c o l( S B P - 2 , S B P - 3 )I E E E 1 3 9 4F i b r e C h a n n e l P r o t o c o l( F C P , F C P - 2 , F C P -3 , F C P - 4 )F i b r e C h a n n e l ( F C )S S AS C S I - 3 P r o t o c o l( S S A , S 3 P )S S A - T L 2S S A - P H 1 o r S S A - P H 2

20、S C S I R D M A P r o t o c o l( S R P )I n f i n i B a n d( t m )i S C S II n t e r n e tS e r i a l A t t a c h e d S C S I( S A S , S A S - 1 -1 , S A S - 2 )A u t o m a t i o n D r i v e I n t e r f a c e T r a n s p o r t P r o t o c o l( A D T , A D T - 2 )图 6 SCSI 标准架构图OSD 的安全在 ANSI T10 SCSI

21、OSD 标准为基于权能的协议定义了强安全性,该协议强制性地保证SCSI 请求的完整性和客户端的合法使用。每个命令必须附有哈希码( HMAC-SHA1 算法的160 位密钥的哈希消息认证码) ,它标识一个特定的对象以及针对该对象执行的操作列表。在下面的步骤和图的过程中详细介绍。1. 安全管理端与一个 OSD 交换共享密钥。2. 客户端必须从安全管理端发出请求获取一个权能并对访问的对象指定 OSD 的名称、分区 ID 和 OID。3. 安全管理端来决定客户端通过 LDAP,NIS 或 Kerberos 的方法发出请求是否被授权。4. 因为这种身份认证的方法是超出了 ANSI T10 SCSI OS

22、D 协议的范围之外,安全管理端与策略管理端交互来确定客户端是否被授权来对指定的对象执行请求操作。如果操作是允许的,安全管理端将生成证书,包括所请求的权能和 CAP_key(完整性校验值) 。CAP_key 是通过使用一个 OSD 的密钥和权能的伪随机函数产生的。5. 证书从安全管理端发送到客户端。6. 客户端发出请求、权能以及对每个 OSD 命令验证标签。 验证标签是由客户端使用CAP_key 计算出来的。 在处理命令之前,OSD 验证了以下内容: o 验证标签,基于密钥和权能信息o 该功能尚未以任何方式修改o 该功能允许对指定对象的请求的操作 如果通过测试,OSD 允许基于权能中编码的权利的

23、操作。 一个客户端可以请求允许多种类型的操作的证书,如读、写或删除。 这允许客户端主动缓存和重用凭证,最大限度地减少安全管理的信息数量。 证书可以被缓存、传播、阻塞、撤销或过期。客户端策略管理端安全管理端N I S , L D A P . . .对象存储243165R e q ,C a p a b i l i t y ,M A CC A P _ k e y( R e q )C r e d e n t i a l =( C a p a b i l i t y +C A P _ k e y )权限申请权能授权共享密钥 ,r e f r e s h e d p e r i o d i c a l l

24、 yS E T K E Y , S E T M A S T E R K E Y图 7 OSD 安全过程流图权能SCSI 命令描述块(CDB)的字段,指定命令可以请求的命令功能(哪个 OSD 对象可以被访问) 。 权能的内容,可以由策略管理端管理用于应用程序客户端,也可以由安全管理端通过证书进行保护。证书一个由安全管理端准备的数据结构,由完整性检查值(CAP_key)进行保护。 此证书被发送到应用程序客户端来定义对某个 OSD 逻辑单元的访问用于指定 OSD 对象上指定命令的执行。证书包括由策略管理端准备并由应用程序客户端复制到每个 CDB 来请求指定的命令功能的一种权能。OSD 的共享密钥层次

25、结构共享密钥的层次结构如图 8 所示。 从最高到最低,密钥包括以下内容:1. 主密钥 层次结构中位于最高层次密钥,可以允许对驱动器不受限制的访问。 主密钥的丢失被认为是一个灾难性的事件。 因为主密钥的这种重要性,该协议限制了它的使用仅仅局限于设置的根密钥这种罕见事件。 主密钥仅仅在驱动器的所有者发生改变的情况下才能修改。2. 根密钥-与主密钥类似,根密钥提供对驱动器不受限制的访问。 然而,根密钥不能被用来初始化驱动器或设置一个新的主密钥或密钥。根密钥设置后,它可以用来设置分区密钥。 根密钥是可以根据需要或者作为一个用于维护安全的预定的更新操作的一部分被修改的。3. 分区密钥 -用于为每个分区产

26、生工作密钥。 对象存储分为多个分区,每个分区都有一个唯一的分区密钥和工作密钥。4. 工作密钥-用于生成客户端用于访问单个对象的权能密钥。 由于它们的频繁使用,工作密钥应经常刷新,如每隔一小时。不幸的是,一密钥刷新就会立即导致该密钥所产生的所有证书的失效,当所有的客户端必须与安全管理端通信以获得新的凭据时也可能会导致性能的显着下降。由于所有证书在被对象存储缓冲之前必须进行验证,这也就增加了 OSD 上的负载。 为了解决这些问题,对象存储可以将最多 16更新版本的工作密钥声明为可用。 这将有效地定义多个工作密钥同时可用。 因此,一个密钥的刷新会影响到有限数量的权能。为了支持这一功能,该协议需要一个

27、被纳入到特定的权能中的密钥版本,那些权能标示了哪些密钥在验证过程中可用。 。 密钥架构 主密钥 根密钥 分区密钥 工作密钥用于初始化驱动以及创建根密钥用于创建 O S D 分区以及创建与之相关的分区密钥仅仅用于创建工作密钥 , 分区密钥不会经常修改 , 但通常方式是用来增强安全性用于产生权能密钥图 8 OSD 的共享密钥层次总结感谢李思阳同学的作图Linux 下的访问接口这一章主要介绍 Linux 下 OSD 所提供的访问接口以及与之相关的数据结构。数据结构篇osd 设备信息描述符:./include/scsi/osd_initiator.hstruct osd_dev struct scsi

28、_device *scsi_device;unsigned def_timeout;#ifdef OSD_VER1_SUPPORTenum osd_std_version version;#endif;这并不是一个完全的 linux 设备,它仅仅是一个挂 linux 请求相关联的资源以及默认属性的地方。请求队列描述符(用户态):./include/open-osd/linux/blkdev.hstruct request_queue int fd;volatile int num_requests;scsi 设备描述符(用户态):./include/open-osd/scsi/scsi_dev

29、ice.hstruct scsi_device struct request_queue *request_queue;OSD 设备标志信息描述符:./include/scsi/osd_initiator.hstruct osd_dev_info unsigned systemid_len;u8 systemidOSD_SYSTEMID_LEN;unsigned osdname_len;u8 *osdname;OSD 命令描述符格式:./include/open-osd/scsi/scsi.hstruct scsi_varlen_cdb_hdr /10 字节的命令描述块头部u8 opcode;

30、 /* opcode always = VARIABLE_LENGTH_CMD */操作码,统一定义为 0x7Fu8 control; /控制码u8 misc5;u8 additional_cdb_length; /* total cdb length - 8 */ /CDB 附加部分的长度200-8=192_be16 service_action; /服务动作,表示用户请求的动作。每个服务动作都有特定的附加域与之关联/* service specific data follows */后面是 190 字节的附加域,为特殊服务数据;struct osd_cdb_head /命令描述块的头部st

31、ruct scsi_varlen_cdb_hdr varlen_cdb;/*10*/ u8 options;u8 command_specific_options;u8 timestamp_control;/*13*/ u8 reserved13;/*16*/ _be64 partition; /此次命令所针对的分区 ID 号/*24*/ _be64 object; /此次命令所针对的对象 ID 号,分区 ID 和对象 ID 可以唯一地标志一个用户对象/*32*/ union /* V1 vs V2 alignment differences */struct _osdv1_cdb_addr_

32、len /*32*/ _be32 list_identifier;/* Rarely used */*36*/ _be64 length; /读写操作需要传送的字节数/*44*/ _be64 start_address; /用户对象上的偏移量,说明读 /写命令操作的开始位置。 _packed v1;struct _osdv2_cdb_addr_len /* called allocation_length in some commands */*32*/ _be64 length; /读写操作需要传送的字节数/*40*/ _be64 start_address; /用户对象上的偏移量,说明读

33、/写命令操作的开始位置。union /*48*/ _be32 list_identifier;/* Rarely used */* OSD2r05 5.2.5 CDB continuation length */*48*/ _be32 cdb_continuation_length; _packed v2;/*52*/ union /* selected attributes mode Page/List/Single */struct osd_attributes_page_mode /*52*/ _be32 get_attr_page;/*56*/ _be32 get_attr_alloc

34、_length;/*60*/ osd_cdb_offset get_attr_offset;/*64*/ _be32 set_attr_page;/*68*/ _be32 set_attr_id;/*72*/ _be32 set_attr_length;/*76*/ osd_cdb_offset set_attr_offset;/*80*/ _packed attrs_page;struct osd_attributes_list_mode /*52*/ _be32 get_attr_desc_bytes;/*56*/ osd_cdb_offset get_attr_desc_offset;/

35、*60*/ _be32 get_attr_alloc_length;/*64*/ osd_cdb_offset get_attr_offset;/*68*/ _be32 set_attr_bytes;/*72*/ osd_cdb_offset set_attr_offset;_be32 not_used;/*80*/ _packed attrs_list;/* osd2r03:5.2.4.2 Set one attribute value using CDB fields */struct osd_attributes_cdb_mode /*52*/ _be32 set_attr_page;/

36、*56*/ _be32 set_attr_id;/*60*/ _be16 set_attr_len;/*62*/ u8 set_attr_val18;/*80*/ _packed attrs_cdb;/*52*/ u8 get_set_attributes_parameters28; _packed;/*80*/struct osdv1_cdb struct osd_cdb_head h;u8 capsOSDv1_CAP_LEN;struct osdv1_security_parameters sec_params; _packed;struct osdv2_cdb /v2 版本的命令描述块struct osd_cdb_head h;u8 capsOSD_CAP_LEN; /用户获得的权能描述,表示命令的操作权限struct osdv2_security_parameters sec_params; _packed;struct osd_cdb union struct osdv1_cdb v1;

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。