CN104679442A - 一种提高磁盘阵列性能的方法及装置 - Google Patents
一种提高磁盘阵列性能的方法及装置 Download PDFInfo
- Publication number
- CN104679442A CN104679442A CN201310638469.3A CN201310638469A CN104679442A CN 104679442 A CN104679442 A CN 104679442A CN 201310638469 A CN201310638469 A CN 201310638469A CN 104679442 A CN104679442 A CN 104679442A
- Authority
- CN
- China
- Prior art keywords
- data
- disk
- disk array
- itemize
- raid
- 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.)
- Withdrawn
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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering 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/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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Abstract
本发明公开了一种提高磁盘阵列性能的方法及装置,涉及计算机系统技术领域,其方法包括以下步骤:在磁盘阵列RAID与磁盘块设备之间设置缓存器;在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;利用所述接口进行写IO所需的查找和更新。本发明通过形成RAID中的有效数据的组织形式以及一系列配合起来使用的机制,达到智能的暂时保存RAID所需要使用的数据,从而使得RAID尽量减少下盘读数据的目的,同时也能解决RAID write-hold的问题,提高磁盘阵列性能。
Description
技术领域
本发明涉及计算机系统技术领域,特别涉及一种提高磁盘阵列性能的方法及装置。
背景技术
RAID5/6(Redundant Arrays of Inexpensive Disks,磁盘阵列)作为一种数据保护的技术方案,在SAN(Storage Area Network,存储区域网络)和NAS(Network Attached Storage,网络附属存储)领域应用广泛,对于这种基于冗余的数据保护技术,由于其在磁盘资源占用上的优势(对比于RAID1而言),在很长一段时间内,还会长期存在下去(文章以下的描述均以RAID替代RAID5/6)。
传统阵列的IO堆栈的方式如图1所示:通常的IO采用的是回写的方式,IO在高速缓冲存储器cache经过组织了以后,将重新组织(如重新排列和合并的写IO等)的IO发到RAID模块,通常,RAID模块的重要作用之一就是将传入的数据做RAID5/6的计算,此时,IO已经经过了cache,不可能再被缓存,因此造成了后面谈到的一些性能问题。
RAID由于其自身算法的特点,决定了在实现的时候对IO性能上是有冲击的,比如,当一个写IO下发的时候,RAID需要通过分条的范围做一次奇偶校验parity数据的计算,这仅仅是在满分条的情况之下,如果是下发的数据并非是满分条,则很可能出现先将其它分条单元的数据从盘上读出,然后再与写入的新数据一起计算一次parity数据,即所谓的大写方式。
而另一种情况会稍好一点,可以仅仅将之前的分条的parity数据和老版本的原数据部分读出,然后对三个值作相应的校验工作,生成新的parity数据,再将新版本的写入数据和新计算的parity数据写入到相应的分条位置上,这是所谓的小写。
从上面两种情况来看,无论是大写还是小写,都可能涉及到从磁盘上将老版本的数据或者parity数据读出的过程和重新计算parity数据的过程,这两个过程运行在IO的主路径上,对整个IO栈的运行效率是有较大影响的,由于从理论上说,基于冗余计算的原理,计算parity的过程必不可少,这部分的影响无法回避,因此,要想提高整个RAID的运行效率则需要在从磁盘上读出老版本的数据上进行研究。
图2所示的是一种小写的做法,读老版本数据D1和奇偶校验parityparity数据,以便后面对RAID5/6的校验数据进行计算。
RAID的另一个问题是,由于当一个分条可能由多个分条单元组成,而每个分条单元位于不同的磁盘上,在实际的写入磁盘过程中,系统本身是无法保证写入这一系列数据的原子性的(原子性的意思就是这些归属于多个磁盘的数据,要不就一起写入成功,要不就一起写入失败),如果无法保证原子写的特性,则会出现一个比较严重的问题,比如,该分条的部分分条单元写入完成,而另一部分未写入,那么在盘上的分条则不再满足分条一致性,也就是说,当其分条单元对应的一个磁盘坏掉,通过这个分条实际上是无法重构出正确的数据的,这也就是RAID的write hole问题。
发明内容
本发明的目的在于提供一种提高磁盘阵列性能的方法及装置,从而使得磁盘阵列减少了下盘读数据,同时也能满足对磁盘阵列write-hole的问题。
根据本发明的一个方面,提供了一种提高磁盘阵列性能的方法,包括以下步骤:
在磁盘阵列RAID与磁盘块设备之间设置缓存器;
在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
利用所述接口进行写IO所需的查找和更新。
优选地,所述的对所述缓存器暂时保存的磁盘阵列所需数据进行组织包括:
将磁盘阵列所需数据划分成便于并发处理的多个分条。
优选地,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
优选地,所述的将属于同一个逻辑单元号LUN的所有分条构成二叉树包括:
将属于同一个逻辑单元号LUN的所有分条分别进行ID的编码;
将每个分条的ID作为分条查找索引;
将LUN作为一棵树的根节点,每个分别按照其索引分别挂入到LUN树上的相应位置上,以形成叶子节点。
优选地,每个叶子节点包括:
若干个分别作为指针的头部数据;以及
分别由若干个头部数据指向的若干个数据页面。
优选地,还包括利用两个所述缓存器对磁盘阵列所需数据进行双控的镜像保护。
优选地,所述磁盘阵列所需数据包括待写入磁盘的数据和从磁盘上读出的数据。
优选地,按照递增序列对每个待写入磁盘的分条进行ID的编码,形成待写入磁盘数据的队列。
根据本发明的另一方面,提供了一种提高磁盘阵列性能的装置,包括:
设置缓存器模块,用于在磁盘阵列RAID与磁盘块设备之间设置缓存器;
数据保存模块,用于在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
获得接口模块,用于通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
查找及更新模块,用于利用所述接口进行写IO所需的查找和更新。
优选地,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
与现有技术相比较,本发明的有益效果在于:
本发明通过在RAID和块设备之间加入一个RAID专属cache的缓存器,形成磁盘阵列RAID中的有效数据的组织形式以及一系列配合起来使用的机制,达到智能的暂时保存RAID所需要使用的数据,提高了磁盘阵列的性能。
附图说明
图1是现有技术提供的传统阵列的IO栈示意图;
图2是现有技术提供的小写方式的示意图;
图3是本发明实施例提供的一种提高磁盘阵列性能的方法流程图;
图4是本发明实施例提供的一种提高磁盘阵列性能的装置示意图;
图5是本发明实施例提供的提高性能装置的示意图;
图6是本发明实施例提供的数据组织方式的示意图;
图7是本发明实施例提供的二层查找表的组织方式示意图;
图8是本发明实施例提供的每个分条下的页面组织形式示意图;
图9是本发明实施例提供的数据镜像保护的示意图;
图10是本发明实施例提供的旧数据和计算得到的校验数据保存和使用的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图3显示了本发明实施例提供的一种提高磁盘阵列性能的方法流程图,如图3所示,包括以下步骤:
步骤S301:在磁盘阵列RAID与磁盘块设备之间设置缓存器;
步骤S302:在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
步骤S303:通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
步骤S304:利用所述接口进行写IO所需的查找和更新。
其中,所述的对所述缓存器暂时保存的磁盘阵列所需数据进行组织包括:将磁盘阵列所需数据划分成便于并发处理的多个分条。
具体地说,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
本发明所述的将属于同一个逻辑单元号LUN的所有分条构成二叉树包括:将属于同一个逻辑单元号LUN的所有分条分别进行ID的编码;将每个分条的ID作为分条查找索引;将LUN作为一棵树的根节点,每个分别按照其索引分别挂入到LUN树上的相应位置上,以形成叶子节点。
具体地说,每个叶子节点包括:若干个分别作为指针的头部数据;以及分别由若干个头部数据指向的若干个数据页面。
本发明还包括利用两个所述缓存器对磁盘阵列所需数据进行双控的镜像保护,其中,所述磁盘阵列所需数据包括待写入磁盘的数据和从磁盘上读出的数据。
本发明按照递增序列对每个待写入磁盘的分条进行ID的编码,形成待写入磁盘数据的队列。
图4显示了本发明实施例提供的一种提高磁盘阵列性能的装置示意图,如图4所示,包括:设置缓存器模块401,用于在磁盘阵列RAID与磁盘块设备之间设置缓存器;数据保存模块402,用于在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;获得接口模块403,用于通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;查找及更新模块404,用于利用所述接口进行写IO所需的查找和更新。
其中,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
图5显示了本发明实施例提供的提高性能装置的示意图,如图5所示,通过在RAID和磁盘块设备之间加入一个RAID专属cache的缓存器,用于暂存RAID的数据,其中RAID的数据包含老版本的数据和parity数据。即在整个分条写完成之前,要保护图2中的D1和P的数据,这部分数据可以通过RAID专属cache的缓存器进行镜像的保存,所述RAID专属cache的缓存器本身就必须要有镜像功能,如果在其中加入了保证分条一致性的逻辑,这个缓存器可以实现write-hole功能。
通过所述RAID专属cache的缓存器,解决了在该分条的所有数据未正确的写入磁盘之前,在内存中暂存这些数据的问题,等到这个分条的所有数据都写完成了以后,再将这些数据丢弃,而如果一旦在写入整个分条数据的时候,个别的磁盘发生了错误,则可以将原来在内存中保存的老版本的数据覆盖写,这样就达到了保护分条一致性的目的。
图6显示了本发明实施例提供的数据组织方式的示意图,如图6所示,传统阵列在磁盘上的分条划分方式,对于未来的虚拟化阵列来说,组织方式完全一致,仅仅是对磁盘变为虚拟化块,而分条是划在虚拟化块上面。
此外,由于分条本身是可设置的或者说是可变化的,它由多个分条单元组成,分条单元其最终是由多个页面组成,而当RAID的大小写需要读出数据的时候,也往往需要读出相应的分条的数据,因此,采用分条为最小组织粒度的方式应该是一种比较合理的方式。
本发明由于按照分条进行了组织,而对应于分条来说,其地址的连续性也就意味着盘上地址的连续性,因此,对于下盘的请求,在RAID专属cache的缓存器中可以存在自己的逻辑,比如对于顺序IO而言,一次发送多个分条的数据可以更多的利用后端的带宽,而RAID专属cache的缓存器也可以使用更加智能的刷盘算法,比如,有选择性的将更多的满分条的数据一起刷盘,由于RAID专属cache的缓存器的存在,其本身就可以累积更多的数据,也容易使得在其内存空间中更容得得到满分条的数据。
当刷盘完成以后,如果其RAID专属cache的缓存器空间足够,则将这部分写的新数据继续保留下来,通过MRU(Most Recently Used,最近使用)的方式来进行淘汰,对于整个分条的写入都完成的数据,就可以删除其旧的校验数据和旧数据,同时也需要删除镜像数据。
图7显示了本发明实施例提供的二层查找表的组织方式示意图,如图7所示,将属于某个LUN(Logical Unit Number,逻辑单元号)的分条进行ID的编码,通常可以采用一个递增的序列,然后将分条的ID作为其查找索引index,进而将整个LUN作为一个根节点,分条按照其index挂入到LUN这棵树上的固定位置,采用二叉树的方式,提高查找效率。
对于第一层查找,在传统阵列和虚拟化阵列中有不同的含义,传统阵列因为都是以磁盘组成的,因此对于分条的查找是可以定义为固定的数量的查找,比如,如果一个LUN为10TB,其分条单元的大小为32KB来定义,采用5+1的RAID,那么第一层查找对应的分条集可定义为8192个,那么其第一层的节点总数就是8192个,而其每个节点包含的分条数目也是8192个,这样,通过两层的查找就可以很快的找到其对应的分条,这个集合个数的确定要着重考虑其节点占用的内存空间和查找效率。
如果是虚拟化方式,则可以以块为单位,由于虚拟化阵列采用的块大小本身每个阵列厂商采用的粒度是不同的,例如,采用512MB块为基本大小组成RAID,则上述的查找表的组织就发生了变化,第一层节点为:4096个,每个第一层节点下包含第二层节点为16384个。
二叉树查找的好处在于其查找的快速性,由于整个查找的过程实际上是在IO的路径上完成的,因此保证其查找的快速性非常重要,这将直接影响到整个磁盘阵列系统对外表现出的性能指标。而如果全部采用线性表的方法,这样又会导致表节点占用的内存空间太大,因此,采用二叉树的方式实际上是这两种考虑的妥协。总的来说,这个组成是可以灵活改变的,其选择的主要因素在于对内存的占用和对查找时延的要求。
图8显示了本发明实施例提供的每个分条下的页面组织形式示意图,如图8所示,D1/D2/D3/P为头部数据结构,其中包含一个数据成员为一个指针数组,其中包含其数据所在的页面。当这些数据被有效的组织起来以后,就可以提供相应的查找和更新的接口,通过这些接口对RAID模块提供相应的支持。
对于每个分条,包含数个分条单元,每个分条单元则包含于磁盘上相同的数据,只是这些数据目前是存在于内存中,而基于对分条单元的元数据的设计,则需要在分条单元的数据结构体的头中,包含该部分数据所对应的在磁盘上的数据的定位信息(比如磁盘ID和磁盘地址及数据的长度)。
图9显示了本发明实施例提供的数据镜像保护的示意图,如图9所示,写入的数据首先是写入到RAID所占用的内存空间,数据写入完成以后,必须要采用双控的镜像,这样,该数据到了RAID专属cache的缓存器中,实际上已经受到了保护,此时对于RAID专属cache的缓存器之上的模块来说,整个的写IO流程就已经结束了,由于该块内存本身会采用0拷贝的方式来保存(也就是说,该数据在进入到RAID专属cache的缓存器的时候不会被重新copy一次),那么这个内存就经历了一次,由上层分配,但最终被放入到RAID专属cache的缓存器的过程,这个过程需要考虑一种场景,RAID专属cache的缓存器不能将整个的内存全部用掉,否则会导致上层无法为写分配分配到足够的内存页面。
图中RAID专属cache的缓存器中的小方框就是在上面组织形态中的节点,这种方式通过将RAID要写入的数据以及从磁盘上读出的数据放入到这块RAID专属cache的缓存器中,实现了新写数据和老数据的集中缓存,当控制器意外掉电的时候,这些保存的数据可以依靠电池所提供的电能将数据写入到磁盘上从而将这些数据进行了保存,当重新上电以后,这些数据(新数据和老数据)都可以得到恢复,通过这样的方式,加上部分RAID的分条一致性的逻辑的实现,这样就可以将整个分条的内容进行相应的保存。
图10显示了本发明实施例提供的旧数据和计算得到的校验数据保存和使用的流程图,如图10所示,包括以下步骤:
步骤1:写IO到达RAID模块;
步骤2:通过地址和数据长度的计算得到是要进行大写还是小写;
步骤3:返回计算结果;
步骤4:流程进入RAID的cache尝试进行命中;
步骤5:如果数据在RAID的cache中无法命中,则生成IO进行下盘读写;
步骤6:下盘读数据;
步骤7:读出的数据直接返回到RAID模块做后继处理;
步骤8:做分条一致性逻辑检查;
步骤9:写入旧数据;
步骤10:将旧数据写入本地和镜像;
步骤11:在对端形成新节点(其中包含旧数据);
步骤12:写入旧数据完成;
步骤13:写入新数据;
步骤14:将新数据写入本地页面和镜像;
步骤15:写入新数据完成;
步骤16:写入旧数据和新数据完成;
步骤17:在RAID的cache中进行定时触发;
步骤18:写入新数据;
步骤19:写入完成。
这样,通过这个流程,写入的数据实际上就是写入到RAID专属cache的缓存器之中,而整个的流程本身也含有了分条一致性的逻辑,既提高了普通状态下的读效率又保证了write-hole问题不再发生。
总上所述,暂存数据并不是本发明目的,而是将这些暂存的数据进行有效的组织以便于对这些数据可以进行高效、简单的访问、修改等操作才是基本的要求。比如,当一个RAID的写到来的时候,通过RAID的算法选择,其可能是一个RAID的小写,此时,它需要读出其老版本的数据和老版本的parity数据,如果这些数据已经在内存中,则整个的读出过程要快速得多。其次,一个SAN管理着大量的磁盘,为了让这些磁盘能够并发的运行,则必须要求RAID的并发性,而为了让每个磁盘都能够快速高效的运行,则一定要对写入/读出该盘的IO进行地址上的一个排队。将数据暂时保存起来,对这两种需求都能够做到很好的支持。
综上所述,本发明具有以下技术效果:
本发明通过在RAID和块设备之间加入一个RAID专属cache的缓存器,形成磁盘阵列RAID中的有效数据的组织形式以及一系列配合起来使用的机制,达到智能的暂时保存RAID所需要使用的数据,提高了磁盘阵列的性能。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (10)
1.一种提高磁盘阵列性能的方法,其特征在于,包括以下步骤:
在磁盘阵列RAID与磁盘块设备之间设置缓存器;
在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
利用所述接口进行写IO所需的查找和更新。
2.根据权利要求1所述的方法,其特征在于,所述的对所述缓存器暂时保存的磁盘阵列所需数据进行组织包括:
将磁盘阵列所需数据划分成便于并发处理的多个分条。
3.根据权利要求2所述的方法,其特征在于,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
4.根据权利要求3所述的方法,其特征在于,所述的将属于同一个逻辑单元号LUN的所有分条构成二叉树包括:
将属于同一个逻辑单元号LUN的所有分条分别进行ID的编码;
将每个分条的ID作为分条查找索引;
将LUN作为一棵树的根节点,每个分别按照其索引分别挂入到LUN树上的相应位置上,以形成叶子节点。
5.根据权利要求4所述的方法,其特征在于,每个叶子节点包括:
若干个分别作为指针的头部数据;以及
分别由若干个头部数据指向的若干个数据页面。
6.根据权利要求4所述的方法,其特征在于,还包括利用两个所述缓存器对磁盘阵列所需数据进行双控的镜像保护。
7.根据权利要求6所述的方法,其特征在于,所述磁盘阵列所需数据包括待写入磁盘的数据和从磁盘上读出的数据。
8.根据权利要求6所述的方法,其特征在于,按照递增序列对每个待写入磁盘的分条进行ID的编码,形成待写入磁盘数据的队列。
9.一种提高磁盘阵列性能的装置,其特征在于,包括:
设置缓存器模块,用于在磁盘阵列RAID与磁盘块设备之间设置缓存器;
数据保存模块,用于在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
获得接口模块,用于通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
查找及更新模块,用于利用所述接口进行写IO所需的查找和更新。
10.根据权利要求9所述的装置,其特征在于,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310638469.3A CN104679442A (zh) | 2013-12-02 | 2013-12-02 | 一种提高磁盘阵列性能的方法及装置 |
US15/036,988 US20160291881A1 (en) | 2013-12-02 | 2014-06-20 | Method and apparatus for improving disk array performance |
EP14867529.1A EP3062209A4 (en) | 2013-12-02 | 2014-06-20 | METHOD AND DEVICE FOR IMPROVING THE PERFORMANCE OF A DISK ARRAY |
PCT/CN2014/080452 WO2015081690A1 (zh) | 2013-12-02 | 2014-06-20 | 一种提高磁盘阵列性能的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310638469.3A CN104679442A (zh) | 2013-12-02 | 2013-12-02 | 一种提高磁盘阵列性能的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104679442A true CN104679442A (zh) | 2015-06-03 |
Family
ID=53272822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310638469.3A Withdrawn CN104679442A (zh) | 2013-12-02 | 2013-12-02 | 一种提高磁盘阵列性能的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160291881A1 (zh) |
EP (1) | EP3062209A4 (zh) |
CN (1) | CN104679442A (zh) |
WO (1) | WO2015081690A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN107479998A (zh) * | 2017-07-19 | 2017-12-15 | 山东超越数控电子有限公司 | 一种存储介质高效容错方法 |
CN110275670A (zh) * | 2018-03-16 | 2019-09-24 | 华为技术有限公司 | 控制存储设备中数据流的方法、装置、存储设备及存储介质 |
CN110928489A (zh) * | 2019-10-28 | 2020-03-27 | 成都华为技术有限公司 | 一种写数据方法、装置及存储节点 |
CN113791731A (zh) * | 2021-08-26 | 2021-12-14 | 深圳创云科软件技术有限公司 | 一种解决存储磁盘阵列Write Hole的处理方法 |
CN113805799A (zh) * | 2021-08-08 | 2021-12-17 | 苏州浪潮智能科技有限公司 | Raid阵列最近写记录管理的方法、装置、设备及可读介质 |
CN115543218A (zh) * | 2022-11-29 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种raid10阵列的读数据方法及相关装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158599B (zh) * | 2019-12-29 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种写数据的方法、装置、设备及存储介质 |
US11334497B2 (en) | 2020-06-05 | 2022-05-17 | Vmware, Inc. | Efficient segment cleaning employing local copying of data blocks in log-structured file systems of distributed data systems |
US11507544B2 (en) | 2020-06-05 | 2022-11-22 | Vmware, Inc. | Efficient erasure-coded storage in distributed data systems |
US11144394B1 (en) * | 2020-06-05 | 2021-10-12 | Vmware, Inc. | Storing B-tree pages in capacity tier for erasure-coded storage in distributed data systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091897A1 (en) * | 2001-01-05 | 2002-07-11 | Ibm Corporation, Recordation From Cover Sheet. | Method and apparatus for supporting parity protected raid in a clustered environment |
CN101093434A (zh) * | 2006-06-20 | 2007-12-26 | 韩国科学技术院 | 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法 |
CN101410783A (zh) * | 2006-01-26 | 2009-04-15 | 网络装置公司 | 内容可寻址存储阵列元件 |
CN101840310A (zh) * | 2009-12-25 | 2010-09-22 | 创新科存储技术有限公司 | 数据读写方法及应用该方法的磁盘阵列系统 |
CN103309820A (zh) * | 2013-06-28 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 磁盘阵列缓存的实现方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530948A (en) * | 1993-12-30 | 1996-06-25 | International Business Machines Corporation | System and method for command queuing on raid levels 4 and 5 parity drives |
US7457980B2 (en) * | 2004-08-13 | 2008-11-25 | Ken Qing Yang | Data replication method over a limited bandwidth network by mirroring parities |
US20060036904A1 (en) * | 2004-08-13 | 2006-02-16 | Gemini Storage | Data replication method over a limited bandwidth network by mirroring parities |
US7386758B2 (en) * | 2005-01-13 | 2008-06-10 | Hitachi, Ltd. | Method and apparatus for reconstructing data in object-based storage arrays |
US8074017B2 (en) * | 2006-08-11 | 2011-12-06 | Intel Corporation | On-disk caching for raid systems |
US7908512B2 (en) * | 2008-03-05 | 2011-03-15 | International Business Machines Corporation | Method and system for cache-based dropped write protection in data storage systems |
US8180763B2 (en) * | 2009-05-29 | 2012-05-15 | Microsoft Corporation | Cache-friendly B-tree accelerator |
US8386717B1 (en) * | 2010-09-08 | 2013-02-26 | Symantec Corporation | Method and apparatus to free up cache memory space with a pseudo least recently used scheme |
US9250828B2 (en) * | 2013-10-29 | 2016-02-02 | Skyera, Llc | Writable clone data structure |
-
2013
- 2013-12-02 CN CN201310638469.3A patent/CN104679442A/zh not_active Withdrawn
-
2014
- 2014-06-20 US US15/036,988 patent/US20160291881A1/en not_active Abandoned
- 2014-06-20 WO PCT/CN2014/080452 patent/WO2015081690A1/zh active Application Filing
- 2014-06-20 EP EP14867529.1A patent/EP3062209A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091897A1 (en) * | 2001-01-05 | 2002-07-11 | Ibm Corporation, Recordation From Cover Sheet. | Method and apparatus for supporting parity protected raid in a clustered environment |
CN101410783A (zh) * | 2006-01-26 | 2009-04-15 | 网络装置公司 | 内容可寻址存储阵列元件 |
CN101093434A (zh) * | 2006-06-20 | 2007-12-26 | 韩国科学技术院 | 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法 |
CN101840310A (zh) * | 2009-12-25 | 2010-09-22 | 创新科存储技术有限公司 | 数据读写方法及应用该方法的磁盘阵列系统 |
CN103309820A (zh) * | 2013-06-28 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 磁盘阵列缓存的实现方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN106528001B (zh) * | 2016-12-05 | 2019-08-23 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN107479998A (zh) * | 2017-07-19 | 2017-12-15 | 山东超越数控电子有限公司 | 一种存储介质高效容错方法 |
CN110275670A (zh) * | 2018-03-16 | 2019-09-24 | 华为技术有限公司 | 控制存储设备中数据流的方法、装置、存储设备及存储介质 |
CN110275670B (zh) * | 2018-03-16 | 2021-02-05 | 华为技术有限公司 | 控制存储设备中数据流的方法、装置、存储设备及存储介质 |
US11734183B2 (en) | 2018-03-16 | 2023-08-22 | Huawei Technologies Co., Ltd. | Method and apparatus for controlling data flow in storage device, storage device, and storage medium |
CN110928489A (zh) * | 2019-10-28 | 2020-03-27 | 成都华为技术有限公司 | 一种写数据方法、装置及存储节点 |
CN110928489B (zh) * | 2019-10-28 | 2022-09-09 | 成都华为技术有限公司 | 一种写数据方法、装置及存储节点 |
CN113805799A (zh) * | 2021-08-08 | 2021-12-17 | 苏州浪潮智能科技有限公司 | Raid阵列最近写记录管理的方法、装置、设备及可读介质 |
CN113805799B (zh) * | 2021-08-08 | 2023-08-11 | 苏州浪潮智能科技有限公司 | Raid阵列最近写记录管理的方法、装置、设备及可读介质 |
CN113791731A (zh) * | 2021-08-26 | 2021-12-14 | 深圳创云科软件技术有限公司 | 一种解决存储磁盘阵列Write Hole的处理方法 |
CN115543218A (zh) * | 2022-11-29 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种raid10阵列的读数据方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015081690A1 (zh) | 2015-06-11 |
EP3062209A1 (en) | 2016-08-31 |
EP3062209A4 (en) | 2016-10-26 |
US20160291881A1 (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679442A (zh) | 一种提高磁盘阵列性能的方法及装置 | |
CN103049222B (zh) | 一种raid5的写io优化处理方法 | |
EP3519969B1 (en) | Physical media aware spacially coupled journaling and replay | |
US10346245B2 (en) | Data storage system and data storage method | |
CN102122235B (zh) | 一种raid4系统及其数据读写方法 | |
US8332579B2 (en) | Data storage apparatus and method of writing data | |
US8751740B1 (en) | Systems, methods, and computer readable media for performance optimization of storage allocation to virtual logical units | |
CN101727299B (zh) | 连续数据存储中面向raid5的写操作优化设计方法 | |
CN104765575B (zh) | 信息存储处理方法 | |
CN106255953B (zh) | 持久性数据存储体中的前向参考记录的方法和系统 | |
US9292228B2 (en) | Selective raid protection for cache memory | |
CN102023809A (zh) | 存储系统、从存储系统读取数据的方法及写入数据的方法 | |
CN103793182A (zh) | 可扩展存储保护 | |
US7899971B2 (en) | Mainframe storage controller and mainframe volume virtualization method | |
US20140215127A1 (en) | Apparatus, system, and method for adaptive intent logging | |
CN103858092B (zh) | 一种数据迁移方法和装置 | |
US20150293856A1 (en) | Disk Array Flushing Method and Disk Array Flushing Apparatus | |
CN102521330A (zh) | 一种桌面虚拟化环境下的镜像分布式存储方法 | |
US11042324B2 (en) | Managing a raid group that uses storage devices of different types that provide different data storage characteristics | |
CN103049216B (zh) | 固态硬盘及其数据处理方法、系统 | |
US8862819B2 (en) | Log structure array | |
US20160191665A1 (en) | Computing system with distributed compute-enabled storage group and method of operation thereof | |
CN104765574A (zh) | 数据云端存储方法 | |
CN103729149A (zh) | 一种存储数据的方法 | |
CN103718151A (zh) | 一种文件处理方法及存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20150603 |
|
WW01 | Invention patent application withdrawn after publication |