技术领域
本实施方式涉及存储器系统及主机装置。
背景技术:
以往,有搭载具备多个块(block)的存储器的存储器系统。块是对存储器进行擦去的最小单位。作为存储器系统的功能,提出了多数据流功能。具备多数据流功能的存储器系统若接受包含数据流标识符(以下称为数据流ID)的写入指令,则将由该写入指令请求写入的数据(以下称为写入数据)写入与数据流ID相应的块。数据流ID是根据预期的写入数据的寿命而选择的标识符。即,向假定的寿命不同的2个写入数据分配分别不同的数据流ID。
技术实现要素:
本发明的一个实施方式提供可提高便利性的存储器系统及主机装置。
根据一个实施方式,存储器系统具备非易失性存储器、接口、控制器电路、分配器。上述存储器具备多个单位区域。单位区域是数据的擦除处理的单位。上述接口接收被赋予了数据流标识符的写入数据。上述控制器电路将上述接口接收的写入数据中被赋予了一个数据流标识符的写入数据写入第1单位区域。上述第1单位区域是上述多个单位区域中与上述一个数据流标识符相关联的单位区域。上述分配器在对上述第1单位区域的写入数据的写入结束后,将其他单位区域设定成新的第1单位区域,使上述新的第1单位区域与不同于上述一个数据流标识符的一个其他数据流标识符相关 联。
附图说明
图1是安装了第1实施方式的存储器系统的计算机系统的构成例。
图2是写入IO的构成的一例的示图。
图3是数据流管理信息的一例的示图。
图4是数据流管理信息的其他一例的示图。
图5是数据流管理信息的其他一例的示图。
图6是数据流管理信息的其他一例的示图。
图7是各种块的状态转变的一例的示图。
图8是数据流对应信息的一例的示图。
图9是说明控制器具备的功能的构成的一例的图。
图10是说明写入时的OS的工作的流程图。
图11是说明写入IO的处理所涉及的存储器系统的工作的概略的流程图。
图12是说明输入块的分配的变更所涉及的第1实施方式的存储器系统的工作的流程图。
图13是说明第2实施方式的控制器具备的功能的构成的一例的图。
图14是说明输入块的分配的变更所涉及的第2实施方式的存储器系统的工作的流程图。
图15是说明输入块的分配的变更所涉及的第3实施方式的存储器系统的工作的流程图。
图16是存储器系统的安装例的示图。
具体实施方式
以下参照附图,详细说明实施方式所涉及的存储器系统及主机装置。另外,这些实施方式不限定本发明。
(第1实施方式)
图1是安装了第1实施方式的存储器系统的计算机系统的构成例。计算 机系统具备存储器系统1及主机装置(以下称为主机)2。存储器系统1与主机2通过通信路径连接。存储器系统1作为主机2的外部存储装置发挥功能。作为连接存储器系统1和主机2的通信路径的规格,可采用任意的规格。
主机2是内置文件系统驱动器的计算机。计算机例如包含个人计算机、服务器、便携信息设备或AV设备。主机2中,执行OS20及一个以上的应用程序21。应用程序21经由文件系统驱动器执行对存储器系统1的数据的输入输出。
文件系统驱动器例如是操作系统(OS)20的一部分功能。OS20包含例如实体机的操作系统或用于虚拟机的操作系统。用于虚拟机的操作系统已知为管理程序(hypervisor)。文件系统驱动器管理一个以上的数据结构。一个以上的数据结构分别在数据流管理信息22登记。文件系统驱动器为了向写入对象的数据赋予数据流ID,参照数据流管理信息22。写入IO是为了将从例如应用程序21请求写入的数据写入存储器系统1而由OS20发行的、针对存储器系统1的输入输出处理。应用程序21在写入对象的数据生成后,向OS20发送写入请求。OS20相应于写入请求的接收,发行用于将写入对象的数据写入存储器系统1的写入IO。写入对象的数据的生成源不仅仅限于应用程序21。例如OS20也可以生成写入对象的数据。写入IO包含写入对象的数据及写入指令。以下,将写入IO所包含的写入对象的数据表述为写入数据。另外,从应用程序21等向OS20被请求写入的数据也可以由OS20分割为多个写入数据,该多个写入数据由分别不同的写入IO向存储器系统1发送。
图2是写入IO的构成的一例的示图。写入IO包含写入指令及写入数据。写入指令包含表示是写入指令这一情况的指令种类、表示写入数据的位置的位置信息、写入数据的大小及数据流标识符(数据流ID)。位置信息由主机2映射到存储器系统1的地址空间内的地址表述。例如,位置信息以LBA(Logical Block Address:逻辑块地址)的形式表述。位置信息能以任意的形式表现。将主机2对于存储器系统1指定写入数据的位置所使用的位置信息表述为逻辑地址。
这里作为一例,数据流ID是根据预期的数据的寿命而选择的标识符。数据的寿命是指从写入存储器系统1到改写为止的时间。改写包含主机2指 定重复的逻辑地址而发行多次的写入IO的情形。另外,改写包含消除逻辑地址和物理地址的对应关系的处理。消除逻辑地址和物理地址的对应关系的处理根据例如TRIM指令或UNMAP指令而执行。
如前述,包含数据流ID的写入数据和写入指令成对构成写入IO。通过该构成,存储器系统1接收的各写入数据与数据流ID相关联。另外,写入数据与数据流ID相关联的情形有时表述为向写入数据赋予数据流ID。另外,在写入指令记录数据流ID的情形有时表述为向写入指令/写入数据赋予数据流ID。另外,向写入指令/写入数据赋予数据流ID的情形有时表述为:向写入指令/写入数据分配数据流ID或使写入指令/写入数据与数据流ID相关联。
数据流管理信息22是用于获得OS20应该赋予写入数据的数据流ID的信息。作为数据流管理信息22的形式,可以采用任意的形式。作为数据流管理信息22的形式,可以采用例如表形式。根据数据流管理信息22,预期的数据的寿命相同程度的2个数据与同一数据流ID相关联。另外,根据数据流管理信息22,预期的数据的寿命不同的2个数据与分别不同的数据流ID相关联。同一数据流ID相关联的一个以上的数据表述为数据流。数据流ID是用于标识数据流的标识符。作为用于判别预期的数据的寿命的信息,采用数据结构的属性。即,数据流管理信息22记录数据结构的属性和数据流的对应关系。作为数据流管理信息22的构成,可以采用任意的构成。例如,数据流管理信息22是能以属性为检索关键字取得数据流ID而构成的表形式的信息。作为与数据流相关联的属性,可以采用与预期的数据的寿命具有相关的任意种类的属性。另外,以不同于预期的数据的寿命的基准选择的属性也可以采用为与数据流相关联的属性。
图3是数据流管理信息22的一例的示图。根据该例,应用程序ID、虚拟机ID(VM ID)或线程ID与数据流相关联。应用程序ID是用于标识应用程序21的标识符。在应用程序21为虚拟机的情况下,VM ID作为用于检索数据流管理信息22的属性而被使用。VM ID是用于标识虚拟机的标识符。线程ID是由主机2执行的处理的单位。例如,一个应用程序21生成一个以上的线程。根据图3的数据流管理信息22,例如VM ID为“1234”的虚拟机为了输出数据 而生成了写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“01”。另外,例如VM ID为“2222”的虚拟机为了输出数据而生成了写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“02”。这样,作为在数据流管理信息22记录的属性,可以采用用于标识数据的输出源的标识符。OS20在发行写入IO时,特定该写入IO所包含的写入数据的输出源,将特定出的输出源的标识符作为检索关键字,检索数据流管理信息22。另外,可以不必使全部的输出源分别与分别不同的数据流ID一对一相关联。可以使一部分多个输出源与同一个数据流ID相关联。
图4是数据流管理信息22的其他一例的示图。根据该例,构成写入数据的文件的类型与数据流相关联。文件的类型由扩展符标识。根据例如图4的数据流管理信息22,在生成了用于输出构成具有扩展符“.sys”的文件的数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“00”。另外,在生成了用于输出构成具有例如扩展符“.doc”的文件的数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“02”。这样,作为在数据流管理信息22记录的属性,可采用由写入数据构成的文件的类型。OS20在发行写入IO时,特定由该写入IO所包含的写入数据构成的文件的扩展符,以特定出的扩展符作为检索关键字,检索数据流管理信息22。另外,可以不使全部的类型分别与分别不同的数据流ID一对一相关联。可以使一部分多个类型与同一个数据流ID相关联。
图5是数据流管理信息22的其他一例的示图。根据该例,使用应用程序21、线程或虚拟机的用户的名字(以下称为用户名)与线程相关联。根据例如图5的数据流管理信息22,在用户名为“Smith”的用户通过操作应用程序21或线程而生成了用于该应用程序21或线程输出数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“01”。另外,例如用户名为“Johnson”的用户通过操作应用程序21或线程而生成了用于该应用程序21或线程输出数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“02”。这样,作为在数据流管理信息22记录的属性,可采用用户名。OS20在发行写入IO时,特定操作该写入IO所包含的写入数据的输出源的用户的用户名,以特定出的用户名作为检索关键字,检索数据流管 理信息22。另外,可以不使全部的用户名分别与分别不同的数据流ID一对一相关联。可以使一部分多个用户名与同一个数据流ID相关联。
图6是数据流管理信息22的其他一例的示图。根据该例,构成写入数据的文件的名字(以下称为文件名)与数据流相关联。根据例如图6的数据流管理信息22,在生成了用于输出构成具有例如文件名“abcde.doc”的文件的数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“02”。另外,在生成了用于输出构成具有例如文件名“aiueo.sys”的文件的数据的写入IO的情况下,向该写入IO所包含的写入指令赋予数据流ID“01”。这样,作为在数据流管理信息22记录的属性,可以采用由写入数据构成的文件的名字。OS20在发行写入IO时,特定由该写入IO所包含的写入数据构成的文件的名字,以特定出的名字作为检索关键字,检索数据流管理信息22。另外,可以不使全部的文件名分别与分别不同的数据流ID一对一相关联。可以使一部分多个文件名与同一个数据流ID相关联。
另外,只要是可发行被赋予了数据流ID的写入指令/写入数据的构成,则主机2的构成例不限于上述。例如数据流ID的赋予也可以由OS20以外的构成要素执行。例如,也可以由用户确定数据流ID,将确定出的数据流ID赋予写入数据。另外,也可以由应用程序21确定数据流ID,将确定的数据流ID赋予写入数据。
例如,主机2具备运算装置及存储装置。运算装置是基于程序而工作的电路。主机2的存储装置存储实现应用程序21的功能的程序及实现OS20的功能的程序。主机2的运算装置通过执行在主机2的存储装置存储的各程序,实现OS20的功能及应用程序21的功能。
存储器系统1具备控制器10、接口(I/F)11、RAM(Random Access Memory:随机存取存储器)12及NAND存储器13。
I/F11是用于与主机2通信的接口装置。I/F11接收来自主机2的写入IO。换言之,I/F11接收被赋予了数据流ID的写入数据。
控制器10处理I/F11接收的写入IO。具体地说,控制器10控制写入IO所包含的写入数据向存储区域的存储。写入数据的存储目的地的存储区域包含RAM12及NAND存储器13。控制器10是作为例如基于程序而工作的电路的 运算装置。运算装置通过执行程序,实现作为控制器10的各种功能。控制器10具备的各种功能的构成将后述。
RAM12是作为暂时存储区域发挥功能的存储器。暂时存储区域包含存储短时间擦去的数据或频繁使用的数据的存储区域、高速缓存、缓冲器或展开程序的存储区域。作为暂时存储区域发挥功能的存储器的种类可以是DRAM(Dynamic Random Access Memory:动态随机存取存储器),也可以是SRAM(Stat ic Random Access Memory:静态随机存取存储器)。作为暂时存储区域发挥功能的存储器的种类不仅仅限于RAM。作为发挥暂时存储区域的功能的存储器,可以采用可比NAND存储器13高速存取的存储器。作为发挥暂时存储区域的功能的存储器,可采用易失性或非易失性存储器。
NAND存储器13更详细地说是NAND型的闪速存储器。NAND存储器13是存储器系统1中作为存储体(storage)发挥功能的存储器。即,NAND存储器13存储写入数据。作为存储体发挥功能的存储器的种类不仅仅限于NAND型的闪速存储器。只要是非易失性存储器,可以采用任意种类的存储器,作为发挥存储体的功能的存储器。
NAND存储器13具备多个块。块是可以对NAND存储器13存储的数据进行擦除的处理的最小的单位区域。即,一个块存储的数据一并擦除。另外,也可由多个块构成擦除处理的最小的单位区域。各块具备多个页面。针对NAND存储器13的数据写入的处理及数据读出的处理能以页面为单位执行。
这里,说明块的状态转变。图7是各种块的状态转变的一例的示图。阴影的箭头表示块的状态转变,实线的箭头表示数据的移动。作为块的状态,至少有输入块、活性(active)块及自由块。一个以上的活性块构成活性块池,一个以上的自由块构成自由块池。
输入块是作为被写入写入数据的块而设定的块。即,输入块具备空的页面,预定向该空的页面写入写入数据。活性块是写入结束的块中还无法再利用的块。写入结束的块中存储有效用户数据的块作为活性块进行管理。再利用是指使之转变为输入块。自由块是可再利用的块。
例如,向输入块写入1块量的数据后,该输入块转变为活性块。活性块中存储的写入数据的状态是有效状态和无效状态中的任一。在活性块中存 储有第1写入数据的状态下,从主机2指定与第1写入数据相同的逻辑地址而送来第2写入数据的情况下,控制器10向输入块的空的页面写入第2写入数据,将活性块中存储的第1写入数据管理为无效写入数据。写入数据有效是指该写入数据为最新的状态。被指定了同一逻辑地址的多个写入数据在NAND存储器13存储的情况下,最新的状态是指该多个写入数据中主机2最后写入的写入数据的状态。无效写入数据是指被指定同一逻辑地址而在NAND存储器13存储的多个写入数据中主机2最后写入的写入数据以外的写入数据。“空”状态这里是指无效数据及有效数据都未存储的状态。空的页面是可写入数据的空区域。
用户数据有效还是无效可由后述的翻译信息15判定。例如,有效用户数据是根据翻译信息15,在逻辑地址相关联的位置存储的用户数据。无效用户数据是根据翻译信息15,在逻辑地址不相关联的位置存储的用户数据。另外,用户数据有效还是无效也可以管理为:可根据每个用户数据的标志判定。作为用户数据有效还是无效的管理方法,可以采用上述以外的任意的方法。
自由块若枯竭,则执行垃圾收集。垃圾收集是从一个活性块将有效写入数据向其他块的空页面移动(拷贝)、其后将移动源的活性块中存储的全部写入数据管理为无效数据的处理。移动源的活性块在垃圾收集后,转变为自由块。另外,移动目的地的块可以是输入块,也可以是用于垃圾收集的专用块。自由块通过执行擦除成为空的状态后,转变为输入块。
准备多个输入块。然后,使各输入块与数据流相关联。即,写入数据的写入目的地的输入块根据数据流而选择。
根据第1实施方式,多个输入块包含第1输入块和第2输入块。第1输入块是仅仅向一个数据流分配的输入块。一个第1输入块被写入属于被分配了该第1输入块的一个数据流的写入数据。第2输入块是被写入属于被分配了第1输入块的数据流的写入数据以外的写入数据的输入块。属于未被分配第1输入块的数据流的写入数据被向第2输入块写入。
以下,将被分配了第1输入块的数据流表述为第1数据流。将被分配了第2输入块的数据流表述为第2数据流。
根据图7的例,数据流ID为“a”的数据流及数据流ID为“b”的数据流与第1数据流相当。数据流ID为“x”的数据流、数据流ID为“y”的数据流及数据流ID为“z”的数据流与第2数据流相当。
另外,第1输入块的数量可以是一个也可以是多个。第2输入块的数量可以是一个也可以是多个。NAND存储器13所包含的块的数量有限。从而,例如,第1输入块的数量及第2输入块的数量固定。第1输入块的数量的上限值也可以固定。第2输入块的数量的上限值也可以固定。第1输入块的数量及第2输入块的数量的合计也可以固定。
根据第1实施方式,控制器10根据来自主机2的用户数据的输入状况,自动执行针对数据流的输入块的分配。换言之,控制器10动态变更数据流和输入块的对应关系。
控制器10向NAND存储器13写入写入数据时,参照NAND存储器13中存储的管理信息。另外,控制器10根据状况,更新管理信息。管理信息也可以在RAM12中高速缓存。即,控制器10也可以在RAM12加载管理信息,参照、更新在RAM12中加载的管理信息。控制器10在更新了管理信息的情况下,将RAM12上的管理信息中的至少更新过的部分在预定的定时存储到NAND存储器13。
管理信息至少包含数据流对应信息14及翻译信息15。数据流对应信息14是将数据流和输入块相关联的信息。翻译信息15是将逻辑地址与NAND存储器13上的物理位置相关联的信息。
图8是数据流对应信息14的一例的示图。这里,各块通过块ID标识。根据该例,数据流ID为“00”的数据流与块ID为“0001”的输入块相关联。另外,例如数据流ID为“01”的数据流与块ID为“0022”的输入块相关联。另外,例如数据流ID为“02”的数据流及数据流ID为“03”的数据流与块ID为“0034”的输入块相关联。块ID为“0001”的输入块及块ID为“0022”的输入块分别与第1输入块相当。即,数据流ID为“00”的数据流及数据流ID为“01”的数据流分别与第1数据流相当。块ID为“0034”的输入块与第2输入块相当。即,数据流ID为“02”的数据流及数据流ID为“03”的数据流分别与第2数据流相当。
另外,根据图8的例,数据流对应信息14具备块标志。块标志是表示是第1输入块还是第2输入块的信息。即,块标志是表示设定成第1输入块的输入块的管理信息。这里,“1”表示第1输入块,“0”表示第2输入块。
另外,数据流对应信息14也可以省略第2输入块所涉及的数据流和输入块的对应关系而构成。该情况下,数据流对应信息14中未记录的数据流可判断为是第2数据流。而且,例如第2输入块与数据流对应信息14独立地被管理,属于第2数据流的写入数据,将与数据流对应信息14独立地被管理的第2输入块特定为写入目的地。
图9是控制器10具备的功能的构成的一例的说明图。控制器10具备数据控制部101、地址控制部102、块分配部(分配器)103及垃圾收集部104。
数据控制部101将写入IO所包含的写入数据存储在RAM12和/或存储在NAND存储器13。例如,数据控制部101将写入数据暂且存储在RAM12。然后,数据控制部101将RAM12中存储的写入数据在预定的定时写入NAND存储器13。数据控制部101向NAND存储器13写入写入数据时,通过参照数据流对应信息14,选择写入目的地的输入块。数据控制部101相应于数据流ID和数据流对应信息14,确定写入目的地的输入块。另外,数据控制部101在输入块转变为活性块的情况下,从自由块生成新输入块。
块分配部103执行针对数据流的输入块的分配及数据流和输入块的输入块的分配的变更。第1实施方式中,块分配部103,在生成新输入块、该输入块未分配给任何数据流的状态下,在控制器10接收了属于未被分配输入块的数据流的写入IO的情况下,向未被分配该输入块的数据流分配该新输入块。块分配部103每次执行分配时将分配结果反映到数据流对应信息14。
垃圾收集部104执行垃圾收集。垃圾收集部104可以不考虑在各活性块存储的写入数据所属的数据流地执行垃圾收集,也可以使得属于同一个数据流的2个写入数据分别向不同块移动地执行垃圾收集。例如,垃圾收集部104按写入数据(或按活性块)存储数据流ID,将移动源的块中存储的各写入数据移动到分配给该写入数据所属的数据流的输入块。
地址控制部102,相应于基于数据控制部101的写入数据对NAND存储器 13的写入及基于垃圾收集部104的写入数据对NAND存储器13的写入,更新翻译信息15。
另外,控制器10具备的构成要素(数据控制部101、地址控制部102、块分配部103及垃圾收集部104)中的一部分或全部也可以由硬件电路或硬件电路和运算装置的组合实现。硬件电路是不需要程序的电路。控制器10具备的构成要素中的多个也可以由一个构成要素实现。另外,控制器10具备的构成要素中的一个构成要素也可以由多个构成要素实现。另外,数据控制部101、地址控制部102、块分配部103及垃圾收集部104中的一部分或全部也可以设置在控制器10外。
图10是说明写入时的OS20的工作的流程图。若从应用程序21(或线程或VM)发行写入请求,则OS20(详细地说是OS20内的文件系统驱动器)接收该写入请求(S101)。OS20通过参照数据流管理信息22来确定向写入数据分配的数据流ID(S102)。文件系统驱动器将包含写入数据和写入指令的写入IO向存储器系统1发行(S103),写入时的OS20的工作结束。另外,由S103的处理发行的写入IO所包含的写入指令记录有由S102的处理确定的数据流ID。
图11是说明写入IO的处理所涉及的存储器系统1的工作的概略的流程图。控制器10若接收写入IO(S201),则数据控制部101从写入IO所包含的写入指令读出数据流ID(S202)。数据控制部101通过用数据流ID检索数据流对应信息14,特定写入目的地的输入块(S203),对特定出的输入块执行写入数据的写入(S204)。地址控制部102相应于对输入块的写入数据的写入,更新翻译信息15(S205),写入IO的处理结束。
在通过写入IO的处理使输入块充满时,控制器10执行输入块的分配的变更。图12是说明输入块的分配的变更所涉及的第1实施方式的存储器系统1的工作的流程图。在输入块没有了空区域的情况下,数据控制部101将没有了空区域的该输入块设定为活性块(S301)。本图的说明中,将由S301的处理设定成活性块的输入块表述为旧输入块。
另外,作为输入块、活性块及自由块的管理方法,可以采用任意的方法。例如,记录了设定为输入块的块的块ID的输入块列表、记录了设定为活性块的块的块ID的活性块列表及记录了设定为自由块的块的块ID的自由 块列表,包含于管理信息,控制器10的各构成要素适宜更新输入块列表、活性块列表及自由块列表。数据流对应信息14可起到输入块列表的功能。也可以构成为:按块记述了状态(输入块/活性块/自由块)的状态信息包含于更新信息,控制器10适宜更新状态信息。也可以构成为:在各块的预定位置记录表示块的状态的标志信息,控制器10适宜更新标志信息。
数据控制部101在S301的处理后,将一个自由块设定为新输入块(S302)。更详细地说,数据控制部101选择一个自由块,对所选择的自由块执行擦除,将执行了擦除的自由块设定为新输入块。本图的说明中,将由S302的处理设定的新的输入块表述为新输入块。另外,S301的处理和S302的处理的顺序可逆。
块分配部103特定被分配了旧输入块的数据流(S303)。本图的说明中,由S303的处理特定的数据流表述为旧数据流。而且,块分配部103判定旧输入块是否与第2输入块相当(S304)。块分配部103通过参照数据流对应信息14,执行S303及S304的处理。
在旧输入块与第2输入块相当的情况下(S304,是),块分配部103从数据流对应信息14删除旧数据流和旧输入块的对应关系(S305),登记旧数据流和新输入块的对应关系(S306)。S306的处理中,块分配部103将新输入块记录为第2输入块。S305及S306的处理也可以通过将数据流对应信息14记录的旧输入块的块ID用新输入块的块ID覆写而实现。
旧输入块与第2输入块不相当的情况下(S304,否),即,旧输入块与第1输入块相当的情况下,块分配部103监视写入IO的接收,检测旧输入块的空区域消失以后最开始接收的写入IO(S307)。块分配部103从检测到的写入IO所包含的写入指令读出数据流ID(S308)。由S308的处理读出的数据流ID表示的数据流表述为新数据流。
块分配部103判定新数据流和旧数据流是否为同一数据流(S309)。新数据流和旧数据流是同一数据流的情况下(S309,是),块分配部103从数据流对应信息14删除旧数据流和旧输入块的对应关系(S310),登记新数据流和新输入块的对应关系(S311)。S311的处理中,块分配部103将新输入块记录为第1输入块。S310及S311的处理也可以通过将数据流对应信息14中记录的 旧输入块的块ID用新输入块的块ID覆写而实现。
在新数据流和旧数据流是不同数据流的情况下(S309,否),块分配部103判定新数据流是否与第1数据流相当(S312)。即,块分配部103判定是否向新数据流分配了第1输入块。新数据流与第1数据流相当的情况下(S312,是),即新数据流被分配了第1输入块的情况下,块分配部103删除旧数据流和旧输入块的对应关系(S313),登记旧数据流和新输入块的对应关系(S314)。S313的处理中,块分配部103将新输入块记录为第1输入块。S313及S314的处理也可以通过将数据流对应信息14中记录的旧输入块的块ID用新输入块的块ID覆写而实现。
新数据流与第1数据流不相当的情况下(S312,否),即新数据流被分配了第2输入块的情况下,块分配部103删除新数据流和第2输入块的对应关系(S315),删除旧数据流和旧输入块的对应关系(S316)。另外,块分配部103登记新数据流和新输入块的对应关系(S317),登记旧数据流和第2输入块的对应关系(S318)。S315及S317的处理也可以通过将数据流对应信息14中记录的新数据流的数据流ID用旧数据流的数据流ID覆写而实现。
在S306、S311、S314或S318的处理后,输入块的分配的变更的处理结束。
另外,说明了下述情况:在输入块没有了空区域时,使得输入块向活性块转变。但是即使在输入块残留有空区域,也可以使得输入块向活性块转变。另外,也可以在空区域用预定的数据填充后使得输入块向活性块转变。即,可以在任意的定时使得输入块向活性块转变。输入块向活性块转变的情形指的是对该输入块的写入结束。
这样,根据第1实施方式,块分配部103在对第1输入块的写入数据的写入结束后,将块设定成新第1输入块,使新第1输入块与不同于旧数据流的一个其他的数据流相关联(S315~S318)。块分配部103相应于输入块的新设定,将曾经作为第1数据流的旧数据流变更为第2数据流,将曾经作为第2数据流的新数据流变更为第1数据流。从而,存储器系统1不需要来自主机2的指定数据流和输入块的对应关系的指示,可以自动变更数据流和输入块的对应关系。从而,存储器系统1的便利性提高。
另外,块分配部103将第2数据流中的对第1输入块的写入数据的写入结束后最初接收的第2数据流向新第1输入块分配(S312,否,S315~S318)。从而,可以通过简单处理进行数据流和输入块的输入块分配的变更。
(第2实施方式)
图13是说明第2实施方式的控制器10具备的功能的构成的一例的图。控制器10具备数据控制部101、地址控制部102、块分配部103a、垃圾收集部104及测定部105。数据控制部101、地址控制部102及垃圾收集部104的功能与第1实施方式的同名的构成要素的功能相同。
测定部105按每个数据流测定写入量。作为写入量,例如,可采用写入指令的输入次数或写入数据的合计的大小。其他例中,作为写入量,可采用最近的1分钟等预定时间的期间中的写入指令的输入次数或写入数据的合计的大小。其他例中,作为写入量,可采用写入指令的输入次数或写入数据的合计的大小从输入开始起的累计值。另外,作为每个数据流的写入量,可采用针对预定时间的期间的全部数据流的写入量的各数据流的写入量的比例。另外,作为每个数据流的写入量,可采用针对全部期间的全部数据流的写入量的各数据流的写入量的比例。
块分配部103a根据测定部105对写入量的测定结果,执行输入块的分配的变更。作为一例,块分配部103a将第2数据流中的写入量最大的数据流变更为第1数据流,将第1数据流中的一个变更为第2数据流。
图14是说明输入块的分配的变更所涉及的第2实施方式的存储器系统1的工作的流程图。在输入块没有了空区域的情况下,数据控制部101将没有了空区域的该输入块设定为活性块(S401)。本图的说明中,将由S401的处理设定成活性块的输入块表述为旧输入块。数据控制部101在S401的处理后,将一个自由块设定为新的输入块(S402)。本图的说明中,将由S402的处理设定的新的输入块表述为新输入块。
块分配部103a特定被分配了旧输入块的数据流(S403)。本图的说明中,将由S403的处理特定出的数据流表述为旧数据流。而且,块分配部103a判定旧输入块是否与第2输入块相当(S404)。
旧输入块与第2输入块相当的情况下(S404,是),块分配部103a删除旧 数据流和旧输入块的对应关系(S405),登记旧数据流和新输入块的对应关系(S406)。S406的处理中,块分配部103a将新输入块记录为第2输入块。S405及S406的处理也可以通过将数据流对应信息14中记录的旧输入块的块ID用新输入块的块ID覆写而实现。
旧输入块与第2输入块不相当的情况下(S404,否),即,旧输入块与第1输入块相当的情况下,块分配部103a通过参照测定部105的测定值,特定全部的第2数据流中写入量最大的第2数据流(S407)。本图的说明中,将由S407的处理特定的第2数据流表述为新数据流。
块分配部103a在S408~S411中执行与S315~S318相同的处理,输入块的分配的变更的处理结束。
这样,第2实施方式中,块分配部103a选择第2数据流中的一个,将选择出的数据流向新输入块分配(S407~S411)。从而,存储器系统1不需要来自主机2的指定数据流和输入块的对应关系的指示,可以自动变更数据流和输入块的对应关系。从而,存储器系统1的便利性提高。
另外,块分配部103a选择第2数据流中写入量最大的数据流。从而,可以向写入量大的数据流高效分配第1输入块,因此垃圾收集的效率提高。
另外,块分配部103a也可以构成为:以与写入量相应的任意方法进行第2数据流的选择或第1数据流和第2数据流的互换。例如,块分配部103a选择写入量比旧数据流大的任意的第2数据流。
另外,块分配部103a在旧数据流和第2数据流中的写入量最大的数据流间比较写入量,根据比较的结果,执行第1数据流和第2数据流的变更。具体地说,块分配部103a在旧数据流的写入量比第2数据流中的写入量最大的数据流的写入量小的情况下,将旧数据流变更为第2数据流,将第2数据流中的写入量最大的数据流变更为第1数据流。另外,块分配部103a在旧数据流的写入量比第2数据流中的写入量最大的数据流的写入量大的情况下,不将旧数据流变更为第2数据流,不将第2数据流中的写入量最大的数据流变更为第1数据流。
另外,说明了下述情况:使输入块向活性块转变时执行输入块的分配的变更。从输入块向活性块转变的定时也可以根据每个数据流的写入量而 确定。例如,块分配部103a按每个数据流监视测定部105的测定结果,预定时间以上未接收属于第1数据流的写入数据的情况下,数据控制部101将向该第1数据流分配了的输入块设定成活性块。从而,按照图14所示的处理,执行输入块的分配的变更。
(第3实施方式)
第1及第2实施方式中,在对输入块的写入结束时,执行输入块的分配的变更。输入块的分配的变更的执行定时不仅仅限于与对输入块的写入结束相应的定时。
第3实施方式的存储器系统1与第2实施方式的存储器系统1之间,块分配部的功能不同。第3实施方式的块分配部通过附上标记103b,区别于第2实施方式。
图15是说明输入块的分配的变更所涉及的第3实施方式的存储器系统1的工作的流程图。
首先,块分配部103b判定是否达到分配的变更定时(S501)。
作为分配的变更定时的设定,可以采用任意的定时。例如,作为分配的变更定时的设定,可以采用基于经过时间的定时。例如,块分配部103b在前次的变更定时起的经过时间达到预定时间的情况下,判定为达到变更定时。用于分配的变更定时的经过时间也可以按每个输入块测定。
另外,例如,块分配部103b监视基于测定部105得到的每个数据流的写入量,在每个数据流的写入量满足输入块的分配的变更的条件的情况下,判定为达到了变更定时。
在未达到分配的变更定时的情况下(S501,否),块分配部103b再次执行S501的处理。在达到了分配的变更定时的情况下(S501,是),块分配部103b取得每个数据流的写入量(S502)。然后,块分配部103b判定每个数据流的写入量是否满足输入块的分配的变更的条件(S503)。
作为输入块的分配的变更的条件,只要是基于每个数据流的写入量的条件,可以采用任意的条件。输入块的分配的变更的条件的例说明如下。
(第1条件)
根据第1条件,将至少一个第1数据流的写入量比第2数据流中的写入量 最大的第2数据流的写入量小的情形判定为满足输入块的分配的变更的条件。换言之,将任一个第1数据流的写入量都比第2数据流中的写入量最大的第2数据流的写入量大的情形判定为不满足输入块的分配的变更的条件。
(第2条件)
根据第2条件,将至少一个第1数据流的写入量比预定的阈值小的情形判定为满足输入块的分配的变更的条件。换言之,将任一个第1数据流的写入量都比上述阈值大的情形判定为不满足输入块的分配的变更的条件。
(第3条件)
根据第3条件,将至少一个第2数据流的写入量比预定的阈值大的情形判定为满足输入块的分配的变更的条件。换言之,将任一个第2数据流的写入量都比上述阈值小的情形判定为不满足输入块的分配的变更的条件。
每个数据流的写入量不满足输入块的分配的变更的条件的情况下(S503,否),块分配部103b再次执行S501的处理。每个数据流的写入量满足输入块的分配的变更的条件的情况下(S503,是),块分配部103b选择一个第1数据流和一个第2数据流(S504)。
作为各数据流的选择的基准,只要基于每个数据流的写入量,可采用任意的基准。
在采用第1条件作为输入块的分配的变更的条件的情况下,例如,选择写入量最大的第2数据流,选择写入量比所选择的第2数据流小的第1数据流。另外,在采用第1条件作为输入块的分配的变更的条件的情况下,也可以选择写入量最小的第1数据流。
另外,在采用第2条件作为输入块的分配的变更的条件的情况下,例如,选择写入量比第2条件中使用的阈值小的第1数据流,选择任意的第2数据流。在采用第2条件作为输入块的分配的变更的条件的情况下,可以选择写入量比所选择的第1数据流大的任意的第2数据流,也可以选择一个以上的第2数据流中的写入量最大的第2数据流。
另外,在采用第3条件作为输入块的分配的变更的条件的情况下,例如,选择写入量比第3条件中使用的阈值大的第2数据流,选择任意的第1数据流。在采用第3条件作为输入块的分配的变更的条件的情况下,可以选择写 入量比所选择的第2数据流小的任意的第1数据流,也可以选择一个以上的第1数据流中的写入量最小的第1数据流。
另外,也可以与输入块的分配的变更的条件无关,选择任意的第2数据流,选择写入量比所选择的第2数据流小的第1数据流。另外,也可以与输入块的分配的变更的条件无关,选择任意的第1数据流,选择写入量比所选择的第1数据流大的第2数据流。
在S504的处理后,块分配部103b通过更新数据流对应信息14,将所选择的第1数据流变更为第2数据流,将所选择的第2数据流变更为第1数据流(S505)。例如,块分配部103b使所选择的第1数据流与向所选择的第2数据流分配了的第2输入块相关联,使所选择的第2数据流与向所选择的第1数据流分配了的第1输入块相关联。
在S505的处理后,块分配部103b再次执行S501的处理。另外,在S505的处理后,块分配部103b也可以再次执行S503的处理。
另外,块分配部103b也可以在S504的处理后,使被分配了所选择的第1数据流的第1输入块转变为活性块,将一个自由块设定成新第1输入块后,执行S505的处理。另外,例如,块分配部103b也可以使被分配了所选择的第1数据流的第1输入块转变为活性块时,将空区域用预定的数据填充。另外,例如,块分配部103b也可以使所选择的第1数据流暂时与新第1输入块相关联,然后,在对该新第1输入块的写入开始前,执行S505的处理。
如上所述,根据第3实施方式,块分配部103b在满足任意设定的条件后,执行输入块的分配的变更。另外,块分配部103b根据写入量选择变更对象的第2数据流。从而,存储器系统1即使在未新设定输入块的情况下也可以执行输入块的分配的变更。从而,存储器系统1的便利性提高。
作为输入块的分配的变更的条件,如上述,可采用与经过时间相应的定时或与写入量相应的定时。
(第4实施方式)
第1~第3实施方式的存储器系统1中,块分配部接收属于新数据流的写入数据的情况下,也可以向新数据流分配第2输入块。新数据流是指在数据流对应信息14未记录对应关系的数据流。另外,块分配部可以将一个以上 的第1数据流中的任意的第1数据流变更为第2数据流,将新数据流设定成第1数据流。块分配部也可以将一个以上的第1数据流中写入量最小的第1数据流选择为变更为第2数据流的变更对象的第1数据流。OS20在发送属于新数据流的写入数据的情况下,也可以向存储器系统1通知新数据流,块分配部相应于通知的接收,实施对新数据流的输入块的分配。
另外,在以后不接收属于第2数据流的写入数据的情况下,块分配部也可以删除该第2数据流和第2输入块的对应关系。另外,在以后不接收属于第1数据流的写入数据的情况下,块分配部也可以删除该第1数据流和第1输入块的对应关系,将任意的第2数据流变更为第1数据流。块分配部也可以将一个以上的第2数据流中写入量最大的第2数据流选择为变更为第1数据流的变更对象的第2数据流。OS20在以后不进行属于一个数据流的写入数据的发送的情况下,也可以向存储器系统1通知以后不进行写入数据的发送的数据流,块分配部相应于通知的接收,实施分配的变更。
(第5实施方式)
第1~第4实施方式的存储器系统1也可以构成为:可接收具备不包含数据流ID的写入指令的写入IO。例如,数据控制部101向第2输入块写入不属于数据流的写入数据。或,设定与第1输入块和第2输入块都不同的第3输入块,数据控制部101向第3输入块写入不属于数据流的写入数据。
(第6实施方式)
图16是存储器系统1的安装例的示图。存储器系统1在例如服务器系统1000安装。服务器系统1000具备盘阵列2000和机架安装服务器(rack mount server)3000。盘阵列2000和机架安装服务器3000通过通信接口4000连接。通信接口4000的规格可以采用任意的规格。
机架安装服务器3000具备服务器机架,在该服务器机架安装一个以上的主机2。另外,盘阵列2000具备服务器机架,在该服务器机架安装一个以上的存储器系统1。各主机2可以经由通信接口4000向构成盘阵列2000的各存储器系统1发送写入IO。
各存储器系统1具有采用第1~第6实施方式中任一的构成。从而,各存储器系统1可以自动更新数据流和输入块的对应关系。可以不需要基于各主 机2的对数据流和输入块的对应关系的指示,因此提高了各存储器系统1的便利性。
虽然说明了本发明的几个实施方式,但是这些实施方式只是例示,而不是用于限定发明的范围。这些新实施方式能以其他的各种形态实施,在不脱离发明的要旨的范围,可以进行各种省略、置换、变更。这些实施方式和/或其变形包括于发明的范围和/或要旨中,也包括于技术方案记载的发明及其均等的范围中。