存储装置及存储装置的控制方法与流程

文档序号:14571839发布日期:2018-06-01 22:41阅读:154来源:国知局
存储装置及存储装置的控制方法与流程

技术领域

本发明涉及将数据压缩后保存的存储装置及其控制方法。



背景技术:

由于IT的进步、因特网的普及等,企业等中的计算机系统所要处理的数据量持续增加。另一方面,想要削减IT系统成本的需求也升高,从用户角度,谋求一种高性能且低价格的系统。

在存储装置的情况下,存储装置所使用的存储介质占用了大多成本。因此,存储介质的低成本化成为重要课题。对于存储介质的低成本化,除采用便宜的(低比特成本的)存储介质的方法以外,还存在通过将保存数据压缩而由存储介质保存更多数据的方法。在将数据以压缩于存储介质的状态保存到存储装置中的情况下,不会在访问存储装置的主机计算机或应用程序中意识到数据被压缩后保存,即,关于透明地(transparent)进行数据压缩,从便利性的观点出发是重要的。另外,关于极力避免访问性能降低,在实用上也是重要的。例如在专利文献1中公开了如下系统,将数据(非压缩数据)分割成多个单元并按每个单元进行压缩,将压缩后的各单元(压缩单元)保存于LU(逻辑单元),读取时不需要对LU整体进行读取,仅通过读取必要的单元就能够访问必要的数据。

现有技术文献

专利文献

专利文献1:美国专利申请公开第2011/0219153号说明书



技术实现要素:

在将压缩数据保存于最终存储介质的结构的情况下,关于更新数据的压缩结果,存在该更新数据的压缩数据的大小变得大于或小于更新前数据的压缩数据的大小的情况。因此,无法单纯将更新后数据的压缩数据盖写于更新前的压缩数据的保存区域。在专利文献1所记载的技术中,在数据更新时,进行先读取更新前数据并将其解压缩,然后对解压缩数据盖写更新数据的处理。另外,在更新后的压缩数据的大小变得大于更新前的压缩数据的情况下,进行搜寻未使用的存储区域并保存没有全部保存于更新前的压缩数据的保存区域而剩下的部分数据的处理。因此,数据更新时的处理开销(over head)大。

本发明的目的在于提高保存压缩数据的存储装置的处理性能。

在本发明的实施例的存储装置中,对上级装置提供不与最终存储介质具有直接对应关系(映射)的解压缩VOL,在上级装置中进行对解压缩VOL的访问。而且将写入于解压缩VOL的数据在高速缓冲存储器中进行在线压缩,将压缩后的数据保存到与最终存储介质直接建立了对应的卷(压缩VOL)中。另外通过维持解压缩VOL的(保存有非压缩数据的)区域与压缩VOL的(保存有压缩数据的)区域之间的映射信息,在从上级装置有对解压缩VOL的读请求时,也会基于映射信息,将由读请求指定的解压缩VOL上的位置信息向最终存储介质(与压缩VOL建立了对应的存储介质)的位置信息变换,从最终存储介质读取压缩数据。然后将压缩数据在高速缓冲存储器中解压缩并向上级装置传送。

另外在本发明中,其特征在于,在作为存储装置的高速缓冲装置而动作的高速缓冲存储器的内部,进行数据压缩并生成针对压缩后的压缩数据的RAID Parity。

发明效果

根据本发明,在存储装置中,在将从服务器接收的写数据压缩后记录于HDD时,将写入于解压缩VOL的数据在高速缓冲存储器中在线压缩,将压缩后的数据以追写要领保存于与最终存储介质建立了直接对应的卷(压缩VOL)中,由此在数据更新时不需要进行复杂的处理。另外通过维持解压缩VOL的(保存有非压缩数据的)区域与压缩VOL的(保存有压缩数据的)区域之间的映射信息,在从上级装置有对解压缩VOL的读请求时,也会基于映射信息,将由读请求指定的解压缩VOL上的位置信息向最终存储介质(与压缩VOL建立了对应的存储介质)的位置信息变换,并从最终存储介质读取压缩数据,因此,能够实现与对通常的(保存时不进行压缩的)卷进行访问时同等的访问性能。

附图说明

图1是本发明的存储装置的动作概念图。

图2是表示本发明的存储装置(存储系统)的结构图。

图3是表示高速缓冲存储器的内部结构图。

图4是模拟地表示本实施例的高速缓冲存储器向存储控制器提供的逻辑区域LBA0、LBA1与物理区域PBA的对应建立的概念图。

图5是表示本实施例中的高速缓冲存储器26所支持的写指令和相对于该写指令的响应信息的图。

图6是表示本实施例中的高速缓冲存储器26所支持的读指令和向该读指令的响应信息的图。

图7是表示本实施例中的高速缓冲存储器26所支持的全条带Parity(奇偶校验位)生成指令和向全条带Parity生成指令的响应信息的图。

图8是表示本实施例中的高速缓冲存储器26所支持的更新Parity生成指令和向更新Parity生成指令的响应信息的图。

图9是表示本实施例中的高速缓冲存储器26所支持的LBA1映射指令和对该LBA1映射指令的响应信息的图。

图10是表示本实施例中的高速缓冲存储器26所支持的LBA0映射指令和向该LBA0映射指令的响应信息的图。

图11是表示本实施例中的高速缓冲存储器26所支持的压缩数据大小获取指令和向该压缩数据大小获取指令的响应信息的图。

图12是表示本实施例中的高速缓冲存储器26所支持的映射解除指令和向该映射解除指令的响应信息的图。

图13是表示解压缩VOL管理表的内容的图。

图14是表示压缩VOL管理表的内容的图。

图15是表示解压缩VOL与压缩VOL的关系的概念图。

图16是表示压缩VOL和与压缩VOL对应的最终存储介质的对应关系的概念图。

图17是表示卷映射表的内容的图。

图18是表示地址映射表的内容的图。

图19是表示本发明的实施例中的卷、槽、高速缓冲段之间的关系的概念图。

图20是存储装置所管理的高速缓冲管理数据结构的概念图。

图21是表示高速缓冲目录、SLCT、SGCT之间的关系的图。

图22是表示脏队列或干净队列的数据结构的图。

图23是表示空闲队列的数据结构的图。

图24是表示本实施例中的写处理中的、将从主机计算机接收到的写数据保存到高速缓冲存储器的处理的流程图。

图25是表示本实施例中的向压缩VOL的数据转移处理的流程图。

图26是表示本实施例中的转储处理的流程图。

图27是表示从主机计算机接受对卷(解压缩VOL)的读请求时的处理的流程图。

图28是表示从主机计算机接受对卷(解压缩VOL)的读请求时的处理的流程图。

图29是表示本发明的变形例1中的存储装置所管理的压缩VOL、逻辑卷(LDEV)、最终存储介质(PDEV)之间的关系的概念图。

图30是表示HVOL管理信息的内容的图。

图31是表示页映射表的内容的图。

图32是表示页空闲列表的内容的图。

图33是表示本发明的变形例1中的向压缩VOL的数据转移处理的流程图。

图34是表示本发明的变形例1中的向HVOL上的页的区域分配处理的流程图。

图35是表示本发明的变形例2中的卷映射表的内容的图。

具体实施方式

基于附图说明本发明的实施方式。此外,本发明不限定于以下说明的实施方式。此外,作为半导体存储元件而以NAND型闪存器(以下,称为FM)为例进行说明,但本发明不限定于FM,而以全部非易失性存储器为对象。另外,在本实施例中,记述通过专用的硬件电路来实施数据压缩的方式,但本发明不限定于该方式,也可以通过基于通用处理器实现的数据压缩运算处理来压缩数据。另外,在本实施例中,记述通过专用的硬件电路来实施奇偶校验位(冗余数据)的方式,但本发明不限定于该实施例,也可以通过基于通用处理器实现的奇偶校验位生成运算处理来生成RAID Parity。

首先,关于本发明的概要,使用图1进行说明。在本发明的存储装置1中,将从主机计算机3写入的数据压缩后保存到作为最终存储介质的SSD(Solid State Drive:固态驱动器)11或HDD(Hard Disk Drive:硬盘驱动器)12中,但由于压缩后的数据大小根据数据内容而变动,所以难以唯一地确定数据保存位置。因此,存储装置1生成两种逻辑卷并进行管理。第1种逻辑卷是向主机计算机3提供的逻辑卷,被主机计算机3认知为在该逻辑卷中保存有非压缩数据。第2种逻辑卷是无法由主机计算机3认知的逻辑卷,该逻辑卷在存储控制器10将压缩数据保存于最终存储介质(SSD11或HDD12)时使用。以下,将该第1逻辑卷称作“解压缩VOL”,将第2逻辑卷称作“压缩VOL”。

解压缩VOL(图1的“解压缩VOL5000”)仅用于向主机计算机3提供逻辑性的(虚拟的)存储区域,不存在与解压缩VOL上的各地址对应的物理存储区域(作为最终存储介质的SSD11或HDD12的存储区域)。另一方面,压缩VOL(图1的“压缩VOL5500”)是(压缩VOL上的)各存储区域与作为最终存储介质的SSD11或HDD12的存储区域以1:1建立了对应的卷。本发明的存储装置1将多个(例如四台)最终存储介质作为一个RAID组而进行管理,将该一个RAID组的各存储区域与压缩VOL的各存储区域建立对应。

当从主机计算机3对解压缩VOL发送数据的写请求及写数据后,写数据被保存到高速缓冲存储器26上。本发明的高速缓冲存储器26具有压缩功能,在高速缓冲存储器26上保存写数据时,以压缩的状态进行保存。另外,在读取(输出)高速缓冲存储器26上的压缩数据时,也能够通过压缩功能将数据以解压缩的状态读取,不对主机计算机3表现(不使主机计算机认知)数据被压缩而保存的状态。

本发明的目的为,由于将数据以压缩的状态保存到最终存储介质中,所以将保存于高速缓冲存储器26的压缩数据以压缩的状态直接写入到最终存储介质中。在本发明的存储装置1中采取如下结构:不将更新数据写入到与更新前数据的保存区域相同的区域,而将其追写到最终存储介质11(12)。另外,为了保存、管理压缩数据,准备与解压缩VOL不同的其他卷(压缩VOL5500),并进行将写入于解压缩VOL的数据(实体仅保存于高速缓冲存储器26)模拟地移动到压缩VOL5500的处理。

解压缩VOL上的区域与压缩VOL的区域之间没有固定的对应关系,在从解压缩VOL向压缩VOL移动数据时,压缩VOL上的数据保存位置动态地确定。作为一例,在解压缩VOL中随机地写入数据a、b、c、d、e的情况下,存储装置1进行将写入于解压缩VOL的数据向压缩VOL上的区域移动(建立对应)的处理,但此时,在向最终存储介质写入数据之前进行的RAID奇偶校验位生成处理时,在压缩VOL上以将数据a、b、c、d、e从压缩VOL的排头以追写要领写入的方式逐步建立对应,从而不需要读取更新前数据。写入于解压缩VOL上的各数据在压缩VOL上的存储位置由卷间映射表650管理。在压缩VOL中将数据a、b、c、d、e(的压缩数据)建立对应后,通过RAID技术从该数据生成冗余数据(奇偶校验位),并将数据(压缩数据)和奇偶校验位向构成压缩VOL的最终存储介质写入。

在不将数据压缩而保存的普通存储装置中,在接受到对卷的数据更新请求和更新数据时,在该更新数据的更新前数据的保存区域中将该更新数据盖写而保存。但是,在将压缩数据保存于最终存储介质的结构的情况下,关于更新数据的压缩的结果,也存在该更新数据的压缩数据的大小变得大于更新前数据的压缩数据的大小的情况。因此,对最终存储介质盖写时的处理变得复杂化,而处理性能恶化。

在本发明的实施例的存储装置中,对主机计算机等上级装置,提供与最终存储介质没有直接对应关系(映射)的解压缩VOL,使上级装置进行对解压缩VOL的访问。然后将写入于解压缩VOL的数据通过高速缓冲存储器在线压缩,并将压缩后的数据以追写要领保存到与最终存储介质建立了直接对应的压缩VOL中,由此不会产生数据更新时的处理开销。另外,通过维持保存有非压缩数据的解压缩VOL的区域与保存有压缩数据的压缩VOL的区域之间的映射信息,在有从上级装置对解压缩VOL的读请求时,也会基于映射信息,将由读请求指定的解压缩VOL上的位置信息向压缩VOL的位置信息变换,从压缩VOL(最终存储介质)读取压缩数据,然后将压缩数据在高速缓冲存储器中解压缩并向上级装置传送,由此,能够缩短响应时间。

另外,虽然在后详细说明,但通过对压缩VOL采用自动精简配置(Thin Provisioning)技术而能够提高容量效率、实现低价格的系统。

另外,虽然在后详细说明,但通过考虑解压缩VOL上的数据配置而向压缩VOL移动数据,能够提高时序访问性能。

【实施例】

图2是表示本发明的实施例的存储装置(存储系统)的结构图。

存储装置1具有一个以上的存储控制器10(以下,也存在简记为“控制器10”的情况)。各控制器10具有用于与主机计算机(上级装置)3连接的主机接口(在图中记作“主机I/F”)24、和用于将记录装置连接的盘接口(在图中记作“盘I/F”)23。主机接口24使用例如与FC(Fibre Channel:光纤通道)、iSCSI(internet Small Computer System Interface:互联网小型计算机系统接口)、FCoE(Fibre Channel over Ether:以太网光纤通道)等协议对应的设备,盘接口107使用例如与FC、SAS(Serial Attached SCSI:串行连接SCSI)、SATA(Serial Advanced Technology Attachment:串行高级技术附件)、PCI(Peripheral Component Interconnect:外设部件互连标准)-Express等各种协议对应的设备。另外,以后,也存在将主机接口24称作“端口24”的情况。而且,存储控制器10具有处理器(在图中记作“MPU”)21和DRAM25等硬件资源,在处理器21的控制下,根据来自主机计算机3的读/写请求,而进行向SSD11和/或HDD12等最终存储介质的读/写请求。另外,在内部具有高速缓冲存储器26,能够由处理器21经由内部开关(在图中记作“内部SW”)22来控制高速缓冲存储器26。另外,还具有用于在存储控制器10间使数据和控制信息相互通信的节点(node)I/F27。

存储装置1和管理装置4经由网络而连接。作为该网络的传输介质,使用例如以太网(注册商标)等。此外,在图2为了简化而省略,但该网络与存储装置1内部的各存储控制器10连接。此外,该网络也可以通过与SAN2相同的网络而连接。

管理装置4是具有处理器、存储器,网络接口、本地输入输出设备等硬件资源、和管理程序等软件资源的计算机。在管理装置4中,管理程序动作,通过执行该管理程序而从存储装置1获取信息,另外,提供系统管理者的管理操作用的GUI。系统管理者使用该管理操作用的GUI,进行存储装置1的卷的生成和存储装置1的监视等操作。

SSD11、HDD12分别在存储装置1内存在多个(例如16个),并经由盘接口23与存在于相同存储装置内的多个存储控制器10连接。SSD11、HDD12根据来自存储控制器10的写请求而保存传送来的数据,并根据读请求读取已保存的数据并向存储控制器10传送。此外,此时盘接口107通过逻辑块地址(Logical Block Address。以下称作“LBA”)来指定数据的读/写位置。另外,存储装置1构成为,将多个SSD11、HDD12以规定台数(例如4台、8台、16台等)为单位作为RAID组而进行管理,即使在RAID组内的1台(或2台)盘发生故障的情况下,也能够实现数据的复原。

主机计算机(上级装置)3具有处理器、存储器、网络接口、本地输入输出设备等硬件资源,还具有设备驱动器和操作系统(OS)、应用程序等软件资源。由此,主机计算机3通过在处理器的控制下执行各种程序,而进行与存储装置108的通信及数据的读/写请求。另外,通过在处理器的控制下执行各种程序,而获取存储装置1的使用状况、动作状况等管理信息。另外,能够指定记录装置的管理单位或/和记录装置控制方法、数据压缩设定等而进行变更。

接下来,使用图3说明高速缓冲存储器26的内部结构。

本发明的实施例中的高速缓冲存储器26将闪存器(Flash Memory)作为存储介质而使用。高速缓冲存储器26在内部具有FM控制器(FM CTL)410和多个(例如32个)FM420。

FM控制器410在其内部具有处理器415、RAM413、数据压缩/解压缩单元418、Parity生成单元419、数据缓冲器416、I/O接口(I/F)411、FM接口417及相互进行数据传送的开关414。

I/O接口411与存储装置1内的存储控制器10所具有的内部开关22连接,并经由开关414与FM控制器410的各部位连接。I/O接口411用于从存储装置1内的存储控制器10所具有的处理器21接受对高速缓冲存储器26的各种指令、或进行数据传送。

处理器415经由开关414与FM控制器410的各部位连接,并基于记录在RAM413中的程序及管理信息对FM控制器410整体进行控制。数据缓冲器416用于暂时保存基于FM控制器410进行的数据传送处理中途的数据。

FM接口(I/F)417通过多条总线(例如16条)与FM420连接。在各总线上连接有多个(例如两个)FM420。

数据压缩/解压缩单元418具有处理可逆压缩算法的功能。数据压缩/解压缩单元418根据来自处理器415的指示,将从I/O接口411到来且要写入FM420的数据压缩,或者将要从FM420向I/O接口411送出的数据解压缩。此外,数据压缩/解压缩单元可以作为逻辑电路而安装,也可以通过由处理器对压缩/解压缩的程序进行处理而实现同样的功能。

Parity生成单元419具有生成在RAID技术中所需的冗余数据的奇偶校验位的功能,具体地说,具有通过RAID5、6等中使用的XOR(异或)运算、RAID6中使用的里所(RS:Reed-Solomon)码或EVENODD法而计算出的对角奇偶校验位(Diagonal Parity)的生成功能。

以上说明的开关414、盘接口411、处理器415、数据缓冲器416、FM接口417、数据压缩/解压缩单元418、Parity生成单元419可以作为ASIC(Application Specific Integrated Circuit:专用集成电路)或FPGA(Field Programmable Gate Array:现场可编程门阵列),在一个半导体元件内构成,也可以是将多个单独专用IC(Integrated Circuit:集成电路)相互连接而成的结构。

关于RAM413,具体地说可列举DRAM等易失性存储器。RAM413保存在高速缓冲存储器26内使用的FM420的管理信息、包含各DMA使用的传送控制信息在内的传送列表等。此外,也可以成为使保存数据的数据缓冲器416的一部分或全部功能包含于RAM413、并将RAM413用于数据保存的结构。

此外,在本实施例中如图3所示,对搭载有闪存器(Flash Memory)的高速缓冲存储器26进行了记述,但搭载于高速缓冲存储器26的存储介质不限定于闪存器。也可以是Phase Change RAM(相变RAM)或Resistance RAM(阻抗RAM)。另外,也可以是使FM420的一部分或全部为易失性RAM(DRAM等)的结构。

接着,说明本实施例中的高速缓冲存储器26对存储控制器10提供的存储空间。

本实施例中的高速缓冲存储器26对自身所连接的存储控制器10(的处理器21)提供逻辑性的存储空间。在此,“提供存储空间”是指,相对于存储控制器10而事先向访问的各存储区域附加地址,高速缓冲存储器26所连接的存储控制器10的处理器21发出指定了该地址的访问请求(指令),由此成为能够对由该地址特定的区域中保存的数据进行参照、更新的状态。高速缓冲存储器26的处理器415将由FM420构成的物理存储区域与仅在高速缓冲存储器26内部使用的一维的地址空间唯一地建立对应而进行管理。以后,将该仅在高速缓冲存储器26内部使用的物理区域指定用地址空间(物理地址空间)称作PBA(Physical Block Address:物理块地址)空间,将PBA空间内的各物理存储区域(扇区。在本发明的实施例中,1扇区为512字节)的位置(地址)记作PBA(Physical Block Address)。

以往的SSD等存储装置对存储装置所连接的上级装置(主机计算机等)提供一个存储空间。另一方面,本实施例的高速缓冲存储器26的特征在于,对高速缓冲存储器26所连接的存储控制器10提供两个逻辑存储空间。使用图4说明这两个逻辑存储空间与PBA空间的关系。

高速缓冲存储器26提供LBA0空间701和LBA1空间702这两个逻辑存储空间。此外,以后,将对LBA0空间701上的各存储区域赋予的地址称作“LBA0”或“LBA0地址”,将对LBA1空间702上的各存储区域赋予的地址称作“LBA1”或“LBA1地址”。另外,在本发明的实施例中,LBA0空间701的大小及LBA1空间702的大小均为PBA空间的大小以下,但在LBA0空间701的大小大于PBA空间的大小的情况下本发明也是有效的。LBA0空间701是用于使记录于物理存储区域的压缩数据成为非压缩数据而供存储控制器10的处理器21访问的逻辑区域。当处理器21指定LBA0空间701上的地址(LBA0)并向高速缓冲存储器26发出写请求时,高速缓冲存储器26从存储控制器10获取写数据,通过数据压缩/解压缩单元418压缩后,将数据记录到通过由高速缓冲存储器26动态地选择的PBA而指定的FM420上的物理存储区域,将LBA0与PBA建立对应。另外,当处理器21指定LBA0并向高速缓冲存储器26发出读请求时,高速缓冲存储器26从与LBA0建立了对应的PBA所示的FM420的物理存储区域获取数据(压缩数据),通过数据压缩/解压缩单元418解压缩后,将该解压缩后的数据作为读数据而向存储控制器10传送。关于该LBA0与PBA之间的变换,在RAM413上保持LBA0与PBA的对应关系的管理信息,并使用该管理信息而实现。

LBA1空间702是用于将由FM420构成的物理存储区域中记录的压缩数据以压缩数据的状态(不解压缩)而供存储控制器10访问的逻辑区域。当处理器21指定LBA1并向高速缓冲存储器26发出写请求时,高速缓冲存储器26通过存储控制器10而获取数据(已压缩的写数据),并将数据记录到通过由高速缓冲存储器26动态地选择的PBA而指定的FM的存储区域中,将LBA1与PBA建立对应。另外,当处理器21指定LBA1并发出读请求时,高速缓冲存储器26通过与LBA1建立了对应的PBA所示的FM420的物理存储区域获取数据(压缩数据),并将已压缩的数据作为读数据而向存储控制器10传送。此外,关于该LBA1与PBA之间的变换,也在RAM413上保持LBA1与PBA的对应关系的管理信息,并使用该管理信息而实现。

此外,如图4所示,也存在表示记录有压缩数据713的物理存储区域的PBA空间同时与LBA0空间的区域和LBA1空间的区域双方建立对应的情况。例如,压缩数据713的解压缩后的数据作为解压缩数据711而建立对应,压缩数据713的非解压缩的数据作为压缩数据712而建立对应。该对应建立根据来自存储控制器10的指示而进行。例如当处理器21指定LBA0(假设LBA0为0x00000001000)并向高速缓冲存储器26写入数据时,该数据通过高速缓冲存储器26内的数据压缩/解压缩单元418而压缩,压缩后的数据配置于由高速缓冲存储器26动态地选择的PBA空间上(具体地说,FM420的多个页中的某一未写入页),另外将该数据以与LBA0空间的地址0x00000001000建立了对应的状态进行管理。然后,关于与0x00000001000建立了对应的数据,处理器21通过向高速缓冲存储器26发出与LBA1空间的地址(假设为0x80000000010)建立对应的请求,将该数据也与LBA1空间建立对应,当处理器21对高速缓冲存储器26发出读取LBA1地址0x80000000010的数据的请求(指令)时,处理器21能够将自身对LBA0地址0x00000001000写入的数据以压缩的状态读取。

此外,在本实施例的高速缓冲存储器26中,将由存储控制器10的处理器21进行写指示的非压缩数据以4KB单位压缩。例如在从处理器21有将LBA0空间的地址(0x000_0000_0000)作为开始地址的8KB的数据(非压缩数据)的写请求的情况下,以(LBA0空间的)地址范围0x000_0000_0000~0x000_0000_0007的4KB的数据为单位进行压缩而生成压缩数据,接着以地址范围0x000_0000_0008~0x000_0000_000F的4KB的数据为单位进行压缩而生成压缩数据,并将各个压缩数据写入到FM420的物理存储区域中。不过,本发明不限定于将数据以4KB单位压缩的方式,即使是以其他单位对数据进行压缩的结构,本发明也是有效的。

另外,所生成的压缩数据的大小限定于512字节(1扇区)的倍数大小,另外,其大小不超过非压缩数据的大小。即,在对4KB的数据进行了压缩的情况下,最小大小为512字节,最大大小为4KB。

接下来,说明适用本发明的高速缓冲存储器26所使用的指令。本实施例中的高速缓冲存储器26当从存储控制器10的处理器21受理指令后,对该受理的指令的内容进行解析并进行规定的处理,处理完成后将响应(响应信息)回复于存储控制器10。此外,在指令中包含为了使高速缓冲存储器26进行规定的处理而需要的信息的集合,例如若为对高速缓冲存储器26指示写入数据的写指令,则在指令中包含表示该指令为写指令的信息及执行写处理所需要的信息(写数据的写入位置和数据长度等)。高速缓冲存储器26支持多种指令,但首先对各指令共同的信息进行说明。

在各指令中,作为共同的信息,在排头包含操作码(Opcode)和指令ID这一信息。而且在指令ID之后,对各指令附加固有信息(参数)而形成一条指令。例如图5是表示本实施例中的高速缓冲存储器26的写指令的格式、和相对于该写指令的响应信息的格式的图,但图5的要素(字段)1011是Opcode,要素1012是指令ID。而且要素1013以后的各信息是写指令所固有的参数。另外,作为各指令的处理完成后回复的响应信息,指令ID和状态(Status)是全部响应信息共同包含的信息,也存在在状态之后附加各响应信息所固有的信息的情况。

操作码(Opcode)是用于向高速缓冲存储器26通知指令的类别的信息,获取指令后的高速缓冲存储器26通过参照该信息,而认知通知的指令的种类。例如在为写指令的情况下,确定为0x01这一Opcode,在为读指令的情况下,确定为0x02这一Opcode。

指令ID是保存指令的固有ID的字段,在指令的响应信息中,为了使存储控制器10认知是相对于哪个指令的响应信息,而对该字段赋予所指定的ID。存储控制器10在指令生成时,生成能够唯一识别指令的ID后,生成在该指令ID的字段中保存了该ID的指令,并将指令向高速缓冲存储器26发送。而且,在高速缓冲存储器26中,当与接收到的指令对应的处理完成时,将该指令的指令ID包含于响应信息而向存储控制器10回复。存储控制器10在接受到该响应信息时,获取该响应信息所包含的ID,由此认知该指令的完成。另外,响应信息所包含的状态(图5的要素1022)是保存有表示指令的处理是否正常完成的信息的字段。在指令的处理没有正常完成(错误)的情况下,在状态中保存例如能够识别错误原因等的编号。

(1)写指令

图5是表示本实施例中的高速缓冲存储器26的写指令和相对于该写指令的响应信息的图。本实施例中的高速缓冲存储器26的LBA0写指令2010作为指令信息而由操作码1011、指令ID1012、LBA0/1开始地址1013、LBA0/1长度1014、需否压缩标志1015、写数据地址1016构成。此外,在本实施例中,记述了由上述信息构成的指令的例子,但也可以具有上述以外的附加信息。例如,也可以对指令赋予与DIF(Data Integrity Field:数据完整性字段)等相关联的信息。

LBA0/1开始地址1013是指定写目的地的逻辑空间的排头地址的字段。此外,本发明的实施例中的LBA0空间是从地址0x000_0000_0000至0x07F_FFFF_FFFF的范围的空间,由于LBA1空间被定为地址0x800_0000_0000以后0x的空间,所以高速缓冲存储器26在写指令的LBA0/1开始地址1013中保存有从0x000_0000_0000至0x07F_FFFF_FFFF的范围的地址的情况下,认知为指定了LBA0空间的地址,在指定了0x800_0000_0000以后的地址的情况下,认知为指定了LBA1空间的地址。关于是否仅指定了遵循LBA0空间和LBA1空间中的某一地址空间的地址的认知方法,也能够采用以上说明的方法以外的方法。例如也存在根据Opcode1011的内容来识别LBA0空间和LBA1空间的方法等。

LBA0/1长度1014是指定从LBA0/1开始地址1013开始的记录目的地LBA0或LBA1的范围(长度)的字段,保存有以扇区数表示的长度。高速缓冲存储器26进行相对于由上述的LBA0/1开始地址1013和LBA0/1长度1014所特定出的范围的LBA0/1区域而将保存有写数据的PBA区域建立对应的处理。

需否压缩标志1015是指定该指令所指示的写对象数据需否压缩的字段。在本实施例的存储装置1中,在处理器21明确地传达不需要压缩的情况下,由于发出指定了LBA1地址的写指令,所以不使用该需否压缩标志1015。但是在存储控制器10生成写指令时,在事前知道对于从主机计算机3到来的写对象数据不会预见基于数据压缩产生的大小削减效果的(例如认知为既已通过图像压缩等压缩后的数据的情况)情况下,通过使该标志的值为ON(保存“1”),能够对高速缓冲存储器26通知不需要压缩。在该标志为ON的情况下,具有使高速缓冲存储器26不执行压缩的功能。

写数据地址1017和写数据长度1018分别是保存该指令所指示的写对象数据的当前的存储目的地(在本发明的实施例中为DRAM25的地址)的排头地址、以及数据的长度的字段。在写对象数据保存于DRAM25的连续区域的情况下,在写指令中仅保存有一组写数据地址1017和写数据长度1018的组,此时在列表数1016中保存有“1”。另一方面,在写对象数据离散地保存于DRAM25内的多个区域中的情况下,在写指令中保存有多组写数据地址1017和写数据长度1018的组,在列表数1016中,保存有写数据地址1017和写数据长度1018的组保存数量。高速缓冲存储器26通过从该字段指示的DRAM25上的区域获取保存于LBA0/1长度(1014)中的大小的区域的数据而进行写数据的获取。此外,除在写指令中保存多组写数据地址1017和写数据长度1018的组的格式以外,也能够采用其他指令格式。例如,也能够是如下方式:将保存有多个地址(写数据地址1017和写数据长度1018的组)的列表的指针信息(保存有列表的地址(例如DRAM25内的地址))保存到写指令中,高速缓冲存储器26参照该指针信息而获取写数据地址1017和写数据长度1018。

写响应信息1020由指令ID1021、状态1022、压缩数据长度1023构成。指令ID1021和状态1022由于是各指令共同的响应信息而省略说明。压缩数据长度1023是记录写入的数据的压缩后的数据长度的字段。存储控制器10通过获取该字段而能够掌握写入的数据的压缩后的数据大小。另外,在本实施例中,当写目的地(LBA0/1开始地址1013)为LBA1时,由于记录已压缩的数据,所以本字段是无效的。

此外,对于由写指令的LBA0/1开始地址1013、LBA0/1长度1014指定的LBA0空间(或LBA1空间)的区域,存在将PBA建立了对应的情况,也存在没有将PBA建立对应的情况。在没有将PBA建立对应的情况下,高速缓冲存储器26将PBA新建立对应,然后向由该PBA指定的区域写入数据。在将PBA建立了对应的情况下,将由该建立了对应的PBA指定的区域作为未使用区域而进行管理,将新的PBA建立对应,然后向由该PBA指定的区域写入数据。其原因在于,本发明的实施例中的高速缓冲存储器26的存储介质采用闪存器,而闪存器原则上无法盖写(在要盖写的情况下,需要进行将写入了数据的块暂时删除的处理)。而且在作为未使用区域而管理的区域成为固定数量以上的情况(或可写入的页变得不足的情况)下,在高速缓冲存储器26中进行所谓垃圾回收(garbage collection),来生成未写入页。但是,由于这些处理与周知的由使用闪存器的存储设备进行的处理相同,因此在本实施例中省略详细的说明。而且,重点在于,本发明的实施例中的存储控制器10(处理器21)不会认知在高速缓冲存储器26内存储区域通过PBA这一地址空间而管理(不需要认知),对于由写指令的LBA0/1开始地址1013、LBA0/1长度1014指定的LBA0空间(或LBA1空间)的区域,无论是否将PBA建立对应,表面上均能够实现指定了LBA0或LBA1的盖写。

(2)读指令

图6是表示本实施例中的高速缓冲存储器26所支持的读指令和向该读指令的响应信息的图。本实施例中的高速缓冲存储器26的读指令1610,作为指令信息而由操作码1011、指令ID1012、LBA0/1开始地址1613、LBA0/1长度1614、需否解压缩标志1615、读数据地址1616构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。此外,指令ID1012与先前的LBA0写指令内容相同,因此省略说明。

操作码1011是向高速缓冲存储器26通知指令的类别的字段,获取了指令的高速缓冲存储器26认知由该字段通知的指令为读指令。

LBA0/1开始地址1613是指定读目的地的逻辑空间的排头地址的字段。LBA0/1长度1614是指定从LBA0/1开始地址1613开始的记录目的地LBA0或LBA1的范围的字段。高速缓冲存储器26从相对于上述的LBA0或LBA1开始地址1613和LBA0/1长度1614所示的范围的LBA0空间或LBA1空间的区域建立了对应的PBA获取数据,并将获取的数据(根据需要而解压缩)向存储控制器10传送,由此进行读处理。

需否解压缩标志1615是指定该指令所指示的读对象数据需否解压缩的字段。在存储装置生成读指令时,通过控制该标志,向高速缓冲存储器26通知不需要解压缩。此外,该字段也可以不包含于读指令。在本实施例的高速缓冲存储器26的情况下,在指定LBA1而进行读取时,由于不进行获取数据的解压缩,所以需否解压缩标志1615不是必需的。但是作为其他实施方式,也可以是,在高速缓冲存储器26接收到指定了LBA1的读指令时,在需否解压缩标志1615为OFF(0)的情况下将数据解压缩,在需否解压缩标志1615为ON(1)的情况下,不将数据解压缩而进行数据读取。

读数据地址1616被指定了读对象数据的输出目的地区域的排头地址(例如DRAM25内的地址)。被读取的数据成为从由读数据地址1616指定的地址的区域开始连续地保存由LBA0/1长度1614指定的长度的数据。此外,与写指令同样地,也能够是将多组读数据地址1616和数据长度的组指定为读指令的参数,并向离散的区域输出数据的方式。

读响应1620仅包含与其他指令的响应信息共同的信息(指令ID1021、状态1022),因此省略说明。此外,也可以构成为读响应1620中包含共同信息以外的附加信息。

(3)全条带Parity生成指令

在RAID技术中的奇偶校验位的生成方法中大体存在两种。一种为,通过用于生成奇偶校验位而需要的全部数据,进行XOR等奇偶校验位数据的运算而进行奇偶校验位生成的方法,在本说明书中将该方法称作“全条带Parity生成方法”。另一种为,在对构成RAID的存储介质组进行更新数据的写入的情况下,除该更新数据以外,对保存于存储介质的更新前的数据及与该更新前的数据对应的更新前奇偶校验位进行XOR运算等,而生成与更新数据对应的奇偶校验位(更新后奇偶校验位)的方法,在本说明书中将该方法称作“更新Parity生成方法”。图7是表示本实施例中的高速缓冲存储器26所支持的全条带Parity生成指令和向全条带Parity生成指令的响应信息的图。本实施例中的高速缓冲存储器26的全条带Parity生成指令1310,作为指令信息而由操作码1011、指令ID1012、LBA1长度1313、条带数1314、LBA0开始地址0~X(1315~1317)、LBA1开始地址(XOR Parity用)1318、LBA1开始地址(RAID6Parity用)1319构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。

高速缓冲存储器26从Opcode1011字段的内容认知从存储控制器10接受的指令为全条带Parity生成指令。另外,要生成的Parity的种类根据RAID级别而不同。因此,在本实施例的高速缓冲存储器26中,根据Opcode1011的内容而改变要生成的奇偶校验位。例如在对Opcode指定了0x11、0x12、0x13中的任一个的情况下,均进行全条带Parity生成,但在对Opcode指定了0x11的情况下,生成在RAID4、5中使用的一个奇偶校验位(XOR数据),在对Opcode指定了0x12的情况下,生成在RAID6(里所码使用)中使用的两个奇偶校验位(所谓P奇偶校验位和Q奇偶校验位),在对Opcode指定了0x13的情况下,生成在RAID6(所谓EVENODD方式、Row-Diagonal奇偶校验方式)中使用的两个奇偶校验位(水平奇偶校验位、对角奇偶校验位)。

LBA1长度1313是指定要生成的Parity的长度或Parity生成源数据的长度(RAID Parity中,Parity和Parity生成源数据的长度相同)的字段。条带数1314指定用于生成奇偶校验位而使用的数据的个数。例如在对六个数据生成Parity的情况下,在条带数1314中保存6。

LBA1开始地址1315~1317是指定Parity生成源的数据所对应的LBA1的开始地址的字段。该字段的个数与由条带数1314指定的个数一致(在发出不一致的指令的情况下,高速缓冲存储器26回复错误)。例如,在对六个数据生成两个Parity的结构(6D+2P的RAID6结构)中,指定六个LBA1开始地址。

LBA1开始地址Y1(XOR Parity用)1318是指定要生成的RAID Parity(XOR Parity)的存储目的地的字段。在从该开始地址至由LBA1长度1313指定的范围的区域中,保存所生成的Parity(RAID5的奇偶校验位,或RAID6的P奇偶校验位、水平奇偶校验位)。

LBA1开始地址(RAID6用)1319是指定要生成的RAID6用的Parity的存储目的地的字段。RAID6用的Parity如先前所述,是里所码的Q奇偶校验位、EVENODD方式中的Diagonal Parity。在本发明中,在从LBA1开始地址(RAID6用)1319至由LBA1长度1313指定的范围的区域中保存所生成的Parity。当然,在对Opcode指定了RAID5用的奇偶校验位生成指令(例如指定了0x11)的情况下,不需要LBA1开始地址(RAID6用)1319的指定。

本实施例的高速缓冲存储器26当接受全条带Parity生成指令时,从由与上述的LBA1开始地址1315~1317所指定的区域建立了对应的PBA所特定出的FM420上的区域获取多个压缩数据,使用高速缓冲存储器26内部的Parity生成单元419,来生成(一个或两个)Parity。然后,将所生成的Parity记录到FM420上的区域。所生成的Parity的写入与写指令中的数据写入同样地,相对于由LBA1开始地址(XOR Parity用)1318及/或LBA1开始地址(RAID6Parity用)1319所特定出的LBA1空间动态地分配PBA,向由该分配的PBA特定出的区域进行奇偶校验位的写入。

全条带Parity生成响应1320由指令ID1021、状态1022构成,但均为与其他指令共同的信息,因此省略说明。

(4)更新Parity生成指令

本发明的实施例中的高速缓冲存储器26所执行的更新Parity生成能够在如下时刻执行,即:在将更新数据记录到既已生成Parity的最终存储介质(SSD11、HDD12)的区域中时,更新数据、由更新数据更新的区域的更新前数据(旧数据)、与旧数据对应的旧Parity这三个数据被映射到高速缓冲存储器26的LBA1空间上的时刻。本实施例的存储控制器10如后所述,作为原则,由于Parity生成通过全条带Parity生成方法进行,所以没有基于更新Parity生成方法进行Parity生成的机会,但高速缓冲存储器26也姑且具有进行更新Parity生成的功能。在进行更新Parity生成时,从构成RAID的最终存储介质读取旧数据和旧Parity,对于高速缓冲存储器26的LBA1空间进行保存,然后发出指定了更新数据、由更新数据更新的区域的旧数据、保护旧数据的旧Parity、更新奇偶校验位的LBA1地址的更新Parity生成指令,由此进行更新Parity生成。

图8是表示本实施例中的高速缓冲存储器26所支持的更新Parity生成指令和向更新Parity生成指令的响应信息的图。更新Parity指令1410,作为指令信息而由操作码1011、指令ID1012、LBA1长度1413、LBA1开始地址0(1414)、LBA1开始地址1(1415)、LBA1开始地址2(1416)、LBA1开始地址3(1417)、LBA1开始地址4(1418)、LBA1开始地址5(1419)构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。

操作码1011是向高速缓冲存储器26通知指令的类别的字段,获取了指令的高速缓冲存储器26认知由该字段通知的指令为更新Parity生成指令。另外,与全条带Parity生成指令同样地,根据Opcode1011的内容而要生成的奇偶校验位的种类变化。

LBA1长度1413是指定要生成的Parity的长度(RAID Parity中,Parity与Parity生成源数据的长度相同)的字段。LBA1开始地址0(1414)是表示用于Parity更新的新数据所映射的LBA1的区域的开始地址的字段。存储控制器10使用该字段,向高速缓冲存储器26通知从LBA1开始地址0(1414)至由LBA1长度1413特定的长度的区域的数据为新数据。LBA1开始地址1(1415)是表示用于Parity更新的旧数据所映射的LBA1的区域的开始地址的字段。存储控制器10使用该字段,向高速缓冲存储器26通知从LBA1开始地址1(1415)至由LBA1长度1413所特定出的长度的区域的数据为旧数据。

LBA1开始地址2(1416)是表示用于Parity更新的更新前的XOR Parity所映射的LBA1的区域的开始地址的字段。存储装置使用该字段,向高速缓冲存储器26通知从LBA1开始地址2(1416)至由LBA1长度1413所特定出的长度的区域的数据为XOR Parity。LBA1开始地址3(1417)是表示用于Parity更新的更新前的RAID6用的Parity所映射的LBA1的区域的开始地址的字段。存储装置1使用该字段,向高速缓冲存储器26通知从LBA1开始地址3(1417)至由LBA1长度1413所特定出的长度的区域的数据为更新前的RAID6用Parity。

LBA1开始地址4(1418)是表示将因更新而新生成的XOR Parity建立对应的LBA1的区域的开始地址的字段。存储装置使用该字段,向高速缓冲存储器26指示从LBA1开始地址4(1418)在由LBA1长度1413所特定出的长度的区域对新的XOR Parity进行映射。LBA1开始地址5(1419)是表示将因更新而新生成的RAID6用的Parity建立对应的LBA1的区域的开始地址的字段。存储装置使用该字段,向高速缓冲存储器26指示从LBA1开始地址5(1419)在由LBA1长度1413所特定出的长度的区域对新的RAID6用的Parity进行映射。此外,LBA1开始地址3(1417)、LBA1开始地址5(1419)在生成RAID5用的奇偶校验位的情况下不需要指定,可以无视从处理器21向高速缓冲存储器26发送来的指令的该字段中所保存的值。

本实施例的高速缓冲存储器26接受更新Parity生成指令时的处理与接受全条带Parity生成指令的情况下进行的处理相同。从与上述的LBA1开始地址1414~1417所指定的区域建立了对应的PBA所示的FM420上的存储区域获取多个压缩数据,使用高速缓冲存储器26内部的Parity生成单元419而生成一个或两个Parity。然后,将所生成的Parity记录到由LBA1开始地址4(1418)、LBA1开始地址5(1419)所特定出的区域。

(5)LBA1映射指令

在本实施例的高速缓冲存储器26中,将指定LBA0的区域而写入的数据由高速缓冲存储器26压缩而记录到FM420中。而且然后,对该压缩数据生成RAID Parity,另外将压缩数据以压缩状态直接向最终存储介质写入,因此向与LBA0不同的LBA1映射。LBA1映射指令在此时使用。

图9是示意地表示本实施例中的高速缓冲存储器26所支持的LBA1映射指令和对该LBA1映射指令的响应信息的图。LBA1映射指令1210,作为指令信息而由操作码1011、指令ID1012、LBA0开始地址1213、LBA0长度1214、LBA1开始地址1215构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。

LBA0开始地址1213是指定对将压缩数据向LBA1映射的对象数据的LBA0区域进行指定的排头地址的字段。LBA0长度1214是指定从成为向LBA1的映射对象的LBA0开始地址1213开始的LBA0的范围的字段。此外,LBA0开始地址1213和LBA0长度1214限定为8扇区(4KB)的倍数。

LBA1开始地址1215是指定要映射的LBA1的开始地址的字段。存储控制器10的处理器21预先掌握要映射的数据大小,确保该数据大小能够映射的LBA1的区域,将该排头地址保存于LBA1开始地址1215字段,并将该指令向高速缓冲存储器26发送。

本实施例的高速缓冲存储器26将与上述的LBA0开始地址1213和LBA0长度1214所示的范围的LBA0区域建立了对应的压缩数据从LBA1开始地址1215在与压缩数据大小相应的区域范围内进行映射。由此,然后,当处理器21向高速缓冲存储器发送指定了根据该指令而进行映射后的LBA1地址的读指令时,能够读取映射于该LBA1地址的压缩数据。

LBA1映射响应1220由指令ID1021、状态1022构成。此外,在本实施例中,记述基于上述信息而构成的响应信息的例子,但也可具有上述以外的附加信息。

(6)LBA0映射指令

本实施例的存储装置1当从最终存储介质读取数据(压缩数据)后,向高速缓冲存储器26发送指定了LBA1的区域的写指令,将压缩数据保存于高速缓冲存储器26(的FM420)。另外,在具有来自主机计算机3的读请求等的情况下,需要将记录于FM420的压缩数据以解压缩的状态向主机计算机3发送。LBA0映射指令是为此而使用的。

图10是表示本实施例中的高速缓冲存储器26所支持的LBA0映射指令和向该LBA0映射指令的响应信息的图。本实施例中的高速缓冲存储器26的LBA0映射指令1210,作为指令信息而由操作码1011、指令ID1012、LBA1开始地址1913、LBA1长度1914、LBA0开始地址1915构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。

LBA1开始地址1913是指定成为映射对象的压缩数据的在LBA1空间上的范围的排头地址的字段。LBA1长度1914是指定成为向LBA0的映射对象的从LBA1开始地址1913开始的LBA1的范围的字段。

LBA0开始地址1915是指定要映射的LBA0的开始地址的字段。存储控制器10根据存储装置1所管理的管理信息,得知记录于LBA1的压缩数据的解压缩后的数据大小,在发出LBA0映射指令前,确保该数据大小能够映射的LBA0的区域,在生成LBA0映射指令时,将该排头地址保存到LBA0开始地址1915字段中。另外,LBA0开始地址1915中能够指定的地址限定为8扇区(4KB)的倍数。

本实施例的高速缓冲存储器26当从存储控制器10接受LBA0映射指令时,将与上述的LBA1开始地址1913和LBA1长度1914所示的范围的LBA1区域建立了对应的压缩数据,从LBA0开始地址1915在与解压缩后的数据大小相应的区域范围内进行映射。由此,然后当处理器21向高速缓冲存储器发出指定了根据该指令而进行映射后的LBA0地址的读指令时,能够将映射于该LBA0地址的压缩数据以解压缩的状态读取。

LBA0映射响应1920仅包含与其他指令的响应信息共同的信息(指令ID1021、状态1022),因此省略说明。此外,也可以构成为在LBA0映射响应1920中包含共同信息以外的附加信息。

(7)压缩数据大小获取指令

图11是表示本实施例中的高速缓冲存储器26所支持的压缩数据大小获取指令和向该压缩数据大小获取指令的响应信息的图。本实施例中的高速缓冲存储器26的压缩数据大小获取指令1110,作为指令信息而由操作码1011、指令ID1012、LBA0开始地址1113、LBA0长度1114构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。此外,指令ID1012与先前的LBA0写指令内容相同,因此省略说明。

以下,说明压缩数据大小获取指令所固有的信息。

LBA0开始地址1113是指定成为压缩后的数据大小获取的对象的LBA0区域的排头地址的字段。LBA0长度1114是指定从LBA0开始地址1113开始的LBA0的范围的字段。高速缓冲存储器26计算出与上述的LBA0开始地址1113和LBA0长度1114所示的范围的LBA0区域建立了对应的数据的大小(压缩时大小),并向存储装置通知。此外,LBA0开始地址1113中能够指定的地址限定为8扇区(4KB)的倍数。同样地LBA0长度1114中能够指定的长度也限定为8扇区(4KB)的倍数。在LBA0开始地址1113或LBA0长度1114中指定了与8扇区边界不一致的地址(例如0x000_0000_0001等)或长度的情况下,回复错误。

压缩数据大小获取响应1120除指令ID1021、状态1022以外由压缩数据长度1123构成。此外,在本实施例中,记述基于上述信息而构成的响应信息的例子,但也可以具有上述以外的附加信息。压缩数据长度1123是保存与由压缩数据大小获取指令指示的LBA0区域建立了对应的压缩数据的大小的字段。存储控制器10在从解压缩VOL向压缩VOL进行数据的转移时,进行获取该压缩数据长度的值的处理。

(8)映射解除指令

在本实施例中,存储控制器10为了以压缩的状态获取压缩后记录的写数据,或为了对压缩数据生成Parity,而将数据向LBA1映射。另外,为了将压缩后的信息解压缩而获取,指定LBA1并将记录于高速缓冲存储器26的数据向LBA0映射。这样映射的区域在处理结束而不需要的情况下,解除映射。本实施例的存储装置使用映射解除指令,将与PBA建立了对应的LBA0或LBA1的区域的对应解除。

图12是表示本实施例中的高速缓冲存储器26所支持的映射解除指令和向该映射解除指令的响应信息的图。本实施例中的高速缓冲存储器26的映射解除指令1710,作为指令信息而由操作码1011、指令ID1012、LBA0/1开始地址1713、LBA0/1长度1714构成。此外,在本实施例中,记述基于上述信息而构成的指令的例子,但也可以具有上述以外的附加信息。以下,说明映射解除指令所固有的参数的内容和高速缓冲存储器26在接受映射解除指令时进行的处理。

LBA0/1开始地址1713是指定对映射进行解除的逻辑空间的排头地址的字段,能够指定LBA0空间、LBA1空间双方的地址空间的地址。但是,在指定了LBA0空间的地址的情况下,该地址必须为4KB(8扇区)边界的地址,在指定了不为4KB(8扇区)边界的地址的情况下,高速缓冲存储器26回复错误。LBA0/1长度1714是指定从LBA0/1开始地址1713开始的记录目的地LBA0或LBA1的范围的字段。

接下来,说明本发明的实施例的高速缓冲管理数据结构,但在此之前,说明本发明的存储装置1所管理的卷、及卷(逻辑卷)与高速缓冲管理数据之间的关系的概要。

在本发明的存储装置1中,从主机计算机3写入的数据保存于作为最终存储介质的SSD11或HDD12,但作为最终存储介质的SSD11或HDD12的存储空间不直接向主机计算机3提供。对主机计算机3,提供具有逻辑性的存储空间的逻辑卷。另外,从主机计算机3写入的数据以压缩的状态存储于最终存储介质,但也不会使主机计算机3认知到数据以压缩的状态保存,对于主机计算机3,仅能认知到在(能够由主机计算机3认知的)逻辑卷中保存有非压缩的数据。为了实现这样的状态,如开头所述,存储装置1生成两种逻辑卷并进行管理。第1种逻辑卷如先前所述那样是向主机计算机3提供的逻辑卷,是以保存非压缩数据的方式能够由主机计算机3认知的解压缩VOL。第2种逻辑卷是压缩VOL。

存储装置1为了向主机计算机3提供解压缩VOL而对图13所示那样的解压缩VOL管理表500进行维持管理。存储装置1能够向主机计算机3提供多个解压缩VOL,并对各解压缩VOL赋予唯一的识别编号(逻辑卷编号)而进行管理。VVOL#503表示对解压缩VOL赋予的识别编号。大小504表示该解压缩VOL的容量。另外,在主机计算机3中识别各解压缩VOL的情况下,不使用逻辑卷编号而使用主机接口(端口)24的标识符(例如在主机接口24为FC接口的情况下,为FC的WWN(World Wide Name:全局名))和逻辑单元编号(LUN),因此,需要对(端口的标识符、LUN)与逻辑卷编号的组的对应进行管理。在端口#501和LUN502中,保存有用于供主机计算机3识别各解压缩VOL的端口标识符(WWN)和LUN,并与VVOL#503建立对应。存储装置1的管理者在新生成卷(解压缩VOL)时,使用管理装置4的GUI,指定要新生成的解压缩VOL的端口#和LUN以及大小。当存储装置1接受该指定时,在解压缩VOL管理表500内生成新的条目,并在新生成的条目的端口#501、LUN502、大小504的栏中,保存由管理者指定的信息。同时自动生成未使用的VVOL#503,并保存于VVOL#503的栏中,由此进行解压缩VOL的生成(定义)。

接下来说明压缩VOL。先前说明的解压缩VOL用于向主机计算机3提供逻辑的(虚拟的)存储区域,在被定义的时刻不存在与解压缩VOL的各地址对应的物理存储区域(作为最终存储介质的SSD11或HDD12的存储区域)。另一方面,压缩VOL是在被定义的时刻,(压缩VOL上的)各存储区域与作为最终存储介质的SSD11或HDD12的存储区域以1:1建立了对应的卷。本发明的存储装置1将多个(例如4台)最终存储介质作为一个RAID组而进行管理,即使在RAID组内的一个或两个最终存储介质发生了故障的情况下也能够将数据复原,但在本发明的存储装置1中,将一个RAID组作为一个压缩VOL而进行管理。

图14示出存储装置1所管理的压缩VOL管理表550。LDEV#551是在存储装置1内定义的压缩VOL的识别编号,PDEV#552、RAID级别553、大小554分别表示构成压缩VOL的最终存储介质(SSD11或HDD12)的识别编号、由PDEV#552所特定的最终存储介质构成的RAID组的RAID级别、压缩VOL的容量(除由RAID奇偶校验位消耗的区域的容量以外)。此外,在本发明的实施例中,一个压缩VOL与一个RAID组对应,因此,压缩VOL的容量是从构成RAID组的全部最终存储介质的合计容量除去奇偶校验位数据的存储容量后的容量。此外,本发明不限定于将一个RAID组和一个压缩VOL以1:1建立对应的结构。也可以采用将一个RAID组分割并使分割后的RAID组的各区域分别与一个压缩VOL建立对应、或者使多个RAID组与一个压缩VOL对应的结构。存储装置1的管理者在新生成卷(压缩VOL)时,使用管理装置4所提供的GUI,指定用于构成要新生成的压缩VOL(RAID组)的最终存储介质(的识别编号)、RAID级别。存储装置1当接受该指定时,在压缩VOL管理表550内生成新的条目,并在新生成的条目的PDEV#552、RAID级别553的栏中保存由管理者指定的信息。同时自动生成未使用的压缩VOL用识别编号并保存于LDEV#551的栏,计算出RAID组的大小并保存于大小(Size)554的栏,由此进行压缩VOL的生成(定义)。

接下来,使用图15说明解压缩VOL与压缩VOL的关系。当从主机计算机3发送将解压缩VOL5000指定为写对象卷的写请求、及该写请求中的写对象数据(写数据)时,写数据在高速缓冲存储器26(图15中未图示)上以压缩的状态保存。以下,将该状态称作“数据(写数据)写入解压缩VOL”的状态。但是无法从主机计算机3看到(计算机3无法认知)数据被压缩的状态。

在本发明的实施例的存储装置1中,为了将对解压缩VOL5000写入的写数据保存于最终存储介质(SSD11、HDD12),而从解压缩VOL5000向压缩VOL5500进行转移(移动)。此处的“移动”处理虽然在后详细说明,但“移动”不是将数据物理性地移动、复制的处理,而是表示对解压缩VOL5000上的写入有数据的存储区域的地址和压缩VOL5500上的存储区域的地址建立对应的处理。另外,解压缩VOL5000上的写入有数据的地址与该地址所对应的压缩VOL5500上的地址的对应关系不是固定的,每次向解压缩VOL写入数据时变动。

说明将写入于解压缩VOL5000上的数据与压缩VOL建立对应的方法的概要。设想在解压缩VOL5000中随机地(不连续的区域中)写入数据a、b、c、d、e的状态且在压缩VOL5500中尚未有任何数据建立对应的状态的情况。在对解压缩VOL5000以规定量写入数据后,存储控制器10进行将数据向压缩VOL5500移动的处理、即将写入有数据a、b、c、d、e的解压缩VOL5000上的区域与压缩VOL5500上的区域建立对应的处理,但此时,为了减小向最终存储介质(SSD11、HDD12)的数据写入处理的开销,而将数据a、b、c、d、e以从压缩VOL5500的排头连续地保存的方式建立对应(参照图15)。

另外,不盖写压缩VOL上的数据。例如如图15所示,在将数据a、b、c、d、e移动到压缩VOL(建立对应)后,当从主机计算机3到来对保存有数据a的解压缩VOL5000上的区域而将数据内容更新为a’的写请求后,在解压缩VOL上写入有数据a的区域的数据内容更新为a’,但该更新数据a’以追写要领写入到压缩VOL上的与写入有数据a(的压缩数据)的区域不同的区域(例如紧接保存有数据e的区域之后)。

在将数据a、b、c、d、e(的压缩数据)与压缩VOL建立对应后,根据这些数据并通过RAID技术而生成冗余数据(奇偶校验位),将数据(压缩数据)和奇偶校验位向构成压缩VOL的最终存储介质(SSD11、HDD12)写入。以下,将向最终存储介质(SSD11、HDD12)写入数据(或奇偶校验位)的处理称作“转储(destage)”。

此外,如先前所述,在将解压缩VOL的数据向压缩VOL移动的处理中,为了减小向最终存储介质(SSD11、HDD12)的数据写入处理的开销,而在压缩VOL上配置数据,对该配置方法具体进行说明。图16是表示压缩VOL5500和与压缩VOL对应的最终存储介质(SSD11、HDD12)之间的对应关系的概念图。在此为了简化说明,而说明RAID组由4台最终存储介质构成、且该RAID级别为4的情况,但即使为其他RAID级别也是同样的。

关于图中的要素5501,作为一例为16KB(32扇区)的大小的区域,在本发明的实施例中称作“槽”。另外在槽5501中,记载有“0(D)”的槽5501表示保存有数据的槽(以下,称作数据槽),标记为“3(P)”的槽5501表示保存有奇偶校验位(即0(D)、1(D)、2(D)的逻辑异或)的槽(以下,称作奇偶校验位槽)。存储控制器10在将写入于解压缩VOL5000的数据向压缩VOL5500移动时,进行将压缩数据向数据槽移动且确保奇偶校验位槽的处理。此外,以下,将为了生成与一个奇偶校验位槽相应的奇偶校验位而需要的数据槽的集合(例如为了生成奇偶校验位槽“3(P)”而需要的数据槽为“0(D)”、“1(D)”、“2(D)”)称作“条带组”。

在存储装置1要根据多个写数据而生成奇偶校验位的情况下,且在存储控制器10上的高速缓冲存储器26中没有用于生成奇偶校验位所需要的数据的情况下,需要从最终存储介质(SSD11、HDD12)读取数据。例如在图16中,若槽0(D)的数据被更新,则为了生成与槽0(D)对应的奇偶校验位3(P),需要从最终存储介质(SSD11、HDD12)读取更新前的数据0(D)和奇偶校验位3(P)(或数据1(D)和数据2(D))(数据写入时的开销变大)。但是,在数据0(D)、1(D)、2(D)均存在于高速缓冲存储器26上的情况下,只要计算高速缓冲存储器26上所保存的数据0(D)、1(D)、2(D)的逻辑异或即可,因此不会产生从最终存储介质(SSD11、HDD12)读取数据的开销。

因此,在本发明的存储装置1中,为了不需要从最终存储介质读取更新前数据和更新前奇偶校验位,进行在解压缩VOL5000中写入相当于1条带组的量的数据(在图16的例子中,数据0(D)、1(D)、2(D)的合计大小,也就是说48KB的量的数据)后,将数据从解压缩VOL5000向压缩VOL5500移动的处理。而且在将数据向压缩VOL5500移动(建立对应)时,从条带组的排头(在图16的例子中,为数据0(D)或4(D)的位置)按顺序将数据逐步建立对应直至条带组的最尾(在图16的例子中,为数据3(D)或6(D)的位置),在数据的对应建立完成的时刻,结束向压缩VOL的数据移动,并进行奇偶校验位(3(P)或7(P))的生成。而且在解压缩VOL中写入相当于1条带组的量(48KB)的数据后,再次进行从解压缩VOL向压缩VOL的数据移动。当然,不需要每次将相当于1条带组的量(48KB)的数据写入解压缩VOL时均进行从解压缩VOL向压缩VOL的数据移动,也可以在等到将相当于多个条带组的量(96KB、480KB等)的数据写入之后进行从解压缩VOL向压缩VOL的数据移动。

图17示出卷映射表600,图18示出地址映射表650的内容。在本发明的实施例中,解压缩VOL和压缩VOL存在1:1的关系,写入于一个解压缩VOL的数据的移动目的地仅限定于预先确定的一个压缩VOL。卷映射表600示出由VVOL#601特定出的解压缩VOL的区域与由LDEV#602特定出的压缩VOL的区域建立对应的情况。关于卷映射表600的内容,保存有通过存储装置1的管理者使用管理装置4来指定与解压缩VOL的识别编号(VVOL#)建立对应的压缩VOL的识别编号(LDEV#),而由存储装置1指定于卷映射表600的VVOL#601、LDEV#602的栏中的识别编号。由此,设定了解压缩VOL与压缩VOL的对应关系。另外,卷映射表600内的最终写入位置603的栏是用于保存在数据从解压缩VOL移动到压缩VOL(建立对应)时,最后移动的数据在压缩VOL上的位置(压缩VOL上的LBA)的栏。存储装置1在从解压缩VOL向压缩VOL移动数据时,为了从保存于最终写入位置603的栏中的压缩VOL上的LBA的下一LBA开始保存数据(即实现数据的追写),而保持该信息。

图18的地址映射表650是管理由VVOL#651、LBA652特定出的解压缩VOL上的区域与由LDEV#653、LBA654特定出的压缩VOL上的区域(扇区)建立对应的表。该表在存储控制器10将写入于解压缩VOL上的数据与压缩VOL建立对应时更新。地址映射表650的各行(条目)示出解压缩VOL的8扇区(1扇区是由主机计算机3访问解压缩VOL时的、存储区域的最小访问单位,通常为512字节)量的区域与压缩VOL的哪个扇区建立对应。另外,与地址映射表650的各行(条目)建立对应的压缩VOL的盘区域的数量(扇区数)根据数据的压缩状态而不同,最小为1扇区、最大为8扇区的区域建立对应。

通过对地址映射表650进行维持管理,存储控制器10在从主机计算机3接受对解压缩VOL的读请求的情况下,参照地址映射表650,将读请求所指定的解压缩VOL上的区域(地址)向压缩VOL上的地址变换,从构成压缩VOL的最终存储介质(SSD11、HDD12)读取读请求所指定的解压缩VOL上的访问对象数据,在高速缓冲存储器26中进行解压缩,并将解压缩后的数据向主机计算机3返还,由此能够实现读处理。该处理的详细情况将在后叙述。

此外,解压缩VOL和压缩VOL不必为相同大小。在存储装置1中,由于数据以压缩的状态保存于压缩VOL,所以即使将压缩VOL的大小定义为小于解压缩VOL的大小,本发明也能够实施。

接下来,说明高速缓冲存储器26的管理方法。图19是表示本发明的实施例中的卷、槽、高速缓冲段之间的关系的概念图。此外,如先前所述,在本发明的存储装置1中,对解压缩VOL和压缩VOL这两种卷进行管理,但解压缩VOL和压缩VOL均使用非常相似的数据结构而被管理。因此以下,首先以将解压缩VOL的数据在高速缓冲存储器26中高速缓存的情况下使用的高速缓冲管理数据的数据结构为中心进行说明。

在本发明的实施例中,向卷的最小访问单位为扇区(例如512字节),在卷的各扇区中,赋予有逻辑块地址(LBA。或者在本说明书中,也存在称作逻辑地址的情况)(图19的要素2010表示LBA)。另外,在本发明的实施例的存储装置1中,在向卷上的存储区域访问时等进行互斥控制,但在存储装置1中,按槽2100这一区域进行互斥控制。在本发明的实施例中,槽2100的大小为16KB(即32扇区),但也可以采用其他大小。在卷内的各槽2100中,从排头赋予有唯一的识别编号,将其称作槽ID。将卷内的排头的槽2100的槽ID设为0号,对以后的槽按顺序赋予1号、2号,…的槽ID。此外,在图19中,要素2110为槽ID,逻辑块地址2010与槽ID2110的关系如图19所示。例如在将从主机计算机3接收到的I/O指令所指定的逻辑块地址向槽ID变换时,将所指定的逻辑块地址除以32(构成一个槽的扇区数)而得到的值成为槽ID。另外在进行该除法运算时余数为0的情况下,可知I/O指令所指定的逻辑块地址位于(由槽ID特定出的)槽的排头,在余数不为0的值(假设该值为R)的情况下,该余数R成为表示由逻辑块地址特定出的块是存在于从(由槽ID特定出的)槽的排头块起的第(R+1)号位置的块的信息(以下,将该信息R称作槽内相对地址)。

另外在将卷上的数据保存于高速缓冲存储器26的情况下,存储控制器10的处理器21从高速缓冲存储器26上的未使用存储区域中将规定大小的区域确保为高速缓冲区域,但以高速缓冲段(或称作段)这一区域单位确保高速缓冲区域(图19中的要素2201、2202、2203、2204是高速缓冲段。以下,在总称高速缓冲段2201、2202、2203、2204的情况下,标记为“高速缓冲段2200”)。在本发明的实施例中,在高速缓冲存储器26上管理对解压缩VOL写入的数据时使用的高速缓冲段2200的大小为8扇区、即4KB(但是为非压缩时的大小),相对于各槽将四个高速缓冲段2201、2202、2203、2204建立对应。图19示出高速缓冲存储器26上的区域(高速缓冲段2200)与槽2100建立对应的概念。存储装置1管理该对应建立的方法将在后详细说明,存储装置1作为管理槽的信息而具有槽控制表110(详细情况将在后叙述。此外槽控制表110按每个槽2100而存在一个),在槽控制表110内保存有与该槽建立了对应的高速缓冲段2200的信息(准确地说,指向用于管理高速缓冲段2200的信息的指针)。存储装置1通过生成、管理该槽控制表110,而管理槽2100与高速缓冲段2200的对应建立。此外,在本发明的实施例中,将高速缓冲段2200的大小设为4KB的情况为一例,也能够设为4KB以外的大小。但是在本发明的实施例的高速缓冲存储器26中,由于通过压缩功能以4KB单位将非压缩数据压缩,所以当将高速缓冲段2200的大小(非压缩时)设为4KB时,具有管理不会变得复杂化的优点,因此采用4KB的高速缓冲段大小。另外也能够将与一个槽2100建立对应的高速缓冲段2200的数量设为4以外的值。

主机计算机3向卷5000上的区域访问(读或写等)时的、与高速缓冲区域的管理相关联的处理的概要如下所述。主机计算机3对存储装置1发出指定了LUN和LBA(相当于图19中的要素2010)的I/O指令。存储装置1将接收到的I/O指令中含有的LBA变换成槽ID2110和槽内相对地址的组,并参照由通过该变换得到的槽ID2110特定出的槽控制表110。然后基于槽控制表110的信息,判断对于由I/O指令指定的卷上区域(由LBA特定出的区域)是否确保了高速缓冲段2200,若没有确保高速缓冲段2200,则进行新确保高速缓冲段2200的处理。

接下来对高速缓冲管理数据结构进行说明。图20是存储装置1所管理的高速缓冲管理数据结构的概念图。

高速缓冲管理数据结构包括高速缓冲目录100(在图21中详细叙述)、空闲队列(free queue)200、脏队列(dirty queue)及干净队列(clean queue)(在图22中详细叙述)。各高速缓冲段由段控制表120(SGCT:Segment Control Table)管理。SGCT120相当于高速缓冲存储器26内的LBA0空间上的全部高速缓冲段(非压缩时4KB的区域)而分别存在一个。

高速缓冲目录100是对卷上的逻辑块地址(LBA)与该逻辑块地址上的数据被高速缓存的高速缓冲存储器上的地址(LBA0空间上地址)之间的对应关系进行管理的数据结构,相对于一个解压缩VOL而存在一个高速缓冲目录100。高速缓冲目录100是例如将保存有高速缓存对象数据的卷上的LBA(或槽ID这样的从LBA导出的信息)作为关键字的哈希表,将用于表示SGCT120的指针作为条目而持有。SGCT120对指向与该SGCT120对应的高速缓冲段325的指针(高速缓冲存储器126上的地址“LBA0空间上地址”)进行管理。因此,通过使用卷上的LBA来搜索高速缓冲目录100内的信息,能够特定出将与该逻辑块地址对应的数据高速缓存的高速缓冲段。此外,关于SGCT120的详细结构将在后叙述。

空闲队列200是管理高速缓冲存储器26的空闲段、即没有保存任何数据的高速缓冲段325的控制信息。在本发明的实施例中,空闲队列200构成为将与高速缓冲存储器26的空闲段对应的SGCT120保持于条目的双向的连接列表(link list),但不限定于此。

SGCT120根据与该SGCT120对应的高速缓冲段的状态及种类,而取与高速缓冲目录100、空闲队列200中的某一方连接的状态。与未使用的高速缓冲段325对应的SGCT120与空闲队列200连接,当该高速缓冲段325被分配于数据保存用时,与高速缓冲目录100连接。

图21是表示高速缓冲目录、SLCT、SGCT之间的关系的图。

高速缓冲目录100由多个目录条目指针100a的集合构成。各目录条目指针100a保存指示与槽ID对应的槽控制表110(SLCT:Slot Control Table)的指针(地址信息)。如先前所述,高速缓冲目录100是例如以槽ID为关键字的哈希表,例如计算某槽ID的哈希值的结果为3的槽的SLCT110,直接或间接地由高速缓冲目录100的第3号目录条目指针100a指示。

SLCT110是包含目录条目指针110a、前方指针110b、后方指针110c、槽ID110d、槽状态110e、脏量110f和SGCT指针110g的数据结构。目录条目指针110a是指示与哈希表的下一条目对应的SLCT110的指针。前方指针110b是SLCT110与干净队列或脏队列连接的情况下使用的信息,是表示干净队列或脏队列内中的前一序号的SLCT110的指针。后方指针110c是在SLCT110与干净队列或脏队列连接的情况下使用的信息,是表示干净队列或脏队列中的后一序号的SLCT110的指针。槽ID110d是与SLCT110对应的槽的识别信息(槽ID)。槽状态110e是表示槽的状态的信息。作为槽的状态,存在例如表示该槽被锁定的“锁定中”等。脏量110f保存该槽所含有的高速缓冲段内中保存的数据中的、未反映于最终存储介质(SSD11、HDD12)的数据(脏数据)的量。SGCT指针110g是指示与该槽所含有的高速缓冲段对应的SGCT120的指针。在该槽没有被分配高速缓冲段时,SGCT指针110g成为表示指针(地址)无效的值(例如NULL)。另外在槽中所含有的高速缓冲段为多个的情况下,将各SGCT120作为连接列表而进行管理,SGCT指针110g是指示连接列表中的与排头的高速缓冲段对应的SGCT120的指针。

SGCT120包含SGCT指针120a、段ID120b、段地址120c、预演位(staging bit)映射120d、脏位映射120e和脏量120f。

SGCT指针120a是指示与包含于相同槽中的下一高速缓冲段对应的SGCT120的指针。段ID120b是高速缓冲段的识别信息,是表示定位于槽内的第几号位置的高速缓冲段的信息。在本实施例中,由于在一个槽中最大分配有四个高速缓冲段,所以在各高速缓冲段的段ID120b中保存有0、1、2、3中的某一个值(位于槽的排头的高速缓冲段的段ID120b为0,以下按顺序赋予1、2、3的段ID120b。例如以图19中的高速缓冲段2201~2204为例,与槽2100的排头建立对应的高速缓冲段2201的段ID120b为0,以下高速缓冲段2202、2203、2204的段ID120b分别为1、2、3)。

段地址120c是与该SGCT120建立了对应的高速缓冲段的地址,即高速缓冲存储器26的LBA0空间上的地址。虽然说明顺序前后颠倒,但本发明的实施例中的存储控制器10(的处理器21)为了管理保存有对解压缩VOL5000写入的数据的高速缓冲区域(高速缓冲段),而对各高速缓冲段的地址使用LBA0空间上的地址。即,各高速缓冲段作为存在于LBA0空间的段而进行管理。由此,存储控制器10(的处理器21)不需要考虑在高速缓冲存储器26上以压缩状态保存的数据的大小,能够正好在高速缓冲存储器26上作为将非压缩状态的数据保存于高速缓冲存储器26的方式,对高速缓冲存储器26上的数据进行管理。另外,在对压缩VOL5500上的数据进行高速缓存的高速缓冲区域(高速缓冲段)的管理中,使用LBA1空间地址。

预演位映射120d是表示在高速缓冲段中,干净数据、即与最终存储介质(SSD11、HDD12)的数据一致的数据被高速缓存的区域的位映射。与将干净数据(与最终存储介质内保存数据相同的数据)高速缓存的区域对应的预演位映射120d的位被设定为ON(1),与不将干净数据高速缓存的区域对应的位被设定为OFF(0)。脏位映射120e是表示在高速缓冲段中将脏数据高速缓存的区域的位映射。脏位映射120e与预演位映射120d同样地,各位与高速缓冲段内各区域(扇区)对应,与将脏数据高速缓存的区域对应的位被设定为ON(1),与不将脏数据高速缓存的区域对应的位被设定为OFF(0)。在本发明的实施例中,预演位映射120d、脏位映射120e均为1位。也就是说一个高速缓冲段内的各扇区(8扇区)均处于脏状态或干净状态而进行管理,但可以采用预演位映射120d、脏位映射120e的位数与1段内扇区数相等(为8位)的结构。

脏量120f保存与该SGCT120建立了对应的高速缓冲段内所保存的数据中的、未反映于最终存储介质(SSD11、HDD12)的数据(脏数据)的量。此外,在以上所述的高速缓冲SLCT、SGCT的例子中,是由SLCT110和SGCT120双方管理压缩后的(脏)数据量的信息、且在SLCT110中保存与该SLCT110连接的SGCT120的脏量(120f)的合计的构造。但是,也可以仅在各SGCT120中保存压缩后的脏数据量的信息。

图22是表示脏队列或干净队列的数据结构的图。

如上所述,各SLCT110与高速缓冲目录100的目录条目指针100a连接,并且根据与SLCT110对应的槽的状态,也能够与脏队列或干净队列连接。脏队列是将与包含脏数据的槽对应的SLCT110连接的队列。干净队列是将与仅包含干净数据的槽对应的SLCT110连接的队列。脏队列在将解压缩VOL上的数据(高速缓存中数据)向压缩VOL移动或将压缩VOL上的脏数据转储(向最终存储介质写入)时,为了进行脏数据的检索而使用。在确保高速缓冲段时,在不存在与未使用(空闲队列)连接的高速缓冲段(SGCT)的情况下,作为代替而使用仅保存干净数据的高速缓冲段(高速缓存替换:cache replacement),而干净队列为了进行此时的高速缓冲检索而使用。

在本实施例中,将高速缓存替换及转储的时序安排中使用的算法作为LRU(Least Recently Used:最近最少使用)而说明,但也能够采用其他构造。此外,脏队列及干净队列仅所连接的SLCT110不同,而队列的基本结构相同,因此,在此列举脏队列为例进行说明。脏队列构成为双向的连接列表。即,脏队列将与包含最近使用的脏数据的槽(最后使用时刻近的槽)对应的SLCT110与MRU(Most Recently Used:最近最频繁使用)端150的前方指针连接,以后,将下一序号的槽(包含下一最近使用的脏数据的槽)的SLCT110与SLCT110的前方指针110b依次连接,将LRU端160与最后序号的SCLT110的前方指针110b连接,另一方面,将最后序号的SCLT110与LRU端160的后方指针连接,以后,相对于后面序号的SCLT110的后方指针110c,将其前的序号的槽的SLCT110依次连接,将第一序号的SLCT110与MRU端150连接。在脏队列中,SLCT110从MRU端150侧按最后使用时刻近的顺序排列。此外,脏队列也与高速缓冲目录100同样地,相对于一个解压缩VOL而分别存在一个脏队列。干净队列在存储控制器10内存在一个(更准确地说,解压缩VOL用的(换言之LBA0空间的高速缓冲存储器管理用的)干净队列存在一个,而且压缩VOL用的(换言之LBA1空间的高速缓冲存储器管理用的)干净队列存在一个)。

接下来,使用图23说明空闲队列200的数据结构。空闲队列200是用于管理高速缓冲存储器26上的空(未使用)高速缓冲段325的队列,是将空高速缓冲段的SGCT120通过指针而连接的连接列表。空闲队列在存储控制器10内存在一个。空闲队列200的空闲队列指针201指示队列的排头的SGCT120。SGCT120的SGCT指针120a指示下一空高速缓冲段的SGCT120。

以上是用于在高速缓冲存储器26上管理解压缩VOL的数据的高速缓冲管理数据的内容,但用于在高速缓冲存储器26上管理压缩VOL的数据的高速缓冲管理数据结构也是同样的。但是,在本发明的实施例中,由于使在高速缓冲存储器26上管理压缩VOL的数据时使用的高速缓冲区域(高速缓冲段)的大小与解压缩VOL中的大小(4KB)不同,所以保存于高速缓冲管理数据结构内的信息的内容也多少不同。以下仅说明主要的不同点。

压缩VOL也与解压缩VOL同样地,按每一个槽进行互斥控制,另外槽与一个以上的高速缓冲段建立对应。但是在管理压缩VOL的高速缓冲数据时使用的高速缓冲段的大小为1扇区(512字节。另外其为压缩时的大小),另外槽大小为16KB。因此,与一个槽建立对应的高速缓冲段数为32个,这一点与解压缩VOL的情况不同。当然,即使将槽大小设为16KB以外的大小,将段大小设为1扇区以外的大小,本发明也是有效的。

另外,使用图20~图23,说明了用于管理解压缩VOL的高速缓冲数据的高速缓冲管理数据结构(高速缓冲目录、SLCT、SGCT、空闲队列、脏队列、干净队列),但用于管理压缩VOL的高速缓冲数据的高速缓冲管理数据结构基本上使用与使用图20~23说明的结构相同的结构。作为不同点,列举以下方面。首先在压缩VOL的高速缓冲管理中,由于一个槽中与32个段建立对应,所以与一个SLCT连接的SGCT的数量最大为32个。并且在SGCT内的段ID120b中保存有0~31中的某一个值。而且,在压缩VOL的高速缓冲管理中,使用LBA1空间的地址进行高速缓冲段的管理。因此,在SGCT120内的段地址120c中保存有LBA1空间的地址。另外,在解压缩VOL的高速缓冲管理中,脏队列相对于一个解压缩VOL而存在一个脏队列,但在压缩VOL的高速缓冲管理中,相对于一个最终存储介质(SSD11、HDD12)而定义一个脏队列。其原因在于,脏数据的转储处理以SSD11或HDD12为单位进行。

无论怎样,关于解压缩VOL的高速缓冲数据管理构造和压缩VOL的高速缓冲数据管理构造,仅保存于SGCT120的信息的内容、脏队列的数量稍有不同,用于管理压缩VOL的高速缓冲数据的数据结构使用与在图20~23中说明的结构相同的结构。

另外,作为解压缩VOL与压缩VOL的不同点,能够列举保存于槽中的数据的内容、种类不同。在解压缩VOL的各槽中仅保存有来自主机计算机3的写数据,但在压缩VOL的槽中,除保存有压缩数据以外,在一部分的槽中保存有根据多个槽(保存有压缩数据的槽)并通过RAID技术而生成的奇偶校验位。

接下来,使用图24、25、26说明存储装置1中进行的数据写处理。在图24中,说明从主机计算机3接收对解压缩VOL5000的写请求和写数据、并将所接收的写数据保存于高速缓冲存储器26的处理。此外,在图24的写处理中,说明由主机指定的写地址(LBA)与4KB边界一致、另外写数据大小为4KB的情况。

在S1中,存储装置1经由主机接口24从主机计算机3接受写请求。在写请求中包含对存储装置1的端口进行特定的信息(能够导出图13的端口#501的信息)、解压缩VOL的LUN、解压缩VOL的LBA。存储控制器10的处理器21在DRAM25上确保暂时保存写数据的缓冲区域,从主机计算机3接收写数据并将其保存于缓冲区域(S1)。

在S2中,处理器21根据在S1中接收的写请求中所包含的、对端口进行特定的信息、LUN和解压缩VOL管理表500,对解压缩VOL的VVOL#(与图13的VVOL#503相当的信息)进行特定。另外,将LBA变换为槽ID。接着从所特定的VVOL#选择与本次写对象的解压缩VOL建立了对应的高速缓冲目录100,进行本次访问对象的LBA所属的槽的锁定(在高速缓冲目录100范围内,检索与本次访问对象的LBA所属的槽对应的SLCT110,在检索得到的SLCT110的槽状态110e中保存表示“锁定中”的信息)。

在S3中,处理器21判定与(写请求所指定的)解压缩VOL的LBA对应的高速缓冲段是否已分配。具体地说,通过参照具有利用在S2中进行的变换而得到的槽ID110d的SLCT110内的SGCT指针110f来进行判定。在SGCT指针110f为无效(例如NULL)值的情况下,判明高速缓冲段为未分配。在SGCT指针110f中包含有效的值的情况下,判明至少分配了一个高速缓冲段,因此在SGCT指针110f的范围内,确认是否在由槽内相对地址特定出的槽内的位置分配了高速缓冲段。具体地说,通过确认是否存在具有与“槽内相对地址÷8”得到的结果(整数值)相同的段ID120b的SGCT120,能够确认是否分配有高速缓冲段(通过进行槽内相对地址÷8的计算,得到0~3中的某一个整数值,因此能够知道槽内相对地址是与被赋予0~3中的哪一段ID的高速缓冲段对应的地址)。关于其结果,若高速缓冲段为已分配(步骤S3:是),则处理器21进入至步骤S5的处理。另一方面,若高速缓冲段为未分配(步骤S3:否),则执行段分配处理(步骤S4),并进入至步骤S5的处理。在步骤S4的段分配处理中,通过获取与空闲队列200的排头相连的SGCT120,来分配未使用的高速缓冲段。另外,在没有未使用的高速缓冲段的情况下、即不存在与空闲队列200相连的SGCT120的情况下,获取与干净队列相连的SLCT110所连接的SGCT120。

在S5、S6中,进行从缓冲区域向所分配的高速缓冲段的数据传送。处理器21将高速缓冲段的地址(与所分配的段对应的SGCT120的段地址120c中所保存的LBA0空间的地址)获取为发送目的地地址(S5)。然后生成将缓冲区域的地址指定为发送源地址、将在S5中获取的地址指定为发送目的地地址的数据传送(写)指令,并向高速缓冲存储器26发送写指令,由此指示数据传送。当向高速缓冲存储器26发送写指令后,等待从高速缓冲存储器26通知处理完成。

当从高速缓冲存储器26接收到处理完成的通知时,为了记录写对象的高速缓冲段成为脏状态这一情况,将与写对象的高速缓冲段对应的SGCT120的脏位映射120e设为ON,另外将写对象的高速缓冲段所属的槽的SLCT110与脏队列连接(S7)。另外,在从高速缓冲存储器26接收的写指令处理完成的通知中,包含写入于高速缓冲存储器26的数据的压缩后的大小信息,因此,在SGCT120的脏量120f中保存所接收的大小信息,另外对SLCT110的脏量110f加上从高速缓冲存储器26接收的该大小信息。此外,在从主机计算机3具有写请求的写数据量为4KB以外、例如为超过4KB的大小的情况下,仅在从高速缓冲存储器26接收的写指令处理完成的通知中,无法得到每个高速缓冲段的数据量(压缩后)的信息,因此,发出压缩数据大小获取指令1110,获取每个高速缓冲段的压缩数据量的信息,并向SGCT120的脏量120f、SLCT110的脏量110f反映压缩数据量的信息。然后将高速缓冲槽的锁定解除(S8),向主机计算机3通知写处理完成这一情况,并结束处理。

在S8结束后,也存在进行S9的向压缩VOL的数据转移(移动)处理的情况,但该处理不是必须的,在高速缓冲存储器26的状态满足规定条件的情况下,进行向压缩VOL的数据转移处理。接下来对此进行说明。

接下来使用图25说明向压缩VOL的数据转移处理。数据转移处理是与图24的S9相当的处理、即在紧接由主机计算机3进行的数据写处理之后进行的处理,但进行向压缩VOL的数据转移处理的契机不限定于紧接数据写处理之后。例如也能够定期地监视高速缓冲存储器26的状态,在高速缓冲存储器26的状态满足规定条件的情况下执行。此外,向压缩VOL的数据转移处理按每个解压缩VOL来进行。

在S21中,处理器21判定是否满足规定条件。在一例中,关于某解压缩VOL,调查与该解压缩VOL的高速缓冲目录100连接的各槽的SLCT110中含有的脏量110f(或SGCT120的脏量120f),判定保存在高速缓冲存储器26上的脏数据量是否超过用于生成RAID奇偶校验位而需要的量。在此,用于生成RAID奇偶校验位而需要的量是指,如上所述,与构成条带组的槽的集合同量或比其多的数据量。若以图16的RAID构成为例,则在一个解压缩VOL内的三个槽的量、即16KB×3=48KB的脏数据量存在于高速缓冲存储器26上的情况下,判断成能够生成奇偶校验位。在满足条件的情况下(S21:是),进入到S22,在不满足条件的情况下(S21:否),移动到S31。

在S22中,执行成为进行转移处理的对象的槽的选择、和所选择的槽的锁定。对于槽的选择能够采用各种方法。例如参照与脏队列连接的、各SLCT110的脏量110f,从脏量110f多的槽(SLCT)开始按顺序逐步选择,在至所选择的槽(SLCT)的脏量110f的合计到达规定量(48KB或48KB的倍数)为止选择槽(SLCT)。或者也可以基于LRU(Least Recently Used)算法来选择槽。此外,关于以后的说明,在S22的处理中,设想以脏量(压缩数据)的合计成为1条带组量(48KB)的方式选择槽来进行说明,但本发明不限定于此。同时,参照在此选择的槽的SLCT110及与SLCT110连接的SGCT120中的、脏位映射为ON的SGCT120的内容,由此,特定进行转移处理的对象的高速缓冲段的段地址120c(即高速缓冲存储器26的LBA0)。另外,根据与进行转移处理的对象的高速缓冲段对应的SLCT110的槽ID110d和SGCT120的段ID120b,计算出进行转移处理的对象的高速缓冲段所对应的解压缩VOL的区域的LBA。

接着,在S23中,进行压缩VOL上的盘区域分配。首先参照卷映射表600,选择与当前处理对象的解压缩VOL601对应的压缩VOL602及最终写入位置603。然后,从压缩VOL602的最终写入位置603的下一LBA开始选择1条带组量的区域。接着,确定将本次处理对象的解压缩VOL的各区域(在S22中选择的槽内的保存有脏数据的区域)与压缩VOL的哪个位置建立对应,在地址映射表650中保存所确定的内容。

在S24中,进行与在S23中选择的1条带组量的区域对应的槽、及与该1条带组对应的奇偶校验位槽的锁定,对各槽进行段的分配。该处理与S3相同。通过该处理,确定与在S23中选择的1条带组量的数据槽及奇偶校验位槽对应的高速缓冲段(的地址。即LBA1)。

在S25中,进行数据的转移、即将在S22中选择的解压缩VOL上的脏数据的在高速缓冲存储器26上的地址(LBA0)与在S24中确定的压缩VOL的1条带组量的区域所对应的高速缓冲存储器26上的地址(LBA1)建立对应(映射)。由于在S23的处理中已确定了解压缩VOL的各区域的LBA应与压缩VOL的哪个LBA建立对应,所以基于S23的处理结果来建立对应。处理器21对高速缓冲存储器26发出LBA1映射指令,将解压缩VOL上的脏数据的在高速缓冲存储器26上的地址(LBA0)与压缩VOL的1条带组量的区域所对应的高速缓冲存储器26上的地址(LBA1)建立对应。在发出LBA1映射指令后,处理器21等待来自高速缓冲存储器26的处理完成的响应。

当从高速缓冲存储器26接收处理完成的响应时进入至S26,使与在S24中确保的压缩VOL的槽建立了对应的高速缓冲段成为脏状态。具体地说将与各高速缓冲段对应的SGCT120的脏位120e设为ON,将SLCT110与脏队列连接。此外,由于压缩VOL的脏队列按每个最终存储介质而存在,所以在将SLCT110与脏队列连接的情况下,特定SLCT110所对应的槽与哪个最终存储介质建立对应。例如如图16所示,压缩VOL的各槽与压缩VOL所对应的RAID组的某一个最终存储介质的规定位置固定地建立对应,通过进行周知的由存储装置进行的、逻辑卷地址与物理盘(作为最终存储介质的SSD11或HDD12)的地址变换的计算,能够容易地特定压缩VOL的各槽所对应的最终存储介质。然后将SLCT110连接于与该特定出的最终存储介质对应的脏队列。

接着在S27中,废弃解压缩VOL侧的高速缓冲段。在该处理中,将与解压缩VOL侧的高速缓冲段对应的SGCT120的脏位120e设为OFF,从SLCT110将SGCT120分离。接着,向高速缓冲存储器26发出指定了从SLCT110分离的SGCT120的段地址120c的映射解除指令,在高速缓冲存储器26内解除LBA0与PBA的对应。然后使SGCT120与空闲队列201重连。

在S28中,进行压缩VOL的奇偶校验位生成。处理器21对高速缓冲存储器26,发出指定了在S24中分配于数据槽的高速缓冲段的段地址(LBA1)和分配于奇偶校验位槽的高速缓冲段地址(LBA1)的全条带Parity生成指令。接受该指令的高速缓冲存储器26在分配于奇偶校验位槽的高速缓冲段中生成奇偶校验位。高速缓冲存储器26在奇偶校验位生成结束后向处理器21通知处理完成。处理器21在接收到处理完成的通知时,将奇偶校验位槽的高速缓冲段设为脏状态。该处理与S26相同。

在S29中,解除压缩VOL、解压缩VOL槽的锁定。另外,更新卷映射表600的最终写入位置603。例如当通过S22~S28的处理将1条带组量的数据转移到压缩VOL时,仅以与构成1条带组的槽及该条带组所对应的奇偶校验位槽的大小相当的扇区数(若RAID结构为3D+1P的结构,1槽为16KB,则为64KB即128扇区),加上最终写入位置603的信息。

在S31中,判定是否对全部解压缩VOL进行了转移处理(S21~S29)的处理,若对全部解压缩VOL进行了转移处理(S31:是),则结束处理,但在余留没有进行转移处理的解压缩VOL的情况(S31:是)下,返回S21并对余留的解压缩VOL进行S21~S29的处理。

此外,作为其他实施方式,也可以对S21的规定条件使用以上列举例子以外的条件。也可以是如下条件,例如关于来自主机计算机3的写请求,在判断成对解压缩VOL连续地写入规定大小以上的数据的请求持续到来(即进行顺序写请求)的情况下,在位于解压缩VOL的槽的末端的高速缓冲段中写入数据的时刻,进行向压缩VOL的数据转移处理。

另外,虽然需要将压缩VOL的脏数据转储的处理,但该处理可以在任意时刻进行。例如考虑在高速缓冲存储器26的使用量超过规定的阈值时实施的、定期(每10分钟一次等)地实施等。转储处理自身与以往存在的由存储装置进行的处理相同,因此使用图26仅说明概要。

首先在S31中,处理器21选择按每个最终存储介质设置的脏队列中的一个脏队列。接着在S32中,处理器21判定在由S31选择的脏队列上是否连接有槽(SLCT110)。在没有连接槽的情况下移动至S37,但在连接有槽的情况下进入至S33。

在S33中,处理器21将与脏队列连接的槽选择为本次的转储对象槽,进行该槽的锁定。在脏队列上连接有多个槽的情况下,槽的选择方法、选择的槽的个数确定能够应用各种各样的周知技术,但在此为了简化说明,选择一个LRU端160所指的SLCT110。当然,也能够采用选择与脏队列的规定个数(固定值)的槽、选择多个与LRU端160所指的SLCT110的槽相邻的(最终存储介质上的)槽、或选择与脏队列连接的全部的槽等方法。

在S34中,处理器21将转储对象槽、即在S33中选择的槽(SLCT110)的槽ID110d变换为最终存储介质的地址。该地址变换如先前所述为周知技术,因此省略变换方法的说明。

在S35中,处理器21将属于转储对象槽(SLCT110)的高速缓冲段中保存的数据向最终存储介质写入。首先,处理器21将DRAM25上的区域确保为缓冲区域,使用先前所述的高速缓冲存储器26的读指令,执行从高速缓冲存储器26向缓冲区域的数据读取。然后将读入至缓冲区域的数据写入到由S34的变换处理计算出的最终存储介质(SSD11、HDD12)的地址。另外,作为其他实施方式,也能够通过对最终存储介质(SSD11、HDD12)发出的写指令(SCSIS WRITE指令),直接对写源数据的地址指定高速缓冲存储器26的LBA1地址,在该情况下,不需要暂且将数据从高速缓冲存储器26读取至DRAM25上。

在S36中,将转储对象槽与干净队列连接,另外解除槽的锁定。同时,将转储对象槽(SLCT110)的脏量110f设为0,另外对于与该SLCT110连接的全部的SGCT120,将脏位映射120e设为OFF,将预演位映射120d设为ON,另外将脏量120f设为0。

然后,判断是否存在未处理的脏队列(S37),在余留未处理的脏队列的情况(S37:是)下,返回到S31。在对全部脏队列进行了S31~S36的处理的情况下,结束转储处理。

以上是本发明的实施例中的存储装置1所实施的数据写处理。此外,从该处理流程可知,从主机计算机3对解压缩VOL写入的数据全部在压缩VOL上进行追写。因此,写入于压缩VOL的更新前数据无论是否会由主机计算机3再次访问,均成为留存于压缩VOL的状态。而且由于在保存有更新前数据的区域中无法写入新的数据,所以会将压缩VOL的存储区域无益消耗。为了解除上述状态,需要进行将不被访问的数据定期从压缩VOL删除、仅留下会被访问的数据(具体地说,仅留下在地址映射表650中管理的与解压缩VOL的LBA建立了对应的压缩VOL上的区域的)处理、即所谓垃圾回收。该处理能够通过利用在数据写入时进行追写处理的存储介质、例如闪存器等所采用的处理而实现。

接下来使用图27、28说明从主机计算机3接受对卷(解压缩VOL)的读请求时的处理流程。此外,以下,说明由读请求指定的卷的访问地址的范围(排头地址和末端地址)与4KB边界一致的例子。另外读数据长度为4KB。

在S51中,存储控制器10从主机计算机3接收读请求(指令)。在读请求中包含对存储装置1的端口进行特定的信息(能够导出图13的端口#501的信息)、解压缩VOL的LUN、解压缩VOL的LBA、读数据长度。

在S52中,进行与图24的S2相同的处理。根据在S51中接收的对端口进行特定的信息、LUN和解压缩VOL管理表500,对解压缩VOL的VVOL#(相当于图13的VVOL#503的信息)进行特定。另外,将LBA变换为槽ID。接着从所特定出的VVOL#选择与本次读对象的解压缩VOL建立了对应的高速缓冲目录100,进行本次访问对象的LBA所属的槽的锁定。

在S53中,处理器21判定与解压缩VOL的LBA对应的高速缓冲段是否为已分配。该判定是与写处理的S3相同的处理。在段没有分配的情况下进入至S54,在S54中进行段的分配。S54的处理是与S4相同的处理。

在S55中,参照地址映射表650,对与解压缩VOL的读对象LBA对应的压缩VOL的LBA进行特定。然后将所特定出的LBA变换为槽ID,在压缩VOL的目录条目100的范围内,检索与压缩VOL的LBA对应的槽的SLCT110,进行槽的锁定。

在S56中,处理器21判定与压缩VOL的LBA对应的高速缓冲段是否为已分配,在没有分配的情况下进行段的分配(S57)。该处理是与S53、S54相同的处理。在高速缓冲段既已分配的情况下进入至S61。

在S58中,将压缩VOL的LBA转换为最终存储介质(SSD11或HDD12)的地址。压缩VOL的各区域(扇区)根据规定的规则而与最终存储介质的扇区建立了对应,因此,只要使用压缩VOL的LBA,就能够计算出压缩VOL的存储区域与哪个最终存储介质的哪个位置建立了对应。该处理与使用RAID技术保存数据的周知存储装置进行读、写处理时的处理相同,因此省略详细的说明。

在S59中,处理器21在DRAM25中确保暂时保存读数据的区域。接着对最终存储介质(SSD11、HDD12)发出指定了在S58中计算出的最终存储介质的地址的读指令,由此读取压缩数据并向DRAM25传送。

在S53中判断成段为已分配的情况下,在S60中,参照与压缩VOL的LBA对应的高速缓冲段的SGCT120的段地址120c(保存有LBA0),获取LBA0。

在S56中判断成段为已分配的情况下,在S61中,参照与该段对应的SGCT120的预演位映射120d和脏位映射120e,判断某一个位是否为ON。若某一个位为ON(S61:是),则进入至S63,若任一个位均为OFF(S61:否),则进入至S58。

在S62中,为了将在S59中传送至DRAM25的数据向高速缓冲存储器26传送,处理器21对高速缓冲存储器26发出将DRAM25的地址指定为传送源地址、另外将高速缓冲存储器26的段的地址指定为传送目的地地址的数据传送指令,进行向高速缓冲存储器26的数据传送。此外,关于高速缓冲存储器26上的传送目的地地址的信息,由于在与S57中分配的高速缓冲段(在S56中判定成段已分配的情况下的、已分配的段)对应的SGCT120的段地址120c中保存有LBA1,所以该地址成为传送目的地地址。另外,作为S59、S62的其他实施方式,也可以将来自最终存储介质的读数据不经由DRAM25地直接保存到由高速缓冲存储器26的LBA1地址指定的区域。

在S63中,为了能够将保存于高速缓冲存储器26的压缩数据作为非压缩数据(解压缩数据)向主机计算机3发送,进行针对在S62中保存于高速缓冲存储器26上的数据的区域而将LBA0空间的地址建立对应的处理。处理器21对高速缓冲存储器26发出LBA0映射指令,将高速缓冲存储器26上的保存有压缩数据的LBA1(在S62中使用的SGCT120的段地址120c)与在S54中确保的高速缓冲段的段地址(LBA0)建立对应。

在S64中,处理器21向高速缓冲存储器发送在S62中与LBA1建立了对应的LBA0、或将在S60中获取的LBA0指定为读取源地址的读指令,由此,从高速缓冲存储器26读取解压缩数据并向主机计算机3传送。

最后在S65中,解除解压缩VOL和压缩VOL的槽的锁定,但在此之前确认解压缩VOL的SLCT110(在S52中确保的槽的SLCT110)和压缩VOL的SLCT110(在S55中确保的槽的SLCT110)是否与干净队列连接,在没有与干净队列连接的情况下使其与干净队列连接。然后将与各SLCT110连接的SGCT120的预演位映射120d设为ON。然后,进行各槽的锁定解除(将槽状态110e的值设为0),并结束读处理。

此外,以上说明了由读请求指定的卷的访问地址的范围与4KB边界一致的例子,但在访问地址的范围与4KB边界不一致的情况下,例如在不足4KB的大小的数据读请求到来的情况下,只要从最终存储介质读取4KB的范围(非压缩时)的数据并保存于高速缓冲存储器26,然后仅从其选择由主机计算机3请求的范围的数据并向主机计算机3发送即可。另外,说明了由写请求指定的卷的访问地址的范围也与4KB边界一致的例子,但在写请求的访问地址的范围与4KB边界不一致的情况下、例如不足4KB的大小的数据写请求到来的情况下,只要暂且将包含该写访问地址范围的4KB的区域(非压缩状态下)的数据从最终存储介质读取至高速缓冲存储器26上、并将写数据盖写到所读取的高速缓冲存储器26上的数据即可。该情况下,在构成高速缓冲存储器26的存储介质为闪存器的情况下,无法进行盖写,但通过进行周知的在闪存器中采用的盖写时的处理、即将从最终存储介质读取的数据和写数据在数据缓冲器416中归并、且写入到未写入的(闪存器的)页的处理,而在表面上能够实现高速缓冲存储器26上的数据的盖写,因此,在此不说明该处理的详细情况。

[变形例1]

在以上说明的实施例中,说明了压缩VOL与一个RAID组固定地建立对应、且压缩VOL的地址与构成RAID组的各存储介质的地址之间的关系也是固定的结构的情况。但是,本发明的压缩VOL能够利用周知的存储装置所提供的各种各样的卷。以下作为一例,将美国专利申请公开第2013/0036250号说明书、美国专利申请公开第2010/0205390号说明书等所公开的、使用所谓自动精简配置(Thin Provisoning)技术而生成的虚拟的卷用作本发明的压缩VOL的情况为例进行说明。

通过自动精简配置技术生成的虚拟的卷(以下将该虚拟的卷称作“HVOL”),在初始状态下,在HVOL的各区域中没有分配特定的存储区域。存储装置当接受指定了HVOL上的位置(LBA)的访问请求时,确认在该位置是否分配有存储区域,在没有分配的情况下向该位置分配存储区域。

使用图29,说明本发明的变形例1中的存储装置1所管理的压缩VOL、逻辑卷(LDEV)、最终存储介质(PDEV)之间的关系。在本发明的变形例1的存储装置1中,作为以上说明的实施例中的压缩VOL5500’而使用HVOL。另外存储装置1除HVOL以外,还生成由多个最终存储介质11(12)构成的逻辑卷(以下将该逻辑卷称作“LDEV”)。该LDEV与以上说明的实施例中的压缩VOL5500相同,由一个RAID组构成一个LDEV。

在变形例1的存储装置1中,在从(图29中未图示的)解压缩VOL5000向压缩VOL5500’(HVOL)进行数据移动时,对进行数据移动的HVOL上的区域分配LDEV上的未使用区域。此外,存储装置1将HVOL上的存储空间分割成多个固定大小区域而进行管理,将该固定大小区域称作“页”。对各页赋予“页ID”这一唯一的识别编号,HVOL的排头的页的页ID为页0。并且对其以后的页按顺序赋予页1、页2、…的编号。在变形例1的存储装置1中,将1页的大小设为与1条带组的大小相等而进行管理,但1页的大小不限定于1条带组的大小,也可以采用其他大小。也可以是例如1页的大小与多个条带组的大小相等或比其大的结构。

另外,为了管理能够对HVOL的页分配的LDEV上的区域,在存储装置1中定义了LDEV池9000这一概念。存储装置1在向HVOL的页分配存储区域时,从存在于LDEV池9000内的LDEV上的区域选择1页量的存储区域而分配。

此外,由于开始进行从主机计算机3向解压缩VOL的数据写入而数据向压缩VOL(HVOL)移动,所以首先要将LDEV上的存储区域分配于HVOL,因此,LDEV上的保存数据的区域的合计容量(保存奇偶校验位的区域除外的容量)可以至少在初始状态下小于HVOL(多个)的合计容量。即构成LDEV的最终存储介质的合计容量可以小于全部HVOL的合计容量。在分配于HVOL的(LDEV的)存储区域增加而未使用的LDEV上的区域减少的时刻,进行将最终存储介质追加于存储装置1、从所追加的最终存储介质定义LDEV并将所定义的LDEV向LDEV池9000追加的作业即可。因此,通过对压缩VOL使用由自动精简配置技术形成的HVOL,能够进一步节省最终存储介质的容量。

另外,与在一个HVOL中利用一个LDEV池的情况相比较,在由多个HVOL共有LDEV池的情况下,能够有效地利用所共有的LDEV池。更详细而言,根据保存压缩后的数据的情况不同,在多个HVOL各自中需要分配存储区域的分配的页的数量不同,但通过将LDEV池共有,即使在存在例如压缩率高的(需要分配存储区域的页少的)HVOL,也能够向共有LDEV的其他HVOL分配存储区域,因此,能够有效地利用共有的LDEV池。

图30示出为了供存储装置1管理HVOL而使用的信息、即HVOL管理信息10000的例子。HVOL管理信息10000的各行(条目)由HVOL#10001、大小10002构成。HVOL#10001表示HVOL的识别编号,大小10002表示由HVOL#10001特定出的HVOL的大小。

图31示出用于供存储装置1管理分配于各HVOL上的页的存储区域的分配状态而使用的信息、即页映射表10010的例子。页映射表10000的各行(条目)具有HVOL#10001、页ID(P-ID)10002、LDEV#10003、槽#10004的项目,表示在由HVOL#10001、页ID(P-ID)10002特定出的HVOL上的区域(页)中,分配有将由LDEV#10003、槽#10004特定出的LDEV上的槽作为排头槽的1条带组量的区域。

HVOL由存储装置1的用户(管理者)定义。当存储装置1的用户(管理者)使用管理终端4来指示HVOL的生成时,存储装置1在HVOL管理信息10000中登录新生成的HVOL的识别编号(HVOL#)和HVOL的大小。而且,虽然在页映射表10010中登录新生成的HVOL的各页的信息,但最初仅登录HVOL#10001、页ID(P-ID)10002的信息,而在LDEV#10003、槽#10004中保存无效值(例如NULL)。在从解压缩VOL对HVOL(压缩VOL)的页进行数据转移时,在LDEV#10003、槽#10004的栏中保存有值。

另外,在向HVOL上的页分配区域时,由于需要对尚未分配于任何页的LDEV上的区域(称作未使用页)进行分配,所以存储装置1具有页空闲列表10100(图32)这一管理信息。页空闲列表10100的各条目具有LDEV#10110、槽#10120的项目,表示将由页空闲列表10100的LDEV#10110、槽#10120特定出的LDEV上的槽作为排头槽的1条带组量的区域是未使用页。在存储装置1向HVOL上的页分配区域时,从页空闲列表10100获取未使用的槽(1条带组量),并向HVOL上的页分配。

接下来,说明变形例1中的存储装置1所进行的、从主机计算机3有数据写请求时的处理、有数据读请求时的处理的流程。该处理与以上说明的实施例中的图24~28的处理大致相同。例如从主机计算机3接受对解压缩VOL5000的写请求和写数据并将接收到的写数据保存于高速缓冲存储器26的处理与图24的处理相同,因此,以下不进行说明。以下,关于向压缩VOL(HVOL)的数据转移处理、读处理,说明与以上说明的实施例不同的部分。

使用图33,说明向压缩VOL(HVOL)的数据转移处理的流程。图25的S23、S24的处理在图33中变更为S23’、S241、S242,除此以外,图25的处理与图33的处理相同。

在S21中,处理器21判定是否满足规定条件,在S22中进行成为进行转移处理的对象的解压缩VOL的槽的选择及所选择的槽的锁定。在变形例1的S21中,对于某个解压缩VOL,在对该解压缩VOL写入的数据(高速缓冲存储器26上)的脏量存在1页(即1个或多个条带组量)以上的条件的情况下,判断成满足规定条件。在S23’中,进行压缩VOL(HVOL)上的盘区域分配。首先参照卷映射表600,选择与当前处理对象的解压缩VOL601对应的压缩VOL602及最终写入位置603。然后确定从解压缩VOL将数据向压缩VOL602的最终写入位置603的下一LBA开始的1条带组量的区域移动。接着确定将本次处理对象的解压缩VOL的各区域(在S22中选择的槽内的保存有脏数据的区域)与压缩VOL的哪个位置建立对应,并在地址映射表650中保存所确定的内容。

接着在S24’中,对在S23’中确定要移动数据的作为移动目的地的区域的HVOL上的1页量的区域(1个或多个条带组量的区域),分配LDEV的区域。关于该处理使用图34进行说明。

在S241中,将在S23’中选择的HVOL上的1页量区域的排头LBA(其为卷映射表600内最终写入位置603的下一LBA)变换为页ID。为了从LBA计算出页ID,只要将LBA除以1页的大小即可。例如在1页的大小与N条带组(N≥1)的大小相等而1条带组的大小为48KB的情况下,为了从LBA计算出页ID,只要使LBA除以(48×N)KB即可。

在S242中,参照页映射表10010,判定是否对在S241中计算出的页ID的页分配了LDEV上的区域(在LDEV#10013、槽#10014中是否保存有不为无效值的值)。在区域已分配的情况下进入至S244。在区域未分配的情况下,从页空闲列表10100获取1条带组量的LDEV上的区域,并将所获取的1条带组量的区域的信息登录于页映射表10010,由此,对HVOL上的页分配区域(S243)。然后进入至S244的处理。

在S244中,参照页映射表10010,获取分配于在S241中计算出的页ID的页的LDEV上的区域的信息(LDEV#10013、将槽#10014作为排头槽的1页量的槽的槽编号)。同时,也计算出与在此获取的1页量的槽对应的奇偶校验位槽的槽编号。S245进行与图25的S24相同的处理。即对在S244中获取的槽进行锁定,并进行高速缓冲段的分配。

当S245的处理结束时,进入至S25,S25以后的处理与图25的处理相同,因此省略说明。

若像这样使用压缩技术,则会将与来自主机的写数据不同大小的压缩数据保存于最终存储介质,但随着向HVOL的数据移动,对将HVOL分割而成的固定大小区域从LDEV分配存储区域,由此能够提高容量效率。另外,存储控制器掌握了HVOL的页大小、LDEV的条带组的大小、更新数据的压缩后的大小。因此,存储控制器在追写更新数据的情况下,能够根据追写的压缩后的更新数据的大小,不会过与不足地向HVOL上的页分配HVOL上的区域(不会过剩地分配区域),因此,能够提高容量效率。

接下来说明从主机计算机3接受对卷(解压缩VOL)的读请求时的处理流程。该处理仅将图27的S55、S56分别变更为以下说明的S55’、S56’的处理,除此以外与图27相同,因此省略图示。

在S55’中,参照地址映射表650,对与解压缩VOL的读对象LBA对应的压缩VOL(HVOL)的LBA进行特定。接着将所特定的HVOL的LBA变换为页ID,参照页映射表10010,对分配于该页ID的LDEV的槽(由LDEV#10013、槽#10014特定出的槽)进行特定,并进行所特定出的LDEV的槽的锁定。

在S56’中,处理器21对与压缩VOL的LBA对应的LDEV上的高速缓冲段进行特定,判定该高速缓冲段是否为已分配,在未分配的情况下进行段的分配(S57)。S57以后的处理与图27相同。另外对与压缩VOL的LBA对应的LDEV上的高速缓冲段进行特定的处理是使用自动精简配置技术的在存储装置中从以往进行的处理,是周知技术,因此省略详细的说明。在高速缓冲段既已分配的情况下,进入至S61,其以后的处理与图27相同。

[变形例2]

在以上说明的实施例中,对解压缩VOL写入的数据,在每次高速缓冲存储器26中蓄存1条带组量的数据时进行向压缩VOL的移动。另外,移动时,写入于解压缩VOL的数据与该数据在解压缩VOL上的写入位置无关地,以追写要领写入到压缩VOL(LDEV、进而最终存储介质),因此,也存在解压缩VOL上连续的数据(区域)在压缩VOL(LDEV)上不连续地配置的情况。当进行这样的配置时,顺序读取(sequential read)性能与普通存储装置(保存非压缩数据的存储装置)相比恶化。以下,说明将数据从解压缩VOL向压缩VOL移动时考虑解压缩VOL上的数据配置而向压缩VOL移动数据的方法。

在变形例2的存储装置1中,与变形例1同样地,对压缩VOL使用由自动精简配置技术形成的虚拟的卷(HVOL)。另外HVOL的1页的大小在变形例1中为1条带组量的大小,但在变形例2中,设为多个条带组(作为一例为1000条带组)。另外为了简化说明,以1条带组为3槽量(48KB)的大小为前提进行说明。因此,1页的大小为48×1000KB。

在以上说明的实施例1中,写入于一个解压缩VOL的数据追写于与一个解压缩VOL建立了对应的一个压缩VOL的某一区域,但在变形例2中,使各解压缩VOL与压缩VOL的页大小相同,分割成页(48×1000KB)单位,对各页赋予页编号而进行管理。关于对各页赋予的页编号,对位于解压缩VOL的排头的页赋予页0的编号,以下按顺序赋予页1、页2…。此外,解压缩VOL的页和压缩VOL的页不必为相同大小,即使期待数据被压缩地保存而压缩VOL的页大小小于解压缩VOL的页大小,本发明也是有效的。

使用图35,说明变形例2中的卷映射表600’的内容。在变形例2的存储装置1中,写入于解压缩VOL的页0的数据向压缩VOL(HVOL)的页0写入,以下同样地,写入于解压缩VOL的页1、2…的数据分别向压缩VOL(HVOL)的页1、2…写入。因此,在卷映射表600’中,具有VVOL#601’、页ID(P-ID)602’、HVOL#603’、P-ID604’、最终写入位置605’的项目,并管理表示将由VVOL#601’、页ID(P-ID)602’特定出的解压缩VOL上的区域中所写入的数据保存于由HVOL#603’、P-ID604’特定出的压缩VOL上的页的信息。另外最终写入位置605’的信息也按每个解压缩VOL的页而进行管理。

除此以外,在变形例2的存储装置1中,与变形例1同样地,作为用于管理HVOL的管理信息,具有HVOL管理信息10000、页映射表10010、页空闲列表10100,除页大小为1000条带组以外的方面,与变形例1中使用的管理信息的各项目相同,因此省略说明。另外,解压缩VOL和LDEV的高速缓冲管理信息也与以上说明的实施例、变形例1中使用的高速缓冲管理信息相同,但在变形例2中,解压缩VOL用的脏队列按每个解压缩VOL的页而存在一个脏队列,这一点与以上说明的实施例不同。

接下来说明变形例2中的存储装置1所进行的写处理。变形例2中的写处理的流程基本上与以上说明的实施例、变形例1无区别,将接收到的写数据保存于高速缓冲存储器26的处理与图24的处理相同,因此省略说明。另外从解压缩VOL向压缩VOL的数据转移处理与图33几乎无区别,因此使用图33进行说明。此外在以上说明的实施例、变形例1中,向压缩VOL的数据转移处理按每个解压缩VOL而进行,但在变形例2中,按每个页进行。

在S21中,处理器21判定是否满足规定条件,但在变形例2中,判定与解压缩VOL的各页的脏队列连接的各槽的脏量110f的合计是否为规定量(例如1页大小的60%以上等)以上,在为规定量以上的情况下进入至S22以后的处理。

S22的处理与以上说明的实施例相同,但从槽ID小的槽开始按顺序选择与脏队列连接的槽,并以使所选择的槽的脏数据的区域的脏量的合计为条带组大小的倍数且该值尽可能大的方式进行选择。因此,在选择全部脏数据时若脏数据量为条带组大小的倍数,则选择全部槽。

S23的处理也与以上说明的实施例相同,但在变形例2中,将处理对象的解压缩VOL的各区域从LBA小的顺序以升序与压缩VOL上的区域建立对应,并使解压缩VOL上的数据配置顺序与压缩VOL上的数据配置顺序相同。以后的处理与以上说明的实施例和变形例1相同。

由此,在解压缩VOL上连续地配置的各数据在压缩VOL上也以升序配置。因此,然后能够相对于解压缩VOL读取连续数据,即在从主机计算机3有所谓顺序读取访问的情况下,能够从压缩VOL大致顺序地读取压缩数据。

以上说明了本发明的实施例,但其为用于说明本发明的例示,不表示将本发明限定于以上说明的实施例。本发明也能够以其他各种方式实施。例如在实施例所记载的存储装置中,记载了两个存储控制器,但存储控制器的数量不限定于此,可以具有一个以上的任意数量的控制器。另外控制器内的处理器、主机接口的数量也不限定于附图中记载的数量。

另外,在以上说明的变形例2中,与变形例1同样地将由自动精简配置技术形成的HVOL用作压缩VOL,但即使与最初说明的实施例同样地,将不使用自动精简配置技术的逻辑卷用作压缩VOL,也能够实现实施例2的方案。

附图标记说明

1:存储装置

2:SAN

3:主机计算机

4:管理装置

10:存储控制器

11:SSD

12:HDD

21:处理器

22:内部开关

23:盘接口

24:主机接口

25:DRAM

26:高速缓冲存储器

27:节点I/F

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