CN106227464B - 一种双层冗余存储系统及其数据写入、读取及恢复方法 - Google Patents

一种双层冗余存储系统及其数据写入、读取及恢复方法 Download PDF

Info

Publication number
CN106227464B
CN106227464B CN201610557291.3A CN201610557291A CN106227464B CN 106227464 B CN106227464 B CN 106227464B CN 201610557291 A CN201610557291 A CN 201610557291A CN 106227464 B CN106227464 B CN 106227464B
Authority
CN
China
Prior art keywords
data
node
check
verification
caching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201610557291.3A
Other languages
English (en)
Other versions
CN106227464A (zh
Inventor
刘建亮
刘振军
方沛
贾思懿
郭明阳
许鲁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
Original Assignee
Tianjin Zhongke Bluewhale Information Technology Co ltd
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin Zhongke Bluewhale Information Technology Co ltd, Institute of Computing Technology of CAS filed Critical Tianjin Zhongke Bluewhale Information Technology Co ltd
Priority to CN201610557291.3A priority Critical patent/CN106227464B/zh
Publication of CN106227464A publication Critical patent/CN106227464A/zh
Application granted granted Critical
Publication of CN106227464B publication Critical patent/CN106227464B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种双层冗余存储系统及其数据写入、读取及恢复方法,该双层冗余存储系统包括冗余组,该冗余组包括至少两个数据节点、主校验节点和从校验节点,每个数据节点包括第一缓存、第一存储单元及第二存储单元,主校验节点包括第二缓存、第一RAID6处理单元及主校验存储单元,从校验节点包括第三缓存、第二RAID6处理单元及从校验存储单元,该写入方法包括:该冗余组接收来自一客户端的写请求数据,该数据节点、该主、从校验节点分别对该写请求数据进行缓存;该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;该主、从校验节点分别对其缓存的数据进行删除。

Description

一种双层冗余存储系统及其数据写入、读取及恢复方法
技术领域
本发明涉及计算机网络存储领域,特别涉及一种双层冗余存储系统及其数据写入、读取及恢复方法。
背景技术
随着信息系统的发展,存储集群是海量数据存储的重要载体,对数据可靠性和可用性要求很高。数据价值的重要性使得企业和个人都难以容忍数据的丢失,大型商业应用对连续性存储服务的需要使得数据可用性问题更加突出。然而,存储集群包含大量软硬件,发生故障很正常,存储集群在数据“可靠性”方面需要能够容忍多个故障,在数据“可用性”方面需要能够对故障尽快的处理。针对这些需求,主流商用系统通常在存储集群中使用3副本,比如GFS和HDFS。
3副本技术容忍2份数据失效来保障高可靠,然而增加的冗余开销导致了大规模系统成本的上升和存储密度的降低。
为了解决3副本技术的挑战,可以采用纠删码—RAID6技术,它具有相同的数据可靠性,低廉的存储成本等特点。RAID6技术的引入,除保留原有的数据可靠性级别外(RAID6容忍2份数据失效),由冗余数据产生的存储成本和存储带宽也能得到进一步的降低。
虽然RAID6技术解决了数据可靠性问题,但RAID6技术本身存在小写更新性能问题,使得存储集群中采用的RAID6集中式冗余管理技术存在性能瓶颈,而且RAID6控制器故障会直接影响数据访问的中断。
副本和纠删码技术互有优势,可以将二者进行有效结合构建高可靠存储系统。AutoRAID使用一个控制器将最近使用的数据以双副本RAID1存储在高性能磁盘中,将不太常用的数据放在以RAID5存储的高性价比磁盘中。AutoRAID中RAID1与RAID5数据是独立存储的,在存储集群环境下将海量数据从RAID1迁移到RAID5上,会带来巨大的网络带宽和磁盘带宽消耗,不适合在分布式环境下使用。而且AutoRAID的控制器只容忍1份数据失效,可靠性不足,其构建方法不适用于容忍多节点故障的环境。
专利文献1(公开号为:CN102662607A)公开了一种RAID6级别混合磁盘阵列及其性能加速和可靠性提高方法,包括数个固态盘,用于存储数据;两个磁盘,各磁盘中的部分空间作为校验盘空间,剩余空间作为镜像日志区,且镜像日志区中数据块的位置索引信息记录在一块日志链表中;和管理控制单元,用于控制上层应用程序对该阵列的访问,具体包括:监控模块、数据分发模块和数据回收模块,监控模块用于监控应用程序的I/O访问并识别出其中的写数据,数据分发模块用于将监控模块识别到的写数据分发到固态盘或镜像日志区中,数据回收模块用于将写数据从镜像日志区回收至固态盘。但是上述方法属于单节点系统解决RAID6性能问题,在面向存储集群级别系统时,仍然无法解决现有的技术中RAID6集中式冗余管理方式性能瓶颈的问题以及节点故障影响数据正常读写的问题。
发明内容
针对现有技术的不足,本发明的目的在于,实现3副本与RAID6的双层冗余以降低冗余开销。
进一步的,保证在各种情况下的数据正常读写。
更进一步的,降低了网络带宽的消耗。
为解决上述问题,本发明提出了一种基于双层冗余存储系统的数据写入方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该冗余组接收来自一客户端的写请求数据,其中,该数据节点、该主、从校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该主、从校验节点分别对其缓存的数据进行删除。
本发明还提出了一种基于双层冗余存储系统的数据写入方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该数据节点故障且该冗余组接收来自一客户端的写请求数据时,由该主校验节点和该从校验节点接收该写请求数据,该主、从校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据;
步骤3,该主、从校验节点分别对其缓存的数据进行删除。
本发明还提出了一种基于双层冗余存储系统的数据写入方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该主校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该从校验节点分别对该写请求数据进行缓存;
步骤2,该从校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该从校验节点对其缓存的数据进行删除。
本发明还提出了一种基于双层冗余存储系统的数据写入方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该从校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该主校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该主校验节点对其缓存的数据进行删除。
本发明还提出了一种基于双层冗余存储系统的数据读取方法,该双层冗余存储系统包括至少一个冗余组,每个该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该数据节点故障且该冗余组接收来自一客户端的读数据请求时,判断该主校验节点的第二缓存中判断是否存在与该读数据请求匹配的目标数据,如果存在,执行步骤2,如果不存在,执行步骤3;
步骤2,从该主校验节点的第二缓存中提取该目标数据,并发送至该客户端;
步骤3,该主校验节点提取其所存储的第一校验数据并从该从校验节点读取一第二校验数据,利用该第一校验数据以及该第二校验数据进行RAID6恢复运算,以获得与该读数据请求匹配的目标数据并将其发送至该客户端。
本发明还提出了一种基于双层冗余存储系统的数据读取方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
当仅该主校验节点故障、当仅该从校验节点故障、当该主、从校验节点均故障或当该数据节点、主校验节点和从校验节点均未故障时,如该冗余组接收来自一客户端的读数据请求,该冗余组从该数据节点读取与该读数据请求匹配的目标数据,并发送至该客户端,不利用主校验节点进行RAID6计算。
本发明还提出了一种双层冗余存储系统,包括:
至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点;
每个该数据节点包括第一处理单元、第一缓存、第一存储单元以及第二存储单元;
该主校验节点包括第二处理单元、第二缓存、第一RAID6处理单元以及主校验存储单元;
该从校验节点包括第三处理单元、第三缓存、第二RAID6处理单元以及从校验存储单元;
其中,该第一缓存、该第二缓存和该第三缓存用于对该冗余组接收到的写请求数据进行缓存,该第一RAID6处理单元用于对该第二缓存中缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该第一存储单元用于对该写请求数据进行存储。
本发明还提出了一种基于双层冗余存储系统的数据节点恢复方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该主校验节点收集冗余组中需要恢复的数据节点的第一存储单元当前所应存储的第一目标数据;
步骤2,该主校验节点从该第二缓存中提取所述目标数据,并发送至该需要恢复的数据节点,由数据节点的第一存储单元进行存储;
步骤3,该主校验节点收集需要恢复的数据节点的第二存储单元中当前所应存储的第二目标数据;
步骤4,主校验节点的第一RAID6处理单元读取冗余组中另一数据节点和主校验逻辑卷中已完成冗余计算的数据,据以重构该第二目标数据,并发送至需要恢复的数据节点的第二存储单元。
本发明还提出了一种基于双层冗余存储系统的单个校验节点恢复方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该第一RAID6处理单元收集冗余组内所有数据节点的已完成冗余计算的数据;
步骤2,所有数据节点将所述已完成冗余计算的数据返回给该主校验节点;
步骤3,主校验节点重构需要恢复的第一校验数据或第二校验数据,主校验节点将重构得到的第一校验数据发送到主校验存储单元,或者,主校验节点将重构得到的第二校验数据发送到从校验存储单元。
本发明还提出了一种基于双层冗余存储系统的双校验节点恢复方法,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,阻塞所有数据节点的用户访问;
步骤2,所有数据节点将其第一存储单元的数据迁移至该第二存储单元;
步骤3,数据节点恢复用户访问;
步骤4,主校验节点从所有数据节点读取该第二存储单元中的数据以进行RAID6冗余计算,得到第一校验数据以及第二校验数据,主校验节点将该第一校验数据发送到主校验存储单元,将该第二校验数据发送到从校验存储单元。
本发明基于3副本和RAID6双层冗余提高集群可靠性的存储系统和方法,将应用数据首先以3副本的形式存储,然后再“原地”转化为RAID6存储。该过程既解决了RAID6集中式冗余管理方式性能瓶颈的问题,降低了网络带宽的消耗,又能保证在节点故障情况下数据访问的正常进行。
本发明的效果在于:
(1)本发明将3副本存储放于RAID6冗余计算之前,使得应用的数据读写不受RAID6处理单元的影响;借助于缓存的聚合功能,实现异步冗余计算,降低了RAID6更新的小写性能问题,解决RAID6集中冗余管理方式中控制节点成为性能瓶颈的问题;
(2)存储系统由多个冗余组组成,一个冗余组为3副本和RAID6的双层冗余;节点控制从逻辑上分为数据节点与主、从校验节点,其中主校验节点是一个冗余组的冗余计算节点,从校验节点是备用的冗余计算节点;
(3)读请求由数据访问点的副本层获取数据,性能可以不受冗余计算影响;对于写请求数据访问点直接将数据写入副本层,等待缓存异步推动RAID6的带外冗余计算。
附图说明
图1是本发明的基于3副本和RAID6双层冗余的原理示意图;
图2是本发明的冗余组的轮转示意图;
图3为本发明的双层冗余存储系统的结构示意图;
图4是本发明的正常情况下的基于双层冗余存储系统的数据写入方法的流程图;
图5是本发明的数据节点故障时的基于双层冗余存储系统的数据写入方法的流程图;
图5A所示为数据节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图;
图6是本发明的主校验节点故障时的基于双层冗余存储系统的数据写入方法的流程图;
图6A所示为主校验节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图;
图7是本发明的从校验节点故障时的基于双层冗余存储系统的数据写入方法的流程图;
图7A所示为从校验节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图;
图8是本发明的数据节点故障时的基于双层冗余存储系统的数据读取方法的流程图;
图8A所示为主、从校验节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
(一)系统结构
图1是本发明的基于3副本和RAID6双层冗余的原理示意图。图2是本发明的冗余组的轮转示意图。图3为本发明的双层冗余存储系统的结构示意图。
本发明利用3副本和RAID6混合冗余构建存储集群,也就是存储系统。集群内包括至少一个冗余组,每个冗余组内包括至少两个数据节点、一主校验节点和一从校验节点,各个节点之间通过网络连接,由ISCSI实现。其中,本发明所述的“节点”,可以是服务器的存储设备。
具体来说,数据节点负责数据的存储。数据节点由数据节点镜像处理单元、数据节点缓存(第一缓存)以及副本逻辑卷(第一存储单元)、RAID6逻辑卷(第二存储单元)组成,RAID6逻辑卷是实际存储数据的磁盘阵列。
主/从校验节点负责RAID6冗余计算。主/从校验节点包括主/从校验镜像处理单元、主/从校验缓存(第二/三缓存)、负责组内RAID6计算的RAID6处理单元(第一/二RAID6处理单元)和存储RAID6计算所得到的校验信息的校验逻辑卷(主/从校验存储单元)。主校验节点包括第一校验逻辑卷(P逻辑卷),从校验节点包括第二校验逻辑卷(Q逻辑卷)。
其中,各个节点内的缓存为内存缓存和磁盘缓存组成的多层缓存结构,这样的多层缓存结构能够减少小写更新带来的磁盘带宽消耗。
主校验节点的RAID6处理单元负责异步冗余计算。从校验节点备用。
一个冗余组内数据节点和校验节点的负载不同,为了负载均衡,不同冗余组可以采用轮转的方式共享物理节点。故而图2中显示了三个冗余组,第一个冗余组的校验节点是节点3和节点4,第二个冗余组的校验节点是节点1和节点2,而第三个冗余组的校验节点是1和节点3。
冗余组间的冗余计算互不干扰,可以并行执行。该系统结构的主要特点:
(1)数据分层存储,数据的三个副本分别存储在数据节点、主校验节点、从校验节点,3副本与RAID6协作对不同存储层数据提供可靠性保证;
(2)冗余组为可靠性保证的基本单位,并且冗余组间逻辑上相互独立,冗余组内异步冗余计算;
(3)冗余组内节点分类,即分为数据节点,主校验节点和从校验节点。
由此,本发明在3副本和RAID6的基础上,将两种冗余方式进行结合,在一个冗余组内,前端使用3副本方式,通过各镜像处理单元将写请求数据一份写入数据节点的数据节点缓存中,另外两份数据分别写到远端主、从校验节点的缓存中,形成3副本。其中,写到数据节点的数据将写入缓存,后续会写入副本逻辑卷,写到远端主校验节点的数据将与对应冗余组的其他数据节点的数据一起在缓存中聚合组成RAID6冗余条带,异步进行冗余计算,“原地”转换为RAID6,在RAID6校验计算完成后将生成的两个校验分别写到主、从校验节点的校验逻辑卷中,然后异步删除掉主、从校验节点的缓存中的2份冗余副本。该过程中只有数据节点存储的副本数据写入副本逻辑卷中,主从校验节点的冗余副本数据在缓存中最终删除。
(二)数据访问流程
在网络存储系统中,RAID包括正常、降级、重构和毁坏四种状态。其中的正常是指系统的各节点无故障;降级是指有一个或两个节点故障,但故障节点存储的数据可以由其他节点上的数据重构得到;重构是指修复后,用其他节点上的数据将故障节点存储的数据恢复到新加入的节点;降级和重构状态数据都不会丢失;毁坏是指两个节点以上故障,超出了系统冗余能力,导致数据丢失。下面将对前面的三种状态下的读写操作过程进行具体的说明。冗余组的工作原理是相同的,下面将以一个冗余组为例,对冗余组内的数据访问流程进行详细描述。
1、正常状态下的数据写
正常状态下各个节点均可正常读写。当客户端欲对图3所述存储系统进行数据写入操作时,客户端发出一写请求数据。而正常状态下的存储系统以数据节点作为默认的数据访问点。如图4所示为本发明的正常状态下的一种基于双层冗余的数据写入方法的流程图。
步骤1,客户端发出一写请求数据,其中,该数据节点、该主、从校验节点分别对该写请求数据进行缓存。
具体来说,步骤1包括:
步骤101,数据节点通过镜像处理单元将该写请求数据写入数据节点缓存。
步骤102,数据节点通过镜像处理单元还将该写请求数据发送至该主校验节点和从校验节点。步骤101、102可并行执行。
步骤103,该主校验节点通过其镜像处理单元将该写请求数据写入主校验缓存,从校验节点通过其镜像处理单元将该写请求数据写入从校验缓存。
由于对于一份写请求数据实现了三次存储,则存储系统实现了3副本RAID1的存储方式。
当该主、从校验节点分别对该写请求数据实现缓存后,向该数据节点发送写完成信息。该数据节点在收到该写完成信息且写请求数据也写入该数据节点缓存后,数据节点镜像处理单元返回写完成信息至该客户端,以报告该客户端数据写入完成。事实上,此时写入并未完全完成,仅实现了3副本的写入,后续需等待缓存异步推动RAID6冗余计算,但是此时报告该客户端数据写入已完成,有助于释放客户端等待进程,提高客户端的操作效率,改善客户端的用户体验。
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
具体来说,以数据节点-1为例进行说明,该数据节点缓存中数据会定时回刷到副本逻辑卷中。而该主校验缓存根据一缓存策略对该主校验缓存中的缓存数据进行合并,且当该主校验缓存符合回写条件时,RAID6处理单元对该主校验缓存中的缓存数据进行RAID6计算以获得该第一校验数据P与该第二校验数据Q,RAID6处理单元将该第一校验数据P存入该主校验节点的主校验逻辑卷中,将该第二校验数据Q通过网络发送至该从校验节点,并存入从校验逻辑卷中。
第一校验数据P、第二校验数据Q存储完毕后,该主校验节点的RAID6处理单元通过对应数据节点-1的D1端口向该数据节点-1发出数据迁移命令,使得该数据节点将存储在副本逻辑卷中的该写请求数据迁移到该数据节点的RAID6逻辑卷中,并向该主校验节点发送迁移完毕信号。迁移之后只有RAID6逻辑卷中有数据,但是副本逻辑卷依然可以访问这些数据。该主校验节点的RAID6处理单元向上层发出冗余计算完成信号,继续执行步骤3。
另外,前述缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
RAID6算法在处理非全条带写数据时,需要读取RAID6逻辑卷中的旧数据来计算校验,而利用该缓存策略可以最大程度聚合数据为全条带,减少由于非全条带而造成的小写更新带来的磁盘带宽消耗。
步骤3,该主、从校验节点分别对其缓存的数据进行删除。
根据该冗余计算完成信号,主校验节点的镜像处理单元删除该主校验缓存中的写请求数据,同时,主校验节点的RAID6处理单元通知该从校验节点删除从校验缓存中的写请求数据。
此时,存储系统中不再存储三个副本,而是通过存储一个副本以及第一、二校验数据,为后续可能发生的节点故障提供了数据安全保障。
另外,本发明仅在将写请求数据转发至主/从校验节点时利用网络带宽资源,后续并不需要再次利用网络传输该写请求数据,故而对网络带宽的消耗较低,效率较高,且由于本发明的存储系统结构不需要反复利用网络传输数据,故而适合应用于分布式系统。
2、正常状态下的数据读
在所有节点均未出现故障时,数据节点是默认的数据访问点。当该冗余组接收来自一客户端的读数据请求时,由该数据节点接收该读数据请求并从数据节点的副本逻辑卷中读取与该读数据请求匹配的目标数据,并发送至该客户端。
3、降级状态下的数据写
当冗余组中某个数据节点或者校验节点出现故障时,系统进入降级状态,此时数据读写都是降级读写。当故障的节点修复后,将重新加入系统,此时的数据访问流程与正常状态下的数据访问流程的区别在于,增加了查询节点是否完成数据重构的操作,如果完成重构,数据读写流程将按照正常流程进行;如果未完成重构,则按照降级状态的读写流程进行。因此,此处把降级状态和重构未完成状态的数据写流程统一进行描述。
(1)数据节点故障或数据节点重构未完成
此时数据访问点切换为主校验节点,客户端数据的访问路径切换到主校验节点。主校验节点的镜像处理单元执行降级写流程,异步冗余计算时RAID6执行降级写流程,该过程具体参见图5所述,步骤如下:
步骤11,当该数据节点故障且该冗余组接收来自一客户端的写请求数据时,由该主校验节点和该从校验节点接收该写请求数据,该主、从校验节点分别对该写请求数据进行缓存。
与图4实施例相似的,当该主、从校验节点分别对该写请求数据实现缓存后,主校验节点向客户端发送写完成信息,以报告该客户端数据写入完成。
步骤12,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据。
图5A所示为数据节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图。
该主校验缓存根据一缓存策略对该主校验缓存中的缓存数据进行合并,且当该主校验缓存符合回写条件时,RAID6处理单元对该主校验缓存中的缓存数据进行RAID6计算以获得该第一校验数据P与该第二校验数据Q,RAID6处理单元将该第一校验数据P存入该主校验节点的主校验逻辑卷中,将该第二校验数据Q通过网络发送至该从校验节点,并存入从校验逻辑卷中。
步骤13,该主、从校验节点分别对其缓存的数据进行删除。
与图4实施例的差别在于,由于数据节点故障,故而所有连接至数据节点的网络连接全部断开,即,客户端、主、从校验节点与数据节点的网络连接全部断开,步骤12的RAID6冗余计算完毕后直接向上层返回冗余计算及校验数据更新完成以执行步骤13,不会向该故障的数据节点发送数据迁移命令。其余步骤与正常情况下的缓存回写过程相同。
该步骤11进一步包括:
步骤1101,该主校验节点将该写请求数据缓存于该主校验节点的主校验缓存,该从校验节点将该写请求数据缓存于该从校验节点的从校验缓存;
步骤1102,在该写请求数据缓存于该第二缓存后,该主校验节点返回一写完成信息至该客户端,以报告客户端数据写入完成。
该步骤12进一步包括:
该主校验节点的RAID6处理单元根据一缓存策略对该主校验缓存中的缓存数据进行合并,当该主校验缓存符合回写条件时,RAID6处理单元对该主校验缓存中的缓存数据进行RAID6计算以获得该第一校验数据与该第二校验数据,将该第一校验数据存入该主校验节点的主校验逻辑卷中,将该第二校验数据存入该从校验节点的从校验逻辑卷中,该主校验节点发出冗余计算完成信号,执行步骤13。
此时,存储系统中并不包括任何副本,而是存储有该写请求数据的两个校验数据,则后续可以通过RAID6恢复算法,利用这两个校验数据,计算出该写请求数据。故而数据节点故障的情况下,本发明依然可以保证数据的安全性。同时使得冗余计算的开销较低。
(2)主校验节点故障或重构未完成
此时数据访问点是数据节点,校验节点故障或重构未完成状态下的应用层数据写流程如图6所示。图6A所示为主校验节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图。
主校验节点故障,数据节点正常,客户端数据的访问路径和正常情况下一样,在数据节点,数据节点的镜像处理单元执行降级写流程,由于主校验节点故障,从校验节点会激活接替,进行异步冗余计算。所有与主校验节点建立的网络连接全部断开。
步骤21,当该主校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该从校验节点分别对该写请求数据进行缓存;
步骤22,该从校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤23,该从校验节点对其缓存的数据进行删除。
该步骤21进一步包括:
数据节点将写请求数据写入数据节点缓存,该从校验节点将该写请求数据缓存于该从校验节点的从校验缓存后,该从校验节点返回一写完成信息至该数据节点,该数据节点在收到该写完成信息且写请求数据也写入该数据节点缓存后,数据节点镜像处理单元返回写完成信息至该客户端,以报告该客户端数据写入完成。
该步骤22进一步包括:
根据一缓存策略对该从校验缓存中的缓存数据进行合并,当该从校验缓存符合回写条件时,从校验节点的RAID6处理单元对该从校验缓存中的缓存数据进行RAID6计算以获得该第一校验数据P与该第二校验数据Q,仅将该第二校验数据Q存入该从校验节点的从校验逻辑卷中且不将第一校验数据P存入该主校验节点的主校验逻辑卷中,该从校验节点发出冗余计算完成信号,执行步骤23。
该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
此时,数据节点已经存储有一个副本,可以支持读请求,因此无需利用第一、二校验数据计算得到。故而在主校验节点故障的情况下,本发明依然可以保证数据的安全性。同时使得冗余计算的开销较低。
(3)从校验节点故障或重构未完成
此时数据访问点是数据节点,校验节点故障或重构未完成状态下的应用层数据写流程如图7所示。图7A所示为从校验节点故障或数据节点重构未完成时的双层冗余存储系统的结构示意图。
从校验节点故障,数据节点正常,客户端数据的访问路径和正常情况下一样,在数据节点,数据节点的镜像处理单元执行降级写流程,由于从校验节点故障,仍由主校验节点进行异步冗余计算。所有与从校验节点建立的网络连接全部断开。
步骤31,当该从校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该主校验节点分别对该写请求数据进行缓存;
步骤32,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤33,该主校验节点对其缓存的数据进行删除。
该步骤31进一步包括:
数据节点将写请求数据写入数据节点缓存,该主校验节点将该写请求数据缓存于该主校验节点的主校验缓存后,该主校验节点返回一写完成信息至该数据节点,该数据节点在收到该写完成信息且写请求数据也写入该数据节点缓存后,数据节点镜像处理单元返回写完成信息至该客户端,以报告该客户端数据写入完成。
该步骤32进一步包括:
根据一缓存策略对该主校验缓存中的缓存数据进行合并,当该主校验缓存符合回写条件时,主校验节点的RAID6处理单元对该主校验缓存中的缓存数据进行RAID6计算以获得该第一校验数据P与该第二校验数据Q,仅将该第一校验数据P存入该主校验节点的主校验逻辑卷中且不将第二校验数据Q存入该从校验节点的从校验逻辑卷中,该主校验节点发出冗余计算完成信号,执行步骤33。
该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
此时,数据节点已经存储有一个副本,可以支持读请求,因此无需利用第一、二校验数据计算得到。故而在从校验节点故障的情况下,本发明依然可以保证数据的安全性。同时使得冗余计算的开销较低。
(4)主、从校验节点故障或重构未完成
此时数据访问点是数据节点,由于两个校验节点都毁坏,已经无法保护数据。所有与主、从校验节点的连接全部断开。但是数据的访问过程依然可以进行,和正常情况下的数据写流程是相同的。
具体来说,当该主、从校验节点均故障且该冗余组接收来自一客户端的写请求数据时,仅该数据节点对该写请求数据进行缓存,并定时回刷到副本逻辑卷中进行存储,该数据节点返回一写完成信息至该客户端以报告该客户端数据写入完成,结束。
此时,数据节点已经存储有一个副本,可以支持读请求,因此无需利用第一、二校验数据计算得到。故而主从校验节点均故障的情况下,本发明依然可以保证数据的安全性。同时使得冗余计算的开销较低。
4、降级状态下的数据读
同上所述,此处把降级状态和重构未完成状态的数据读流程统一进行描述。
(1)数据节点故障或重构未完成
此时数据访问点是主校验节点,数据节点故障或重构未完成状态下的应用层数据读流程如图8所示。数据节点故障,客户端数据的访问路径切换到主校验节点。该过程具体步骤如下:
步骤41,当该数据节点故障且该冗余组接收到来自一客户端的读数据请求时,主校验节点的镜像处理单元判断该主校验缓存中是否存在与该读数据请求匹配的目标数据,如果存在,执行步骤42,如果不存在,执行步骤43;
步骤42,从该主校验缓存中提取该目标数据,并发送至该客户端;
步骤43,该主校验节点提取其所存储的第一校验数据并从该从校验节点读取一第二校验数据,利用该第一校验数据以及该第二校验数据进行RAID6恢复运算,以重构出与该读数据请求匹配的目标数据并将其发送至该客户端。
(2)主校验节点故障或重构未完成
此时数据访问点是数据节点。主校验节点故障,客户端数据的访问路径和正常情况下一样,在数据节点,数据读流程和正常情况下的数据读流程是相同的,对校验节点透明。
此时的数据读取方法包括:
当该冗余组接收来自一客户端的读数据请求时,由该数据节点接收该读数据请求并从副本逻辑卷中读取与该读数据请求匹配的目标数据,并发送至该客户端。
(3)从校验节点故障或重构未完成
此时数据访问点是数据节点。从校验节点故障,客户端数据的访问路径和正常情况下一样,在数据节点。数据读流程和正常情况下的数据读流程是相同的,对校验节点透明。
此时的数据读取方法包括:
当该冗余组接收来自一客户端的读数据请求时,由该数据节点接收该读数据请求并从副本逻辑卷中读取与该读数据请求匹配的目标数据,并发送至该客户端。
(4)主、从校验节点故障或重构未完成
此时数据访问点是数据节点,由于两个校验节点都毁坏,已经无法保护数据。但是数据的访问过程依然可以进行,和正常情况下的数据读流程是相同的。
此时的数据读取方法包括:
当该冗余组接收来自一客户端的读数据请求时,由该数据节点接收该读数据请求并从副本逻辑卷中读取与该读数据请求匹配的目标数据,并发送至该客户端。
(三)故障恢复流程
冗余组中的数据节点或校验节点故障修复后,需要对重新加入的节点进行数据重构恢复。3副本和RAID6都能容忍两个节点故障,但是恢复过程主要分为数据节点恢复和校验节点恢复,校验节点恢复又分为单校验节点恢复和双校验节点恢复,下面分别介绍。
(1)数据节点恢复
数据节点的数据重构分为两个部分,需依次执行3副本数据恢复和RAID6恢复。以恢复数据节点-1为例,3副本数据恢复过程具体步骤如下:
步骤51,主校验节点收集需要恢复的数据节点的副本逻辑卷当前所应存储的数据。
其中,由于数据节点-1、主校验节点的缓存中存储的数据应当相同。而主校验节点的一预先设置的存储单元中,记录有数据节点-1当前应当存储的数据的信息,通过该存储单元可重构RAID1数据位图。
步骤52,主校验节点从主校验缓存中提取所述需要恢复的数据节点-1当前所应存储的数据,并发送至该需要恢复的数据节点-1,由数据节点-1的副本逻辑卷进行存储。
RAID6数据恢复过程具体步骤如下:
步骤53,通过读取RAID6的恢复位图,主校验节点收集需要恢复的数据节点-1的RAID6逻辑卷当前所应存储的数据信息。
该RAID6的恢复位图记载了该冗余组中所有数据节点的已完成冗余计算的数据是否都已更新,以及更新后的数据。该已更新即为在正常情况下,数据节点-1中已完成RAID6冗余计算的数据由副本逻辑卷迁移到RAID6逻辑卷。该RAID6的恢复位图在创建RAID设备时创建,保存在磁盘的一个固定位置,同时在主校验节点的内存中实时得到维护。
步骤54,主校验节点的RAID6处理单元按照该RAID6的恢复位图读取其他数据节点(例如数据节点-2)和主校验逻辑卷中已完成冗余计算的数据。
对于数据节点-2就是读取其完成冗余计算并迁移至数据节点-2的RAID6逻辑卷的数据。
步骤55,其他数据节点-2将数据返回给主校验节点;
步骤56,主校验节点通过RAID6计算,重构需要恢复的数据,并其发送到需要恢复的数据节点的RAID6逻辑卷,直到所有数据重构完成。
主校验节点通过主校验逻辑卷中的第一校验数据P和数据节点-2中的已完成冗余计算的数据,根据RAID6的校验计算规则,计算得到对应的本应当存储在数据节点的RAID6逻辑卷中的数据。
上述的两个恢复过程都完成后,数据节点重构完成,将客户端的访问路径切换到数据节点。
(2)单校验节点恢复
单校验节点恢复也就是恢复故障之前的主校验节点或从校验节点,此时依然有主校验节点存在,主校验节点可用,单校验节点的数据重构只需要执行RAID6恢复,副本数据无需恢复。其原因在于校验节点的缓存仅为副本数据的临时存储。RAID6数据恢复过程具体步骤如下:
步骤61,主校验节点的RAID6处理单元从所述RAID6的恢复位图中读取冗余组中的所有数据节点的已完成冗余计算的数据。
这里的所有数据节点是包括数据节点-1、数据节点-2。已完成冗余计算的数据即为在发生故障之前已经计算过对应的校验数据的、目前应当存在RAID6逻辑卷中的数据。
步骤62,所有数据节点将所述已完成冗余计算的数据返回给主校验节点;
步骤63,主校验节点重构需要恢复的第一校验数据P或第二校验数据Q,将其发送到需要恢复的校验节点校验逻辑卷,直到所有校验重构完成。
主校验节点对所有数据节点已完成冗余计算的数据重新进行RAID6计算,从而对每个数据都重新产生第一校验数据P或第二校验数据Q,将重新产生的第一校验数据P存入主校验逻辑卷,将重新产生的第二校验数据Q存入从校验逻辑卷。
(3)双校验节点恢复
双校验节点恢复与单校验节点恢复不同在于,由于双校验节点之前均存在故障,故而此时存储集群没有数据保护,因此需要重新计算副本逻辑卷中存储所有数据的校验数据,依次执行数据节点数据迁移与RAID6同步恢复。数据节点数据迁移过程具体步骤如下:
步骤71,阻塞所有数据节点的用户访问。
步骤72,冗余组内的所有数据节点将副本逻辑卷数据迁移至RAID6逻辑卷。
迁移至RAID6逻辑卷中的数据视为完成冗余计算的数据已更新。
步骤73,数据节点恢复用户访问。
所有数据迁移完成后,主校验节点执行RAID6恢复,过程具体步骤如下:
步骤74,通过读取所有数据节点的RAID6逻辑卷,收集冗余组内所有数据节点已进行冗余计算的数据,并将所有数据节点收集到的数据合并,以此并集为依据维护主校验节点RAID6的恢复位图。
同前所述,该恢复位图用于记载已完成冗余计算的数据是否都已更新,该恢复位图在创建RAID设备时创建,保存在磁盘的一个固定位置,同时在主校验节点的内存中得到维护。也就是说,迁移至RAID6逻辑卷中的数据在恢复位图中被视为已更新。通过步骤74而重新对该RAID6的恢复位图的最新情况进行更新。
步骤75,主校验节点向冗余组中的数据节点发送读已迁移完成的数据的请求。
已完成迁移的数据即为步骤73的用户访问所产生的数据。
步骤76,数据节点将已完成迁移的数据返回给主校验节点。
即,数据节点将RAID6逻辑卷中当前存储的数据返回给主校验节点。
步骤77,主校验节点按照恢复位图进行RAID6冗余计算,并将计算得到的两个校验数据P、Q分别写入主、从校验节点校验逻辑卷中,该过程称为RAID6的Resync过程。
RAID6恢复位图中设置的校验数据均重构完成后,RAID6恢复完成。
上述的两个重构过程都完成后,校验节点重构完成。
本发明的效果在于:
(1)本发明将3副本存储放于RAID6冗余计算之前,使得应用的数据读写不受RAID6处理单元的影响;借助于缓存的聚合功能,实现异步冗余计算,降低了RAID6更新的小写性能问题,解决RAID6集中冗余管理方式中控制节点成为性能瓶颈的问题;
(2)存储系统由多个冗余组组成,一个冗余组为3副本和RAID6的双层冗余;节点控制从逻辑上分为数据节点与主、从校验节点,其中主校验节点是一个冗余组的冗余计算节点,从校验节点是备用的冗余计算节点;
(3)读请求由数据访问点的副本层获取数据,性能可以不受冗余计算影响;对于写请求数据访问点直接将数据写入副本层,等待缓存异步推动RAID6的带外冗余计算。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上对本发明所提供的双层冗余提高集群可靠性的存储系统和方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (29)

1.一种基于双层冗余存储系统的数据写入方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该冗余组接收来自一客户端的写请求数据,其中,该数据节点、该主、从校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该主、从校验节点分别对其缓存的数据进行删除。
2.如权利要求1所述的方法,其特征在于,该步骤1进一步包括:
步骤11,该数据节点接收该写请求数据,将其缓存于该数据节点的一第一缓存,并将该写请求数据转发至该主校验节点和该从校验节点;
步骤12,该主校验节点将该写请求数据缓存于该主校验节点的一第二缓存,该从校验节点将该写请求数据缓存于该从校验节点的一第三缓存;
步骤13,在该写请求数据分别缓存于该第一、二、三缓存后,该数据节点返回写完成信息至该客户端,以报告该客户端数据写入完成。
3.如权利要求2所述的方法,其特征在于,该步骤2进一步包括:
根据一缓存策略对该第二缓存中的缓存数据进行合并,当该第二缓存符合回写条件时,第一RAID6处理单元对该第二缓存中的缓存数据进行RAID6计算以获得该第一校验数据与该第二校验数据,将该第一校验数据存入该主校验节点的主校验存储单元中,将该第二校验数据存入该从校验节点的从校验存储单元中,该第一RAID6处理单元向该数据节点发出数据迁移命令,使得该数据节点将存储在该数据节点的第一存储单元中的该写请求数据迁移到该数据节点的第二存储单元中,迁移完毕后该主校验节点发出冗余计算完成信号,执行步骤3。
4.如权利要求3所述的方法,其特征在于,该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
5.一种基于双层冗余存储系统的数据写入方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该数据节点故障且该冗余组接收来自一客户端的写请求数据时,由该主校验节点和该从校验节点接收该写请求数据,该主、从校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据;
步骤3,该主、从校验节点分别对其缓存的数据进行删除。
6.如权利要求5所述的方法,其特征在于,该步骤1进一步包括:
步骤11,该主校验节点将该写请求数据缓存于该主校验节点的一第二缓存,该从校验节点将该写请求数据缓存于该从校验节点的一第三缓存;
步骤12,在该写请求数据缓存于该第二缓存后,该主校验节点返回一写完成信息至该客户端,以报告客户端数据写入完成。
7.如权利要求6所述的方法,其特征在于,该步骤2进一步包括:
该主校验节点的第一RAID6处理单元根据一缓存策略对该第二缓存中的缓存数据进行合并,当该第二缓存符合回写条件时,第一RAID6处理单元对该第二缓存中的缓存数据进行RAID6计算以获得该第一校验数据与该第二校验数据,将该第一校验数据存入该主校验节点的主校验存储单元中,将该第二校验数据存入该从校验节点的从校验存储单元中,该主校验节点发出冗余计算完成信号,执行步骤3。
8.如权利要求7所述的方法,其特征在于,该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
9.一种基于双层冗余存储系统的数据写入方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该主校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该从校验节点分别对该写请求数据进行缓存;
步骤2,该从校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该从校验节点对其缓存的数据进行删除。
10.如权利要求9所述的方法,其特征在于,该步骤1进一步包括:
在该写请求数据分别缓存于该数据节点的第一缓存、从校验节点的第三缓存后,该数据节点返回写完成信息至该客户端,以报告该客户端数据写入完成。
11.如权利要求10所述的方法,其特征在于,该步骤2进一步包括:
根据一缓存策略对该第三缓存中的缓存数据进行合并,当该第三缓存符合回写条件时,第二RAID6处理单元对该第三缓存中的缓存数据进行RAID6计算以获得该第一校验数据与该第二校验数据,仅将该第二校验数据存入该从校验节点的从校验存储单元中且不将第一校验数据存入该主校验节点的主校验存储单元中,该从校验节点发出冗余计算完成信号,执行步骤3。
12.如权利要求11所述的方法,其特征在于,该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
13.如权利要求9所述的方法,其特征在于,步骤1还包括:
当该主、从校验节点均故障且该冗余组接收来自一客户端的写请求数据时,仅该数据节点对该写请求数据进行存储,结束。
14.一种基于双层冗余存储系统的数据写入方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该从校验节点故障且该冗余组接收来自一客户端的写请求数据时,该数据节点、该主校验节点分别对该写请求数据进行缓存;
步骤2,该主校验节点对其缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该数据节点对该写请求数据进行存储;
步骤3,该主校验节点对其缓存的数据进行删除。
15.如权利要求14所述的方法,其特征在于,该步骤1进一步包括:
该主校验节点将该写请求数据缓存于该从校验节点的一第二缓存后,该主校验节点返回一写完成信息至该客户端,以报告客户端数据写入完成。
16.如权利要求15所述的方法,其特征在于,该步骤2进一步包括:
该主校验节点的第一RAID6处理单元根据一缓存策略对该第二缓存中的缓存数据进行合并,当该第二缓存符合回写条件时,第一RAID6处理单元对该第二缓存中的缓存数据进行RAID6计算以获得该第一校验数据与该第二校验数据,仅将该第一校验数据存入该主校验节点的主校验存储单元中且不将第二校验数据存入该从校验节点的从校验存储单元中,该主校验节点发出冗余计算完成信号,执行步骤3。
17.如权利要求16所述的方法,其特征在于,该缓存策略包括:
如果该缓存数据为该写请求数据的全条带数据,无需合并;
如果该缓存数据中重复出现该写请求数据中的同一数据块,仅保留一个该数据块;
如果该缓存数据中分隔出现同属于该写请求数据的不同数据块,将所述不同数据块组合为该写请求数据的全条带数据。
18.一种基于双层冗余存储系统的数据读取方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,每个该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,当该数据节点故障且该冗余组接收来自一客户端的读数据请求时,判断该主校验节点的第二缓存中判断是否存在与该读数据请求匹配的目标数据,如果存在,执行步骤2,如果不存在,执行步骤3;
步骤2,从该主校验节点的第二缓存中提取该目标数据,并发送至该客户端;
步骤3,该主校验节点提取其所存储的第一校验数据并从该从校验节点读取一第二校验数据,利用该第一校验数据以及该第二校验数据进行RAID6恢复运算,以获得与该读数据请求匹配的目标数据并将其发送至该客户端。
19.一种基于双层冗余存储系统的数据读取方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
当仅该主校验节点故障、当仅该从校验节点故障、当该主、从校验节点均故障或当该数据节点、主校验节点和从校验节点均未故障时,如该冗余组接收来自一客户端的读数据请求,该冗余组从该数据节点读取与该读数据请求匹配的目标数据,并发送至该客户端,不利用主校验节点进行RAID6计算。
20.一种双层冗余存储系统,其特征在于,包括:
至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点;
每个该数据节点包括第一处理单元、第一缓存、第一存储单元以及第二存储单元;
该主校验节点包括第二处理单元、第二缓存、第一RAID6处理单元以及主校验存储单元;
该从校验节点包括第三处理单元、第三缓存、第二RAID6处理单元以及从校验存储单元;
其中,该第一缓存、该第二缓存和该第三缓存用于对该冗余组接收到的写请求数据进行缓存,该第一RAID6处理单元用于对该第二缓存中缓存的写请求数据进行RAID6计算以获得第一校验数据与第二校验数据,该第一存储单元用于对该写请求数据进行存储。
21.一种基于双层冗余存储系统的数据节点恢复方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该主校验节点收集冗余组中需要恢复的数据节点的第一存储单元当前所应存储的第一目标数据;
步骤2,该主校验节点从该第二缓存中提取所述目标数据,并发送至该需要恢复的数据节点,由数据节点的第一存储单元进行存储;
步骤3,该主校验节点收集需要恢复的数据节点的第二存储单元中当前所应存储的第二目标数据;
步骤4,主校验节点的第一RAID6处理单元读取冗余组中另一数据节点和主校验存储单元中已完成冗余计算的数据,据以重构该第二目标数据,并发送至需要恢复的数据节点的第二存储单元。
22.如权利要求21所述的方法,其特征在于,步骤3进一步包括:该主校验节点通过读取RAID6的恢复位图收集该第二目标数据。
23.如权利要求21所述的方法,其特征在于,步骤4进一步包括:该第一RAID6处理单元通过RAID6校验计算以重构该第二目标数据。
24.如权利要求21所述的方法,其特征在于,该另一数据节点的已完成冗余计算的数据是存储在该另一数据节点的第二存储单元中的数据。
25.一种基于双层冗余存储系统的单个校验节点恢复方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,该第一RAID6处理单元收集冗余组内所有数据节点的已完成冗余计算的数据;
步骤2,所有数据节点将所述已完成冗余计算的数据返回给该主校验节点;
步骤3,主校验节点重构需要恢复的第一校验数据或第二校验数据,主校验节点将重构得到的第一校验数据发送到主校验存储单元,或者,主校验节点将重构得到的第二校验数据发送到从校验存储单元。
26.如权利要求25所述的方法,其特征在于,步骤1进一步包括:该第一RAID6处理单元通过读取RAID6的恢复位图收集该已完成冗余计算的数据。
27.如权利要求25或26所述的方法,其特征在于,该已完成冗余计算的数据是存储在每个数据节点的第二存储单元中的数据。
28.一种基于双层冗余存储系统的双校验节点恢复方法,其特征在于,该双层冗余存储系统包括至少一个冗余组,该冗余组包括至少两个数据节点、一主校验节点和一从校验节点,每个该数据节点包括第一缓存、第一存储单元以及第二存储单元,该主校验节点包括第二缓存、第一RAID6处理单元以及主校验存储单元,该从校验节点包括第三缓存、第二RAID6处理单元以及从校验存储单元,该方法包括:
步骤1,阻塞所有数据节点的用户访问;
步骤2,所有数据节点将其第一存储单元的数据迁移至该第二存储单元;
步骤3,数据节点恢复用户访问;
步骤4,主校验节点从所有数据节点读取该第二存储单元中的数据以进行RAID6冗余计算,得到第一校验数据以及第二校验数据,主校验节点将该第一校验数据发送到主校验存储单元,将该第二校验数据发送到从校验存储单元。
29.如权利要求28所述的方法,其特征在于,该步骤3、4之间还包括,步骤31,主校验节点收集所有数据节点的第二存储单元中的数据,以此数据为依据维护主校验节点RAID6的恢复位图。
CN201610557291.3A 2016-07-14 2016-07-14 一种双层冗余存储系统及其数据写入、读取及恢复方法 Expired - Fee Related CN106227464B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610557291.3A CN106227464B (zh) 2016-07-14 2016-07-14 一种双层冗余存储系统及其数据写入、读取及恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610557291.3A CN106227464B (zh) 2016-07-14 2016-07-14 一种双层冗余存储系统及其数据写入、读取及恢复方法

Publications (2)

Publication Number Publication Date
CN106227464A CN106227464A (zh) 2016-12-14
CN106227464B true CN106227464B (zh) 2019-03-15

Family

ID=57519769

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610557291.3A Expired - Fee Related CN106227464B (zh) 2016-07-14 2016-07-14 一种双层冗余存储系统及其数据写入、读取及恢复方法

Country Status (1)

Country Link
CN (1) CN106227464B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106886368B (zh) * 2016-12-30 2019-08-16 北京同有飞骥科技股份有限公司 一种块设备写io整形和多控制器同步系统及同步方法
CN107357689B (zh) * 2017-08-02 2020-09-08 郑州云海信息技术有限公司 一种存储节点的故障处理方法及分布式存储系统
CN110348244B (zh) * 2018-04-02 2023-03-17 深信服科技股份有限公司 基于仲裁的多校验和验证方法、系统、装置及存储介质
CN110262922B (zh) * 2019-05-15 2021-02-09 中国科学院计算技术研究所 基于副本数据日志的纠删码更新方法及系统
CN110531936B (zh) * 2019-08-29 2021-05-28 西安交通大学 基于多种存储介质的分布式纠删码混合存储的林型存储结构及方法
CN115391093B (zh) * 2022-08-18 2024-01-02 江苏安超云软件有限公司 一种数据处理方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291347A (zh) * 2008-06-06 2008-10-22 中国科学院计算技术研究所 一种网络存储系统
CN102662607A (zh) * 2012-03-29 2012-09-12 华中科技大学 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法
CN102696017A (zh) * 2010-02-22 2012-09-26 国际商业机器公司 用于在回写分布式冗余数据存储系统中维持奇偶校验一致性的读取其他项的协议
CN103761058A (zh) * 2014-01-23 2014-04-30 天津中科蓝鲸信息技术有限公司 Raid1和raid4混合结构网络存储系统及方法
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291347A (zh) * 2008-06-06 2008-10-22 中国科学院计算技术研究所 一种网络存储系统
CN102696017A (zh) * 2010-02-22 2012-09-26 国际商业机器公司 用于在回写分布式冗余数据存储系统中维持奇偶校验一致性的读取其他项的协议
CN102662607A (zh) * 2012-03-29 2012-09-12 华中科技大学 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法
CN103761058A (zh) * 2014-01-23 2014-04-30 天津中科蓝鲸信息技术有限公司 Raid1和raid4混合结构网络存储系统及方法
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置

Also Published As

Publication number Publication date
CN106227464A (zh) 2016-12-14

Similar Documents

Publication Publication Date Title
CN106227464B (zh) 一种双层冗余存储系统及其数据写入、读取及恢复方法
US9182918B2 (en) Network storage systems having clustered raids for improved redundancy and load balancing
CN103761058B (zh) Raid1和raid4混合结构网络存储系统及方法
US9430484B2 (en) Data redundancy in a cluster system
CN103942112B (zh) 磁盘容错方法、装置及系统
US8060772B2 (en) Storage redundant array of independent drives
CN103763383B (zh) 一体化云存储系统及其存储方法
CN100489796C (zh) 用来实现共用磁盘阵列管理功能的方法和系统
US7032131B2 (en) System and method for ensuring merge completion in a storage area network
US7925852B2 (en) Storage controller and data management method
US6928513B2 (en) System and method for managing data logging memory in a storage area network
EP2784675B1 (en) Method, device and system for data reconstruction
CN101291347B (zh) 一种网络存储系统
US20150370713A1 (en) Storage system and storage control method
JP2016534471A (ja) シェアード・ナッシング分散型ストレージ・システムにおけるターゲットにより駆動される独立したデータの完全性および冗長性のリカバリ
US7509467B2 (en) Storage controller and data management method
CN113326006B (zh) 一种基于纠删码的分布式块存储系统
CN106155943B (zh) 一种双控存储设备的掉电保护的方法及装置
CN108205573B (zh) 一种数据分布式存储方法及系统
US11733874B2 (en) Managing replication journal in a distributed replication system
CN109582213A (zh) 数据重构方法及装置、数据存储系统
CN111858189A (zh) 对存储盘离线的处理
CN111857540B (zh) 数据存取方法、装置和计算机程序产品
US20140215153A1 (en) Storage system, disk array apparatus and control method for storage system
CN116400860A (zh) 融合型存储方法、设备、系统及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190315