CN102209953B - 压缩和存储数据元素的存储系统和存储控制方法 - Google Patents

压缩和存储数据元素的存储系统和存储控制方法 Download PDF

Info

Publication number
CN102209953B
CN102209953B CN200980144865.2A CN200980144865A CN102209953B CN 102209953 B CN102209953 B CN 102209953B CN 200980144865 A CN200980144865 A CN 200980144865A CN 102209953 B CN102209953 B CN 102209953B
Authority
CN
China
Prior art keywords
page
true
true page
write
data element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980144865.2A
Other languages
English (en)
Other versions
CN102209953A (zh
Inventor
志贺贤太
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to CN201410126486.3A priority Critical patent/CN103838525B/zh
Publication of CN102209953A publication Critical patent/CN102209953A/zh
Application granted granted Critical
Publication of CN102209953B publication Critical patent/CN102209953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Abstract

基于多个存储设备形成池。该池由多个真实页构成。不同长度的真实页包括在该多个真实页中。在组成虚拟卷的多个虚拟页中,控制器压缩写数据元素用于写目的地虚拟页,基于包括压缩的写数据元素的数据单元的数据长度选择真实页长度的真实页,并且将选择的真实页分配到写目的地虚拟页。

Description

压缩和存储数据元素的存储系统和存储控制方法
技术领域
本发明总地涉及压缩和存储数据元素的存储控制。
背景技术
例如,专利引用1中揭示的存储系统已知是压缩和存储数据元素的存储系统。
专利引用1:日本延迟公开专利公开2006-259962。
发明内容
技术问题
存储系统通常包括控制器和一组存储设备。数据元素由控制器压缩,并且压缩的数据元素存储在存储空间中,存储空间基于一组存储设备。
通常,如果压缩方法不同,数据元素被压缩后的长度是不同的,或者即使压缩方法相同,根据压缩前数据元素的内容,数据元素被压缩后的长度也是不同的。因此,提供给控制器的存储器中存储的管理信息量会变大。原因是,在该管理信息中,例如,需要包括指定存储空间中的空存储区域的位置和长度的信息元素,并且当空存储区域的数目变大时这些信息元素的数目增加。另外,在该管理信息中,例如,需要包括指定已经被压缩的数据元素的存储位置和长度的信息元素,并且当被压缩的数据元素的数目变大时,这些信息元素的数目也增加。
作为减小管理信息量变大的可能性的一个方法,考虑了一种方法,将存储空间划分为固定长度的存储区域(下文中称为固定大小区域),并且存储已经被压缩在一个固定大小区域中的一个数据元素;换句话说,以这些固定大小区域为单位执行管理。
然而,根据该方法,如果固定大小区域的长度长,在一个固定大小区域中可能存在长的空区域(即除了由压缩的数据元素占据的区域之外的区域),并且结果容量效率将变差。另一方面,如果固定大小区域的长度短,尽管在一个固定大小区域内存在的空区域的长度变短,必须被管理的固定大小区域的数目变大。由此,如果对于管理信息量存在限制,如果固定大小区域的长度短,能够被管理的一组固定大小区域的总长度短,并且结果是能够存储在存储空间中的数据长度(即被压缩数据元素的总长度)也短。换句话说,容量可扩展性可能恶化。
因而,本发明的目的是提供其中压缩了数据元素的存储系统中的高容量效率,同时确保容量可扩展性不下降。
技术方案
基于包括在存储系统中的多个存储设备提供了池。该池由多个真实页(物理存储区域)组成。不同长度的真实页包括在该多个真实页中。
控制器包括:压缩部、池管理部和I/O处理部。
压缩部对虚拟卷中包括的多个虚拟页(虚拟存储区域)中的写目的地虚拟页压缩写数据元素。
池管理部选择满足以下描述的(条件A)和(条件B)的真实页,并将所选择的真实页分配给所述写目的地虚拟页:
(条件A):所述真实页的真实页长度是基于具有压缩后的写数据元素的数据单元的长度;
(条件B):所述真实页未被分配给任何虚拟页。
I/O处理部在已选择的真实页中存储所述数据单元。
数据单元由所述压缩后的写数据元素自身组成,或由特定信息和所述压缩后的写数据元素组成。该特定信息可以是例如数据整体性码(例如ECC(错误校正码))。
这里,“数据元素”(例如,写数据元素)是用于一个虚拟页的元素,并且可以具有例如与虚拟页长度相同的长度。通过使得数据元素被压缩,成为比虚拟页长度短的数据元素(有时由于数据元素的内容等,不会发生这种情况)。
压缩部、池管理部和I/O处理部中的至少一个可以由硬件、计算机程序或其组合(例如,一个部分可以由计算机程序实施而其余部分可以由硬件实施)组成。
附图说明
图1是根据本发明第一实施例的计算机系统的结构图;
图2是示出管理终端102的结构的图;
图3是各种表的结构图;
图4示出了在本发明第一实施例中的池管理屏幕401的示例;
图5是出了虚拟LU管理屏幕501的示例;
图6是写处理的流程图;
图7是本发明第一实施例中的真实页读处理的流程图;
图8是本发明第一实施例中的真实页写处理的流程图;
图9是缺省长度真实页选择处理的流程图;
图10是真实页选择处理的流程图;
图11是本发明第一实施例中的读取处理的流程图;
图12示出了本发明第二实施例的非易失性存储器130中保存的程序和表;
图13是本发明第二实施例中的表1300、1310、1320和1330的结构图;
图14示出了本发明第二实施例中的池管理屏幕1401的示例;
图15示出了真实页长度管理屏幕1501的示例;
图16是本发明第二实施例中缺省长度真实页选择处理的流程图;
图17是本发明第二实施例中的真实页选择处理的流程图;
图18是大块无用数据(chunk garbage)收集处理的流程图;
图19是本发明第三实施例中的虚拟页表1900的结构图;
图20是本发明第三实施例中的真实页选择处理的流程图;
图21是本发明第四实施例中的虚拟页表2137的结构图;
图22是本发明第四实施例中的真实页读处理的流程图;
图23是临时真实页写处理的流程图;
图24是本发明第四实施例中的读处理的流程图;
图25是异步压缩处理的流程图;
图26是出了本发明第一实施例的概括;
图27示出了实施例的概括,其中在本发明第一至第三实施例的组合中,虚拟LU是次级LU;
图28A是本发明第四实施例的变型中的虚拟页表2137的结构图;
图28B示出了在本发明第四实施例的变型中存储在非易失性存储器130中的访问频率管理程序;
图28C示出了在本发明第四实施例的变型中改变异步压缩处理的位置;
图29A示出了如同在本发明第二实施例的第二变型例中执行的在池子区域之间复制数据单元;
图29B示出了在本发明第二实施例的第二变型例中作为复制源的真实页的状态已经被从“已使用”更新为“未使用”;以及
图29C示出了作为复制源的池子区域的状态已经被从“已使用”更新为“未使用”。
附图标记说明
110:存储系统
具体实施方式
将参考附图说明本发明的几个实施例。应当理解在下文中当相同类型的元素没有被特别区分时,只使用相同的基本数字,但是,当要区分相同类型的元素时,将使用基本数字和附带附图标记的组合。
发明方式1
图26示出了本发明第一实施例的概括。
存储系统110包括控制器120和池2601。
池2601由多个池子区域2603(例如三个池子区域2603A至2603C)组成。每个池子区域2603包括多个真实页2607。这些真实页2607的长度(即真实页长度)对于每个池子区域2603定义。例如,池子区域2603B中的真实页2607B的长度可以长于池区域2603A中的真实页2607A的长度,并且池子区域2603C中的真实页2607C的长度可以长于真实页2607B的长度。一个池子区域2603中的所有的真实页是相同长度。池2601是基于多个HDD(硬盘驱动)的物理存储空间,并且因此,每个真实页2607是物理存储区域。
控制器120将虚拟LU(逻辑单元)2605提供给主机。每个虚拟LU 2605由多个虚拟页2609组成。虚拟LU2605是虚拟逻辑卷(即不基于HDD的卷)。因此,每个虚拟页2609是虚拟存储区域。一个虚拟LU 2605中的所有虚拟页2609是相同长度。真实页2607的最大长度可以例如与虚拟页2609的长度相同。
下面,将说明第一实施例中执行的处理的概括。
在从主机接收到写请求时,控制器120对于每个写数据元素(出于说明方便,在图中简写为“WDE”)(换种方式,对于属于由该写请求指定的写范围的每个虚拟页)执行下述处理。即,控制器120压缩写数据元素。接下来,控制器120选择真实页2607,该真实页2607的长度基于该压缩的写数据元素(出于说明方便,在图中简写为“CWDE”)中包括的数据单元的长度,并且是没有被分配给任何虚拟页2609的真实页2607(换句话说,未使用的真实页)。以更加具体的方式,例如,控制器120选择长度满足下面两个条件(a)和(b)的真实页2607:
(a)大于或等于数据单元的长度;
(b)与该数据单元的长度的差异最小。
根据图26中的示例,由于数据单元的长度与真实页2607B的长度相同,相应地选择真实页2607B。并且控制器120将该数据单元存储在已经被选择的真实页2607B中。数据单元可以是压缩的写数据元素本身,或者可以由具有附加的数据整体性码(例如ECC(错误校正码))的压缩的写数据元素组成。通过将数据整体性码附加到压缩的写数据元素,可以防止压缩的写数据元素的数据错误。
下面,将详细说明本发明的第一实施例。应当理解,下面出于说明方便,假设数据单元是压缩的数据元素本身。
图1是根据本发明第一实施例的计算机系统的结构图。
多个主机101以及存储系统110连接到第一通信网络103,第一通信网络103例如是SAN(存储区域网络)。另外,管理终端102和存储系统110连接至第二通信网络,第二通信网络例如是管理网络104(例如可以是LAN(局域网))。
主机101是向存储系统110发出I/O请求(写请求或读请求)的计算机。管理终端102是用于管理存储系统110的终端。
存储系统110包括控制器120和一组存储设备114。存储设备组114包括多个HDD 111。应当理解,替代HDD 111,也可以利用其它类型的物理存储设备,例如闪存设备等。
控制器120接收从主机100发出的I/O请求,并且在处理该I/O请求时访问一个或多个HDD 111。该控制器120包括多个主机IF 121,管理IF 122,CPU123,主存储器(MAIN)124,高速缓存存储器(CM)125,压缩和扩展电路(C/E电路)126,非易失性存储器130以及HDD IF 127。
主机IF 121是用于与外部设备(例如主机101等)通信的接口电路。
管理IF 122是用于经由管理网络104与例如管理终端102的外部设备通信的接口电路。
HDD IF 127是用于与HDD 111通信的接口电路。
高速缓存存储器125可以是例如易失性存储器。根据已经从主机101接收的写请求而写入的数据以及根据已经从主机101接收的请求而读取的数据被临时存储在该存储器125中。
压缩和扩展电路126是硬件电路,并且压缩或扩展已经被输入的数据元素,然后输出该数据元素。代替由硬件电路执行,该压缩和扩展中的至少一个也能由执行计算机程序的CPU 123执行。
管理终端通信程序131、池管理程序132、I/O处理程序133、真实LU表134、池表135、真实页表136、虚拟页表137以及虚拟LU表138存储在非易失性存储器130中。存储在非易失性存储器130中的这些计算机程序被载入主存储器124,然后由CPU 123执行。管理终端通信程序131是用于与管理终端102(更具体地,与下面将会描述的存储通信程序149)通信的程序。池管理程序132是用于执行与池管理(例如真实页的选择等)相关的处理的程序。I/O处理程序133是用于执行与I/O(例如向真实页存储压缩数据等)相关的处理的程序。这些各种程序和表将在下面详细描述。在下面的说明中,被描述作为由计算机程序执行的处理实际上由执行这些计算机程序的CPU执行。
图2是示出管理终端102的结构的图。
该管理终端102是计算机并且例如包括输入设备142、输出设备143、CPU144、主存储器145、管理IF 146以及HDD 147。每个都连接到内部总线150。
该输入设备142是点击设备(例如鼠标)和/或键盘。输出设备143是例如显示设备。
用户接口控制程序(下文中称为“UI控制程序”)148以及存储通信程序149存储在HDD 147中(一些其它类型的存储设备也可用)。这些计算机程序被载入主存储器145,并且一旦被载入,由CPU 144执行。管理IF 146是用于经由管理网络104与外部设备(例如存储系统110等)通信的接口电路。UI控制程序148是用于在输出设备143上显示GUI(图形用户接口)的程序。存储通信程序149是用于与存储系统110通信的计算机程序。UI控制程序148以及存储通信程序149将在下面详细描述。
图3是示出各种表的结构图。
真实LU表143是用于管理与真实LU相关的信息的表。具体地,对于每个真实LU,该真实LU表134具有例如其中记录了真实LU ID的域301以及其中记录容量信息的域302。用一个真实LU作为例子(在该段中,在下文中,被称为“目标真实LU”),各种类型的信息记录在该表134中,如下所述。真实LU ID是表示用于目标真实LU的识别符的信息。容量信息是表示目标真实LU的存储容量的信息。这里,“真实LU”是基于HDD111的逻辑卷,并且该方面不同于虚拟LU。
池表135是用于管理与池相关的信息的表。具体地,对于组成池的每个真实LU,该池表135可以具有例如其中记录了真实LU ID的域311,其中记录了其真实页长度的域312以及其中记录了第一真实页ID的域313。用组成池2601的真实LU的其中一个作为例子(在该段中,在下文中,被称为“目标真实LU”),在该表135中记录各种类型的信息,如下所述。真实LU ID是表示目标真实LU的识别符的信息。真实页长度信息是表示组成目标真实LU的真实页的长度的信息。第一真实页ID是表示作为目标真实LU的第一个的真实页的识别符的信息。根据下面说明,在该第一实施例中,已经参考图26说明的池子区域2603是真实LU。原因是对于每个真实LU定义了真实页长度。因此,能够基于目标真实LU的容量以及目标真实LU的真实页的真实页长度来计算组成目标真实LU的真实页数目。
真实页表136是用于管理与真实页相关的信息的表。具体地,例如,对于每个真实页,真实页表136可以具有其中记录了真实页ID的域321、其中记录了其真实LU ID的域322以及其中记录了其状态信息的域323。用一个真实页作为例子(在该段中,在下文中,被称为“目标真实页”),在该表136中记录各种类型的信息,如下所述。真实页ID是表示该目标真实页的识别符的信息。并且真实LU ID是表示包含该目标真实页的真实LU的识别符的信息。另外,状态信息是表示该目标真实页的状态的信息。例如,如果该目标真实页被分配给某虚拟页,其状态信息的值是“已使用”,而如果该目标真实页没有被分配给任何虚拟页,其状态信息的值是“未使用”。应当理解,尽管表示真实页的长度的信息没有记录在该表136中,使用与该真实页对应的真实LU ID作为关键字,通过参考池表135,可以指定真实页的长度。原因是与真实LU ID对应的真实页长度信息记录在池表135中。
虚拟页表137是用于管理与虚拟页相关的信息的表。具体地,例如,对于每个虚拟页,虚拟页表137可以具有其中记录了虚拟页ID的域331、其中记录了其真实页ID的域332以及其中记录了其压缩的数据长度信息的域333。用一个虚拟页作为例子(在该段中,在下文中,被称为“目标虚拟页”),在该表137中记录各种类型的信息,如下所述。虚拟页ID是表示该目标虚拟页的识别符的信息。并且真实页ID是表示分配给该目标虚拟页的真实页的识别符的信息。应当理解,如果没有真实页被分配给目标虚拟页,该真实页ID的值是例如“N/A”(没有指派)。另外,压缩数据长度信息是表示存储在分配给目标虚拟页的真实页中的压缩后的数据元素的长度。如果没有真实页被分配给目标虚拟页,则该压缩数据长度信息的值是例如“N/A”。压缩的数据长度信息是例如在后述的真实页读处理和写处理中,用于指定应当向哪个已经被读取的数据元素部分施加扩展处理。例如,当已经从被分配给目标虚拟页的真实页读取的数据元素的长度可以是512kB并且与目标虚拟页对应的压缩数据长度信息的值可以表示346kB,可以发现扩展处理应当被施加到512kB的数据元素的346kB的数据元素部分。
虚拟LU表138是用于管理与虚拟LU相关的信息的表。具体地,例如,对于每个虚拟页,虚拟LU表138可以具有其中记录了虚拟LU ID的域341、其中记录了容量信息的域342、其中记录了第一虚拟页ID的域343以及其中记录了压缩信息的域344。用一个虚拟LU作为例子(在该段中,在下文中,被称为“目标虚拟LU”),在该表138中记录各种类型的信息,如下所述。虚拟LU ID是表示该目标虚拟LU的识别符的信息。容量信息是表示对于目标虚拟LU定义的容量的信息,换句话说,表示目标虚拟LU的容量的信息。第一虚拟页ID是表示作为目标虚拟LU的第一个的虚拟页的识别符的信息。压缩信息是表示是否压缩了存储在目标虚拟LU中的数据的信息。具体地,如果例如压缩了存储在目标虚拟LU中的数据,则该压缩信息的值是“开”,但是如果没有压缩存储在目标虚拟LU中的数据,则该压缩信息的值是“关”。
现在,池2601中的真实LU的真实页的长度可以例如由管理终端102的用户通过使用图4所示的池管理屏幕401来设置。另外,设置虚拟LU的容量,并且存储在这些虚拟LU中的数据元素是否被压缩可以例如由管理终端102的用户通过使用图5所示的虚拟LU管理屏幕501来设置。
图4示出了该池管理屏幕401的例子。
该池管理屏幕401是由UI控制程序149显示的GUI。在该池管理屏幕401上,设置了用于要被添加到池2601中的真实LU的ID的输入域402、以及用于输入要被添加的该真实LU的真实页的长度的输入域403。使用图2所示的输入设备142,用户向真实LU ID输入域402输入要被添加的真实LU的ID,并且也将该真实LU的真实页的长度输入到真实页大小输入域403。输入的真实LU ID可以例如是已经记录到真实LU表301中的多个真实LU ID之一。当用户按下“确认”按钮时,存储通信程序149通知存储系统110表示已经输入到输入域402的真实LU ID的信息和已经输入到输入域403的真实页长度。并且在由存储系统110中的管理终端通信程序131接收到该信息时,池管理程序132执行下述处理。即,池管理程序132向池表135添加下述记录:其中记录了表示由管理终端通信程序131接收的(换句话说,由用户输入的)真实LU ID和真实页长度信息的信息。另外,池管理程序132向真实页表136添加与所有真实页对应的记录,这些真实页组成已经被添加池2601的真实LU(即,包括它们的真实页ID和它们的真实LU ID的记录)。
图5示出了虚拟LU管理屏幕501的例子。
虚拟LU管理屏幕501是由UI控制程序149显示的GUI。在该虚拟LU管理屏幕501上,设置了用于虚拟LU的输入域502、用于输入该虚拟LU的容量的输入域503以及用于选择是否压缩该虚拟LU中存储的数据的选择按钮504。使用图2所示的输入设备142,用户向域502输入虚拟LU的期望ID,并且还向输入域503输入该虚拟LU的容量。另外,用户使用选择按钮504指定“压缩开”或“压缩关”。
当用户按下“确认”按钮时,存储通信程序149通知存储系统110表示已经输入到输入域502的虚拟LU ID和已经输入到输入域503的容量的信息以及与已经被指定的选择按钮504对应的信息(即“压缩开”或“压缩关”)。并且在由管理终端通信程序131接收到该信息时,池管理程序132执行下述处理。即,池管理程序132向虚拟LU表138添加下述记录:其中记录了由管理终端通信程序131接收的(换句话说,由用户输入的)的信息。
下面,将说明第一实施例中执行的处理。
图6是用于写处理的流程图。
该写处理是下述处理:如果由从主机101接收的写请求指定的LU是虚拟LU,并且如果与该虚拟LU对应的压缩信息的值是“开”,则执行的处理。具体地,在接收到写请求时,池管理程序132决定从该接收到的写请求指定的LUN中识别的LU是否是虚拟LU,并且与该虚拟LU对应的压缩信息的值(即记录在虚拟LU表138中的值)是否是“开”。如果该决定结果是肯定的,则开始图6所示的写处理。
池管理程序132指定与写请求指定的写范围(例如与LBA和写数据的长度)对应的一个或多个虚拟页(步骤S601)。
接下来,在步骤S601已经指定的一个或多个虚拟页中,池管理程序132将第一虚拟页作为(步骤S602)下述处理(换句话说,步骤S603至S605)的目标。
接下来,池管理程序132在作为处理目标的虚拟页上执行真实页读处理(步骤S603)。下面将参考图7描述该真实页读处理。
接下来,池管理程序132在作为处理目标的虚拟页上执行真实页写处理(步骤S604)。下面将参考图8描述该真实页写处理。
接下来,池管理程序132决定是否完成了与步骤S601中指定的写范围对应的所有虚拟页的处理(步骤S605)。如果在步骤S605的该决定结果是否定的(步骤S605,否),则池管理程序132将没有被处理的虚拟页中的下一个虚拟页作为后续处理(换句话说,由步骤S603至S605处理)的目标(步骤S606),并对作为处理目标的该虚拟页执行步骤S603。另一方面,如果步骤S605中的决定结果是肯定的(步骤S605,是),则该写处理终止。
图7是真实页读处理的流程图。
该真实页读处理是在图6的步骤S603中执行的处理。
池管理程序132然后指定与作为处理目标的虚拟页对应的真实页(在图7和图8中,缩写为目标真实页“TRP”)(步骤S701)。如果池管理程序132在步骤S701的真实页指定中成功(步骤S702,是),则执行步骤S705以及后续步骤的处理,另一方面,如果在真实页的指定中失败(步骤S702,否),则执行步骤S703和S704的处理。
如果在步骤S702中在真实页的指定中有失败(步骤S702,否),池管理程序132决定这是第一次写(步骤S703),在将数据元素(高速缓冲存储器125中的数据元素)写到作为处理目标的虚拟页之前和/或之后,在需要的时候添加一个或多个“0”,并且将添加0的该数据元素作为(步骤S704)后续处理的目标(写数据元素)。换句话说,如果将被写到作为处理目标的虚拟页的数据元素比虚拟页长度短,通过在步骤S704中的该数据元素前和/或后添加具有没有含义(例如0等)的数据(具体地,指定“0”的位数据),通过将该数据元素的整个长度作为与虚拟页的长度相同来执行处理。
另一方面,如果在步骤S702的真实页的指定已经成功(步骤S702,是),则池管理程序132决定在作为处理目标的虚拟页上写的数据元素的长度是否与虚拟页长度相同(步骤S705)。如果该步骤S705中的决定的结果是否定的(步骤S705,否),则执行步骤S706和后续步骤的处理。另一方面,如果该步骤S705的决定的结果是肯定的(步骤S705,是),则池管理程序132将写到作为处理目标的虚拟页上的数据元素本身作为后续处理目标(即写数据元素)(步骤S710),并且然后该处理序列终止。
如果在该步骤S705的决定结果是否定的(步骤S705,否),则I/O处理程序133读取存储在步骤S701中发现的真实页上的数据元素(步骤S706)。接下来,池管理程序132输入已经被读到压缩和扩展电路126的该数据元素,并且压缩和扩展电路126对该压缩的数据元素(换句话说,已经被读取的数据元素)执行扩展(步骤S707)。并且I/O处理程序133使用已经被扩展的该数据元素来盖写作为处理目标的虚拟页上写的数据元素(步骤S708)。另外,池管理程序132将步骤S708中被盖写的数据元素作为用于后续处理的目标(即写数据元素)(步骤S709)。
下面,在图8至图10的说明中,从步骤S704、S709和S710得到的数据将被称为“写数据元素”。从步骤S704得到的该写数据元素或者是本身被写到作为处理目标的虚拟页上的数据元素(换句话说,原始数据元素),或者是由该数据元素和在该数据元素前和/或后添加的0组成的数据元素。并且从步骤S709得到的写数据元素是下述数据:其中使用已从步骤S701中指定的真实页读取的并且扩展的数据元素盖写在作为处理目标的虚拟页上写的数据元素(换句话说,原始数据元素)。另外,作为步骤S710的处理结果的写数据元素是写在作为处理目标的虚拟页上的写数据元素本身(换句话说,原始数据元素)。
图8是真实页写处理的流程图。
该真实页写处理是在图6的步骤S604中执行的处理。
池管理程序132向压缩和扩展电路126输入写数据元素(WDE),并且压缩和扩展电路126压缩写数据元素(步骤S801)。结果,例如,输入到电路126的写数据元素(压缩前的写数据元素(在图中简写为“UWDE”))和已经由电路126压缩的写数据元素(在图中简写为“CWDE”)存在于高速缓存存储器125中。
接下来,池管理程序132决定在步骤S801压缩的写数据元素的长度是否大于或等于虚拟页长度(步骤S802)。
如果步骤S802的决定的结果是否定的(步骤S802,否),则池管理程序132将压缩的写数据元素作为写目标(步骤S803)。接下来,池管理程序132执行图10所示的真实页选择处理(在图中简写为“RP选择处理”)(步骤S804)。换句话说,池管理程序132参考池表135的域312,并且在长度大于或等于压缩的写数据元素的长度的真实页长度中指定最短的真实页长度。(步骤S1001)。接下来,池管理程序132参考真实页表136,并且选择作为由指定的真实页长度的真实页构成的真实LU中的真实页的真实页,并且其状态信息值是“未使用”(步骤S1002)。
另一方面,如果在步骤S802的决定的结果是肯定的(步骤S802,是),则池管理程序132将压缩前的写数据元素作为写目标(步骤S811)。原因是如下的事实:在步骤S802的决定的结果是肯定的表示压缩基本上没有意义,因为,即使压缩写数据元素,它并不变得更短。接下来,池管理程序132执行图9所示的缺省长度真实页选择处理(在图中简写为“DLRP选择处理”)(步骤S812)。换句话说,池管理程序132参考池表135和真实页表136,并且在真实页长度与虚拟页长度相同且状态信息值是“未使用”的真实页中选择真实页(步骤S901)。
在步骤S804或步骤S812之后,执行步骤S805和后续步骤。
换句话说,池管理程序132决定在步骤S804或步骤S812中,真实页的选择是否成功(步骤S805)。如果在步骤S805的决定的结果是否定的(步骤S805,否),则池管理程序132向主机101响应错误(步骤S813)。
如果在步骤S805的决定的结果是肯定的(步骤S805,是),则执行步骤S806和后续步骤的处理。
换句话说,池管理程序132参考真实页表136,并且将与步骤S804或步骤S812中选择的真实页对应的状态信息的值改变为“已使用”(步骤S806)。接下来,池管理程序132参考虚拟页表137,并且更新与作为处理目标的虚拟页相关的信息(步骤S807)。具体地,池管理程序132将与作为处理目标的虚拟页对应的真实页ID的值更新为在步骤S804或步骤S812中选择的真实页的真实页ID,并且另外将与作为处理目标的虚拟页对应的压缩数据长度信息的值更新表示压缩的写数据元素的数据长度的值。应当理解,如果在步骤S802的决定的结果是肯定的,则池管理程序132将压缩数据长度信息的值更新为与虚拟页的长度的值相同的值。接下来,I/O处理程序133参考虚拟页表137,并且将作为写目标的数据元素写入分配给作为处理目标的虚拟页的真实页中(换句话说,写入在步骤S804或步骤S812中选择的真实页中)(步骤S808)。此时,如果写目标数据元素比作为写目的地的真实页短,在写目的地真实页上的区域上而不是在存在写目标数据元素的其它区域上写入无意义数据(例如0)。接下来,池管理程序132决定该次写入是否是第一次(步骤S809),并且如果该决定的结果是否定的(步骤S809,否),换句话说,如果图7的步骤S703不被执行,则将与在步骤S701选择的真实页(TRP)对应的状态信息的值(即真实页表323的值)改变为“未使用”(步骤S810)。
图11是读处理的流程图。
该读处理是如下处理:如果由从主机101接收到的读请求指定的LU是虚拟LU,并且如果与该虚拟LU对应的压缩信息的值是“开”,而执行的处理。具体地,在接收到读请求时,池管理程序132决定从接收到的该读请求指定的LUN中识别的LU是否是虚拟LU,并且与该虚拟LU对应的压缩信息的值(即,记录在虚拟LU表138中的值)是否是“开”。如果该决定的结果是肯定的,则开始图11所示的读处理。
池管理程序132指定与读请求指定的读范围(例如与LBA和读目标数据的长度)对应的一个或多个虚拟页(步骤S1101)。
接下来,在步骤S1101中指定的一个或多个虚拟页中,池管理程序132将第一虚拟页作为(步骤S1102)后续处理(换句话说,步骤S1103至S1107)的目标。
接下来,池管理程序132指定与作为处理目标的虚拟页对应的真实页(TRP)(步骤S1103)。
接下来,I/O处理程序133读取在步骤S1103中指定的真实页中存储的数据元素(步骤S1104)。
接下来,池管理程序132将已经被读至压缩和扩展电路126的该数据元素输入,并且压缩和扩展电路126对被压缩的该数据元素(换句话说,对已经被读入的数据元素)执行扩展(步骤S1105)。然而,如果作为处理目标的虚拟页的压缩数据长度(写入虚拟页表137中的值所表示的)与虚拟页的长度相同,则不执行该扩展处理(换句话说,跳过步骤S1105),因为在步骤S1104读取的数据元素是未压缩的数据元素。
接下来,池管理程序132决定是否完成了与步骤S1101中指定的读范围对应的所有虚拟页的处理(步骤S1106)。如果步骤S1106的决定的结果是否定的(步骤S1106,否),则池管理程序132将还没有被处理的那些虚拟页中的下一个虚拟页作为后续处理(换句话说,由步骤S1103至S1105处理)的目标(步骤S1108),并对作为处理目标的虚拟页执行步骤S1103。另一方面,如果步骤S1106的决定的结果是肯定的(步骤S1106,是),则池管理程序132执行步骤S1107。换句话说,池管理程序132将存在于高速缓冲存储器125中的所有被扩展的数据元素合并到一起(换句话说,根据从主机101接收的读请求创建读数据),并且将因而生成的读数据发送到主机101。
上述完成了对第一实施例的说明。
根据该第一实施例,在池2601中将多个不同的真实页长度的真实页混合到一起,并且以真实页单元执行管理。与当所有真实页的长度短的情况(例如,当所有的真实页长度小于虚拟页长度)相比,必须被管理的真实页数目更小。因此,可以抑制容量扩展的降低。
另外,根据该第一实施例,在真实页长度大于或等于压缩的写数据元素的长度中指定最短的真实页长度,并且将压缩的写数据元素存储到指定的真实页长度的真实页中。因此,可以实现高容量效率。
发明方式2
下面,将说明本发明的第二实施例。在该说明中,重点是与第一实施例的不同之处,并且将省略或简单描述与第一实施例共同的特征(在后述第三和第四实施例的情况中也是如此)。
在该第二实施例中,没有对未使用池子区域2603定义真实页长度,并且结果在那些未使用池子区域2603中没有真实页。在写处理中,如果控制器120还不能从任何池子区域2603(作为用于压缩的写数据元素的存储目的地而使用)指定适当的真实页,则定义对于未使用池子区域2603的真实页长度。由此,在该未使用池子区域2603中定义了该真实页长度的真实页。控制器120从该未使用池子区域2603选择一个真实页,并且将该真实页分配到写目的地虚拟页。另外,在该第二实施例中,组成池2601的每个真实LU由多个大块(真实LU的子存储区域)组成,并且对于每个大块定义真实页长度。因此,在该第二实施例中,大块是池子区域2603。在该第二实施例中,大块是固定长度并且所有的大块是相同的长度。
下面,将详细说明本发明的该第二实施例。
图12示出了在本发明的该第二实施例中的非易失性存储器130中保存的程序和表。
在该第二实施例中,添加了真实页长度表1300和大块表1320。另外,池表1310和真实页表1330的内容与池表135和真实页表136的内容分别不同。
图13是该第二实施例中先前描述的表1300、1310、1320和1330的结构图。
真实页长度表1300是其中能够定义真实页长度的列表。根据该表1300,最大真实页长度是1?MB(兆字节),并且这与虚拟页长度相同。
代替图3所示的域312和313,池表1310包含用于组成池的每个真实LU的域1312。第一大块ID记录在这些域1312中。第一大块ID是表示作为该真实LU的第一个的大块的识别符。根据该表1310,应当理解,具有真实LU ID“RL0”的真实LU由十个大块“CH0”到“CH9”组成。因此,与该真实LU对应的第一大块ID是“CH0”。
大块表1320是用于管理与大块相关的信息的表。具体地,对于每个大块,该大块表1320可以具有例如其中记录了大块ID的域1321,其中记录了真实页长度的域1322,其中记录了状态信息的域1323以及其中记录了第一真实页ID的域1324。用一个大块作为例子(下文中,在该段中,这被称为“目标大块”),下面描述在该表1320中记录的各种信息。大块ID是表示目标大块的识别符的信息。状态信息是表示目标大块的使用状态的信息。例如,如果对于目标大块定义了真实页长度,其状态信息的值是“已使用”,但是如果没有对目标大块定义真实页长度,则其状态信息的值是“未使用”。第一真实页ID是表示作为目标大块的第一个的真实页的识别符。
真实页表1330具有对于每个真实页的域1332,代替图3所示的域332。大块ID记录在该域1332中。该大块ID是表示具有与该域1332对应的真实页的大块的识别符。
图14示出了该第二实施例中的池管理屏幕1401的例子。
在该池管理屏幕1401上设置了真实页长度输入域,并且在该特征上不同于图4所示的池管理屏幕401。
当用户按下“确认”按钮时,如已经描述的,向池表1310添加记录,在该池表1310中记录了已经从用户输入的真实LU ID。记录在该记录中的第一大块ID被作为池2601中最后一个大块的ID之后的下一个ID。另外,基于与已经添加到池2601的真实LU对应的容量,池管理程序132指定组成已经被添加的该真实LU的大块数目,并且将与已经指定的该大块数目相同的数目的记录添加到大块表1320中。由于在因而已经被添加的每个记录中记录了大块ID,真实页长度值、状态信息以及第一真实页ID是“N/A”。
图15示出了真实页长度管理屏幕1501的例子。
GUI由UI控制程序148显示在该真实页长度管理屏幕1501上。用于输入要被添加的真实页长度的输入域1502被设置在该真实页长度管理屏幕1501上。使用输入设备142,用户将要被添加的真实页长度输入到该添加的真实页长度输入域1502中。
当用户按下“确认”按钮时,存储通信程序149向存储系统110通知已经输入到输入域1502的真实页长度。存储系统110中的管理终端通信程序131接收该信息,并且池管理程序132执行下述处理。换句话说,池管理程序132将记录添加到真实页长度表1300中,其中记录了已经由管理终端通信程序131接收的(即已经从用户输入的)真实页长度。
也可以在运输产品时提前安排将多种类型的真实页长度记录在真实页长度表1300中,以使得不能编辑表1300。
图16是本发明第二实施例中的缺省长度真实页选择处理的流程图。
该缺省长度真实页选择处理是在图8的步骤S812中执行的处理。
池管理程序132参考大块表1320的域1322,并且从长度与虚拟页长度相同的那些真实页中选择状态信息值是“未使用”的真实页。
池管理程序132然后决定在步骤S1601中真实页的选择是否成功(步骤S1602)。如果在该步骤S1602的决定的结果是肯定的(步骤S1602,是),则该选择处理的序列终止。
另一方面,如果在步骤S1602的决定结果是否定的(步骤S1602,否),由于例如,对于使用中的大块不存在长度与虚拟页长度相同的任何未使用的真实页,相应地,对于某未使用的大块,定义了与虚拟页长度相同的真实页长度。
具体地,池管理程序132参考大块表1320,并且指定状态是“未使用”的某大块(步骤S1603)。
接下来,池管理程序132决定步骤S1603中大块的指定是否成功(步骤S1604)。如果在步骤S1604的该决定结果是否定的(步骤S1604,否),该选择处理的序列终止。另一方面,如果在步骤S1604的该决定结果是肯定的(步骤S1604,是)则池管理程序132将与步骤S1603中指定的大块对应的大块表1320中的状态信息值更新为“已使用”(步骤S1605)。在该步骤中,例如,与在步骤S1603中指定的大块对应的第一真实页ID的值由池管理程序132从“N/A”更新为有效值。
接下来,池管理程序132将步骤S1603中指定的大块划分为与虚拟页的长度相同长度的真实页(步骤S1606)。具体地,池管理程序132可以,例如将与步骤S1603中指定的大块对应的真实页长度的大块表1320中的值更新为表示虚拟页长度的值(即更新为真实页长度表1300中描述的与虚拟页长度相同的真实页长度)。另外,池管理程序132可以,例如通过用大块的容量(例如1?GB(十亿字节))除以虚拟页长度来计算组成在步骤S1603中指定的大块的真实页数目,并且可以添加与该数目相同数目的记录。在因而添加的每个记录中,真实页ID是被自动分配的值(例如序列中的数目),大块ID是指定大块的识别符并且状态是“未使用”。
接下来,在步骤S1603中指定的大块被划分为的那些真实页中,池管理程序132选择第一真实页(步骤S1607)。
图17是该第二实施例中的真实页选择处理的流程图。
真实页选择处理是图8的步骤S804中执行的处理。
池管理程序132参考大块表1320的域1322,并且在大于或等于压缩的写数据元素的长度的真实页长度中指定最短真实页长度(步骤S1701)。接下来,池管理程序132参考真实页表136,并且选择一真实页,该真实页是在由指定的真实页长度的真实页构成的大块中的真实页并且状态信息值是“未使用”(步骤S1702)。
池管理程序132然后决定在步骤S1702中的选择是否成功(步骤S1703)。如果该步骤S1703中的决定的结果是肯定的(步骤S1703,是),则该选择处理的序列终止。
另一方面,如果该步骤S1703中的决定的结果是否定的(步骤S1703,否),因为例如,对于使用中的大块不存在长度是步骤S1701中指定的长度的任何未使用的真实页,相应地,从真实页长度表1300中选择大于或等于压缩写数据元素的长度的真实页长度中的最短真实页长度,并且对某未使用块定义所选的真实页长度。
具体地,在步骤S1702之后,执行步骤S1703至S1708。除了步骤S1707之外,步骤S1703至S1708中的处理分别与上述参考图16说明的除了步骤S1606之外的步骤S1602至S1607的处理相同。
在步骤S1707中,池管理程序132从真实页长度表1300中选择大于或等于压缩写数据元素的长度的真实页长度中的最短真实页长度,并且将指定的大块划分为该所选真实页长度的真实页。具体地,例如,池管理程序132可以将与步骤S1704中指定的大块对应的大块表1302中的真实页长度的值更新为表示上述指定的真实页长度的值。另外,例如通过将大块的容量除以如上所述已经选择的真实页长度来进行划分,池管理程序132计算组成步骤S1704中指定的大块的真实页数目,并且在真实页表1330中添加与该数目相同数目的记录。在添加的每个记录中,真实页ID是被自动添加的值,大块ID是步骤S1704中指定的大块的识别符并且状态是“未使用”。
图18是大块无用数据收集处理的流程图。
该大块无用数据收集处理是用于增加未使用的大块的数目的处理。具体地,是如下的处理:如果组成状态是“已使用”的大块的所有真实页的状态是“未使用”,将该大块的状态从“已使用”更新为“未使用”。例如,在下述情况(16-1)至(16-4)的每一个,开始该大块无用数据收集处理。
(16-1)CPU 123处于低负载(例如CPU 123上的负载低于某预定负载);
(16-2)周期地;
(16-3)已经从管理终端102的用户接收到命令;
(16-4)已使用大块的比率已经降低到某预定阈值之下(例如在参考大块表1320时,池管理程序132已经检测到状态信息的“已使用”值的数目已经小于某预定数)。
池管理程序132参考大块表1320,并且将其第一大块ID作为下述处理的目标(步骤S1801)。
接下来,池管理程序132参考真实页表1330,并且决定作为处理目标的大块的所有真实页的状态是否都是“未使用”(步骤S1802)。如果在步骤S1802的该决定结果是否定的(步骤S1802,否),控制流进行到步骤S1805。
另一方面,如果在步骤S1802的决定结果是肯定的(步骤S1802,是),则池管理程序132从真实页表1330删除与作为处理目标的大块对应的所有真实页的条目(即状态信息是“未使用”的条目)(步骤S1803)。
接下来,池管理程序132参考大块表1320,并且将作为处理目标的大块的状态信息改变为“未使用”(步骤S1804)。
接下来,池管理程序132决定对于所有的大块是否完成了处理(步骤S1805)。如果在步骤S1805的该决定的结果是肯定的(步骤S1805,是),则该处理序列终止。另一方面,如果在步骤S1805的该决定的结果是否定的(步骤S1805,否),则池管理程序132将所有大块中的下一个大块作为(步骤S1806)作为后续处理(换句话说步骤S1802至S1805的处理)的目标,然后对于作为处理目标的该大块执行步骤S1802。
上述完成了本发明第二实施例的说明。根据该第二实施例,动态地定义和动态地改变池子区域2603中的真实页的长度。因此,可以预期,与预先定义和设置所有池子区域2603中的真实页的长度的情况相比,将更加适当地定义真实页长度。
另外,在该第二实施例中,池子区域2603是容量小于真实LU的容量的大块。因此,即使例如对于某大块已经临时定义了真实页长度之后,不在该大块中存储许多压缩数据元素,与真实LU是池子区域的情况相比,仍然可以使用较少量的空区域来管理。
应当理解,根据该第二实施例,可以考虑下述的变型实施例。
在第一变型实施例中,控制器120具有自动学习真实数据长度的功能。具体地,例如,在步骤S1707中,池管理程序132与定义未使用的大块中在步骤S1701中指定的真实页长度一起,还将该真实页长度添加到真实页长度表1301。在步骤S1701指定的真实页长度例如可以是大于或等于压缩写数据元素的长度并且是多个预定长度倍数中的最短倍数的长度(例如64KB)。
在第二变型实施例中,控制器120具有下述功能:将数据单元从在某池子区域中使用的所有真实页复制到一个或多个其它池子区域中的未使用的真实页,并且将作为该复制源的所有真实页的状态从“已使用”更新为“未使用”。例如,如图29A所示,池管理程序132指定两个或更多个子区域,对该两个或更多个子区域定义的真实页长度相同(例如,两个大块2901A和2901B)。另外,在已经指定的两个或更多个池子区域中,池管理程序132指定其中使用中的真实页数目是最少的池子区域。并且I/O处理程序133将数据单元从该指定的池子区域(例如大块2901A)中的使用中的所有的真实页(即从图29A中阴影所示的那些真实页)复制到上述一个或多个其它池子区域(例如大块2901B)中的未使用的真实页。并且,如图29B所示,池管理程序132将已经称为复制源的所有的真实页的状态从“已使用”更新为“未使用”。由此,当已经执行了图18所示的大块无用数据收集处理时,如图29C所示,包括作为复制源的真实页的池子区域(即大块2901A)的状态被从“已使用”更新为“未使用”。相应地,根据该第二变型实施例,可以增加未使用池子区域的数目。应当理解,通过将复制源作为其中使用中的真实页的数目最小的池子区域,可以将执行复制的次数抑制到最小极限。可以将已经作为复制源或正被复制的真实页的状态的更新包括到该大块无用信息收集处理;或也可以构成与该处理分离的处理。另外,例如,上述情况(16-1)至(16-4)中的任一个可以用于开始处理,用于确定将作为复制源的池子区域。
发明方式3
在第三实施例中,有时将多个真实页分配到一个虚拟页。因此,例如,在真实页读处理的步骤S701和S706中(图7)或者在真实页写处理的步骤S810中(图8),TRP的数目(分配到作为处理目标的虚拟页的真实页)有时是1,有时是2或更多。以类似的方式,在读处理(图11)的步骤S1103中指定的真实页的数目有时是1,有时是2或更多
图19是本发明第三实施例中的虚拟页表1900的结构图。
该表1900具有域1902,代替域332。有时在该域1902中记录多个真实页ID,而不是仅一个真实页ID。这是因为,如上所述,有时多个真实页被分配给一个虚拟页。
图20是本发明第三实施例中的真实页选择处理的流程图。
池管理程序132参考图3所示的池表135的域312,并且在大于或等于压缩写数据元素的长度的真实页长度中指定真实页长度的一个或多个组合,其中一个或多个真实页长度的总值长于压缩写数据元素的长度(步骤S2001)。
接下来,池管理程序132参考真实页表136,并且在已经被指定的真实页长度的组合中指定总值最小的组合(步骤S2002)。
接下来,池管理程序132参考真实页表136,并且在具有该长度的真实页中,为组成在步骤S2002中指定的组合的每个真实页长度选择状态信息值是“未使用的”的真实页(步骤S2003)。
上述完成了本发明第三实施例的说明。根据该第三实施例,可以预期将容量效率提高到更高的水平。
发明方式4
在本发明第四实施例中,在接收到来自主机101的写请求时,在当接收到该写请求时执行的写处理中,控制器120并不暂时压缩写入作为处理目标的虚拟页中的数据元素,而是将其存储在具有与虚拟页长度相同长度的真实页中。然后,与写处理异步地,控制器120从与虚拟页长度相同的长度的该真实页中读取数据元素,并且对已经读取的数据元素执行上述已经参考图8说明的真实页写处理。
下面,将详细说明本发明的第四实施例。
图21是本发明第四实施例中的虚拟页表2137的结构图。
在该虚拟页表2137中,对于每个虚拟页,除了域331至333之外,还设置了域334,其中记录了状态信息。该状态信息是表示是否压缩存储在分配给与该状态信息对应的虚拟页的真实页(在下文,在该段中,称为目标真实页)中的数据元素。例如,如果压缩存储在目标真实页中的数据元素,则该状态信息的值是“已压缩”,但是,如果存储在目标真实页中的数据元素是未压缩,该状态信息的值是“未压缩”。如果没有真实页被分配给虚拟页,则与该虚拟页对应的状态信息可以是例如“N/A”。
图22是本发明第四实施例中的真实页读处理的流程图。
在该第四实施例中的真实页读处理的步骤S2201至S2210分别对应于第一实施例中的真实页读处理的步骤S701至S710。步骤S2207不同于步骤S707,并且相应地,步骤S2208不同于步骤S708。除了步骤S2207和S2208之外的步骤S2201至S2210分别与除了步骤S707和S708之外的步骤S701至S710相同。
在步骤S2207中,池管理程序132参考虚拟页表2137,并且如果与作为处理目标的虚拟页对应的状态信息的值是“已压缩”,将步骤S2206中读取的数据元素输入到压缩和扩展电路126,从而压缩和扩展电路126扩展该数据元素。另一方面,如果该状态信息的值不是“已压缩”,则池管理程序132不将已经读取的数据元素输入到压缩和扩展电路126。
因此,在步骤S2208中,I/O处理程序133用该扩展的数据元素或自身已经读取的数据元素来盖写写入到作为处理目标的虚拟页上的数据元素。
图23是临时真实页写处理的流程图。
该临时真实页写处理是代替图6所示的写处理的步骤S604中的真实页写处理而执行的处理。如同已经详细说明的,并且如同之后会详细说明的,该真实页写处理与写处理异步地执行。
池管理程序132执行参考图9说明的缺省长度真实页选择处理(在图中简写为“DLRP选择处理”)(步骤S2301)。
接下来,池管理程序132决定在步骤S2301中的真实页的选择是否成功(步骤S2302)。如果在步骤S2302的决定的结果是否定的(步骤S2302,否),则池管理程序132向主机101响应错误(步骤S2308)。
另一方面,如果在步骤S2302的决定的结果是肯定的(步骤S2302,是),则执行步骤S2303和后续步骤的处理。
换句话说,池管理程序132参考真实页表136,并且将与步骤S2301中选择的真实页对应的状态信息的值改变为“已使用”(步骤S2303)。接下来,池管理程序132参考虚拟页表2137,并且更新与作为处理目标的虚拟页相关的信息(步骤S2304)。具体地,池管理程序132将与作为处理对象的虚拟页对应的真实页ID的值更新为在步骤S2301中选择的真实页的真实页ID,将与作为处理目标的虚拟页对应的压缩数据长度信息的值更新为表示压缩写数据元素的数据长度的值,并且另外将与作为处理目标的虚拟页对应的状态信息更新为“未压缩”。接下来,I/O处理程序133参考虚拟页表2137,并且将作为写目标的数据元素写入分配给作为处理目标的虚拟页的真实页(步骤S2305)。此时,如果写目标数据元素比作为写目的地的真实页短,将无意义数据(例如0)写入写目的地真实页的区域而不是存在写目标数据元素的区域。接下来,池管理程序132决定这次写入是否是第一次(步骤S2306),并且如果该决定的结果是否定的(步骤S2306,否),换句话说,如果图22的步骤S2203不执行,则将与在步骤S2201中选择的真实页(TRP)对应的状态信息的值(即真实页表223中的值)改变为“未使用”(步骤S2307)。
图24是本发明第四实施例中的读处理的流程图。
在该第四实施例中的读处理的步骤S2401至S2408分别对应于第一实施例中的真实页读处理的步骤S1101至S1108。步骤S2405不同于步骤S1105,但是除了步骤S2405之外的步骤S2401至S2408分别与除了步骤S1105之外的步骤S1101至S1108相同。
在步骤S2405,池管理程序132参考虚拟页表2137,并且,如果与作为处理目标的虚拟页对应的状态信息的值是“已压缩”,将步骤S2404中读取的数据元素输入到压缩和扩展电路,从而压缩和扩展电路126扩展该数据元素。
图25是异步压缩处理的流程图。
在下述情况(25-1)至(25-4)的每一个时,可以开始该异步压缩处理。
(25-1)CPU 123处于低负载(例如CPU 123上的负载低于某预定负载);
(25-2)周期地;
(25-3)已经从管理终端102的用户接收到命令;
(25-4)与“已压缩”对应的虚拟页的比例已经降低到某预定阈值之下(例如在参考虚拟页表2137时,池管理程序132已经检测到状态信息的“已压缩”值的数目小于某预定数)。
池管理程序132将虚拟LU的第一虚拟页作为后续处理(步骤S2502至S2506)的目标(步骤S2501)。
然后池管理程序132决定与作为处理目标的虚拟页对应的状态信息的值是否是“未压缩”(步骤S2502)。
如果在步骤S2502的决定结果是肯定的(步骤S2502,是),则池管理程序132指定与作为处理目标的虚拟页对应的真实页(步骤S2503)。并且I/O处理程序133从已经被指定的真实页中读取数据元素(步骤S2504)。然后,执行图8所示的真实页写处理(步骤S2505)。并且,如果真实页写处理成功,则池管理程序132将与作为处理目标的虚拟页对应的状态信息的值从“未压缩”改变为“已压缩”(步骤S2506)。
如果在步骤S2502的决定的结果是否定的(步骤S2502,否),或者在步骤S2506之后,池管理程序132决定是否对虚拟LU的所有虚拟页完成了处理(步骤S2507)。如果该决定的结果是否定的(步骤S2507,否),则池管理程序132将下一个虚拟页作为后续处理目标(步骤S2508),并且执行步骤S2502。另一方面,如果在步骤S2507的该决定的结果是肯定的(步骤S2507,是),该异步压缩处理终止。
上述完成了本发明第四实施例的说明。因为,根据该第四实施例,在写处理中不执行压缩/扩展,相应地可以降低CPU 123在写处理中的负载,并且另外可以预期写处理的处理速度的提高。
应当理解对于该第四实施例,考虑下述变型实施例。例如,如图28A所示,在虚拟页表2137’中,对于每个虚拟页,可以设置域335,其中记录了访问频率(以IOPS,“每秒I/O”的缩写)。另外,如图28B所示,可以在非易失性存储器130中提供由CPU 123执行的访问频率管理程序(2801)。该访问频率管理程序2801监视对每个虚拟页的访问频率,并且以及时的方式更新与虚拟页对应的访问频率(即图28A的域2105中的值)。在该变型实施例中,在异步压缩处理中,即使与作为处理目标的虚拟页对应的状态信息的值是“未压缩”(步骤S2502,是),仍然有时不执行步骤S2503和后续步骤,如图28C所示。具体地,在步骤S2502中“是”的情况下,参考虚拟页表2137’,指定与作为处理目标的虚拟页对应的访问频率,并且如果访问频率高于某预定阈值(步骤S2801,是)则不执行步骤S2503。由此,在对于访问频率高的虚拟页的写处理/读处理中,可以预期由于没有执行压缩/非压缩,处理速度会提高。
尽管在上文中,例如对于第二到第四实施例,主要说明了与第一实施例的不同点,也可以实施任何两个或更多个实施例(在第一至第四实施例中)的组合。另外,代替由来自主机101的写请求指定的LU或者除了由来自主机101的写请求指定的LU之外,作为写目的地的虚拟LU还可以是构成用于复制初级LU中存储的数据的目的地的次级LU。一个例子在图27中示出。换句话说,从初级LU(真实LU或虚拟LU)向次级LU(虚拟LU)复制数据元素,初级LU是从外部设备(例如主机等)用虚拟页为单位可以访问的LU,次级LU是与初级LU成对的LU。此时,压缩作为复制目标的数据元素,基于这些压缩的数据元素中包括的数据单元的长度选择一个或多个真实页,因此而选择的真实页被分配给作为复制目的地的虚拟页,并且包括这些压缩的数据元素的数据单元存储在自己的真实页中。如果包括这些压缩的数据元素的数据单元的长度大于或等于虚拟页长度,则包括压缩前的数据元素的数据单元被存储在与虚拟页长度相同长度的真实页中。
尽管已经说明了本发明的特定优选实施例,并不意味着认为本发明限于这些特定实施例,在不偏离本发明主旨的前提下能够进行各种改变。
例如,在第一、第三和第四实施例的真实页选择处理中,如果没有发现满足条件的真实页,也可以选择更长一级的真实页。例如,假设压缩写数据元素的长度是511kB,然后尽管与条件符合(即大于或等于压缩写数据元素的真实页长度中的最短真实页长度)的真实页长度是512kB,如果由于所有的512kB长度的真实页都在使用中而不能选择这种类型的真实页,可以选择更长一级的真实页,例如具有与虚拟页长度相同长度的真实页。
另外,例如,如果不仅压缩写数据元素,其它类型的信息(例如数据整体性码)也添加到数据单元,与虚拟页长度或真实页长度相比(例如在图8的步骤S802,图10的步骤S1001,图17的步骤S1701以及图20的步骤S2001中),将数据单元的整个长度作为比较目标。另外,如果例如作为数据单元的长度大于或等于虚拟页长度的结果,将压缩前的写数据元素写入具有与虚拟页长度相同长度的真实页中,如果压缩前的写数据元素的长度符合虚拟页长度,则不添加其它类型的该信息(例如数据整体性码等),而是仅将压缩前的写数据元素写入真实页。在这种情况下,通过使用包括在压缩前的写数据元素中的数据整体性码,保证了压缩前的写数据元素的可靠性(例如,8字节数据整体性码可以被添加到512字节的数据中)。

Claims (14)

1.一种存储系统,包括:
基于池(2601)的多个存储设备(111);以及
控制器(120);
并且其中:
所述池由多个真实页(2607)组成;
不同长度的真实页包含在所述多个真实页中;
所述控制器包括:
压缩部(126),用于对虚拟卷(2605)中的多个虚拟页中的写目的地虚拟页压缩写数据元素;
池管理部(132),用于选择满足以下描述的(条件A)和(条件B)的真实页,并将所选择的真实页分配给所述写目的地虚拟页;
(条件A):所述真实页的真实页长度是基于压缩后的写数据元素中包含的数据单元的数据长度的真实页长度;
(条件B):所述真实页是未被分配给任何虚拟页的真实页;
以及,I/O处理部(133),用于在已选择的真实页中存储所述数据单元;
每个虚拟页是虚拟存储区域;
每个真实页是物理存储区域;且
所述数据单元由所述压缩后的写数据元素自身组成,或由特定信息和所述压缩后的写数据元素组成;
所述控制器包括扩展部(126),所述扩展部扩展压缩后的数据元素;
所述池由多个池子区域(2603)组成;
对每个池子区域定义真实页长度;
多个真实页长度中的最大真实页长度与虚拟页长度相同;
真实页读处理和真实页写处理包含在所述写目的地虚拟页的写处理中,且所述真实页写处理在所述真实页读处理之后被执行;
在所述真实页读处理中:
(A1)所述池管理部判定真实页是否已被分配给所述写目的地虚拟页;
(A2)如果上述判定(A1)的结果是肯定的,则所述池管理部判定用于所述写目的地虚拟页的数据元素的长度是否与所述虚拟页长度相同;以及
(A3)如果上述判定(A2)中的结果是否定的,则所述I/O处理部从分配给所述写目的地虚拟页的真实页读取数据单元,所述扩展部扩展已读取的所述数据单元中包含的压缩后的数据元素,并且所述池管理部以扩展后的数据元素盖写用于所述写目的地虚拟页的数据元素;
如果上述(A2)中的判定的结果是否定的,则所述真实页写处理中的所述写数据元素是盖写后的数据元素,然而,如果上述(A2)中的判定的结果是肯定的,则所述真实页写处理中的所述写数据元素是用于写目的地虚拟页的数据元素本身;
在所述真实页写处理中:
(B1)所述压缩部压缩所述写数据元素;
(B2)所述池管理部判定压缩后的写数据元素中包含的数据单元的长度是否大于或等于所述虚拟页的长度;
(B3)如果上述(B2)中的判定的结果是肯定的,则上述(条件A)是真实页长度与虚拟页长度相同;并且所述I/O处理部不将所述数据单元而将包含压缩前的所述写数据元素的其他数据单元存储在已选择的所述真实页中;以及
(B4)如果在上述(B2)中的判定的结果是否定的,则上述(条件A)是真实页长度是所述多个真实页长度中的、大于或等于所述数据单元的长度且与所述数据单元的长度的差别最小的真实页长度;并且,所述I/O处理部将所述数据存储在已选择的所述真实页中;并且
所述其他数据单元是压缩前的写数据元素本身,或由特定信息和压缩前的所述写数据元素组成。
2.根据权利要求1所述的存储系统,其中:
真实页长度不是对所述多个池子区域中的未使用的池子区域定义的;并且
在所述真实页写处理中,如果没有发现满足上述(条件A)和(条件B)的真实页,则所述池管理部对满足上述(条件A)的一些未使用的池子区域定义真实页长度,并从已被定义了满足所述(条件A)的所述真实页长度的所述池子区域中选择已被定义真实页长度的真实页。
3.根据权利要求1或2所述的存储系统,其中,在上述(B4)中,满足所述(条件A)和所述(条件B)的真实页是未被分配给任何虚拟页的两个或更多的真实页,并且这两个或更多真实页的总真实页长度是所述多个总真实页长度中的、大于或等于所述数据单元的长度且与所述数据单元的长度的差别最小的那个总真实页长度。
4.根据权利要求1或2所述的存储系统,其中:
临时真实页写处理被包含在所述写处理中以代替所述真实页写处理;
所述控制器在与所述写处理不同的定时执行异步压缩处理;
所述真实页写处理被包含在所述异步压缩处理中;
在所述临时真实页写处理中:
(C1)所述池管理部选择具有与虚拟页长度相同的真实页长度的未分配真实页,并好似所述写目的地虚拟页的状态未被压缩那样来对选择的未分配真实页进行管理,并将已选择的所述真实页分配给所述写目的地虚拟页;以及
(C2)所述I/O处理部将包含所述写数据元素的数据单元存储在已选择的所述真实页中;
如果上述(B2)中的判定的结果是否定的,则所述临时真实页写处理中的所述写数据元素是已被盖写的数据元素,然而,如果上述(B2)中的判定的结果是肯定的,则所述临时真实页写处理中的所述写数据元素是用于所述写目的地虚拟页的数据元素本身;
在所述异步压缩处理中:
(D1)所述池管理部判定作为处理对象的虚拟页的状态是否是未压缩;以及
(D2)如果上述(D1)中的判定的结果是肯定的,则所述池管理部指定分配给作为处理对象的虚拟页的真实页;所述I/O处理部从已指定的所述真实页读取数据单元;所述真实页写处理被执行;并且之后,所述池管理部好似作为管理对象的所述虚拟页的状态已被压缩那样来对所指定的真实页进行管理;在上述(D2)的所述真实页写处理中,所述写处理数据元素是在上述(D2)中读取的数据单元中包含的数据元素;并且在所述真实页读处理的上述(A3)中,所述池管理部判定所述写目的地虚拟页的状态是否是未压缩,如果判定的结果是否定的,则所述扩展部对已读取的所述数据单元中包含的压缩后的数据进行扩展。
5.根据权利要求1所述的存储系统,其中:
真实页写处理被包含在对于所述写目的地虚拟页的写处理中;
在所述真实页写处理中:
(F1)所述压缩部压缩写数据元素;
(F2)所述池管理部判定压缩后的写数据元素中包含的数据单元的长度是否大于或等于虚拟页的长度;
(F3)如果上述判定(F2)的结果是肯定的,则上述条件(A)是真实页长度与虚拟页长度相同;并且所述I/O处理部不将所述数据单元而将包含压缩前的所述写数据元素的其他数据单元存储在已选择的所述真实页中;以及
(F4)如果上述判定(F2)中的结果是否定的,则上述(条件A)是真实页长度是所述多个真实页长度中的、大于或等于所述数据单元的长度且与所述数据单元的长度的差别最小的真实页长度;并且,所述I/O处理部将所述数据存储在已选择的所述真实页中;并且
所述其他数据单元是压缩前的写数据元素本身,或由特定信息和所述压缩前的写数据元素组成。
6.根据权利要求5所述的存储系统,其中:
所述控制器包括扩展部(126),所述扩展部扩展压缩后的数据元素;
真实页读处理包含在所述写处理中,且所述真实页读处理在所述真实页写处理之前进行;
在所述真实页读处理中:
(G1)所述池管理部判定真实页是否已被分配给所述写目的地虚拟页;
(G2)如果上述判定(G1)的结果是肯定的,则所述池管理部判定用于所述写目的地虚拟页的数据元素的长度是否与虚拟页长度相同;以及
(G3)如果上述判定(G2)的结果是否定的,则所述I/O处理部从分配给所述写目的地虚拟页的真实页读取数据单元,所述扩展部对已读取的所述数据单元中包含的压缩后的数据元素进行扩展,并且所述池管理部以扩展后的数据元素盖写用于所述写目的地虚拟页的数据元素;并且
如果上述(G2)中的判定的结果是否定的,则所述真实页写处理中的写数据元素是盖写后的数据元素,然而,如果上述(G2)中的判定的结果是肯定的,则所述真实页写处理中的写数据元素是用于所述写目的地虚拟页的数据元素本身。
7.根据权利要求1中任一项所述的存储系统,其中:
所述池由多个池子区域(2603)组成;
对每个池子区域定义真实页长度;
不对所述多个池子区域中的未使用的池子区域定义真实页长度;并且
在所述真实页写处理中,所述池管理部基于包含压缩后的写数据元素的数据单元的数据长度来定义真实页长度,并从已被定义真实页长度的池子区域选择已被定义真实页长度的真实页。
8.根据权利要求2或7所述的存储系统,其中:
所述池由多个真实卷组成;
所述真实卷是基于一个或更多存储设备的逻辑卷;
每个真实卷由多个大块组成;且
所述池子区域是大块。
9.根据权利要求7所述的存储系统,其中,所述池管理部判定组成使用中的某一池子区域的所有真实页是否未被分配,并且,如果该判定的结果是肯定的,则将使用中的该池子区域的状态从“使用中”改变为“未使用”。
10.根据权利要求1所述的存储系统,其中,满足所述(条件A)和所述(条件B)的真实页是未分配给任何虚拟页的两个或更多真实页,并且这两个或更多真实页的总真实页长度是所述多个总真实页长度中的、大于或等于所述单元的长度且与所述数据单元的长度的差别最小的那个总真实页长度。
11.根据权利要求5至7中任一项所述的存储系统,其中:
临时真实页写处理被包含在用于所述写目的地虚拟页的所述写处理中以代替所述真实页写处理;
所述控制器在与所述写处理不同的定时执行异步压缩处理;
所述真实页写处理被包含在所述异步压缩处理中;
在所述临时真实页写处理中:
(H1)所述池管理部选择具有与虚拟页长度相同的真实页长度的未分配真实页,并好似所述写目的地虚拟页的状态未被压缩那样来对选择的未分配真实页进行管理,并将已选择的所述真实页分配给所述写目的地虚拟页;以及
(H2)所述I/O处理部将包含所述写数据元素的数据单元存储在已选择的所述真实页中;
如果上述(F2)中的判定的结果是否定的,则所述临时真实页写处理中的所述写数据元素是已被盖写的数据元素,然而,如果上述(F2)中的判定的结果是肯定的,则所述临时真实页写处理中的所述写数据元素是用于所述写目的地虚拟页的数据元素本身;
在所述异步压缩处理中:
(I1)所述池管理部判定作为处理对象的虚拟页的状态是否是未压缩;以及
(I2)如果上述判定(I1)的结果是肯定的,则所述池管理部指定分配给作为处理对象的虚拟页的真实页;所述I/O处理部从已指定的所述真实页读取数据单元;所述真实页写处理被执行;并且之后,所述池管理部好似作为管理对象的所述虚拟页的状态已被压缩那样来对所指定的真实页进行管理;并且在上述(I2)的所述真实页写处理中,所述写处理数据元素是在上述(I2)中读取的数据单元中包含的数据元素。
12.根据权利要求5所述的存储系统,其中:
所述控制器进一步包括访问频率管理部(2801),所述访问频率管理部管理对每个虚拟页的访问的频率;并且
如果对作为读取源的所述真实页的访问频率高于某一特定访问频率,则即使在上述(I1)中的判定的结果是肯定的也不执行上述(I2)。
13.根据权利要求2或7所述的存储系统,其中:
所述池管理部指定两个或更多池子区域,对于所述两个或更多池子区域,所定义的真实页长度是相同的;
所述I/O处理部将数据单元从所述两个或更多池子区域中的一个池子区域内的已分配的真实页拷贝到所述两个或更多池子区域中的某个其他池子区域内的未分配的真实页;并且
所述池管理部撤销作为拷贝源的真实页对其虚拟页的分配,将作为拷贝目的地的真实页分配给该虚拟页,并将所指定的池子区域的状态更新为未使用状态。
14.一种存储控制方法,其中:
对用于构成虚拟卷的多个虚拟页中的写目的地虚拟页的写数据元素进行压缩(S801);
从池(2601)选择满足如下所述的(条件A)和(条件B)的真实页(S804,S812);
(条件A):所述真实页长度是基于具有压缩后的写数据元素的数据单元的数据长度的真实页长度;
(条件B):所述真实页是未被分配给任何虚拟页的真实页;
将所选择的真实页分配给所述写目的地虚拟页(S806,S807);
将已选择的真实页存储在所述数据单元中(S808);
所述池(2601)由多个真实页(2607)组成,多个存储设备(111)构成所述多个真实页的基础;
不同长度的真实页包含在所述多个真实页中;
每个虚拟页是虚拟存储区域;
每个真实页是物理存储区域;以及
所述数据单元由所述压缩后的写数据元素本身组成,或由特定信息和所述压缩后的写数据元素组成;
所述池由多个池子区域(2603)组成;
对每个池子区域定义真实页长度;
多个真实页长度中的最大真实页长度与虚拟页长度相同;
真实页读处理和真实页写处理包含在所述写目的地虚拟页的写处理中,且所述真实页写处理在所述真实页读处理之后被执行;
在所述真实页读处理中:
(A1)判定真实页是否已被分配给所述写目的地虚拟页;
(A2)如果上述判定(A1)的结果是肯定的,则判定用于所述写目的地虚拟页的数据元素的长度是否与所述虚拟页长度相同;以及
(A3)如果上述判定(A2)中的结果是否定的,则从分配给所述写目的地虚拟页的真实页读取数据单元,扩展已读取的所述数据单元中包含的压缩后的数据元素,并且以扩展后的数据元素盖写用于所述写目的地虚拟页的数据元素;
如果上述(A2)中的判定的结果是否定的,则所述真实页写处理中的所述写数据元素是盖写后的数据元素,然而,如果上述(A2)中的判定的结果是肯定的,则所述真实页写处理中的所述写数据元素是用于写目的地虚拟页的数据元素本身;
在所述真实页写处理中:
(B1)压缩所述写数据元素;
(B2)判定压缩后的写数据元素中包含的数据单元的长度是否大于或等于所述虚拟页的长度;
(B3)如果上述(B2)中的判定的结果是肯定的,则上述(条件A)是真实页长度与虚拟页长度相同;并且不将所述数据单元而将包含压缩前的所述写数据元素的其他数据单元存储在已选择的所述真实页中;以及
(B4)如果在上述(B2)中的判定的结果是否定的,则上述(条件A)是真实页长度是所述多个真实页长度中的、大于或等于所述数据单元的长度且与所述数据单元的长度的差别最小的真实页长度;
并且,将所述数据存储在已选择的所述真实页中;并且
所述其他数据单元是压缩前的写数据元素本身,或由特定信息和压缩前的所述写数据元素组成。
CN200980144865.2A 2009-01-30 2009-01-30 压缩和存储数据元素的存储系统和存储控制方法 Active CN102209953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410126486.3A CN103838525B (zh) 2009-01-30 2009-01-30 存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/000372 WO2010086900A1 (en) 2009-01-30 2009-01-30 Storage system and storage control method that compress and store data elements

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201410126486.3A Division CN103838525B (zh) 2009-01-30 2009-01-30 存储系统

Publications (2)

Publication Number Publication Date
CN102209953A CN102209953A (zh) 2011-10-05
CN102209953B true CN102209953B (zh) 2014-04-30

Family

ID=41077597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980144865.2A Active CN102209953B (zh) 2009-01-30 2009-01-30 压缩和存储数据元素的存储系统和存储控制方法

Country Status (5)

Country Link
US (4) US8108646B2 (zh)
EP (1) EP2391937A1 (zh)
JP (1) JP5221756B2 (zh)
CN (1) CN102209953B (zh)
WO (1) WO2010086900A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5037952B2 (ja) * 2007-01-15 2012-10-03 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
EP2391937A1 (en) * 2009-01-30 2011-12-07 Hitachi, Ltd. Storage system and storage control method that compress and store data elements
CN102255962B (zh) * 2011-07-01 2013-11-06 华为数字技术(成都)有限公司 一种分布式存储方法、装置和系统
WO2013160935A1 (en) 2012-04-24 2013-10-31 Hitachi, Ltd. Computer system, storage apparatus and data transfer method
JP5826949B2 (ja) 2012-05-11 2015-12-02 株式会社日立製作所 ストレージ装置及びデータ管理方法
US20150193342A1 (en) 2012-09-25 2015-07-09 Hitachi, Ltd. Storage apparatus and method of controlling the same
WO2014061055A1 (en) * 2012-10-15 2014-04-24 Hitachi, Ltd. Storage sysyem which includes non-volatile semiconductor storage medium, and storage control method of storage system
US9176858B2 (en) * 2012-11-19 2015-11-03 Hitachi, Ltd. Storage system configured to selectively utilize data compression based on real pool usage rates
US8898118B2 (en) * 2012-11-30 2014-11-25 International Business Machines Corporation Efficiency of compression of data pages
JP6381529B2 (ja) 2013-07-19 2018-08-29 株式会社日立製作所 ストレージ装置および記憶制御方法
US9582426B2 (en) 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache
US10102060B2 (en) 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
CN104956312B (zh) * 2013-12-12 2018-02-13 株式会社日立制作所 存储装置及存储装置的控制方法
US20190087599A1 (en) * 2014-04-02 2019-03-21 International Business Machines Corporation Compressing a slice name listing in a dispersed storage network
WO2015162681A1 (ja) * 2014-04-22 2015-10-29 株式会社日立製作所 ストレージシステムおよび記憶デバイスの制御方法
US9785348B2 (en) 2014-05-28 2017-10-10 International Business Machines Corporation Balancing usage of real and virtual space to avoid out-of-space conditions in storage controllers
JP6608468B2 (ja) * 2018-01-26 2019-11-20 株式会社日立製作所 ストレージ装置及びその制御方法
US10877668B2 (en) 2018-12-05 2020-12-29 Intel Corporation Storage node offload of residual part of a portion of compressed and distributed data to a second storage node for decompression
US20190196907A1 (en) * 2019-03-05 2019-06-27 Intel Corporation Compression techniques for distributed data
JP7225445B2 (ja) * 2021-01-14 2023-02-20 株式会社日立製作所 ストレージシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1849577A (zh) * 2003-08-14 2006-10-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
CN1945520A (zh) * 2005-10-04 2007-04-11 株式会社日立制作所 Dkc内存储池及虚拟卷中的数据运用管理方法
EP1895394A2 (en) * 2006-08-25 2008-03-05 QNX Software Systems GmbH & Co. KG File system having variable logical storage block size

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247638A (en) 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5623701A (en) * 1995-06-06 1997-04-22 International Business Machines Corporation Data compression method and structure for a direct access storage device
JPH08339262A (ja) * 1995-06-13 1996-12-24 Hudson Soft Co Ltd コンピュータ用外部記憶装置
JP2000357112A (ja) * 1999-06-16 2000-12-26 Nec Corp ファイルシステムドライバ
JP2004078787A (ja) * 2002-08-22 2004-03-11 Alpine Electronics Inc 車載オーディオ装置およびデータ転送方法
JP2007502470A (ja) 2003-08-14 2007-02-08 コンペレント・テクノロジーズ 仮想ディスク・ドライブのシステムおよび方法
JP4615337B2 (ja) 2005-03-16 2011-01-19 株式会社日立製作所 ストレージシステム
JP5073259B2 (ja) * 2006-09-28 2012-11-14 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US8117409B2 (en) * 2006-11-22 2012-02-14 Hitachi, Ltd. Method and apparatus for backup and restore in a dynamic chunk allocation storage system
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
JP5037952B2 (ja) * 2007-01-15 2012-10-03 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP5041860B2 (ja) 2007-04-20 2012-10-03 株式会社日立製作所 ストレージ装置及び管理単位設定方法
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US20090210462A1 (en) 2008-02-15 2009-08-20 Hitachi, Ltd. Methods and apparatus to control transition of backup data
EP2391937A1 (en) * 2009-01-30 2011-12-07 Hitachi, Ltd. Storage system and storage control method that compress and store data elements

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1849577A (zh) * 2003-08-14 2006-10-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
CN1945520A (zh) * 2005-10-04 2007-04-11 株式会社日立制作所 Dkc内存储池及虚拟卷中的数据运用管理方法
EP1895394A2 (en) * 2006-08-25 2008-03-05 QNX Software Systems GmbH & Co. KG File system having variable logical storage block size

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2000-357112A 2000.12.26

Also Published As

Publication number Publication date
US20120102294A1 (en) 2012-04-26
US9208067B2 (en) 2015-12-08
US8677096B2 (en) 2014-03-18
WO2010086900A1 (en) 2010-08-05
US20140149711A1 (en) 2014-05-29
US8291189B2 (en) 2012-10-16
EP2391937A1 (en) 2011-12-07
JP2012504795A (ja) 2012-02-23
JP5221756B2 (ja) 2013-06-26
US20100306498A1 (en) 2010-12-02
US8108646B2 (en) 2012-01-31
CN102209953A (zh) 2011-10-05
US20130007360A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
CN102209953B (zh) 压缩和存储数据元素的存储系统和存储控制方法
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
JP6385570B2 (ja) ストレージシステムおよび記憶制御方法
JP5916958B2 (ja) 計算機システム及び計算機システム制御方法
JP4778942B2 (ja) 不揮発性メモリを管理する装置及び方法
CN102209952B (zh) 存储系统和用于操作存储系统的方法
WO2015198591A1 (en) Storage device, program, and information processing method
CN102929748B (zh) 数据备份方法及装置
CN101542447B (zh) 一次写入记录装置
WO2011045831A1 (en) Storage apparatus and its control method
EP3748509B1 (en) System garbage collection method and method for collecting garbage in solid state hard disk
CN107947799B (zh) 一种数据压缩方法及装置
KR20100089229A (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
CN101763309A (zh) 非易失性存储装置、信息记录系统及信息记录方法
CN103995855A (zh) 存储数据的方法和装置
CN103761053A (zh) 一种数据处理方法和装置
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
CN101315613A (zh) 处理非易失性存储器的数据的设备和方法
CN108628542A (zh) 一种文件合并方法及控制器
KR20090107098A (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
JP2017162355A (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
CN103530067B (zh) 一种数据操作的方法和设备
WO2011135618A1 (en) Mainframe storage apparatus that utilizes thin provisioning
CN103838525A (zh) 存储系统
JP2020135134A (ja) ストレージシステム及び圧縮方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant