CN110737395A - I/o管理方法、电子设备和计算机可读存储介质 - Google Patents
I/o管理方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN110737395A CN110737395A CN201810802046.3A CN201810802046A CN110737395A CN 110737395 A CN110737395 A CN 110737395A CN 201810802046 A CN201810802046 A CN 201810802046A CN 110737395 A CN110737395 A CN 110737395A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- raid
- request
- response
- 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
Images
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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/061—Improving I/O performance
-
- 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
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
-
- 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/0658—Controller construction arrangements
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及I/O管理方法、电子设备和计算机可读存储介质。该方法包括:响应于接收到针对RAID的I/O请求,确定所述I/O请求涉及的所述RAID中的条带;确定与所述条带对应的元数据,所述元数据指示所述RAID中的对应数据块中的当前数据的有效性,所述数据块包括一个或多个条带;响应于所述元数据指示所述当前数据为有效,访问所述RAID以执行所述I/O请求;以及响应于所述元数据指示所述当前数据为无效,以零数据作为所述当前数据来响应所述I/O请求。由此,减少对盘的访问,增加元数据缓存效率,改善I/O性能,并且提高RAID的可靠性。
Description
技术领域
本公开的实施例涉及计算机领域,并且更具体地涉及针对独立冗余盘阵列(RAID)的输入/输出(I/O)管理方法、电子设备和计算机可读存储介质。
背景技术
RAID是将多个物理驱动组件(例如盘)合并成单个逻辑单元的数据存储虚拟化技术,用于数据冗余、性能改进或这两者的目的。取决于所需的冗余和性能的水平,数据以被称为RAID级别的若干方式之一跨物理驱动组件而分布。
目前,诸如固态驱动器(SSD)之类的盘在快闪存储器单元中存储数据。快闪存储器单元仅可以在其为空时才能被直接写入,否则必须先进行擦除,由此带来写入放大的问题。为此,已经提出针对RAID中的各个盘分别指示盘上哪些数据块不再被使用并且可以被内部擦除。在针对这些数据块进行写入时,无需读取这些数据块的内容以存储在缓存中,而可以直接擦除这些数据块并进行写入,从而减少写入放大。然而,在针对RAID的大I/O负载的情况下,I/O整体性能仍会大大下降。
发明内容
根据本公开的示例实施例,提供了改进的I/O管理方案。
在本公开实施例的第一方面中,提供了一种I/O管理方法。该方法包括:响应于接收到针对RAID的I/O请求,确定所述I/O请求涉及的所述RAID中的条带;确定与所述条带对应的元数据,所述元数据指示所述RAID中的对应数据块中的当前数据的有效性,所述数据块包括一个或多个条带;响应于所述元数据指示所述当前数据为有效,访问所述RAID以执行所述I/O请求;以及响应于所述元数据指示所述当前数据为无效,以零数据作为所述当前数据来响应所述I/O请求。
在本公开实施例的第二方面中,提供了一种电子设备。该电子设备包括:处理单元;以及存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:响应于接收到针对RAID的I/O请求,确定所述I/O请求涉及的所述RAID中的条带;确定与所述条带对应的元数据,所述元数据指示所述RAID中的对应数据块中的当前数据的有效性,所述数据块包括一个或多个条带;响应于所述元数据指示所述当前数据为有效,访问所述RAID以执行所述I/O请求;以及响应于所述元数据指示所述当前数据为无效,以零数据作为所述当前数据来响应所述I/O请求。
在本公开实施例的第三方面中,提供了一种计算机可读介质。该计算机可读介质上存储有计算机程序,所述程序被处理器执行时实现根据本公开的第一方面所述的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开实施例的其他特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开实施例可以在其中实施的示例场景的示意图;
图2示出了在传统方案中的I/O请求的处理的示意图;
图3示出了根据本公开实施例的构建元数据的示意图;
图4示出了根据本公开一个实施例的处理I/O请求的方法的流程图;
图5示出了根据本公开另一实施例的处理I/O请求的方法的流程图;
图6示出了根据本公开实施例的在RAID中的盘故障的情况下用于数据恢复的方法的流程图;以及
图7示出了可以实施本公开实施例的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。另外,在本公开的实施例的描述中,为方便起见,术语“I/O”、“I/O请求”和“I/O操作”可互换使用。
图1示出了本公开实施例可以在其中实施的示例场景的示意图100。如图1所示,RAID 110可以服务于处理器(SP)120。为方便起见,这里仅示出一个处理器。实际上,RAID110可以同时服务于多个处理器,本申请对此并不作任何限制。SP可以是存储服务器或存储终端的一部分或其本身。
作为示例,图1中示出了4+1 RAID5中的情况。如图1所示,RAID组中的每个盘被划分成固定大小的磁盘单元的集合。通常每个单元包含128个64K字节的扇区。来自不同盘例如图1所示的D0、D1、D2、D3和奇偶校验位P的具有相同逻辑块地址(LBA)的磁盘单元将构成一个条带,例如图1所示的条带111。在该条带中,一个单元为奇偶校验位,其余单元为数据。应理解到,本申请并不限于所图示的RAID5,而是可以适用于其他已知或未来开发的任意类型的RAID或类似存储阵列。
如图1所示,响应于接收到针对RAID 110的I/O请求130,SP 120可以对RAID 110进行访问140以执行该I/O请求。假设I/O请求130涉及条带111,则SP 120对条带111进行访问140以执行该I/O请求。这就意味着对条带111对应的各个盘D0、D1、D2、D3和P中的数据块分别进行访问。
通常,针对各个盘D0、D1、D2、D3和P分别维护相应的元数据,以指示相应盘中的各数据块中的数据的有效性。下面结合图2说明如何结合元数据来针对各个盘执行I/O请求的过程。图2示出了在传统方案中的I/O请求的处理的示意图200。由于该处理的过程对于各个盘都是类似的,因此这里仅以盘D0为例进行说明。
如图2所示,针对盘D0维护元数据210。例如,在元数据210中分别包括针对盘D0中的数据块211和222的元数据位213和214,分别指示0和1。在本例中,0表示当前数据块为有效(已被映射,即,还将被使用并且不可以被内部擦除),1表示当前数据块为无效(未被映射,即,不再被使用并且可以被内部擦除)。
假设条带111所涉及的盘D0中的数据块为数据块211。例如,在I/O请求130为针对条带111的读操作的情况下,由于该数据块211对应的元数据位213为0,指示该数据块为有效,可以直接读取盘D0的数据块211。在I/O请求130为针对条带111的写操作的情况下,由于该数据块211对应的元数据位213为0,可以直接将I/O请求130中包括的对应的写入数据写入到盘D0的数据块211。
假设条带111所涉及的盘D0中的数据块为数据块212。例如,在I/O请求130为针对条带111的读操作的情况下,由于该数据块212对应的元数据位214为1,指示该数据块为无效,可以直接返回零数据,而无需读取盘D0。在I/O请求130为针对条带111的写操作的情况下,由于该数据块212对应的元数据位214为1,指示该数据块为无效,则可以向盘D0的数据块211直接写入零数据,然后向写入了零数据的数据块211写入I/O请求130中包括的对应的写入数据。
可见,在传统方案中针对各个盘分别维护指示数据有效性的元数据,这在小I/O负载的情况下可以良好工作。但在大I/O负载下I/O性能将大大下降,因为用于元数据的缓存空间有限,缓存将很快地被无效化,进而I/O又需要访问盘上的数据。
此外,这些针对盘维护的元数据被存储在对应的盘上。如果元数据区域出现故障,则该盘上的数据变得不可靠,并且需要重建所有盘上的数据。这将增加RAID的数据丢失窗口,并且影响整个存储系统的可靠性。
本发明人注意到,当多个盘被组合以创建RAID群组时,同一RAID条带中的每个盘的数据具有相关性。如果条带的一部分被写入,则可能整个条带最终都将被写入。如图1所示,如果条带111对应的盘D0上的数据位置被写入,则需要更新对应的盘P上的奇偶校验位,并且条带111对应的其他盘D1、D2、D3上的数据位置很可能也被更新,因为这些数据位置上的数据是连续的。
因此,本申请的基本构思就在于,代替针对各个盘(在盘级别上),而针对整个RAID(在RAID级别上)来维护指示数据有效性的元数据,换言之,针对RAID的一个或多个条带来维护指示数据有效性的元数据。由此,可以减少对盘的I/O操作,改善整体I/O性能,提高元数据缓存效率,并且提高RAID的可靠性。下面结合图3至图5对此进行详细说明。
图3示出了根据本公开实施例的构建元数据的示意图300。根据本公开的实施例,可以针对RAID 110的各个数据块或数据组块(chunk)来维护元数据310,该数据块或数据组块包括一个或多个条带(例如图3所示的条带321)。根据本公开的实施例,元数据310可以指示各个数据块或数据组块中的数据的有效性。如图3所示,例如,在元数据310中包括分别用于数据块320和330的元数据位311和312,分别指示0和1。在本例中,0表示当前数据块中的数据为有效,1表示当前数据块中的数据为无效。应理解到,本申请并不限于此,也可以通过其他指示方式来指示当前数据块中的数据的有效性。例如,可以针对多个数据块,使用一个元数据位来指示这些数据块中的数据的有效性。由此,可以在RAID级别上维护指示数据有效性的元数据,并且使用一个元数据位来指示更多数据的有效性,从而可以节省用于元数据的存储空间,提高元数据缓存效率,同时减少对盘的I/O操作。
下面结合图4至图5详细描述根据本公开实施例的I/O请求的处理过程。图4示出了根据本公开一个实施例的处理I/O请求的方法400的流程图。该方法400可以在例如图1的SP120处实施。应理解到,该方法400可以在包括图1的SP 120的任意存储服务器或存储终端处实施。
如图4所示,在框410,接收针对RAID的I/O请求。例如,可以经由图1的SP 120接收来自用户的针对RAID 110的I/O请求130。根据本公开的实施例,I/O请求至少可以包括LBA范围、请求类型等。
在框420,确定I/O请求涉及的RAID中的条带。根据本公开的实施例,基于I/O请求中包括的LBA范围,可以确定该I/O请求所针对的RAID中的条带。例如,基于逻辑地址到物理地址的映射以及物理地址与条带的对应关系,可以确定该I/O请求涉及的RAID中的条带。根据本公开的实施例,I/O请求可以涉及RAID中的一个或多个条带,本申请对此并不做限制。
在框430,确定与条带对应的元数据。根据本公开的实施例,在结合图3所描述的元数据的构建后,可以将元数据存储在RAID中。由此,元数据可以被冗余地保护,进而提高RAID的可靠性。当然,根据本公开的备选实施例,也可以将元数据存储在RAID之外的任意存储设备中。本申请对此并不做限制。
如前面结合图3所描述的,元数据可以是针对RAID中的对应数据块(换言之,一个或多个条带)所构建的。由此,基于在框420所确定的条带,可以确定出与之相对应的元数据的值。
在框440,判断在430确定的元数据是否指示条带中的当前数据为有效。如果判定当前数据为有效,则进入框450,访问RAID以执行I/O请求。根据本公开的一个实施例,响应于I/O请求为读操作,可以读取RAID的条带中的当前数据,以作为读操作的结果。根据本公开的另一实施例,响应于I/O请求为写操作,可以向RAID的条带中写入I/O请求中包括的写入数据。
如果在框440判定当前数据为无效,则进入框460,以零数据作为当前数据来响应I/O请求。如前面提及的,当前数据为无效意味着当前数据不再被使用并且可以被内部擦除。根据本公开的一个实施例,响应于I/O请求为读操作,可以直接返回零数据作为读操作的结果。根据本公开的另一实施例,响应于I/O请求为写操作,可以向条带写入零数据以替代当前数据,并且向写入了零数据的条带中写入I/O请求中包括的写入数据。
由此,可以整体地确定RAID的各个盘中的相关数据的有效性,而无需针对RAID的各个盘单独进行确定,从而减少对盘的访问,提高I/O整体性能。
图5示出了根据本公开另一实施例的处理I/O请求的方法500的流程图。该方法500同样可以在例如图1的SP 120处实施。应理解到,该方法500可以在包括图1的SP 120的任意存储服务器或存储终端处实施。与方法400相比,方法500示例说明了一种更具体实施例。
如图5所示,在框501,接收针对RAID的I/O请求。在框502,确定I/O请求涉及的RAID中的条带。框501和框502的处理类似于前面结合图4所述的框410和420的处理,这里不再赘述。
在图5的实施例中,元数据被存储在RAID中。继而,在框503,基于在框502确定的条带,确定元数据在RAID中的位置。例如,假设元数据偏移在1000000字节的位置,每个数据块为1M字节,每个数据块的元数据的大小为2个字节,并且RAID为图1所示的RAID 110,其具有4个数据盘和1个校验盘。另外,假设I/O请求旨在于向40M字节处写入数据。则元数据的位置可以计算如下:
由于存在4个数据盘,所以每个数据块的大小为1M×4=4M;40M字节位置对应的数据块编号为40M/4M=10。另外,由于每个数据块的元数据的大小为2个字节,所以数据块10对应的元数据的偏移为10×2=20字节。由于RAID的元数据的偏移在1000000字节的位置,所以I/O请求对应的元数据的偏移为1000000+20=1000020字节。应理解到,上述示例仅为说明的目的而提供,对本申请并不构成任何限制。
在框504,基于在框503确定的位置,从RAID获取元数据。如图3所示,假设I/O请求130涉及条带321,则在503确定的位置是数据块320所对应的元数据位311所在的位置。从该位置处,可以读取条带321对应的元数据0。
在框505,判断获取的元数据是否指示当前数据为有效。如果判定当前数据为有效,则进入框506,判断I/O请求为读操作还是写操作。例如,依据I/O请求中的请求类型或类似参数来判断。如果在框506判定I/O请求为读操作,则进入框507,读取RAID的该条带中的当前数据作为读操作的结果。如果在框506判定I/O请求为写操作,则进入框508,向RAID的该条带中写入I/O请求中包括的写入数据。可见,通过框505处经由元数据的判断,如果元数据指示数据有效,则可以直接访问RAID的条带在各个盘上的位置,以执行读或写操作。
如果在框505判定当前数据为无效,则进入框509,判断I/O请求为读操作还是写操作。该框509的操作类似于框506的操作。如果在框509判定I/O请求为读操作,则进入框510,直接返回零数据作为读操作的结果,而无需对RAID的访问。如果在框509判定I/O请求为写操作,则进入框511,向RAID的该条带中写入零数据,并且在框512,向写入了零数据的条带中写入I/O请求中包括的写入数据,由此完成写操作。
在框513,修改元数据以指示该条带中的当前数据为有效,以便后续处理中使用。根据本公开的实施例,框513的处理可以响应于框509处判定I/O请求为写操作而执行。应理解到,该框513的处理可以与框511和框512的处理同时执行,或者在其之前、之间或之后执行,本申请对此并不做任何限制。
根据图5的实施例,同样可以整体地确定RAID的各个盘中的相关数据的有效性,而无需针对RAID的各个盘单独进行确定,从而减少了对盘的访问,改善了元数据缓存效率,提高了I/O整体性能。此外,针对元数据具有冗余保护,从而提高了RAID的可靠性。
根据本公开的实施例,在RAID中的盘故障时,可以结合元数据来执行该盘上的数据的恢复。下面结合图6进行更详细说明。图6示出了根据本公开实施例的在RAID中的盘故障的情况下用于数据恢复的方法600的流程图。该方法600同样可以在例如图1的SP 120处实施。应理解到,该方法600可以在包括图1的SP 120的任意存储服务器或存储终端处实施。
如图6所示,在框610,构建RAID(例如图1的RAID 110)。如前面提及的,可以将多个例如盘的物理驱动组件合并成单个逻辑单元以构成RAID。
响应于RAID的构建,在框620,初始化用于RAID中的每个数据块的每个元数据,使得每个元数据均指示RAID中的对应数据块中的当前数据为无效。应理解到,在元数据的初始化后,就可以利用元数据执行I/O请求的处理,如前面结合图4和图5所述的那样。
在I/O请求的处理期间,元数据可以被修改。如前面结合图5的框513所述,元数据可以从指示无效被修改成指示有效。在其他实施例中,可以响应于来自用户或操作系统的用于通知数据块不再被使用的指令,将该数据块对应的元数据从指示有效修改成指示无效。由此,可以针对RAID的各个数据块维护相应的元数据以指示对应数据块中的当前数据的有效性,从而便于提高I/O处理效率。
回到图6,在框630,判断RAID中的盘(在本文中,也称为“第一盘”)是否故障。如果判定RAID中不存在故障的盘,则继续监控RAID中的盘。如果判定RAID中存在故障的第一盘,则进入框640,基于RAID中的其他盘中的元数据,来恢复在第一盘中的元数据。
如前面提及的,元数据可以存储在RAID中。在这种情况下,通过框640的操作,可以恢复故障的第一盘中的元数据,从而得到针对RAID的完整元数据,以用于后续数据恢复中使用。关于恢复的处理,可以通过本领域已知或未来开发的任意合适技术来实现,这里不再赘述,以免混淆本发明。
在其他实施例中,元数据也可以存储在RAID以外的存储设备中。在这种情况下,框640的操作是不需要的,并且响应于框630中判定RAID中的第一盘存在故障,直接进入框650。
在框650,确定与第一盘相关联的每个数据块对应的元数据。根据本公开的实施例,逐个数据块地执行数据的恢复。该框650的处理类似于前面结合图4的框430或图5的框503和504所述的处理,这里不再赘述。
在框660,判断在框650确定的元数据是否指示当前数据为有效。如果指示有效,则进入框670,基于对应数据块在RAID中的其他盘中的数据,恢复该数据块在第一盘中的数据。该恢复的处理可以采用与框640中的恢复处理类似的技术,这里不再赘述,以免混淆本发明。
如果在框660判定元数据指示当前数据为无效,则进入框680,保持对应数据块在第一盘中为空数据。由此,通过框650至框680的操作,可以快速恢复RAID中的故障盘上的数据。
与传统方案中依据盘级别上的元数据来执行I/O的方案相比,通过本公开实施例的依据RAID级别上的元数据来执行I/O,可以减少对盘的访问,改善I/O性能。作为示例,下面的表1示出了在元数据指示当前数据为有效时针对4+1 RAID 5的读I/O的盘访问的比较。
表1
盘访问次数 | 1 | 2 | 3 | 4 |
传统方案 | 2 | 4 | 6 | 8 |
本方案 | 2 | 3 | 4 | 5 |
差异 | 0% | -25% | -33% | -37.5% |
由表1可见,通过本公开实施例的方案,在元数据指示当前数据为有效时针对4+1RAID 5的读I/O的盘访问次数可以减少高达37.5%。
下面的表2示出了在元数据指示当前数据为有效时针对4+1 RAID 5的写I/O的盘访问的比较。
表2
盘访问次数 | 1 | 2 | 3 | 4 |
传统方案 | 8 | 12 | 12 | 10 |
本方案 | 5 | 7 | 6 | 6 |
差异 | -37.5% | -41.7% | -50% | -40% |
由表2可见,通过本公开实施例的方案,在元数据指示当前数据为有效时针对4+1RAID 5的写I/O的盘访问次数可以减少高达50%。
下面的表3示出了在元数据指示当前数据为无效时针对4+1 RAID 5的写I/O的盘访问的比较。
表3
盘访问次数 | 1 | 2 | 3 | 4 |
传统方案 | 8+2(0) | 12+3(0) | 14+4(0) | 15+5(0) |
本方案 | 6+5(0) | 7+5(0) | 8+5(0) | 9+5(0) |
差异 | 10% | -20% | -27.8% | -30% |
由表3可见,通过本公开实施例的方案,在元数据指示当前数据为有效时针对4+1RAID 5的写I/O的盘访问次数可以减少高达30%。应注意,表3中10%的下降的理由在于,当元数据指示无效时本方案需要使得5个盘都写入0,但在传统方案中仅需要使得2个盘写入0。这种情况只会发生在用户第一次访问该条带时。如果用户再次访问该条带时,由于元数据此时指示有效,所以在本方案中只会存在对5个盘的I/O,而在传统方案中,仍需要先向一些盘中写入0,因为条带中仅2个盘被零化,并且盘访问次数为8-10次。
下面的表4示出了针对不同RAID类型的所缓存的数据大小的比较。在本例中,针对每个盘,选择用于元数据的缓存的大小为4KB。
表4
以4+1 RAID 5为例。每个盘具有4KB的元数据缓存,因而需要20KB缓存。对于传统方案,每个元数据位表示一个盘中的1MB数据的有效性,但校验盘并未缓存任何有用的用户数据。因此,所缓存的数据总量为4×4KB×8位×1MB=128GB。对于本方案,每个元数据位表示1MB条带即4MB用户数据的有效性。而且,本方案不会浪费校验盘上的缓存。因此,所缓存的数据总量为20KB×8位×4MB=640GB。从表4中可见,元数据缓存效率明显增加。
综上所述,根据本公开实施例的I/O管理方案,通过在RAID级别上维护指示数据有效性的元数据,可以减少对盘的访问,同时大大增加元数据缓存效率,改善I/O性能,并且可以提高RAID的可靠性。
图7示出了可以用来实施本公开实施例的示例性计算设备700的示意性框图。设备700可以用于实施结合图4至图6所述的方法。如图所示,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如存储、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元701执行上文所描述的各个方法和处理,例如方法400-600。例如,在一些实施例中,方法400-600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法400-600的一个或多个步骤。备选地,在其他实施例中,CPU701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法400-600。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在对端机器上执行或完全在对端机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (21)
1.一种I/O管理方法,包括:
响应于接收到针对独立冗余盘阵列(RAID)的I/O请求,确定所述I/O请求涉及的所述RAID中的条带;
确定与所述条带对应的元数据,所述元数据指示所述RAID中的对应数据块中的当前数据的有效性,所述数据块包括一个或多个条带;
响应于所述元数据指示所述当前数据为有效,访问所述RAID以执行所述I/O请求;以及
响应于所述元数据指示所述当前数据为无效,以零数据作为所述当前数据来响应所述I/O请求。
2.根据权利要求1所述的方法,其中确定所述元数据包括:
基于所确定的条带,确定所述元数据在所述RAID中的位置;以及
基于所确定的位置,从所述RAID获取所述元数据。
3.根据权利要求1所述的方法,其中执行所述I/O请求包括:
响应于所述I/O请求为读操作,读取所述RAID的所述条带中的所述当前数据,以作为所述读操作的结果;以及
响应于所述I/O请求为写操作,向所述RAID的所述条带中写入所述I/O请求中包括的写入数据。
4.根据权利要求1所述的方法,其中以零数据作为所述当前数据来响应所述I/O请求包括:
响应于所述I/O请求为读操作,返回所述零数据,以作为所述读操作的结果;以及
响应于所述I/O请求为写操作,
向所述条带写入所述零数据,以替代所述当前数据;以及
向写入了所述零数据的所述条带中写入所述I/O请求中包括的写入数据。
5.根据权利要求4所述的方法,还包括:
响应于所述I/O请求为所述写操作,修改所述元数据以指示所述条带中的所述当前数据为有效。
6.根据权利要求1所述的方法,还包括:
响应于接收到指示所述数据块中的所述当前数据不再被使用的通知,修改所述元数据以指示所述当前数据为无效。
7.根据权利要求1所述的方法,还包括:
响应于所述RAID的构建,初始化用于所述RAID中的每个数据块的每个元数据,使得每个元数据均指示所述RAID中的对应数据块中的当前数据为无效。
8.根据权利要求1所述的方法,还包括:
响应于所述RAID中的第一盘的故障,基于在所述RAID的其他盘中的元数据,恢复在所述第一盘中的元数据。
9.根据权利要求1所述的方法,还包括:
响应于所述RAID中的第一盘的故障,确定与所述第一盘相关联的每个数据块对应的所述元数据;以及
基于所确定的元数据,恢复与所述第一盘相关联的每个数据块中的数据。
10.根据权利要求9所述的方法,其中恢复所述数据包括:
响应于所述元数据指示所述当前数据为有效,基于对应数据块在所述RAID的其他盘中的数据,恢复所述数据块在所述第一盘中的所述数据;以及
响应于所述元数据指示所述当前数据为无效,保持所述数据块在所述第一盘中为空数据。
11.一种电子设备,包括:
处理单元;以及
存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于接收到针对独立冗余盘阵列(RAID)的I/O请求,确定所述I/O请求涉及的所述RAID中的条带;
确定与所述条带对应的元数据,所述元数据指示所述RAID中的对应数据块中的当前数据的有效性,所述数据块包括一个或多个条带;
响应于所述元数据指示所述当前数据为有效,访问所述RAID以执行所述I/O请求;以及
响应于所述元数据指示所述当前数据为无效,以零数据作为所述当前数据来响应所述I/O请求。
12.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
基于所确定的条带,确定所述元数据在所述RAID中的位置;以及
基于所确定的位置,从所述RAID获取所述元数据。
13.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述I/O请求为读操作,读取所述RAID的所述条带中的所述当前数据,以作为所述读操作的结果;以及
响应于所述I/O请求为写操作,向所述RAID的所述条带中写入所述I/O请求中包括的写入数据。
14.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述I/O请求为读操作,返回所述零数据,以作为所述读操作的结果;以及
响应于所述I/O请求为写操作,
向所述条带写入所述零数据,以替代所述当前数据;以及
向写入了所述零数据的所述条带中写入所述I/O请求中包括的写入数据。
15.根据权利要求14所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述I/O请求为所述写操作,修改所述元数据以指示所述条带中的所述当前数据为有效。
16.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于接收到指示所述数据块中的所述当前数据不再被使用的通知,修改所述元数据以指示所述当前数据为无效。
17.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述RAID的构建,初始化用于所述RAID中的每个数据块的每个元数据,使得每个元数据均指示所述RAID中的对应数据块中的当前数据为无效。
18.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述RAID中的第一盘的故障,基于在所述RAID的其他盘中的元数据,恢复在所述第一盘中的元数据。
19.根据权利要求11所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述RAID中的第一盘的故障,确定与所述第一盘相关联的每个数据块对应的所述元数据;以及
基于所确定的元数据,恢复与所述第一盘相关联的每个数据块中的数据。
20.根据权利要求19所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述元数据指示所述当前数据为有效,基于对应数据块在所述RAID的其他盘中的数据,恢复所述数据块在所述第一盘中的所述数据;以及
响应于所述元数据指示所述当前数据为无效,保持所述数据块在所述第一盘中为空数据。
21.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1-10中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810802046.3A CN110737395B (zh) | 2018-07-20 | 2018-07-20 | I/o管理方法、电子设备和计算机可读存储介质 |
US16/354,767 US11366608B2 (en) | 2018-07-20 | 2019-03-15 | Method, electronic device and computer readable storage medium for i/o management |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810802046.3A CN110737395B (zh) | 2018-07-20 | 2018-07-20 | I/o管理方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737395A true CN110737395A (zh) | 2020-01-31 |
CN110737395B CN110737395B (zh) | 2023-09-29 |
Family
ID=69161899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810802046.3A Active CN110737395B (zh) | 2018-07-20 | 2018-07-20 | I/o管理方法、电子设备和计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11366608B2 (zh) |
CN (1) | CN110737395B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230855A (zh) * | 2020-10-20 | 2021-01-15 | 英韧科技(上海)有限公司 | 固态硬盘及其读写方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732167B (zh) | 2019-10-28 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030145270A1 (en) * | 2002-01-31 | 2003-07-31 | Holt Keith W. | Method for using CRC as metadata to protect against drive anomaly errors in a storage array |
US7694119B1 (en) * | 2006-03-30 | 2010-04-06 | Emc Corporation | Techniques for device initialization |
US20100088579A1 (en) * | 2007-09-24 | 2010-04-08 | James Lee Hafner | Data integrity validation in a computing environment |
US7711897B1 (en) * | 2005-06-10 | 2010-05-04 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for improving disk array performance |
US8539197B1 (en) * | 2010-06-29 | 2013-09-17 | Amazon Technologies, Inc. | Load rebalancing for shared resource |
US20140310483A1 (en) * | 2005-04-21 | 2014-10-16 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US20180089088A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache |
CN108228647A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051155B2 (en) * | 2002-08-05 | 2006-05-23 | Sun Microsystems, Inc. | Method and system for striping data to accommodate integrity metadata |
KR100511785B1 (ko) * | 2002-12-20 | 2005-08-31 | 한국전자통신연구원 | 멀티미디어 컨텐츠 기술 메타데이터 저작 시스템 및 저작방법 |
US7290196B1 (en) * | 2003-03-21 | 2007-10-30 | Cypress Semiconductor Corporation | Cyclical redundancy check using nullifiers |
US7752489B2 (en) * | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
US8751862B2 (en) * | 2007-08-10 | 2014-06-10 | Dell Products L.P. | System and method to support background initialization for controller that supports fast rebuild using in block data |
JP2009129179A (ja) * | 2007-11-22 | 2009-06-11 | Toshiba Corp | プログラム並列化支援装置およびプログラム並列化支援方法 |
JP2011205380A (ja) * | 2010-03-25 | 2011-10-13 | Canon Inc | 画像処理装置 |
US8700951B1 (en) * | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US9268644B1 (en) * | 2011-04-18 | 2016-02-23 | American Megatrends, Inc. | Systems and methods for raid acceleration |
US9471229B2 (en) * | 2014-12-15 | 2016-10-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Scaling performance for raid storage controllers by predictively caching data for host write requests |
CN106933494B (zh) | 2015-12-31 | 2019-10-18 | 伊姆西公司 | 混合存储设备的操作方法和装置 |
US10430279B1 (en) * | 2017-02-27 | 2019-10-01 | Tintri By Ddn, Inc. | Dynamic raid expansion |
CN109725840B (zh) | 2017-10-30 | 2022-04-05 | 伊姆西Ip控股有限责任公司 | 利用异步冲刷对写入进行节流 |
US10509581B1 (en) * | 2017-11-01 | 2019-12-17 | Pure Storage, Inc. | Maintaining write consistency in a multi-threaded storage system |
CN110413204B (zh) * | 2018-04-28 | 2023-02-10 | 伊姆西Ip控股有限责任公司 | I/o管理方法、设备和计算机可读介质 |
CN110413211B (zh) | 2018-04-28 | 2023-07-07 | 伊姆西Ip控股有限责任公司 | 存储管理方法、电子设备以及计算机可读介质 |
US10402091B1 (en) | 2018-04-30 | 2019-09-03 | EMC IP Holding Company LLC | Managing data in log-structured storage systems |
US10606709B1 (en) * | 2018-10-26 | 2020-03-31 | EMC IP Holding Company LLC | Method and system for intelligently load balancing database backup operations in information technology environments |
US10740187B1 (en) | 2019-01-31 | 2020-08-11 | EMC IP Holding Company LLC | Systems and methods of managing and creating snapshots in a cache-based storage system |
-
2018
- 2018-07-20 CN CN201810802046.3A patent/CN110737395B/zh active Active
-
2019
- 2019-03-15 US US16/354,767 patent/US11366608B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030145270A1 (en) * | 2002-01-31 | 2003-07-31 | Holt Keith W. | Method for using CRC as metadata to protect against drive anomaly errors in a storage array |
US20140310483A1 (en) * | 2005-04-21 | 2014-10-16 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7711897B1 (en) * | 2005-06-10 | 2010-05-04 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for improving disk array performance |
US7694119B1 (en) * | 2006-03-30 | 2010-04-06 | Emc Corporation | Techniques for device initialization |
US20100088579A1 (en) * | 2007-09-24 | 2010-04-08 | James Lee Hafner | Data integrity validation in a computing environment |
US8539197B1 (en) * | 2010-06-29 | 2013-09-17 | Amazon Technologies, Inc. | Load rebalancing for shared resource |
US20180089088A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache |
CN108228647A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230855A (zh) * | 2020-10-20 | 2021-01-15 | 英韧科技(上海)有限公司 | 固态硬盘及其读写方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200026467A1 (en) | 2020-01-23 |
CN110737395B (zh) | 2023-09-29 |
US11366608B2 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983955B2 (en) | Data unit cloning in memory-based file systems | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
US9280478B2 (en) | Cache rebuilds based on tracking data for cache entries | |
CN110832590A (zh) | 在基于相变存储器的存储设备中减轻写入放大的方法和系统 | |
CN110032521B (zh) | 增强闪存转换层映射灵活性的方法和系统 | |
US20150212752A1 (en) | Storage system redundant array of solid state disk array | |
US7930588B2 (en) | Deferred volume metadata invalidation | |
US9727244B2 (en) | Expanding effective storage capacity of a data storage system while providing support for address mapping recovery | |
US10303560B2 (en) | Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss | |
US9940023B2 (en) | System and method for an accelerator cache and physical storage tier | |
CN108228084B (zh) | 用于管理存储系统的方法和设备 | |
US20200225882A1 (en) | System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance | |
US11593000B2 (en) | Data processing method and apparatus | |
CN110737394B (zh) | 管理缓存的方法、装置和计算机程序产品 | |
US11327659B2 (en) | Apparatus and method for improving input/output throughput of memory system | |
CN110737395A (zh) | I/o管理方法、电子设备和计算机可读存储介质 | |
CN110569000A (zh) | 基于固态硬盘阵列的主机端raid管理方法和装置 | |
CN112764662B (zh) | 用于存储管理的方法、设备和计算机程序产品 | |
US20110029580A1 (en) | Methods and apparatus for metadata management in a storage system | |
US9323671B1 (en) | Managing enhanced write caching | |
CN111104046B (zh) | 管理冗余磁盘阵列的方法、设备和计算机可读存储介质 | |
CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
CN117234430B (zh) | 一种缓存框架、数据处理方法、装置、设备和存储介质 | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US11494276B2 (en) | Reduced write amplification using small-block log |
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 |