存储系统、从存储系统读取数据的方法及写入数据的方法

文档序号:6575655阅读:160来源:国知局
专利名称:存储系统、从存储系统读取数据的方法及写入数据的方法
技术领域
本发明涉及存储技术领域,尤其涉及一种存储系统、从存储系统读取数据的方 法及写入数据的方法。
背景技术
廉价磁盘阵列(RedundantArraysoHnexpensive Disks,RAID)通过把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),以提供比单个硬 盘更高的存储性能以及提供数据备份功能。
随着RAID技术的不断发展,出现了按RAID5级别模式构建的硬盘组,即将数 据和校验位都以间隔分布的方式存储在所有的硬盘上,从而取得更好的负载平衡。该 硬盘组也即一个逻辑硬盘,为便于描述,这里按构建级别对逻辑硬盘进行命名,如按 RAID5级别构建得到的逻辑硬盘称为RAID5硬盘。按RAIDl级别构建得到的逻辑硬盘 称为RAIDl硬盘等。为了提高RAID5级别模式下磁盘阵列即RAID5硬盘的响应能力, 存储系统一般会采用缓存(CACHE)技术。
现有技术中,一种方法是在存储系统中采用随机访问存储器(RandomAccess Memory, RAM)作为高速缓存,但是RAM属于易失性储存介质,所以采用缓存写回方 式的存储系统必须具有备用电池,以保证掉电时RAM中的数据能够完整地写回磁盘阵 列。但是,采用RAM作为高速缓存限制了缓存空间的大小,同时备用电池的使用增加了 成本及设备体积。而且,对于双控系统,两个控制器都必须为对端准备一个镜像缓存。 无论哪个控制器,只要往本端的缓存中写数据,都必须同时启动镜像通道将更新数据写 入对端的镜像缓存,以保证控制器出现故障需要切换时,另一控制器可以完全获得故障 发生时缓存中的数据。这样,主机的每次写IO操作的数据都必须镜像,从而降低了双控 系统的性能,并使得两个控制器耦合性很强不利于存储系统的扩展。
另一种方法将固态硬盘MolidStateDisk,SSD)配置为磁盘阵列即存储系统的缓 存。但是,将SSD配置为缓存的存储系统,复杂度较高。发明内容
本发明实施例提出一种存储系统、从存储系统读取数据的方法及写入数据的方 法,以降低存储系统的复杂度。
本发明实施例提供了一种存储系统,包括控制器及划分有廉价磁盘阵列条带的 第一硬盘,其中,还包括
固态硬盘组,所述固态硬盘组被分配给所述第一硬盘的逻辑单元编号对应的存 储空间;所述固态硬盘组被划分为廉价磁盘阵列条带的集合;所述固态硬盘组的廉价磁 盘阵列条带与所述第一硬盘的廉价磁盘阵列条带具有相同的条带深度及条带尺寸;
所述控制器保存有用于表示所述存储空间与所述固态硬盘组映射关系的哈希映 射表;所述哈希映射表的表项包含索引、指针域及位图域;
所述控制器还保存有解析函数,所述解析函数用于将读写请求中的起始地址解 析为所述哈希映射表的索引。
本发明实施例还提供了一种从存储系统读取数据的方法,包括
接收读请求;
以第一硬盘的廉价磁盘阵列条带为单位对所述读请求中的地址进行划分,得到 廉价磁盘阵列条带地址;
解析所述廉价磁盘阵列条带地址中的起始地址,获得相应的哈希映射表的表项 的索引;所述哈希映射表的表项包含索引、指针域及位图域;
当所述索引所在的哈希映射表的表项中的指针域非空时,将所述起始地址与所 述表项中的指针域的值进行比较;
当所述起始地址与所述表项中指针域的值之差小于所述廉价磁盘阵列条带的尺 寸时,从所述表项的位图域对应的固态硬盘组的条带单元中读出数据;所述固态硬盘组 被分配给所述第一硬盘的逻辑单元编号对应的存储空间。
本发明实施例还提供了一种向存储系统写入数据的方法,包括
接收写请求;
以第一硬盘的廉价磁盘阵列条带为单位对所述写请求中的地址进行划分,得到 廉价磁盘阵列条带地址;
解析所述廉价磁盘阵列条带地址中的起始地址,得到相应的哈希映射表的表项 的索引,所述哈希映射表的表项包含索引、指针域及位图域;
将所述廉价磁盘阵列条带地址对应的数据写入所述索引所在表项对应的固态硬 盘组的条带单元;所述固态硬盘组被分配给所述第一硬盘的逻辑单元编号对应的存储空 间;
更新所述哈希映射表的表项。
上述实施例中,存储系统通过哈希映射表将SSD组作为缓存,使得存储系统对 于访问请求的处理无需考虑所访问数据的冷热情况,降低了存储系统的复杂度。并且, 对于一段时间内频繁访问和更新的数据能够直接命中硬盘缓存(DISK CACHE)即SSD 组,提高了存储系统的响应能力。同时,由于硬盘缓存是非易失性存储介质,掉电后数 据不会丢失,因而存储系统不用再具备备用电池,节约了成本。且由于硬盘缓存的有效 空间比RAM大很多,进一步增加了访问数据在缓存中的停留时间,增大了合并的可能 性。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些 附图获得其他的附图。
图1为本发明实施例提供的存储系统的结构示意图2为本发明实施例提供的存储系统中按RAID 5级别构建的磁盘阵列示意图3为本发 明实施例提供的存储系统中SSD按RAID1+0级别构建的磁盘阵列示 意图;图4为本发明实施例提供的存储系统中哈希映射表的映射示意图;图5为本发明实施例提供的一种从存储系统读取数据的方法的流程图;图6为本发明实施例提供的一种向存储系统写入数据的方法的流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施 例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得 的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例提供的存储系统的结构示意图。该系统可包括控制器 11、第一硬盘12及为第一硬盘12的LUN对应的存储空间分配的固态硬盘即SSD组13。 第一硬盘12可为RAID 5硬盘、RAIDO硬盘、RAIDl硬盘等。假设第一硬盘12被分区, 则每个分区都有自己的LUN,LUN对应的存储空间也即LUN分区。如为第一硬盘12中 的某一个分区分配SSD组13,作为第一硬盘12的缓存。则SSD组13被划分为RAID条 带如RAID1+0条带、RAIDO条带的集合;且SSD组13的RAID条带与所述第一硬盘12 的RAID条带具有相同的条带深度及条带尺寸。当SSD组13被划分为RAID1+0条 带时,SSD组13的RAID1+0条带中还可包含预留的校验数据的条带单元即校验单元,以 及各条带单元的镜像。则校验单元及其镜像统称为校验单元镜像对,其他条带单元及其 镜像统称为条带单元镜像对。控制器11保存有用于表示所述存储空间也即第一硬盘12中的某一 LUN分区 与所述SSD组13映射关系的哈希映射表。所述哈希映射表的表项包含索引、指针域及 位图域;所述索引用于区分所述哈希映射表的不同表项;所述指针域指向所述磁盘中的 RAID条带;所述位图域用于表示SSD组13中对应的条带单元是否存储有所述指针域指 向的RAID条带。例如,当从RAID5硬盘中创建一个LUN分区时,为该LUN分区分配由SSD构
建的磁盘阵列即SSD组作为缓存。其中,RAID5硬盘可以采用左对齐等格式设置校验单元。该SSD组可按RAID1+0级别构建,即可被划分为RAID1+0条带,成为RAID1+0 条带的集合。这些RAID1+0条带与LUN中的RAID5条带具有相同的分条深度和条带尺 寸。并且每个RAID1+0条带包含一个预留的校验单元镜像对,用于解决写洞(write-hole) 问题。如图2、图3所示。图2为本发明实施例提供的存储系统中按RAID 5级别构建的 磁盘阵列示意图。图3为本发明实施例提供的存储系统中SSD按RAID1+0级别构建的磁 盘阵列示意图。图2中第一硬盘由硬盘0 硬盘3按RAID5级别构建而成,RAID5条带 格式为3D+1P。对应地,图3中LUN分区的SSD组由SSDO、SSDl及SSD2按RAID 1+0 级别构建而成,各RAID1+0条带包含3个条带单元镜像对。各RAID1+0条带还可进一 步包含一个校验单元镜像对(Pre-P)。图4为本发明实施例提供的存储系统中哈希映射表的映射示意图。如图4所示,每个哈希映射表表项对应一个RAID1+0物理条带。哈 希映射表表项中的指针域指向当前被缓存的RAID5条带,另一个域是用于指示RAID5条 带中被缓存的条带单元的位图。如索引为O的哈希映射表表项对应O号RAID1+0物理条 带。由于图3中映射表表项的位图域为16bit,因此,每个哈希映射表表项中的位图最多 可描述SSD组中的16个条带单元。读写RAID5条带时,利用哈希映射表找到该RAID5 条带的缓存RAID1+0条带。当磁盘阵列中创 建有多个LUN分区时,可为每个LUN分区的关联SSD组缓存分 配一个哈希映射表。哈希映射表里的内容对磁盘阵列控制器是可见的,所以在更新SSD 组RAID条带中的数据时,必须同步进行哈希映射表数据的更新。所述控制器11还保存有解析函数,所述解析函数用于将读写请求中的起始地址 解析为所述哈希映射表索引。该解析函数可为哈希函数,将主机的读写请求的起始地址 解析为哈希映射表表项的索引,比如可以使用求余数的方法。主机向磁盘阵列控制器发出读写请求时,控制器通过输入输出(IO)模块接收该 读写请求,并将该读写请求的数据读出或写入上述方法实施例实现的缓存中。本实施例中,存储系统通过哈希映射表将SSD组作为缓存,使得存储系统对于 访问请求的处理无需考虑所访问数据的冷热情况,降低了存储系统的复杂度。进一步 地,对于RAID5硬盘存储系统,能够直接利用哈希表决定每个RAID5条带在SSD组中 的缓存位置,并利用哈希表缓存于SSD组中的条带写回RAID5硬盘或阵列中,而不需 要统计数据的冷热程度,对于一段时间内频繁访问和更新的数据能够直接命中硬盘缓存 (DISK CACHE)即SSD组,从而提高了存储系统的响应能力。同时,由于硬盘缓存是非 易失性存储介质,掉电后数据不会丢失,所以存储系统不用再具备备用电池。并且,由 于硬盘缓存的有效空间比RAM大很多,进一步增加了访问数据在缓存中的停留时间,增 大了合并的可能性。图5为本发明实施例提供的一种从存储系统读取数据的方法的流程图。本实施 例中,上述存储系统采用SSD组作为硬盘缓存的读操作过程包括步骤51、接收读请求;该动作可由控制器执行。控制器接收主机发送的读请 求。步骤52、以第一硬盘的RAID条带为单位对读请求中的地址进行划分,得到的 RAID条带地址。如对以RAID5级别构建的第一硬盘,则以RAID5条带为单位对读请 求中的地址进行划分,得到的RAID5条带地址。当读请求中的起始地址与末尾地址与第 一硬盘RAID条带尺寸边界没有对齐时,划分得到的第一个RAID5条带地址和最后一个 RAID5条带地址不足一个条带尺寸,则系统将其视作读满一个条带,进行读操作预取。 读操作时,读取的每个RAID5条带地址所在的RIAD5条带的起始地址与条带尺寸边界对 齐,并且每个RAID5条带的长度都为一个条带尺寸,即对读请求划分得到的RAID5条带 长度与LUN分区中的RAID 5条带长度相同。假设读请求要求读取地址4 25中的数 据,且一个RAID5条带尺寸为8,则对地址4 25划分后,得到四个RAID5条带地址。 其中,第一个RAID5条带地址包括地址4 7,第二个RAID5条带地址包括地址8 15,第三个RAID5条带地址包括地址16 23,第四个RAID5条带地址包括地址24 25。此时,将第一个RAID5条带地址视为地址0 7,将第四个RAID5条带地址为地址24 31。第一个RAID5条带地址的起始地址为地址4,第一个RAID5条带地址所在的 RAID5条带的起始地址为O。而第二个RAID5条带地址、第三个RAID5条带地址及第 四个RAID5条带地址的起始地址与各自所在的RAID5条带地址的起始地址相同,分别为 地址8、地址16、地址24。步骤53、利用所述RAID条带地址中的起始地址得到相应的哈希映射表表项的 索引。该动作可由控制器11通过解析函数对各个RAID条带地址中的起始地址进行解析 得到相应的哈希映射表表项的索引。假设上述第一个RAID5条带地址的首地址4经解析 函数解析得到哈希映射表表项的索引为0,上述第一个RAID5条带地址的起始地址经解 析函数解析得到哈希映射表表项的索引为0 ;上述第二个RAID5条带地址的起始地址8 经解析函数解析得到哈希映射表表项的索引为1 ;上述第三个RAID5条带地址的起始地 址16经解析函数解析得到哈希映射表表项的索引为2,上述第四个RAID5条带地址的起 始地址24经解析函数解析得到哈希映射表表项的索引为3。从而得到哈希映射表表项 0、1、2、3分别对应第一个RAID5条带地址所在的RAID5条带、第二个RAID5条带地 址所在的RAID5条带、第三个RAID5条带地址所在的RAID5条带、第四个RAID5条带 地址所在的RAID5条带。假设SSD组按RAID1+0构建,则同时也表示哈希映射表表项 0、1、2、3分别对应SSD组中的第一个RAID 1+0条带、第二个RAID1+0条带、第三个 RAID1+0条带、第四个RAID1+0条带。这样,通过表项0中的指针域便可获知地址4 7上的数据在RAID5硬盘中的物理位置,通过表项0中的位图域便可获知地址4 7上的 数据是否被缓存在SSD组的对应条带单元中。类似地,也可获知地址8 25上的数据 的存储情况。步骤54、在得到的索引所在的表项中的指针域非空的情况下,将所述起始地址 与所述表项中的指针域的值进行比较,判断比较结果即所述起始地址与所述表项中的指 针域的值之差是否小于条带尺寸。该动作可由控制器执行。当得到的索引所在的表项中的指针域为空时,说明未 命中SSD组中的RAID条带,控制器可执行步骤56。若划分读请求地址得到的所有RAID 条带地址均未命中SSD组中的RAID条带,则控制器通过执行步骤56读取所有RAID条 带地址上的数据。假设上述表项1中的指针域非空,则控制器将上述第二个RAID5条带地址中 的起始地址8与表项1中的指针域的值进行比较。若比较结果小于RAID5条带的尺寸 8,说明第二个RAID5条带地址上的数据正被缓存在SSD组中,也即命中了 SSD组中的 RAID1+0条带,则执行步骤55;否则,执行步骤56。若划分读请求地址得到的所有RAID条带地址均命中SSD组中的RAID条带, 则控制器通过执行步骤55读取所有RAID条带地址上的数据。例如,控制器对第一个 RAID5条带地址、第二个RAID5条带地址、第三个RAID5条带地址、第四个RAID5条 带地址分别执行步骤55读取数据。步骤55、当所述起始地址与所述表项中指针域的值之差小于所述第一硬盘的 RAID条带尺寸时,从所述表项的位图域对应的条带单元中读出数据;所述对应的条带单 元位于SSD组中。 该动作可由控制器执行。具体地,控制器可根据哈希映射表表项中的已缓存条带单元位图,决定是否需要从LUN分区中获取数据。
如果位图中相应的比特位均为“1”,则将该RAID5条带缓存于SSD组中的条 带单元数据直接从SSD的相应地址中读出,执行步骤57。
如果位图中相应的比特位部分为“1”,则将该RAID5条带缓存于SSD组中的 条带单元数据直接从与比特位为“1”的对应SSD组条带单元中读出,再将剩下的条带 单元即在位图中的比特位为“0”的对应条带单元数据从LUN分区中读出,然后执行步 骤57,用合并后的数据响应主机请求,最后将从LUN分区中读出的数据写入SSD组中 RAID1+0条带对应条带单元镜像对中,即将从LUN分区中读出的数据写入SSD组中与位 图中比特位为“0”对应的条带单元中,其中位图与该RAID5条带对应,并且更新内存 中哈希映射表相应表项中的位图域,即,将SSD组中新写入的条带单元镜像对对应的比 特位置1。
若存储系统为双控系统,还需要通过镜像空间的方式将哈希映射表的更新备份 于另一个控制器的镜像缓存中。当存储系统为双控系统时,只有LUN分区的归属控制器 可以修改该映射表;存储系统掉电后,可将该哈希映射表写入保险箱。
步骤56、从第一硬盘的LUN分区中将数据读出。
步骤57、直至读出所有RAID条带地址上的数据后,响应主机的读请求,完成 数据读取。
本实施例中,存储系统直接通过哈希映射表命中读请求所要获得的数据,提高 了读取数据的处理速度。
图6为本发明实施例提供的一种向存储系统写入数据的方法的流程图。本实施 例中,采用SSD组作为硬盘缓存的写操作过程包括
步骤61、接收写请求。该动作可由控制器执行。控制器接收主机发送的写请 求。
步骤62、以第一硬盘的RAID条带为单位对读请求中的地址进行划分,得到的 RAID条带地址。详见上述步骤52的说明。
步骤63、利用所述RAID条带地址中的起始地址得到相应的哈希映射表表项 的索引;哈希映射表的指针域指向第一硬盘中的LUN分区,位图域对应SSD组中的 RAID 1+0条带,具体详见上述步骤53的说明。
步骤64、将所述RAID条带地址对应的数据写入所述索引所在的表项对应的条 带单元;所述对应的条带单元位于SSD组中,详见上述系统实施例的说明。
该动作可由控制器执行。控制器利用求出的哈希映射表索引获得对应表项中 的正被缓存RAID条带指针域的值。如果该指针域的值为空,说明目前SSD组中相应 RAIDO或RAID1+0条带并没有缓存第一硬盘中的条带,因此,可直接将当前RAID条带 地址的数据写入SSD组中。如,假设利用上述第一个RAID5条带地址的起始地址得到的 哈希映射表索引0所在的表项中,指针域的值为空,则说明SSD组中对应的RAID条带没 有存储数据,因而,可直接将上述第一个RAID5条带地址即地址4 7的数据写入SSD 组中对应的RAID条带。具体可执行步骤67 ;否则,执行步骤65。
步骤65、将正被缓存RAID条带指针域的值与条带地址中的起始地址作比较。 假设利用上述第二个RAID5条带地址计算得到表项1的索引,则此时将表项1的指针域的值与上述第二个RAID5条带地址的起始地址8进行比较。如果两者之差小于条带尺寸, 则说明命中了 SSD组中的RAID条带,即SSD组中对应RAIDO或RAID1+0条带缓存的 条带与当前RAID条带地址所在的RAID条带一致,这时直接将当前条带地址的数据写入 SSD组对应的条带中。假设上述第二个RAID5条带地址的起始地址与表项1的指针域的 值之差小于RAID5条带尺寸,说明SSD组中对应的RAIDO或RAID1+0条带正缓存着第 二个RAID5条带地址所在的RAID5条带,也即第二个RAID5条带地址8 15的数据缓 存在SSD组中对应的RAIDO或RAID1+0条带中,则直接将第二个RAID5条带地址8 15的数据写入表项1对应的RAIDO或RAID1+0条带。具体可执行步骤67。如果两者 间的差距大于一个条带尺寸即跨越了条带,则 说明此时哈希映射表表项对应的RAIDO或 RAID1+0条带正缓存着另外一个条带的数据,这时在写入当前RAID条带地址上的数据 之前,必须触发正缓存的另外一个条带数据搬移到第一硬盘的条带中,搬移操作完成后 才可将当前RAID条带地址上的数据写入SSD组中,并根据当前RAID条带地址更新位图 域和指针域。假设利用上述第三个RAID5条带地址计算得到表项2的索引,且表项2中 指针域的值与上述第三个RAID5条带地址的起始地址之差大于1个RAID5条带尺寸,贝Ij 说明SSD组中对应的RAIDO或RAID1+0条带正缓存着另外一个条带的数据,为便于描 述,这里称之为旧缓存条带数据,则将该旧缓存条带数据写到第一硬盘后,再将上述第 三个RAID5条带地址的数据写入SSD组中对应的RAIDO或RAID1+0条带。具体可执行 步骤66。步骤66、触发旧缓存条带数据的写回操作,在哈希映射表表项对应的RAIDO或 RAID1+0条带写入当前RAID条带地址上的数据,并更新相应的表项。假设利用上述第三个RAID5条带地址计算得到表项2的索引,而表项2对应的 RAIDO或RAID1+0条带写入了其他条带数据,即旧缓存条带数据,则将该旧缓存条带数 据写回表项2中的指针域指向第一硬盘中的条带,然后将第三个RAID5条带地址16 23 的数据写入表项2对应的RAIDO或RAID1+0条带。从表项2对应的RAIDO或RAID1+0 条带读取旧缓存条带数据时,根据表项2中的位图域的比特位进行读取,如,当比特位 为1时,说明对应的RAIDO或RAID1+0条带单元中存储有数据;当比特位为0时,说明 对应的RAIDO或RAID 1+0条带单元为空,未存储数据。将第三个RAID5条带地址16 23的数据写入表项2对应的RAIDO或RAID1+0 条带后,更新表项2,即将表项2指针域的值指向第三个RAID5条带地址所在的RAID5 条带的起始地址16。假若表项2指针域的值是指向第一个RAID5条带地址所在的RAID5 条带的起始地址,则指向地址0。如果对应的RAIDO或RAID1+0条带单元在为空的情况 下被写入了数据,则表项2位图域对应的比特位的值也要更新,如由0更新为1。若SSD组中对应的是RAID1+0条带,则哈希映射表表项对应的RAID1+0条带 中还包含校验单元。在哈希映射表表项对应的RAID1+0条带中写入新数据之前,可进一 步通过对新旧数据进行异或运算计算出校验数据。如根据旧缓存条带数据的读出方式从 第一硬盘中读出表项2指向的条带数据,并将从第一硬盘中读出的条带数据与上述第三 RAID5条带地址16 23的数据进行异或运算,得到校验数据。将得到的校验数据存放 于表项2对应的RAID1+0条带的预留的校验条带单元镜像对中,同时将该预留的校验单 元镜像对在位图中的比特位置1。
当存储系统为双控系统时,还可通过镜像空间的方式将哈希映射表的更新备份 于另一个控制器的镜像缓存中。在写回的过程中,如果某一控制器出现故障,切换到另 一控制器后,根据哈希映射表重新写回该条带在SSD组中的数据。此时,校验数据已保 存在预留校验条带单元镜像对中,且位图中的比特位也标识了该校验单元已计算出。这 样,就可以在切换控制器后,从SSD组中将待写回数据和校验数据一起读出,然后下发 到第一硬盘的LUN分区中,而不用重新计算校验数据,从而解决了写洞导致的数据不一 致问题。
步骤67、将写请求划分得到的RAID条带地址上的数据写入相应表项对应的 RAIDO或RAID 1+0条带,更新当前哈希映射表表项的RAID条带指针域的值,使其指向 RAID条带地址所在的RAID条带的起始地址,根据当前缓存的条带单元更新条带单元位 图。
假设利用上述第一个RAID5条带地址的起始地址得到的哈希映射表表项0所在 的索引,且表项0中的指针域的值为空,此时,可直接将第一个RAID5条带地址上的数 据写入表项0对应的RAIDO或RAID1+0条带。由于第一个RAID5条带地址的尺寸小于 RAID5条带尺寸,因此必须根据第一个RAID5条带地址覆盖的条带单元来更新表项0中 的位图域,从而指示目前有哪些条带单元的数据被缓存于SSD组中,最后更新指针域让 其指向第一个RAID5条带地址所在RAID5条带的起始地址。
如果待写条带地址上的数据第一次写入RAIDO或RAID1+0条带中,且无法完全 填满该条带中的某一个或多个条带单元,则触发后台线程将旧数据从LUN分区的对应位 置读出,并填满该条带单元。
假设利用上述第二个RAID5条带地址计算得到表项1的索引,且第二个RAID5 条带地址的起始地址与表项1的指针域的值之差小于RAID5条带尺寸。第二个RAID5条 带地址上的数据写入表项1对应的RAIDO或RAID1+0条带时,若第二个RAID5条带地 址上的数据没有占满其中某个条带单元,且该条带单元对应比特位为0(说明之前该条带 单元没有缓存数据),则从第一硬盘中将数据读出填满SSD中的对应条带单元,并将对应 比特位置1,指示该条带单元现在已经缓存数据。
由于存储系统为读操作配置了读缓存(READ RAM CACTffi),所以在当前划分后条带写入SSD组后,还应判断当前划分后条带是否命中读缓存;若命中读缓存,为了 保证读写数据的一致性,这里需要将划分后的条带的写数据写入读缓存中进行更新。
当存储系统为双控系统时,当前控制器还可通过镜像通道将更新后的哈希映射 表传送到另一个控制器的镜像缓存中,然后,响应主机的写请求。
利用上述方法,对各个RAID条带地址中的数据进行写入处理,直至完成所有 RAID条带地址中数据的写入操作。
本实施例中,存储系统直接通过哈希映射表将写请求中的数据放入SSD组中, 提高了写入数据的处理速度。
本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以 通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中, 该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括ROM、 RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其 依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等 同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方 案的精神和范围。
权利要求
1.一种存储系统,包括控制器及划分有廉价磁盘阵列条带的第一硬盘,其特征在 于,还包括固态硬盘组,所述固态硬盘组被分配给所述第一硬盘的逻辑单元编号对应的存储空 间;所述固态硬盘组被划分为廉价磁盘阵列条带的集合;所述固态硬盘组的廉价磁盘阵 列条带与所述第一硬盘的廉价磁盘阵列条带具有相同的条带深度及条带尺寸;所述控制器保存有用于表示所述存储空间与所述固态硬盘组映射关系的哈希映射 表;所述哈希映射表的表项包含索引、指针域及位图域;所述控制器还保存有解析函数,所述解析函数用于将读写请求中的起始地址解析为 所述哈希映射表的索引。
2.根据权利要求1所述的存储系统,其特征在于,所述固态硬盘组的廉价磁盘阵列条 带为RAID O或RAID 1+0条带。
3.根据权利要求1或2所述的存储系统,其特征在于,所述固态硬盘组的廉价磁盘阵 列条带中包含预留的镜像校验单元。
4.一种从存储系统读取数据的方法,其特征在于,包括 接收读请求;以第一硬盘的廉价磁盘阵列条带为单位对所述读请求中的地址进行划分,得到廉价 磁盘阵列条带地址;解析所述廉价磁盘阵列条带地址中的起始地址,获得相应的哈希映射表的表项的索 引;所述哈希映射表的表项包含索引、指针域及位图域;当所述索引所在的哈希映射表的表项中的指针域非空时,将所述起始地址与所述表 项中的指针域的值进行比较;当所述起始地址与所述表项中指针域的值之差小于所述廉价磁盘阵列条带的尺寸 时,从所述表项的位图域对应的固态硬盘组的条带单元中读出数据;所述固态硬盘组被 分配给所述第一硬盘的逻辑单元编号对应的存储空间。
5.根据权利要求4所述的读取数据的方法,其特征在于,还包括当所述表项的位图域中的比特位表示对应的固态硬盘组的条带单元为空时,从所述 第一硬盘中读取所述表示所述条带单元为空的比特位对应的数据。
6.根据权利要求5所述的读取数据的方法,其特征在于,响应所述读请求之前还包括将从所述第一硬盘读取的数据与从所述表项的位图域对应的固态硬盘组的条带单元 读取的数据合并;将从所述第一硬盘读取的数据写入所述表项的位图域对应的条带单元中。
7 一种向存储系统写入数据的方法,其特征在于,包括 接收写请求;以第一硬盘的廉价磁盘阵列条带为单位对所述写请求中的地址进行划分,得到廉价 磁盘阵列条带地址;解析所述廉价磁盘阵列条带地址中的起始地址,得到相应的哈希映射表的表项的索 弓丨,所述哈希映射表的表项包含索引、指针域及位图域;将所述廉价磁盘阵列条带地址对应的数据写入所述索引所在表项对应的固态硬盘组的条带单元;所述固态硬盘组被分配给所述第一硬盘的逻辑单元编号对应的存储空间;更新所述哈希映射表的表项。
8.根据权利要求7所述的写入数据的方法,其特征在于,还包括在所述表项中的指针 域非空时,将所述起始地址与所述表项中的指针域的值进行比较。
9.根据权利要求7或8所述的写入数据的方法,其特征在于,还包括从所述第一硬盘的相应位置读出数据,写入所述表项对应的固态硬盘的条带单元 中;所述第一硬盘的相应位置与所述表项对应的固态硬盘的条带单元中无数据的位置对 应。
10.根据权利要求7或8所述的写入数据的方法,其特征在于,还包括通过镜像通道发送哈希映射表,该哈希映射表的表项经过更新。
11.根据权利要求8所述的写入数据的方法,其特征在于,还包括当所述比较得到 所述起始地址与所述表项中的指针域的值之差大于所述廉价磁盘阵列条带的尺寸时,对 所述表项对应的固态硬盘的条带单元执行写回操作;从所述第一硬盘中读出所述表项中的指针域指向的条带数据,并根据所述读出的数 据与所述写请求中的待写入的数据计算校验数据;将所述校验数据写入所述表项中位图域对应的所述固态硬盘组的校验单元,更新所 述表项中位图域中的比特位;将所述写请求中的待写入的数据写入所述表项对应的固态硬盘组的条带单元。
全文摘要
本发明实施例涉及一种存储系统、从存储系统读取数据的方法及写入数据的方法,系统包括控制器及划分有廉价磁盘阵列条带的第一硬盘,还包括固态硬盘组,所述固态硬盘组被分配给所述第一硬盘的逻辑单元编号对应的存储空间;所述固态硬盘组被划分为廉价磁盘阵列条带的集合;所述固态硬盘组的廉价磁盘阵列条带与所述第一硬盘的廉价磁盘阵列条带具有相同的条带深度及条带尺寸;所述控制器保存有用于表示所述存储空间与所述固态硬盘组映射关系的哈希映射表;所述哈希映射表的表项包含索引、指针域及位图域;所述控制器还保存有解析函数,所述解析函数用于将读写请求中的起始地址解析为所述哈希映射表的索引。
文档编号G06F3/06GK102023809SQ200910093830
公开日2011年4月20日 申请日期2009年9月21日 优先权日2009年9月21日
发明者张巍, 林宇 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1