第一章 海量网络存储系统概述(5)

2019-05-18 13:22

是位于两个部件或者设备之间传送数据的通道),分别从相应的存储结点读取数据。例如应用通过分布式文件系统存取文件,一个文件请求有可能分裂成对应多个存储结点的相应分条文件发出的子I/O请求。

1.5 存储空间组织和管理

存储系统中可能包含多个存储设备,如何建立一个架构保证用户和应用程序一致和透明的存取这些存储设备中的数据是存储系统设计者需要重点考虑的问题。一个最为简单的方式就是把不同存储设备抽象为存储空间,建立相应的数据结构以维护存储空间,并提供操作集对于存储空间进行存取、组织和管理。通过这种方法可以把一个复杂的大规模存储系统简化为若干存储空间的集成,通过I/O路径的分析能够清晰的分析不同存储空间之间的逻辑联系。

实际上,前面讨论的文件和块级的标准存取接口为抽象存储设备提供了一个好的平台。正是因为接口的抽象性和设备无关性,使得存储空间这种抽象过程能够很方便的应用于实际的存储系统设计之中。

1.5.1 存储空间的基本概念

计算机存储系统从整体上讲分为物理存储系统和逻辑存储系统,物理存储系统就是把多个同构或者异构存储设备(内存、磁盘、磁带等)通过连接部件(总线和网络)连接起来构成一个整体供计算机存储数据。而逻辑的存储系统就是在物理的存储系统上构建可以相互映射的多个存储空间并提供相应的操作供计算机存取数据。文件系统属于典型的逻辑存储系统。数据的存取过程从本质上讲就是寻址和解释的过程。因此,我们有必要引入一个逻辑概念,描述复杂存储系统结构。

存储空间(Storage Space)是一种逻辑存储结构,它对上层应用提供寻址空间和相应的逻辑存储单元(Logic Storage Unit),并提供操作集(Access Operations)用于存取存储单元中的数据;同时在内部具有表示存储空间的数据结构(Meta data)实现逻辑存储单元和下层存储空间地址的映射关系;同时具有访问下层存储空间的存取操作集,把上层对于逻辑存储单元的数据存取请求解析传递给下级存储空间。

存储空间的定义是递归的,直到磁盘驱动器把上层的数据请求变成实际对于存储介质的物理存取操作。

存储空间包含三个要素,第一个是逻辑存储单元及其地址空间(编址方法),它构成存储空间的用户视图;第二个是存储系统元数据结构,它维护逻辑存储单元和下层存储空间的映射关系;第三个是操作集,包括存取操作(上下层的数据操作语义)。 如果两个存储空间的操作和存储元数据结构是相同的,则称这两个存储空间是同构的。

需要说明的是存储空间中的逻辑存储单元和下层存储空间的逻辑存储单元不一定是一一对应的。一个地址对应多个存储单位可以产生镜像和多副本的作用

存储空间A的操作集和地址空间存储空间A存储空间A的内部结构存储空间A存储单元集合存储空间B的操作集和存储空间C的操作集和地址空间地址空间存储空间B的内部结构存储空间C的内部结构存储空间B存储单元集存储空间C存储单元集合合图1.11存储空间的包含关系

存储空间B存储空间C

存储空间是可以嵌套的,如图1.11所示。通过在下一级存储空间上提供新的地址空间和存储操作的方法可以实现新的逻辑存储结构,也就是新的存储空间。最下层的存储空间就是物理存储设备,它提供物理的存储介质和在这些介质上的机械和物理操作。

一个存储空间可以跨越若干个物理设备,也可以是一个物理存储设备的一部分。另一方面不同的结构中存取数据对计算速度的要求也是不一样的,在不同存储介质上数据的读取不仅仅受介质存取方式的影响,还要受到数据组织方式的制约。这表现在数据的组织即管理程序也是需要执行时间的;数据的组织结构对于如何存取数据产生巨大的影响,例如在内存中是以数据块进行线性编址,而文件系统的组织形式是一个树状结构,而两种情况下读取数据的方式是极其不同的。

在计算机系统中对于数据的操作包含两类语义,一种是文件操作语义,一种是数据块操作语义。前者对应于文件系统,后者对应于存储设备。根据这两种操作类型,逻辑存储空间分为文件存储空间和数据块存储空间。从逻辑上讲存储空间内部存储单元之间应该是同构和独立的,对于存储空间内的两个存储单元的访问应该具有相同的存取特性。然而,由于逻辑存储空间毕竟是由物理设备的物理存储空间构成,不同的设备以及设备内不同位置的存取属性是不同的(如存取速度等),并且这种差异会随着实际负载状况而变化。

另一个方面,如果一个存储空间跨越一个存储设备的物理存储边界,其空间内部的差异问题表现的更加显著,对具体的存取操作性能有着直接的影响。从技术上讲,设计一个存储系统有两个目标,第一是如何把多个物理上分离的存储空间组成一个统一访问的存储空间,可以使用相同的数据结构和操作语义,这也是存储虚拟化的目标。第二是如何根据物理存储设备的不同属性建立一个符合平衡存储多方面需要的最优系统。上述两个目标在实际实现时往往具有矛盾,前者要求忽略底层设备的差异,应用透明地访问存储系统,实现操作的简单性和可移植性,而后者要求负载和存储差异可知,系统能够根据这些差异进行合理调度优化。显示中,存储系统的设计往往争取在这两个目标之间取得平衡。

存储空间的元数据表示空间的组织结构,对于树状结构的存储空间,因为它最终建立在物理线性存储介质上,因此元数据不仅要表示树状结构,同时还必须完成变换到线性空间的数据分配,例如inode或者FAT表。元数据存放的位置也是在存储设备上,因此元数据的读取往往是存储系统中最为频繁的。

当多个用户同时访问存储空间某个共享的存储单元或者数据结构时(例如FAT表),就有可能产生并发访问冲突。冲突的原因来源于用户对于共享数据的修改,如果所有用户都是读共享数据则不会产生问题,但一旦有用户对于数据进行修改时就会产生数据不一致的问题,这又分为几种特殊情况,第一如果只有一个用户修改数据,而其他用户只是使用数据,那么是否应该把更新数据广播给其他只读用户;第二,如果有多个用户同时修改数据,如何

确定所有更新中那个数据是最后有效写到存储单元中的,并且是否通知其他用户写失败。

因此对于一个支持多用户并发访问的可共享的存储空间必须提供并发操作语义,也就是在并发操作发生的情况下规范不同用户的行为。例如提供写排他锁机制,也就是同时只能允许一个更新操作。事实上POSIX标准中提供锁机制来保证并发存取。

1.5.2 存储空间和主机的关系

网络存储系统的出现,使得存储空间和使用存储空间主机之间的关系更加复杂。从存储空间的定义来看,存储空间三个要素:存储单元及其地址空间、元数据结构和存储空间操作,在网络存储系统中往往物理上相互分离。存储空间结构通过在存储空间元数据结构及其相应的操作实现,而操作往往涉及到谁操作,如何操作的问题。一个存储空间中也许对应着多个下层存储空间,而它们在物理上属于不同的主机系统。

从主机和存储空间之间的访问关系模式可分为主动存取模式和被动存取模式。 主动存取模式是指存储空间仅仅提供存取内部存储单元的接口操作和地址空间,对于存储空间内部的元数据操作和维护由存储空间所在的主机完成,也就是客户和存储空间通过请求/响应过程交互,表现为客户/服务器模型。事实上NAS就是主动存取模式。

被动存取模式是指存储空间的操作是由请求存储操作的主机完成的,存储空间提供的操作是以功能库的形式实现。例如磁盘卷和相应主机之间的关系。

现在讨论一下存储控制域(Storage Control Domain, SCD)的问题。

存储空间管理器也就是维护存储空间,响应对该存储空间的存取请求,完成请求和数据在存储空间上下层传递的主机(处理器)。

存储空间的入口点(entry)是指存储空间接受存储请求的入口,往往以标识的形式作为请求的参数。事实上存储空间的入口点也是存储空间管理器的服务点。

存储控制域就是某个主机可以采用被动存取模式访问的存储空间总和。也就是主机需要维护和管理的存储空间的总和,对于这个存储控制域的存储请求都由这个主机负责完成。这个主机是存储控制域所有存储空间的共同的管理器。主机是逻辑概念,实际可以是物理上的一个、多个主机或者单个处理器。

因此存储空间属于该空间管理器的存储控制域。一个存储空间只能属于一个主机的存储控制域。这说明存储空间和管理器之间是一对一的关系;而主机和存储空间的关系是一对多。

访问存取域是指如果某一主动存储空间可以被一个客户机访问,则称存储空间属于这个客户机的访问存取域。数据存储域(Data Access Domain, DAD)就是指一个处理器或者主机可以访问的存储空间的总和。

某一主机的数据存储域包括存储控制域和访问存取域。图 1.9展示了三个概念之间的关系。如果一个存储空间属于某一主机A的控制存取域,而属于另一个主机B的访问存取域。一般而言B通过A提供的接口实现对存储空间的访问。

对于主机系统而言,自己的存储子系统所有存储空间构成主机的存储控制域,在网络存储系统中,NAS设备对于自身的处理器构成一个存储控制域,而对其他可以访问NAS的主机而言,NAS设备是一个数据存储域,而SAN中的设备则可以包含在多个主机的存储控制域中,由于数据块存储空间并不提供并发操作语义,因此存储控制域的重叠会产生数据的共享冲突和数据一致性的问题。而数据存储域的重叠虽然也会产生数据共享冲突和数据一致性的问题,但可以在重叠的数据存储域中设置控制器或者并发操作语义避免冲突操作。

服务器数据存储域控制存取域访问存取域控制存取域存储空间A iSCSI 存储空间B(NAS,FTP)存储空间C(iSCSI)

图 1.12存储控制域、访问存储域和数据存储域之间的关系

需要说明的是存储控制域的形成。在主机系统中由于存储设备通过外部总线连结到主机系统总线上,因此,在物理上对于存储设备的控制权完全由相应的主机获得,具体的讲就是通过文件系统或者设备管理软件对存储器上的存储空间进行抽象和管理。现有的基于数据块存取的系统,虽然通过存储网络访问远端的存储设备,但是文件系统仍然认为这个数据块存储设备为自己所独占。即使远端存储设备是主动存储空间,但是完全按照传统的数据块操作语义,对于通过高层语义使用存储空间的存储客户而言还是被动存储空间。

一个存储空间如果同时属于一个或者多个存储控制域,那么存储空间就会产生存储控制冲突。因为每个域控制器都会按照自己执行次序存取数据,特别是在内存修改元数据,当访问同一存储单元时,会产生冲突;如果不同时间访问同一存储单位,由于其他处理机不知道存储单元中的数据已经被修改,那么会产生数据不一致的问题。

多个主机同时访问访问存取域中的共享存储空间时,如果一个存储单元内的数据在有效期内被修改,而其他可以访问此存储单元的主机并不知道此存储单元已经被修改,会产生数据一致性的问题。这个问题可以通过在共享存储空间中定义并发操作语义进行协调解决。

1.5.3 存储空间的合并

考虑到一个存储系统包括N个存储资源,每个存储资源作为一个独立的存储空间存在,这些存储空间可能有相同的或者不同的操作语义和存储结构,为了通过统一的方法存取这些存储资源,就需要在它们之上建立新的存储空间,使得用户存取数据时不必知道存储系统具体的组织结构和实施细节。显然不同的存储空间合并方式会对新存储空间的性能、可用性等产生巨大的影响。在本节我们称上级存储空间为父空间,下级存储空间为子空间。

(1)空间直接相加

如果两个或者多个子空间具有相同的组织形式,把每个子空间的地址空间通过叠加或者简单扩展统一成全局地址空间,全局地址空间中的每一个地址对应于子空间中特定的存储单元。则这种合并方式称为空间直接相加。

如果各个子空间是同构的,也就是对外提供的操作相同,在父空间的入口点增加子空间入口点的标识,能够请求通过父空间的入口点路由到子空间的入口点,由子空间完成具体的请求。这样的方式不用改变子空间结构和操作。子空间保持相对完整,构造出的父空间和子空间是同构的。

把多个树形子存储空间合并,每个子空间作为一棵子树挂接到父空间的树上。这样产生的新树形结构构成了父空间。而树上的节点构成了一个树形的命名空间。

在线性存储空间,每个子空间按照顺序线性编址,可以看成两级编址。首先定位那个子空间的入口点,其次再确定子空间中的偏移地址。

异构子空间同样可以采用空间直接相加的方法实现空间合并,但方法较同构子空间而言更加复杂。由于每个子空间的操作各不相同,基本的思路是父空间的入口点把请求操作本身作为路由信息,把请求转发到相应的子空间中进行处理。

空间直接相加的好处是不改变子空间的内部结构,不需要太多存储单元地址的转换。扩展性较好,某个子空间发生错误甚至失效都不会影响其他子空间的稳定;另外当有新的子空间加入时,只需在父空间的入口点增加路由信息。

但子空间的健壮性由子空间自己维护和保证,系统的整体性能主要由子空间的性能决定,这样并没有充分利用空间融合的优势,提高整体的可用性或者性能。

(2)变换合并

父空间中的每个存储单元和子空间的存储单元不存在简单的一一映射的关系,必须经过特定变换。父空间和子空间不一定同构。变换过程可以是简单的地址函数,也可以是复杂的寻址。

例如RAID1系统,父空间一个存储单元实际对应着两个或者多个子空间的存储单元。而文件存储空间就是在一个或者多个线性存储空间上实现了树形结构。

变换合并方法的缺点是扩展时需要空间的重构,扩展性相对较差;一个子空间的失效有可能会引起系统整体失效;请求路由比较复杂。

变换合并方法的优点可以定制父存储空间结构满足某种应用需要。例如利用多个子空间并发存取提高系统整体性能,例如RAID0就是把多个磁盘的空间通过组合之后构造成逻辑卷,逻辑卷中的一个分条对于不同磁盘上的条带,条带间的读写可以并行执行。这种变换在线性子系统中较为容易,只需把父空间的一个存储单元划分成几个子单元然后映射到不同的子空间存储单元。在树形空间中较为复杂,必须使用一个复杂的数据结构记录这种变换关系,事实上分布式文件系统的元数据服务器就是完成这个功能,例如Lustre。而且由于文件系统的最小单位是文件,因此只能同一目录的文件分散到不同的存储子空间中,在存取整个目录时才能产生并行的效果。

在考虑利用多个子空间提高整体可用性时,可以把一个父空间的存储单元完全映射到几个子空间的存储单元,也就是子空间相应存储单元互为镜像。

(3)异构存储空间的合并

如果子存储空间之间的内部结构和存取操作是不同的,则称为异构子存储空间。在这种情况下对于多个子空间进行合并,例如要求一个NAS服务器和iSCSI服务器给用户提供一个统一存储视图。一般的原则是父存储空间选择自己一种接口模式及其操作集,然后在内部实现和子空间不同存储结构之间的变换,把对自己的存取操作翻译为对子空间的操作语义;同时实现子存储空间地址空间整合。对于上面的例子,可以在iSCSI设备之上构建一个文件空间(格式化iSCSI卷),然后通过把它和NAS提供的文件空间合并。

1.5.4 存储空间的可用性

存储空间的可用性体现在两个方面,一个是存储空间整体可用性,指存储系统不会整体失效;另一方面是部分可用性,就是指系统一部分存储单元失效,只造成部分数据不可访问,而不会引起其他的数据失效。

在线性存储空间中,由于存储单元之间逻辑上相互独立,存储空间地址映射也较为简单,因此某些单元的失效仅仅局限于这些单元。对于树形存储空间而言,某个节点的访问,必须从根开始检索;子树的可用性往往依赖于上层节点的可用性,当子树失效时,一般不会引起其他部分的失效。

如果存储空间的存储单元和n个下级存储空间的存储单元有映射关系,这种关系包含两种类型;一是上下级存储单元存储的数据完全相同(可用性就是并集的关系),另一种关系


第一章 海量网络存储系统概述(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:会计基础教案4-1 企业主要经济业务核算 - 资金筹集业务的核算

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: