CN110214305B - 一种数据访问方法及存储阵列 - Google Patents
一种数据访问方法及存储阵列 Download PDFInfo
- Publication number
- CN110214305B CN110214305B CN201780002960.3A CN201780002960A CN110214305B CN 110214305 B CN110214305 B CN 110214305B CN 201780002960 A CN201780002960 A CN 201780002960A CN 110214305 B CN110214305 B CN 110214305B
- Authority
- CN
- China
- Prior art keywords
- page
- logical
- small
- ssd
- address
- 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.)
- Active
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory 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/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/0647—Migration 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/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
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据访问方法,存储阵列的处理器在接收到主机发送的第一数据访问请求后,查找所述数据访问请求所请求数据的逻辑地址对应的第一大页逻辑页的逻辑页地址,所述第一大页逻辑页归属于第一混合页面逻辑块的大页逻辑块。所述处理器在所述第一混合页面逻辑块对应的转换表中查找所述第一大页逻辑页对应的第一数据标记。在所述第一数据标记为小页标记时,所述处理器根据所述转换表中记录的所述第一大页逻辑页对应的小页索引表的地址获取小页索引表,在所述小页索引表中确定所述第一大页逻辑页的逻辑页地址对应的小页逻辑页的逻辑页地址。所述小页逻辑页的逻辑页地址对应的第二SSD的存储空间用于存储从所述第一大页逻辑页的逻辑页地址对应的第一SSD的存储空间中迁移的数据。所述处理器根据所述小页逻辑页的逻辑页地址从所述第二SSD中获取所述请求数据。
Description
技术领域
本申请涉及存储领域,尤其涉及对存储阵列中的数据的访问方法及应用所述访问方法的存储阵列。
背景技术
固态存储器(Solid state disk,SSD)具有高性能、低延迟、低功耗、环境适应性强等优点,同时成本也在不断降低,因此全闪存阵列的应用也越来越广泛。
SSD不能像HDD那样在原地进行覆盖写,而是需要擦除原来的数据,才能写入新的数据,而且SSD的读写单位为页,但擦除的单位却是物理块,所以在对SSD中的数据进行更新时,需要将更新的数据写入另外一个空闲的位置,而把原来的数据设置为无效,等到SSD满的时候再选择无效数据比较多的物理块进行擦除。SSD擦除的物理块中可能包括大量的有效页,这就需要把这些有效页的数据重新拷贝到另外的空闲位置后,再对需要擦除的物理块中的数据进行擦除,这个过程即为垃圾回收,而在垃圾回收的过程,将这些有效页的数据重新拷贝到另外的空闲位置,额外增加了数据的写入,即引起了SSD的写放大。
由于全闪存阵列的访问速度比较快,其上承载的主机的业务也越来越多,这就使得SSD的页面也越来越大,另外,由于IO访问的多样性,每次IO的数据大小也会有很大的区别,而对于一些访问比较频繁且每次访问的数据量比较小的数据,使用大页面的SSD会进一步加大写放大。
发明内容
本发明实施例提供数据访问方法及设备,用于将频繁访问的小数据存储在存储阵列中页面比较小的SSD中,从而减少了写放大。
本发明第一方面提供一种数据访问方法,所述方法由存储阵列的处理器执行。所述存储阵列包括多个第一固态存储器SSD及多个第二SSD,每个第一SSD的页面大小大于每个第二SSD的页面大小。所述多个第一SSD构成的逻辑地址空间被划分为多个大页逻辑块,每个大页逻辑块按照第一SSD的页面大小划分为多个大页逻辑页,所述多个第二SSD构成的逻辑地址空间被划分为多个小页逻辑块,每个小页逻辑块按照第二SSD的页面大小划分为多个小页逻辑页。混合页面逻辑块包括大页逻辑块与小页逻辑块,根据所述混合页面逻辑块中的大页逻辑块构建提供给主机使用的逻辑单元,每个混合页面逻辑块设置有转换表,所述转换表记录了大页逻辑页、数据标记、小页索引表地址的映射关系。所述处理器接收主机发送的第一数据访问请求,所述第一数据访问请求用于访问存储在存储阵列中的请求数据。所述第一数据访问请求中携带所述请求数据的逻辑地址。所述处理器查找所述逻辑地址对应的第一大页逻辑页及在第一大页逻辑页中的对应的逻辑页地址,所述第一大页逻辑页归属于第一混合页面逻辑块的大页逻辑块中。然后,所述处理器在所述第一混合页面逻辑块对应的转换表中查找所述第一大页逻辑页对应的第一数据标记。在所述第一数据标记为小页标记时,根据所述转换表中记录的所述第一大页逻辑页对应的小页索引表的地址获取小页索引表,根据所述逻辑页地址在所述小页索引表中记录的小页逻辑页中确定所述第一大页逻辑页对应的小页逻辑页及在所述小页逻辑页中的地址,所述第一大页逻辑页对应的小页逻辑页对应的第二SSD的存储空间用于存储从所述第一大页逻辑页对应的第一SSD的存储空间中迁移的数据。所述处理器根据所述小页逻辑页及在所述小页逻辑页中的地址及从所述第二SSD中获取所述请求数据。
通过为每个混合页面逻辑块设置转换表,并在转换表中设置数据标记,如此在将第一SSD的数据迁移至所述第二SSD中之后,可通过所述转换表中记录的数据标记找到被迁移至第二SSD的数据,从而使小页面的热数据通过所述转换表访问。
在第一方面的一种可能的实现方式中,所述处理器接收所述主机发送的第二数据访问请求,所述第二数据访问请求用于访问存储在所述存储阵列中的请求数据,其中,所述第二数据访问请求中携带所述请求数据的逻辑地址。所述处理器查找所述第二访问请求中携带的逻辑地址对应的第二大页逻辑页及在第二大页逻辑页中的对应的大页地址,所述第二大页逻辑页归属于第二混合页面逻辑块的大页逻辑块。所述处理器在所述第二混合页面逻辑块对应的转换表中查找所述第二大页逻辑页对应的数据标记,并在所述第二大页逻辑页对应的数据标记为大页标记时,根据所述第二大页逻辑页及大页地址从所述第一SSD中获取所述请求数据。
通过所述转换表中记录数据标记,可以指导数据访问请求从第一SSD中获取所访问的数据。
在第一方面的一种可能的实现中,所述转换表中还记录有每个大页逻辑页的访问次数,当所述处理器从所述第一SSD中获取的所述第二大页逻辑页对应的请求数据的数据量小于预设值时,对所述转换表中所述第二大页逻辑页的访问次数加1。
这样,可以统计访问粒度比较小的数据的访问次数,以便根据所统计的次数进行数据的迁移。
在第一方面的一种可能的实现中,所述处理器周期性在所述转换表中侦测访问次数大于预设值的大页逻辑页,对访问次数大于预设值的大页逻辑页建立小页索引表,并将所述小页索引表的地址记录在所述转换表中,所述小页索引表中记录N个空闲的小页逻辑页,N为每个大页逻辑页所包括的小页逻辑页的个数,N>=1。所述处理器将所述访问次数大于预设值的大页逻辑页对应的存储在第一SSD中的数据迁移至所述空闲的小页逻辑页对应的第二SSD的存储空间中,然后将所述访问次数大于预设值的大页逻辑页的数据标记修改为小页标记,并将所述访问次数大于预设值的大页逻辑页的访问次数清零。
这样,可以将访问粒度比较小,访问次数比较多的数据迁移至页面比较小的第二SSD中,从而减少写放大。
在本发明实施例的一种可能的实现中,每个混合页面逻辑块中的小页逻辑块具有小页逻辑页表,所述小页逻辑页表中记录了每个小页逻辑块所包含的小页逻辑页与第二SSD中的逻辑页的对应关系。所述处理器在根据所述小页逻辑页及在所述小页逻辑页中的地址及从所述第二SSD中获取所述请求数据时,在所述小页逻辑页表中获取所述小页逻辑页及在所述小页逻辑页中的地址对应的第二SSD的逻辑页及第二SSD的逻辑页地址,然后生成子访问请求,所述子访问请求中携带所述第二SSD的逻辑页及逻辑页地址,再将所述子访问请求发送至所述第二SSD,指示所述第二SSD根据所述第二SSD的逻辑页及逻辑页地址获取待访问的数据。
通过所述小页逻辑页表,建立小页chunk的逻辑页与第二SSD中的逻辑页的映射关系,可以方便的找到小页chunk的逻辑页对应的SSD中的逻辑页,从而找到所述请求数据。
在本发明实施例的第一方面的一种可能实现中,每个混合页面逻辑块中的大页逻辑块具有大页逻辑页表,所述大页逻辑页表中记录了每个大页逻辑块所包含的大页逻辑页与第一SSD中的逻辑页的对应关系。所述处理器根据第二大页逻辑页及大页地址从所述第一SSD中获取所述请求数据时,在所述大页逻辑页表中获取所述第二大页逻辑页对应的第一SSD的逻辑页,并确定所述大页地址对应的第一SSD的逻辑页地址,然后生成子访问请求,所述子访问请求中携带所述第一SSD的逻辑页及逻辑页地址,再将所述子访问请求发送至所述第一SSD,指示所述第一SSD根据所述第一SSD的逻辑页及逻辑页地址获取所述请求数据。
通过所述大逻辑页表,建立大页chunk逻辑页的逻辑页与第一SSD中的逻辑页的映射关系,可以方便的找到大页chunk逻辑页的逻辑页对应的SSD中的逻辑页,从而找到所述请求数据。
在本发明实施例的一种可能的实现中,所述小页索引表中记录有每个小页逻辑页的访问次数。所述处理器每隔一预设时间计算所述小页索引表中的所有小页逻辑页对应的访问次数的方差及均值,若方差小于阈值T1,均值大于阈值T2,则将所述小与逻辑页对应的第二SSD中的数据迁移至所述小页索引表对应的大页逻辑页对应的第一SSD中。
通过统计每个小页逻辑页的访问次数,并通过计算所有小页逻辑页对应的访问次数的方差及均值,可以确定所述小页逻辑页是否具有整体被访问的特征,如果是,则将小页逻辑页对应的存储在第二SSD中的数据迁移至第一SSD,提高数据的访问效率。
本发明第二方面提供一种数据访问设备,该存储数据访问设备与第一方面提供的数据访问方法的技术基本相同,实现的有益效果业与也第一方面提供的数据访问方法相同,在此不再赘述。
本发明第三方面提供一种存储阵列,所述存储阵列所述存储阵列包括多个第一固态存储器SSD及多个第二SSD,每个第一SSD的页面大小大于每个第二SSD的页面大小,所述多个第一SSD构成的逻辑地址空间被划分为多个大页逻辑块,每个大页逻辑块按照第一SSD的页面大小划分为多个大页逻辑页,所述多个第二SSD构成的逻辑地址空间被划分为多个小页逻辑块,每个小页逻辑块按照第二SSD的页面大小划分为多个小页逻辑页,一个大页逻辑块与一个小页逻辑块组成一个混合页面逻辑块,根据所述混合页面逻辑块中的大页逻辑块构建提供给主机使用的逻辑单元,每个混合页面逻辑块设置有转换表,所述转换表记录了大页逻辑页、数据标记、小页索引表地址的映射关系。所述存储阵列还包括处理器及存储器。所述存储器连接至所述处理器,用于存储程序指令,所述处理器运行所述程序指令以执行本发明实施例第一方面所提供的数据访问方法。
本发明第四方面提供一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行本发明实施例第一方面所提供的数据访问方法。
附图说明
图1为本发明实施例所应用的存储系统的架构图。
图2为现有技术中使用RAID2.0技术构建逻辑单元的示意图。
图3为现有技术中构成逻辑单元的地址空间的形成示意图。
图4为本发明实施例构建逻辑单元的示意图。
图5a及图5b为图4中每个混合页面chunk中大页chunk对应的大页逻辑页表及小页chunk对应的小页逻辑也表的示意图。
图6为本发明实施例中每个混合页面chunk对应的转换表的示意图。
图7为本发明实施例中对读请求处理的方法的流程图。
图8为本发明实施例在对读请求处理时确定读请求的逻辑地址所对应的大页chunk的示意图。
图9为本发明实施例中对写请求处理的方法的流程图。
图10为本发明实施例中对改写请求处理的方法的流程图。
图11为本发明实施例中根据图6中的转换表将大页SSD中的数据迁移至小页SSD的方法的流程图。
图12为本发明实施例中将大页SSD中的数据迁移至小页SSD后的转换表的示意图。
图13为本发明实施例中的数据访问设备的模块图。
具体实施方式
如图1所示,为本发明实施例所应用的存储系统10的架构图。在所述存储系统10中,主机100可以通过存储区域网络200(storage area network,SAN)或者其他网络连接至存储阵列300。主机110运行有各种应用软件,以为客户提供不同的应用业务。存储阵列300中存储有主机100中的应用在运行时产生的业务数据。所述存储阵列200包括控制器301、磁盘框306及安装在磁盘框306上的4K页面大小的SSD307、8K页面大小的SSD308、及16K页面大小的SSD,再此,仅以这三种页面大小的SSD举例说明,在其他实施例中,也可以包括其他页面的SSD。所述控制器301及所述磁盘框通过端口304与305连接。所述端口304及305可以为SAS端口或者PCIE端口。所述控制器301包括处理器302、内存303及端口304。所述处理器302用于执行内存301中的各种程序以对主机100提供数据访问的服务,并对存储阵列200进行管理。本实施例中,所述内存303中存储有虚拟磁盘建立程序310及转换程序311。所述处理器302通过执行所述虚拟磁盘建立程序310及转换程序311执行本发明实施例所提供的功能,这将在下文结合图8-图11的流程图做详细描述。
通过运行所述虚拟磁盘建立程序310,所述控制器301可以基于SSD构建主机可见的虚拟磁盘,例如逻辑单元(logic unit,LU),以为主机提供存储服务。本实施例中,所述虚拟磁盘建立程序124为在现有的RAID2.0技术上所做的改进。
现有的RAID2.0技术为在具有同样页面大小的SSD20上构建虚拟磁盘,具体方法请参考图2。在需要划分虚拟磁盘时,例如在存储阵列刚接入主机,或者需要重新划分存储阵列的虚拟磁盘时,阵列控制器首先将阵列中的SSD20划分(S201)成多个同样大小(例如64M)的大块(Chunk)21,并记录每个Chunk21所属的SSD20及在所属SSD20上对应的物理地址空间。然后,阵列控制器根据预设RAID策略选择Chunk21构建(S202)RAID组22。所述RAID策略可以是任意一种RAID策略,例如RAID1-6、RAID10等。在RAID组22建好之后,阵列控制器继续在所建立的RAID组22的基础上再构建(S203)LU25。在建LU25时,阵列控制器会将每个RAID组22先划分为多个条带23,每个条带23包括每个chunk22的一部分空间。如图2所示,条带20就由3个chunk22中的每个chunk中的小块24构成。每个条带23中的小块24进行连续编址形成每个条带的地址空间。在构建LUN的时候,会从多个RAID22组中选出多个条带23,以构成LUN的地址空间,同时会记录每个条带23所属的RAID,以及在RAID中的位置。下面以图3为例说明,一个LUN36包括3个条带,每个条带96M,则3个条带即构成288M的地址空间。其中条带30来自RAID33,条带31来自RAID34,条带32来自RAID35。这三个条带顺序编址即形成LU的地址空间,例如,条带30的地址范围为0-95.999M,条带31的地址范围为96-191.999M,条带32的地址范围为192-287.999M。这样,在接收到主机下发的IO后,根据IO中携带的待访问数据的逻辑地址,确定所述逻辑地址落在LU的哪个条带,进一步确定在条带中的哪个小块,这样就可以确定所述IO所属的chunk及在chunk中的位置。
相对于直接在SSD上建立RAID的技术,RAID2.0+在Chunk上建立RAID,而组成RAID的Chunk来自不同的SSD,这样,在一个SSD故障之后,包含该SSD上的Chunk的RAID组中的其他Chunk所在的SSD都可以参与数据的重构,所以数据重构的速度就会比较快。
在本发明实施例中,对所述RAID2.0技术进行改进,在存储阵列300所包括的不同页面大小的SSD上构建虚拟磁盘,改进后的程序即为所述虚拟磁盘建立程序310。如图4所示,所述处理器302通过运行所述虚拟磁盘建立程序310将所述SSD307、308、309划分成chunk之后,会把相同页面大小的Chunk记录在一起,形成chunk组,例如由具有4k大小页面的SSD划分的chunk组41、由具有8K大小页面的SSD的chunk组42、及由具有16k大小页面的SSD划分的chunk组43。然后所述处理器302会从两个不同的chunk组分别取出一个chunk组成混合页面chunk44,这样每个混合页面chunk44包括两种具有不同页面大小的chunk,其中来自页面比较大的chunk组的chunk为大页chunk45,来自页面比较小的chunk组的chunk为小页chunk46。所述处理器302再以混合页面chunk44为基础创建RAID47。在对创建好的RAID47进行条带化时,只对大页chunk45进行条带化,也就是说在通过混合页面chunk44构建虚拟磁盘时,只用大页chunk45构建LU,而小页chunk46不用于构建LU,即不提供给主机使用,只用于迁移大页chunk45对应的数据,关于小页chunk在数据迁移中的使用将在下文做详细描述。
如图5a及5b所示,所述控制器301会为每个混合页面chunk44创建一个大页chunk逻辑页表50及小页chunk逻辑页51表。大页chunk逻辑页表50记录了大页chunk的逻辑页53与所述大页chunk所归属的SSD的逻辑页54的对应关系。所述控制器301按照每个大页chunk的地址空间及页面大小将所53述大页chunk划分为多个逻辑页53,并为每个逻辑页53按照地址顺序进行编号,即为大页chunk逻辑页号。在每个SSD中都会维护一个SSD的逻辑页号54与物理页号的映射表,SSD的处理器(图未示)可以根据访问请求中携带的SSD的逻辑页号在所述映射表中找到所述逻辑页号对应的物理页号,从而找到待访问的数据。
同理,所述小页chunk逻辑页表51记录了小页chunk逻辑页55与所述小页chunk所归属的SSD的逻辑页56的对应关系。将小页chunk的地址空间按照小页chunk的页面大小划分为多个逻辑页55,为每个逻辑页55按照地址顺序进行编号,即为所述小页chunk逻辑页号。
所述控制器301还会为每个混合页面chunk44生成一个如图6所示的转换表60。所示转换表60包括大页chunk逻辑页号列61、数据标记列62、访问次数列63、及小页索引表地址列(STA)64。所述大页chunk逻辑页号列61记录了大页chunk的逻辑页号,所述数据标记列62记录了每个逻辑页53对应的数据标记,该数据标记包括大页标记和小页标记,其中大页标记表示该逻辑页对应的数据存储在该大页chunk对应的大页SSD中,在本实施例中用0表示,该小页标记表示该逻辑页对应数据存储在该小页chunk所对应的小页SSD中,在本实施例中用1表示。当访问逻辑页的数据的长度小于预设值,则对所述访问次数列中所述逻辑页对应的数值加1,所述预设值可以为大chunk的页面大小的50%。当逻辑页53对应的数据标记为小页标记时,则所述小页索引表地址列64就会记录该逻辑页53对应的小页索引表65在内存的地址66,根据该内存地址66可以找到小页索引表65,并通过所述小页索引表66找到待访问的数据。所述小页索引表包括小页chunk逻辑页67及每个逻辑页被访问的次数68。每个小页索引表66中包括的页面数量为一个大chunk逻辑页所包括的小chunk逻辑页的数量。例如,所述大页chunk的逻辑页为16k,所述小页chunk的逻辑页为4K,则每个小页索引表66则记录四个小页逻辑页。所述小页chunk逻辑页67为从图4b所示的小页chunk逻辑页表51中选择的用于迁移所述大页chunk逻辑页53对应的SSD的物理页中的数据。
基于图5a、5b所示的逻辑页表及图6的转换表所述控制器301通过运行所述转换程序311,对接收到的读请求的处理请参考图7所示的流程图。主机100中的应用在需要读取存储阵列300中的数据时,发送读请求至存储阵列300,所述读请求中携带待读取数据的逻辑地址,所述逻辑地址包括逻辑块地址(logic block address,LBA)及虚拟磁盘标识。在本实施例中,所述虚拟磁盘的标识为逻辑单元号(logic unit number,LUN),为方便描述,在以下描述中都用LU标识所述虚拟磁盘。所述LBA为主机100的文件系统定义的逻辑块,一个逻辑块的大小为512K。所述存储阵列300的控制器31在接收(S601)到所述读请求后,根据所述读请求中的LUN及LBA地址确定(S602)待读取数据的地址所属的混合页面chunk。请参考图8,为根据读请求中的逻辑地址确定待读取数据所对应的混合页面chunk的示意图。参照图4LU的构成,假设读请求中指示的LU为LU70,LU70由3个条带构成,即条带71、72、及73。每个条带的大小为60M,则3个条带组成180M的地址空间。其中条带71的地址空间为0-31.999M,条带72的地址空间为32-63.999M,条带73的地址空间为120-179.999M64-95.999M。条带71、72、及73分别来自RAID74、75、及76。
假设读请求中的逻辑地址为5120K+50K,其中5120K为待读取数据在LU中的首地址,而510K所读取数据的长度。根据所述起始位置的地址可以确定待读取数据落在条带71的地址空间,而条带71由三个小块77、78、及79组成,而这三个小块分别位于RAID74的三个大页chunk,且这三个小块在条带71中的地址是连续的,例如小块77的地址范围1-10.333MM,小块78的地址范围为10.334-20.666M,小块79的地址范围为20.667-31.999M。如此,所述控制器可进一步确定所述待读取数据的逻辑地址落在小块77的地址空间,并可确定在小块中的具体位置。在确定了在小块中的位置后,则可将所述待读取数据的逻辑地址转换为大页chunk中的地址空间中的地址。
根据待读取数据在所述大页chunk中的地址确定(S603)所述地址对应的大页chunk的逻辑页,具体方法为用待读取数据在大页chunk的起始地址除以大页chunk的页面大小,并取整,即可以确定待读取数据的起始地址对应的大页chunk的逻辑页。并根据待读取数据的长度确定所述待读取数据的地址有没有跨逻辑页,如果跨逻辑页,则确定待读取数据的地址对应的多个逻辑页。例如,读请求中的逻辑地址在大页chunk中的地址也为5120K+50K,则用5120K/16K得到逻辑页为320,则所述控制器可以确定第一个逻辑页为第320个逻辑页,在用50K/16K=3余2,则说明该待读取的数据占用四个逻辑页,这四个逻辑页号分别为320、321、322、及323,其中逻辑页323的中只用写2K的数据。
在待读取数据的地址所属的大页chunk的逻辑页确定后,对于每个逻辑页,在所述转换表的数据标记列查找(S604)所述逻辑页对应的数据标记为大页标记还是小页标记,如果是大页标记,则在所述大页逻辑页表中查找(S605)所述大页逻辑页对应的SSD逻辑页。生成携带所述SSD的逻辑页及在SSD的逻辑页中的地址范围的子读请求,并将所述子读请求发送(S606)至所述大页chunk所归属的SSD。所述SSD在收到所述读请求后,即可以根据所述子读请求中的SSD逻辑页在SSD中的地址映射表中找到所述SSD逻辑页对应的物理页,然后根据地址范围从所述物理页中读取数据。
例如,若逻辑页号320及321对应的数据标记为大页标记,则在所述打野逻辑也表中找到逻辑页号320及321对应的大页SSD的逻辑页,因为所述逻辑页号320及321对应的待读取数据的长度为逻辑页的大小,所以所生成的子读取请求中待读取数据长度为逻辑页面大小,例如16K。
在步骤S604中,如果所述控制器310在所述转换表中查到的逻辑页的数据标记为小页标记,所述控制器301在所述转换表的小页索引表地址列获取所述逻辑页对应的小页索引表的在内存中的地址,并根据所获取的地址获取(S608)所述小页索引表。根据待读取数据在所述大页chunk的逻辑页中的地址范围及小页chunk逻辑页的大小在所述小页索引表中查找(S609)小页逻辑页号。然后从所述小页chunk逻辑页表中获取(S610)所述小页chunk逻辑页号对应的小页SSD逻辑页号及地址范围。所述控制器301生成并发送(步骤S611)携带所述小页SSD逻辑页号及待读取数据长度的读请求至所述小页SSD。所述小页SSD根据所述小页SSD逻辑页号及自身保存的SSD逻辑页号与物理页地址的映射关系获取物理页地址,然后根据所述待读取数据地址从所述物理页中读取待读取的数据。
基于图5a、5b及图6的表及通过运行所述转换程序311,所述控制器301对接收到的写请求的处理请参考图9的流程图。主机100中的应用在需要向存储阵列300写入数据时,则向所述存储阵列300写请求,写请求中包括待写入数据的逻辑地址。这里的写请求为写入新数据的写请求,不是改写请求,改写请求将在图10的流程图中做说明。存储阵列300的控制器301接收(步骤S801)到所述写请求后,根据所述写请求中的逻辑地址确定(步骤S802)待写入的数据所在的大页chunk,并进一步确定(步骤S803)在待写入的数据的逻辑地址对应的大页chunk的逻辑页。确定待写入数据的逻辑地址对应的大页chunk及对应的大页chunk的逻辑页的方式与确定待读取数据的方式相同,请参考图7中步骤S602及S603的描述,在此不再赘述。
所述控制器301在所述大页chunk所对应的大页SSD的中分配(S804)大页SSD的逻辑页给所述大页chunk的逻辑页,并在所述大页逻辑页表50中记录(S805)所述大页chunk逻辑页与所大页SSD的逻辑页的对应关系。所述控制器301生成携带所述大页SSD的逻辑页的子写请求,并所述所述写请求(S806)发送至所述大页chunk所对应的大页SSD。所述SSD在收到所述写请求后,即可以根据所述写请求中的SSD逻辑页在SSD中找到一块空闲的物理页写入所述待写入数据。所述控制器301判断(S807)所述子写请求所写入的数据大小是否小于预设值,若小于,则所述控制器301对所述转换表中所述大chunk逻辑页的访问次数加1(S807),若不小于,则结束。
基于图5a、5b及图6的表及通过运行所述转换程序,所述控制器对接收到的改写请求的处理请参考图10的流程图。所述主机101在需要对已经写入存储阵列300的数据进行改写时,则发送改写请求至所述存储阵列300。所述改写请求包括待改写数据的逻辑地址及改写数据,所述改写数据用于替换所述逻辑地址对应的已经写入的数据。存储阵列300的控制器301接收(步骤S1001)到所述改写请求后,根据所述改写请求中的逻辑地址确定(步骤S1002)待改写数据所在的大页chunk,并进一步确定(步骤S1003)在待改写数据的逻辑地址对应的大页chunk的逻辑页。确定待改写数据的逻辑地址对应的大页chunk及对应的大页chunk的逻辑页的方式与确定待读取数据的方式相同,请参考图7中步骤S602及S603的描述,在此不再赘述,需要说明的是,在所确定的大页逻辑页为多个逻辑页时,对所述改写请求中的待改写数据页按照逻辑页的大小进行切分,使的每个大chunk逻辑页都对应有各自的待写入数据。
在待改写数据的地址所属的大页chunk的逻辑页确定后,对于每个逻辑页,在所述转换表的数据标记列查找(S1004)所述逻辑页对应的数据标记为大页标记还是小页标记,如果是大页标记,则在所述大页逻辑页表中查找(S1005)所述大页逻辑页对应的SSD逻辑页。生成携带所述SSD的逻辑页及所述大chunk逻辑也对应的改写数据的子改写请求,并将所述子改写请求发送(S1006)至所述大页chunk所归属的大页SSD。所述SSD在收到所述读请求后,即可以根据所述子改写请求中的SSD逻辑页在大页SSD中的地址映射表中找到所述SSD逻辑页对应的物理页,将所述物理页的数据无效,并将所述子改写数据写入空闲物理页。若所改写的数据量小于预设值,则所述控制器301对所述转换表中的大页chunk逻辑页对应的访问次数加1(1007)。
在步骤S1004中,如果所述控制器310在所述转换表中查到的逻辑页的数据标记为小页标记,所述控制器301在所述转换表的小页索引表地址列获取所述逻辑页对应的小页索引表的在内存中的地址,并根据所获取的地址获取(S1008)所述小页索引表。在所述小页索引表中查找(S1009)小页逻辑页号,将改写数据按照所述小页逻辑页的大小进行分割,使每个小页逻辑号对应一段改写数据。然后从所述小页chunk逻辑页表中获取(S1010)所述小页chunk逻辑页号对应的小页SSD逻辑页号。所述控制器301生成并发送(步骤S1011)携带所述小页SSD逻辑页号的子改写请求至所述小页SSD。所述子改写请求还包括所述小页chunk逻辑页号对应的改写数据。所述小页SSD根据所述小页SSD逻辑页号及自身保存的SSD逻辑页号与物理页号的映射关系对物理页号对应的物理页无效,并将所述改写数据写入空闲物理页。所述控制器301对所述小页chunk逻辑页对应的访问次数加(S1012)。
如图11所示,所述控制器301会周期性的检测(S1101)所述转换表中的每个逻辑页对应的访问次数是否大于等于预设值,对于访问次数大于等于预设值的逻辑页,所述控制器301将该逻辑页对应的数据标记由大页标记修改(步骤1102)为小页标记,例如,由0修改为1,并将所述访问次数清零(S1103)。图3为检测之前的转换表,当控制器301检测到逻辑页1201对应的访问次数超过预设值8时,如图12所示,会将该逻辑页1201对应的数据标记1202由0变为1,并将该逻辑页1201对应的访问次数1203清零。
所述控制器301为所述逻辑页1201建立(S1104)小页索引表1204,并将所述小页索引表1204在内存中的地址YYYY1205记录在所述逻辑页1201对应的STA列64中。所述小页索引表1204所包括的小页chunk逻辑页的数量为所述逻辑页1201所包括的小页chunk逻辑页的页数。在所述小页索引表1204建立好之后,所述控制器301在所述小页chunk逻辑页表51中查找(S1205)还未被使用的N个逻辑页,并将所述N个逻辑页的页号记录在所述小页索引表1201的小页chunk逻辑页号列,例如逻辑页1206-1209。逻辑页1206-1209的初始访问次数均为0。
所述控制器301从所述逻辑页1206-1209所归属的小页chunk对应的SSD的空间为每个逻辑页指定(S1206)一个SSD的逻辑页,并将每个SSD逻辑页记录在所述小chunk逻辑页表中的逻辑页1206-1209对应的小页SSD逻辑页号列。所述控制器301生成迁移指令(S1207),所述迁移指令的源地址为所述逻辑页1201对应的大页SSD的逻辑页,所述迁移指令的目标地址为所述逻辑页1206-1209对应的小页SSD的逻辑页。所述控制器301执行所述迁移指令,将所述所述逻辑页1201对应的大页SSD的逻辑页对应的数据从所述大页SSD迁移(S1208)至所述小页SSD中所述逻辑页1206-1209对应的小页SSD的逻辑页的位置处。数据迁移完成后,所述控制器301将所述大chunk逻辑页表中的逻辑页1201对应的大页SSD逻辑页号删除。如此,可以将访问比较频繁的小数据存储在潇页SSD中,从而减少了垃圾回收过程中的写放大,保证了SSD的写入效率的同时,减少了写放大。
在所述小页索引表中还记录了每个小chunk逻辑页被访问的次数,所述控制器每隔一段时间会对每个小页索引表中的逻辑页的访问次数的方差小于阈值T2,均值大于阈值T3,则又会将小页索引表中的逻辑页对应的数据从小页SSD中合并至大页SSD。所述小页小页索引表中的访问次数会每隔一段时间清零,从而使计算结果反映出最近一段时间数据的访问特征。
如图13所示,为本发明实施例中的数据访问设备1300的模块图。所述数据访问设备1300包括接收模块1301、地址转换模块1302、数据访问模块1303、及大小页转换模块1304。所述接收模块1301用于接收主机发送的数据访问请求,所述数据访问请求用于访问存储在存储阵列中的请求数据,其中,所述第一数据访问请求中携带所述请求数据的逻辑地址。所述逻辑地址即为图4中LU的逻辑地址,关于LU的构成请参阅图4的描述。所述访问请求可以为读请求,写请求或者改写请求。接收模块1301执行的功能可参考图7中的步骤S601、图9中的步骤S801及图10中的步骤S1001的描述。
所述地址转换模块1302用于查找所述逻辑地址对应的大页chunk逻辑页及在大页chunk逻辑页中的对应的逻辑页地址,所述大页chunk逻辑页归属于混合页面逻辑块的大页逻辑块中。具体查找过程请参考图8及图7步骤S602及603的相关描述。
所述数据访问模块1303用于在所述混合页面chunk对应的转换表中查找所述大页chunk逻辑页对应的数据标记,在所述数据标记为小页标记时,根据所述转换表中记录的所述大页chunk逻辑页对应的小页索引表的地址获取小页索引表,根据所述逻辑页地址在所述小页索引表中记录的小页chunk逻辑页中确定所述大页chunk逻辑页对应的小页chunk逻辑页及在所述小页chunk逻辑页中的地址。所述大页chunk逻辑页对应的小页chunk逻辑页对应的小页SSD的存储空间用于存储从所述大页chunk逻辑页对应的大页SSD的存储空间中迁移的数据。根据所述小页chunk逻辑页及在所述小页chunk逻辑页中的地址及从所述小页SSD中获取所述请求数据。在所述大页chunk逻辑页对应的数据标记为大页标记时,所述数据访问模块1303还用于根据所述大页chunk逻辑页及大页地址从所述打页SSD中获取所述请求数据。
所述数据访问模块1303在根据所述小页chunk逻辑页及在所述小页chunk逻辑页中的地址及从所述小页SSD中获取所述请求数据时,用于在所述小页chunk逻辑页表中获取所述小页chunk逻辑页及在所述小页chunk逻辑页中的地址对应的小页SSD的逻辑页及小页SSD的逻辑页地址,生成子访问请求,所述子访问请求中携带所述小页SSD的逻辑页及逻辑页地址,将所述子访问请求发送至所述小页SSD,指示所述小页SSD根据所述小页SSD的逻辑页及逻辑页地址获取待访问的数据。
所述数据访问模块1303在根据大页chunk逻辑页及大页地址从所述大页SSD中获取所述请求数据时,用于在所述大页chunk逻辑页表中获取所述大页chunk逻辑页对应的大页SSD的逻辑页,并确定所述大页地址对应的大页SSD的逻辑页地址,生成子访问请求,所述子访问请求中携带所述大页SSD的逻辑页及逻辑页地址,将所述子访问请求发送至所述大页SSD,指示所述大页SSD根据所述大页SSD的逻辑页及逻辑页地址获取所述请求数据。
关于数据访问模块1303所执行的功能可以参考图7中的步骤S604-610及图10中的步骤S1004-S1012的描述。
所述大小页转换模块1304用于周期性在所述转换表中侦测访问次数大于预设值的大页chunk逻辑页,对访问次数大于预设值的大页chunk逻辑页建立小页索引表,并将所述小页索引表的地址记录在所述转换表中,所述小页索引表中记录N个空闲的小页chunk逻辑页,N为每个大页chunk逻辑页所包括的小页chunk逻辑页的个数,N>=1。将所述访问次数大于预设值的大页chunk逻辑页对应的存储在大页SSD中的数据迁移至所述空闲的小页chunk逻辑页对应的小页SSD的存储空间中。将所述访问次数大于预设值的大页chunk逻辑页的数据标记修改为小页标记。将所述访问次数大于预设值的大页chunk逻辑页的访问次数清零。
所述大小页转换模块1304还用于每隔一预设时间计算所述小页索引表中的所有小页逻辑页对应的访问次数的方差及均值,若方差小于阈值T1,均值大于阈值T2,则将所述小与逻辑页对应的小页SSD中的数据迁移至所述小页索引表对应的大页chunk逻辑页对应的大页SSD中。
关于大小页转换模块所执行的功能请参阅图11的相关描述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种数据访问方法,由存储阵列的处理器执行,其特征在于,所述方法包括:
接收主机发送的访问存储在存储阵列中的第一数据的第一数据访问请求,其中,所述第一数据访问请求中携带所述第一数据的第一逻辑地址,所述存储阵列包括多个第一固态存储器SSD及多个第二SSD,每个第一SSD的页面大小大于每个第二SSD的页面大小,所述多个第一SSD构成的逻辑地址空间被划分为多个大页逻辑块,每个大页逻辑块按照第一SSD的页面大小划分为多个大页逻辑页,所述多个第二SSD构成的逻辑地址空间被划分为多个小页逻辑块,每个小页逻辑块按照第二SSD的页面大小划分为多个小页逻辑页,一个大页逻辑块与一个小页逻辑块组成一个混合页面逻辑块,根据所述混合页面逻辑块中的大页逻辑块构建提供给主机使用的逻辑单元,每个混合页面逻辑块设置有转换表,所述转换表记录了大页逻辑页、数据标记、小页索引表地址的映射关系;
查找所述逻辑地址对应的第一大页逻辑页及在第一大页逻辑页中的大页逻辑页地址,所述第一大页逻辑页归属于第一混合页面逻辑块的大页逻辑块;
在所述第一混合页面逻辑块对应的转换表中查找所述第一大页逻辑页对应的第一数据标记;
当所述第一数据标记为小页标记时,根据所述转换表中记录的所述第一大页逻辑页对应的小页索引表的地址获取小页索引表,根据所述大页逻辑页地址在所述小页索引表中确定所述大页逻辑页地址对应的小页逻辑页及在所述小页逻辑页中的小页逻辑页地址,所述小页逻辑页地址对应的第二SSD的存储空间用于存储从所述大页逻辑页地址对应的第一SSD的存储空间中迁移的数据;
根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述主机发送的用于访问存储在所述存储阵列中的第二数据的第二数据访问请求,其中,所述第二数据访问请求中携带所述第二数据的逻辑地址;
查找所述第二数据的逻辑地址对应的第二大页逻辑页及在第二大页逻辑页中的大页逻辑页地址,所述第二大页逻辑页归属于第二混合页面逻辑块的大页逻辑块;
在所述第二混合页面逻辑块对应的转换表中查找所述第二大页逻辑页对应的数据标记;
在所述第二大页逻辑页对应的数据标记为大页标记时,根据所述第二大页逻辑页的大页逻辑页地址从所述第一SSD中获取所述第二数据。
3.如权利要求2所述的方法,其特征在于,所述转换表中还记录有每个大页逻辑页的访问次数,所述方法还包括:
当所述访问请求为改写请求时,对从所述第一SSD中获取的数据量小于预设值的第二大页逻辑页的访问次数加1。
4.如权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括:
周期性在所述转换表中侦测访问次数大于预设值的大页逻辑页;
对访问次数大于预设值的大页逻辑页建立小页索引表,并将所述小页索引表的地址记录在所述转换表中,所述小页索引表中记录N个空闲的小页逻辑页,N为每个大页逻辑页所包括的小页逻辑页的个数,N>=1;
将所述访问次数大于预设值的大页逻辑页对应的存储在第一SSD中的数据迁移至所述空闲的小页逻辑页对应的第二SSD的存储空间中;
将所述访问次数大于预设值的大页逻辑页的数据标记修改为小页标记;
将所述访问次数大于预设值的大页逻辑页的访问次数清零。
5.如权利要求1-3任意一项所述的方法,其特征在于,每个混合页面逻辑块中的小页逻辑块具有小页逻辑页表,所述小页逻辑页表中记录了每个小页逻辑块所包含的小页逻辑页与第二SSD中的逻辑页的对应关系;
所述根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据包括:
在所述小页逻辑页表中获取每个小页逻辑页及其小页逻辑页地址对应的第二SSD的逻辑页及其逻辑页地址;
对每个第二SSD的逻辑页及其逻辑页地址生成一个子访问请求,每个子访问请求中携带一个第二SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第二SSD,指示所述第二SSD根据所述第二SSD的逻辑页及其逻辑页地址获取第一数据。
6.如权利要求4所述的方法,其特征在于,每个混合页面逻辑块中的小页逻辑块具有小页逻辑页表,所述小页逻辑页表中记录了每个小页逻辑块所包含的小页逻辑页与第二SSD中的逻辑页的对应关系;
所述根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据包括:
在所述小页逻辑页表中获取每个小页逻辑页及其小页逻辑页地址对应的第二SSD的逻辑页及其逻辑页地址;
对每个第二SSD的逻辑页及其逻辑页地址生成一个子访问请求,每个子访问请求中携带一个第二SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第二SSD,指示所述第二SSD根据所述第二SSD的逻辑页及其逻辑页地址获取第一数据。
7.如权利要求2-3任意一项所述的方法,其特征在于,每个混合页面逻辑块中的大页逻辑块具有大页逻辑页表,所述大页逻辑页表中记录了每个大页逻辑块所包含的大页逻辑页与第一SSD中的逻辑页的对应关系;
所述数据访问模块根据所述第二大页逻辑页的大页逻辑页地址从所述第一SSD中获取所述第二数据包括:
在所述大页逻辑页表中获取所述第二大页逻辑页对应的第一SSD的逻辑页,并确定所述大页逻辑页地址对应的第一SSD的逻辑页地址;
生成子访问请求,所述子访问请求中携带所述第一SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第一SSD,指示所述第一SSD根据所述第一SSD的逻辑页及逻辑页地址获取所述子访问请求所请求的数据。
8.如权利要求4所述的方法,其特征在于,所述小页索引表中记录有每个小页逻辑页的访问次数;所述方法还包括:
每隔一预设时间计算所述小页索引表中的所有小页逻辑页对应的访问次数的方差及均值,若方差小于阈值T1,均值大于阈值T2,则将所述小页逻辑页对应的第二SSD中的数据迁移至所述小页索引表对应的大页逻辑页对应的第一SSD中。
9.一种数据访问设备,应用于存储阵列,其特征在于,所述设备包括:
接收模块,用于接收主机发送的访问存储在存储阵列中的第一数据的第一数据访问请求,其中,所述第一数据访问请求中携带所述第一数据的第一逻辑地址,所述存储阵列包括多个第一固态存储器SSD及多个第二SSD,每个第一SSD的页面大小大于每个第二SSD的页面大小,所述多个第一SSD构成的逻辑地址空间被划分为多个大页逻辑块,每个大页逻辑块按照第一SSD的页面大小划分为多个大页逻辑页,所述多个第二SSD构成的逻辑地址空间被划分为多个小页逻辑块,每个小页逻辑块按照第二SSD的页面大小划分为多个小页逻辑页,一个大页逻辑块与一个小页逻辑块组成一个混合页面逻辑块,根据所述混合页面逻辑块中的大页逻辑块构建提供给主机使用的逻辑单元,每个混合页面逻辑块设置有转换表,所述转换表记录了大页逻辑页、数据标记、小页索引表地址的映射关系;
地址转换模块,用于查找所述逻辑地址对应的第一大页逻辑页及在第一大页逻辑页中的大页逻辑页地址,所述第一大页逻辑页归属于第一混合页面逻辑块的大页逻辑块;
数据访问模块,用于在所述第一混合页面逻辑块对应的转换表中查找所述第一大页逻辑页对应的第一数据标记;当所述第一数据标记为小页标记时,根据所述转换表中记录的所述第一大页逻辑页对应的小页索引表的地址获取小页索引表,根据所述大页逻辑页地址在所述小页索引表中确定所述大页逻辑页地址对应的小页逻辑页及在所述小页逻辑页中的小页逻辑页地址,所述小页逻辑页地址对应的第二SSD的存储空间用于存储从所述大页逻辑页地址对应的第一SSD的存储空间中迁移的数据;根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据。
10.如权利要求9所述的设备,其特征在于,
所述接收模块还用于接收所述主机发送的用于访问存储在所述存储阵列中的第二数据的第二数据访问请求,其中,所述第二数据访问请求中携带所述第二数据的逻辑地址;
所述地址转换模块还用于查找所述第二数据的逻辑地址对应的第二大页逻辑页及在第二大页逻辑页中的大页逻辑页地址,所述第二大页逻辑页归属于第二混合页面逻辑块的大页逻辑块;
所述数据访问模块还用于在所述第二混合页面逻辑块对应的转换表中查找所述第二大页逻辑页对应的数据标记;在所述第二大页逻辑页对应的数据标记为大页标记时,根据所述第二大页逻辑页的大页逻辑页地址从所述第一SSD中获取所述第二数据。
11.如权利要求10所述的设备,其特征在于,所述转换表中还记录有每个大页逻辑页的访问次数,所述数据访问模块还用于:
当所述访问请求为改写请求时,对从所述第一SSD中获取的数据量小于预设值的第二大页逻辑页的访问次数加1。
12.如权利要求9-11任意一项所述的设备,其特征在于,所述设备还包括大小页转换模块,用于:
周期性在所述转换表中侦测访问次数大于预设值的大页逻辑页;
对访问次数大于预设值的大页逻辑页建立小页索引表,并将所述小页索引表的地址记录在所述转换表中,所述小页索引表中记录N个空闲的小页逻辑页,N为每个大页逻辑页所包括的小页逻辑页的个数,N>=1;
将所述访问次数大于预设值的大页逻辑页对应的存储在第一SSD中的数据迁移至所述空闲的小页逻辑页对应的第二SSD的存储空间中;
将所述访问次数大于预设值的大页逻辑页的数据标记修改为小页标记;
将所述访问次数大于预设值的大页逻辑页的访问次数清零。
13.如权利要求9至11任意一项所述的设备,其特征在于,每个混合页面逻辑块中的小页逻辑块具有小页逻辑页表,所述小页逻辑页表中记录了每个小页逻辑块所包含的小页逻辑页与第二SSD中的逻辑页的对应关系;
所述数据访问模块在根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据时,用于:
在所述小页逻辑页表中获取每个小页逻辑页及其小页逻辑页地址对应的第二SSD的逻辑页及其逻辑页地址;
对每个第二SSD的逻辑页及其逻辑页地址生成一个子访问请求,每个子访问请求中携带一个第二SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第二SSD,指示所述第二SSD根据所述第二SSD的逻辑页及其逻辑页地址获取第一数据。
14.如权利要求12所述的设备,其特征在于,每个混合页面逻辑块中的小页逻辑块具有小页逻辑页表,所述小页逻辑页表中记录了每个小页逻辑块所包含的小页逻辑页与第二SSD中的逻辑页的对应关系;
所述数据访问模块在根据所述小页逻辑页地址及从所述第二SSD中获取所述第一数据时,用于:
在所述小页逻辑页表中获取每个小页逻辑页及其小页逻辑页地址对应的第二SSD的逻辑页及其逻辑页地址;
对每个第二SSD的逻辑页及其逻辑页地址生成一个子访问请求,每个子访问请求中携带一个第二SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第二SSD,指示所述第二SSD根据所述第二SSD的逻辑页及其逻辑页地址获取第一数据。
15.如权利要求10至11任意一项所述的设备,其特征在于,每个混合页面逻辑块中的大页逻辑块具有大页逻辑页表,所述大页逻辑页表中记录了每个大页逻辑块所包含的大页逻辑页与第一SSD中的逻辑页的对应关系;
所述数据访问模块在根据所述第二大页逻辑页的大页逻辑页地址从所述第一SSD中获取所述第二数据时,用于:
在所述大页逻辑页表中获取所述第二大页逻辑页对应的第一SSD的逻辑页,并确定所述大页逻辑页地址对应的第一SSD的逻辑页地址;
生成子访问请求,所述子访问请求中携带所述第一SSD的逻辑页及逻辑页地址;
将所述子访问请求发送至所述第一SSD,指示所述第一SSD根据所述第一SSD的逻辑页及逻辑页地址获取所述子访问请求所请求的数据。
16.如权利要求12所述的设备,其特征在于,所述小页索引表中记录有每个小页逻辑页的访问次数;所述大小页转换模块还用于:
每隔一预设时间计算所述小页索引表中的所有小页逻辑页对应的访问次数的方差及均值,若方差小于阈值T1,均值大于阈值T2,则将所述小页逻辑页对应的第二SSD中的数据迁移至所述小页索引表对应的大页逻辑页对应的第一SSD中。
17.一种存储阵列,所述存储阵列包括多个第一固态存储器SSD及多个第二SSD,每个第一SSD的页面大小大于每个第二SSD的页面大小,所述多个第一SSD构成的逻辑地址空间被划分为多个大页逻辑块,每个大页逻辑块按照第一SSD的页面大小划分为多个大页逻辑页,所述多个第二SSD构成的逻辑地址空间被划分为多个小页逻辑块,每个小页逻辑块按照第二SSD的页面大小划分为多个小页逻辑页,一个大页逻辑块与一个小页逻辑块组成一个混合页面逻辑块,根据所述混合页面逻辑块中的大页逻辑块构建提供给主机使用的逻辑单元,每个混合页面逻辑块设置有转换表,所述转换表记录了大页逻辑页、数据标记、小页索引表地址的映射关系;
所述存储阵列还包括:
处理器,及
存储器,连接至所述处理器,用于存储程序指令,所述处理器运行所述程序指令以执行权利要求1-7任意一项所述的数据访问方法。
18.一种计算机可读介质,其特征在于,包括计算机执行指令,
当计算机的处理器执行所述计算机执行指令时,所述计算机执行权利要求1至8任意一项所述方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/120204 WO2019127490A1 (zh) | 2017-12-29 | 2017-12-29 | 一种数据访问方法及存储阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110214305A CN110214305A (zh) | 2019-09-06 |
CN110214305B true CN110214305B (zh) | 2020-09-08 |
Family
ID=67064951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002960.3A Active CN110214305B (zh) | 2017-12-29 | 2017-12-29 | 一种数据访问方法及存储阵列 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11301157B2 (zh) |
EP (1) | EP3671423B1 (zh) |
CN (1) | CN110214305B (zh) |
WO (1) | WO2019127490A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782136B (zh) * | 2020-05-20 | 2021-07-30 | 重庆大学 | 面向多应用程序的自适应闪存固态盘通道分配方法及装置 |
CN112367304B (zh) * | 2020-10-22 | 2022-08-16 | 杭州大搜车汽车服务有限公司 | 请求限制方法、装置、计算机设备和存储介质 |
CN115079957B (zh) * | 2022-07-20 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
CN116027990B (zh) * | 2023-03-29 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种raid卡及其数据访问方法、系统及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013097618A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 存储虚拟化的装置、存储系统及数据存储方法及系统 |
CN104077235A (zh) * | 2013-03-26 | 2014-10-01 | 擎泰科技股份有限公司 | 分割物理块的方法及存储器系统 |
CN104461393A (zh) * | 2014-12-09 | 2015-03-25 | 华中科技大学 | 一种闪存存储器的混合映射方法 |
CN105808157A (zh) * | 2014-12-31 | 2016-07-27 | 中兴通讯股份有限公司 | 存储架构的创建方法、存储访问方法和存储系统 |
CN105988727A (zh) * | 2015-02-25 | 2016-10-05 | 中兴通讯股份有限公司 | 一种基于raid的存储方法和存储装置 |
CN106326132A (zh) * | 2015-06-29 | 2017-01-11 | 华为技术有限公司 | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5438827B2 (ja) * | 2009-10-09 | 2014-03-12 | 株式会社日立製作所 | 記憶制御装置及び仮想ボリュームの制御方法 |
WO2012067623A1 (en) * | 2010-11-19 | 2012-05-24 | Empire Technology Development Llc | Temperature control using compound capable of photoisomerization |
US9354988B2 (en) * | 2011-03-28 | 2016-05-31 | Sap Se | Allocation strategies for data storage applications |
US20150301743A1 (en) * | 2012-09-24 | 2015-10-22 | Hitachi, Ltd. | Computer and method for controlling allocation of data in storage apparatus hierarchical pool |
US9424201B2 (en) * | 2013-03-14 | 2016-08-23 | Nvidia Corporation | Migrating pages of different sizes between heterogeneous processors |
US10853365B2 (en) * | 2014-03-28 | 2020-12-01 | Hitachi, Ltd. | Database management system, computer, and database management method |
US9779015B1 (en) * | 2014-03-31 | 2017-10-03 | Amazon Technologies, Inc. | Oversubscribed storage extents with on-demand page allocation |
US10394489B2 (en) * | 2015-01-21 | 2019-08-27 | Technion Research & Development Foundation Ltd. | Reusable memory devices with WOM codes |
WO2016174729A1 (ja) * | 2015-04-28 | 2016-11-03 | 株式会社日立製作所 | ストレージ装置 |
CN106294193B (zh) * | 2015-06-03 | 2019-10-15 | 杭州海康威视系统技术有限公司 | 存储设备及基于该存储设备的分块存储方法 |
US9940028B2 (en) * | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
WO2017168905A1 (ja) * | 2016-03-29 | 2017-10-05 | ソニー株式会社 | メモリ制御装置、記憶装置および情報処理システム |
US10282292B2 (en) * | 2016-10-17 | 2019-05-07 | Advanced Micro Devices, Inc. | Cluster-based migration in a multi-level memory hierarchy |
-
2017
- 2017-12-29 CN CN201780002960.3A patent/CN110214305B/zh active Active
- 2017-12-29 WO PCT/CN2017/120204 patent/WO2019127490A1/zh unknown
- 2017-12-29 EP EP17936717.2A patent/EP3671423B1/en active Active
-
2020
- 2020-04-27 US US16/859,234 patent/US11301157B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013097618A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 存储虚拟化的装置、存储系统及数据存储方法及系统 |
CN104077235A (zh) * | 2013-03-26 | 2014-10-01 | 擎泰科技股份有限公司 | 分割物理块的方法及存储器系统 |
CN104461393A (zh) * | 2014-12-09 | 2015-03-25 | 华中科技大学 | 一种闪存存储器的混合映射方法 |
CN105808157A (zh) * | 2014-12-31 | 2016-07-27 | 中兴通讯股份有限公司 | 存储架构的创建方法、存储访问方法和存储系统 |
CN105988727A (zh) * | 2015-02-25 | 2016-10-05 | 中兴通讯股份有限公司 | 一种基于raid的存储方法和存储装置 |
CN106326132A (zh) * | 2015-06-29 | 2017-01-11 | 华为技术有限公司 | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3671423B1 (en) | 2021-09-01 |
EP3671423A1 (en) | 2020-06-24 |
US11301157B2 (en) | 2022-04-12 |
WO2019127490A1 (zh) | 2019-07-04 |
US20200257465A1 (en) | 2020-08-13 |
EP3671423A4 (en) | 2020-10-14 |
CN110214305A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110214305B (zh) | 一种数据访问方法及存储阵列 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
KR101944876B1 (ko) | 파일 액세스 방법 및 장치 및 스토리지 디바이스 | |
KR101852668B1 (ko) | 어드레스 매핑 | |
US9342256B2 (en) | Epoch based storage management for a storage device | |
US11880579B2 (en) | Data migration method and apparatus | |
KR102252419B1 (ko) | 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법 | |
CN108604165B (zh) | 存储装置 | |
WO2018072420A1 (zh) | 存储管理方法及存储设备 | |
EP3958107A1 (en) | Storage system, memory management method, and management node | |
WO2013097618A1 (zh) | 存储虚拟化的装置、存储系统及数据存储方法及系统 | |
KR20170010729A (ko) | 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템 | |
CN113220242B (zh) | 存储管理方法、设备和计算机可读介质 | |
CN111949210A (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
US10929066B1 (en) | User stream aware file systems with user stream detection | |
US11321002B2 (en) | Converting a virtual volume between volume types | |
CN107229573B (zh) | 一种基于固态硬盘的弹性高可用缓存方法 | |
CN115480692A (zh) | 一种数据压缩方法及装置 | |
CN118051179A (zh) | 用于使用多个分区的分区命名空间存储的技术 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
US10853257B1 (en) | Zero detection within sub-track compression domains | |
WO2019026221A1 (ja) | ストレージシステム及びストレージ制御方法 | |
US10922003B1 (en) | Realizing host-assisted device-level data deduplication on solid-state data storage devices with embedded non-volatile memory | |
CN111796757B (zh) | 一种固态硬盘缓存区管理方法和装置 | |
KR101056909B1 (ko) | 플래시 메모리 장치 및 플래시 메모리 장치에서의 메모리 관리 방법 |
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 |