存储装置及存储系统的制作方法

文档序号:11432195阅读:142来源:国知局
存储装置及存储系统的制造方法

[相关申请]

本申请享有以日本专利申请2016-31993号(申请日:2016年2月23日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。

本实施方式概括来讲涉及一种存储装置及存储系统。



背景技术:

近年来,已知一种将键(key)及与该键相对应的值(value)存储在存储媒体中的存储装置及包含该存储装置的存储系统。



技术实现要素:

本实施方式提供一种能够使读取高速缓存处理效率化的存储装置及存储系统。

实施方式的存储装置包括:存储媒体;控制器,以向所述存储媒体写入与键对应的值并读取与已写入到所述存储媒体的键对应的值的方式进行控制;第1存储器,存储由所述控制器从所述存储媒体读取的值;及第1信息,是构成所述键的构成信息,且表示构成所述值的单位的数量;且所述控制器在从所述存储媒体读取所述值时执行第1判定,该第1判定是对所述第1信息所表示的构成所述值的单位的数量与所读取的构成所述值的单位的数量是否一致进行判定;在满足所述第1判定的判定条件的情况下,使读取的所述值作为高速缓存数据而存储在所述第1存储器中,在不满足所述第1判定的判定条件的情况下,不使读取的所述值作为高速缓存数据存储在所述第1存储器中,而反复实施所述第1判定直到将读取请求所涉及的值读取为止。

附图说明

图1是表示第1实施方式的存储系统的框图。

图2是用来说明存储在存储媒体中的值及键的图。

图3是表示图1中的管理表t1的图。

图4是表示图1中的键管理信息的一例的图。

图5是表示第1实施方式的存储系统的读取(读取高速缓存)处理的流程图。

图6是用来说明第1实施方式的存储系统的读取(读取高速缓存)处理的图。

图7是表示读取处理后的缓冲存储器的存储空间的图。

图8是表示读取高速缓存处理后的缓冲存储器的存储空间的图。

图9是用来说明比较例的存储系统的读取高速缓存处理的概略图。

图10是表示变化例1的存储系统的读取(读取高速缓存)处理的流程图。

图11是用来说明变化例1的存储系统的读取(读取高速缓存)处理的图。

图12是表示读取高速缓存处理1及读取处理后的缓冲存储器的存储空间的图。

图13是表示读取高速缓存处理2之后的缓冲存储器的存储空间的图。

图14是表示第2实施方式的存储系统的框图。

图15是表示第3实施方式的存储系统的框图。

图16是表示第3实施方式的存储系统的put(写入)动作的框图。

图17是表示第3实施方式的存储系统的get(读取)动作的框图。

具体实施方式

以下,参照附图对发明的实施方式进行说明。在该说明中,遍及全部附图,对共通的部分标注共通的参照符号。

(第1实施方式)

[1.构成]

1-1.存储系统

使用图1对第1实施方式的存储系统1a进行说明。存储系统1a包含作为存储媒体的磁盘10,且是以外部的存储装置访问用户端(以下,称为“用户端”)300能够使用api(applicationprogramminginterface,应用编程接口)230经由ip(internetprotocol,互联网协议)等网络301而加以访问的方式构成。此处,所谓api是指一种接口,该接口对用来由外部(此处为用户端300)的程序调出并利用某处理器(此处为cpu(centralprocessingunit,中央处理器)210)的程序的功能等的顺序及数据形式等进行了规定。例如,用户端300可以使用api230,按照所规定的既定顺序(例如,指定用来调出cpu210的通用性读取功能的指令),而向存储系统1a提出读取请求。接收到读取请求的存储系统1a按照来自用户端300的读取请求,而回传读取数据。如此,用户端300能够按照api230所规定的既定顺序从cpu210调出共通利用的通用性功能,并利用该功能。从而,用户端300无需从头编写用来利用该通用性功能的复杂程序等,只要用户端300知道用来利用读取请求等通用性功能的简单命令,便能够访问存储系统1a。

而且,存储系统1a将键k及与该键k相对应的值v存储在磁盘10中。

如图2所示,值v是被用户端300提出写入请求或读取请求等的信息。作为一例,值v是从用户端300发送来的动画数据、图像数据、及文本数据等用户数据。

如图2所示,键k是值v以外的信息,且是关联于与键k对应的值v而具有意义的信息。作为一例,键k包含id信息、构成块数、组织名、文件名、文件形式等。id信息是识别所对应的值v的固有的识别信息。构成块数是表示构成值v的块的数量的信息。组织名例如为hdd1等。文件名例如为file_a等。id信息例如为2150333等。构成块数例如为1等。文件形式例如为文本文件形式、图像文件形式、动画文件形式、及语音文件形式等。另外,构成键k的信息(构成信息)并不限于所述信息。关于所述构成信息的详细内容,将使用图4在下文叙述。

在所述说明这样的存储系统(kv(key-value,键值)型存储系统)1a中,作为任意尺寸的识别信息的键k、及与该键k相对应的任意尺寸的值v存储在存储装置100中。根据所述构成,若用户端300指定键k,则能够put(写入)、get(读取)、及delete(删除)与键k相对应的值v。关于它们的详细内容将在下文叙述。

回到图1,存储系统1a包括受理来自外部的用户端300的请求的主机200、及由主机200来管理的多个存储装置100。

从包含存储系统1a及用户端300的整体来看,主机200是发挥用来使用户端300与多个存储装置100相互进行访问的中介作用的桥接部。主机200例如为服务器、个人计算机、或接口设备等。此处,所谓主机200是指实施用来使用户端300与存储装置100相互进行访问的控制的装置。在第1实施方式中,主机200集中控制多个存储装置100,而响应来自用户端300的请求。主机200中所包含的应用程序等能够经由所述api230而访问各存储装置100。

主机200包含cpu(centralprocessingunit)210,该cpu210根据来自用户端300的请求而发布读取指令等既定指令,并经由存储装置i/f(interface,接口)而控制各存储装置100,由此控制存储系统1a整体的动作(例如,读取、写入等)。cup210包括kv管理部220、api230、及kv管理表240。

kv管理部220处理来自用户端300的命令。具体来讲,kv管理部220基于从用户端300接收到的一对键及值(k,v),而使键k存储在ssd(solidstatedrives,固态驱动器)1中,并指定表示值v的位置的lba(logicalblockaddress,逻辑块地址)而使值v及键k存储在hdd(harddiskdrive,硬盘驱动器)1或hdd2中。因此,kv管理部220会根据需要而参照kv管理表240,该kv管理表240是表示键k、与该键对应的值v、及主机200所指定的lba的对应关系。

kv管理表240存储如下三者的对应关系:写入到各存储装置100中的从用户端300发送来的全部键k及值v、以及主机200所指定的lba。而且,kv管理表240的内容例如会根据通过写入而在新的lba的磁盘10中存储新的键k及值v的情况等下的需要加以更新。

在第1实施方式中,作为存储装置100,列举包含作为存储媒体的磁盘(以下,称为“磁盘”)10的hdd1作为一例而进行说明。

hdd1包括下述头盘组件(head-diskassembly:hda)、驱动器ic(integratedcircuit,集成电路)20、磁头放大器集成电路(以下,称为“磁头放大器ic”)30、易失性存储器70、非易失性存储器80、缓冲存储器(高速缓冲存储器)90、及包含单芯片集成电路的系统控制器130。hdd1经由作为设备i/f的sata(serialadvancedtechnologyattachment,串行高级技术附件)i/f或sas(serialattachedsmallcomputersystem,串行连接小型计算机系统)i/f等而与主机200连接。hdd1将从主机200传送来的写入数据v写入到磁盘10,并将从磁盘10读取的读取数据v传送到主机200。

hda具有磁盘10、主轴马达(spm)12、搭载磁头15的臂13、及音圈马达(vcm)14。磁盘10是利用主轴马达12而旋转。臂13及vcm14构成致动器。致动器通过vcm14的驱动,而使搭载在臂13上的磁头15移动到磁盘10上的既定位置。磁盘10及磁头15也可以为2个以上。

磁头15包含设置在前端部的写入磁头15w及读取磁头15r。写入磁头15w产生相对于磁盘10的表面为垂直方向的磁场,而将写入数据写入到磁盘10表面的磁道上。读取磁头15r读取记录在磁盘10的磁道上的数据。

驱动器ic20按照系统控制器130(详细来讲为下述mpu(microprocessingunit,微处理器)60)的控制,而控制spm12及vcm14的驱动。

磁头放大器ic30具有读取放大器及写入驱动器。读取放大器将利用读取磁头15r而读取的读取信号放大,并传输到读/写(r/w)信道40。写入驱动器将与从r/w信道40输出的写入数据对应的写入电流传输到写入磁头15w。

易失性存储器70是若电力供给中断则所保存的数据丢失的半导体存储器。易失性存储器70对实施存储系统1a各部中的处理及运算时所需的数据等进行存储。例如,易失性存储器70在下述读取高速缓存处理时,将管理构成各键k的构成信息(构成参数)的键管理信息71展开。易失性存储器70例如为sdram(synchronousdynamicrandomaccessmemory,同步动态随机存取存储器)等。

非易失性存储器80是就算电力供给中断也保持所保存的数据的半导体存储器。非易失性存储器80例如为闪速rom(flashreadonlymemory:from,闪速只读存储器)等。

缓冲存储器90是临时保存在磁盘10与主机200之间收发的读取数据v等的半导体存储器。另外,缓冲存储器90也可以与易失性存储器70一体而配置。缓冲存储器90例如为dram(dynamicrandomaccessmemory,动态随机存取存储器)、sram(staticrandomaccessmemory,静态随机存取存储器)、sdram、feram(ferroelectricrandomaccessmemory,铁电式随机存取存储器)、及mram(magnetoresistiverandomaccessmemory,磁阻式随机存取存储器)等。

系统控制器(存储器控制器)130例如是使用大规模集成电路(lsi)而实现,该大规模集成电路是多个元件集成在单个芯片上而形成,被称为芯片上系统(soc,system-on-a-chip)。系统控制器130包含读/写(r/w)信道40、硬盘控制器(hdc)50、及微处理器(mpu)60。

r/w信道40执行读取数据及写入数据的信号处理。r/w信道40具有测定读取数据的信号品质的电路或功能。

hdc50根据来自mpu60的指示,而控制主机200与r/w信道40之间的数据传送。hdc50包含cpu55、及表格t1。

cpu55控制hdc50的整体(此处所谓的“整体”是指除了主机200以外hdc50所控制的存储装置(hdd1)100的整体)的动作。表格t1是表示键v、值v、及lba的对应关系的管理表(转换表)。关于表格t1的详细内容将在下文叙述。

mpu60是控制hdd1的各部而控制整体的动作的主控制器。mpu60例如经由驱动器ic20来控制vcm14,从而执行进行磁头15的定位的伺服控制。

另外,hdd2的构成与hdd1相同。而且,主机200及hdd1的构成并不限于所述构成。例如,并不像kv管理表240及表格t1那样限定于表格形式,也可以为既定的函数或数式以及既定的映射形式等。配置它们的位置也不受限定。

而且,ssd1包含作为存储媒体的nand(notand,与非)型闪速存储器等闪速存储器。闪速存储器包含在字线与位线的交叉位置配置多个存储单元而形成的存储单元阵列。各存储单元包含控制栅极及浮动栅极。按照连接于字线的控制栅极的电压控制,而控制注入到浮动栅极的电子的有无,由此非易失性地存储数据。对于ssd1的其他构成的详细说明予以省略。

1-2.表格t1

图3是表示图1的表格t1的图。如图3所示,表格t1是表示如下三者的对应关系的管理表:写入到存储装置100的磁盘10中的值v、与该值v对应的键k、及由主机指定的lba(构成值v的单位(块/扇区)的位置信息)。

在表格t1中,例如表示键k1、值v1、及lba1处于相互关联的对应关系的情况。以下同样地,键k2、值v2、及lba2处于对应关系。键k3、值v3、及lba3处于对应关系。键kn、值vn、及lban~lban+2处于对应关系。键kx、值vx、及lban-3~lban-1处于对应关系。键ky、值vy、及lban+3处于对应关系。键kz、值vz、及lban+4~lban+7处于对应关系。

如此,在存储系统1a中,与键k相对应的任意尺寸的值v存储在磁盘10中。因此,与1个值v相对应的lba任意,不一定是1个。例如,相对于1个值vn,对应着3个lban~lban+2(3个块)。而且,相对于1个值vy,对应着1个lban+3(1个块)。

而且,如图2中所说明的那样,各键k不仅包含识别与该键k相对应的值v的id信息,而且包含关联于所对应的值v而具有意义的日期等其他构成信息。

1-3.键管理信息

图4是表示图1的键管理信息71的图。此处,将键ky的键管理信息71作为一例而表示。键ky例如包含以下构成信息(构成数据、构成参数)。此处,图4所示的“构成信息”是指构成该键ky的信息,且是如上所述关联于与该键ky相对应的值vy而具有意义的信息。

如图4所示,keyy(id信息)的值例如为“2150333”,是用来特定出所对应的值vy的固有信息。numy(第1信息)的值例如为“1”,表示值vy的构成块的数量。具体来讲,numy是表示构成从主机200传送来的写入数据的单位的数量(块数/扇区数)的信息。换句话说,numy对应于与键ky相对应的值vy的尺寸。storagey(组织名)的值例如为“hdd1”,表示存储值vy的存储装置(此处为hdd1)。filey(文件名)的值例如为“file_a”,表示存储值vy的文件名。datay(日期)的值例如为“1127”,表示创建值vy的11月27日。

另外,图4所示的构成信息归根到底不过是例示,并不限定于这些例子。例如,构成信息也可以包含例如值v的尺寸、标题、及注释等其他值v的属性数据。

[2.动作]

2-1.读取(读取高速缓存)处理

使用图5至图7,对存储系统1a的读取(读取高速缓存)处理进行说明。另外,在第1实施方式中,列举主机200从用户端300收到作为读取数据的值vn(以lba表示的lban~lban+2(构成块的数量:3))的读取请求的情况作为一例。因此,首先,对读取请求所涉及的读取处理进行说明。

[读取处理]

在图5的步骤s11中,主机200经由api230而从用户端300接收指定键kn的读取请求。收到读取请求的主机200的kv管理部220参照kv管理表240,基于kv管理表中所示的键kn与值vn的对应关系,而检索存储与值vn对应的键kn的存储装置100。检索的结果,kv管理部220若判定存储键kn的存储装置是hdd1,则参照kv管理表240,基于kv管理表中所示的键kn与lban~lban+2的对应关系,而指定lban~lban+2并指定作为读取数据的值vn。

另外,在检索所述键kn时,kv管理部220也可以从作为存储装置的ssd1进行检索。其详细内容将在下文叙述。

在步骤s12中,指定了值vn的装置100的cpu55使读取磁头15r的磁盘10的位置从当前磁道移动到存储作为读取数据的值vn的目标磁道(寻道)。具体来讲,如图3所示,cpu55参照表示出值vn及与该值vn对应的lban~lban+2的对应关系的表格t1,基于所参照的对应关系(vn,lban~lban+2),而使读取磁头15r的位置移动到目标磁道。

在步骤s13中,当所述寻道完成后,hdd1从磁盘10的目标磁道读取作为读取数据的值vn。例如,如图6所示,hdd1的mpu60从磁盘10的目标磁道19,利用读取磁头15r而读取参照表格t1所得出的lban~lban+2的值vn。更具体来讲,若随着图中的箭头所示的磁盘10的旋转,值vn(lban~lban+2)来到读取磁头15r的位置,则利用读取磁头15r而读取值vn。被读取的值vn存储在缓冲存储器90中。

回到图5,在步骤s14中,hdd1将读取的值vn传送到主机200,而响应读取请求。具体来讲,hdd1的cpu55从缓冲存储器90将值vn传送到主机200。

如图7所示,读取处理的结果,在缓冲存储器90的存储空间存储作为读取数据的值vn。如图7所示,从缓冲存储器90的全部存储区域除去作为读取数据的值vn以外的区域称为剩余区域ra。

[读取高速缓存处理]

继而,对读取高速缓存处理进行说明。读取高速缓存处理利用的是如下特点:对紧跟着有过读取请求的数据(此处为值vn)的区域及其附近区域等提出读取请求的倾向较高。例如,在对某区域(此处为lban~lban+2)提出过读取请求之后,将存储在紧跟着所述某区域的前方的区域(此处为lban+3)中的数据读取,并预先使之存储在缓冲存储器90中。通过这样预先进行读取高速缓存处理,能够在接下来对已预先存储在缓冲存储器90中的数据提出读取请求的情况下,不从磁盘10读取,而从缓冲存储器90直接传送该读取请求所涉及的数据。结果,能够使存储系统1a的读取访问高速化。

在步骤s15中,hdd1对在缓冲存储器90中是否存在用来进行读取高速缓存处理的区域进行判定。这时,例如,在因为存储着读取数据等,所以缓冲存储器90的剩余区域ra的容量小于既定的阈值cth的情况下(s15中为否),hdd1的cpu55使读取高速缓存处理结束。此处,所谓既定的阈值cth是指用来使用缓冲存储器90的空闲区域(剩余区域)在缓冲存储器90的存储区域中所占的比率。例如,在图8所示的情况下,阈值cth是剩余区域ra在缓冲存储器90的存储区域(存储读取数据vn及高速缓存数据vy的区域、以及剩余区域ra)中所占的比率。在该情况下,阈值cth例如为10%到20%左右。

在步骤s16中,hdd1在满足步骤s15的条件的情况下(s15中为是),同样地继续从磁盘10的目标磁道19读取值。

在步骤s17中,hdd1参照所要读取的值v的键k,而对所参照的键k中所示的值v是否全部包含在缓冲存储器90中进行判定。换句话说,这时,hdd1通过参照键k,而判定不完全数据及不使用数据等。

具体来讲,hdd1的cpu55参照在易失性存储器70中展开的键管理信息71(图4),基于构成键k的各构成数据中表示值v的构成块的数量的信息(第1信息)num,而对值v是否全部包含在缓冲存储器90中进行判定。在不满足步骤s17的条件的情况下(s17中为否),hdd1重复步骤s17的处理。

这时,例如,在从图6所示的位置(lban-3的中途)开始读取高速缓存处理的情况下,cpu55参照键管理信息71,基于信息(第1信息)numx的值即“3”,而判定值vx(lban-3~lban-1)并未全部包含在缓冲存储器90中;所述信息numx表示构成键kx的值vx的构成块的数量。这意味着信息numx所表示的构成块的数量为3块,另一方面所读取的构成值vx的块的数量为2块(lban-2及lban-1),所参照的数量与所读取的数量不一致。从而,cpu55判定无法读取构成值vx的全部数据。

进而,在图6所示的读取磁头15r来到位置lban+3的情况下,cpu55参照图4所示的键管理信息71,基于信息(第1信息)numy的值即“1”,而判定值vy(lban+3)全部包含在缓冲存储器90中(能够作为高速缓存而加以利用);所述信息numy表示构成键ky的值vy的构成块的数量。这意味着表示构成块的数量的信息numy为1块,而所读取的构成值vy的块也为1块。因此,信息numy所表示的构成块的数量“1”与所读取的构成值vy的块的数量“1”一致。从而,cpu55判定对于读取的值vy,能够读取全部数据,且能够使之存储在缓冲存储器90中。

另外,如图8所示,此处,若使超出此的数据存储在缓冲存储器90中,则因为存储着高速缓存数据vy及读取数据vn,所以缓冲存储器90的剩余区域ra的容量小于既定的阈值cth。

因此,在图6所示的读取磁头15r来到位置lban+4的情况下,cpu55参照键管理信息71,基于信息(第1信息)numz的值即“4”,而判定值vz(lban+3~lban+7)并未全部包含在缓冲存储器90中(无法作为高速缓存而加以利用);所述消息numz与构成键kz的值vz的构成块的数量相关联。

在步骤s18中,在满足步骤s17的条件的情况下(s17中为是),使该值v存储在缓冲存储器90中,而结束高速缓存读取处理。结果,例如,如图8所示,能够使满足步骤s17的条件的值vy(lban+3)作为高速缓存数据而存储在缓冲存储器90中。

另外,作为其他存储装置100的hdd2等的读取及读取高速缓存处理实质上也与所述hdd1相同。因此,省略它的详细说明。

[3.作用效果]

如以上所说明的那样,根据第1实施方式的存储系统1a的构成及动作,至少能够获得下述(1)及(2)的效果。

(1)能够使读取高速缓存处理效率化。

在读取处理(图5的s11~s14)之后,hdd1的cpu55参照所要高速缓存读取的值v的键k,而对所参照的键k中所示的值v是否全部包含在缓冲存储器90中进行判定(图5的s17)。换句话说,hdd1通过参照键k的构成数据,而对读取的值是否为未包含构成该值的全部数据的不完全数据或不使用数据等进行判定。更加具体来讲,cpu55参照在易失性存储器70中展开的键管理信息71(图4),而对构成键k的各构成数据中表示值v的构成块的数量的信息(第1信息)与所读取的构成值的块的数量是否一致进行判定。

在满足步骤s17的判定条件的情况下(s17中为是),使该值v存储在缓冲存储器90中。结果,例如,如图8所示,能够使满足步骤s17的条件的值vy(lban+3)作为高速缓存数据而存储在缓冲存储器90中。

因此,能够防止将不完全数据(此处的值vx等)及不使用数据等作为高速缓存数据而取得。从而,对于该不完全数据及不必要数据的碎片等无用数据,无需准备缓冲存储器90的高速缓存区域。具体来讲,如图3所示,值vx是由3个lba(lban-3~lba-1)的3个数据所组成。因此,在仅读取值vx中的1个数据或2个数据的情况下,该数据是未包含构成值vx的全部数据的不完全数据,且是无需存储在缓冲存储器90中的无用数据。如此,根据第1实施方式,无需使所述无用数据存储在缓冲存储器90中,例如,能够在有限的缓冲存储器90的高速缓存容量内期待比特率的提高等,从而能够使读取高速缓存处理效率化。

图9所示的比较例与第1实施方式相比,是以扇/块为单位的指令管理。因此,非常难以判定作为高速缓存而读取的数据是否会在之后被使用。例如,如图9所示,对于像位于lban-3~lban-1的不完全数据、或位于lban+4~lban+7的超出缓冲存储器的阈值这样的不使用数据,也需要准备缓冲存储器的存储区域。如此,明白了在比较例的读取高速缓存处理的情况下,图9所示的读取磁头的读取范围crc大于第1实施方式的读取范围cr1(crc>cr1),缓冲存储器的高速缓存区域的无用范围变大。

(2)能够削减缓冲存储器90的高速缓存容量,能够削减缓冲存储器90的专有面积。

如上所述,根据第1实施方式的存储系统1a,能够不浪费地仅使有效的值(数据)v存储在缓冲存储器90中。因此,能够削减缓冲存储器90的高速缓存容量,在能够削减缓冲存储器90的专有面积的点上也有利。

(变化例1)

对变化例1的存储系统1a的动作进行说明。在该说明中,存储系统1a的构成实质上与第1实施方式相同,因此省略它的详细说明。

[动作]

读取(读取高速缓存)处理

使用图10至图13,对存储系统1a的读取(读取高速缓存)处理进行说明。变化例1是对寻道完成后的读取磁头15r的位置比作为读取数据的值vn的位置靠前的情况的一例进行说明。在该情况下,能够进行值vn前面的值的读取高速缓存。

如图10所示,变化例1的存储系统1a的读取及读取高速缓存处理在进而进行读取高速缓存处理1(步骤s27及s28)的点上,与第1实施方式不同。

首先,在步骤s13中,在所述寻道完成后,hdd1从磁盘10的目标磁道19读取值v。在变化例1的情况下,如图11所示,寻道完成后的读取磁头15r的位置比作为读取数据的值vn的位置靠前。因此,hdd1的mpu60参照表格t1,利用读取磁头15r而从磁盘10的目标磁道19读取lban-3~lban-1的值vx。

在步骤s27中,hdd1参照所要读取的值v的键k,而对所参照的键k中所示的值v是否全部包含在缓冲存储器90中进行判定。具体来讲,hdd1的cpu55参照在易失性存储器70中展开的键管理信息71(图4),基于构成键kx的构成数据中表示值vx的构成块的数量的信息(第1信息)num,而对值vx是否全部包含在缓冲存储器90中进行判定。在不满足步骤s27的条件的情况下(s27中为否),hdd1反复实施步骤s27的处理直到将读取请求所涉及的值v读取为止。

这时,如变化例1般,在从图11所示的位置(lban-4的中途且lban-3之前)开始读取高速缓存处理1的情况下,cpu55参照键管理信息71,基于信息(第1信息)numx的值即“3”,而判定值vx(lban-3~lban-1)全部包含在缓冲存储器90中,该信息numx表示构成键kx的值vx的构成块的数量。这意味着信息numx所表示的构成块的数量“3”与由主机200指定而读取的块的数量“3”一致(3个块)。因此,cpu55可以判定能够读取构成值vx的全部数据。

在步骤s28中,在满足步骤s27的条件的情况下(s27中为是),使该值v存储在缓冲存储器90中。结果,例如,如图12所示,能够使满足步骤s27的条件的vx(lban-3~lban-1)作为高速缓存数据而存储在缓冲存储器90中。

然后,存储系统1a进行与所述第1实施方式相同的读取处理及读取高速缓存处理2(步骤s15至s18)。结果,在变化例1中,如图13所示,能够使位于作为读取数据的值vn(lban~lban+2)的前后的高速缓存数据vx(lban-3~lban-1)及高速缓存数据vy(lban+3)存储在缓冲存储器90中。

[作用效果]

如以上所说明的那样,根据变化例1的存储系统1a的构成及动作,至少能够获得所述(1)及(2)的效果。变化例1的存储系统1a进而执行图10所示的读取高速缓存处理1(步骤s27及s28)。

因此,如图13所示,能够使位于作为读取数据的值vn(lban~lban+2)的前后的高速缓存数据vx(lban-3~lban-1)及高速缓存数据vy(lban+3)存储在缓冲存储器90中。如此,通过使位于作为读取数据的值vn的前后的值vx及vy作为高速缓存数据而存储在缓冲存储器中,在能够进而期待比特率的提高的点上有利。

(第2实施方式)

对第2实施方式的存储系统1b进行说明。在该说明中,省略与所述第1实施方式重复的部分的详细说明。

[构成]

存储系统

如图14所示,第2实施方式的存储系统1b在不含主机(桥接部)200,且由存储装置100的cpu55包含kv管理部220、api230、及kv管理表240的点上,与第1实施方式不同。

其他构成与第1实施方式实质上相同,因此省略它的详细说明。

[动作]

读取(读取高速缓存)处理

第2实施方式的存储系统1b的读取及读取高速缓存处理在由存储装置100进行主机200所进行的处理(例如,图5的s11等)的点上,与第1实施方式不同。

其他动作实质上与第1实施方式相同,因此省略它的详细说明。

[作用效果]

如以上所说明的那样,根据第2实施方式的存储系统1b的构成及动作,至少能够获得所述(1)及(2)的效果。进而,第2实施方式的存储系统1b不含主机(桥接部)200,且由存储装置100的cpu55包含kv管理部220、api230、及kv管理表240。

因此,存储系统1b的各存储装置100能够直接连接于网络301。从而,存储系统1b的各存储装置100具有作为目标存储系统1b的各节点的功能,能够直接与用户端300进行部分通信。如此,能够根据需要而应用存储系统1b。

(第3实施方式)

对第3实施方式的存储系统1进行说明。在该说明中,省略与所述第1、第2实施方式重复的部分的详细说明。此处,对kv型存储系统1的构成、put(写入)动作、及get(读取)动作的概略进行说明。

[构成]

存储系统

如图15所示,存储系统1是以能够使用ip等网络301从外部的用户端300利用api而加以访问的方式构成。存储系统1是以包含数据v、及用来识别该数据v的标识符k的数据群(目标)为单位而管理从用户端300传送来的数据。在这种kv型存储系统中,任意尺寸的标识符键k、及与该键k相关联的任意尺寸的数据v存储在存储装置100中。根据所述构成,若用户端300指定键k,则能够put(写入)、get(读取)、及delete(删除)与键k相关联的值v。

存储系统1进而包含多个存储装置100(ssd1、ssd2…hdd1、hdd2、hdd3…),且利用kv管理部220而管理这些存储装置。

ssd的读取速度vssd比hdd的读取速度vhdd快(vssd>vhdd)。另一方面,ssd的数据容量cssd比hdd的数据容量chdd小(cssd<chdd)。如下所述,存储系统1利用基于存储装置的特性的所述关系,而进行动作。

另外,存储系统1的构成并不限于图16所示的构成。例如,存储系统1也可以进而包含管理部等,该管理部对存储与键k对应的数据v的存储装置100是哪一个这样的键构成进行管理。

[动作]

put(写入)处理

如图16所示,在进行put(写入)处理的情况下,用户端300向主机200发送键k与值v配对的put请求即put(k,v)。

继而,主机200的kv管理部220基于所接收到的put(k,v),而向ssd1及ssd2写入键k,并向hdd1及hdd2写入键k及值v的组(k,v)。这样操作,存储着同一个键k的ssd1、ssd2、及存储着同一个组(k,v)的hdd1、hdd2也可以形成指定的raid(redundantarrayofindependent[inexpensive]disks,独立[廉价]磁盘冗余阵列)群组。

继而,kv管理部220将键k及组(k,v)与存储该键k及组(k,v)的存储装置(ssd1、ssd2、hdd1、hdd2)100的对应关系存储在kv管理表240中。

继而,kv管理部220也可以将put处理已经完成的旨意响应给用户端300。

通过所述处理,在存储装置100中存储put请求所涉及的组(k,v)。

get(读取)处理

如图17所示,在进行get(读取)处理的情况下,用户端300将与所期望的值v对应的键k(get(k))发送到存储系统1而作为get请求。

接收到键k的kv管理部220参照表示键k与被写入该键k的ssd的关系的kv管理表240,检索例如存储在ssd1中的键k而获得键k,并获得作为键k结构的例如entry结构体等。

继而,kv管理部220从作为存储装置100的hdd1读取值v,该值v存储在entry结构体所表示的hdd1的指标所示的位置。

继而,kv管理部220将读取的值v发送到用户端300,而响应用户端300。

另外,在kv管理部220检索存储在ssd1及ssd2中的键但未检索到目标键的情况下,kv管理部220也可以对用户端300响应错误响应或无配对的值v的意旨。

[作用效果]

如以上所说明的那样,根据第3实施方式的存储系统1的构成及动作,至少能够获得所述(1)及(2)的效果。

进而,如上所述,第3实施方式的存储系统1能够指定可变长度的键k而进行可变长度的值v的写入及读取。因此,能够处理非结构化数据,从而能够使软件构成简略化。

主机(桥接部)200的kv管理部220统括地管理存储装置100。因此,就算构成大规模存储装置,也能够削减用来管理存储装置100的管理服务器的数量或无需管理服务器。因此,存储系统1对于低tco(totalcostofownership,总体拥有成本)化及高性能化有利。

存储系统1统括地控制响应速度及容量不同的ssd或hdd等多种存储装置。因此,无需选择与处理目的相符的存储装置。

进而,存储系统1通过利用ssd的读取速度vssd与hdd的读取速度vhdd的关系(vssd>vhdd)、及ssd的数据容量cssd与hdd的容量chdd的关系(cssd<chdd),能够使put处理及get处理效率化。例如,在put处理中,kv管理部220通过将尺寸较大的值v写入到hdd1、hhd2,能够满足put请求。例如,在get处理中,kv管理部220通过从读取速度较快的ssd1、ssd2检索键k,能够在用户端300的既定的响应速度内满足get请求。

已对本发明的若干实施方式进行了说明,但这些实施方式是作为例子而提出的,并非意图限定发明的范围。这些新颖的实施方式能以其他各种方式实施,且能够在不脱离发明主旨的范围内进行各种省略、替换、变更。这些实施方式及其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1