CN108984107A - 提高存储***的可用性 - Google Patents
提高存储***的可用性 Download PDFInfo
- Publication number
- CN108984107A CN108984107A CN201710409906.2A CN201710409906A CN108984107A CN 108984107 A CN108984107 A CN 108984107A CN 201710409906 A CN201710409906 A CN 201710409906A CN 108984107 A CN108984107 A CN 108984107A
- Authority
- CN
- China
- Prior art keywords
- driver
- response
- data
- write request
- storage system
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2058—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2069—Management of state, configuration or failover
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2087—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了存储***、用于存储***的方法以及计算机程序产品。该方法包括确定存储***的驱动器阵列中的第一驱动器暂时不可用。该方法还包括:将第一驱动器设置为处于冻结状态。该方法还包括:响应于在冻结状态期间接收到针对第一驱动器的写入请求,将写入请求挂起或记录到驱动器阵列中的第二驱动器中。该方法还包括:响应于在冻结状态期间接收到针对第一驱动器的读取请求,通过驱动器阵列中的第三驱动器中存储的数据来重构读取请求所针对的数据。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于存储***的方法、存储***以及计算机程序产品。
背景技术
企业、组织或者政府部门等通常需要企业级的存储***来存储各类数据。为了避免给企业、组织或政府部门带来潜在的风险,这种企业级的存储***需要具有很高的可用性,以最小化这种存储***的停机时间。在生产环境中,停机时间一般是由以下两种情况带来的。一种情况是***脱机,因此完全无法工作,例如在维修期间,对软件或设备的固件进行更新以修复某种已知的问题。另一种情况是***暂时卡住而处于不可服务的状态,此时,***或者***的某些组件会呈现出严重的性能衰退,这只能够提供很糟糕的用户体验。这两种情况对于业务***而言都是不可接受的,都需要尽可能地避免。
独立磁盘冗余阵列(RAID)通常被认为是一种解决驱动器级的高可用性问题的较好的方法。RAID将多个物理驱动器组合成单个的逻辑单元来提高存储***的可用性。但是,传统的RAID技术及其优化在实际的生产环境中工作得并不是很好,而且也不能很好地支持虚拟存储和分布式存储应用。虽然有些工业产品能够解决RAID的某些问题,但是从更高的角度来说,这些产品并不具有适合于不同类型的驱动器的高可用性的通用设计。
发明内容
本公开的实施例提供了一种用于提高存储***的可用性的方案。
根据本公开的第一方面,提供了一种用于存储***的方法,该存储***包括驱动器阵列。该方法包括确定驱动器阵列中的第一驱动器暂时不可用。该方法还包括:将第一驱动器设置为处于冻结状态。该方法还包括:响应于在冻结状态期间接收到针对第一驱动器的写入请求,将写入请求挂起或记录到驱动器阵列中的第二驱动器中。该方法还包括:响应于在冻结状态期间接收到针对第一驱动器的读取请求,通过驱动器阵列中的第三驱动器中存储的数据来重构所述读取请求所针对的数据。
根据本公开的第二方面,提供了一种存储***。该存储***包括驱动器阵列和控制器。该控制器被配置为确定驱动器阵列中的第一驱动器暂时不可用。该控制器还被配置为将第一驱动器设置为处于冻结状态。该控制器还被配置为响应于在冻结状态期间接收到针对第一驱动器的写入请求,将写入请求挂起或记录到驱动器阵列中的第二驱动器中。该控制器还被配置为响应于在冻结状态期间接收到针对第一驱动器的读取请求,通过驱动器阵列中的第三驱动器中存储的数据来重构所述读取请求所针对的数据。
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了常规的包括数据存储***的数据存储环境的示意图;
图2示出了根据本公开的示例实施例的存储***的框图;
图3示出了根据本公开的示例实施例的用于存储***的方法的流程图;
图4示出了根据本公开的示例实施例的在存储***中处理针对冻结的驱动器的读写请求的方法的流程图;
图5示出了根据本公开的示例实施例的用于存储***的同步方法的流程图;
图6示出了根据本公开的示例实施例的在同步期间处理新的写入请求的方法的流程图;
图7示出了根据本公开的示例实施例的用于存储***的异常处理方法的流程图;
图8示出了根据本公开的示例实施例的存储***的框图;以及
图9示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
图1示出了常规的包括数据存储***的数据存储环境100的示意图。如图1所示,环境100包括第一客户机110、第二客户机120、服务器130和数据存储***140。
第一客户机110和第二客户机120是可以通过网络连接到服务器130的用户工作站,例如台式计算机、膝上型计算机、平板电脑、智能手机等。第一客户机110、第二客户机120上运行有客户端应用程序来与服务器130互相协作,例如网页浏览器、电子邮件客户端应用程序。服务器130上运行有相应的服务程序,来为第一客户机110、第二客户机120提供相应的服务,例如数据库服务、电子邮件服务等。
数据存储***140可以为服务器130提供存储支持。数据存储***140可以包括磁盘阵列145。磁盘阵列145可以是由磁盘(有时也称为驱动器)构成的阵列。常用的驱动器通常可以包括传统的硬盘驱动器(HDD)、固态盘驱动器(SSD)、高密度驱动器(如叠瓦式磁记录(SMR)驱动器)、客户机操作***(OS)中的虚拟驱动器(虚拟机)以及互联网小型计算机***接口(iSCSI)驱动器。对于这些通用的驱动器而言,实现高可用性存在着下面所描述的诸多挑战。
物理驱动器(例如,HDD、SSD、SMR驱动器)的固件在更新时需要一定的停机时间。如果需要更新驱动器的固件,则用户必须停止工作,或者甚至关闭***。只有在维护时间之后***才能恢复服务。
大部分SSD和SMR驱动器在驱动器固件内部具有垃圾收集(GC)功能。例如,SSD的垃圾收集功能不断地将有效页面移动到其它块上,以回收更多的空间。但是,这种操作的代价通常是非常大的,并且在垃圾收集期间,SSD和SMR驱动器的性能都会显著地下降。
在数据领域(DD)产品中,存在着一个“慢盘”现象:在某些时候,通常是在存在很高的输入输出压力的情况下,一个驱动器由于内部的硬件错误或固件缺陷而暂时(数十秒)变得很慢。由于后端的存储是基于RAID的,所以整个RAID的性能会由于慢盘现象而衰退得很严重,最终导致意想不到的输入输出时延。
虚拟驱动器和分布式驱动器也存在这种暂时不可用的问题。对于虚拟驱动器而言,其存储对象具有一个被称为全部路径失效(APD,All Path Down)的特殊状态,该状态中,通往存储设备的所有路径都丢失或者存储设备被移除。这种状态被认为是短暂的,因为存储设备可能会恢复联机。对于分布式驱动器,例如iSCSI驱动器,其常常可能由于突然的网络业务尖峰或者某些短暂的网络问题而受到暂时的网络连接问题的干扰。
一个驱动器的暂时性问题(例如,上面提到的垃圾回收以及慢盘)使得整个***呈现不可接受的性能回退,甚至于使得***对任何用户输入都不进行响应,这种情况在实际生产环境中比比皆是。另一方面,为了提高虚拟存储***以及分布式存储***的可用性,也需要提供有效的方案来解决上面提到的虚拟驱动器和iSCSI驱动器的问题。
RAID通常被认为是一种确保驱动器级的可用性的有效方法,但是传统的RAID技术及其优化很少关注普遍存在的慢盘现象,因此在实际的生产环境中表现得并不是很好。而且,传统的RAID技术及其优化也很少关注虚拟驱动器的APD问题以及iSCSI驱动器的问题,因此无法支持虚拟存储应用和分布式存储应用。
虽然有些工业产品能够解决传统RAID及其优化所存在的问题,但是这些产品并不具有通用的设计使得其能够适用于不同类型的驱动器的高可用性。例如,NetApp DataONTAP可以利用RAID来支持驱动器固件更新而无需使工作停止,但是它并没有在其高可用性设计中考虑垃圾收集问题、虚拟驱动器的问题、iSCSI驱动器的问题。这些产品的工作看起来更像是一种变通的方案,而不是一个通用的可扩展的方案。
为了至少部分地解决上述问题以及其它潜在问题,本公开的实施例提供了一种用于提高存储***的可用性的方案。这种方案可以基于RAID。在该方案中,给驱动器阵列中暂时不可用的驱动器引入一个被称为“冻结状态”的特殊状态。在冻结状态期间,对于从暂时不可用的驱动器读取数据的读取请求而言,该读取请求所请求的位于暂时不可用的驱动器上的数据将由驱动器阵列中的其它驱动器来重构。在冻结状态期间,对于向暂时不可用的驱动器写入数据的写入请求而言,该写入请求将被挂起或被记录到其它地方(例如,驱动器阵列中的备用驱动器),在冻结状态之后,记录在其它地方的写入请求将被同步到已恢复的驱动器。可以用两种方式来触发这种冻结状态,一种方式是由在线的固件更新过程触发冻结状态。另一种方式是由驱动器状态监视器来触发冻结状态。驱动器状态监视器可以收集与驱动器有关的统计数据,并以智能的方式来检测慢盘、垃圾回收运行、与虚拟驱动器有关的暂时性问题或者异常的ISCSI驱动器问题。
这种冻结状态的设定使得存储***在整个冻结状态期间都是可用的。而且由于驱动器状态监测器能够对不同类型的驱动器的问题进行检测,所以本公开的实施例所提供的方案通常能够用于不同类型的驱动器,并具有可扩展性。以下将参考图2至图9来进一步详细描述本公开的实施例。
图2示出了根据本公开的示例实施例的存储***200的框图。应当理解,图2中所示的某些部件是可以省略的,而且在其他实施例中存储***200还可以包括没有在此示出的其他部件。也即,图2所述的框图仅仅是为了在一个示例环境中描述本公开的实施例,以便帮助本领域技术人员理解在此描述的机制和原理,而无意以任何方式限制本公开的范围。
在图2所示的***中,除了驱动器阵列(例如RAID)中的存储设备(例如,物理驱动器262、虚拟驱动器264、iSCSI目标266)以外,存储***200还可以包括文件***210、存储管理器220、驱动器高可用性框架230、磁盘驱动程序260等各种软件组件和硬件组件。
对于数据路径而言,文件***210可以从应用接收输入输出请求并将输入输出请求映射到底层的RAID层。期望的是,文件***210不会意识到RAID中的任何磁盘驱动器的暂时性问题。在面对驱动器的暂时性问题时,确保存储***200的高可用性是驱动器高可用性框架230的责任。
存储管理器220主要工作于控制路径中。例如,存储管理器220可以与RAID模块一起工作以基于磁盘组来创建RAID设备。又例如,存储管理器220可以用于更新底层磁盘的固件。优选地,响应于RAID中的磁盘开始固件更新过程,存储管理器220可以请求驱动器固件控制单元242将该磁盘设置为处于冻结状态,并开始更新过程。
在RAID中,输入输出命令被分解并被重新映射到每个磁盘的驱动程序260。磁盘驱动程序260用于进行输入输出命令翻译以及与硬件注册表有关的管理和控制。
物理驱动器262是指物理平台上的驱动器,例如HDD、SSD、SMR驱动器等。一个驱动器的固件可以由SCSI命令(“写缓冲区”)来更新和再次激活。更新过程通常是在几分钟的时间内完成的,并且可以在硬重置或重启之后完成。对于诸如SSD和SMR驱动器之类的驱动器而言,可以基于其固件策略而在某个时刻运行垃圾收收集功能。
虚拟驱动器264可以表示管理程序中的存储设备,其格式包括虚拟机文件***(VMFS)、网络文件***(NFS)或裸设备映射(RDM)。iSCSI目标266是iSCSI协议的目标存储,是一种分布式的驱动器。在发起端,iSCSI目标266被输出作为iSCSI驱动器。
驱动器高可用性框架230用于响应于驱动器阵列中的某个驱动器暂时不可用来确保存储***200的高可用性。驱动器高可用性框架230包括驱动器固件控制单元242、驱动器监视器244以及优化的RAID模块232。其中,驱动器固件控制单元242充当框架230的接口,用于提供非中断的驱动器固件更新功能。
驱动器监视器242可以从HDD、SSD、SMR驱动器、虚拟驱动器以及iSCSI驱动器等等之类的不同类型的驱动器收集统计数据,并及时地检测驱动器状态的改变,例如驱动器从可用状态改变到暂时不可用状态。驱动器监视器242可以包括慢盘检测器246、虚拟盘问题检测器248、垃圾收集检测器250、iSCSI问题检测器252以及用于检测其它类型的驱动器的暂时性问题的检测器。
慢盘检测器246可以响应于驱动器阵列中的某个驱动器的输入输出时延超过一阈值来确定该驱动器出现慢盘问题,从而确定该驱动器是暂时不可用的。发明人发现,对于数据领域的后端存储而言,同一RAID中的每一个驱动器的输入输出模式都是非常类似的。例如,对于同一RAID中健康的驱动器而言,它们的输入输出队列的深度不可能存在很大的差别。利用这一发现,在一些实施例中,可以事先在RAID中的每一个驱动器都健康的情况下,收集这些健康的驱动器的输入输出时延信息(例如,输入输出队列深度),并对收集到的信息进行统计分析以获得RAID中的驱动器在健康情况下的输入输出时延分布情况,例如健康驱动器的输入输出时延的均值和方差。根据所获得的均值和发差,可以计算出用于确定一个驱动器是否出现慢盘问题的阈值。在实际使用时,如果一个驱动器的输入输出时延超出该阈值,则可以确定该驱动器出现慢盘问题,是暂时不可用的。在一些实施例中,慢盘检测器246也可以利用驱动器上的错误来检测慢盘问题,从而确定该驱动器是暂时不可用的。
虚拟驱动器问题检测器248可以响应于去往虚拟驱动器的全部路径都丢失或者虚拟驱动器被移除,而确定虚拟驱动器是暂时不可用的。在一些实施例中,虚拟驱动器问题检测器248可以在客户OS中运行,以便与管理程序的特定工具进行通信来获得虚拟驱动器的状态,其中所述特定工具可以检查一个数据存储的状态是全部路径丢失、正常、还是永久数据丢失(PDL)。
垃圾收集检测器250可以响应于SSD或SMR驱动器正在进行垃圾收集过程,而确定该SSD或SMR驱动器是暂时不可用的。如果垃圾收集功能正在运行,那么SSD或SMR驱动器的读写时延将具有一个尖峰。因此,在一些实施例中,垃圾收集检测器250可以通过监测平均的输入输出时延来检测是否发生了垃圾收集过程。另外,有些驱动器厂商会提供特定的接口来指示垃圾收集过程正在进行。因此,在一些实施例中,垃圾收集检测器250也可以利用这种接口来得知垃圾收集过程正在进行。
对于诸如iSCSI驱动器之类的分布式驱动器而言,iSCSI问题检测器252可以响应于网络业务的突发,确定该虚拟驱动器是暂时不可用的。在一些实施例中,iSCSI问题检测器252可以收集与网络有关的统计数据,以检测网络业务的突发,这些数据可以包括分组丢失率、往返时间(RTT)时延改变、TCP拥塞窗大小、吞吐量改变等等。
此外,驱动器监视器244还可以包括用于检测其它类型的驱动器是否暂时不可用的检测器。由于驱动器监视器244能够检测包括HDD、SSD、SMR驱动器、虚拟驱动器、分布式驱动器在内的各种驱动器是否是暂时不可用的,因此,本公开的实施例提供的方案对HDD、SSD、SMR驱动器、虚拟驱动器、分布式驱动器是通用的。另外,对于未来可能出现的新类型的驱动器而言,可以通过在驱动器监视器244中增加一个检测器来检测新类型的驱动器是否暂时不可用,而无须对其它部分进行调整,因此,本公开的实施例所提供的方案是易于扩展的。此外,驱动器监视器244通过利用不同类型的驱动器的统计数据能够主动地检测出暂时不可用的驱动器。
优化的RAID模块232运行驱动器高可用性框架230的核心逻辑。除了传统的RAID的职责以外,优化的RAID模块232还为进入的针对暂时不可用驱动器的读写请求进行服务,这提高了整个存储***的可用性。优化的RAID模块232包括读取单元234、写入单元236、同步单元238和驱动器状态管理单元240。
驱动器状态管理单元240对驱动器阵列中的驱动器的状态进行管理。驱动器状态管理单元240可以响应于驱动器监视器244检测出某个驱动器暂时不可用,而将暂时不可用的驱动器设置为处于冻结状态。驱动器状态管理单元240也可以响应于暂时不可用的驱动器变为可用,而将该驱动器设置为处于正常状态。驱动器状态管理单元240也可以响应于暂时不可用的驱动器的冻结状态超时,而将该驱动器设置为处于失败状态。
在驱动器阵列中的某个驱动器处于冻结状态期间,对于从该冻结的驱动器读取数据的读取请求而言,读取单元234可以从驱动器阵列中的其他驱动器读取数据,并通过RAID重构算法利用所读取的数据来重构读取请求所请求的数据。
对于向冻结的驱动器写入数据的写入请求而言,写入单元236可以利用有限的存储缓冲区来挂起写入请求。这对时间很短的驱动器问题而言是很有用的。如果在存储缓冲区中挂起的写入请求的数目超出预定的阈值数目,则写入单元236将所有挂起的写入请求注入到存储在RAID的备用驱动器中的文件中,例如日志文件。在一些实施例中,写入单元236可以将写入请求要向冻结的驱动器写入的数据块写入到该文件中。写入单元236对与冻结的驱动器相关联的同步指示进行维护,同步指示表示冻结的驱动器上的块是否要响应于冻结的驱动器变为可用而被同步。例如,在示例性实施例中,可以用比特图来实现同步指示,比特图中的一个比特对应着冻结的驱动器上的一个块,该比特的值表示响应于冻结的驱动器变为可用,是否需要将日志文件中的相应数据块同步到该驱动器的对应块。例如,如果比特图中的某个比特被设置为“1”,则表示相应的冻结的驱动器上的与该比特对应的块是脏的,并且响应于冻结的驱动器恢复为可用,应当对该块进行同步。
同步单元238可以响应于触发事件而请求冻结的驱动器开始同步过程,利用上述比特图将记录在备用盘上的数据块复制到该驱动器上。触发事件可以是冻结的驱动器变为可用,例如包括:驱动器固件更新完成、垃圾收集完成、虚拟驱动器从APD状态恢复或者慢盘恢复成健康盘。具体地,如果比特图中的某个比特的值为“1”,则同步单元238可以将备用盘上的相应数据块复制到该驱动器上的与该比特对应的块。
下面结合图3-图7,来详细描述驱动器高可用性框架230的操作。图3示出了根据本公开的示例实施例的用于存储***的方法300的流程图,该存储***可以包括驱动器阵列,驱动器阵列可以由HDD、SSD、SMR驱动器、虚拟驱动器或分布式驱动器组成。
在框302,确定驱动器阵列中的第一驱动器暂时不可用。在本公开的实施例中,“暂时不可用”是指第一驱动器暂时处于不可服务的状态。可以通过检测预定事件来确定第一驱动器暂时不可用。在一些实施例中,预定事件可以包括第一驱动器开始在线固件更新过程。可以响应于第一驱动器开始在线固件更新过程,而确定第一驱动器暂时不可用。
在一些实施例中,预定事件可以包括第一驱动器正在进行垃圾收集过程。具体地,可以基于第一驱动器的输入输出时延超出一阈值来判断第一驱动器正在进行垃圾收集过程。该阈值可以是通过对驱动器阵列中的驱动器在正常情况下的输入输出时延进行统计分析而预先确定的。附加地或备选地,也可以基于第一驱动器的厂商所提供的特定接口来获知第一驱动器正在进行垃圾收集过程。
在一些实施例中,预定事件可以包括第一驱动器的输入输出时延超过阈值。这种预定事件可以用来检测第一驱动器变慢,即出现慢盘现象。具体地,该阈值可以是通过对驱动器阵列中的驱动器处于正常情况下的输入输出时延进行统计分析预先确定的。驱动器的输入输出时延可以由该驱动器的输入输出队列深度来体现,因此,该阈值也可以通过对驱动器阵列中的驱动器处于正常情况下的输入输出队列深度进行统计分析而预先确定。附加地或备选地,预定事件还可以包括第一驱动器上出现错误,即也可以基于第一驱动器上出现错误来确定第一驱动器出现慢盘现象。
在一些实施例中,预定事件可以包括第一驱动器被移除或者去往所述第一驱动器的全部路径丢失。具体地,可以通过与虚拟驱动器的管理程序中的特定工具进行通信来获知该虚拟驱动器是处于全部路径丢失状态、正常状态、还是永久数据丢失状态。
在一些实施例中,预定事件可以包括网络业务的突发。具体地,可以通过对与网络有关的统计数据进行收集来检测网络业务的突发。这些数据可以包括分组丢失率、往返延迟时间、TCP拥塞时间窗大小和吞吐量。
在框304,将第一驱动器设置为处于冻结状态。在框306,响应于在冻结状态期间接收到针对第一驱动器的写入请求,将写入请求挂起或记录到驱动器阵列中的第二驱动器。在一些实施例中,第二驱动器是驱动器阵列中的备用驱动器。在框308,响应于在冻结状态期间接收到针对第一驱动器的读取请求,通过驱动器阵列中的第三驱动器(例如除了第一驱动器和备用驱动器以外的其它驱动器)中存储的数据来重构读取请求所针对的数据。
在本公开的实施例中,第一驱动器的冻结状态可以由在线固件更新过程触发,也可以通过对第一驱动器的状态进行监测来触发。这将各种类型的驱动器存在的暂时性不可用问题(例如,在线固件更新、垃圾收集影响、慢盘现象、全部路径丢失)均考虑在内,因此这些实施例提供了一种通用的可扩展的方案来提高存储***的可用性。通过设置冻结状态,解决了由暂时性问题(例如慢盘现象、垃圾收集问题、虚拟驱动器问题或分布式驱动器问题)所引起的性能回退,从而使得存储***的性能更高。
下面参考图4,其示出了在存储***中处理针对冻结的驱动器的读写请求的方法400的流程图,方法400描述了图3中所示的方法300中的框306、308的动作。该方法可以由图2中的读取单元234和写入单元236来执行。
在框402,在第一驱动器的冻结状态期间,接收针对第一驱动器的请求。在一些实施例中,该请求可以是向第一驱动器写入数据的写入请求。写入请求可以包括要写入的数据(即,写入数据)以及要被写入的地址(即,写入地址)。在一些实施例中,该请求可以是从第一驱动器读取数据的读取请求。读取请求可以包括要被读取的地址(即,读取地址)。
在框404,确定该请求是读取请求还是写入请求。在框408,响应于该请求是写入请求,确定已在缓冲区中排队的写入请求的数目是否超过阈值数目。该缓冲区可以充当用于存储挂起的写入请求的先入先出队列。响应于第一驱动器变为可用,该缓冲区中的挂起的写入请求可以按照进入队列的先后顺序而被执行。这种有限的缓冲区对于时间很短的驱动器问题是非常有用的,其能够确保响应于驱动器在很短的时间之后变为可用,来执行在这个很短的时间内针对该驱动器的写入请求,从而使存储***的性能受益。
在框410,响应于已在缓冲区中排队的写入请求的数目没有超出阈值数目,将在框402接收到的请求置于缓冲区中,并更新在缓冲区中排队的写入请求的数目。
在框412,响应于在缓冲区中排队的写入请求的数目超出了阈值数目,将缓冲区中的全部请求记录到存储在驱动器阵列中的备用驱动器上的文件。在一些实施例中,可以将缓冲区中的每一个写入请求所要写入到第一驱动器上的数据块写入到该文件中。
在框414,对文件中的与第一驱动器相关联的同步指示进行更新。同步指示表示第一驱动器上的块是否要响应于第一驱动器变为可用而被同步。例如,在示例性实施例中,可以用比特图来实现同步指示。比特图中的每一个比特对应于第一驱动器上的一个块。比特图中的比特的值表示第一驱动器上的相应块是否需要响应于第一驱动器变为可用而被同步。在一些实施例中,对比特图进行更新可以包括在比特图中将与文件中记录的每一个写入请求的写入地址相对应的比特的值设置为“1”,而将比特图中的其它比特设置为“0”。
在框406,响应于接收到的请求是读取请求,从驱动器阵列中的第三驱动器(例如,除了备用驱动器和第一驱动器之外的驱动器)读取数据。在步骤408,利用所读取的数据来重构该读取请求所请求的数据。在一些实施例中,可以通过RAID算法进行重构。
在驱动器暂时不可用期间(即冻结状态期间),对于读取请求,从其它驱动器重构所请求的数据,对于写入请求,将其挂起或写入备用驱动器。这样,即使在驱动器阵列中的某个驱动器暂时不可用期间,整个存储***依然能够对用户输入进行快速的响应,而没有呈现严重的性能衰退,从而提供了更好的用户体验。
图5示出了根据本公开一个实施例的用于存储***的同步方法500的流程图。方法500可以响应于冻结的驱动器(为了便于描述,在对方法500的描述中,将冻结的驱动器称为第一驱动器)变为可用,利用方法400中的同步指示将在方法400中记录到存储在备用驱动器中的文件上的数据块同步到第一驱动器。
在框502,响应于第一驱动器变为可用,将第一驱动器设置为同步状态,以开始同步过程。同步过程的触发事件可以包括驱动器固件更新过程完成、垃圾收集完成、虚拟存储器从全部路径丢失状态恢复或者慢盘恢复到健康状态。
在框504,将文件中的第一数据块复制到第一驱动器。具体地,如果在比特图中对应于第一数据块的比特的值为“1”,则将第一数据块复制到第一驱动器的相应块中。
在框506,确定文件中的所有数据块是否均复制完成。在框508,响应于文件中还有未被复制到第一驱动器的数据块,将文件中的下一数据块复制到第一驱动器。具体地,如果在比特图中对应于该数据块的比特的值为“1”,则将该数据块复制到第一驱动器的相应块中。在框510,响应于文件中的所有数据块均已复制完成,将第一驱动器设置为处于正常状态。
在同步过程期间,可能会有新的写入请求被映射到第一驱动器。需要认真地对待这一情况。如果先将新的写入请求所要写入的数据写到第一驱动器,之后同步过程再将文件中记录的旧数据复制到新的写入请求所写入的地址,那么在该地址中存储的将是陈旧的数据,这种情况是不希望发生的。
图6示出了根据本公开的一个实施例的在同步期间处理新的写入请求的方法600的流程图。方法600描述了在图5所示的同步方法500的执行期间如何处理新的写入请求。该方法可以由图2中所示的同步单元238来执行。
在框602,在第一驱动器进行同步过程期间,接收针对第一驱动器的新的写入请求。新的写入请求包括要写入的数据以及写入地址。如果先将新的写入请求所要写入的数据写到第一驱动器,之后同步过程再将文件中记录的旧数据复制到新的写入请求所写入的地址,那么在该地址中存储的将是陈旧的数据,这种情况是不希望发生的
在框604,确定比特图中的与新的写入请求的写入地址相对应的比特的值是否为0。如上面所描述的,如果该比特的值为1表示对应的块是脏的,需要在同步过程中被同步,否则表示该块在同步过程中不需要被同步。如果在框604确定出比特图中的与新的写入请求的写入地址相对应的比特的值为0,则方法600前进到框610,否则方法600前进到框606。
在框606,确定记录在备用驱动器的文件中的与该写入地址对应的数据是否已经被复制到第一驱动器。如果在框606确定出记录在备用驱动器的文件中的与该写入地址对应的数据已经被复制到第一驱动器,则方法600前进到框610,否则方法600前进到框608。
在框608,丢弃记录在备用驱动器的文件中的与该写入地址相对应的数据,并将比特图中与该写入地址相对应的比特的值设置为0。在框610将新的写入请求所要写入的数据写入到第一驱动器的相应地址上。
在方法600中,如果备用驱动器上的某个数据块尚未被复制到第一驱动器的相应地址上,并且接收到向该地址写入新数据的请求,那么通过将比特图中的对应比特的值设置为0,能够确保写入到该地址上的数据是最新的,而不是存储在备用驱动器上的旧的数据。
在本公开的实施例中,冻结状态被认为是一个短暂的过程。如果在有限的时间内不能恢复到正常状态,那么将启动异常处理程序。图7示出了根据本公开示例实施例的用于存储***的异常处理方法700的流程图。方法700描述了在图3中所示的方法300所设置的冻结状态超时之后的异常处理过程。
在框702,确定驱动器的冻结状态超时。在一些实施例中,可以响应于驱动器的固件更新超时来确定驱动器的冻结状态超时。在一些实施例中,可以响应于检测到处于“全部路径丢失”状态的数据存储变为“永久数据丢失”状态,来确定驱动器的冻结状态超时。在一些实施例中,可以响应于检测到慢盘存在不可纠正的错误,来确定驱动器的冻结状态超时。
在框704,将驱动器设置为处于失败状态。在框706,对驱动器上存储的全部数据进行重构。在一些实施例中,可以利用常规的RAID重构算法来对该驱动器上存储的全部数据进行重构,并将重构的数据存储在备用盘上。
下面参考图8,图8示出了根据本公开一个实施例的存储***800的框图。存储***800可以包括控制器810和驱动器阵列820。驱动器阵列820可以由HDD、SSD、SMR驱动器、虚拟驱动器以及iSCSI驱动器组成。
控制器810可以被配置为确定驱动器阵列820中的第一驱动器暂时不可用。在一些实施例中,控制器810可以通过检测预定事件来确定第一驱动器暂时不可用。预定事件可以包括以下至少一项:第一驱动器开始固件更新过程,第一驱动器正在进行垃圾收集过程,第一驱动器变慢(即出现慢盘现象),第一驱动器被移除,去往所述第一驱动器的全部路径丢失,以及网络业务的突发。
控制器810还可以被配置为将第一驱动器设置为处于冻结状态。控制器810可以被配置为响应于在冻结状态期间接收到针对所述第一驱动器的写入请求,将写入请求挂起或记录到所述驱动器阵列中的第二驱动器中。控制器810可以被配置为响应于在冻结状态期间接收到针对第一驱动器的读取请求,通过驱动器阵列中的第三驱动器中存储的数据来重构读取请求所针对的数据。在一些实施例中,第二驱动器可以是驱动器阵列中的备用驱动器。
在一些实施例中,控制器810还可以被配置为:接收针对第一驱动器的读取请求;读取第三驱动器中存储的数据;以及利用所读取的数据来重构读取请求所针对的数据。
在一些实施例中,控制器810还可以被配置为:接收针对第一驱动器的写入请求;将该写入请求置于缓冲区中;响应于所述缓冲区中的写入请求的数目超出阈值数目,将所述缓冲区中的写入请求所要写入的数据记录到存储在第二驱动器处的文件中;以及更新与第一驱动器相关联的同步指示,同步指示表示第一驱动器上的块是否要响应于第一驱动器变为可用而被同步。同步指示可以通过比特图来实现,比特图中的一个比特对应于第一驱动器上的一个块,该比特的值表示该块是否要响应于第一驱动器变为可用而被同步。
在一些实施例中,控制器810还可以被配置为:响应于第一驱动器变为可用,将第一驱动器设置为同步状态,并将记录到所述文件中的数据同步到第一驱动器。
在一些实施例中,控制器810还可以被配置为:在同步期间接收针对第一驱动器的新的写入请求;响应于所述文件中与新的写入请求的写入地址相对应的数据尚未被同步到第一驱动器,丢弃所述文件中的与该写入地址对应的数据,在比特图中将与该写入地址对应的块所对应的比特的值设置为表示该块不需要被同步,并且将新的写入请求所要写入的数据写到所述第一驱动器。
在一些实施例中,控制器810还可以被配置为:响应于冻结状态超时,对存储在第一驱动器上的全部数据进行重构,并将重构的数据存储在备用驱动器上。
出于清楚的目的,在图8中没有示出存储***800的某些可选模块。然而,应当理解,上文参考图2-7所描述的各个特征同样适用于存储***800。
图9示出了可以用来实施本公开的实施例的示例设备900的示意性框图。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300-700,可由处理单元901执行。例如,在一些实施例中,方法300-700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序被加载到RAM 903并由CPU901执行时,可以执行上文描述的方法300-700的一个或多个步骤。备选地,在其他实施例中,CPU 901也可以以其他任何适当的方式被配置以实现上述方法300-700。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (17)
1.一种用于存储***的方法,所述存储***包括驱动器阵列,所述方法包括:
确定所述驱动器阵列中的第一驱动器暂时不可用;
将所述第一驱动器设置为处于冻结状态;
响应于在所述冻结状态期间接收到针对所述第一驱动器的写入请求,将所述写入请求挂起或记录到所述驱动器阵列中的第二驱动器中;以及
响应于在所述冻结状态期间接收到针对所述第一驱动器的读取请求,通过所述驱动器阵列中的第三驱动器中存储的数据来重构所述读取请求所针对的数据。
2.根据权利要求1所述的方法,其中确定所述第一驱动器暂时不可用包括:
通过检测预定事件来确定所述第一驱动器暂时不可用,所述预定事件包括以下至少一项:
所述第一驱动器开始在线固件更新过程,
所述第一驱动器正在进行垃圾收集过程,
所述第一驱动器的输入输出时延超过一阈值,
所述第一驱动器上出现错误,
所述第一驱动器被移除,
去往所述第一驱动器的全部路径丢失,以及
网络业务的突发。
3.根据权利要求1所述的方法,还包括:
响应于在所述冻结状态期间接收到所述读取请求,读取所述第三驱动器中存储的数据;以及
利用所读取的数据来重构所述读取请求所针对的所述数据。
4.根据权利要求1所述的方法,还包括:
响应于在所述冻结状态期间接收到所述写入请求,将所述写入请求置于缓冲区中。
5.根据权利要求4所述的方法,还包括:
响应于所述缓冲区中的写入请求的数目超出阈值数目,将所述缓冲区中的写入请求所要写入的数据记录到存储在所述第二驱动器处的文件中;以及
更新与所述第一驱动器相关联的同步指示,所述同步指示表示所述第一驱动器上的块是否要响应于所述第一驱动器变为可用而被同步。
6.根据权利要求5所述的方法,还包括:
响应于所述第一驱动器变为可用,
将所述第一驱动器设置为同步状态;以及
将记录到所述文件中的数据同步到所述第一驱动器。
7.根据权利要求6所述的方法,还包括:
响应于在所述同步期间接收到针对所述第一驱动器的第二写入请求,确定所述文件中与所述第二写入请求的所针对的地址相对应的目标数据是否已被同步到所述第一驱动器;
响应于确定所述目标数据尚未同步到所述第一驱动器,
丢弃所述目标数据;
在所述同步指示中指明与所述第二写入请求的所针对的所述地址对应的块无需同步;以及
将所述目标数据写到所述第一驱动器。
8.根据权利要求1所述的方法,还包括:
响应于所述冻结状态超时,对存储在所述第一驱动器上的数据进行重构。
9.一种存储***,包括:
驱动器阵列;以及
控制器,所述控制器被配置为:
确定所述驱动器阵列中的第一驱动器暂时不可用;以及
将所述第一驱动器设置为处于冻结状态;
响应于在所述冻结状态期间接收到针对所述第一驱动器的写入请求,将所述写入请求挂起或记录到所述驱动器阵列中的第二驱动器中;以及
响应于在所述冻结状态期间接收到针对所述第一驱动器的读取请求,通过所述驱动器阵列中的第三驱动器中存储的数据来重构所述读取请求所针对的数据。
10.根据权利要求9所述的存储***,其中,所述控制器被配置为通过检测预定事件来确定所述第一驱动器暂时不可用,所述预定事件包括以下至少一项:
所述第一驱动器开始在线固件更新过程,
所述第一驱动器正在进行垃圾收集过程,
所述第一驱动器的输入输出时延超过一阈值,
所述第一驱动器上出现错误,
所述第一驱动器被移除,
去往所述第一驱动器的全部路径丢失,以及
网络业务的突发。
11.根据权利要求9所述的存储***,其中,所述控制器还被配置为:
响应于在所述冻结状态期间接收到所述读取请求,
读取所述第三驱动器中存储的数据;以及
利用所读取的数据来重构所述读取请求所针对的所述数据。
12.根据权利要求9所述的存储***,其中,所述控制器还被配置为:
响应于在所述冻结状态期间接收到所述写入请求,将所述写入请求置于缓冲区中。
13.根据权利要求12所述的存储***,其中,所述控制器还被配置为:
响应于所述缓冲区中的写入请求的数目超出阈值数目,将所述缓冲区中的写入请求所要写入的数据记录到存储在所述第二驱动器处的文件中;以及
更新与所述第一驱动器相关联的同步指示,所述同步指示表示所述第一驱动器上的块是否要响应于所述第一驱动器变为可用而被同步。
14.根据权利要求13所述的存储***,其中,所述控制器还被配置为:
响应于所述第一驱动器变为可用,
将所述第一驱动器设置为同步状态;以及
将记录到所述文件中的数据同步到所述第一驱动器。
15.根据权利要求14所述的存储***,其中,所述控制器还被配置为:
响应于在所述同步期间接收到针对所述第一驱动器的第二写入请求,确定所述文件中与所述第二写入请求的所针对的地址对应的目标数据是否已被同步到所述第一驱动器;
响应于确定所述目标数据尚未同步到所述第一驱动器,
丢弃所述目标数据;
在所述同步指示中指明与所述第二写入请求的所针对的所述地址对应的块无需同步;以及
将所述目标数据写到所述第一驱动器。
16.根据权利要求9所述的存储***,其中,所述控制器还被配置为:
响应于所述冻结状态超时,对存储在所述第一驱动器上的数据进行重构。
17.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行根据权利要求1至8中任一项所述的方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710409906.2A CN108984107B (zh) | 2017-06-02 | 2017-06-02 | 提高存储***的可用性 |
US15/994,354 US10664363B2 (en) | 2017-06-02 | 2018-05-31 | Availability of a storage system |
US16/855,142 US11341003B2 (en) | 2017-06-02 | 2020-04-22 | Availability of a storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710409906.2A CN108984107B (zh) | 2017-06-02 | 2017-06-02 | 提高存储***的可用性 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984107A true CN108984107A (zh) | 2018-12-11 |
CN108984107B CN108984107B (zh) | 2021-06-29 |
Family
ID=64460361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710409906.2A Active CN108984107B (zh) | 2017-06-02 | 2017-06-02 | 提高存储***的可用性 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10664363B2 (zh) |
CN (1) | CN108984107B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442648A (zh) * | 2019-07-30 | 2019-11-12 | 中国工商银行股份有限公司 | 数据同步方法和装置 |
CN110535692A (zh) * | 2019-08-12 | 2019-12-03 | 华为技术有限公司 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
WO2021017782A1 (zh) * | 2019-07-30 | 2021-02-04 | 华为技术有限公司 | 分布式存储***访问方法、客户端及计算机程序产品 |
WO2024037122A1 (zh) * | 2022-08-15 | 2024-02-22 | 超聚变数字技术有限公司 | 一种针对磁盘固件升级过程中的读写数据方法及计算设备 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
CN108984107B (zh) | 2017-06-02 | 2021-06-29 | 伊姆西Ip控股有限责任公司 | 提高存储***的可用性 |
CN108984105B (zh) | 2017-06-02 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 对网络存储设备中的复制任务进行分配的方法和设备 |
US11269917B1 (en) * | 2018-07-13 | 2022-03-08 | Cisco Technology, Inc. | Secure cluster pairing for business continuity and disaster recovery |
US10802717B2 (en) * | 2018-08-20 | 2020-10-13 | Dell Products L.P. | Systems and methods for efficient firmware inventory of storage devices in an information handling system |
US11262920B2 (en) | 2020-03-13 | 2022-03-01 | EMC IP Holding Company LLC | Mapped raid (redundant array of independent disks) with drive health aware protection groups |
US11733900B2 (en) * | 2020-06-15 | 2023-08-22 | Samsung Electronics Co., Ltd. | Prompt and gradual migration schemes |
US11556270B2 (en) | 2021-01-07 | 2023-01-17 | EMC IP Holding Company LLC | Leveraging garbage collection for raid transformation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8839028B1 (en) * | 2011-12-23 | 2014-09-16 | Emc Corporation | Managing data availability in storage systems |
CN104881411A (zh) * | 2014-02-27 | 2015-09-02 | 阿里巴巴集团控股有限公司 | 存储***间文件的处理方法及装置 |
US20160026528A1 (en) * | 2006-12-08 | 2016-01-28 | Seagate Technology Llc | Techniques for providing data redundancy after reducing memory writes |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615335A (en) | 1994-11-10 | 1997-03-25 | Emc Corporation | Storage system self-test apparatus and method |
JP4788528B2 (ja) * | 2005-09-22 | 2011-10-05 | 富士通株式会社 | ディスク制御装置、ディスク制御方法、ディスク制御プログラム |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8307258B2 (en) | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
US8904229B1 (en) | 2012-06-29 | 2014-12-02 | Emc Corporation | Online recovery of a file system experiencing failure of redundant logical storage storing a single point of failure |
CN108984107B (zh) | 2017-06-02 | 2021-06-29 | 伊姆西Ip控股有限责任公司 | 提高存储***的可用性 |
US11048420B2 (en) | 2019-04-30 | 2021-06-29 | EMC IP Holding Company LLC | Limiting the time that I/O to a logical volume is frozen |
-
2017
- 2017-06-02 CN CN201710409906.2A patent/CN108984107B/zh active Active
-
2018
- 2018-05-31 US US15/994,354 patent/US10664363B2/en active Active
-
2020
- 2020-04-22 US US16/855,142 patent/US11341003B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026528A1 (en) * | 2006-12-08 | 2016-01-28 | Seagate Technology Llc | Techniques for providing data redundancy after reducing memory writes |
US8839028B1 (en) * | 2011-12-23 | 2014-09-16 | Emc Corporation | Managing data availability in storage systems |
CN104881411A (zh) * | 2014-02-27 | 2015-09-02 | 阿里巴巴集团控股有限公司 | 存储***间文件的处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442648A (zh) * | 2019-07-30 | 2019-11-12 | 中国工商银行股份有限公司 | 数据同步方法和装置 |
WO2021017782A1 (zh) * | 2019-07-30 | 2021-02-04 | 华为技术有限公司 | 分布式存储***访问方法、客户端及计算机程序产品 |
CN110535692A (zh) * | 2019-08-12 | 2019-12-03 | 华为技术有限公司 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
CN110535692B (zh) * | 2019-08-12 | 2020-12-18 | 华为技术有限公司 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
WO2024037122A1 (zh) * | 2022-08-15 | 2024-02-22 | 超聚变数字技术有限公司 | 一种针对磁盘固件升级过程中的读写数据方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US20180349234A1 (en) | 2018-12-06 |
US10664363B2 (en) | 2020-05-26 |
US20200250054A1 (en) | 2020-08-06 |
CN108984107B (zh) | 2021-06-29 |
US11341003B2 (en) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984107A (zh) | 提高存储***的可用性 | |
CN105549905B (zh) | 一种多虚拟机访问分布式对象存储***的方法 | |
CN107408070B (zh) | 分布式存储***中的多事务日志 | |
CN102652423B (zh) | 用于集群选择和协作复制的方法和*** | |
CN102981931B (zh) | 虚拟机备份方法及装置 | |
CN101755257B (zh) | 管理在不同的网络上将写入从首要存储器拷贝到次要存储器 | |
CN104919429B (zh) | 存储管理计算机及存储管理方法 | |
EP2135165B1 (en) | Shared disk clones | |
CN109857445A (zh) | 存储***和控制软件配置方法 | |
JP4920248B2 (ja) | サーバの障害回復方法及びデータベースシステム | |
CN104036043B (zh) | 一种mysql高可用的方法及管理节点 | |
US8250284B2 (en) | Adaptive memory allocation of a second data storage volume based on an updated history of capacity of a first data volume | |
CN107870829A (zh) | 一种分布式数据恢复方法、服务器、相关设备及*** | |
JPWO2008114441A1 (ja) | ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置 | |
WO2010064328A1 (en) | Information processing system and method of acquiring backup in an information processing system | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
US9395936B2 (en) | Method and apparatus for remote storage performance data copy | |
WO2016061956A1 (zh) | 分布式文件***的数据处理方法及分布式文件*** | |
CN110825562B (zh) | 数据备份方法、装置、***和存储介质 | |
CN101815986A (zh) | 在存储控制器和复制引擎之间分离写入 | |
JP2013196274A (ja) | マルチノードストレージシステムのノード装置および処理速度管理方法 | |
CN108228678A (zh) | 一种多副本数据恢复方法及装置 | |
CN114064374A (zh) | 一种基于分布式块存储的故障检测方法和*** | |
US11128708B2 (en) | Managing remote replication in storage systems | |
JP5355725B2 (ja) | 必須データ管理システム及び計算機及び必須データ管理プログラム及び記録媒体及び通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |