CN102681794B - 基于双控制器实现磁盘冗余阵列保护的方法及系统 - Google Patents

基于双控制器实现磁盘冗余阵列保护的方法及系统 Download PDF

Info

Publication number
CN102681794B
CN102681794B CN201210120724.0A CN201210120724A CN102681794B CN 102681794 B CN102681794 B CN 102681794B CN 201210120724 A CN201210120724 A CN 201210120724A CN 102681794 B CN102681794 B CN 102681794B
Authority
CN
China
Prior art keywords
data
stripe
cache
disk
disks
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.)
Active
Application number
CN201210120724.0A
Other languages
English (en)
Other versions
CN102681794A (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.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry Co Ltd
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 Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201210120724.0A priority Critical patent/CN102681794B/zh
Publication of CN102681794A publication Critical patent/CN102681794A/zh
Application granted granted Critical
Publication of CN102681794B publication Critical patent/CN102681794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明披露了基于双控制器实现磁盘冗余阵列保护的方法及系统,其中方法包括:为磁盘冗余阵列配置用于应用层读写操作的缓存,该缓存采用基树结构根据数据偏移量快速查找和修改数据;任一控制器收到应用层向磁盘冗余阵列写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态。本发明通过为基于双控制器的存储系统的磁盘冗余阵列实现读写缓存,并通过在双控制器间镜像备份、降级时将条带写数据和校验的同步备份到从控制器,实现写条带时对各个条带块写入磁盘的严格同步,从而使得数据存储的可靠性和性能大幅提高。

Description

基于双控制器实现磁盘冗余阵列保护的方法及系统
技术领域
本发明涉及计算机数据存储技术,尤其涉及基于双控制器实现磁盘冗余阵列(RAID,Redundant Array Of Independent Disks)的保护方法及系统。
背景技术
目前计算机数据存储在容量、性能以及可靠性方面的要求越来越高。其中,应用最为广泛的是存储区域网络(SAN,Storage Area Network),它将数据存储通过网络分隔为客户端和服务端,其协议标准为SCSI(SmallComputer System Interface)光纤通道协议(FCP,Fibre Channel Protocol forSCSI)、互联网小型计算机接口(iSCSI,internet Small Computer SystemInterface)等。这种SAN结构将不同应用的数据处理与数据存储主体分隔开来,有利于数据处理和存储设施环境部署及开发。
SAN的服务端为一台或多台独立的用于存储的计算机系统,这些基本的存储系统的可靠性决定了数据存储的可靠性。目前,已有很多存储系统使用了双控制器,且在两个控制器之间具有高速通信通道;各控制器后端通过串行连接的小型计算机接口扩展器(SAS expander,Serial Attached Scsiexpander)构成SAS拓扑网络,来连接共同的磁盘组。当存储系统中一个控制器失效时,由另一个控制器接管使用所有的磁盘,继续提供存储服务。
为了提高SAN存储的容量、性能及可靠性,其存储系统采用逻辑上磁盘冗余阵列(RAID)的方式将物理磁盘组合起来。最常用的是第五级别的磁盘冗余阵列(RAID-5),它提供允许其中任意一块坏盘的可靠性,并具有较好的数据空间利用率及性能。
假设RAID-5由N块磁盘组成,其结构如图1所示。将每块磁盘的容量进行逻辑上的顺序分块,记为“区块”;每个区块又划分成更小的“条带块”;N个磁盘上序号相同的“条带块”在逻辑上组合成一个“条带”。通常写数据时是以条带为单位进行的,每个条带有且仅有一个“条带块”的数据是该条带上其它“条带块”数据异或计算的结果,称为校验数据,其它“条带块”的数据则记为应用数据。当应用数据变化时,校验数据也需随之变化,写入数据时要同时更新校验数据“条带块”。
在基于双控制器的存储系统上,由于在写条带时对各个“条带块”写入各磁盘不能实现严格同步,故RAID-5的使用面临控制器失效接管的下述两个问题:
(1)在控制器突然失效时,条带的校验数据块中的校验数据可能因条带各数据块未严格同步写入而不正确,另一个控制器接管该RAID时需要对未同步的条带进行校验检查和修正保证冗余保护特性,而如何准确识别需要同步的条带关系到条带修复的速度和RAID可靠性,例如对所有条带进行检查将影响到RAID性能和很长的检查修复时间,这期间加了发生磁盘失效导致RAID失效和数据丢失的风险。
(2)当RAID-5处于降级状态,即一块磁盘失效,如在写条带时发生控制器失效,则即使有另一个控制器接管,数据仍然可能会丢失,原因是在控制器失效时可能存在部分“条带块”写入,而部分“条带块”没有写入或者只写入“条带块”的部分数据。
由此看来,如何在控制器失效后准确快速地对正写数据的条带实现修复,会影响到数据存储的可靠性和性能。
发明内容
本发明所要解决的技术问题是提供一种基于双控制器实现磁盘冗余阵列保护的方法及系统,能够在写条带时对各个“条带块”写入磁盘实现严格同步。
为了解决上述技术问题,本发明提供了一种基于双控制器实现磁盘冗余阵列保护的方法,包括:
为磁盘冗余阵列配置用于应用层读写操作的缓存,该缓存采用基树结构根据数据偏移量快速查找和修改数据;
任一控制器收到应用层向磁盘冗余阵列写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态。
进一步地,基树结构的根节点包含根节点层数和第一层子节点指针,每个子节点包含指向父节点和/或子节点的指针,所述基树的叶子节点为基本缓存单元,是连续的多个物理页。
进一步地,磁盘冗余阵列为第五级别磁盘冗余阵列,该方法还包括:
控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,控制器根据应用层的读数据请求,读取缓存中已存在的数据,或从硬盘上读取所述缓存中不存在的数据,复制给应用层。
进一步地,控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘,具体包括:
主控制器采用按条带写的方式将应用数据条带块和校验数据条带块同时向对应的磁盘提交;当第五级别磁盘冗余阵列处于降级状态时,在写条带之前,将本次条带写涉及的应用数据条带块和校验数据条带块的数据、条带编号传输给从控制器;
从控制器将降级保护备份条带备份到内存并回复备份完成;
主控制器向磁盘提交各条带块,将各条带块写入到磁盘后,通知从控制器根据指定条带编号释放内存中备份的条带。
进一步地,控制器根据应用层的读数据请求,读取缓存中已存在的数据,或从硬盘上读取缓存中不存在的数据,复制给所述应用层,具体包括:
主控制器在应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否已存在于缓存中,是则从缓存中复制数据给应用层,否则从磁盘读取数据到缓存中,再复制给应用层;
或者,
从控制器在应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;
主控制器在从该从控制器收到读取数据的请求后,查看请求读取的数据是否已存在于缓存中,是则从该缓存中复制数据返回给从控制器,否则从磁盘读取数据到缓存中,再返回给从控制器;
从控制器将主控制器返回的数据复制给应用层。
进一步地,该方法还包括:
从控制器在获知主控制器失效时,将降级保护备份条带写入到磁盘,然后检查和修复缓存中处于未写回磁盘状态的数据对应的条带,从而接管对第五级别磁盘冗余阵列的读写权。
进一步地,从控制器在获知所述主控制器失效时,将降级保护备份条带写入到磁盘,然后检查和修复缓存中处于未写回磁盘状态的数据对应的条带,具体包括:
从控制器在获知主控制器失效时,禁止第五级别磁盘冗余阵列的条带写回到磁盘以及接收应用层读写数据的请求;
若判断第五级别磁盘冗余阵列为降级状态,将内存中的降级保护备份条带写入到磁盘上,并从内存中释放该降级保护备份条带;
根据缓存标识的所述未写回磁盘状态的数据计算对应的条带号stripe_index:
stripe_index=offset/(stripe_size*(disk_num-1));
式中:
disk_num为RAID-5磁盘个数,stripe_size为条带块大小,单位为字节,offset为相对于第五级别磁盘冗余阵列第一个字节的偏移量,单位为字节;
允许将第五级别磁盘冗余阵列的条带写回到磁盘以及接收应用层读写数据请求;
根据计算的条带号检查和修复校验数据,即:读取条带号对应的所有应用数据条带块和校验数据条带块;对条带上所有应用数据条带块数据进行异或计算,并将计算的校验数据和校验数据条带块的数据进行比较,若比较结果不同将计算的校验数据写入到校验数据条带块对应的磁盘上。
为了解决上述技术问题,本发明提供了一种基于双控制器实现磁盘冗余阵列保护的系统,包括控制器和为磁盘冗余阵列配置的缓存,其中:
控制器,用于在收到应用层向磁盘冗余阵列写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态;将缓存数据异步写回到所述磁盘上,完成所述写回后将对应的数据标识为已写回磁盘状态;
缓存,用于采用基树结构根据数据偏移量快速查找和修改数据,其中基树结构的根节点包含根节点层数和第一层子节点指针,每个子节点包含指向父节点和/或子节点的指针,基树的叶子节点为基本缓存单元,是连续的多个物理页。
进一步地,磁盘冗余阵列为第五级别磁盘冗余阵列;
控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,控制器根据应用层的读数据请求,读取缓存中已存在的数据,或从硬盘上读取所述缓存中不存在的数据,复制给所述应用层。
进一步地,控制器包括主控制器和从控制器,其中:
主控制器,用于采用按条带写的方式将应用数据条带块和校验数据条带块同时向对应的磁盘提交;当第五级别磁盘冗余阵列处于降级状态时,在写条带之前,将本次条带写涉及的应用数据条带块和校验数据条带块的数据、条带编号传输给从控制器;在得到备份完成的回复后,向磁盘提交各条带块,将各条带块写入到磁盘后,通知从控制器根据指定条带编号释放内存中的降级保护备份条带
从控制器,用于将降级保护备份条带备份到内存并回复备份完成。
进一步地,
主控制器在所述应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否已存在于缓存中,是则从缓存中复制数据给应用层,否则从磁盘读取数据到缓存中,再复制给应用层;在从该从控制器收到读取数据的请求后,查看请求读取的数据是否已存在于缓存中,是则从该缓存中复制数据返回给从控制器,否则从磁盘读取数据到缓存中,再返回给从控制器;
所述从控制器在应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;将主控制器返回的数据复制给应用层。
进一步地,
从控制器在获知主控制器失效时,将降级保护备份条带写入到磁盘,然后检查和修复缓存中处于未写回磁盘状态的数据对应的条带。
进一步地,
从控制器在获知主控制器失效时,禁止第五级别磁盘冗余阵列的条带写回到磁盘以及接收应用层读写数据的请求;若判断第五级别磁盘冗余阵列为降级状态,将内存中的降级保护备份条带写入到磁盘上,并从内存中释放该降级保护备份条带;根据缓存标识的未写回磁盘状态的数据计算对应的条带号,允许将第五级别磁盘冗余阵列的条带写回到磁盘以及接收应用层读写数据请求;根据计算的条带号检查和修复校验数据。
本发明通过为基于双控制器的存储系统的磁盘冗余阵列实现读写缓存,并通过在双控制器间镜像备份、降级时对条带写数据和校验的同步备份到从控制器,实现写条带时对各个条带块写入磁盘的严格同步,从而使得数据存储的可靠性和性能大幅提高。
附图说明
图1为现有的磁盘冗余阵列RAID-5数据布局逻辑示意图;
图2为本发明的基于双控制器实现磁盘冗余阵列保护的方法实施例的流程图;
图3为图2所示方法实施例中控制器写条带处理实例流程图;
图4为图2所示方法实施例中控制器读条带处理实例流程图;
图5为图2所示方法实施例中控制器接管磁盘冗余阵列处理实例流程图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
如图2所示,是本发明的基于双控制器实现磁盘冗余阵列保护的方法实施例的流程,包括如下步骤:
步骤1:为RAID配置用于应用层读写操作的缓存;
本发明譬如为RAID-5配置读写缓存,用于根据数据偏移量(相对RAID-5逻辑块设备的0字节)快速查找和修改缓存数据。
该读写缓存的结构采用较高效的基树结构,其中根节点包含了树高(根节点层数)和第一层子节点指针;每个子节点包含指向父节点和/或子节点的指针,每个节点的子节点数为固定值(child_num),一般为2的N次幂;基树叶子节点为基本缓存单元,是连续的若干个物理页(记为cache_unit,大小记为CacheUnitSize,单位KB)。
步骤2:当控制器收到应用层向RAID写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态;
譬如当应用层向RAID-5写数据时,无论访问到哪个控制器,都提前将要写的数据保存到缓存中并同步备份到另一个控制器,并标识数据为“脏”状态,即表示该数据未写回到磁盘,而不必发起和等待将数据写回到磁盘上才认为完成写数据。
步骤3:控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,根据应用层的读数据请求,读取缓存中已存在的数据,或从硬盘上读取缓存中不存在的数据,复制给应用层;
控制器采用按条带写的方式将RAID-5数据写回磁盘,亦即将应用数据“条带块”和校验数据“条带块”同时向对应的磁盘提交。当RAID-5处于降级状态时,即有一块磁盘失效时,在写条带之前,先将本次条带写涉及的应用数据“条带块”和校验数据“条带块”的数据、条带编号传输给从控制器,从控制器将降级保护备份条带备份到内存并回复确认备份完成,然后主控制器向磁盘提交各“条带块”。各“条带块”都写入到磁盘后,通知从控制器根据指定条带编号释放内存中备份的条带。其中,控制器之间的“传输”、“通知”是通过双控制器之间的通信通道进行。请参见图3步骤31~37。
当主控制器端的应用层请求从RAID-5读数据时,主控制器先查看该数据是否在缓存中已存在,是则直接从缓存中复制数据给应用层,否则向磁盘提交读数据请求,从磁盘读取数据到缓存中,再复制给应用层。请参见图4步骤31’。
当从控制器端的应用层请求从RAID-5读数据时,从控制器先查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;主控制器收到该请求后,先查看请求读取的数据是否在缓存中已存在,是则从缓存中复制数据返回给从控制器,否则向磁盘提交读数据请求,从磁盘读取数据到缓存中,再返回给从控制器,由从控制器复制数据给应用层。请参见图4步骤31”、32”。
步骤4:当获知主控制器失效,从控制器将降级保护备份条带写入到磁盘,然后检查和修复缓存中未写回磁盘的数据对应的条带,从而接管对RAID的读写权;
步骤5:控制器将缓存数据异步写回到磁盘上,完成写回后将对应的数据标识为已写回磁盘状态。
步骤4例如当RAID-5的主控制器失效,从控制器对RAID-5读写权进行接管,其流程如图5所示,包括:
步骤41:禁止将RAID数据(RAID-5条带)写回到磁盘,并禁止接收应用层读写数据的请求;
步骤42、43:判断RAID是否为降级状态,是则将内存中的降级保护备份条带写入到磁盘上,并从内存中释放该降级保护备份条带,然后执行步骤44;否则执行步骤44;
步骤44~46:根据缓存标识的未写回磁盘状态(例如数据为“脏”状态)的数据计算对应的条带号;允许将RAID数据写回到磁盘,并允许接收应用层读写数据请求;根据计算的条带号检查和修复校验数据。
上述根据缓存标识的未写回磁盘状态(例如数据为“脏”状态)的数据计算对应的条带号,方法如下:
1)遍历读写缓存基树结构,将未写回磁盘状态的数据标记为“失效接管同步条带”;
2)计算和记录失效接管同步条带的条带号stripe_index:
stripe_index=offset/(stripe_size*(disk_num-1));
式中:
disk_num为RAID-5磁盘个数,stripe_size为条带块大小(字节),offset为缓存数据位于该RAID-5虚拟磁盘的位置,即相对于第一个字节的偏移量(字节)。
上述根据计算的条带号检查和修复校验数据,具体包括:
1)读取条带号对应的所有条带块,包括应用数据条带块、校验数据条带块;
2)对条带上所有应用数据条带块数据进行异或计算,并将计算的校验数据和校验数据条带块的数据进行比较,相同则表明条带为同步,不需要修复;不同则将计算的校验数据写入到校验数据条带块对应的磁盘上。
本发明针对上述方法实施例,相应地还提供了基于双控制器实现磁盘冗余阵列保护的系统实施例,包括主控制器、从控制器以及为磁盘冗余阵列(RAID)配置的缓存,其中:
主控制器或从控制器,用于在收到应用层向RAID写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态;将缓存数据异步写回到磁盘上,完成写回后将对应的数据标识为已写回磁盘状态。
缓存,用于采用基树结构根据数据偏移量快速查找和修改数据;其中基树结构的根节点包含树高(根节点层数)和第一层子节点指针;每个子节点包含指向父节点和/或子节点的指针。
在上述系统实施例中,
缓存的每个节点的子节点数为固定值(child_num);基树叶子节点为基本缓存单元,是连续的页数为cache_unit的物理页,页大小记为CacheUnitSize,单位为KB。
在上述系统实施例中,
主控制器或从控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,根据应用层的读数据请求,读取缓存中已存在的数据,或从硬盘上读取缓存中不存在的数据,复制给应用层。
在上述系统实施例中,
从控制器在获知主控制器失效,将降级保护备份条带写入到磁盘,然后检查和修复缓存中未写回磁盘的数据对应的条带,从而接管对RAID的读写权。
在上述系统实施例中,
主控制器采用按条带写的方式将应用数据条带块和校验数据条带块同时向对应的磁盘提交;当RAID-5处于降级状态时,在写条带之前,将本次条带写涉及的应用数据条带块和校验数据条带块的数据、条带编号传输给从控制器;从控制器将条带数据备份到内存并回复备份完成;主控制器向磁盘提交各条带块,将各条带块写入到磁盘后,通知从控制器根据指定条带编号释放内存中备份的条带。
在上述系统实施例中,
主控制器在应用层请求从RAID-5读数据时,查看该数据是否在缓存中已存在,是则直接从缓存中复制数据给应用层,否则向磁盘提交读数据请求,从磁盘读取数据到缓存中,再复制给应用层;在收到从控制器读取数据的请求后,先查看请求读取的数据是否在缓存中已存在,是则从缓存中复制数据返回给从控制器,否则向磁盘提交读数据请求,从磁盘读取数据到缓存中,再返回给从控制器;
从控制器在应用层请求从RAID-5读数据时,查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;将主控制器返回的数据复制给应用层。
在上述系统实施例中,
从控制器在获知主控制器失效时,接管对RAID-5的读写权:禁止RAID-5条带写回到磁盘以及接收应用层读写数据的请求;若判断RAID-5为降级状态,将内存中的降级保护备份条带写入到磁盘上,并从内存中释放该降级保护备份条带;根据缓存标识的未写回磁盘状态的数据计算对应的条带号,允许将RAID-5条带写回到磁盘以及接收应用层读写数据请求;根据计算的条带号检查和修复校验数据。

Claims (9)

1.一种基于双控制器实现磁盘冗余阵列保护的方法,包括:
为磁盘冗余阵列配置用于应用层读写操作的缓存,所述缓存采用基树结构根据数据偏移量快速查找和修改数据;
任一控制器收到应用层向磁盘冗余阵列写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态;
所述磁盘冗余阵列为第五级别磁盘冗余阵列,该方法还包括:
所述控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,所述控制器根据应用层的读数据请求,读取所述缓存中已存在的数据,或从硬盘上读取所述缓存中不存在的数据,复制给所述应用层;
所述控制器根据应用层的读数据请求,读取所述缓存中已存在的数据,或从所述硬盘上读取所述缓存中不存在的数据,复制给所述应用层,具体包括:
所述控制器包括主控制器和从控制器,
主控制器在所述应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否已存在于缓存中,是则从所述缓存中复制数据给应用层,否则从磁盘读取数据到所述缓存中,再复制给所述应用层;
或者,
从控制器在应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;
所述主控制器在从所述从控制器收到读取数据的请求后,查看请求读取的数据是否已存在于所述缓存中,是则从所述缓存中复制数据返回给所述从控制器,否则从所述磁盘读取数据到缓存中,再返回给所述从控制器;
所述从控制器将主控制器返回的数据复制给应用层。
2.按照权利要求1所述的方法,其特征在于,
所述基树结构的根节点包含根节点层数和第一层子节点指针,每个子节点包含指向父节点和/或子节点的指针,所述基树的叶子节点为基本缓存单元,是连续的多个物理页。
3.按照权利要求1所述的方法,其特征在于,所述控制器根据应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘,具体包括:
主控制器采用按条带写的方式将应用数据条带块和校验数据条带块同时向对应的磁盘提交;当第五级别磁盘冗余阵列处于降级状态时,在写条带之前,将本次条带写涉及的应用数据条带块和校验数据条带块的数据、条带编号传输给所述从控制器;
从控制器将降级保护备份条带备份到内存并回复备份完成;
所述主控制器向磁盘提交各条带块,将各条带块写入到磁盘后,通知所述从控制器根据指定条带编号释放内存中备份的条带。
4.按照权利要求3所述的方法,其特征在于,还包括:
所述从控制器在获知所述主控制器失效时,将所述降级保护备份条带写入到磁盘,然后检查和修复所述缓存中处于所述未写回磁盘状态的数据对应的条带,从而接管对第五级别磁盘冗余阵列的读写权。
5.按照权利要求4所述的方法,其特征在于,所述从控制器在获知所述主控制器失效时,将所述降级保护备份条带写入到磁盘,然后检查和修复所述缓存中处于所述未写回磁盘状态的数据对应的条带,具体包括:
所述从控制器在获知所述主控制器失效时,禁止第五级别磁盘冗余阵列的条带写回到所述磁盘以及接收所述应用层读写数据的请求;
若判断第五级别磁盘冗余阵列为降级状态,将所述内存中的所述降级保护备份条带写入到磁盘上,并从所述内存中释放该降级保护备份条带;
根据所述缓存标识的所述未写回磁盘状态的数据计算对应的条带号stripe_index:
stripe_index=offset/(stripe_size*(disk_num-1));
式中:
所述disk_num为RAID-5磁盘个数,所述stripe_size为条带块大小,单位为字节,所述offset为相对于第五级别磁盘冗余阵列第一个字节的偏移量,单位为字节;
允许将第五级别磁盘冗余阵列的条带写回到所述磁盘以及接收所述应用层读写数据请求;
根据计算的所述条带号检查和修复校验数据,即:读取所述条带号对应的所有应用数据条带块和校验数据条带块;对条带上所有应用数据条带块数据进行异或计算,并将计算的校验数据和所述校验数据条带块的数据进行比较,若比较结果不同将所述计算的校验数据写入到校验数据条带块对应的磁盘上。
6.一种基于双控制器实现磁盘冗余阵列保护的系统,包括控制器和为磁盘冗余阵列配置的缓存,其中:
控制器,用于在收到应用层向磁盘冗余阵列写数据请求时,将要写的数据保存到缓存中,并同步备份到另一控制器,同时标识该数据为未写回磁盘状态;将缓存数据异步写回到所述磁盘上,完成所述写回后将对应的数据标识为已写回磁盘状态;
缓存,用于采用基树结构根据数据偏移量快速查找和修改数据,其中所述基树结构的根节点包含根节点层数和第一层子节点指针,每个子节点包含指向父节点和/或子节点的指针,所述基树的叶子节点为基本缓存单元,是连续的多个物理页;
所述磁盘冗余阵列为第五级别磁盘冗余阵列;
所述控制器根据所述应用层的写数据请求,将要写的应用数据条带块和校验数据条带块同时提交给对应的磁盘;或者,所述控制器根据应用层的读数据请求,读取所述缓存中已存在的数据,或从硬盘上读取所述缓存中不存在的数据,复制给所述应用层;
所述控制器包括主控制器和从控制器,
主控制器在所述应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否已存在于缓存中,是则从所述缓存中复制数据给应用层,否则从磁盘读取数据到所述缓存中,再复制给所述应用层;在从从控制器收到读取数据的请求后,查看请求读取的数据是否已存在于所述缓存中,是则从所述缓存中复制数据返回给所述从控制器,否则从所述磁盘读取数据到缓存中,再返回给所述从控制器;
所述从控制器在应用层请求从第五级别磁盘冗余阵列读数据时,查看该数据是否在缓存中是否存在,是则直接从缓存中复制数据给应用层,否则向主控制器请求读取数据;将所述主控制器返回的数据复制给所述应用层。
7.按照权利要求6所述的系统,其特征在于,其中:
主控制器,用于采用按条带写的方式将应用数据条带块和校验数据条带块同时向对应的磁盘提交;当第五级别磁盘冗余阵列处于降级状态时,在写条带之前,将本次条带写涉及的应用数据条带块和校验数据条带块的数据、条带编号传输给从控制器;在得到备份完成的回复后,向磁盘提交各条带块,将各条带块写入到磁盘后,通知所述从控制器根据指定条带编号释放内存中的降级保护备份条带
从控制器,用于将降级保护备份条带备份到内存并回复备份完成。
8.按照权利要求7所述的系统,其特征在于,
所述从控制器在获知所述主控制器失效时,将所述降级保护备份条带写入到磁盘,然后检查和修复所述缓存中处于所述未写回磁盘状态的数据对应的条带。
9.按照权利要求8所述的系统,其特征在于,
所述从控制器在获知所述主控制器失效时,禁止第五级别磁盘冗余阵列的条带写回到所述磁盘以及接收所述应用层读写数据的请求;若判断第五级别磁盘冗余阵列为降级状态,将所述内存中的所述降级保护备份条带写入到磁盘上,并从所述内存中释放该降级保护备份条带;根据所述缓存标识的所述未写回磁盘状态的数据计算对应的条带号,允许将第五级别磁盘冗余阵列的条带写回到所述磁盘以及接收所述应用层读写数据请求;根据计算的所述条带号检查和修复校验数据。
CN201210120724.0A 2012-04-23 2012-04-23 基于双控制器实现磁盘冗余阵列保护的方法及系统 Active CN102681794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210120724.0A CN102681794B (zh) 2012-04-23 2012-04-23 基于双控制器实现磁盘冗余阵列保护的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210120724.0A CN102681794B (zh) 2012-04-23 2012-04-23 基于双控制器实现磁盘冗余阵列保护的方法及系统

Publications (2)

Publication Number Publication Date
CN102681794A CN102681794A (zh) 2012-09-19
CN102681794B true CN102681794B (zh) 2014-12-10

Family

ID=46813794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210120724.0A Active CN102681794B (zh) 2012-04-23 2012-04-23 基于双控制器实现磁盘冗余阵列保护的方法及系统

Country Status (1)

Country Link
CN (1) CN102681794B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049225A (zh) * 2013-01-05 2013-04-17 浪潮电子信息产业股份有限公司 一种双控双活的存储系统
CN103092786A (zh) * 2013-02-25 2013-05-08 浪潮(北京)电子信息产业有限公司 一种双控双活存储控制系统及方法
CN103309820A (zh) * 2013-06-28 2013-09-18 曙光信息产业(北京)有限公司 磁盘阵列缓存的实现方法
CN103488435B (zh) * 2013-09-24 2017-08-04 华为技术有限公司 Raid子系统及其数据读写方法
CN103729150A (zh) * 2014-01-14 2014-04-16 浪潮电子信息产业股份有限公司 一种在存储阵列中处理Write Hole的方法
CN104049918B (zh) * 2014-07-03 2016-12-07 浪潮集团有限公司 一种双控存储服务器的缓存管理方法
CN105808154B (zh) * 2014-12-31 2019-05-24 深圳神州数码云科数据技术有限公司 基于位图的双控制器的高速缓冲存储器回写方法及装置
CN105243031B (zh) * 2015-09-17 2018-01-26 浪潮(北京)电子信息产业有限公司 一种缓存分区分配空闲页的方法及装置
CN105260143A (zh) * 2015-11-09 2016-01-20 深圳市迪菲特科技股份有限公司 一种双控磁盘阵列间的磁盘数据传输方法与装置
CN105528180B (zh) * 2015-12-03 2018-12-07 浙江宇视科技有限公司 一种数据存储方法、装置及设备
CN105912264A (zh) * 2016-04-01 2016-08-31 浪潮电子信息产业股份有限公司 一种升级硬盘扩展器的方法及系统、一种硬盘扩展器
CN105955841B (zh) * 2016-04-18 2018-09-21 华中科技大学 一种raid双控制器利用磁盘进行写缓存镜像的方法
CN107870731B (zh) * 2016-09-23 2021-07-27 伊姆西Ip控股有限责任公司 独立盘冗余阵列系统的管理方法和电子设备
CN106648473B (zh) * 2016-12-30 2019-09-24 郑州云海信息技术有限公司 一种双控raid同步方法及装置
CN108664354A (zh) * 2017-04-01 2018-10-16 华为技术有限公司 一种数据镜像方法及存储系统
CN109407998B (zh) * 2018-11-09 2022-02-18 郑州云海信息技术有限公司 一种缓存中io流同步的方法、系统及相关组件
CN111104254A (zh) * 2019-11-29 2020-05-05 北京浪潮数据技术有限公司 存储系统数据刷写方法、装置、设备及可读存储介质
CN111176845A (zh) * 2019-12-29 2020-05-19 北京浪潮数据技术有限公司 一种双控制器的数据读取方法及相关装置
CN113127388A (zh) * 2021-04-13 2021-07-16 郑州云海信息技术有限公司 一种元数据写入方法及相关装置
CN114706715B (zh) * 2022-06-07 2022-08-30 深圳市途佳智慧科技有限公司 一种基于bmc的分布式raid的控制方法、装置、设备及介质
CN115543692B (zh) * 2022-11-16 2023-03-28 苏州浪潮智能科技有限公司 Raid控制器恢复元数据的方法、装置、设备及介质
CN115826876B (zh) * 2023-01-09 2023-05-16 苏州浪潮智能科技有限公司 数据写入方法、系统、存储硬盘、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4754852B2 (ja) * 2005-03-15 2011-08-24 富士通株式会社 ストレージ制御装置および方法
US20080140724A1 (en) * 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
CN101776983B (zh) * 2009-01-13 2015-09-16 中兴通讯股份有限公司 磁盘阵列中双控制器信息的同步方法、及磁盘阵列系统
CN102023809B (zh) * 2009-09-21 2012-10-17 成都市华为赛门铁克科技有限公司 存储系统、从存储系统读取数据的方法及写入数据的方法

Also Published As

Publication number Publication date
CN102681794A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN102681794B (zh) 基于双控制器实现磁盘冗余阵列保护的方法及系统
US11726697B2 (en) Synchronous replication
RU2596585C2 (ru) Способ отправки данных, способ приема данных и устройство хранения данных
US7975168B2 (en) Storage system executing parallel correction write
US10365983B1 (en) Repairing raid systems at per-stripe granularity
US8595549B2 (en) Information system and I/O processing method
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US7587631B2 (en) RAID controller, RAID system and control method for RAID controller
CN101755257B (zh) 管理在不同的网络上将写入从首要存储器拷贝到次要存储器
WO2014190501A1 (zh) 数据恢复方法、存储设备和存储系统
US12105983B2 (en) Resilient implementation of client file operations and replication
WO2012089152A1 (zh) 一种文件系统内实现独立磁盘冗余阵列保护的方法及装置
TW201107981A (en) Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system
JP4990064B2 (ja) ストレージシステム及びバックアップ方法
CN116204137B (zh) 基于dpu的分布式存储系统、控制方法、装置及设备
CN112328182B (zh) 一种raid数据管理方法、装置和计算机可读存储介质
US10684918B2 (en) Granular dump backup restart
US11853166B2 (en) Storage system recovery without data retransmission
US20240176712A1 (en) Optimizing data resynchronization in cyber recovery solutions
US20210073092A1 (en) Distributed failover of a back-end storage director
US9916371B1 (en) Methods computer readable media, and systems for copying data between mirrored systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant