对固态驱动器再配置数据的存储装置、存储控制器以及方法

文档序号:6494485阅读:138来源:国知局
对固态驱动器再配置数据的存储装置、存储控制器以及方法
【专利摘要】根据实施方式,存储控制器包括访问统计值收集部、选择部和再写入部。访问统计值收集部对构成使用固态驱动器定义的逻辑单元的逻辑区域的多个一定尺寸的小逻辑地址区域各自的写入频度进行收集。选择部从逻辑单元中选择写入频度低的第一小逻辑地址区域的集合。再写入部将第一小逻辑地址区域的集合的数据集中再写入到固态驱动器中,将剩余的第二小逻辑地址区域的集合的数据集中再写入到固态驱动器中。
【专利说明】对固态驱动器再配置数据的存储装置、存储控制器以及方法
【技术领域】
[0001]本发明的实施方式涉及对固态驱动器再配置数据的存储装置、存储控制器以及方法。
【背景技术】
[0002]近年来,出现了具备固态驱动器(SSD)的存储装置。SSD由可重写的非易失性存储器构成。作为可重写的非易失性存储器一般可使用闪存。SSD与使用磁盘的硬盘驱动器(HDD)相比,由于无需与盘的旋转相伴的机械式的控制所以能进行高速的访问(access)。
[0003]但是,向SSD (更详细地说是SSD内的闪存)的写入,与向HDD的写入不同,有几个制约。第一是,在对已经写入到SSD中的数据进行重写的情况下,在该SSD内,需要在擦除该数据(也就是说既存的旧的数据)之后写入新的数据的步骤。进而,数据擦除例如只能以被称为几百千字节(KB)程度的尺寸的区块(存储器区块或者物理区块)的单位来执行。
[0004]因此,一般来说SSD使用比利用该SSD的主机计算机(以下称为主机)所需的(或者所识别的)储存设备的存储容量大的容量的闪存来构成。在具备多个SSD的储存设备中,通过有选择地分配将SSD的存储区域按每一定容量(尺寸)划分而设置的多个物理区块,从而定义(构建)多个逻辑单元(逻辑盘)。主机对逻辑单元进行数据的读出以及写入。SSD被称为物理存储器或物理盘。在由主机向逻辑单元的访问中使用逻辑地址,在向物理存储器的访问中使用物理地址。逻辑地址一般与物理地址不一致。此外,即使设在初始状态中逻辑地址与物理地址一致,当重复逻辑单元的数据的重写(也就是说物理存储器的数据的重写)时,逻辑地址也会变得与物理地址不一致。
[0005]主机通过使用逻辑地址对逻辑单元进行逻辑访问,从而对物理存储器(SSD)进行访问。为了能够进行来自该主机的访问,例如SDD所内置的控制器对逻辑地址与物理地址的对应关系进行管理。
[0006]在此,设存储装置处于逻辑地址与物理地址一致的初始状态。在该状态下,设进行了向比区块尺寸小的尺寸的数据的逻辑单元的写入。在这种情况下,SSD不对被分配给进行了写入的逻辑地址的物理区块进行数据的写入,不进行数据的更新。取代不进行该数据的更新,而将更新前的旧数据设为无效进行管理。另一方面,SSD重新将未使用的物理区块分配给所述逻辑地址,对该重新分配的物理区块写入数据。
[0007]SSD中的无效化后的数据的区域的产生,被称为存储区域(更详细地说是有效的存储区域)的碎片化(fragmentation)。目前,存储区域的碎片化加重,增加了包括无效化后的数据的区域的区块(更详细地说是使用中区块)。在这种情况下,由于在SSD (物理存储器)内能使用的自由区块(未使用的物理区块)减少,所以变得不能进行新的数据写入。因而,SSD自主地将记录在包含无效化后的数据的区域的多个物理区块的有效数据总括起来再写入到未使用的物理区块中。而且,SSD通过该再写入对变为不需要的所述多个物理区块的数据进行擦除。将这样的处理称为碎片化消除处理(碎片整理处理)。通过该碎片化消除处理,所述多个物理区块能作为未使用的区块(自由区块)进行再利用。
[0008]现有技术文献
[0009]专利文献
[0010]专利文献1:日本专利第4261532号公报
[0011]发明的概要
[0012]发明要解决的课题
[0013]然而,当在SSD内部执行前述那样的碎片化消除处理的频度变高时,该SSD的访问速度会降低。
[0014]因此,要求降低在SSD (固态驱动器)内执行碎片化消除处理的频度。

【发明内容】

[0015]本发明要解决的课题在于,提供一种以能降低在固态驱动器中执行碎片化消除处理的频度的方式对该固态驱动器再配置数据的存储装置、存储控制器以及方法。
[0016]用于解决课题的手段
[0017]根据实施方式,存储装置具备固态驱动器和存储控制器。所述存储控制器对所述固态驱动器进行控制。所述存储控制器具备逻辑单元管理部、访问统计值收集部、选择部和再写入部。所述逻辑单元管理部对具有被分配了所述固态驱动器的物理区域的逻辑区域的逻辑单元进行定义。所述访问统计值收集部对构成所述逻辑单元的所述逻辑区域的多个一定尺寸的小逻辑地址区域各自的写入频度进行收集。所述选择部基于所述写入频度,分别从所述逻辑单元中选择所述写入频度低的第一小逻辑地址区域的集合和除了所述第一小逻辑地址区域的集合之外的第二小逻辑地址区域的集合。所述再写入部执行用于将所述第一小逻辑地址区域的集合的数据集中再写入到所述固态驱动器中的第一再写入、以及用于将所述第二小逻辑地址区域的集合的数据集中再写入到所述固态驱动器中的第二再写入。
【专利附图】

【附图说明】
[0018]图1是表示第一实施方式的存储装置的典型的硬件结构的框图。
[0019]图2是主要表示图1所示的存储控制器的典型的功能结构的框图。
[0020]图3是用于说明所述第一实施方式中的写入频度低的逻辑地址区域的数据的再写入的图。
[0021]图4是用于说明所述第一实施方式中的写入频度高的逻辑地址区域的数据的再写入的图。
[0022]图5是用于说明所述第一实施方式中的逻辑单元的存储区域和逻辑区块和统计区块的关系的图。
[0023]图6是用于说明所述第一实施方式中的每个统计区块的写入统计值与该统计区块的数据的再配置位置的关系的图。
[0024]图7是用于说明所述第一实施方式中的写入统计值大的统计区块的数据的再写入的图。
[0025]图8是用于说明所述第一实施方式中的写入统计值小的统计区块的数据的再写入的图。[0026]图9是表示所述第一实施方式中的包含访问统计值的更新的指令处理的步骤的流程图。
[0027]图10是表示第二实施方式的包含存储装置的储存系统的典型的硬件结构的框图。
[0028]图11是主要表示图10所示的存储控制器的典型的功能结构的框图。
[0029]图12是用于说明所述第二实施方式中的再映射处理的图。
[0030]图13是表示所述再映射处理的步骤的流程图。
[0031]图14是用于说明所述第二实施方式的变形例中的每个映射单位的分段的图。
[0032]图15是表示所述变形例中的再写入处理整体的步骤的流程图。
[0033]图16是表示图15所示的再写入处理中的第一处理的步骤的流程图。
[0034]图17是表示图15所示的再写入处理中的第二处理的步骤的流程图。
【具体实施方式】
[0035]以下,参照附图对实施方式进行说明。
[0036]<第一实施方式>
[0037]图1是表示第一实施方式的存储装置的典型的硬件结构的框图。图1所示的存储装置包括固态驱动器(SSD) 10和主机计算机(以下称为主机)20。SSDlO用作存储装置的物理存储器11。
[0038]主机20具备存储控制器21。在第一实施方式中,存储控制器21预先内置于主机20中。但是,存储控制器21也可以配备在安装于主机20的卡插槽使用的卡中。此外,也可以是存储控制器21的一部分内置于主机20中,该存储控制器21的剩余部分配备于所述卡中。
[0039]存储控制器21利用物理存储器11 (SSDlO)的存储区域对能从主机20进行识别的逻辑单元(以下称为LU) 12进行定义。存储控制器21通过使用逻辑地址对LU12进行逻辑访问,从而对SSDlO (物理存储器11)进行访问。也就是说存储控制器21对SSDlO使用逻辑地址来请求访问。SSDlO (更详细地说是SSDlO中内置的控制器)对LU12的逻辑区域(逻辑地址)与物理存储器11的物理区域(物理地址)的对应关系进行管理。SSDlO基于上述的对应关系将来自存储控制器21的访问请求所示的逻辑地址变换为物理地址,访问该物理地址所示的物理区域。
[0040]图2是主要表示图1所示的存储控制器21的典型的功能结构的框图。存储控制器21具备LU (逻辑单元)管理部211、访问统计值收集部212、选择部213、访问控制器214以及管理数据存储部215。LU管理部211对LU12进行定义(构建)而且进行管理。
[0041]访问统计值收集部212按每个LU12的小区块SB (也就是说小逻辑地址区域)来对访问统计值进行收集。小区块SB是后述的逻辑区块被等分割(例如4分割)后的部分的区域。在以下的说明中,将小区块SB称为统计区块SB。访问统计值例如包括写入统计值W_I以及读取统计值R_I。
[0042]写入统计值W_I表示用于收集访问统计值的预先确定的期间(以下称为统计收集期间)中的、向LU12的第I (I =0、 1、2…)个统计区块SB的数据写入的次数。也就是说写入统计值W_I表示向LU12的第I个统计区块SB的数据写入的频度(也就是说更新频度)。“I”是表示统计区块SB的索引值(统计索引值)。
[0043]读取统计值R_I表示统计收集期间中的从LU12的第I个统计区块SB的数据读出的次数。也就是说读取统计值R_I表示从LU12的第I个统计区块SB的数据读出的频度。
[0044]选择部213基于LU12的每个统计区块SB的统计值(例如写入统计值W_I),按访问频度由低到高的顺序,选择一定数目的访问频度(例如写入频度)低的统计区块SB。在访问频度低的统计区块SB的选择后,选择部213对剩余的统计区块SB进行选择。也就是说选择部213将LU12的区域整体区分为访问频度低的统计区块SB (第一小区块)的集合和访问频度高的统计区块SB (第二小区块)的集合。
[0045]访问控制器214根据来自主机20的访问请求(访问指令),通过对LU12进行逻辑访问,从而对物理存储器11进行访问。访问控制器214具备再写入部214a。每当统计收集期间经过时,再写入部214a就将由选择部213选择的写入频度低的统计区块SB的数据逻辑再写入(覆盖)到该统计区块SB上。向该LU12的逻辑再写入,在物理存储器11 (SSDlO内的控制器)内,作为向连续的存储器区块的数据的再写入(也就是说再配置)而实现。再写入部214a在写入频度低的统计区块SB的数据的再写入后,将剩余的统计区块SB的数据逻辑再写入(覆盖)到该统计区块SB上。
[0046]在第一实施方式中,存储控制器21的上述的功能要素(也就是说LU管理部211、访问统计值收集部212、选择部213以及访问控制器214)是,通过图1所示的主机20 (或者该主机20内的存储控制器21)的CPU执行存储控制程序而实现的软件模块。但是,功能要素211至214的一部分或者全部也可以由硬件模块实现。
[0047]管理数据存储部215例如使用主机20 (或者该主机20内的存储控制器21)具有的存储器的存储区域的一部分来实现。在管理数据存储部215中储存有访问统计值表(以下称为AST)215a。AST215a的各项目用于与LU12的统计区块SB的统计索引值I相对应地储存访问统计值(写入统计值W_I以及读取统计值R_I)。
[0048]第一实施方式的特征在于,利用由再写入部214a进行的数据再写入,将由选择部213选择的访问频度低的统计区块SB的数据,再配置于SSDlO (物理存储器11)的连续的存储器区块。对于应用这样的再写入的理由,在以下进行说明。
[0049]在SSDlO被用作物理存储器11的第一实施方式中,当存储控制器21对写到LU12中的数据(更详细地说是比区块尺寸小的尺寸的数据)进行更新时,在SSDlO内会产生无效数据的区域。因此,当这样的数据更新(数据写入)对LU12内的很多的逻辑区域(逻辑地址区域)进行时,如根据以往技术的说明也可明确的那样,存储区域的碎片化加重,包含无效数据的区域的使用中的存储器区块(物理区块)会增加。在这种情况下,在SSDlO内,碎片化消除处理会自主地执行。但是,当该碎片化消除处理频繁执行时,SSDlO (物理存储器11)的访问速度会降低。这与LU12的访问速度降低是等效的。
[0050]因此,为了降低执行碎片化消除处理的频度,考虑减少SSDlO的存储器区块内的无效数据。为此,LU12的全部逻辑地址区域的数据按顺序再度写入到该LU12即可。其理由是因为,向LU12的顺序的数据写入,在SSDlO内,作为向空的连续的存储器区块的数据的再写入(也就是说再配置)来实现。也就是说是因为,通过以连续的逻辑地址在LU12逻辑写入数据的动作,该数据被集中记录到物理存储器11中。
[0051]但是,从主机20向LU12的访问在相同存储装置内易成为同样的倾向(图案)。因此,即使如上所述利用顺序写入而在物理存储器11内的连续的区域配置数据,因其后的写入也会再次出现无效数据的区域。
[0052]因此第一实施方式为了减少无效数据的区域,也就是说为了降低执行碎片化消除处理的频度,应用由选择部213进行的统计区块SB的选择和由再写入部214a进行的数据再写入。对该方法的概要进行说明。
[0053]一般来说,在利用向LU12的逻辑写入对SSDlO那样的物理存储器写入数据的情况下,不对该LU12的逻辑地址区域(逻辑区域)整体均匀地产生写入。也就是说,在LU12内,分布有写入(更新)频度低的逻辑地址区域和写入高的逻辑地址区域。
[0054]因此发明人为了减少SSDlO (物理存储器11)的存储区域的碎片化,以至认识到基于写入频度的数据的再配置是有效的。所谓该数据的再配置是,将写入频度低的逻辑地址区域的数据和写入频度高的逻辑地址区域的数据分别再写入(再配置)到SSDlO内的不同存储器区块。
[0055]若应用这样的数据再配置,则主机20 (存储控制器21)就会变成在SSDlO的区域被分成写入频度低的第一存储器区块的集合和写入频度高的第二存储器区块的集合的状态下利用SSD10。在这种情况下,虽然会产生向与第二存储器区块的集合对应的逻辑地址区域的写入动作,但几乎不会产生向与第一存储器区块的集合对应的逻辑地址区域的写入动作。由此,由于能将碎片化的产生限定于写入频度高的存储器区块的集合,所以能减少在SSDlO整体的碎片化的产生量。
[0056]以下,参照图3以及图4来说明第一实施方式中的由再写入部214a进行的数据的再写入。图3是用于说明写入频度低的逻辑地址区域的数据的再写入的图,图4是用于说明写入频度高的逻辑地址区域的数据的再写入的图。在图3中,从由箭头301、303、305以及307示出的逻辑地址开始的LU12各自的逻辑地址区域302、304、306以及308是,写入频度低的不连续的逻辑地址区域。在图4中,从由箭头401、403以及405示出的逻辑地址开始的LU12各自的逻辑地址区域402、404以及406是,写入频度高的(更详细地说是写入频度不低的)不连续的逻辑地址区域。
[0057]再写入部214a首先连续地读出写入频度低的逻辑地址区域302、304、306以及308的数据,并将该读出的数据逻辑再写入(也就是说覆盖)到该逻辑地址区域302、304、306以及308上。为了该再写入,再写入部214a使用对应的逻辑地址,对物理存储器11 (SSDlO)请求来自逻辑地址区域302、304、306以及308的数据的连续的读出、和对连续读出的数据的逻辑地址区域302、304、306以及308的写入。
[0058]物理存储器11 (SSDlO)的存储区域(物理地址区域)包括多个一定尺寸的存储器区块(物理区块)PB_0、PB_1、…、PB_M-1、PB_M、…。存储器区块是物理存储器11中的数据擦除的最小的单位。
[0059]物理存储器11 (SSDlO内的控制器)根据来自再写入部214a的读出请求,连续读出分配给图3所示的逻辑地址区域302、304、306以及308的该物理存储器11 (SSDlO)的物理地址区域(物理区域)的数据。例如,设逻辑地址区域302、304、306以及308的总尺寸与预先确定的数(在图3的例子中是M个)的存储器区块的总尺寸一致。
[0060]物理存储器11` (SSDlO内的控制器)根据来自再写入部214a的所述读出请求后续接的写入请求,使分配给逻辑地址区域302、304、306以及308的该物理存储器11 (SSDlO)的物理地址区域无效。此外物理存储器11 (SSD10内的控制器)确保与逻辑地址区域302、304,306以及308的总尺寸对应的个数(也就是说M个)的自由存储器区块(更详细地说是物理位置连续的M个自由存储器区块),例如确保存储器区块ΡΒ_0、PB_1、…、PB_M-1。而且,物理存储器11 (SSDlO内的控制器)如图3所示,将由所述写入请求指定的数据,也就是说从逻辑地址区域302、304、306以及308读出的数据,从存储器区块ΡΒ_0的开头起依次写入到存储器区块PB —O、PB — 1、…、PB —M-1中。
[0061]这样,写入频度低的逻辑地址区域的数据集中写入到连续的M个存储器区块ΡΒ_0至PB_M-1的集合(存储器区块集合)309 (参照图3)。以后,物理存储器11 (SSDlO内的控制器)将逻辑地址区域302、304、306以及308与存储器区块PB_0、PB_1、…、PB_M_1 (存储器区块集合309)内的对应的物理地址区域相关联地进行管理。
[0062]接下来再写入部214a将未成为上述的再写入的对象的、剩余的逻辑地址区域的数据,也就是说包含逻辑地址区域402、404以及406的写入频度高的逻辑地址区域的数据,与上述的写入频度低的逻辑地址区域的数据的再写入同样地,再写入到该写入频度高的逻辑地址区域中。由此,物理存储器11 (SSDlO内的控制器)将包含逻辑地址区域402、404以及406的写入频度高的逻辑地址区域的数据,按图4所示,顺序写入到例如从存储器区块PB_M开始的连续的存储器区块的集合(存储器区块集合)407。
[0063]这样,写入频度高的逻辑地址区域的数据被集中写入到与存储器区块集合309不同的存储器区块集合407 (参照图4)。以后,物理存储器11 (SSDlO内的控制器)将包含逻辑地址区域402、404以及406的写入频度高的逻辑地址区域和存储器区块集合407内的对应的物理地址区域关联起来进行管理。
[0064]很明显,在写入频度低的区域的数据被集中再写入的、物理存储器Il(SSDlO)内的区块集合309中,无效数据的区域变得难以产生。由此根据第一实施方式,在物理存储器11(SSDlO内的控制器)内执行碎片化消除处理的频度减少,能防止该物理存储器11 (SSDlO)的访问速度的降低(也就是 说LU12的访问速度的降低)。
[0065]接下来,对为了上述那样的再写入而在第一实施方式中应用的写入频度的收集,参照图5进行说明。图5是用于说明LU12的存储区域和逻辑区块和统计区块SB的关系的图。
[0066]LU12的存储区域包括与物理存储器11 (SSDlO)的存储器区块相同尺寸的多个逻辑区块LB_0、LB-1、…。也就是说LU12的存储区域由LU管理部211分割(也就是说区分)成与存储器区块相同尺寸的多个逻辑区块LB_0、LB-1、…进行管理。LU12的逻辑区块LB_j (j = 0,1,…)的数目比物理存储器11 (SSDlO)的存储器区块PB_i (i = 0,1,…)的数目少。
[0067]LU12的各逻辑区块LB_j被分割成一定尺寸的多个统计区块(小区块)SB进行管理。在图5的例子中,各逻辑区块1^_」被分割成4个统计区块SB。当设LU12的逻辑区块LB_j的数目为N时,LU12整体的统计区块SB的数为4N。在这种情况下,LU12的逻辑区域整体被分割成4N个统计区块SB进行管理。也就是说LU12的逻辑区域包括4N个统计区块(小区块)SB。
[0068]统计区块SB由统计索引值I确定。在第一实施方式中统计区块SB是收集写入频度的单位。也就是说在第一实施方式中,以比逻辑区块LB_j (或者存储器区块PB_i)小尺寸的统计区块SB为单位来收集写入频度。此外在第一实施方式中,作为表示对统计区块SB的数据写入的频度的写入统计值W_I,使用写入次数(写入计数)。
[0069]访问统计值收集部212每当在统计收集期间中产生向统计区块SB的数据写入时,就对该统计区块SB的写入统计值W_I加I。在后述的第二实施方式中,除了每个统计区块SB的写入统计值W_I之外,还使用表示来自该统计区块SB的数据读出的频度的读取统计值R_I。因此访问统计值收集部212每当在统计收集期间中产生来自统计区块SB的数据读出时,就对该统计区块SB的读取统计值R_I加I。其中,在第二实施方式中,统计区块SB也就是说小区块SB与第一实施方式不同,是在存储控制器侧进行管理的映射的单位。也就是说在第二实施方式中,存储控制器按每个LU内的小区块SB (映射单位),将该小区块SB和物理区域(物理存储器内的物理区域)对应起来。每个统计区块(小区块)SB的写入统计值W_I以及读取统计值R_I与该统计区块SB的统计索引值I相对应地储存到AST215a中。
[0070]在此,假定具备使用包含SSD的多个物理盘实现的RAID (Redundant Arrays ofIndependent Disks (独立磁盘冗余阵列)或者 Redundant Arrays of Inexpensive Disks(廉价磁盘冗余阵列))构成的物理存储器(阵列)的存储装置。这样的存储装置有可能拥有带有基于访问统计值动态变更LU的逻辑地址的功能的存储控制器。如果图1所示的盘装置的存储控制器21具有这样的功能,则访问统计值收集部212只要利用该功能即可。
[0071]接下来,参照图6至图8,对第一实施方式中的由再写入部214a进行的再写入的具体例进行说明。图6是用于说明统计收集期间经过的时间点时的LU12的每个统计区块的写入统计值与该统计区块的数据的再配置位置的关系的图。图7是用于说明写入统计值大的统计区块的数据的再写入的图,图8是用于说明写入统计值小的统计区块的数据的再写入的图。
[0072]在第一实施方式中再写入部214a每当统计收集期间经过,就执行以下所述的再写入。在图6的例子中,统计收集期间经过的时间点时的LU12的逻辑区块LB_0内的4个统计区块SB的写入统计值W_I是75、37、110以及23。此外,LU12的逻辑区块LB_1内的4个统计区块SB的写入统计值W_I是66、101、15以及105。此外,LU12的逻辑区块LB_3内的4个统计区块SB的写入统计值W_I是88、96、12以及40。此外,LU12的逻辑区块LB_2内的4个统计区块SB的写入统计值W_I虽然在图6中进行了省略,但设全部均为小于96。
[0073]选择部213在由再写入部214a进行的再写入时,按该统计区块SB的写入统计值W_I的升序,对LU12内的统计区块SB进行排序。而且,选择部213从写入统计值W_I最小的统计区块SB起依次将一定个数的统计区块SB选择为写入频度低的统计区块SB(第一小逻辑地址区域)的集合。所述一定个数在各逻辑区块被分割成4个统计区块SB的第一实施方式中是4M。该4M个统计区块SB的总尺寸与M个逻辑区块的总尺寸一致。
[0074]在图6的例子中,M为3。在这种情况下,首先选择部213将写入统计值W_I小的4X3 (=12)个统计区块SB (也就是说与3个逻辑区块相当的尺寸的逻辑地址区域),从该写入统计值W_I最小的统计区块SB起依次选择为写入频度低的统计区块SB。也就是说选择部213选择由写入频度低的4X 3个统计区块SB构成的逻辑地址区域(逻辑区域)。在此,选择部213选择图6所示的LU12内的逻辑地址区域601、603、604、606、608、609以及611。
[0075]逻辑地址区域601包括逻辑区块LB_0内的写入统计值W_I为75以及37的2个连续的统计区块SB。逻辑地址区域603包括逻辑区块LB_0内的写入统计值W_I为23的统计区块SB。逻辑地址区域604包括逻辑区块LB_1内的写入统计值W_I为66的统计区块SB。逻辑地址区域606包括逻辑区块LB_1内的写入统计值W_I为15的统计区块SB。逻辑地址区域608包括逻辑区块LB_2内的写入统计值W_I为小于96的4个连续的统计区块SB。逻辑地址区域609包括逻辑区块LB_3内的写入统计值W_I为88的统计区块SB。逻辑地址区域611包括逻辑区块LB_3内的写入统计值W_I为12以及40的2个连续的统计区块SB。
[0076]这样选择部213选择总尺寸与4M (= 4X3)个统计区块SB的总尺寸一致的、LU12内的写入频度低的逻辑地址区域601、603、604、606、608、609以及611。再写入部214a执行将由选择部213选择的写入频度低的逻辑地址区域601、603、604、606、608、609以及611的数据再写入(覆盖)到该逻辑地址区域601、603、604、606、608、609以及611上的动作(第一
再写入)。
[0077]由此,逻辑地址区域601、603、604、606、608、609以及611的数据,也就是说分配给该逻辑地址区域601、603、604、606、608、609以及611的物理存储器11 (SSDlO)内的物理地址区域的数据,被再配置于物理存储器11 (SSDlO)的连续的M (M = 3)个存储器区块(物理区块)中。在此,设逻辑地址区域601、603、604、606、608、609以及611的数据如图6所示,被再配置于物理存储器11 (SSDlO)的存储器区块ΡΒ_0至PB_2。以后,物理存储器11 (SSDlO内的控制器)将逻辑地址区域601、603、604、606、608、609以及611和存储器区块ΡΒ_0至PB_2内的对应的物理地址区域关联起来进行管理。
[0078]若更详细地进行描述的话,再写入部214a如图7所示那样,逻辑读取而且连续读取LU12内的写入频度低的逻辑地址区域601、603、604、606、608、609以及611的数据。该逻辑读取在物理存储器11 (SSDlO内的控制器)内,作为从当前分配给逻辑地址区域601、603、604、606、608、609以及611的物理地址区域中读取数据的动作来实现。
[0079]接下来再写入部214a将从逻辑地址区域601、603、604、606、608、609以及611读出的数据如图7所示那样逻辑再写入(覆盖)而且连续地再写入(覆盖)到该逻辑地址区域601、603、604、606、608、609以及611。向该LU12的数据的逻辑再写入(覆盖),在物理存储器11 (SSDlO内的控制器)内,作为将从逻辑地址区域601、603、604、606、608、609以及611读出的数据如图7所示那样,写入到该物理存储器11 (SSDlO)内的连续的存储器区块(物理区块)ΡΒ_0至PB_2的动作来实现。
[0080]在写入频度低的逻辑地址区域的数据的再写入后,选择部213选择LU12内的剩余的逻辑地址区域,也就是说选择包含图6所示的逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域。再写入部214a执行将由选择部213选择的写入频度高的逻辑地址区域的数据,也就是说将包含图6所示的逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域的数据,再写入(覆盖)到该写入频度高的逻辑地址区域的动作(第二再写入)。
[0081]由此,逻辑地址区域602、605、607以及610的数据,也就是说分配给该逻辑地址区域602、605、607以及610的物理存储器11 (SSDlO)内的物理地址区域的数据如图6所示,被再配置于物理存储器11 (SSDlO)的例如存储器区块(物理区块)PB_2的后续的存储器区块PB_3。以后,物理存储器11 (SSDlO)将逻辑地址区域602、605、607以及610与存储器区块PB_3内的对应的物理地址区域关联起来进行管理。[0082]若更详细地进行描述的话,再写入部214a如图8所示那样,逻辑读取而且连续读取LU12内的包含逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域的数据。该逻辑读取在物理存储器11 (SSDlO内的控制器)内,作为从当前分配给包含逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域的数据的物理地址区域中读取数据的动作来实现。
[0083]接下来再写入部214a将从包含逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域读出的数据如图8所示那样,逻辑再写入(覆盖)而且连续再写入(覆盖)到该写入频度高的逻辑地址区域(也就是说原来的逻辑地址区域)上。该向LU12的数据的逻辑再写入(覆盖)在物理存储器11 (SSDlO内的控制器)内,作为将从包含逻辑地址区域602、605、607以及610的写入频度高的逻辑地址区域中读出的数据如图8所示那样,写入到该物理存储器11 (SSDlO)内的从存储器区块(物理区块)PB_3开始的连续的存储器区块的动作来实现。
[0084]接下来,对于包含第一实施方式中的访问统计值(写入统计值W_I或者读取统计值R_I)的更新的指令处理,参照图9来进行说明。图9是表示指令处理的顺序的流程图。
[0085]存储控制器21在从主机20接收到指令的情况下(步骤SI )。判定该接收到的指令是否是盘指令(步骤S2)。如果接收到的指令是盘访问指令(步骤S2的“是”),则该指令包含指定访问目的地的逻辑地址(也就是说访问对象地址)。
[0086]在所述接收指令为盘访问指令的情况下(步骤S2的“是”),存储控制器21的访问控制器214基于包含于该接收指令中的访问对象地址,计算出表示访问目的地的统计区块的统计索引值I (步骤S3)。在此为了说明的简化,设访问范围与统计区块的尺寸一致,而且不横跨2个统计区块。在这种情况下,访问控制器214通过访问对象地址除以统计区块尺寸,从而计算出统计索引值I。
[0087]接下来存储控制器21判定所述接收指令(盘访问指令)是否为读取指令(步骤S4)。如果所述接收指令是读取指令(步骤S4的“是”),则存储控制器21的访问统计值收集部212与在步骤S3中计算出的统计索引值I相对应地对储存于AST215a中的读取统计值R_I加I (步骤S5)。与此相对,若所述接收指令是写入指令(步骤S4的“否”),则访问统计值收集部212与在步骤S3中计算出的统计索引值I相对应地对储存于AST215a中的写入统计值W_I加I (步骤S6)。
[0088]存储控制器21 (更详细地说是存储控制器21的访问控制器214)当由访问统计值收集部212执行步骤S5或者S6时,执行所述接收指令(也就是说读取指令或者写入指令)所指定的处理(盘访问处理)(步骤S7)。另一方面,在所述接收指令不是盘访问指令的情况下(步骤S2的“否”),存储控制器21跳过步骤S4至S6,执行该接收指令所指定的处理(与盘访问不同的处理)(步骤S7)。此外,在第一实施方式中,未必一定需要读取统计值R_I。因此,未必一定需要步骤S5。
[0089]<第二实施方式>
[0090]图10是表示包含第二实施方式的存储装置的存储系统的典型的硬件结构的框图。图1所示的储存系统包括存储装置100、主机计算机(以下称为主机)200、以及网络300。存储装置100经由网络300与主机200连接。主机200将存储装置100用作外部存储装置。
[0091]存储装置100具备多个SSD例如4个SSD110-1 (# I)至110-4 (#4)、多个HDD例如4个HDD120-1 (# I)至120-4 (# 4)、以及存储控制器130。这样存储控制器130与所述第一实施方式中的存储控制器21不同,在主机200之外独立地配备。存储控制器130与 SSD110-1 至 110-4 以及 HDD120-1 至 120-4 连接,对该 SSD110-1 至 110-4 以及 HDD120-1至120-4进行控制。
[0092]存储控制器130利用SSD110-1至110-4以及HDD120-1至120-4的至少一个存储区域,对能从主机200识别的LU150进行定义。在图10的例子中,LU150利用SSD110-1以及HDD120-1的存储区域进行定义。此外存储控制器130对提供分配给LU150的逻辑地址区域(逻辑区域)的物理地址区域(物理区域)的物理存储器140进行定义。在图10的例子中,物理存储器140是由SSD110-1以及HDD120-1构成的阵列(盘阵列)。
[0093]图11是主要表示图10所示的存储控制器130的典型的功能结构的框图。在图11中,对与图2等价的要素标注相同参照编号。以下,对于图11所示的存储控制器130的构成,以与图2所示的存储控制器21的构成不同的地方为中心进行说明。
[0094]存储控制器130与图2所示的存储控制器21同样地,具备LU管理部211、访问统计值收集部212、选择部213、访问控制器214以及管理数据存储部215。LU管理部211与所述第一实施方式不同,具备映射部211a。
[0095]映射部211a按LU150的映射单位的每个逻辑地址区域,对物理存储器140内的驱动器(物理盘)、也就是说对SSD110-1或者HDD120-1进行分配(对应)。将该LU150的逻辑地址区域与物理存储器140内的驱动器的对应称为映射。若更详细地进行描述的话,映射部211a利用映射,按LU150的映射单位的每个逻辑地址区域,将该逻辑地址区域与分配给该逻辑地址区域的驱动器、和由该驱动器识别的逻辑地址区域(以下,驱动器逻辑地址区域)相对应。在LU150的 逻辑地址区域(逻辑地址)分配给SSD的情况下,将与该逻辑地址区域(逻辑地址)对应的驱动器逻辑地址区域(驱动器逻辑地址)称为SSD逻辑地址区域(SSD逻辑地址)。与此相对,在对LU150的逻辑地址区域(逻辑地址)分配HDD的情况下,将与该逻辑地址区域(逻辑地址)对应的驱动器逻辑地址区域(驱动器逻辑地址)称为HDD逻辑地址区域(HDD逻辑地址)。在所述第一实施方式中,相当于LU150的全部的逻辑地址与SSD逻辑地址相等的情况。
[0096]映射部211a基于LU150的每个映射单位的访问频度,动态变更该LU150的逻辑地址区域与驱动器的映射。假定利用变更该映射的功能(也就是说再映射功能),映射部211a对访问频度高的逻辑地址区域再分配SSD110-1 (也就是说访问速度为高速的SSD110-1),对访问频度低的逻辑地址区域再分配HDD120-1 (也就是说访问速度为低速的HDD120-1)。在这种情况下,可期待LU150 (存储装置100)整体的访问速度的提高。
[0097]但是在上述的再映射中,有可能在SSD110-1内混合存在写入频度高的存储器区块和读出频度高的存储器区块。读出频度高的存储器区块有可能包含写入频度低的存储器区块。在这样的情况下,在SSD110-1内碎片化消除处理多发,该SSD110-1的访问速度会降低。
[0098]因此映射部211a基于写入统计值胃_1以及读取统计值R_I,进行用于防止在SSD110-1内碎片化消除处理多发的再映射。此外选择部213为了伴随该再映射的由再写入部214a进行的再写入,基于写入统计值W_I以及读取统计值1?_1,以映射为单位来选择逻辑地址区域。[0099]在管理数据存储部215中,除了 AST215a之外还储存有映射表(以下称为MT)215b。MT215b的各项目用于储存表示LU150的映射单位的逻辑地址(也就是说统计区块SB的统计索引值I)与分配给该逻辑地址(统计索引值I)的逻辑地址区域(统计区块SB)的驱动器(SSD110-1或者HDD120-1)及驱动器逻辑地址(SSD逻辑地址或者HDD逻辑地址)的对应的信息(也就是说映射彳目息)。
[0100]接下来,对第二实施方式中的动作,以再映射处理(也就是说数据再配置处理)为例参照图12以及图13进行说明。图12是用于说明再映射处理的图,图13是表示再映射处理的步骤的流程图。
[0101]在图12中,LU150内的逻辑地址区域X1、X2以及X3是写入频度高的逻辑地址区域。逻辑地址区域Xl至X3的读出频度高或低都可以。包含逻辑地址区域Xl至X3的写入频度高的逻辑地址区域(以下称为第二逻辑地址区域)的总尺寸,例如与Mx个(在此设Mx =2)的存储器区块的总尺寸一致。在图12中,省略了逻辑地址区域Xl至X3以外的写入频度高的逻辑地址区域。
[0102]LU 150内的逻辑地址区域Y1、Y2、Y3、Y4、Y5以及Υ6是读出频度高而且写入频度低的逻辑地址区域(以下称为第一逻辑地址区域)。第一逻辑地址区域Yl至Υ6的总尺寸例如与My个(在此设My = 2)的存储器区块的总尺寸一致。
[0103]LU 150内的逻辑地址区域21、22、23、24、25、26以及Ζ7是除了所述第二逻辑地址区域和所述第一逻辑地址区域Yl至Υ6之外的LU150内的逻辑地址区域(以下称为第三逻辑地址区域)。也就是说第三逻辑地址区域Zl至Ζ7是读出频度低而且写入频度也低的逻辑地址区域。
[0104]再映射处理每当统计收集期间经过,就以图13的流程图所示的步骤按如下那样来执行。首先选择部213按储存于AST215a中的每个映射单位的写入统计值W_I的升序来对LU150的全部区域(也就是说全部统计区块SB)进行排序(步骤S11)。而且,选择部213基于写入统计值胃_1的排序结果从写入统计值W_I大的(也就是说写入频度高的)逻辑地址区域起依次选择与Mx个(Mx = 2)的存储器区块一致的量的逻辑地址区域X (步骤S12)。在此,包含逻辑地址区域Xl至X3的第二逻辑地址区域被选择为逻辑地址区域X。
[0105]接下来选择部213按储存于AST215a的每个映射单位的读取统计值R_I的升序对除了所选择的逻辑地址区域X (也就是说写入频度高的第二逻辑地址区域)之外的LU150的区域进行排序(步骤S13)。而且,选择部213基于读取统计值R_I的排序结果,从读取统计值R_I大的(也就是说读出频度高的)逻辑地址区域起依次,选择与My个(My = 2)存储器区块一致的量的逻辑地址区域Y (步骤S14)。在此,读出频度高而且写入频度低的第一逻辑地址区域Yl至Y6被选择为逻辑地址区域Y。
[0106]于是,映射部211a以及再写入部214a按如下那样来执行由步骤S15至S17构成的处理Px。首先映射部211a对在步骤S14中选择的逻辑地址区域Y(也就是说第一逻辑地址区域Yl至Υ6)的逻辑地址再分配(再映射)SSD110-1 (步骤S15)。也就是说映射部211a通过更新MT215b,从而对第一逻辑地址区域Yl至Y6分配SSD110-1以及第一 SSD逻辑地址(例如,连续的第一 SSD逻辑地址)。
[0107]在步骤S15中再写入部214a将写入到第一逻辑地址区域Yl至Y6(更详细地说是在再映射以前分配给第一逻辑地址区域Yl至Υ6的驱动器)中的数据,再写入到利用再映射而重新分配给第一逻辑地址区域Yl至Y6的SSDl 10-1。由此第一逻辑地址区域Yl至Υ6的数据如图12所示,再配置到包括SSD110-1内的连续的My个(My = 2)的存储器区块的物理地址区域111。
[0108]接下来映射部211a对在步骤S12中选择的逻辑地址区域X (也就是说包含逻辑地址区域Xl至X3的写入频度高的第二逻辑地址区域)的逻辑地址再映射SSD110-1 (步骤S16)。也就是说映射部211a通过更新MT215b,从而对包含逻辑地址区域Xl至X3的第二逻辑地址区域,分配SSDl 10-1以及第二 SSD逻辑地址(例如,所述连续的第一 SSD逻辑地址后续的连续的第二 SSD逻辑地址)。
[0109]在步骤S16中再写入部214a将写入到第二逻辑地址区域(更详细地说是在再映射以前分配给第二逻辑地址区域的物理地址区域)的数据,再写入到利用再映射而重新分配给第二逻辑地址区域的SSDl 10-1。由此第二逻辑地址区域(也就是说包含逻辑地址区域Xl至X3的写入频度高的逻辑地址区域)的数据如图12所示,再配置于包括SSD110-1内的连续的Mx个(Mx = 2)的存储器区块的物理地址区域112。物理地址区域112由于续接于步骤S15而执行步骤S16,所以一般来说后续于物理地址区域111。
[0110]接下来映射部211a对在步骤S12以及S14中均未选择的LU150内的剩余的逻辑地址区域Z (也就是说第三逻辑地址区域Zl至Z7)的逻辑地址再映射HDD120-1 (步骤S17)。也就是说映射部211a通过更新MT215b,从而对第三逻辑地址区域Zl至Z7分配HDD120-1以及HDD逻辑地址(例如,连续的HDD逻辑地址)。
[0111]在步骤S17中再写入部214a将写入第三逻辑地址区域Zl至Z7(更详细地说是在再映射以前分配给第三逻辑地址区域Zl至Z7的物理地址区域)的数据,再写入到利用再映射而重新分配给该第三逻辑地址区域Zl至Z7的HDD120-1。由此第三逻辑地址区域Zl至Z7的数据如图12所示,再配置于HDD120-1内的物理地址区域121。于是,再映射处理结束。
[0112]根据第二实施方式,利用再映射处理的执行,SSD110-1内的物理地址区域111转变为读出频度高但写入频度低的区域(存储器区块的集合)。也就是说SSD110-1内的物理地址区域111转变为数据频繁读出但数据的写入(更新)难以产生的区域。因此在物理地址区域111中,难以产生无效数据的区域。由此根据第二实施方式,能降低在SSDlio-1内执行碎片化消除处理的频度,能防止该SSD110-1的访问速度的降低,也就是说能防止存储装置100整体(LU150)访问速度的降低。
[0113]而且,根据第二实施方式,利用再映射处理的执行,SSD110-1内的物理地址区域112转变为写入频度高的区域(存储器区块的集合)。也就是说SSD110-1内的物理地址区域112转变为数据的写入(更新)频繁产生的区域。这样根据第二实施方式,能将SSD110-1的物理地址区域用作写入频度或者读出频度高的(也就是说访问频度高的)区域。由此,能提高存储装置100整体(LU150)的访问速度。
[0114]进而根据第二实施方式,利用再映射处理的执行,HDD120-1内的物理地址区域121转变为读出频度以及写入频度均低的区域(扇区的集合)。也就是说HDD120-1内的物理地址区域121转变为难以产生访问的区域。由此,根据第二实施方式,利用对HDD120-1的访问能防止存储装置100整体(LU150)的访问速度降低。
[0115]在所述第二实施方式中,存储控制器130与主机200相独立地配备,而且经由网络300与该主机200连接。但是,存储控制器130也可以与所述第一实施方式中的存储控制器21同样地配备于主机200。
[0116]<第二实施方式的变形例>
[0117]接下来,对所述第二实施方式的变形例进行说明。
[0118]在所述第二实施方式中,使用使用中的SSD110-1,执行再映射处理。但是,该再映射处理也可以使用非使用状态(所谓的去映射状态)的SSD (例如预备SSD)来执行。所述第二实施方式的变形例的特征在于,在存在预备SSD的情况下,使用该预备SSD来执行再映射。图13的流程图中的处理Px因存储装置100的构成而改变。
[0119]以下,对于本变形例的概要,为了方便而参照图10以及图11进行说明。
[0120]一般来说,有时具备多个SSD以及HDD的存储装置拥有预备的SSD或者HDD。在图10所示的存储装置100中也能预备SSD110-1至110-4的例如一个或者HDD120-1至120-4的例如一个来使用。
[0121]在此,如图10所示,物理存储器140包括SSD110-1以及HDD120-1,因此该SSD110-1以及HDD120-1设为与所述第二实施方式同样地处于使用中的状态。在该状态下,若在连接于存储控制器130的SDD中存在预备SSD,则映射部211a通过以映射为单位擦除该预备SSD的全部区域而进行去映射。也就是说映射部211a使预备SSD的全部区域为自由状态。再写入部214a将数据从SSD110-1以及HDD120-1拷贝到处于去映射状态的预备SSD0将存在该预备SSD的情况下执行的处理(第一处理)称为处理Pa。
[0122]与此相对,虽然预备SSD不存在,但若在HDD120-1存在足够的空闲区域,则再写入部214a将映射到SSD110-1的区域的数据拷贝到该HDD120-1的空闲区域。在该拷贝后,映射部211a对SSD110-1的全部区域进行去映射。于是,再写入部214a将数据从HDD120-1拷贝到处于去映射状态的SSD110-1。将在该HDD120-1中存在足够的空闲区域的情况下执行的处理(第二处理)称为处理Pb。
[0123]另一方面,若在HDD120-1中不存在足够的空闲区域,则进行与所述第二实施方式同样的处理。
[0124]接下来,对本变形例的细节进行说明。其中,在此与上述的概要不同,设为是由多个SSD (例如2个SSD110-1以及110-2)和多个HDD (例如2个HDD120-1以及120-2)构成物理存储器(阵列)。此外,设利用SSD110-1以及110-2和HDD120-1以及120-2 (也就是说与SSD数目相同的HDD)的存储区域,定义与图10所示的LU150相当的LU151(参照图14)。若必要,则想在图10中将LU150置换为LU151,将与该LU151对应的SSD110-1和HDD120-1置换为SSD110-1以及110-2和HDD120-1以及120-2。另外,也可以由SSD110-1以及110-2构成第一物理存储器(阵列),由HDD120-1以及120-2构成第二物理存储器(阵列)。
[0125]图14是用于说明在LU151利用SSD110-1以及110-2和HDD120-1以及120-2的存储区域进行定义的情况下的、每个映射单位的分段(striping)的图。LU151的区域以映射为单位与SSD110-1以及110-2或者HDD120-1以及120-2对应。
[0126]例如,图14所示的某一个映射单位的区域141映射到SSD110-1以及110_2。该映射到SSD110-1以及110-2的区域141在该SSD110-1以及110-2中被分段为一定尺寸的磁条区块。此外,图14所示的另一个映射单位的区域142映射到HDD120-1以及120-2。也就是说,区域142在HDD120-1以及120-2中被分段为磁条区块。
[0127]接下来,对所述第二实施方式的变形例中应用的与所述处理Px相当的处理(以下称为再写入处理),参照图15至图17的流程图进行说明。图15是表示再写入处理整体的步骤的流程图。图16是表示再写入处理中的处理Pa (第一处理)的步骤的流程图,图17是表示再写入处理中的处理Pb (第二处理)的步骤的流程图。
[0128]在此,如图14所示,设LU151是利用SSDl 10-1以及110-2和HDD120-1以及120-2的存储区域来定义的。但是在以下的说明中,将分配给LU151的区域的2个SSD表述为SSD_1以及SSD_2,将该2个SSD中的第η个SSD表述为SSD_n。同样地,将分配给LU151的另一个区域的2个HDD表述为HDD_1以及HDD_2,将该2个HDDD中的第η个HDD表述为HDD_n。
[0129]图15的流程图所示的再写入处理如上所述与图13的流程图中的处理Px相当。因此,该再写入处理续接于图13的流程图中的步骤S14之后执行。
[0130]首先映射部211a判定在连接于存储控制器130的SDD中是否存在预备SSD (更详细地说是处于空闲状态的预备SSD)(步骤S21)。如果存在预备SSD (步骤S21的“是”),则映射部211a与再写入部214a配合来执行处理Pa (步骤S22)。在此,预备SSD设为是SSDl 10-3 或者 110-4。
[0131]与此相对,若不存在预备SSD (步骤S21的“否”),则映射部211a判定在HDD (更详细地说是HDD_1以及HDD_2)中有足够的空闲区域(步骤S23)。所谓足够的空闲区域是指,将SSD_1以及SSD_2的数据(也就是说映射到SSD_1以及SSD_2的LU151的地址区域的数据)拷贝到HDD_1以及HDD_2所需的空闲区域。如果在HDD_1以及HDD_2中有足够的空闲区域(步骤S23的“是”),则映射部211a与再写入部214a配合来执行第二处理Pb (步骤S24)。
[0132]与此相对,若在HDD_1以及HDD_2中没有足够的空闲区域(步骤S23的“否”),则映射部211a与再写入部214a`配合,执行与图13所示的处理Px同样的处理。如果必要,则想在处理Px中,将SSD置换为SSD_1以及SSD_2,将HDD置换为HDD_1以及HDD_2。
[0133]接下来对上述处理Pa,参照图16的流程图进行说明。首先映射部21 Ia将指定SSD以及HDD的变量η设定为初始值I (步骤S31)。接下来映射部211a将预备SSD (也就是说是处于空闲状态的预备SSD)选择为数据的转送目的地(拷贝目的地),对该预备SSD的全部区域进行去映射(步骤S32)。由此,所述预备SSD的全部区域的数据被擦除。此外在步骤S32中映射部211a将SSD_n以及HDD_n选择为数据的转送源(拷贝源)。在此,由于η= 1,所以SSD_1以及HDD_1被选择为数据的转送源。
[0134]再写入部214a将分配给LU12内的读出频度高而且写入频度低的逻辑地址区域Y的SSD_n以及HDD_n内的物理地址区域的数据(也就是说分段的数据),例如按逻辑地址的升序而且按每个映射单位(也就是说统计区块SB),从该SSD_n以及HDD_n中进行读出(步骤S33)。而且,再写入部214a将读出的数据写入到所述预备SSD (也就是说转送目的地的预备SSD)中(步骤S34)。再写入部214a反复进行步骤S33以及S34,直至进行了读出/写入的映射单位的数目达到与逻辑地址区域Y的总尺寸对应的数NMy为止(步骤S35)。也就是说再写入部214&执行逻辑地址区域¥1、¥2、¥3、¥4、¥5以及Y6的数据的读出/写入。
[0135]映射部211a在由再写入部214a进行的上述的写入时,使用MT215b来进行再映射。例如,在从逻辑地址区域Yl读出的数据的写入时,映射部211a对该逻辑地址区域Yl的逻辑地址LBAyl分配预备SSD以及SSD逻辑地址SLBAO。SSD逻辑地址SLBAO例如为O。在这种情况下,再写入部214a通过将SSD逻辑地址SLBAO指定为写入目的地,从而对预备SSD请求从逻辑地址区域Yl读出的数据的写入。同样地映射部211a在从逻辑地址区域Y2读出的数据的写入时,对该逻辑地址区域Y2的逻辑地址LBAy2分配预备SSD以及SSD逻辑地址SLBAl。SSD逻辑地址SLBAl后续于SSD逻辑地址SLBA0。在这种情况下,再写入部214a通过将SSD逻辑地址SLBAl指定为写入目的地,从而对预备SSD请求从逻辑地址区域Y2读出的数据的写入。
[0136]同样地映射部211a在从逻辑地址区域Y3读出的数据的写入时,对该逻辑地址区域Y3的连续的逻辑地址LBAy3a、LBAy3b以及LBAy3c,分配预备SSD以及连续的SSD逻辑地址SLBA2、SLBA3以及SLBA4。SSD逻辑地址SLBA2后续于SSD逻辑地址SLBAl。在这种情况下,再写入部214a通过将SSD逻辑地址SLBA2指定为写入目的地(写入目的地的开始地址),从而对预备SSD请求从逻辑地址区域Y3中读出的数据的写入。同样地映射部211a在从逻辑地址区域Y4读出的数据的写入时,对该逻辑地址区域Y4的连续的逻辑地址LBAy4a以及LBAy4b分配预备SSD以及连续的SSD逻辑地址SLBA5以及SLBA6。SSD逻辑地址SLBA5后续于SSD逻辑地址SLBA4。在这种情况下,再写入部214a通过将SSD逻辑地址SLBA5指定为写入目的地(写入目的地的开始地址),从而对预备SSD请求从逻辑地址区域Y4读出的数据的写入。
[0137]同样地映射部211a在从逻辑地址区域Y5读出的数据的写入时,对该逻辑地址区域Y5的逻辑地址LBAy5分配预备SSD以及SSD逻辑地址SLBA7。SSD逻辑地址SLBA7后续于SSD逻辑地址SLBA6。在这种情况下,再写入部214a通过将SSD逻辑地址SLBA7指定为写入目的地,从而对预备SSD请求从逻辑地址区域Y5读出的数据的写入。同样地映射部211a在从逻辑地址区域Y6读出的数据的写入时,对该逻辑地址区域Y6的逻辑地址LBAy6分配预备SSD以及SSD逻辑地址SLBA8。SSD逻辑地址SLBA8后续于SSD逻辑地址SLBA7。在这种情况下,再写入部214a通过将SSD逻辑地址SLBA8指定为写入目的地,从而对预备SSD请求从逻辑地址区域Y6读出的数据的写入。
[0138]利用上述的再写入,从逻辑地址区域Y (逻辑地址区域Yl至Y6)读出的数据再配置到SSD-n的连续的物理地址的区域中。在此,由于SSD-n在步骤S32中进行了去映射,所以可期待被再配置于该SSD-n的例如从物理地址O起开始的连续的物理地址的区域中。
[0139]接下来再写入部214a将分配给LU12内的写入频度高的逻辑地址区域X的SSD_n以及HDD_n内的物理地址区域的数据(分段后的数据),例如按逻辑地址的升序而且按每个映射单位,从该SSD_n以及HDD_n中进行读出(步骤S36)。而且,再写入部214a将读出的数据写入到所述预备SSD中(步骤S37)。再写入部214a反复进行步骤S36以及S35,直到进行了读出/写入的映射单位的数目达到与逻辑地址区域X的总尺寸对应的数NMx为止(步骤 S38)。
[0140]即使在从逻辑地址区域X读出的数据向预备SSD的写入时,也进行与从上述的逻辑地址区域Y读出的数据向预备SSD的写入同样的映射。在此,对逻辑地址区域Y的开头的逻辑地址分配SSD逻辑地址SLBA9。SSD逻辑地址SLBA9后续于分配给逻辑地址区域X的最终的逻辑地址的SSD逻辑地址SLBA8。在这种情况下,从逻辑地址区域X读出的数据,可期待被再配置到SSD-n的从物理地址O起开始的连续的物理地址的区域后续的物理地址的区域中。[0141]接下来再写入部214a在分配给LU12内的剩余的逻辑地址区域Z(也就是说读出频度低而且写入频度也低的逻辑地址区域Z)的物理地址区域的数据中,将SSD_n内的物理地址区域的数据(分段后的数据),例如以逻辑地址的顺序而且按每个映射单位,从该SSD_n中进行读出(步骤S39)。而且,再写入部214a将读出的数据写入到所述HDD_n中(步骤S40)。再写入部214a对全部的逻辑地址区域Z反复进行步骤S39以及S40 (步骤S41)。
[0142]映射部211a即使在分配给逻辑地址区域Z的物理地址区域的数据中的、从SSD_η读出的数据向HDD-n的写入时,也进行与向预备SSD的写入时同样的映射。例如映射部211a对逻辑地址区域Z的开头的逻辑地址,分配处于自由状态的HDD逻辑地址区域的开头的HDD逻辑地址。
[0143]当步骤S39以及S40对全部的逻辑地址区域Z重复进行时(步骤S41 ),映射部211a将预备SSD切换为SSD_n (也就是说新SSD_n)(步骤S42)。此外映射部211a将切换前的SSD_n (也就是说旧SSD_n)切换为预备SDD (步骤S43)。
[0144]接下来映射部211a对变量η进行加I (步骤S44)。在此,η从1加1为2。而且,映射部211a判定该加I后的变量η (= 2)是否超过了定义LU150所使用的SSD的数目(=HDD的数目)ND (步骤S45)。在此,ND为2。
[0145]如该例子那样,若η (= 2)未超过ND (= 2)(步骤S45的“否”),则映射部211a与再写入部214a配合,再次执行步骤S32至S45。
[0146]利用以上的动作,在η为I的状态中,从SSD_1以及HDD_1读出与逻辑地址区域Y对应的数据,该数据被写入到预备SSD中。接下来,从SSD_1以及HDD_1中读出与逻辑地址区域X对应的数据,该数据被写入到预备SSD。接下来,从SSD_1中读出与剩余的逻辑地址区域Z对应的数据,该数据被写入到HDD_1中。而且,预备SSD被切换到新SSD_1,旧SSD_1被切换到预备SSD。于是,η从I加I为2。
[0147]这样,在η为2的状态中,从SSD_2以及HDD_2读出与逻辑地址区域Y对应的数据,该数据被写入到预备SSD (也就是说是旧SSD_1)中。在此预备SSD (旧SSD_1)在该读出/写入前进行去映射。接下来,从SSD_2以及HDD_2读出与逻辑地址区域X对应的数据,该数据被写入预备SSD (旧SSD_1)中。接下来,从SSD_2读出与剩余的逻辑地址区域Z对应的数据,该数据被写入到HDD_2中。而且,预备SSD (旧SSD_1)被切换到新SSD_2,旧SSD_2被切换到预备SSD。于是,η从2加I为3。这样,若η (= 3)超过ND (= 2)(步骤S45的“是”),则图16的流程图所示的处理Pa结束。
[0148]根据处理Pa,通过利用预备SSD,能可靠地实现与图12同样的数据再配置。其中,图12所示的数据再配置相当于在处理Pa中ND为I的情况。
[0149]接下来对于上述处理Pb,使用图17的流程图进行说明。首先映射部211a将指定SSD以及HDD的变量η设定为初始值1(步骤S51)。再写入部214a由于不存在预备SSD,所以用以下描述的顺序,将SSD_n内的数据(更详细地说有效的数据)拷贝(退避)到HDD_n中。首先再写入部214a从分配给被映射了 SSD_n的LU12内的逻辑地址区域的该SSD_n的物理区域中,例如按逻辑地址的升序而且按每个映射单位,读出数据(有效的数据)(步骤S52)。而且,再写入部214a将读出的数据写入到HDD_n中(步骤S53)。由此数据从SSD_n拷贝到HDD_n中。再写入部214a按逻辑地址的顺序反复进行步骤S52以及S53,直到SSD_n内的有效的数据全部拷贝到HDD_n中为止(步骤S54)。[0150]当设从SSD_n向HDD_n的数据拷贝结束时,映射部211a对SSD_n进行去映射(步骤S55)。在步骤S55中映射部211a在对SSD_n进行去映射之前,对被映射了该SSD_n的LU 150的逻辑地址区域(映射单位)映射(分配)HDD_n。于是,再写入部214a将分配给LU12内的读出频度高而且写入频度低的逻辑地址区域Y的HDD_n内的物理地址区域的数据,例如按逻辑地址的升序而且按每个映射单位,从该HDD_n中进行读出(步骤S56)。读出的数据在对SSD-n进行去映射之前,有可能包含从该SSD-n拷贝到HDD_n的数据。再写入部214a将读出的数据写入到SSD_n (处于去映射状态的SSD-n)中(步骤S57)。再写入部214a反复进行步骤S56以及S57,直到进行了读出/写入的映射单位的数目达到与逻辑地址区域Y的总尺寸对应的数NMy为止(步骤S58)。
[0151]接下来再写入部214a将分配给LU12内的写入频度高的逻辑地址区域X的HDD_η内的物理地址区域的数据,例如按逻辑地址的升序而且按每个映射单位,从该HDD_n中进行读出(步骤S59)。而且,再写入部214a将读出的数据写入到SSD_n* (步骤S60)。再写入部214a反复进行步骤S59以及S60,直到进行了读出/写入的映射单位的数目达到与逻辑地址区域X的总尺寸对应的数NMx为止(步骤S61)。
[0152]接下来映射部211a对变量η加I (步骤S62)。在此,η从I加I为2。而且,映射部211a判定该加I后的变量η (= 2)是否超过了用于定义LU150的SSD的数目(也就是说HDD的数目)ND (步骤S63)。在此,ND为2。
[0153]如该例子那样,若η (= 2)不超过ND (= 2)(步骤S63的“否”),则映射部211a与再写入部214a相配合地再次执行步骤S52至S63。与此相对,若η超过ND (步骤S63的“是”),则图17的流程图所示的处理Pb结束。
[0154]根据处理Pb,若在为了定义LU150而使用的HDD (在此是HDD_1以及HDD_2)中具有足够的空闲区域,则通过利用该HDD,从而能可靠地实现与图12同样的数据再配置。其中,图12所示的数据再配置在处理Pb中相当于ND为I的情况。
[0155]根据以上说明的至少一个实施方式,能提供一种以能降低在SSD (固态驱动器)中执行碎片化消除处理的频度的方式对该SSD再配置数据的存储装置、存储控制器以及方法。
[0156]虽然说明了本发明的几个实施方式,但这些实施方式是作为例子而进行提示的,并不意在对发明的范围进行限定。这些新的实施方式能以其它的各种方式进行实施,能在不脱离发明的要旨的范围内进行各种的省略、置换、变更。这些实施方式及其变形包含在发明的范围、要旨中,并且包含在权利要求书记载的发明和其均等的范围中。
【权利要求】
1.一种存储装置, 具备: 第一固态驱动器;以及 存储控制器,对所述第一固态驱动器进行控制, 所述存储控制器具备: 逻辑单元管理部,对逻辑单元进行定义,该逻辑单元具有逻辑区域,该逻辑区域被分配了所述第一固态驱动器的物理区域; 访问统计值收集部,对构成所述逻辑单元的所述逻辑区域的多个一定尺寸的小逻辑地址区域各自的写入频度进行收集; 选择部,基于所述写入频度,从所述逻辑单元中分别选择第一小逻辑地址区域的集合和第二小逻辑地址区域的集合,所述第一小逻辑地址区域的集合是所述写入频度低的小逻辑地址区域的集合,所述第二小逻辑地址区域的集合是除了所述第一小逻辑地址区域的集合之外的小逻辑地址区域的集合;以及 再写入部,执行第一再写入和第二再写入,所述第一再写入用于将所述第一小逻辑地址区域的集合的数据集中再写入到所述第一固态驱动器中,所述第二再写入用于将所述第二小逻辑地址区域的集合的数据集中再写入到所述第一固态驱动器中。
2.根据权利要求1所述的存储装置, 所述再写入部通过将所述第一小逻辑地址区域的集合的数据逻辑覆盖到该第一小逻辑地址区域的集合上,从而执 行所述第一再写入,而且,通过将所述第二小逻辑地址区域的集合的数据逻辑覆盖到该第二小逻辑地址区域的集合上,从而执行所述第二再写入。
3.根据权利要求2所述的存储装置, 所述选择部,从所述逻辑单元中,从所述写入频度低的小逻辑地址区域起依次选择预先确定的数目的小逻辑地址区域,作为所述第一小逻辑地址区域的集合。
4.根据权利要求1或者2的任一项所述的存储装置, 还具备硬盘驱动器, 所述存储控制器除了对所述第一固态驱动器进行控制之外,还对所述硬盘驱动器进行控制, 所述逻辑单元管理部除了使用所述第一固态驱动器对所述逻辑单元进行定义之外,还使用所述硬盘驱动器对所述逻辑单元进行定义, 所述访问统计值收集部除了对所述小逻辑地址区域各自的所述写入频度进行收集之外,还对所述小逻辑地址区域各自的读出频度进行收集, 所述选择部基于所述写入频度以及所述读出频度,从所述逻辑单元中选择所述写入频度低且所述读出频度高的小逻辑地址区域的集合来作为所述第一小逻辑地址区域的集合,而且,从所述逻辑单元中选择除了所述第一小逻辑地址区域的集合之外的所述写入频度高的小逻辑地址区域的集合来作为所述第二小逻辑地址区域的集合,而且,从所述逻辑单元中选择除了所述第一小逻辑地址区域的集合以及所述第二小逻辑地址区域的集合之外的第三小逻辑地址区域的集合, 所述再写入部执行用于将所述第三小逻辑地址区域的集合的数据集中再写入到所述硬盘驱动器中的第三再写入。
5.根据权利要求4所述的存储装置, 所述选择部从所述逻辑单元中从所述写入频度高的小逻辑地址区域起依次选择预先确定的第二数目的小逻辑地址区域来作为所述第二小逻辑地址区域的集合,并从所述逻辑单元中从除了所述第二小逻辑地址区域的集合之外的、剩余的所述读出频度高的小逻辑地址区域起依次选择预先确定的第一数目的小逻辑地址区域来作为所述第一小逻辑地址区域的集合。
6.根据权利要求4所述的存储装置, 还具备作为预备的固态驱动器的第二固态驱动器, 所述再写入部,取代所述第一再写入而执行用于将所述第一小逻辑地址区域的集合的数据集中再写入到所述预备的固态驱动器中的第四再写入,取代所述第二再写入而执行用于将所述第二小逻辑地址区域的集合的数据集中再写入到所述预备的固态驱动器中的第五再写入,而且,取代所述第三再写入而执行用于将所述第三小逻辑地址区域的集合中的分配给所述第一固态驱动器的第四小逻辑地址区域的集合的数据集中再写入到所述硬盘驱动器中的第六再写入, 所述逻辑单元管理部在所述第四、第五以及第六再写入后,作为所述预备的固态驱动器,从所述第二固态驱动器切换到所述第一固态驱动器,而且将分配给所述逻辑单元的固态驱动器从所述第一固态驱动器切换到所述第二固态驱动器。
7.根据权利要求4所述的存储装置, 所述再写入部在所述再写入时, 取代所述第一再写入而执行第四再写入,该第四再写入用于:在将所述第一固态驱动器的数据拷贝到所述硬盘驱动器中之后擦除所述第一固态驱动器的数据;在此之后,从所述硬盘驱动器中读出所述 第一小逻辑地址区域的集合的数据;将该第一小逻辑地址区域的集合的数据集中再写入到所述第一固态驱动器, 而且,取代所述第二再写入而执行第五再写入,该第五再写入用于:从所述硬盘驱动器中读出所述第二小逻辑地址区域的集合的数据;将该第二小逻辑地址区域的集合的数据集中再写入到所述第一固态驱动器。
8.一种存储控制器,对固态驱动器进行控制,该存储控制器具备: 逻辑单元管理部,对逻辑单元进行定义,该逻辑单元具有逻辑区域,该逻辑区域被分配了所述固态驱动器的物理区域; 访问统计值收集部,对构成所述逻辑单元的所述逻辑区域的多个一定尺寸的小逻辑地址区域各自的写入频度进行收集; 选择部,基于所述写入频度,从所述逻辑单元中分别选择第一小逻辑地址区域的集合和第二小逻辑地址区域的集合,所述第一小逻辑地址区域的集合是所述写入频度低的小逻辑地址区域的集合,所述第二小逻辑地址区域的集合是除了所述第一小逻辑地址区域的集合之外的小逻辑地址区域的集合;以及 再写入部,执行第一再写入和第二再写入,所述第一再写入用于将所述第一小逻辑地址区域的集合的数据集中再写入到所述固态驱动器中,所述第二再写入用于将所述第二小逻辑地址区域的集合的数据集中再写入到所述固态驱动器中。
9.一种在对固态驱动器进行控制的存储控制器中对所述固态驱动器再配置数据的方法, 对构成逻辑单元的逻辑区域的多个一定尺寸的小逻辑地址区域各自的写入频度进行收集,所述逻辑单元具有所述逻辑区域,所述逻辑区域被分配了所述固态驱动器的物理区域; 基于所述写入频度,从所述逻辑单元中分别选择第一小逻辑地址区域的集合和第二小逻辑地址区域的集合,所述第一小逻辑地址区域的集合是所述写入频度低的小逻辑地址区域的集合,所述第二小逻辑地址区域的集合是除了所述第一小逻辑地址区域的集合之外的小逻辑地址区域的集合; 将所述第一小逻辑地址区域的集合的数据集中再写入到所述固态驱动器中; 将所述第二小逻辑地 址区域的集合的数据集中再写入到所述固态驱动器中。
【文档编号】G06F3/06GK103827970SQ201280002707
【公开日】2014年5月28日 申请日期:2012年9月25日 优先权日:2012年9月25日
【发明者】尾形克彦 申请人:株式会社东芝, 东芝解决方案株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1