首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种基于网络磁盘阵列的高性能海量存储系统

一种基于网络磁盘阵列的高性能海量存储系统

引 言

现代信息技术的飞速发展, 导致了用户对存储产品和存储服务需求的爆炸性增长。目前计算机存储系统的性能远远不能满足许多实际应用的需求, 因而如何建立高性能的存储系统成为人们关注的焦点, 海量信息存储技术旨在研究大容量数据存储的策略和方法, 其追求的目标在于扩大存储容量、提高存取速度、保证数据的完整性和可靠性、加强对数据(文件) 的管理和组织等。

网络磁盘阵列系统(Net-RAID) 采用存储设备直接联网的体系结构, 改变了传统的以服务器为中心的迂回传输模式,使所有网络请求由服务器统一管理, 而数据则由磁盘阵列直接通过网络接收和发送, 从而避免了数据流在服务器与存储设备之间的往返传送和存储转发, 消除了服务器中CPU、内存以及I/O 总线所存在的潜在瓶颈, 极大的提高了系统带宽和服务器的平均响应速度。

以此网络磁盘阵列作为基本单元, 本文构建出一种高性能的海量存储系统, 其文件集中管理和数据分布存储的体系结构不仅加快了数据传输速度、降低了存储管理开销, 同时也实现了命令与数据分流、扩容与增速同步的目标, 从而大大提高了整个存储系统的性能。
CMDS海量存储系统总体设计

体系结构
传统的集中式存储体系结构下, 网络用户访问文件服务器上的数据资源时, 数据必须在存储设备和文件服务器之间进行多次的存储转发。因此, 服务器的CPU、主存、存储设备、主从通道都有可能成为系统的瓶颈。而且, 无法实现共享存储, 系统的可扩展性也受到很大的限制。采用具有新型I/O通道体系结构的存储系统可以极大地提高性能, 但一味地依靠扩展系统的硬件性能终究会有上限。因此, 传统存储系统体系结构虽可提供大的存储容量, 但不适合于构造海量存储系统。构造一个高性能的海量存储系统不仅需要极大的存储容量和高I/O带宽, 还必须具有高可扩展性、高可用性、可管理性以及低的价格。

采用分布式存储系统结构是实现海量信息存储的最好选择。将数据分割(比如说块)分别存放在不同的存储设备上, 利用对不同存储设备的并行操作来提高系统的性能。但分布式系统的存储管理存在很大的难度, 统计数据表明, 在分布环境下, 存储管理大约要消耗存储成本总额的55%。集中式的存储则能减少管理开销和提高管理质量。可见, 如果采用集中式的存储管理, 特别是对于海量存储系统中大量的存储资源的管理, 将可以极大地降低存储管理的开销。

显然, 要想解决海量信息的有效存储和管理, 必须构造一种全新的存储系统体系结构, 从根本上解决现有存储系统体系结构所存在的问题。

针对这种情况, 本文提出了一种文件集中管理、数据分布存储的高性能海量存储系统(centralized file Managementand Dist ributed data StorageMass Storage System ) CMDSMSS, 其体系结构如图1所示, 它同时具备集中式存储系统和图1CDMS海量存储系统体系结构图分布式存储系统两者的优点。该系统由文件服务器和多台网络磁盘阵列(Net-RAID) 构成, 所有的N et-RAID按传统的DAS方式通过外设通道(SCSI或FC, 也可以采用网络通道)挂接在文件服务器上, 然后再通过网络连接挂接在包交换网络上。 通过建立磁盘阵列与网络用户间的直接联系, 使得磁盘阵列的命令与数据分流, 免除了数据流在文件服务器与磁盘阵列之间的存储转发, 克服了原有系统的文件服务器瓶颈。如果在文件服务器上接入多台(理论上可多达90台)Net-RAID, 则每接入一台Net-RAID 便扩展了一个网络通道, 多个网络通道可以并行传输以提高系统的I/O带宽, 实现了容量和速度同步扩展。种体系结构充分体现了多通道、并行处理的原则, 它不仅在很大程度上解除了I/O操作对文件服务器性能的束缚, 也极大地提高了存储系统的整体性能。 同时,它的集中数据管理方式能节约大量的管理费用。


文件组织
CMDS海量存储系统的文件组织可以分成两种形式:
(1)Net-RAID作为独立的存储单元, 每台Net-RAID在文件服务器上具有单独的目录节点, 每个节点上可以建立不同的文件系统, 存储不同类型的文件(如视听、文本等), 并各自处理用户数据的存取和网络传输。当网络用户对不同的目录结点发出请求时, 多个请求可以在多个阵列上并行服务。

(2) 多个Net-RAID节点上的存储空间被虚拟成一个存储空间的单一逻辑视图, 数据分块存放在多个存储节点上。随着存储节点的增加, 不仅系统的存储容量得到了扩大, 而且有助于提高系统的性能。具体来讲, 多个小数据量的请求, 可以由多个存储节点并行地独立完成, 从而提高系统的吞吐量。一个大数据量的请求, 数据分布在多个存储节点上, 多个存储节点并行操作, 可以提高单个请求的数传率。灵活的使用方式可以满足不同的使用环境, 既可以满足事务处理等多个小数据量的突发请求, 也可以满足大数据量的连续请求(如媒体流)。我们主要研究第二种文件组织形式, 它具有以下特点(如图2所示)。



(1) 独立的文件组织管理器
文件组织管理器负责监视文件组织系统中的所有操作,并为网络用户提供数据描述。当一个网络用户试图存取数据时, 它通过数据表示向文件组织管理器发出请求, 文件组织管理器启动它的存取控制机制判断该网络用户是否有存储这一数据的权限, 然后再检查是否有其他用户锁定这一数据。如果网络用户不能存取数据, 文件组织管理器就会向网络用户发出拒绝或错误信息。如果网络用户拥有存取权限并没有被文件锁定拒绝, 文件组织管理器就通过数据结构判断数据的网络地址(即数据所在的存储节点在CMDS海量存储系统中的位置, 因为数据位置不仅仅是逻辑块地址, 还包括附加的网络地址或存储节点的名称) 和存储位置, 然后将其传送到网络用户。网络用户接收到位置信息后重新组织数据结构, 然后通过网络通道直接与存储子系统交互并存取数据。此时既可以采用基于NFS或CIFS的文件I/O进行交互, 也可以采用基于SCSI协议或FC协议的块I/O进行交互。独立的文件组织管理器体现的就是一种集中管理的思想, 以便于降低管理开销提高管理质量。

(2) 分布式的数据结构和数据存储
在网络存储系统的文件组织系统中, 寻址模式决定了网络地址及存储地址的存储位置。CMDS海量存储系统中的数据结构和数据分布存储在存储系统中的多个存储节点上, 所有使用该系统的网络用户都使用同一个文件组织系统映像。该系统通过使用数据结构来实现这种映像, 其数据结构将所有存储节点的网络地址作为数据寻址运算法则的一部分。由于采用分布式的数据结构和数据存储, 该系统可以使用RAID算法在存储系统中处理文件组织和数据冗余。 因此,它采用分块技术将目录数据、文件数据和数据结构跨越存放在多个存储节点上。由于文件数据分块冗余存放在多个存储节点上, 使得存储系统中的某一个存储节点发生错误时仍然可以继续操作。 同时, 通过增加存储节点的数量, 可以在系统结构上增加物理数据通道的并行度来提高系统的性能。
 
文件I/O与块I/O
图3 表示来自网络用户的文件I/O与块I/O在目标设备上的数据流向。 对于文件I/O的目标设备而言,Linux中的虚拟文件系统(VFS)分别管理向网络用户提供文件共享的网络文件系统和控制本地存储设备上的数据组织的本地磁盘文件系统。当用户空间的应用程序接收到来自网络用户的文件I/O请求时, 会将其交给VFS, 并由VFS 找到相应的磁盘文件系统, 然后由磁盘文件系统通过查找索引结点信息将文件I/O请求转换成块I/O, 最后通过卷管理器和块设备驱动程序来访问相应的数据。对于块I/O的目标设备, 可以不需要任何文件系统, 因为来自网络用户的块I/O请求本身就包含了请求数据在目标设备上的块地址信息(此即文件组织系统中的数据结构) , 因此, 当该设备通过TCP/IP协议栈接收到网络用户的I/O请求后, 可以直接将该I/O请求转交给卷管理器, 然后通过磁盘的设备驱动程序就可以访问相应的数据。



由上面的分析以及图3可知, 块I/O相对于文件I/O避免了用户空间和系统空间的切换, 避免了所有的I/O请求及其数据穿越网络文件系统、虚拟文件系统以及本地磁盘文件系统的开销, 同时还避免了磁盘文件系统将文件I/O转换成块I/O时查询索引结点的开销。因此, CMDS海量存储系统图4CMDS海量存储系统软件结构采用块级I/O, 直接通过数据的物理地址信息来访问存储设备(Net-RAID群) , 使数据检索与访问的速度优于采用文件I/O时的速度。


CMDS海量存储系统的软件结构与工作流程

CMDS海量存储系统软件结构如图4所示。它的主要功能是实现服务器、海量存储系统和客户端三者之间的通信和协同。CMDS软件可以分为三个层次:通道控制层、命令控制层和网络通讯层。

通道控制层
分为驻留服务器的和驻留在Net-RAID群底层的通道控制器。这一层负责服务器与Net-RAID群间的命令和控制信息的传递。

服务器中的通道控制器用于建立服务器与Net-RAID群的命令通道。在传统的存储服务模式下, 它将上层系统解析后的所有I/O命令发至存储设备, 并接受存储设备执行后的返回结果。而对于CMDS海量存储系统, 驻留在服务器中的通道控制器只执行其中涉及控制文件系统结构和文件属性的I/O任务; 并且, 服务器端的通道控制器直接利用服务器现有的SCSI通道驱动程序。Net-RAID群中的通道控制器, 负责接收来自服务器主从外设通道的所有I/O命令和消息, 将执行结果回送给服务器。
继承事业,薪火相传
返回列表