当前位置: 首页 > 专利查询>厦门大学专利>正文

一种固态盘阵列的数据布局方法技术

技术编号:12301728 阅读:97 留言:0更新日期:2015-11-11 11:49
一种固态盘阵列的数据布局方法,涉及计算机存储领域。固态盘阵列上设置四个功能模块即主控模块、请求处理模块、数据映射模块、数据读写模块和一致性维护模块,并设置一个数据映射表和多分块存储区域。包括初始化步骤、请求处理步骤、数据映射步骤、数据读/写步骤、一致性维护步骤和结束步骤。充分利用固态盘阵列的多种不同分块大小在读写操作和请求大小上的优势,综合使用多个分块大小而非单一地使用某一种分块大小,以提高固态盘阵列的整体性能。能够和固态盘阵列功能模块协同工作,并且可以被嵌入到现有的固态盘阵列系统中,包括硬件和软件固态盘阵列系统。适用于构造具有高性能、高可用性和高可靠性的固态盘存储系统。

【技术实现步骤摘要】

本专利技术涉及计算机存储领域,尤其是涉及一种固态盘阵列的数据布局方法
技术介绍
磁盘是目前主流的存储介质,广泛应用于个人电脑、互联网和企业级数据存储等领域,但是由于其机械特性的限制,读写性能无法进一步获得更高的提升,基于磁盘的存储设备逐步成为存储系统的性能瓶颈。近年来,固态盘由于其读写性能高、能耗低、防震性好以及日渐低廉的价格等优点,逐渐成为磁盘的有力替代品。与磁盘相比,基于闪存的固态盘没有机械部件(如磁头、转轴等),其内部由半导体器件组成,因此固态盘对外服务时无需寻道时间等由机械运动引发的延时,固态盘的性能相对于磁盘有极大的提升,具体表现为高随机读写性能、高可靠性和高能效。但是由于固态盘内部闪存芯片的特性,固态盘也存在着局限性,在写入数据时,若原数据页中存在着有效数据,无法在原位置中覆盖写入新数据。固态盘采取的是异地更新的策略,即首先将原数据置为无效,把待更新的数据写入其它空闲页中;当固态盘中无效页越来越多、空闲页数量低于系统所设置阈值时,会触发垃圾回收操作,将待擦除块中的有效数据拷贝到空闲页后擦除该闪存块,从而释放更多的空间来保存新的数据。然而,闪存芯片的擦除次数是有限的,影响了固态盘的使用寿命与可靠性,在企业级服务器的应用场景下将威胁到存储系统的可靠性。在企业级服务器的应用场景下,磁盘阵列技术被广泛用于提升磁盘存储系统的性能和可靠性。相应地,将磁盘阵列技术应用于固态盘,可以构建大容量、高性能、高可靠的固态盘>存储系统。在固态盘阵列中,数据分布在不同固态盘上,实现了同步化的存取操作,增加了读写操作的并行性,提高了固态盘存储系统的性能;另外,由于固态盘阵列引入了数据冗余,也提高了固态盘存储系统的可靠性。而固态盘阵列的分块大小作为固态盘阵列性能的重要影响因素之一,决定着固态盘阵列中数据的分割粒度。目前,关于固态盘阵列中最优分块大小的研究尚处于探索阶段,如果直接采用基于磁盘阵列的最优分块大小,由于没有考虑到固态盘与磁盘内部结构的差异,固态盘阵列的性能将受到限制。FarzanehRajaeiSalmasi,HosseinAsadi,andMajidGhasemiGol.ImpactofStripeUnitSizeonPerformanceandEnduranceofSSD-BasedRAIDArrays.ScientiaIranica,TransactionsD,2013.20(6):1978-1998.
技术实现思路
本专利技术的目的在于提供可综合固态盘阵列的不同分块大小在读写操作和请求大小上的优势,以发挥固态盘阵列最优性能的一种固态盘阵列的数据布局方法。本专利技术包括以下步骤:(1)初始化步骤,具体过程如下:(1.1)主控模块打开已有的固态盘阵列或创建新的固态盘阵列,判断该固态盘阵列是否为新创建的固态盘阵列,若是,则转过程(1.2),否则转过程(1.3);(1.2)主控模块根据用户指令,将新创建的固态盘阵列划分为3个分区,容量比例设置为2∶1∶1,分区号分别设置为0、1和2,按照4KB、8KB和32KB的分块大小对这3个分区重新进行固态盘阵列的条带化并新建数据映射表,转步骤(2);(1.3)主控模块读取保存在固态盘阵列的成员固态盘超级块中的数据映射表和分区信息,转步骤(2);(2)请求处理步骤,具体过程如下:(2.1)请求处理模块判断固态盘阵列的请求等待队列中是否有请求,若有,则获取一个请求并转过程(2.2),否则转过程(2.3);(2.2)请求处理模块获取该请求的偏移量、请求大小和请求类型,转步骤(3);(2.3)记录超时时间,若超时时间低于系统设置的阈值(如10s)时,则转过程(2.1),否则说明此时系统处于空闲状态,转步骤(5);(3)数据映射步骤,具体过程如下:(3.1)数据映射模块判断该请求是否是读请求,若是,则转过程(3.5),否则转过程(3.2);(3.2)数据映射模块根据请求的偏移量及请求大小,判断该请求的数据块是否在当前数据映射表中,若是,则转过程(3.4),否则,从分区大小为4KB的分区中获取一个内部块偏移,转过程(3.3);(3.3)数据映射模块向数据映射表中写入新数据项,数据项中分区号置为0、时间戳设置为当前系统时间、计数器初始化为0;判断请求大小,若请求大小大于16KB,则将该数据项放入待维护队列;操作类型设置为“写入”,转步骤(4);(3.4)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作类型为“更新”,转步骤(4);(3.5)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作类型为“读取”,转步骤(4);(4)数据读写步骤,具体过程如下:(4.1)数据读写模块判断操作类型是否是“写入”,若是,则转过程(4.2),否则判断数据类型是否是“读取”,若是,则转过程(4.3),否则转过程(4.4);(4.2)数据读写模块根据数据项中的“内部块偏移量”写入数据,转步骤(2);(4.3)数据读写模块判断该数据项是否正在进行一致性维护,若是,则从缓冲区读出数据,否则根据该数据项所在分区的“内部块偏移量”从固态盘阵列读出数据,转步骤(2);(4.4)数据读写模块判断该数据项是否正在进行一致性维护,若是,则更新缓冲区中大小为“请求大小”的数据为待写入的数据;否则根据该数据项所在分区的“内部块偏移量”向固态盘阵列写入数据,并判断该数据项的时间戳与当前系统时间的差值是否小于系统设置的超时时间(如2000ms),若是,则更新该数据项的计数器即递增1,否则将计数器重置为0;更新该数据项的时间戳为当前系统时间,转步骤(2);(5)一致性维护步骤,具体过程如下:(5.1)一致性维护模块判断一致性维护队列中是否有待维护的项目,若有,则从一致性维护队列中获取一个待维护项目,转过程(5.2),否则转步骤(2);(5.2)一致性维护模块判断待维护项目的计数器值是否大于系统设置的阈值(如20),若是,则表明该项目近期被频繁更新,无需迁移至其他分块大小的区域,转过程(5.4),否则表明该项目为不经常更新的项,需要将以该项目的分区号下的“内部块偏移量”为起始地址、“请求大小”为长度的数据迁移至其他分块大小的区域,转过程(5.3);(5.3)一致性维护模块把以该维护项目所在“分区号”的“内部块偏移量”为起始地址、“请求大小”为长度的数据写入缓冲区中,判断该项目的数据大小是否小于80KB,若是,则从8KB大小的分区中获取一个内部块偏移并设置分区号为1,否则本文档来自技高网...
一种固态盘阵列的数据布局方法

【技术保护点】
一种固态盘阵列的数据布局方法,其特征在于包括以下步骤:(1)初始化步骤,具体过程如下:(1.1)主控模块打开已有的固态盘阵列或创建新的固态盘阵列,判断该固态盘阵列是否为新创建的固态盘阵列,若是,则转过程(1.2),否则转过程(1.3);(1.2)主控模块根据用户指令,将新创建的固态盘阵列划分为3个分区,容量比例设置为2∶1∶1,分区号分别设置为0、1和2,按照4KB、8KB和32KB的分块大小对这3个分区重新进行固态盘阵列的条带化并新建数据映射表,转步骤(2);(1.3)主控模块读取保存在固态盘阵列的成员固态盘超级块中的数据映射表和分区信息,转步骤(2);(2)请求处理步骤,具体过程如下:(2.1)请求处理模块判断固态盘阵列的请求等待队列中是否有请求,若有,则获取一个请求并转过程(2.2),否则转过程(2.3);(2.2)请求处理模块获取该请求的偏移量、请求大小和请求类型,转步骤(3);(2.3)记录超时时间,若超时时间低于系统设置的阈值(如10s)时,则转过程(2.1),否则说明此时系统处于空闲状态,转步骤(5);(3)数据映射步骤,具体过程如下:(3.1)数据映射模块判断该请求是否是读请求,若是,则转过程(3.5),否则转过程(3.2);(3.2)数据映射模块根据请求的偏移量及请求大小,判断该请求的数据块是否在当前数据映射表中,若是,则转过程(3.4),否则,从分区大小为4KB的分区中获取一个内部块偏移,转过程(3.3);(3.3)数据映射模块向数据映射表中写入新数据项,数据项中分区号置为0、时间戳设置为当前系统时间、计数器初始化为0;判断请求大小,若请求大小大于16KB,则将该数据项放入待维护队列;操作类型设置为“写入”,转步骤(4);(3.4)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作类型为“更新”,转步骤(4);(3.5)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作类型为“读取”,转步骤(4);(4)数据读写步骤,具体过程如下:(4.1)数据读写模块判断操作类型是否是“写入”,若是,则转过程(4.2),否则判断数据类型是否是“读取”,若是,则转过程(4.3),否则转过程(4.4);(4.2)数据读写模块根据数据项中的“内部块偏移量”写入数据,转步骤(2);(4.3)数据读写模块判断该数据项是否正在进行一致性维护,若是,则从缓冲区读出数据,否则根据该数据项所在分区的“内部块偏移量”从固态盘阵列读出数据,转步骤(2);(4.4)数据读写模块判断该数据项是否正在进行一致性维护,若是,则更新缓冲区中大小为“请求大小”的数据为待写入的数据;否则根据该数据项所在分区的“内部块偏移量”向固态盘阵列写入数据,并判断该数据项的时间戳与当前系统时间的差值是否小于系统设置的超时时间(如2000ms),若是,则更新该数据项的计数器即递增1,否则将计数器重置为0;更新该数据项的时间戳为当前系统时间,转步骤(2);(5)一致性维护步骤,具体过程如下:(5.1)一致性维护模块判断一致性维护队列中是否有待维护的项目,若有,则从一致性维护队列中获取一个待维护项目,转过程(5.2),否则转步骤(2);(5.2)一致性维护模块判断待维护项目的计数器值是否大于系统设置的阈值(如20),若是,则表明该项目近期被频繁更新,无需迁移至其他分块大小的区域,转过程(5.4),否则表明该项目为不经常更新的项,需要将以该项目的分区号下的“内部块偏移量”为起始地址、“请求大小”为长度的数据迁移至其他分块大小的区域,转过程(5.3);(5.3)一致性维护模块把以该维护项目所在“分区号”的“内部块偏移量”为起始地址、“请求大小”为长度的数据写入缓冲区中,判断该项目的数据大小是否小于80KB,若是,则从8KB大小的分区中获取一个内部块偏移并设置分区号为1,否则从32KB大小的分区中获取一个内部块偏移量并设置分区号为2;然后将该数据项对应的数据迁移到以“内部块偏移量”为起始地址的位置并更新数据映射表,转过程(5.1);(5.4)一致性维护模块将该维护项目的计数器置为0,时间戳更新为当前系统时间,转过程(5.1);(6)结束步骤,当用户发出指令关闭固态盘阵列时,具体过程如下:主控模块将数据映射表保存到固态盘阵列的超级块中,关闭固态盘阵列设备,释放相关的资源。...

【技术特征摘要】
1.一种固态盘阵列的数据布局方法,其特征在于包括以下步骤:
(1)初始化步骤,具体过程如下:
(1.1)主控模块打开已有的固态盘阵列或创建新的固态盘阵列,判断该固态盘阵列是否
为新创建的固态盘阵列,若是,则转过程(1.2),否则转过程(1.3);
(1.2)主控模块根据用户指令,将新创建的固态盘阵列划分为3个分区,容量比例设置
为2∶1∶1,分区号分别设置为0、1和2,按照4KB、8KB和32KB的分块大小对这3个分区
重新进行固态盘阵列的条带化并新建数据映射表,转步骤(2);
(1.3)主控模块读取保存在固态盘阵列的成员固态盘超级块中的数据映射表和分区信
息,转步骤(2);
(2)请求处理步骤,具体过程如下:
(2.1)请求处理模块判断固态盘阵列的请求等待队列中是否有请求,若有,则获取一个
请求并转过程(2.2),否则转过程(2.3);
(2.2)请求处理模块获取该请求的偏移量、请求大小和请求类型,转步骤(3);
(2.3)记录超时时间,若超时时间低于系统设置的阈值(如10s)时,则转过程(2.1),
否则说明此时系统处于空闲状态,转步骤(5);
(3)数据映射步骤,具体过程如下:
(3.1)数据映射模块判断该请求是否是读请求,若是,则转过程(3.5),否则转过程(3.2);
(3.2)数据映射模块根据请求的偏移量及请求大小,判断该请求的数据块是否在当前数
据映射表中,若是,则转过程(3.4),否则,从分区大小为4KB的分区中获取一个内部块偏
移,转过程(3.3);
(3.3)数据映射模块向数据映射表中写入新数据项,数据项中分区号置为0、时间戳设
置为当前系统时间、计数器初始化为0;判断请求大小,若请求大小大于16KB,则将该数据
项放入待维护队列;操作类型设置为“写入”,转步骤(4);
(3.4)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作
类型为“更新”,转步骤(4);
(3.5)数据映射模块根据请求偏移量检索数据映射表,获取对应的数据项,并设置操作
类型为“读取”,转步骤(4);
(4)数据读写步骤,具体过程如下:
(4.1)数据读写模块判断操作类型是否是“写入”,若是,则转过程(4.2),否则判断
数据类型是否是“读取”,若是,则转过程(4.3),否则转过程(4.4);
(4.2)数据读写模块根据数据项中的“内部块偏移量”写入数据,转步骤(2);
(4.3)数据读写模块判断该数据项是否正在进行一致性维护,若是,则从缓冲区读出数
据,否则根据该数据项所在分区的“内...

【专利技术属性】
技术研发人员:吴素贞毛波杨伟健陈骁林燕萍
申请(专利权)人:厦门大学
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1