一种数据存储系统及其数据存储方法

文档序号:6334389阅读:105来源:国知局
专利名称:一种数据存储系统及其数据存储方法
技术领域
本发明涉及数据存储技术,尤其涉及一种数据存储系统及其数据存储方法。
背景技术
当前数据存储系统已得到普遍应用。数据存储系统按存储服务方式可分为直连 存储(DAS)、网络附加存储(NAS)以及存储区域网络(SAN)等,按照控制器数量可分为 单控制器存储、双控制器存储和多控制器存储等。对于单控制器数据存储系统,当发生控制器失效时,缓存中的数据将会丢失; 另外,在后端磁盘阵列失效时,数据也将全部丢失。因此,现有的单控制器数据存储系 统在控制器失效或者后端磁盘阵列失效时,数据丢失的问题需要得到解决。

发明内容
本发明所要解决的技术问题是需要提供一种数据存储技术,克服现有技术在控 制器或者后端磁盘阵列失效所导致的数据丢失的问题。为了解决上述技术问题,本发明首先提供了一种数据存储系统,至少包括第一 存储节点和第二存储节点,至少一个存储节点包含实际存储设备;各存储节点与应用节 点连接,为所述应用节点提供存储区域网络(SAN)服务;其中任一存储节点收到所述应用节点发送的写请求时,收到所述写请求的存储节点 用于将与所述写请求对应的数据发送到其他存储节点上备份,所述备份完成后将与所述 写请求对应的数据写到本地缓存中;含有实际存储设备的存储节点,用于收到所述应用节点发送的读请求时,在本 地响应所述读请求;不含实际存储设备的存储节点,用于收到所述应用节点发送的读请求时,在本 地响应所述读请求或者将所述读请求转发给其他存储节点。优选地,含有实际存储设备的存储节点收到所述读请求时,用于在本地缓存中 读取与所述读请求对应的数据以响应所述读请求,或者用于从自身包含的实际存储设备 中读取与所述读请求对应的数据到本地缓存以响应所述读请求。优选地,不含实际存储设备的存储节点收到所述读请求时,用于在本地缓存中 读取与所述读请求对应的数据以响应所述读请求,或者用于将所述读请求转发给其他存 储节点。优选地,每个存储节点各包含计算设备,所有计算设备之间建立通信连接,每 个计算设备上用于建立虚拟存储设备;具有实际存储设备的存储节点上的虚拟存储设备 的每个块,用于对应实际存储设备上的物理磁盘中的实际的块。优选地,本地缓存中不含与所述读请求对应的数据的存储节点,进一步用于在 响应所述读请求的过程中,将与所述读请求对应的数据保存到本地缓存。为了解决上述技术问题,本发明还提供了一种数据存储系统的数据存储方法,
4所述数据存储系统至少包括第一存储节点和第二存储节点,至少一个存储节点包含实际 存储设备;各存储节点与应用节点连接,为所述应用节点提供存储区域网络(SAN)服 务;该方法包括如下步骤任一存储节点收到所述应用节点发送的写请求时,收到所述写请求的存储节点 将所述写请求及对应的数据发送到其他存储节点上备份,所述备份完成后将与所述写请 求对应的数据写到本地缓存中;含有实际存储设备的存储节点,收到所述应用节点发送的读请求时,在本地响 应所述读请求;不含实际存储设备的存储节点,收到所述应用节点发送的读请求时,在本地响 应所述读请求或者将所述读请求转发给其他存储节点。优选地,含有实际存储设备的存储节点收到所述读请求时,在本地缓存中读取 与所述读请求对应的数据以响应所述读请求,或者从自身包含的实际存储设备中读取与 所述读请求对应的数据到本地缓存以响应所述读请求。优选地,不含实际存储设备的存储节点收到所述读请求时,在本地缓存中读取 与所述读请求对应的数据以响应所述读请求,或者将所述读请求转发给其他存储节点。优选地,所述数据存储系统中的每个存储节点各包含计算设备,所有计算设备 之间建立通信连接,每个计算设备上建立虚拟存储设备;具有实际存储设备的存储节点上的虚拟存储设备的每个块,对应实际存储设备 上的物理磁盘中的实际的块。优选地,本地缓存中不含与所述读请求对应的数据的存储节点时,进一步在响 应所述读请求的过程中,将与所述读请求对应的数据保存到本地缓存。与现有技术相比,本发明技术方案的实施例对缓存中的数据进行备份,或者对 缓存和磁盘阵列进行数据备份,解决了控制器失效或者磁盘阵列失效带来的数据丢失的 问题,可用多个计算机节点同步地备份同一实际存储设备,提高了可靠性。


图1是本发明实施例的一种数据存储系统的组成示意图;图2是图1所示实施例的数据存储系统的数据存储方法的流程示意图。
具体实施例方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应 用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。实施例一、一种数据存储系统如图1所示,本实施例至少包括两个存储节点,分别为第一存储节点110和第二 存储节点120;每个存储节点包含有计算设备,其中第一存储节点110包含第一计算设备 111,第二存储节点120包含第二计算设备121;每个存储节点的计算设备上运行存储管 理系统;所有存储节点中,至少一个存储节点包含实际存储设备,同一存储节点中的计 算设备与实际存储设备相连;本实施例是第一存储节点110包含第一存储设备112,其中该第一存储设备112比如可以是磁盘、磁盘阵列或者磁盘柜。各存储节点之间相互连接 并可相互通信。各存储节点通过网络130与至少一个应用节点140连接,为该(些)应 用节点140提供SAN(存储区域网络)服务。在本实施例中,所有存储节点的计算设备(第一计算设备111和第二计算设备 121)之间建立通信连接,每个存储节点的计算设备上运行的操作系统中建立有虚拟存储 设备和块数据缓存,在具有后端的第一存储设备112的第一存储节点110的第一计算设备 111的系统上,其虚拟存储设备的每个块(扇区)对应第一存储设备112上的物理磁盘中 实际的块(扇区)。任一存储节点收到应用节点发送的写请求时收到该写请求的存储节点用于将与该写请求对应的数据发送到其他存储节点上 备份,在该备份完成后将与该写请求对应的数据写到本地缓存中;含有实际存储设备的存储节点收到应用节点发送的读请求时首先用于查询本地缓存,对于本地缓存含有与该读请求对应的数据,则用于直 接从本地缓存读取与该读请求对应的数据,以响应该读请求;对于本地缓存不含与该读 请求对应的数据,则用于从自身所包含的实际存储设备中读取与该读请求对应的数据到 本地缓存,再用于将与该读请求对应的数据从该本地缓存拷贝到发送该读请求的请求者 的缓存,以响应该读请求;不含实际存储设备的存储节点收到应用节点发送的读请求时首先用于查询本地缓存,对于本地缓存含有与该读请求对应的数据,则用于直 接从本地缓存读取与该读请求对应的数据,以响应该读请求;对于本地缓存不含与该读 请求对应的数据,则用于向其他存储节点转发该读请求。如果本地缓存中不含与该读请求对应的数据,则在完成读请求操作后,还可以 进一步在将与该读请求对应的数据拷贝到请求者(SANTarget服务)的缓存时,一并将数 据保存到本地缓存,以提高下次读请求的应答速度。实施例二、一种数据存储方法结合图1所示的实施例一,如图2所示,本实施例主要包括如下步骤步骤S210,配置所有存储节点之间的通信参数和通信方法,并据此建立所有存 储节点之间的通信连接;步骤S220,在每个存储节点上建立一个虚拟存储设备,定义该虚拟存储设备的 写请求处理流程;该写请求处理流程为首先将与写请求对应的数据发送到其他存储节点上备 份,在备份完成并应答后再将与写请求对应的数据写到本地缓存中,完成写操作;每个存储节点对在其上所建立的虚拟存储设备的缓存使用高效的基数结构进行 保存,基数结构的叶子是最基本的缓存单元,一般为一个内存页,每个缓存单元定义一 个计数器记录写次数;每个存储节点在保存写数据时修改所涉及的缓存单元的写计数器值,修改方法 为(1)如果该缓存单元不存在,则申请分配一个缓存单元并将所分配的缓存单元的 计数器值置1 ;
(2)如果缓存单元上保存的数据已刷写到虚拟存储设备对应的物理介质(物理磁 盘)上,则将缓存单元的计数器值置1 ;(3)如果缓存单元上保存的数据为旧数据(前一次写请求所传输并保存到缓存单 元中的数据)还没刷写到虚拟存储设备上,将计数器值增1 ;对于最初接收写请求的存储节点(最先接收来自应用者的写请求的存储节点), 保存数据到本地虚拟存储设备的缓存中时还将存储数据的相应缓存单元进行原始标记, 比如标记为“原始请求”等;步骤S230,每个存储节点启动若干线程异步地刷写各自的虚拟存储设备的缓 存,刷写是按缓存单元进行;刷写完成后若检查该缓存单元是否进行了原始标记(比如 标记有“原始请求”),如果进行了原始标记则通知那些不具有实际存储设备的节点, 表示该缓存单元可能可以回收释放;通知内容包括标识该实际存储设备的标识(ID)信 息、每个缓存单元的索引位置及其写计数值;不具有实际存储设备的接收者(写请求的 接收者)查找其所属存储节点保存的该实际存储设备的缓存单元,若缓存单元的本地写 计数值与通知内容中的写计数值相同,则标记该缓存单元上的数据不为脏,即可以回收 释放,否则忽略不予释放;对于后者,即缓存单元的写计数器值与通知内容中的写计数 值不一致,其正常原因是应用者(应用节点)向该存储节点发出对该缓存单元的写请求, 从而增加了写计数器值,而还没完成转发到其他存储节点上备份,就接收到来自其他存 储节点的要求释放该缓存单元上旧数据的请求,这种情况下应该忽略该释放请求;步骤S240,存储节点接收到来自应用者的读请求,首先查询本地缓存,对于本 地缓存含有与该读请求对应的数据,则直接从本地缓存读取与该读请求对应的数据以完 成读请求;对于本地缓存不含与该读请求对应的数据,则分2种情况处理(1)收到该读请求的该存储节点具有实际存储设备,则首先从自身所包含的实际 存储设备中将与该读请求对应的数据读取到本地缓存,再将与该读请求对应的数据从本 地缓存拷贝到发送读请求的请求者(SANTarget服务)的缓存,完成读请求操作;(2)收到该读请求的该存储节点不具有实际存储设备,则向其他存储节点转发读 请求,以响应该读请求,完成读请求操作。如果本地缓存中不含与该读请求对应的数据,则在完成读请求操作后,还可以 进一步在将与该读请求对应的数据拷贝到请求者(SANTarget服务)的缓存时,一并将数 据保存到本地缓存,以提高下次读请求的应答速度。在本实施例中,当一个存储节点发生软硬件等故障无法提供服务时,其他具有 实际存储设备的存储节点的缓存单元及数据是同步的,可照常提供服务。如果其他存 储节点都不具有实际存储设备,即仅有有限的缓存单元,则不能继续提供服务,但是可 提供导出缓存单元中的脏数据的功能,即可将脏数据导出到文件或者其他虚拟存储设备 中,可以用于重写和修复数据的实现。在本发明的数据存储方法中,存储系统是由多个独立的智能计算和存储节点组 成,每个节点都建立该存储设备的缓存并可选择和实际的存储设备绑定。本发明的数据 存储方法,可从任一节点对存储设备进行读写,对于写操作,数据将同步地备份到其他 节点上。对于具有实际存储设备的节点,缓存刷写到设备上后将通知镜像集群中没有实 际存储设备的节点释放缓存;对于没有实际存储设备的节点,对读操作的请求将转发给
7具有实际存储设备的节点,并可将读数据保存到本地节点提高下次读速度。在本发明的数据存储方法中,每个基本缓存单元使用一个计数器记录连续写的 次数,当写一个基本缓存单元时,若该单元的缓存还没有刷写到底层存储设备上,则该 计数器增1,若该单元的缓存已经刷写到底层存储设备上,则该计数器值重置为1。本发明方法中,缓存刷写到设备上后通知镜像集群中没有实际存储设备的节点 时,通知的内容包括可释放的缓存单元的索引和缓存单元的计数器值。在接收端,检查 本节点缓存中可释放缓存单元的计数器值,若该计数器值和通知内容中的相同,则设置 该缓存单元状态不为脏(即可以回收),若该计数器值和通知内容中的计数器值不相同, 则保持该缓存单元状态为脏,不予回收。本发明方法中,没有实际存储设备的节点上的写缓存是可导出的,当集群中唯 一具有实际存储设备的节点由于掉电等原因停止服务但是后端存储设备还没有损坏时, 可搬迁到有效的节点(存储有数据的存储节点)上,将其他节点导出的缓存刷写到存储设 备上,保证已完成的写数据的一致性。本发明技术方案通过在多个计算和存储节点间同步存储设备的写缓存,实现了 存储设备的多点缓存镜像并在多个节点上将缓存写到其本地实际存储设备,实现了存储 设备的多点备份,保护单节点故障发生时数据一致性和可用性,提高数据和存储服务可靠性。
权利要求
1.一种数据存储系统,其特征在于,至少包括第一存储节点和第二存储节点,至少 一个存储节点包含实际存储设备;各存储节点与应用节点连接,为所述应用节点提供存 储区域网络(SAN)服务;其中任一存储节点收到所述应用节点发送的写请求时,收到所述写请求的存储节点用于 将与所述写请求对应的数据发送到其他存储节点上备份,所述备份完成后将与所述写请 求对应的数据写到本地缓存中;含有实际存储设备的存储节点,用于收到所述应用节点发送的读请求时,在本地响 应所述读请求;不含实际存储设备的存储节点,用于收到所述应用节点发送的读请求时,在本地响 应所述读请求或者将所述读请求转发给其他存储节点。
2.根据权利要求1所述的系统,其特征在于含有实际存储设备的存储节点收到所述读请求时,用于在本地缓存中读取与所述读 请求对应的数据以响应所述读请求,或者用于从自身包含的实际存储设备中读取与所述 读请求对应的数据到本地缓存以响应所述读请求。
3.根据权利要求1所述的系统,其特征在于不含实际存储设备的存储节点收到所述读请求时,用于在本地缓存中读取与所述读 请求对应的数据以响应所述读请求,或者用于将所述读请求转发给其他存储节点。
4.根据权利要求1所述的系统,其特征在于每个存储节点各包含计算设备,所有计算设备之间建立通信连接,每个计算设备上 用于建立虚拟存储设备;具有实际存储设备的存储节点上的虚拟存储设备的每个块,用 于对应实际存储设备上的物理磁盘中的实际的块。
5.根据权利要求2或3所述的系统,其特征在于本地缓存中不含与所述读请求对应的数据的存储节点,进一步用于在响应所述读请 求的过程中,将与所述读请求对应的数据保存到本地缓存。
6.一种数据存储系统的数据存储方法,其特征在于,所述数据存储系统至少包括第 一存储节点和第二存储节点,至少一个存储节点包含实际存储设备;各存储节点与应用 节点连接,为所述应用节点提供存储区域网络(SAN)服务;该方法包括如下步骤任一存储节点收到所述应用节点发送的写请求时,收到所述写请求的存储节点将所 述写请求及对应的数据发送到其他存储节点上备份,所述备份完成后将与所述写请求对 应的数据写到本地缓存中;含有实际存储设备的存储节点,收到所述应用节点发送的读请求时,在本地响应所 述读请求;不含实际存储设备的存储节点,收到所述应用节点发送的读请求时,在本地响应所 述读请求或者将所述读请求转发给其他存储节点。
7.根据权利要求6所述的方法,其特征在于含有实际存储设备的存储节点收到所述读请求时,在本地缓存中读取与所述读请求 对应的数据以响应所述读请求,或者从自身包含的实际存储设备中读取与所述读请求对 应的数据到本地缓存以响应所述读请求。
8.根据权利要求6所述的方法,其特征在于不含实际存储设备的存储节点收到所述读请求时,在本地缓存中读取与所述读请求 对应的数据以响应所述读请求,或者将所述读请求转发给其他存储节点。
9.根据权利要求6所述的方法,其特征在于所述数据存储系统中的每个存储节点各包含计算设备,所有计算设备之间建立通信 连接,每个计算设备上建立虚拟存储设备;具有实际存储设备的存储节点上的虚拟存储设备的每个块,对应实际存储设备上的 物理磁盘中的实际的块。
10.根据权利要求7或8所述的方法,其特征在于本地缓存中不含与所述读请求对应的数据的存储节点时,进一步在响应所述读请求 的过程中,将与所述读请求对应的数据保存到本地缓存。
全文摘要
本发明公开了一种数据存储系统及其数据存储方法,克服现有技术在控制器或者后端磁盘阵列失效所导致的数据丢失的问题,其中该系统至少包括两个存储节点,至少一个存储节点包含实际存储设备;任一存储节点收到应用节点发送的写请求时,将与写请求对应的数据发送到其他存储节点上备份,备份完成后将与写请求对应的数据写到本地缓存中;含有实际存储设备的存储节点收到应用节点发送的读请求时在本地响应读请求,不含实际存储设备的存储节点收到应用节点发送的读请求时,在本地响应读请求或者将读请求转发给其他存储节点。本发明解决了控制器失效或者磁盘阵列失效带来的数据丢失的问题,提高了可靠性。
文档编号G06F3/06GK102014153SQ201010519599
公开日2011年4月13日 申请日期2010年10月19日 优先权日2010年10月19日
发明者张会健, 施培任, 李海东 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1