JP2012504795A - データ要素を圧縮して格納するストレージシステム及び記憶制御方法 - Google Patents

データ要素を圧縮して格納するストレージシステム及び記憶制御方法 Download PDF

Info

Publication number
JP2012504795A
JP2012504795A JP2011514952A JP2011514952A JP2012504795A JP 2012504795 A JP2012504795 A JP 2012504795A JP 2011514952 A JP2011514952 A JP 2011514952A JP 2011514952 A JP2011514952 A JP 2011514952A JP 2012504795 A JP2012504795 A JP 2012504795A
Authority
JP
Japan
Prior art keywords
page
real
write
length
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.)
Granted
Application number
JP2011514952A
Other languages
English (en)
Other versions
JP5221756B2 (ja
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
Publication of JP2012504795A publication Critical patent/JP2012504795A/ja
Application granted granted Critical
Publication of JP5221756B2 publication Critical patent/JP5221756B2/ja
Expired - Fee Related 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

複数の記憶装置を基にプールが形成される。プールは、複数の実ページで構成されている。複数の実ページには、長さの異なる実ページが含まれている。コントローラは、仮想ボリュームを構成する複数の仮想ページのうちのライト先仮想ページに対するライトデータ要素を圧縮し、圧縮されたライトデータ要素を有するデータユニットのデータ長に基づく実ページ長の実ページを選択し、選択された実ページをライト先仮想ページに割り当てる。

Description

本発明は、データ要素を圧縮して格納する記憶制御に関する。
データ要素を圧縮して格納するストレージシステムとして、例えば、特許文献1に開示のストレージシステムが知られている。
特開2006−259962号公報
ストレージシステムは、一般に、コントローラと記憶装置群とを備えている。データ要素は、コントローラで圧縮され、圧縮されたデータ要素が、記憶装置群に基づく記憶空間に格納される。
圧縮後のデータ要素の長さ(サイズ)は、一般に、圧縮方式が異なっていれば異なるし、或いは、圧縮方式が同じであっても、圧縮前のデータ要素の内容によって異なる。このため、コントローラが有するメモリに記憶される管理情報は、膨大な量になるおそれがある。なぜなら、管理情報には、例えば、記憶空間における空き記憶領域の位置及び長さを表す情報要素が含まれる必要があり、その情報要素は、空き記憶領域の数が多くなればなるほど増えるからである。また、管理情報には、例えば、圧縮されたデータ要素の格納位置及び長さを表す情報要素が含まれる必要があり、その情報要素は、圧縮されたデータ要素の数が多くなればなるほど増えるからである。
管理情報が膨大な量になるおそれを低減する方法として、記憶空間を固定長の記憶領域(以下、固定領域)に分割しておき一つの圧縮されたデータ要素を一つの固定領域に格納する方法、つまり、固定領域単位での管理を行う方法が考えられる。
しかし、この方法では、固定領域の長さが長いと、一つの固定領域に長い空き領域(圧縮されたデータ要素が占める領域以外の領域)が残る可能性があり、故に、容量効率が悪いと考えられる。一方、固定領域の長さが短いと、一つの固定領域に生じ得る空き領域の長さは短くて済むであろうが、管理しなければならない固定領域の数が多くなる。このため、管理情報の量に制限がある場合、固定領域の長さが短いと、管理可能な固定領域群のトータル長が短く、故に、記憶空間に格納可能なデータ長(圧縮されたデータ要素のトータル長)も短い。つまり、容量スケーラビリティが低下するおそれがある。
そこで、本発明の目的は、データ要素を圧縮して格納するストレージシステムにおいて、高い容量効率を実現し且つ容量スケーラビリティが低下しないようにすることにある。
ストレージシステムが備える複数の記憶装置を基にプールが形成される。プールは、複数の実ページ(物理的な記憶領域)で構成されている。複数の実ページには、長さの異なる実ページが含まれている。
コントローラは、圧縮部と、プール管理部と、I/O処理部とを有する。
圧縮部は、仮想ボリュームを構成する複数の仮想ページ(仮想的な記憶領域)のうちのライト先仮想ページに対するライトデータ要素を圧縮する。
プール管理部は、下記(条件A)及び(条件B)を満たす実ページを選択し、選択された実ページをライト先仮想ページに割り当てる。
(条件A)実ページ長が、圧縮されたライトデータ要素を有するデータユニットのデータ長に基づく実ページ長であること;
(条件B)実ページが、いずれの仮想ページにも割り当てられていない実ページであること。
I/O処理部は、選択された実ページに上記データユニットを格納する。
データユニットは、圧縮されたライトデータ要素それ自体である、又は、圧縮されたライトデータ要素と特定の情報とで構成されている。特定の情報は、例えば、データ保証コード(例えばECC(Error-Correcting Code))である。
ここで、「データ要素」(例えばライトデータ要素)は、一つの仮想ページに対応する要素であり、例えば、仮想ページ長と同じ長さを有する。データ要素が圧縮されることにより、仮想ページ長よりも短いデータ要素となる(データ要素の内容等によっては、そうならないこともある)。
圧縮部、プール管理部及びI/O処理部のうちの少なくとも一つは、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。
図1は、本発明の第1の実施形態に係る計算機システムの構成図である。 図2は、管理端末102の構成を示す図である。 図3は、各種テーブルの構成図である。 図4は、本発明の第1の実施形態でのプール管理画面401の一例を示す。 図5は、仮想LU管理画面501の一例を示す。 図6は、ライト処理のフローチャートである。 図7は、本発明の第1の実施形態での実ページリード処理のフローチャートである。 図8は、本発明の第1の実施形態での実ページライト処理のフローチャートである。 図9は、デフォルト長実ページ選択処理のフローチャートである。 図10は、実ページ選択処理のフローチャートである。 図11は、本発明の第1の実施形態でのリード処理のフローチャートである。 図12は、本発明の第2の実施形態での不揮発性メモリ130が有するプログラム及びテーブルを示す。 図13は、本発明の第2の実施形態での前述したテーブル1300、1310、1320及び1330の構成図である。 図14は、本発明の第二の実施形態でのプール管理画面1401の一例を示す。 図15は、実ページ長管理画面1501の一例を示す。 図16は、本発明の第2の実施形態でのデフォルト長実ページ選択処理のフローチャートである。 図17は、本発明の第2の実施形態での実ページ選択処理のフローチャートである。 図18は、チャンクガーベージコレクション処理のフローチャートである。 図19は、本発明の第3の実施形態での仮想ページテーブル1900の構成図である。 図20は、本発明の第3の実施形態での実ページ選択処理のフローチャートである。 図21は、本発明の第4の実施形態での仮想ページテーブル2137の構成図である。 図22は、本発明の第4の実施形態での実ページリード処理のフローチャートである。 図23は、暫定実ページライト処理のフローチャートである。 図24は、本発明の第4の実施形態でのリード処理のフローチャートである。 図25は、非同期圧縮処理のフローチャートである。 図26は、本発明の第1の実施形態の概要を示す。 図27は、本発明の第1乃至第3の実施形態の組み合わせにおいて仮想LUがセカンダリLUである実施形態の概要の一例を示す。 図28Aは、本発明の第4の実施形態の一変形例での仮想ページテーブル2137の構成図である。 図28Bは、本発明の第4の実施形態の一変形例で不揮発性メモリ130に記憶されるアクセス頻度管理プログラムを示す。 図28Cは、本発明の第4の実施形態の一変形例での非同期圧縮処理の変更箇所を示す。 図29Aは、本発明の第2の実施形態の第2の変形例で行われる、プールサブ領域間のデータユニットのコピーを示す。 図29Bは、本発明の第2の実施形態の第2の変形例において、コピー元の実ページの状態が使用中から未使用に更新されたことを示す。 図29Cは、コピー元のプールサブ領域の状態が使用中から未使用に更新されたことを示す。
110…ストレージシステム
以下、図面を参照して、本発明の幾つかの実施形態を説明する。なお、以下、同種の要素を特に区別しない場合には、同一の親番号のみを用い、同種の要素を区別する場合には、親番号と子符号との組合せを用いることとする。
図26は、本発明の第1の実施形態の概要を示す。
ストレージシステム110は、コントローラ120及びプール2601を有する。
プール2601は、複数のプールサブ領域2603(例えば3つのプールサブ領域2603A乃至2603C)で構成されている。各プールサブ領域2603は、複数の実ページ2607を有する。実ページ2607の長さ(実ページ長)は、プールサブ領域2603毎に定義されている。例えば、プールサブ領域2603B内の各実ページ2607Bの長さは、プール領域2603A内の実ページ2607Aよりも長く、プールサブ領域2603C内の各実ページ2607Cの長さは、実ページ2607Bよりも長い。一つのプールサブ領域2603内では、全ての実ページの長さは同じである。プール2601は、複数のHDD(Hard Disk Drive)が基になった物理的な記憶空間であり、それ故、各実ページ2607は、物理的な記憶領域である。
コントローラ120は、仮想LU(Logical Unit)2605をホストに提供する。仮想LU2605は、複数の仮想ページ2609で構成されている。仮想LU2605は、仮想的な論理ボリューム(HDDが基になっていない論理ボリューム)であり、それ故、各仮想ページ2609は、仮想的な記憶領域である。一つの仮想LU2605における全ての仮想ページ2609は同じ長さである。実ページ2607の最大長は、例えば、仮想ページ2609の長さと同じである。
以下、第1の実施形態で行われる処理の概要を説明する。
コントローラ120は、ホストからライト要求を受けると、各ライトデータ要素(図では紙面の都合上「WDE」と略記)について(換言すれば、このライト要求から特定されるライト範囲に属する各仮想ページについて)、次の処理を行う。すなわち、コントローラ120は、ライトデータ要素を圧縮する。次に、コントローラ120は、圧縮されたライトデータ要素(図では紙面の都合上「CWDE」と略記)を含んだデータユニットの長さに基づく長さの実ページ2607であって、どの仮想ページ2609にも割り当てられていない実ページ(つまり未使用の実ページ)2607を選択する。具体的には、例えば、コントローラ120は、下記2つの条件(a)及び(b)を満たす長さの実ページ2607、
(a)データユニットの長さ以上である;
(b)そのデータユニットの長さとの差が最小である;
を選択する。図26の例によれば、データユニットの長さは実ページ2607Bの長さと同じであったため、実ページ2607Bが選択される。そして、コントローラ120は、選択した実ページ2607Bに、そのデータユニットを格納する。データユニットは、圧縮されたライトデータ要素それ自体であっても良いし、圧縮されたライトデータ要素とそのライトデータ要素に付加されたデータ保証コード(例えばECC(Error-Correcting Code))とで構成されていても良い。圧縮されたライトデータ要素にデータ保証コードが付加されていることにより、圧縮されたライトデータ要素のデータ化けを防止することができる。
以下、本発明の第1の実施形態を詳細に説明する。なお、以下、説明を分かり易くするために、データユニットは、圧縮されたデータ要素それ自体であるとする。
図1は、本発明の第1の実施形態に係る計算機システムの構成図である。
第一の通信ネットワーク、例えばSAN(Storage Area Network)103に、複数のホスト101と、ストレージシステム110が接続されている。また、第二の通信ネットワーク、例えば管理ネットワーク、例えばLAN(Local Area Network)104に、管理端末102と、ストレージシステム110が接続されている。
ホスト101は、ストレージシステム110にI/O要求(ライト要求又はリード要求)を発行する計算機である。管理端末102は、ストレージシステム110を管理するための端末である。
ストレージシステム110は、コントローラ120と記憶装置群114を備えている。記憶装置群114は、複数のHDD111で構成されている。なお、HDD111に代えて、他種の物理記憶装置、例えばフラッシュメモリデバイスなどが採用されても良い。
コントローラ120は、ホスト101から発行されたI/O要求を受け付け、そのI/O要求の処理に伴い、何れか一以上のHDD111にアクセスする。コントローラ120は、複数のホストIF121と、管理IF122と、CPU123と、主メモリ124と、キャッシュメモリ125と、圧縮伸張回路126と、不揮発性メモリ130と、HDD IF127とを備える。
ホストIF121は、SAN103を通じてホスト101等の外部の装置と通信するためのインターフェイス回路である。ホストIF121が、ホスト101からのI/O要求を受け付ける。
管理IF122は、管理ネットワーク104を通じて管理端末102等の外部の装置と通信するためのインターフェイス回路である。
HDD IF127は、HDD111と通信するためのインターフェイス回路である。
キャッシュメモリ125は、例えば揮発性のメモリである。このメモリ125には、ホスト101から受け付けたライト要求に従うライト対象のデータ、及び、ホスト101から受け付けたリード要求に従うリード対象のデータが一時的に記憶される。
圧縮伸張回路126は、ハードウェア回路であり、入力されたデータ要素を圧縮又は伸張して出力する。圧縮及び伸張の少なくとも一方が、ハードウェア回路に代えて、コンピュータプログラムがCPU123で実行されることによって行われてもよい。
不揮発性メモリ130には、管理端末通信プログラム131、プール管理プログラム132、I/O処理プログラム133、実LUテーブル134、プールテーブル135、実ページテーブル136、仮想ページテーブル137、及び仮想LUテーブル138が格納されている。不揮発性メモリ130に記憶されているコンピュータプログラムが主メモリ124にロードされ、CPU124によってそれらのプログラムが実行される。管理端末通信プログラム131は、管理端末102(具体的には後述のストレージ通信プログラム149)と通信するためのプログラムである。プール管理プログラム132は、実ページの選択などプール管理に関する処理を行うためのプログラムである。I/O処理プログラム133は、実ページに圧縮後のデータを格納するなどのI/Oに関する処理を行うためのプログラムである。各種プログラム及び各種テーブルについては、後に詳述する。また、以下の説明において、コンピュータプログラムが行う処理は、実際には、そのコンピュータプログラムを実行するCPUによって行われる。
図2は、管理端末102の構成を示す図である。
管理端末102は、計算機であり、例えば、入力装置142、出力装置143、CPU144、主メモリ145、管理IF146、及びHDD147を備えている。これらは、それぞれ、内部バス150に接続されている。
入力装置142は、ポインティングデバイス(例えばマウス)やキーボード等である。出力装置143は、例えば表示装置である。
HDD147(他種の記憶装置でも良い)には、ユーザインターフェイス(User Interface)制御プログラム(以下、「UI制御プログラム」という)148、及びストレージ通信プログラム149が格納されている。これらのコンピュータプログラムは、主メモリ145にロードされ、ロードされたプログラムがCPU144によって実行される。管理IF146は、管理ネットワーク104を通じてストレージシステム110等の外部の装置と通信するためのインターフェイス回路である。UI制御プログラム148は、GUI(Graphical User Interface)を出力装置143に表示するためのプログラムである。ストレージ通信プログラム149は、ストレージシステム110と通信するためのコンピュータプログラムである。UI制御プログラム148、及びストレージ通信プログラム149については、後に詳述する。
図3は、各種テーブルの構成図である。
実LUテーブル134は、実LUに関する情報を管理するためのテーブルである。具体的には、実LUテーブル134は、例えば、実LU毎に、実LU IDが記録される欄301と、容量情報が記録される欄302とを有する。一つの実LU(以下、この段落において「対象実LU」と言う)を例に採って言えば、このテーブル134に記録される各種情報は、下記の通りである。実LU IDは、対象実LUの識別子を表す情報である。容量情報は、対象実LUの記憶容量を表す情報である。ここで、「実LU」とは、仮想LUと異なり、HDD111が基になっている論理ボリュームである。
プールテーブル135は、プールに関する情報を管理するためのテーブルである。具体的には、プールテーブル135は、例えば、プールを構成する実LU毎に、実LU IDが記録される欄311と、実ページ長が記録される欄312と、先頭実ページIDが記録される欄313とを有する。プール2601を構成する一つの実LU(以下、この段落において「対象実LU」と言う)を例に採って言えば、このテーブル135に記録される各種情報は、下記の通りである。実LU IDは、対象実LUの識別子を表す情報である。実ページ長情報は、対象実LUを構成する実ページの長さを表す情報である。先頭実ページIDは、対象実LUの先頭にある実ページの識別子を表す情報である。以上の説明によれば、第1の実施形態では、図26を参照して説明したプールサブ領域2603は、実LUである。なぜなら、実LU毎に、実ページ長が定義されていることになる。ちなみに、対象実LUを構成する実ページの数は、対象実LUの容量と、対象実LUの実ページの実ページ長とを基に、算出することが可能である。
実ページテーブル136は、実ページに関する情報を管理するためのテーブルである。具体的には、実ページテーブル136は、例えば、実ページ毎に、実ページIDが記録される欄321と、実LU IDが記録される欄322と、状態情報が記録される欄323とを有する。一つの実ページ(以下、この段落において「対象実ページ」と言う)を例に採って言えば、このテーブル136に記録される各種情報は、下記の通りである。実ページIDは、対象実ページの識別子を表す情報である。実LU IDは、対象実ページを有する実LUの識別子を表す情報である。状態情報は、対象実ページの状態を表す情報である。例えば、対象実ページが何れかの仮想ページに割り当てられている場合には、状態情報の値は「used」であり、対象実ページがどの仮想ページにも割り当てられていなければ、状態情報の値は「unused」である。なお、このテーブル136には、実ページの長さを表す情報は記録されていないが、実ページの長さは、その実ページに対応した実LU IDをキーにプールテーブル135が参照されれば、特定可能である。なぜなら、プールテーブル135には、実LU IDに対応した実ページ長情報が記録されているからである。
仮想ページテーブル137は、仮想ページに関する情報を管理するためのテーブルである。具体的には、仮想ページテーブル137は、例えば、仮想ページ毎に、仮想ページIDが記録される欄331と、実ページIDが記録される欄332と、圧縮データ長情報が記録される欄333とを有する。一つの仮想ページ(以下、この段落において「対象仮想ページ」と言う)を例に採って言えば、このテーブル137に記録される各種情報は、下記の通りである。仮想ページIDは、対象仮想ページの識別子を表す情報である。実ページIDは、対象仮想ページに割り当てられている実ページの識別子を表す情報である。なお、対象仮想ページに実ページが割り当てられていなければ、実ページIDの値は、例えば、「N/A」(Not/Assigned)」である。圧縮データ長情報は、対象仮想ページに割り当てられている実ページに格納されている圧縮後のデータ要素の長さを表す情報である。対象仮想ページに実ページが割り当てられていなければ、圧縮データ長情報の値も、例えば「N/A」とされる。圧縮データ長情報は、例えば、後述の実ページリード処理やリード処理において、読み出されたデータ要素のどの部分に対して伸張処理がかけられれば良いかの特定に使用される。例えば、対象仮想ページに割当てられている実ページから読み出されたデータ要素の長さが512kB(キロバイト)であって、対象仮想ページに対応した圧縮データ長情報の値が346kBを表している場合、512kBのデータ要素のうちの346kBのデータ要素部分についてのみ伸張処理が行われれば良いことがわかる。
仮想LUテーブル138は、仮想LUに関する情報を管理するためのテーブルである。具体的には、仮想LUテーブル138は、例えば、仮想LU毎に、仮想LU IDが記録される欄341と、容量情報が記録される欄342と、先頭仮想ページIDが記録される欄343と、圧縮情報が記録される欄344とを有する。一つの仮想LU(以下、この段落において「対象仮想LU」と言う)を例に採って言えば、このテーブル138に記録される各種情報は、下記の通りである。仮想LU IDは、対象仮想LUの識別子を表す情報である。容量情報は、対象仮想LUについて定義された容量、つまり対象仮想LUの容量を表す情報である。先頭仮想ページIDは、対象仮想LUの先頭の仮想ページの識別子を表す情報である。圧縮情報は、対象仮想LUに格納されるデータを圧縮するか否かを表す情報である。具体的には、例えば、対象仮想LUに格納されるデータが圧縮されるのであれば、圧縮情報の値は「on」であり、対象仮想LUに格納されるデータが圧縮されないのであれば、圧縮情報の値「off」である。
ところで、プール2601内のどの実LUの実ページの長さをどのような長さにするかは、例えば、図4に示すプール管理画面401を利用して管理端末102のユーザが設定する。また、仮想LUの容量をどんな容量にしてその仮想LUに格納されるデータ要素を圧縮するか否かは、例えば、図5に示す仮想LU管理画面501を利用して管理端末102のユーザが設定する。
図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のうちのいずれかである。ユーザによって「OK」ボタンが押されると、ストレージ通信プログラム149が、入力欄402に入力された実LU IDと、入力欄403に入力された実ページ長を表す情報とをストレージシステム110に通知する。ストレージシステム110内の管理端末通信プログラム131が、それらの情報を受け、プール管理プログラム132が、以下の処理を行う。すなわち、プール管理プログラム132は、プールテーブル135に、管理端末通信プログラム131が受けた(つまりユーザから入力された)実LU ID及び実ページ長の情報を記録したレコードを追加する。また、プール管理プログラム132は、プール2601に追加された実LUを構成する全ての実ページに対応したレコード(実ページIDや実LU IDを含んだレコード)を、実ページテーブル136に追加する。
図5は、仮想LU管理画面501の一例を示す。
仮想LU管理画面501は、UI制御プログラム149によって表示されるGUIである。仮想LU管理画面501には、仮想LUのIDの入力欄502と、その仮想LUの容量を入力するための入力欄503と、仮想LUに格納されるデータを圧縮するか否かを選択する選択ボタン504とが設けられている。ユーザは、図2で示した入力装置142を用いて、入力欄502に、所望の仮想LUのIDを入力し、その仮想LUの容量を入力欄503に入力する。さらに、ユーザは、「圧縮on」或いは「圧縮off」の選択ボタン504を指定する。
ユーザによって「OK」ボタンが押されると、ストレージ通信プログラム149が、入力欄502に入力された仮想LU IDと、入力欄503に入力された容量を表す情報と、指定された選択ボタン504に対応する情報(圧縮on又は圧縮off)をストレージシステム110に通知する。管理端末通信プログラム131が、それらの情報を受け、プール管理プログラム132が、以下の処理を行う。すなわち、プール管理プログラム132は、仮想LUテーブル138に、管理端末通信プログラム131が受けた(つまりユーザから入力された)情報を記録したレコードを追加する。
以下、第1の実施形態で行われる処理を説明する。
図6は、ライト処理のフローチャートである。
ライト処理は、ホスト101から受け付けたライト要求で指定されているLUが仮想LUであって、その仮想LUに対応する圧縮情報の値が「on」である場合に実行される処理である。具体的には、プール管理プログラム132は、ライト要求を受け付けた場合、受け付けたライト要求で指定されているLUNから識別されるLUが仮想LUであって、その仮想LUに対応した圧縮情報の値(仮想LUテーブル138に記録されている値)が「on」であるか否かを判断する。この判断の結果が肯定的の場合に、図6に示すライト処理が開始される。
プール管理プログラム132は、ライト要求で指定されたライト範囲(例えばLBA及びライトデータの長さ)に相当する一以上の仮想ページを特定する(ステップS601)。
次に、プール管理プログラム132は、ステップS601で特定された一以上の仮想ページのうち、最初の仮想ページを以降の処理(つまり、ステップS603乃至ステップS605の処理)の対象とする(ステップS602)。
次に、プール管理プログラム132は、処理対象の仮想ページについて、実ページリード処理を行う(ステップS603)。実ページリード処理については、図7を参照して後に説明する。
次に、プール管理プログラム132は、処理対象の仮想ページについて、実ページライト処理を行う(ステップS604)。実ページライト処理については、図8を参照して後に説明する。
次に、プール管理プログラム132は、ステップS601で特定されたライト範囲に相当する全ての仮想ページの処理が完了したか否かを判断する(ステップS605)。ステップS605の判断の結果が否定的(ステップS605:No)であれば、プール管理プログラム132は、それらの仮想ページにおける未処理の仮想ページのうちの次の仮想ページを以降の処理の対象(つまり、ステップS603乃至ステップS605の処理)とし(ステップS606)、その処理対象の仮想ページについて、ステップS603を行う。一方、ステップS605の判断の結果が肯定的(ステップS605:Yes)であれば、ライト処理が終了する。
図7は、実ページリード処理のフローチャートである。
実ページリード処理は、図6のステップS603で行われる処理である。
プール管理プログラム132は、処理対象の仮想ページと対応付けられた実ページ(図7及び8では、Target Real Pageを略して「TRP」と表記)を特定する(ステップS701)。プール管理プログラム132は、ステップS701で実ページの特定に成功すれば(ステップS702:Yes)、ステップS705以降の処理を行い、一方、実ページの特定に失敗すれば(ステップS702:No)、ステップ703及び704の処理を行う。
プール管理プログラム132は、ステップS702で実ページの特定に失敗した場合(ステップS702:No)、初回ライトと判断し(ステップS703)、処理対象の仮想ページにライトされるデータ要素(キャッシュメモリ125上のデータ要素)の前後に必要に応じて「0」を付加し、ゼロが付加されたデータ要素を以降の処理対象(ライトデータ要素)とする(ステップS704)。つまり、ステップS704では、処理対象の仮想ページにライトされるデータ要素が仮想ページ長よりも短い場合には、そのデータ要素の前及び/又は後にゼロ等の無意味なデータ(具体的には、0を表すビットデータ)を付加することで、全体としてのデータ要素の長さを仮想ページ長と同じ長さにする処理が行われる。
一方、プール管理プログラム132は、ステップS702で実ページの特定に成功した場合(ステップS702:Yes)、処理対象の仮想ページにライトされるデータ要素の長さと、仮想ページ長が同じか否か判断する(ステップS705)。ステップS705の判断の結果が否定的であれば(ステップS705:No)、ステップS706以降の処理が行われる。一方、ステップS705の判断の結果が肯定的であれば(ステップS705:Yes)、プール管理プログラム132が、処理対象の仮想ページにライトされるデータ要素それ自体を以降の処理の対象(ライトデータ要素)とし(ステップS710)、一連の処理を終了する。
ステップS705での判断の結果が否定的(ステップS705:No)の場合、I/O処理プログラム133は、ステップS701で見つかった実ページに格納されているデータ要素をリードする(ステップS706)。次に、プール管理プログラム132は、そのリードされたデータ要素を圧縮伸張回路126に入力し、圧縮伸張回路126が、圧縮されているデータ要素(つまりリードされたデータ要素)の伸張を行う(ステップS707)。I/O処理プログラム133は、その伸張されたデータ要素に、処理対象の仮想ページにライトされるデータ要素を上書きする(ステップS708)。プール管理プログラム132は、ステップS708で上書きされたデータ要素を、以降の処理の対象(ライトデータ要素)とする(ステップS709)。
以下、ステップS704、ステップS709及びステップS710での結果としてのデータを、図8〜図10の説明において、「ライトデータ要素」と言う。ステップS704での結果としてのライトデータ要素は、処理対象の仮想ページにライトされるデータ要素(つまりオリジナルのデータ要素)それ自体、又は、そのデータ要素とその前及び/又は後に追加されたゼロデータとで構成されたデータ要素である。ステップS709での結果としてのライトデータ要素は、ステップS701で特定された実ページからリードされ伸張されたデータ要素に、処理対象の仮想ページにライトされるデータ要素(つまりオリジナルのデータ要素)が上書きされたデータである。ステップS710での処理結果としてのライトデータ要素は、処理対象の仮想ページにライトされるデータ要素(つまりオリジナルのデータ要素)それ自体である。
図8は、実ページライト処理のフローチャートである。
実ページライト処理は、図6のステップS604で行われる処理である。
プール管理プログラム132は、ライトデータ要素(WDE)を圧縮伸張回路126に入力し、圧縮伸張回路126が、ライトデータ要素を圧縮する(ステップS801)。この結果、例えば、キャッシュメモリ125に、回路126に入力されたライトデータ要素(圧縮前のライトデータ要素(図では「UWDE」と略記))と、回路126によって圧縮されたライトデータ要素(図では「CWDE」と略記)の両方が存在することになる。
次に、プール管理プログラム132は、ステップS801で圧縮されたライトデータ要素の長さが仮想ページ長以上か否か判断する(ステップS802)。
ステップS802の判断の結果が否定的であれば(ステップS802:No)、プール管理プログラム132は、圧縮されたライトデータ要素をライト対象とする(ステップS803)。次に、プール管理プログラム132は、図10に示す実ページ選択処理(図では「RP選択処理」と略記)を行う(ステップS804)。すなわち、プール管理プログラム132は、プールテーブル135の欄312を参照して、圧縮されたライトデータ要素の長さ以上の実ページ長のうち、最短の実ページ長を特定する(ステップS1001)。次に、プール管理プログラム132は、実ページテーブル136を参照して、特定された実ページ長の実ページで構成された実LU内の実ページであって、状態情報の値が「unused」の実ページを選択する(ステップS1002)。
一方、ステップS803の判断の結果が肯定的であれば(ステップS802:Yes)、プール管理プログラム132は、圧縮前のライトデータ要素をライト対象とする(ステップS811)。なぜなら、ステップS802の判断の結果が肯定的であるということは、圧縮されてもライトデータ要素が短くなっておらず圧縮のメリットが実質的に無いからである。次に、プール管理プログラム132は、図9に示すデフォルト長実ページ選択処理(図では「DLRP選択処理」と略記)を行う(ステップS812)。すなわち、プール管理プログラム132は、プールテーブル135及び実ページテーブル136を参照して、仮想ページ長と同じ実ページ長のうち状態情報の値が「unused」の実ページを選択する(ステップS901)。
ステップ804又はS812の後に、ステップS805以降が行われる。
すなわち、プール管理プログラム132は、ステップS804又はステップS812で、実ページの選択に成功したか否かを判断する(ステップS805)。ステップS805の判断の結果が否定的であれば(ステップS805:No)、プール管理プログラム132は、エラーをホスト101に応答する(ステップS813)。
一方、ステップS805の判断の結果が肯定的であれば(ステップS805:Yes)、ステップS806以降の処理が行われる。
すなわち、プール管理プログラム132は、実ページテーブル136を参照し、ステップS804又はステップS812で選択された実ページに対応する状態情報の値を「used」に変更する(ステップS806)。次に、プール管理プログラム132は、仮想ページテーブル137を参照し、処理対象の仮想ページに関する情報を更新する(ステップS807)。具体的には、プール管理プログラム132は、処理対象の仮想ページに対応した実ページIDの値を、ステップS804又はステップS812で選択された実ページの実ページIDに更新し、且つ、処理対象の仮想ページに対応した圧縮データ長情報の値を、圧縮されたライトデータ要素のデータ長を表す値に更新する。なお、S802の判断の結果が肯定的であれば、プール管理プログラム132は、圧縮データ長情報の値を、仮想ページ長と等しい値とする。次に、I/O処理プログラム133は、仮想ページテーブル137を参照し、処理対象の仮想ページに割り当てられた実ページ(すなわち、ステップS804又はステップS812で選択された実ページ)に、ライト対象のデータ要素をライトする(ステップS808)。その際、ライト対象のデータ要素がライト先の実ページよりも短い場合には、ライト先の実ページにおける、ライト対象のデータ要素が存在する領域以外の領域に、無意味なデータ(例えばゼロ)がライトされる。次に、プール管理プログラム132が、今回のライトが初回ライトか否か判断し(ステップS809)、この判断の結果が否定的である場合には(ステップS809:No)、つまり、図7のステップS703が行われていない場合には、ステップS701で選択された実ページ(TRP)に対応する状態情報の値(実ページテーブル323における値)を「unused」に変更する(ステップS810)。
図11は、リード処理のフローチャートである。
リード処理は、ホスト101から受け付けたリード要求で指定されているLUが仮想LUであって、その仮想LUに対応する圧縮情報の値が「on」である場合に実行される処理である。具体的には、プール管理プログラム132は、リード要求を受け付けた場合、受け付けたリード要求で指定されているLUNから識別されるLUが仮想LUであって、その仮想LUに対応した圧縮情報の値(仮想LUテーブル138に記録されている値)が「on」であるか否かを判断する。この判断結果が肯定的の場合に、図11で示すリード処理が開始される。
プール管理プログラム132は、リード要求で指定されたリード範囲(例えば、LBA及びリード対象のデータの長さ)に相当する一以上の仮想ページを特定する(ステップS1101)。
次に、プール管理プログラム132は、ステップS1101で特定された一以上の仮想ページのうち、最初の仮想ページを以降の処理(つまり、ステップS1103乃至ステップS1107)の対象とする(ステップS1102)。
次に、プール管理プログラム132は、処理対象の仮想ページと対応付けられた実ページ(TRP)を特定する(ステップS1103)。
次に、I/O処理プログラム133は、ステップS1103で特定された実ページに格納されているデータ要素をリードする(ステップS1104)。
次に、プール管理プログラム132は、そのリードされたデータ要素を圧縮伸張回路126に入力し、圧縮伸張回路126が、圧縮されているデータ要素(つまり、リードされたデータ要素)の伸張を行う(ステップS1105)。ただし、処理対象の仮想ページの圧縮データ長(仮想ページテーブル137に記録されている値)が仮想ページ長と同じであれば、S1104でリードされたデータ要素は圧縮されていないため、この伸長の処理は行われない(つまりステップS1105がスキップされる)。
次に、プール管理プログラム132は、ステップS1101で特定されたリード範囲に相当する全ての仮想ページの処理が完了したか否かを判断する(ステップS1106)。ステップS1106の判断の結果が否定的(ステップS1106:No)であれば、プール管理プログラム132は、それらの仮想ページにおける未処理の仮想ページのうちの次の仮想ページを以降の処理の対象(つまり、ステップ1103乃至ステップS1105の処理)とし(ステップS1108)、その処理対象の仮想ページについて、ステップS1103を行う。一方、ステップS1105の判断の結果が肯定的(ステップS1106:Yes)であれば、プール管理プログラム132は、ステップS1107を行う。すなわち、プール管理プログラム132は、キャッシュメモリ125に存在する全ての伸張されたデータ要素を結合し(つまり、ホスト101から受け付けたリード要求に従うリードデータを生成し)、生成されたリードデータをホスト101へ送信する。
以上が、第1の実施形態についての説明である。
第1の実施形態によれば、プール2601には、複数種類の実ページ長の実ページが混在しており、実ページ単位での管理が行われる。全ての実ページの長さが短い場合(例えば全ての実ページの長さが仮想ページ長未満である場合)に比べて、管理しなければならない実ページの数が少ない。このため、容量スケーラビリティの低下を抑えることができる。
また、第1の実施形態によれば、圧縮されたライトデータ要素が、圧縮されたライトデータ要素の長さ以上の実ページ長のうち最短の実ページ長が特定され、特定された実ページ長の実ページに格納される。このため、高い容量効率を実現することができる。
以下、本発明の第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略或いは簡略する(この点は、後述の第3及び第4の実施形態についても同様である)。
第2の実施形態では、未使用のプールサブ領域2603については、実ページ長が定義されておらず、故に、未使用のプールサブ領域2603には、実ページが存在しない。ライト処理において、コントローラ120は、圧縮されたライトデータ要素の格納先に相応しい実ページをいずれの使用中のプールサブ領域2603からも特定できなかった場合に、未使用のプールサブ領域2603についての実ページ長を定義する。それによりその実ページ長の実ページがその未使用のプールサブ領域2603に形成される。コントローラ120は、その未使用のプールサブ領域2603から一つの実ページを選択し、その実ページをライト先仮想ページに割り当てる。また、第2の実施形態では、プール2601を構成する各実LUが、複数のチャンク(実LUのサブ記憶領域)で構成されており、チャンク毎に、実ページ長が定義される。それ故、第2の実施形態では、チャンクが、プールサブ領域2603である。第2の実施形態では、チャンクは、固定長であり、全てのチャンクが同じ長さである。
以下、本発明の第2の実施形態を詳細に説明する。
図12は、本発明の第2の実施形態での不揮発性メモリ130が有するプログラム及びテーブルを示す。
第2の実施形態では、実ページ長テーブル1300及びチャンクテーブル1320が追加されている。また、プールテーブル1310及び実ページテーブル1330の内容は、プールテーブル135及び実ページテーブル136の内容とそれぞれ異なっている。
図13は、第2の実施形態での前述したテーブル1300、1310、1320及び1330の構成図である。
実ページ長テーブル1300は、定義可能な実ページ長のリストである。このテーブル1300によれば、最大の実ページ長が1MB(メガバイト)であり、これは、仮想ページ長と同じである。
プールテーブル1310は、図3に示した欄312及び313に代えて、プールを構成する実LU毎に欄1312を有する。欄1312には、先頭チャンクIDが記録される。先頭チャンクIDは、その実LUの先頭にあるチャンクの識別子を示す情報である。このテーブル1310によれば、実LU ID「RL0」の実LUは、チャンクID「CH0」〜「CH9」の10個のチャンクで構成されていることがわかる。このため、その実LUに対応した先頭チャンクIDが「CH0」になっている。
チャンクテーブル1320は、チャンクに関する情報を管理するためのテーブルである。具体的には、チャンクテーブル1320は、例えば、チャンク毎に、チャンクIDが記録される欄1321と、実ページ長が記録される欄1322と、状態情報が記録される欄1323と、先頭実ページIDが記録される欄1324とを有する。一つのチャンク(以下、この段落において「対象チャンク」と言う)を例に採って言えば、このテーブル1320に記録される各種情報は、下記の通りである。チャンクIDは、対象チャンクの識別子を表す情報である。状態情報は、対象チャンクの使用状態を表す情報である。例えば、対象チャンクについて実ページ長が定義済みであれば、状態情報の値は「used」であり、対象チャンクについて実ページ長が定義されていなければ、状態情報の値は「unused」である。先頭実ページIDは、対象チャンクの先頭にある実ページの識別子を表す情報である。
実ページテーブル1330は、図3に示した欄332に代えて、実ページ毎に欄1332を有する。欄1332には、チャンクIDが記録される。チャンクIDは、その欄1332に対応する実ページを有するチャンクの識別子を表す情報である。
図14は、第二の実施形態でのプール管理画面1401の一例を示す。
プール管理画面1401には、図4に示したプール管理画面401と異なり、実ページ長の入力欄が設けられていない。
ユーザによって「OK」ボタンが押されると、既に説明したように、プールテーブル1310に、ユーザから入力された実LU IDを記録したレコードを追加する。そのレコードに記録される先頭チャンクIDは、プール2601における最終のチャンクのIDの次のIDとされる。また、プール管理プログラム132は、プール2601に追加された実LUに対応する容量を基に、その追加された実LUを構成するチャンクの数を特定し、チャンクテーブル1320に、特定されたチャンクの数と同数のレコードを追加する。追加された各レコードには、チャンクIDが記録されているものの、実ページ長、状態情報及び先頭実ページIDの値は「N/A」である。
図15は、実ページ長管理画面1501の一例を示す。
実ページ長管理画面1501は、UI制御プログラム148によって表示されるGUIである。実ページ長管理画面1501には、追加する実ページ長を入力するための入力欄1502が設けられている。ユーザは、図2で示した入力装置142を用いて、追加実ページ長入力欄1502に、追加する実ページ長を入力する。
ユーザによって「OK」ボタンが押されると、ストレージ通信プログラム149が、入力欄1502に入力された実ページ長をストレージシステム110に通知する。ストレージシステム110内の管理端末通信プログラム131が、その情報を受け、プール管理プログラム132が、以下の処理を行う。すなわち、プール管理プログラム132は、実ページ長テーブル1300に、管理端末通信プログラム131が受けた(つまりユーザから入力された)実ページ長を記録したレコードを追加する。
実ページ長テーブル1300には、製品出荷時に予め複数種類の実データ長が記録されていてそのテーブル1300の編集が不可能になっていても良い。
図16は、第2の実施形態でのデフォルト長実ページ選択処理のフローチャートである。
デフォルト長実ページ選択処理は、図8のステップS812で行われる処理である。
プール管理プログラム132は、チャンクテーブル1320の欄1322を参照して、仮想ページ長と同じ実ページ長のうち状態情報の値が「unused」の実ページを選択する)。
プール管理プログラム132は、ステップS1601で実ページの選択に成功したか否かを判断する(ステップS1602)。ステップS1602の判断の結果が肯定的であれば(ステップS1602:Yes)、この一連の選択処理が終了する。
一方、ステップS1602の判断の結果が否定的であれば(ステップS1602:No)、例えば、いずれの使用中のチャンクにも、仮想ページ長と同じ長さであって未使用の実ページが無いため、未使用のチャンクについて、仮想ページ長と同じ実ページ長が定義される。
具体的には、プール管理プログラム132は、チャンクテーブル1320を参照し、状態が「unused」のチャンクを特定する(ステップS1603)。
次に、プール管理プログラム132は、ステップS1603でチャンクの特定に成功したか否かを判断する(ステップS1604)。ステップS1604の判断の結果が否定的であれば(ステップS1604:No)、一連の選択処理が終了する。一方、ステップS1604の判断の結果が肯定的であれば(ステップS1604:Yes)、プール管理プログラム132は、チャンクテーブル1320における、ステップS1603で特定されたチャンクに対応する状態情報の値を、「used」に更新する(ステップS1605)。この段階で、例えば、ステップS1603で特定されたチャンクに対応する先頭実ページIDの値が、プール管理プログラム132によって、「N/A」から有効な値に更新される。
次に、プール管理プログラム132は、ステップS1603で特定されたチャンクを、仮想ページと同じ長さの実ページに分割する(ステップS1606)。具体的には、プール管理プログラム132は、例えば、チャンクテーブル1320における、ステップS1603で特定されたチャンクに対応する実ページ長の値を、仮想ページ長を表す値に更新する(仮想ページ長と同じ実ページ長は実ページ長テーブル1300に記載されている)。また、プール管理プログラム132は、例えば、チャンクの容量(例えば1GB(ギガバイト))を仮想ページ長で割ることで、ステップS1603で特定されたチャンクを構成する実ページの数を算出し、実ページテーブル1330に、その数と同数のレコードを追加する。追加された各レコードにおいて、実ページIDは自動的に割り振られた値(例えば連番)であり、チャンクIDは、ステップS1603で特定されたチャンクの識別子であり、状態は「unused」である。
次に、プール管理プログラム132は、ステップS1603で特定されたチャンクにおける分割された実ページのうち、最初の実ページを選択する(ステップS1607)。
図17は、第2の実施形態での実ページ選択処理のフローチャートである。
実ページ選択処理は、図8のステップS804で行われる処理である。
プール管理プログラム132は、チャンクテーブル1320の欄1322を参照して、圧縮されたライトデータ要素の長さ以上の実ページ長のうち、最短の実ページ長を特定する(ステップS1701)。次に、プール管理プログラム132は、実ページテーブル136を参照して、特定された実ページ長の実ページで構成されたチャンク内の実ページであって、状態情報の値が「unused」の実ページを選択する(ステップS1702)。
プール管理プログラム132は、ステップS1702で実ページの選択に成功したか否かを判断する(ステップS1703)。ステップS1703の判断の結果が肯定的であれば(ステップS1703:Yes)、この一連の選択処理が終了する。
一方、ステップS1703の判断の結果が否定的であれば(ステップS1704:No)、例えば、いずれの使用中のチャンクにも、S1701で特定された実ページ長であり未使用の実ページが無いため、圧縮されたライトデータ要素の長さ以上の実ページ長のうち最短の実ページ長が実ページ長テーブル1300から選択され、選択された実ページ長が、未使用のチャンクについて定義される。
具体的には、ステップS1702の後に、ステップS1703乃至S1708が行われることである。ステップS1703乃至S1708のS1707以外の処理は、図16を参照して説明したS1602乃至S1607のS1606以外の処理とそれぞれ同じである。
ステップS1707では、プール管理プログラム132は、圧縮されたライトデータ要素の長さ以上の実ページ長のうち最短の実ページ長を実ページ長テーブル1300から選択し、選択した実ページ長の実ページに、特定されたチャンクを分割する。具体的には、プール管理プログラム132は、例えば、チャンクテーブル1320における、ステップS1704で特定されたチャンクに対応する実ページ長の値を、上記選択した実ページ長を表す値に更新する。また、プール管理プログラム132は、例えば、チャンクの容量を上記選択した実ページ長で割ることで、ステップS1704で特定されたチャンクを構成する実ページの数を算出し、実ページテーブル1330に、その数と同数のレコードを追加する。追加された各レコードにおいて、実ページIDは自動的に割り振られた値であり、チャンクIDは、ステップS1704で特定されたチャンクの識別子であり、状態は「unused」である。
図18は、チャンクガーベージコレクション処理のフローチャートである。
チャンクガーベージコレクション処理とは、未使用のチャンクを増やすための処理であり、具体的には、状態がusedのチャンクを構成する全ての実ページの状態がunusedである場合に、そのチャンクの状態をusedからunusedに更新する処理である。チャンクガーベージコレクション処理は、例えば、下記(16−1)乃至(16−4)のいずれかの契機で開始される。
(16−1)CPU123が低負荷である(例えばCPU123の負荷が所定の負荷より低い);
(16−2)定期的;
(16−3)管理端末102のユーザから指示を受けた;
(16−4)usedのチャンクの割合が所定の閾値を下回った(例えば、プール管理プログラム132が、チャンクテーブル1320を参照し、状態情報の値「used」の数が所定数未満になったことを検出した)。
プール管理プログラム132は、チャンクテーブル1320を参照し、先頭のチャンクIDを、以降の処理の対象とする(ステップS1801)。
次に、プール管理プログラム132は、実ページテーブル1330を参照して、処理対象のチャンクの全実ページの状態が「unused」であるか否かを判断する(ステップS1802)。ステップS1802の判断の結果が否定的であれば(ステップS1802:No)、ステップS1805が行われる。
一方、ステップS1802の判断の結果が肯定的であれば(ステップS1802:Yes)、プール管理プログラム132は、実ページテーブル1330から、処理対象のチャンクに対応した全実ページのエントリ(状態情報が「unused」のエントリ)を削除する(ステップS1803)。
次に、プール管理プログラム132は、チャンクテーブル1320を参照し、処理対象のチャンクの状態情報を「unused」に変更する(ステップS1804)。
次に、プール管理プログラム132は、全チャンクの処理が完了したか否かを判断する(ステップS1805)。ステップS1805の判断の結果が肯定的であれば(ステップS1805:Yes)一連の処理が終了する。一方、ステップ1805の判断の結果が否定的であれば(ステップ1805:No)、プール管理プログラム132は、全チャンクのうちの次のチャンクを以降の処理の対象(つまり、ステップS1802乃至ステップS1805の処理)とし(ステップS1806)、その処理対象のチャンクについて、ステップS1802を行う。
以上が、本発明の第2の実施形態についての説明である。第2の実施形態によれば、プールサブ領域2603における実ページの長さが動的に定義されたり変更されたりする。このため、予め全てのプールサブ領域2603について実ページ長を定義しておくことに比べて、適切に実ページ長が定義されることが期待できる。
また、第2の実施形態では、プールサブ領域2603は、実LUよりも容量の小さいチャンクである。このため、たとえ、一旦或るチャンクに実ページ長が定義された後にあまりその或るチャンクに圧縮されたデータ要素が格納されなくても、空き領域の量は、実LUがプールサブ領域である場合に比べて少なくて済む。
なお、第2の実施形態では、下記の変形例が考えられる。
第1の変形例では、コントローラ120に、実データ長の自動学習機能が備えられる。具体的には、例えば、プール管理プログラム132は、S1707で、S1701で特定された実ページ長を未使用チャンクに定義すると共に、その実ページ長を実ページ長テーブル1301に追記する。S1701で特定される実ページ長は、例えば、圧縮されたライトデータ要素の長さ以上で、かつ予め決められた長さ(例えば、64kB)の倍数のうち最小の長さである。
第2の変形例では、コントローラ120に、或るプールサブ領域内の全ての使用中実ページから他の1以上のプールサブ領域内の未使用実ページにデータユニットをコピーし、コピー元の全ての実ページの状態を使用中(used)から未使用(unused)に更新する機能が備えられる。例えば、プール管理プログラム132が、図29Aに示すように、定義されている実ページ長が同じである2以上のプールサブ領域(例えば2つのチャンク2901A及び2901B)を特定する。また、プール管理プログラム132は、特定された2以上のプールサブ領域のうち、使用中の実ページが最も少ないプールサブ領域を特定する。そして、I/O処理プログラム133が、特定されたプールサブ領域(例えばチャンク2901A)内の全ての使用中の実ページ(図29Aにハッチングで示されている実ページ)から、上記2以上のプールサブ領域のうちの1以上の他のプールサブ領域(例えばチャンク2901B)内の未使用の実ページに、データユニットをコピーする。プール管理プログラム132は、図29Bに示すように、コピー元の全ての実ページの状態を使用中(used)から未使用(unused)に更新する。これにより、図18に示したチャンクガーベージコレクション処理が行われれば、図29Cに示すように、コピー元の実ページを有するプールサブ領域(チャンク2901A)の状態が、使用中(used)から未使用(unused)に更新される。従って、この第2の変形例によれば、未使用のプールサブ領域を増やすことができる。なお、コピー元を、使用中の実ページが最も少ないプールサブ領域とすることで、コピー回数を最小限に抑えることができる。第2の変形例に係るコピーやコピー元の実ページの状態の更新は、チャンクガーベージコレクション処理に含まれていても良いし、その処理とは別の処理であっても良い。また、コピー元のプールサブ領域を決定する処理を開始する契機は、例えば、前述の(16−1)乃至(16−4)のいずれかの契機であって良い。
第3の実施形態では、一つの仮想ページに複数の実ページが割り当てられることがある。このため、例えば、実ページリード処理(図7)のS701及びS706や、実ページライト処理(図8)のS810では、TRP(処理対象の仮想ページに割り当てられている実ページ)の数は、1であることもあれば、2以上であることもある。同様に、リード処理(図11)のS1103で特定される実ページの数は、1であることもあれば、2以上であることもある。
図19は、本発明の第3の実施形態での仮想ページテーブル1900の構成図である。
このテーブル1900には、欄332の代わりに、欄1902が設けられる。欄1902には、一つの実ページIDだけではなく、複数の実ページIDが記録されることがある。前述したように、一つの仮想ページに複数の実ページが割り当てられることがあるからである。
図20は、本発明の第3の実施形態での実ページ選択処理のフローチャートである。
プール管理プログラム132は、図3に示すプールテーブル135の欄312を参照して、圧縮されたライトデータ要素の長さ以上の実ページ長のうち、1以上の実ページ長の合計値が、圧縮されたライトデータ要素の長さより長くなる実ページ長の組み合わせを特定する(ステップS2001)。
次に、プール管理プログラム132は、実ページテーブル136を参照して、特定された実ページ長の組み合わせのうち、合計値が最小となる組み合わせを特定する(ステップS2002)。
次に、プール管理プログラム132は、実ページテーブル136を参照して、ステップS2002で特定された組み合わせを構成する実ページ長のそれぞれについて、その長さを持つ実ページのうち、状態情報の値が「unused」の実ページを選択する(ステップS2003)。
以上が、本発明の第3の実施形態についての説明である。第3の実施形態によれば、容量効率の向上が一層期待できる。
本発明の第4の実施形態では、コントローラ120は、ライト要求をホスト101から受け付けた場合、ライト要求を受けた場合に行われるライト処理において、処理対象の仮想ページにライトされるデータ要素を、とりあえず、圧縮することなく、仮想ページ長と同じ長さの実ページに格納しておく。その後、ライト処理とは非同期で、コントローラ120は、仮想ページ長と同じ長さの実ページからデータ要素をリードし、リードしたデータ要素について、前述した図8を参照して説明した実ページライト処理を実行する。
以下、本発明の第4の実施形態を詳細に説明する。
図21は、本発明の第4の実施形態での仮想ページテーブル2137の構成図である。
仮想ページテーブル2137には、仮想ページ毎に、欄331〜333に加えて、状態情報が記録される欄334が設けられている。状態情報は、その状態情報に対応する仮想ページに割り当てられている実ページ(以下、この段落で「対象実ページ」と言う)に格納されているデータ要素が圧縮されているか否かを表す情報である。例えば、対象実ページに格納されているデータ要素が圧縮されている場合には、状態情報の値は「compressed」であり、対象実ページに格納されているデータ要素が圧縮されていなければ、状態情報の値は「uncompressed」である。仮想ページに実ページが割り当てられていない場合には、その仮想ページの対応する状態情報の値は、例えば「N/A」である。
図22は、本発明の第4の実施形態での実ページリード処理のフローチャートである。
第4の実施形態での実ページリード処理のステップS2201〜S2210は、第1の実施形態での実ページリード処理のS701〜S710にそれぞれ対応している。S2207がS707と異なり、それに伴い、S2208がS708と異なっている。S2201〜S2210のS2207及びS2208以外の処理は、S701〜S710のS707及びS708以外の処理とそれぞれ同じである。
S2207では、プール管理プログラム132が、仮想ページテーブル2137を参照し、処理対象の仮想ページに対応した状態情報の値が「compressed」であれば、S2206でリードされたデータ要素を圧縮伸張回路126に入力し、圧縮伸張回路126がそのデータ要素を伸張する。一方、その状態情報の値が「compressed」でなければ、プール管理プログラム132は、リードされたデータ要素を圧縮伸張回路126に入力しない。
このため、S2208では、I/O処理プログラム133は、その伸張されたデータ要素又はリードされたデータ要素それ自体に、処理対象の仮想ページにライトされるデータ要素を上書きする。
図23は、暫定実ページライト処理のフローチャートである。
暫定実ページライト処理は、図6に示したライト処理におけるS604で、実ページライト処理に代わって行われる処理である。実ページライト処理は、既に説明し後に詳述するように、ライト処理とは非同期に行われる。
プール管理プログラム132は、図9を参照して説明したデフォルト長実ページ選択処理(図では「DLRP選択処理」と略記)を行う(ステップS2301)。
次に、プール管理プログラム132は、ステップS2301で、実ページの選択に成功したか否かを判断する(ステップS2302)。ステップS2302の判断の結果が否定的であれば(ステップS2302:No)、プール管理プログラム132は、エラーをホスト101に応答する(ステップS2308)。
一方、ステップS2302の判断の結果が肯定的であれば(ステップS2302:Yes)、ステップS2303以降の処理が行われる。
すなわち、プール管理プログラム132は、実ページテーブル136を参照し、ステップS2301で選択された実ページに対応する状態情報の値を「used」に変更する(ステップS2303)。次に、プール管理プログラム132は、仮想ページテーブル2137を参照し、処理対象の仮想ページに関する情報を更新する(ステップS2304)。具体的には、プール管理プログラム132は、処理対象の仮想ページに対応した実ページIDの値を、ステップS2301で選択された実ページの実ページIDに更新し、処理対象の仮想ページに対応した圧縮データ長情報の値を、圧縮されたライトデータ要素のデータ長を表す値に更新し、且つ、処理対象の仮想ページに対応した状態情報の値を「uncompressed」に更新する。次に、I/O処理プログラム133は、仮想ページテーブル2137を参照し、処理対象の仮想ページに割り当てられた実ページに、ライト対象のデータ要素をライトする(ステップS2305)。その際、ライト対象のデータ要素がライト先の実ページよりも短い場合には、ライト先の実ページにおける、ライト対象のデータ要素が存在する領域以外の領域に、無意味なデータ(例えばゼロ)がライトされる。次に、プール管理プログラム132が、今回のライトが初回ライトか否か判断し(ステップS2306)、この判断の結果が否定的である場合には(ステップS2306:No)、つまり、図22のステップS2203が行われていない場合には、S2201で選択された実ページ(TRP)に対応する状態情報の値(実ページテーブル323における値)を「unused」に変更する(ステップS2307)。
図24は、本発明の第4の実施形態でのリード処理のフローチャートである。
第4の実施形態でのリード処理のステップS2401〜S2408は、第1の実施形態での実ページリード処理のS1101〜S1108にそれぞれ対応している。S2405がS1105と異なっており、S2401〜S2408のS2405以外の処理は、S1101〜S1108のS1105以外の処理とそれぞれ同じである。
S2405では、プール管理プログラム132が、仮想ページテーブル2137を参照し、処理対象の仮想ページに対応した状態情報の値が「compressed」であれば、S2404でリードされたデータ要素を圧縮伸張回路126に入力し、圧縮伸張回路126がそのデータ要素を伸張する。
図25は、非同期圧縮処理のフローチャートである。
非同期圧縮処理は、例えば、下記(25−1)乃至(25−4)のいずれかの契機で開始される。
(25−1)CPU123が低負荷である(例えばCPU123の負荷が所定の負荷より低い);
(25−2)定期的;
(25−3)管理端末102のユーザから指示を受けた;
(25−4)compressedに対応した仮想ページの割合が所定の閾値を下回った(例えば、プール管理プログラム132が、仮想ページテーブル2137を参照し、状態情報の値「compressed」の数が所定数未満になったことを検出した)。
プール管理プログラム132が、仮想LUの先頭の仮想ページを、以降の処理(S2502〜S2506)の対象とする(ステップS2501)。
プール管理プログラム132が、処理対象の仮想ページに対応した状態情報の値が「uncompressed」であるか否かを判断する(ステップS2502)。
ステップS2502の判断の結果が肯定的(S2502:YES)であれば、プール管理プログラム132は、処理対象の仮想ページに対応付けられている実ページを特定する(ステップS2503)。I/O処理プログラム133が、特定された実ページからデータ要素をリードする(ステップS2504)。その後、図8に示した実ページライト処理が行われる(ステップS2505)。実ページライト処理が成功の場合、プール管理プログラム132が、処理対象の仮想ページに対応した状態情報の値を「uncompressed」から「compressed」に変更する(ステップS2506)。
ステップS2502の判断の結果が否定的(S2502:NO)であれば、又は、ステップS2506の後に、プール管理プログラム132は、仮想LUの全ての仮想ページについて処理が完了したか否かを判断する(ステップS2507)。この判断の結果が否定的であれば(S2507:NO)、プール管理プログラム132は、次の仮想ページを以降の処理対象とし(ステップS2508)、ステップS2502を実行する。一方、S2507の判断の結果が肯定的であれば(S2507:YES)、非同期圧縮処理が終了する。
以上が、本発明の第4の実施形態の説明である。第4の実施形態によれば、ライト処理では圧縮/伸張が行われないので、ライト処理時のCPU123の負荷を下げることができ、以って、ライト処理の処理速度の向上が期待できる。
なお、第4の実施形態では、下記の変形例が考えられる。例えば、図28Aに示すように、仮想ページテーブル2137´に、仮想ページ毎に、アクセス頻度が記録される欄335が設けられる(IOPSは、「IO per second」の略)。また、図28Bに示すように、不揮発性メモリ130に、CPU123で実行されるアクセス頻度管理プログラム(2801)が記憶される。アクセス頻度管理プログラム2801は、仮想ページ毎に、アクセス頻度を監視し、適時に、仮想ページに対応するアクセス頻度(図28Aの欄2105に記載の値)を更新する。この変形例では、非同期圧縮処理において、処理対象の仮想ページに対応した状態情報の値が「uncompressed」であっても(ステップS2502:YES)、図28Cに示すように、ステップS2503以降が行われないことがある。具体的には、プール管理プログラム132が、ステップS2502:YESの場合、仮想ページテーブル2137´を参照して、処理対象の仮想ページに対応したアクセス頻度を特定し、アクセス頻度が所定の閾値より高ければ(S2801:YES)、S2503を行わない。これにより、アクセス頻度が高い仮想ページに対するライト処理/リード処理では、圧縮/非圧縮が行われないことによる処理速度の向上が期待できる。
以上、例えば、第2乃至第4の実施形態について、第1の実施形態との相違点を主に説明したが、第1乃至第4の実施形態のうちのどの二以上の実施形態を組み合わせて実施することも可能である。更に、ライト先の仮想LUは、ホスト101からのライト要求で指定されるLUに代えて又は加えて、プライマリLUに記憶されているデータのコピー先となるセカンダリLUであっても良い。一例を、図27に示す。すなわち、ホスト等の外部装置からアクセスされ得るプライマリLU(実LU又は仮想LU)から、仮想ページ単位で、データ要素が、プライマリLUとペアを構成するセカンダリLU(仮想LU)にコピーされる。その際、コピー対象のデータ要素が圧縮され、圧縮されたデータ要素を含むデータユニットの長さに基づく一以上の実ページが選択され、選択された実ページがコピー先仮想ページに割り当てられ、その実ページに、圧縮されたデータ要素を含むデータユニットが格納される。もし、圧縮されたデータ要素を含むデータユニットの長さが仮想ページ長以上であるようなら、圧縮前のデータ要素を含んだデータユニットが、仮想ページ長と同じ長さの実ページに格納される。
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、第1、第3又は第4の実施形態での実ページ選択処理では、条件に合致する実ページ長の実ページが見つからなければ、一段階長い実ページが選択されても良い。例えば、圧縮されたライトデータ要素の長さが511kBであり、そうすると、条件に合致する実ページ長(圧縮されたライトデータ要素以上の実ページ長のうちの最短の実ページ長)は、512kBとなるが、512kBの実ページが全て使用中であるため、その種の実ページの選択ができなければ、一段階長い実ページ、例えば仮想ページ長と同じ長さの実ページが選択されても良い。
また、例えば、データユニットに、圧縮されたライトデータ要素だけでなく他種の情報、例えばデータ保証コードが付加されている場合、仮想ページ長或いは実ページ長との比較(例えば、図8のS802、図10のS1001、図17のS1701、図20のS2001)では、データユニットの全体の長さが比較の対象となる。また、例えば、データユニットの長さが仮想ページ長以上であるが故に、仮想ページ長と同じ長さの実ページに圧縮前のライトデータ要素がライトされる場合、圧縮前のライトデータ要素の長さが仮想ページと一致していれば、データ保証コード等の他種の情報が付加されることなく、圧縮前のライトデータ要素のみが、実ページにライトされる。この場合には、圧縮前のライトデータ要素に含まれているデータ保証コード(例えば、512バイトのデータに対して付加される8バイトのデータ保証コード)を用いて、圧縮前のライトデータ要素の信頼性が保証される。

Claims (15)

  1. プール(2601)の基になる複数の記憶装置(111)と、
    コントローラ(120)と
    を備え、
    前記プールは、複数の実ページ(2607)で構成されており、
    前記複数の実ページには、長さの異なる実ページが含まれており、
    前記コントローラは、
    仮想ボリューム(2605)を構成する複数の仮想ページのうちのライト先仮想ページに対するライトデータ要素を圧縮する圧縮部(126)と、
    下記(条件A)及び(条件B)を満たす実ページを選択し、前記選択された実ページを前記ライト先仮想ページに割り当てるプール管理部(132)と、
    (条件A)実ページ長が、圧縮されたライトデータ要素を有するデータユニットのデータ長に基づく実ページ長であること;
    (条件B)実ページが、いずれの仮想ページにも割り当てられていない実ページであること;
    前記選択された実ページに前記データユニットを格納するI/O処理部(133)と
    を備え、
    各仮想ページは、仮想的な記憶領域であり、
    各実ページは、物理的な記憶領域であり、
    前記データユニットは、前記圧縮されたライトデータ要素それ自体である、又は、前記圧縮されたライトデータ要素と特定の情報とで構成されている、
    ストレージシステム。
  2. 前記コントローラは、圧縮されているデータ要素を伸張する伸張部(126)を有し、
    前記プールが、複数のプールサブ領域(2603)で構成されており、
    プールサブ領域毎に、実ページ長が定義されており、
    複数種類の実ページ長のうちの最大の実ページ長は、仮想ページ長と同じであり、
    前記ライト先仮想ページに対するライト処理に、実ページリード処理と実ページライト処理とが含まれており、前記実ページリード処理の後に前記実ページライト処理が行われ、
    前記実ページリード処理では、
    (A1)前記プール管理部が、前記ライト先仮想ページに既に実ページが割り当てられているか否かを判断し、
    (A2)前記(A1)の判断の結果が肯定的の場合、前記プール管理部が、前記ライト先仮想ページに対するデータ要素の長さが、仮想ページ長と同じか否かを判断し、
    (A3)前記(A2)の判断の結果が否定的の場合、前記I/O処理部が、前記ライト先仮想ページに割り当てられている実ページからデータユニットを読出し、読み出したデータユニットが有する圧縮されているデータ要素を前記伸張部が伸張し、前記プール管理部が、前記伸張されたデータ要素に、前記ライト先仮想ページに対するデータ要素を上書きし、
    前記実ページライト処理でのライトデータ要素は、前記(A2)の判断の結果が否定的だった場合、上書きされたデータ要素であり、前記(A2)の判断の結果が肯定的だった場合、前記ライト先仮想ページに対するデータ要素であり、
    前記実ページライト処理では、
    (B1)前記圧縮部が、前記ライトデータ要素を圧縮し、
    (B2)前記プール管理部が、圧縮されたライトデータ要素を含んだデータユニットの長さが仮想ページ以上か否かを判断し、
    (B3)前記(B2)の判断の結果が肯定的であれば、前記(条件A)は、実ページ長が、仮想ページ長と同じ実ページ長であることであり、前記I/O処理部は、前記データユニットではなく、圧縮前のライトデータ要素を有する別のデータユニットを、前記選択された実ページに格納し、
    (B4)前記(B2)の判断の結果が否定的であれば、前記(条件A)は、実ページ長が、複数種類の実ページ長のうち、前記データユニットの長さ以上であって前記データユニットの長さとの差が最小である実ページ長であることであり、前記I/O処理部は、前記データユニットを、前記選択された実ページに格納し、
    前記別のデータユニットは、前記圧縮前のライトデータ要素それ自体である、又は、前記圧縮前のライトデータ要素と特定の情報とで構成されている、
    請求項1記載のストレージシステム。
  3. 前記複数のプールサブ領域のうちの未使用のプールサブ領域については実ページ長が定義されておらず、
    前記プール管理部が、前記実ページライト処理において、前記(条件A)及び(条件B)を満たす実ページが見つからない場合、いずれかの未使用のプールサブ領域について前記(条件A)を満たす実ページ長を定義し、その定義された実ページ長の実ページを、前記(条件A)を満たす実ページ長が定義されたプールサブ領域から選択する、
    請求項2記載のストレージシステム。
  4. 前記(B4)において、前記(条件A)及び前記(条件B)を満たす実ページは、いずれの仮想ページにも割り当てられていない二以上の実ページであることがあり、それら二以上の実ページの合計実ページ長は、複数種類の合計実ページ長のうち、前記データユニットの長さ以上であって前記データユニットの長さとの差が最小となる合計実ページ長である、
    請求項2又は3に記載のストレージシステム。
  5. 前記ライト処理に、前記実ページライト処理の代わりに暫定実ページライト処理が含まれており、
    前記コントローラは、前記ライト処理とは別のタイミングで、非同期圧縮処理を行い、
    前記非同期圧縮処理に、前記実ページライト処理が含まれており、
    前記暫定実ページライト処理では、
    (C1)前記プール管理部が、仮想ページ長と同じ実ページ長の未割当ての実ページを選択し、前記ライト先仮想ページの状態が未圧縮であると管理し、前記選択した実ページを前記ライト先仮想ページに割り当て、
    (C2)前記I/O処理部が、前記選択された実ページに、ライトデータ要素を含んだデータユニットを格納し、
    前記暫定実ページライト処理での前記ライトデータ要素は、前記(B2)の判断の結果が否定的だった場合、上書きされたデータ要素であり、前記(B2)の判断の結果が肯定的だった場合、前記ライト先仮想ページに対するデータ要素それ自体であり、
    前記非同期圧縮処理では、
    (D1)前記プール管理部が、処理対象の仮想ページの状態が未圧縮であるか否かを判断し、
    (D2)前記(D2)の判断の結果が肯定的の場合、前記プール管理部が、前記処理対象の仮想ページに割り当てられている実ページを特定し、前記I/O処理部が、前記特定された実ページからデータユニットを読み出し、前記実ページライト処理が行われ、その後に、前記プール管理部が、前記処理対象の仮想ページの状態が圧縮済みであると管理し、
    前記(D2)での前記実ページライト処理では、前記ライトデータ要素は、前記(D2)において読み出されたデータユニットに含まれているデータ要素であり、
    前記実ページリード処理の前記(A3)では、前記プール管理部が、前記ライト先仮想ページの状態が未圧縮か否かを判断し、その判断の結果が否定的の場合に、前記伸張部が、前記読み出されたデータユニットが有する圧縮されているデータ要素を伸張する、
    請求項2乃至4のいずれかに記載のストレージシステム。
  6. 前記ライト先仮想ページに対するライト処理に、実ページライト処理が含まれており、
    前記実ページライト処理では、
    (F1)前記圧縮部が、ライトデータ要素を圧縮し、
    (F2)前記プール管理部が、圧縮されたライトデータ要素を含んだデータユニットの長さが仮想ページ以上か否かを判断し、
    (F3)前記(F2)の判断の結果が肯定的であれば、前記(条件A)は、実ページ長が、仮想ページ長と同じ実ページ長であることであり、前記I/O処理部は、前記データユニットではなく、圧縮前のライトデータ要素を含んだ別のデータユニットを、前記選択された実ページに格納し、
    (F4)前記(F2)の判断の結果が否定的であれば、前記(条件A)は、実ページ長が、複数種類の実ページ長のうち、前記データユニットの長さ以上であって前記データユニットの長さとの差が最小である実ページ長であることであり、前記I/O処理部は、前記データユニットを、前記選択された実ページに格納し、
    前記別のデータユニットは、前記圧縮前のライトデータ要素それ自体である、又は、前記圧縮前のライトデータ要素と特定の情報とで構成されている、
    請求項1記載のストレージシステム。
  7. 前記コントローラは、圧縮されているデータ要素を伸張する伸張部(126)を有し、
    前記ライト処理には、実ページリード処理が含まれており、前記実ページリード処理は、前記実ページライト処理の前に行われ、
    前記実ページリード処理では、
    (G1)前記プール管理部が、前記ライト先仮想ページに既に実ページが割り当てられているか否かを判断し、
    (G2)前記(G1)の判断の結果が肯定的の場合、前記プール管理部が、前記ライト先仮想ページに対するデータ要素の長さが、仮想ページ長と同じか否かを判断し、
    (G3)前記(G2)の判断の結果が否定的の場合、前記I/O処理部が、前記ライト先仮想ページに割り当てられている実ページからデータユニットを読出し、読み出したデータユニットが有する圧縮されているデータ要素を前記伸張部が伸張し、前記プール管理部が、前記伸張されたデータ要素に、前記ライト先仮想ページに対するデータ要素を上書きし、
    前記実ページライト処理での前記ライトデータ要素は、前記(G2)の判断の結果が否定的だった場合、上書きされたデータ要素であり、前記(G2)の判断の結果が肯定的だった場合、前記ライト先仮想ページに対するデータ要素それ自体である、
    請求項6記載のストレージシステム。
  8. 前記プールが、複数のプールサブ領域(2603)で構成されており、
    プールサブ領域毎に、実ページ長が定義されており、
    前記複数のプールサブ領域のうちの未使用のプールサブ領域については実ページ長が定義されておらず、
    前記プール管理部が、前記実ページライト処理において、圧縮されたライトデータ要素を有するデータユニットのデータ長に基づく実ページ長を定義し、その定義された実ページ長の実ページを、実ページ長が定義されたプールサブ領域から選択する、
    請求項1、6又は7記載のストレージシステム。
  9. 前記プールが、複数の実ボリュームで構成されており、
    前記実ボリュームは、一以上の記憶装置に基づく論理ボリュームであり、
    各実ボリュームは、複数のチャンクで構成されており、
    前記プールサブ領域は、チャンクである、
    請求項3又は8記載のストレージシステム。
  10. 前記プール管理部は、いずれかの使用中のプールサブ領域を構成する全ての実ページが未割当てか否かを判断し、その判断の結果が肯定的であれば、その使用中のプールサブ領域の状態を使用中から未使用に変更する、
    請求項8又は9記載のストレージシステム。
  11. 前記(条件A)及び前記(条件B)を満たす実ページは、いずれの仮想ページにも割り当てられていない二以上の実ページであることがあり、それら二以上の実ページの合計実ページ長は、複数種類の合計実ページ長のうち、前記データユニットの長さ以上であって前記データユニットの長さとの差が最小となる合計実ページ長である、
    請求項1、6乃至10のいずれかに記載のストレージシステム。
  12. 前記ライト先仮想ページに対するライト処理に、前記実ページライト処理の代わりに暫定実ページライト処理が含まれており、
    前記コントローラは、前記ライト処理とは別のタイミングで、非同期圧縮処理を行い、
    前記非同期圧縮処理に、前記実ページライト処理が含まれており、
    前記暫定実ページライト処理では、
    (H1)前記プール管理部が、仮想ページ長と同じ実ページ長の未割当ての実ページを選択し、前記ライト先仮想ページの状態が未圧縮であると管理し、前記選択した実ページを前記ライト先仮想ページに割り当て、
    (H2)前記I/O処理部が、前記選択された実ページに、ライトデータ要素を含んだデータユニットを格納し、
    前記暫定実ページライト処理での前記ライトデータ要素は、前記(F2)の判断の結果が否定的だった場合、上書きされたデータ要素であり、前記(F2)の判断の結果が肯定的だった場合、前記ライト先仮想ページに対するデータ要素それ自体であり、
    前記非同期圧縮処理では、
    (I1)前記プール管理部が、処理対象の仮想ページの状態が未圧縮であるか否かを判断し、
    (I2)前記(I2)の判断の結果が肯定的の場合、前記プール管理部が、前記処理対象の仮想ページに割り当てられている実ページを特定し、前記I/O処理部が、前記特定された実ページからデータユニットを読み出し、前記実ページライト処理が行われ、その後に、前記プール管理部が、前記処理対象の仮想ページの状態が圧縮済みであると管理し、
    前記(I2)での前記実ページライト処理では、ライトデータ要素は、前記(I2)において読み出されたデータユニットに含まれているデータ要素である、
    請求項6乃至11のいずれかに記載のストレージシステム。
  13. 前記コントローラは、仮想ページ毎のアクセス頻度を管理するアクセス頻度管理部(2801)を更に有し、
    前記リード元仮想ページのアクセス頻度が所定のアクセス頻度より高ければ、前記(I1)の判断の結果が肯定的であっても、前記(I2)が実行されない、
    請求項6又は12記載のストレージシステム。
  14. 前記プール管理部が、定義されている実ページ長が同じである二以上のプールサブ領域を特定し、
    前記I/O処理部が、前記二以上のプールサブ領域のうちの一つのプールサブ領域内の割当て済みの実ページから、前記二以上のプールサブ領域のうちの他のプールサブ領域内の未割当ての実ページに、データユニットをコピーし、
    前記プール管理部が、コピー元の実ページの仮想ページに対する割当てを解除し、その仮想ページに、コピー先の実ページを割り当て、前記特定されたプールサブ領域の状態を未使用状態に更新する、
    請求項3、8乃至10のいずれかに記載のストレージシステム。
  15. 仮想ボリュームを構成する複数の仮想ページのうちのライト先仮想ページに対するライトデータ要素を圧縮し(S801)、
    下記(条件A)及び(条件B)を満たす実ページをプール(2601)から選択し(S804、S812)、
    (条件A)実ページ長が、圧縮されたライトデータ要素を有するデータユニットのデータ長に基づく実ページ長であること;
    (条件B)実ページが、いずれの仮想ページにも割り当てられていない実ページであること;
    前記選択された実ページを前記ライト先仮想ページに割り当て(S806、S807)、
    前記選択された実ページに前記データユニットを格納し(S808)、
    前記プール(2601)は、複数の記憶装置(111)が基になっており、複数の実ページ(2607)で構成されており、
    前記複数の実ページには、長さの異なる実ページが含まれており、
    各仮想ページは、仮想的な記憶領域であり、
    各実ページは、物理的な記憶領域であり、
    前記データユニットは、前記圧縮されたライトデータ要素それ自体である、又は、前記圧縮されたライトデータ要素と特定の情報とで構成されている、
    記憶制御方法。
JP2011514952A 2009-01-30 2009-01-30 データ要素を圧縮して格納するストレージシステム及び記憶制御方法 Expired - Fee Related JP5221756B2 (ja)

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

Publications (2)

Publication Number Publication Date
JP2012504795A true JP2012504795A (ja) 2012-02-23
JP5221756B2 JP5221756B2 (ja) 2013-06-26

Family

ID=41077597

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011514952A Expired - Fee Related JP5221756B2 (ja) 2009-01-30 2009-01-30 データ要素を圧縮して格納するストレージシステム及び記憶制御方法

Country Status (5)

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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013160935A1 (en) 2012-04-24 2013-10-31 Hitachi, Ltd. Computer system, storage apparatus and data transfer method
WO2013168202A1 (en) 2012-05-11 2013-11-14 Hitachi, Ltd. Storage apparatus and data management method
WO2015162681A1 (ja) * 2014-04-22 2015-10-29 株式会社日立製作所 ストレージシステムおよび記憶デバイスの制御方法
JP2016532965A (ja) * 2013-08-20 2016-10-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ハードウェア管理による圧縮キャッシュ
JPWO2015029230A1 (ja) * 2013-08-30 2017-03-02 株式会社日立製作所 記憶装置及びデータ制御方法
JP2022051792A (ja) * 2021-01-14 2022-04-01 株式会社日立製作所 ストレージシステム

Families Citing this family (14)

* 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 华为数字技术(成都)有限公司 一种分布式存储方法、装置和系统
US20150193342A1 (en) 2012-09-25 2015-07-09 Hitachi, Ltd. Storage apparatus and method of controlling the same
US9092320B2 (en) * 2012-10-15 2015-07-28 Hitachi, Ltd. Storage system 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
WO2015008375A1 (ja) 2013-07-19 2015-01-22 株式会社日立製作所 ストレージ装置および記憶制御方法
CN108108311A (zh) * 2013-12-12 2018-06-01 株式会社日立制作所 存储装置及存储装置的控制方法
US20190087599A1 (en) 2014-04-02 2019-03-21 International Business Machines Corporation Compressing a slice name listing in a dispersed storage network
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

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 車載オーディオ装置およびデータ転送方法
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム
JP2008052730A (ja) * 2006-08-25 2008-03-06 Qnx Software Systems Gmbh & Co Kg 可変の論理ストレージブロックサイズを有するファイルシステム
JP2008084053A (ja) * 2006-09-28 2008-04-10 Hitachi Ltd 仮想化システム及び領域割当て制御方法
JP2008130080A (ja) * 2006-11-22 2008-06-05 Hitachi Ltd 動的チャンク割付けストレージシステムにおけるバックアップおよび復元のための方法および装置
JP2008171312A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2008269338A (ja) * 2007-04-20 2008-11-06 Hitachi Ltd ストレージ装置及び管理単位設定方法

Family Cites Families (9)

* 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
CN101566929B (zh) * 2003-08-14 2013-10-16 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
EP1668486A2 (en) 2003-08-14 2006-06-14 Compellent Technologies Virtual disk drive system and method
JP4806556B2 (ja) * 2005-10-04 2011-11-02 株式会社日立製作所 ストレージシステム及び構成変更方法
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
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 (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 車載オーディオ装置およびデータ転送方法
JP2006259962A (ja) * 2005-03-16 2006-09-28 Hitachi Ltd ストレージシステム
JP2008052730A (ja) * 2006-08-25 2008-03-06 Qnx Software Systems Gmbh & Co Kg 可変の論理ストレージブロックサイズを有するファイルシステム
JP2008084053A (ja) * 2006-09-28 2008-04-10 Hitachi Ltd 仮想化システム及び領域割当て制御方法
JP2008130080A (ja) * 2006-11-22 2008-06-05 Hitachi Ltd 動的チャンク割付けストレージシステムにおけるバックアップおよび復元のための方法および装置
JP2008171312A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2008269338A (ja) * 2007-04-20 2008-11-06 Hitachi Ltd ストレージ装置及び管理単位設定方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013160935A1 (en) 2012-04-24 2013-10-31 Hitachi, Ltd. Computer system, storage apparatus and data transfer method
US8843716B2 (en) 2012-04-24 2014-09-23 Hitachi, Ltd. Computer system, storage apparatus and data transfer method
WO2013168202A1 (en) 2012-05-11 2013-11-14 Hitachi, Ltd. Storage apparatus and data management method
US9026754B2 (en) 2012-05-11 2015-05-05 Hitachi, Ltd. Storage apparatus and data management method
JP2016532965A (ja) * 2013-08-20 2016-10-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ハードウェア管理による圧縮キャッシュ
JPWO2015029230A1 (ja) * 2013-08-30 2017-03-02 株式会社日立製作所 記憶装置及びデータ制御方法
US10102060B2 (en) 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
WO2015162681A1 (ja) * 2014-04-22 2015-10-29 株式会社日立製作所 ストレージシステムおよび記憶デバイスの制御方法
US10222988B2 (en) 2014-04-22 2019-03-05 Hitachi, Ltd. Efficient management storage system via defining of several size units in advance
JP2022051792A (ja) * 2021-01-14 2022-04-01 株式会社日立製作所 ストレージシステム
JP7225445B2 (ja) 2021-01-14 2023-02-20 株式会社日立製作所 ストレージシステム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5221756B2 (ja) データ要素を圧縮して格納するストレージシステム及び記憶制御方法
JP6553566B2 (ja) メモリシステムおよび制御方法
JP5543026B2 (ja) ストレージシステムおよびそのデータ制御方法
JP6385570B2 (ja) ストレージシステムおよび記憶制御方法
WO2015162681A1 (ja) ストレージシステムおよび記憶デバイスの制御方法
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
JP5722500B2 (ja) リモートコピーシステム、及びリモートコピー制御方法
KR102603070B1 (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
JP2020035300A (ja) 情報処理装置および制御方法
EP3748509B1 (en) System garbage collection method and method for collecting garbage in solid state hard disk
JP2019519047A (ja) データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム
JP5780067B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP6094267B2 (ja) ストレージシステム
US10592150B2 (en) Storage apparatus
US20190243758A1 (en) Storage control device and storage control method
US20180307440A1 (en) Storage control apparatus and storage control method
WO2014057515A1 (en) Storage apparatus comprising snapshot function, and storage control method
WO2016185573A1 (ja) 重複排除ストレージにおけるボリュームバックアップ・リストア方法
CN103838525B (zh) 存储系统
WO2018061161A1 (ja) ストレージ装置およびその制御方法
JP2004185644A (ja) 記憶装置システム
JP5864667B2 (ja) ストレージシステムおよびそのデータ制御方法
JP6895551B2 (ja) 情報処理システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120910

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130307

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5221756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees