JPWO2018235149A1 - ストレージ装置及び記憶領域管理方法 - Google Patents

ストレージ装置及び記憶領域管理方法 Download PDF

Info

Publication number
JPWO2018235149A1
JPWO2018235149A1 JP2019524735A JP2019524735A JPWO2018235149A1 JP WO2018235149 A1 JPWO2018235149 A1 JP WO2018235149A1 JP 2019524735 A JP2019524735 A JP 2019524735A JP 2019524735 A JP2019524735 A JP 2019524735A JP WO2018235149 A1 JPWO2018235149 A1 JP WO2018235149A1
Authority
JP
Japan
Prior art keywords
area
real
pool
garbage
size
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
JP2019524735A
Other languages
English (en)
Other versions
JP6696052B2 (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 JPWO2018235149A1 publication Critical patent/JPWO2018235149A1/ja
Application granted granted Critical
Publication of JP6696052B2 publication Critical patent/JP6696052B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/04Addressing variable-length words or parts of words
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

仮想ボリュームのうちのライト先仮想領域に実領域が割当て済の場合、ストレージ装置が、圧縮新データのサイズが、割当て済の実領域のサイズより大きいか否かを判定する。その判定結果が真の場合、ストレージ装置が、圧縮新データのサイズ以上のサイズの1以上の実領域であってガベージとしての実領域であるガベージ領域を含む1以上の実領域があるか否かを判定する。その判定結果が真の場合、ストレージ装置が、ガベージ領域を含む1以上の実領域を選択し、選択した1以上の実領域を、割当て済の実領域に代えてライト先仮想領域に割り当て、割当て済の実領域をガベージ領域として管理する。

Description

本発明は、概して、記憶領域の管理に関する。
仮想ボリューム(論理アドレス空間)におけるライト先仮想領域(論理アドレス範囲)にプール(実領域群)から実領域(論理記憶領域)を割り当て当該実領域にデータを書き込むストレージ装置が知られている。実領域に書き込まれたデータは、当該実領域に割り当てられた物理的な記憶領域に書き込まれる。また、ライト先仮想領域に実領域が割当て済であれば、ストレージ装置は、上書きライト処理を行う、すなわち、新データ(今回のライト対象のデータ)を旧データ(前回のライト対象のデータ)に上書きする。
しかし、ストレージ装置がデータを圧縮して実領域に格納するようになっている場合、圧縮によりデータサイズは変化するため、上書きライト処理では、圧縮旧データ(圧縮された旧データ)のサイズより圧縮新データ(圧縮された新データ)のサイズが大きいことがある。その場合は、圧縮旧データが存在する領域内に圧縮旧データを上書きすることができない。このため、ストレージ装置は、割当て済実領域に代えてより大きい実領域をプールからライト先仮想領域に割り当て、そのより大きい実領域に圧縮新データを書き込む。割当て済実領域(圧縮旧データが格納されている実領域)はガベージとなり、無効実領域として管理される。ストレージ装置は、ガベージの容量を空き容量として管理せず、ガベージには新たにデータを書き込まない。特許文献1は、ガベージが一定量溜まったら、ガベージコレクション処理(以降、GC処理)を実行することで、ガベージを空き容量とする技術を開示する。
米国特許第8527544号明細書
GC処理はオーバヘッドがかかる。圧縮新データのサイズが割当て済実領域のサイズ以下であれば、圧縮新データを割当て済実領域へ上書きすることができ、以って、ガベージの発生を回避できる。しかし、新データの圧縮後のサイズは、新データの属性や圧縮の方式(例えば圧縮アルゴリズム)によって決まるため、必ずしもガベージの発生を回避することはできない。
仮想ボリュームのうちのライト先仮想領域に実領域が割当て済の場合、ストレージ装置が、圧縮新データのサイズが、割当て済の実領域のサイズより大きいか否かを判定する。その判定結果が真の場合、ストレージ装置が、圧縮新データのサイズ以上のサイズの1以上の実領域であってガベージとしての実領域であるガベージ領域を含む1以上の実領域があるか否かを判定する。その判定結果が真の場合、ストレージ装置が、ガベージ領域を含む1以上の実領域を選択し、選択した1以上の実領域を、割当て済の実領域に代えてライト先仮想領域に割り当て、割当て済の実領域をガベージ領域として管理する。
データが圧縮されてから実領域に格納されるようになっていて、且つ、圧縮新データのサイズが割当て済実領域のサイズを超えていても、ガベージ領域が増える可能性を低減することができる。
圧縮新データのサイズが割当て済のサブプールページのサイズを超えている場合に行われる実施例1に係る上書きライト処理の一例の概要を示す模式図である。 実施例1に係る計算機システムの構成例を示す。 ストレージシステムが有するプログラム及び管理情報の例を示す。 仮想ボリュームテーブルの構成例を示す。 プール管理テーブルの構成例を示す。 プールボリュームテーブルの構成例を示す。 ストレージシステムにおける記憶階層の例を示す。 プールとプールボリュームの関係の第1の例を示す。 プールとプールボリュームの関係の第2の例を示す。 ライト処理のフローチャートである。 実施例1に係るサブプールページ選択処理のフローチャートである。 実施例2に係るサブプールページ選択処理のフローチャートである。 実施例3に係るサブプールページ選択処理のフローチャートである。 圧縮新データのサイズが割当て済のサブプールページのサイズ以下の場合の上書きライト処理の一例の概要を示す模式図である。 圧縮新データのサイズが割当て済のサブプールページのサイズを超えている場合の上書きライト処理の一例の概要を示す模式図である。 圧縮新データのサイズが割当て済のサブプールページのサイズを超えている場合に行われる一比較例に係る上書きライト処理の一例の概要を示す模式図である。
以下、図面を参照しながら実施例を説明する。ただし、本実施例は、発明を実現するための一例に過ぎず、発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
なお、以降の説明においては、「aaaテーブル」又は「aaaキュー」の表現にて各種情報を説明することがあるが、各種情報は、テーブル又はキュー以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」又は「aaaキュー」を「aaa情報」と呼ぶことができる。
また、以降の説明においては、「インターフェース部」は、1以上のインターフェースデバイス、具体的には、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも1つを含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インターフェース部は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以降の説明においては、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
また、以降の説明においては、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プロセッサ部は、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))を含んでもよい。
また、以降の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。ストレージシステムに異なる種類のPDEVが混在していてもよい。
また、以降の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。
また、以降の説明では、「RAIDグループ」は、複数のPDEVで構成され関連付けられたRAIDレベル(RAID構成)に従いデータを記憶するグループでもよいし、複数の物理記憶領域で構成され関連付けられたRAIDレベル(RAID構成)に従いデータを記憶するグループでもよい。
また、以降の説明においては、要素の識別情報として番号が使用されるが、番号に代えて又は加えて他種の識別情報が使用可能である。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通部分を使用し、同種の要素を区別して説明する場合は、要素の参照符号(枝番を含む)を使用することがある。
また、以降の実施例の説明において、ストレージ装置の一例が、1以上のPDEVを有するストレージシステムであるが、ストレージ装置の一例として、PDEVを採用することもできる。ストレージ装置がPDEV(例えばフラッシュメモリデバイス)の場合、ストレージ装置は、1以上の物理記憶媒体(例えばフラッシュメモリチップ)と、1以上の物理記憶媒体に対するI/Oを制御するコントローラとを有する。PDEV及び物理記憶媒体の各々は、物理記憶資源の一例である。
後に図2を参照して詳細に説明するように、ストレージシステム30は、1以上のPDEV34と、1以上のPDEV34に対するデータI/O(Input/Output)を制御するコントローラ31とを有する。コントローラ31が、データの圧縮及び伸張を行うようになっている。
図14に示すように、コントローラ31が、1以上のプール600を管理する。プール600は、論理記憶空間である。プール600の少なくとも一部は、複数のPDEV34のうちの少なくとも一部に基づいていてもよいし、プール600の少なくとも一部は、ストレージシステム30の外部のストレージシステム(図示せず)が提供する記憶領域に基づいていてもよい。プール600は、サイズが異なる複数のサブプールページ(論理記憶領域)641で構成される。
コントローラ31は、ホスト計算機10のような上位装置に仮想ボリューム501(論理アドレス空間)を提供する。図14に示すように、仮想ボリューム501における仮想ページ(論理アドレス範囲)52−1、52−2及び52−3に、それぞれ、サブプールページ61−1、61−2及び61−3が割り当てられており、サブプールページ61−1、61−2及び61−3に、それぞれ、圧縮旧データA、B及びCが格納されているとする。
この状況において、図14に示すように、仮想ページ52−1をライト先として新データDのライト要求をコントローラ31が受信したとする。コントローラ31は、新データDを圧縮し、圧縮新データDのサイズが、ライト先仮想ページ52−1に割り当てられているサブプールページ61−1のサイズ(又は当該サブプールページ61−1に格納されている圧縮旧データAのサイズ)以下か否かを判断する。その判断結果が真の場合、図14に示すように、コントローラ31は、圧縮新データDを割当て済サブプールページ61−1に上書きする。
一方、上述の状況において、図15に示すように、仮想ページ52−1をライト先として新データEのライト要求をコントローラ31が受信したとする。コントローラ31は、新データEを圧縮し、圧縮新データEのサイズが、ライト先仮想ページ52−1に割り当てられているサブプールページ61−1のサイズ(又は当該サブプールページ61−1に格納されている圧縮旧データAのサイズ)以下か否かを判断する。その判断結果が偽の場合、図15に示すように、コントローラ31は、ライト先仮想ページ52−1に対し、サブプールページ61−1に代えて、より大サイズのサブプールページ61−4を割り当て、サブプールページ61−4に圧縮新データEを書き込む。結果として、サブプールページ61−1がガベージとなる。
このようにしてプール600にガベージが生じる。本実施例は、プール600におけるガベージ総量を次のようにして抑え、結果として、ガベージコレクション処理(GC処理)の負荷を軽減することができる。
例えば、図15に示した状況、すなわち、サブプールページ61−1がガベージとして存在する状況において、図1に示すように、コントローラ31が、仮想ページ52−3をライト先として新データFのライト要求を受信したとする。コントローラ31は、新データFを圧縮し、圧縮新データFのサイズが、ライト先仮想ページ52−3に割り当てられているサブプールページ61−3のサイズ(又は当該サブプールページ61−3に格納されている圧縮旧データCのサイズ)以下か否かの第1判断を行う。第1判断の結果が偽の場合、コントローラ31は、圧縮新データFのサイズが、いずれかのガベージ(ここではサブプールページ61−1)(又は、そのガベージ内の圧縮データのサイズ)以下か否かの第2判断を行う。第2判断の結果が真の場合、図1に示すように、コントローラ31は、ライト先仮想ページ52−3に対し、サブプールページ61−3に代えて、ガベージとしてのサブプールページ61−1を割り当て、その割り当てたサブプールページ61−1に圧縮新データFを書き込む。結果として、サブプールページ61−3がガベージとなるものの、ガベージの数が増えることを避けることができる。すなわち、本実施例によれば、上書きライト処理の対象の圧縮新データのライト先としてガベージが使用されるため(言い換えれば、オーバヘッドが性能低下の原因となっているGC処理をしなくてもガベージが再利用可能であるため)、ストレージシステム30の性能を向上することが期待できる。
一方、図16に示す一比較例によれば、上述の第2の判断は行われない。すなわち、第1判断の結果が偽の場合、ライト先仮想ページ52−3に対し、サブプールページ61−3に代えて、より大サイズのサブプールページ61−5が割り当られて、サブプールページ61−5に圧縮新データFが書き込まれる。結果として、サブプールページ61−1に加えてサブプールページ61−3がガベージとなる。つまり、ガベージの数が増えてしまう。
以下、本実施例を詳細に説明する。
図2は、本実施例に係る計算機システムの構成例を示す。
計算機システム1は、少なくとも1つのホスト計算機10(例えば、汎用大型コンピュータやサーバや汎用のハードウェアコンポーネントから構成される装置や汎用サーバなど)と、少なくとも1つの管理装置20(例えば、管理計算機やサーバや汎用のハードウェアコンポーネントから構成される装置や汎用サーバなど)と、これらが接続されるストレージシステム30と、を有している。
ホスト計算機10は、ストレージシステム30の論理的な記憶資源(例えば論理アドレス空間)にアクセスする。管理装置20は、ストレージシステム30の記憶領域の構成を管理する。ストレージシステム30は、1以上のPDEV34に基づく記憶領域にデータを格納する。ホスト計算機10及び管理装置20の少なくとも1つは複数台でもよい。
ストレージシステム30は、複数のPDEV34と、コントローラ31とを有する。コントローラ31は、外部に、少なくとも1つのキャッシュメモリ32と、少なくとも1つの共有メモリ33とを有する。キャッシュメモリ32、共有メモリ33及びコントローラ31の少なくとも1つが冗長化されていてもよい。また、コントローラ31内部のハードウェア構成も冗長化されていてもよい。
コントローラ31は、PDEV34に基づく記憶領域へのデータの格納を制御する。キャッシュメモリ32は、PDEV34に読み書きされるデータを一時的に格納する。共有メモリ33は、コントローラ31やPDEV34に関する構成情報を格納する。
PDEV34は、どのような物理記憶デバイスでもよく、例えば、HDDでもよいしSSDでもよい。
コントローラ31は、ホストアダプタ310、ネットワークアダプタ320、不揮発性メモリ(NVMe)330、メモリ350、ストレージアダプタ370、共有メモリアダプタ380、圧縮伸張回路(C/D)390、及びそれらに接続されたプロセッサ360を有している。ホストアダプタ310、ネットワークアダプタ320、ストレージアダプタ370及び共有メモリアダプタ380のうちの少なくとも1つが、インターフェース部の一例である。不揮発性メモリ330、メモリ350、キャッシュメモリ32及び共有メモリ33の少なくとも1つが、記憶部の一例である。プロセッサ360が、プロセッサ部の一例である。
ホストアダプタ310は、ストレージエリアネットワーク(SAN)121を介してホスト計算機10との間でデータを送受信する。ネットワークアダプタ320は、ネットワーク108(例えばLAN(Local Area Network))を介してホスト計算機10、又は、管理装置20との間でシステム管理上必要なデータ(例えば、管理情報)を送受信する。
不揮発性メモリ330は、例えばハードディスクやフラッシュメモリで構成され、コントローラ31で動作するプログラムや構成情報等を格納する。
メモリ350は、例えばRAM(Random Access Memory)等の揮発性メモリでよく、プログラムやデータ等を格納する。
プロセッサ360は、不揮発性メモリ330に格納されているプログラムをメモリ350に読み込んで、そのプログラムに規定された処理を実行する。
ストレージアダプタ370は、PDEV34、及び、キャッシュメモリ32との間でデータを送受信する。共有メモリアダプタ380は、共有メモリ33との間でデータを送受信する。
圧縮伸長回路390は、ハードウェア回路であり、入力されたデータを圧縮又は伸長して出力する。圧縮及び伸長の少なくとも一方がハードウェア回路に代えて、コンピュータプログラムがプロセッサ360で実行されることによって行われてもよい。
ネットワークアダプタ320(又は図示しない他のアダプタ)からネットワーク121(又は別のネットワーク)を介して図示しない外部のストレージシステムが接続されてもよい。当該外部のストレージシステムから提供される記憶領域の少なくとも一部が、上述のプール600の少なくとも一部の記憶領域でもよい。
なお、管理装置20が接続されない構成でもよい。
また、ストレージシステム30は、1以上の物理的な計算機(例えば汎用計算機)を含んだ計算機システムでよい。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージシステム)又はSDDC(Software-defined Datacenter)を採用することができる。また、その場合、ホスト計算機10は、当該計算機システムにおいて実行される仮想的な計算機であってもよい。
図3は、ストレージシステム30が有するプログラム及び管理情報の例を示す。
プログラム及び管理情報は、例えばメモリ350に格納される。プログラムはプロセッサ360によって実行される。プログラムとしては、例えば、I/O処理プログラム352及びプール管理プログラム354がある。管理情報は、例えば、仮想ボリュームテーブル510、プール管理テーブル610及びプールボリュームテーブル660は含む。I/O処理プログラム352及びプール管理プログラム354をプロセッサ360が実行することでコントローラ31の動作の少なくとも一部が制御される。
I/O処理プログラム352は、ページに圧縮データを格納するなどのI/Oに関する処理を行うためのプログラムである。プール管理プログラム354は、ページの選択などプール管理に関する処理を行うためのプログラムである。仮想ボリュームテーブル510は、仮想ボリュームに関する情報を保持するテーブルである。プール管理テーブル610は、プール600に関する情報を保持するテーブルである。プールボリュームテーブル660は、プールボリュームに関する情報を保持するテーブルである。これらのプログラム及びテーブルは、不揮発メモリ330に格納されていてもよく、その場合はそれらがメモリ350にロードされる。
図4は、仮想ボリュームテーブル510の構成例を示す。
仮想ボリュームテーブル510は、仮想ページ毎に、エントリを有する。各エントリは、仮想ボリューム#511、仮想ページ#512、圧縮後サイズ513、プール#514、サブプール#515及びサブプールページ#516といった情報を格納する。以下、1つの仮想ページ(図4の説明において「対象仮想ページ」)を例に取る。
仮想ボリューム#511は、対象仮想ページを含んだ仮想ボリュームを識別する番号である。仮想ページ#512は、対象仮想ページを識別するための番号である。圧縮後サイズ513は、ライト対象のデータが圧縮伸長回路390にて圧縮された後のデータのサイズを示す。圧縮後サイズ513を参照することにより、プール600内の適切なサブプール(後述)を選択できる。プール#514は、対象仮想ページに割り当てられたサブプールページを含むプールを識別するための番号である。サブプール#515は、対象仮想ページに割り当てられたサブプールページを含むサブプールを識別するための番号である。サブプールページ#516は、対象仮想ページに割り当てられたサブプールページを識別するための番号である。なお、仮想ページにサブプールページが割り当てられていなければ、圧縮後サイズ513、プール#514、サブプール#515及びサブプールページ#516の各々の値は、データが無いことを示す値(例えば“N/A”)である。
仮想ボリュームテーブル510は、図示していないが、仮想ボリューム毎に、圧縮に対応するか否かを示す情報を持ってもよい。それにより、仮想ボリューム単位で圧縮機能に対応するか否かを区別して処理することができる。圧縮に対応しない仮想ボリュームに対してはコントローラ31はデータを圧縮すること無しにサブプールページ(実ページ)に書き込んでよい。
図5は、プール管理テーブル610の構成例を示す。
ストレージシステム30は、1以上のプールを有し、少なくとも1つのプールが、サブプールページサイズが異なる複数のサブプールで構成されている。各サブプールは、サブプールページサイズが同じ複数のサブプールページの集合である。プール管理テーブル610は、サブプール毎に、エントリを有する。各エントリは、プール#611、サブプール#612、プールページサイズ613、使用ポインタ(使用ページキューへのポインタ)614、及び、未使用ポインタ(未使用ページキューへのポインタ)615といった情報を格納する。以降、1つのサブプール(図5の説明において「対象サブプール」)を例に取る。
プール#611は、対象サブプールを含むプールを識別するための番号である。サブプール#612は、対象サブプールを識別するための番号である。サブプールページサイズ613は、対象サブプール内のサブプールページのサイズ(長さ)を示す。
各サブプールについて、複数のサブプールページは、本実施例ではキューを使って管理されている。使用ポインタ614は、対象サブプールのうちの使用サブプールページ(いずれかの仮想ページに割り当てられているサブプールページ)を管理するキュー620(以降、使用キュー)の先頭アドレスを示す。未使用ポインタ615は、対象サブプールのうちの未使用サブプールページ(いずれの仮想ページにも割り当てられていないサブプールページ)を管理するキュー630(以降、未使用キュー)の先頭アドレスを示す。使用キュー620及び未使用キュー630は、サブプールページ(実ページ)を管理するものであり、本実施例ではキューを使用した管理が採用されるが、キューを使用する以外の方法で管理が行われてもよい。
使用キュー620は、使用サブプールページ毎に、エントリを有する。各エントリは、サブプールページ#621、プールボリューム#622及び実ページ#623といった情報を格納する。以降、1つの使用サブプールページ(図5の説明において「対象使用サブプールページ」)を例に取る。サブプールページ#621は、対象使用サブプールページを識別するための番号である。プールボリューム#622は、対象使用サブプールページに対応付けられている実ページを有するプールボリュームを識別するための番号である。実ページ#623は、対象使用サブプールページに対応付けられている(マッピングされている)実ページを識別するための番号である。
未使用キュー630は、未使用サブプールページ毎に、エントリを有する。各エントリは、サブプールページ#631、プールボリューム#632、実ページ#633及びガベージフラグ634といった情報を格納する。以降、1つの使用サブプールページ(図5の説明において「対象未使用サブプールページ」)を例に取る。サブプールページ#631は、対象未使用サブプールページを識別するための番号である。プールボリューム#632は、対象未使用サブプールページに対応付けられている実ページを有するプールボリュームを識別するための番号である。実ページ#623は、対象未使用サブプールページに対応付けられている(マッピングされている)実ページを識別するための番号である。ガベージフラグ634は、対象未使用サブプールページがガベージであるか否かを示す。ガベージではない対象未使用サブプールページは、空きサブプールページである。なお、コントローラ31は、GC処理を行うことで、ガベージとしての未使用サブプールページに対応したガベージフラグ634を、“ガベージ”(ガベージを意味する値)から“−”(空きを意味する値)に更新する。
図6は、プールボリュームテーブル660の構成例を示す。
プールボリュームテーブル660は、実プール毎に、エントリを有する。各エントリは、プールボリューム#661、実ページ#662、実ページサイズ663及び物理アドレス664といった情報を格納する。以降、1つの実ページ(図6の説明において「対象実ページ」)を例に取る。
プールボリューム#661は、対象実ページを有するプールボリュームを識別するための番号である。実ページ#662は、対象実ページを識別するための番号である。実ページサイズ663は、対象実ページのサイズを示す。対象実ページのサイズと、対象実ページが対応付けられているサブプールページのサイズは、典型的には同じである。物理アドレス664は、対象実ページが対応付けられている(マッピングされている)物理的な記憶領域のアドレス(例えばPDEV34が提供する論理アドレス空間のアドレス)を示す。
図7は、ストレージシステム30における記憶階層の例を示す。以下、下位のレイヤから順に記憶領域を説明する。
複数のPDEV34がRAIDグループ301を構成する。それら複数のPDEV34に跨るストライプ列307がある。
RAIDグループ301の上位に、RAIDグループ301に基づく仮想的な記憶資源である仮想デバイス303がある。仮想デバイス303(記憶空間)が仕切られることにより、仮想デバイス303に、複数の論理デバイス306が形成される。仮想デバイス303が1つの論理デバイス306であってもよい。論理デバイスを、以降、論理ボリュームとして説明する。
仮想デバイス303の上位にプール600がある。プール600は、複数のサブプール601(例えば、n個のサブプール601−1〜601−n)から構成される。各サブプール601は、複数のサブプールページ61を有する。サブプールページ61の長さ(サイズ)は、サブプール601毎に定義されている。1つのサブプール601内では全てのサブプールページの長さは同じである。
サブプールページ641は、複数のプールボリューム650の実ページ651に対応付けられている。サブプールページ61及び実ページ651の組(又はサブプールページ61)が実領域の一例でよい。プールボリューム650は、いずれかの論理ボリュームに関連付けられている。プールボリューム650は、オフラインボリュームであるため、上位装置であるホスト計算機10から指定されるターゲットデバイスには関連付けられていない。プールボリューム650は、複数の実ページ651から構成されている。図7の例では、実ページ651とストライプ列307とが1対1で対応している。実ページ651に格納されるデータは、その実ページ651に対応するストライプ列307に格納される。1つの実ページ651に複数のストライプ列307が対応していてもよい。
仮想ボリューム501は、ホスト計算機10に提供される論理アドレス空間、すなわち、オンラインボリュームである。仮想ボリューム501は、複数の仮想ページ52で構成される。サブプールページ61が割り当てられてないライト先の仮想ページ52には、プール600内のサブプール601にある未使用サブプールページ61(ガベージ又は空きサブプールページ)が割り当てられる。
仮想ボリューム501の上位にターゲットデバイス316がある。1以上のターゲットデバイス316が、ある通信インターフェースデバイスが有する通信ポート314に関連付けられており、ターゲットデバイス316に、仮想ボリューム501が関連付けられている。
図8は、プール600とプールボリューム650の関係の第1の例を示す。
プールボリューム650は、全て同じサイズの実ページ651から構成されている。サブプール601とプールボリューム651が1対1で対応している。
図9は、プール600とプールボリューム650の関係の第2の例を示す。
プールボリューム650は、複数の異なるサイズの実ページから構成されている。サブプール601とプールボリューム651が多対多で対応している。
図10は、ライト要求を受けた場合に行われるライト処理のフローチャートである。
ライト要求では、仮想ボリューム識別番号(例えば、LUN(Logical Unit Number))と論理アドレス範囲(例えば、LBA(Logical Block Address)及びデータ長)とを含んだライト先情報が指定されている。コントローラ31は、ライト先情報に従うライト先仮想ページを特定する(S410)。コントローラ31は、仮想ボリュームテーブル510を参照し、ライト先仮想ページにサブプールページが割り当てられているか否かを判定する(S420)。
S420の判定結果が偽の場合(S420:NO)、コントローラ31は、S540、すなわち、下記を行う。
(S420−1)コントローラ31は、ライト対象データ(ライト要求に従うデータ)を圧縮伸張回路390により圧縮する。
(S420−2)コントローラ31は、圧縮データ(圧縮伸張回路390による圧縮後のデータ)をキャッシュメモリ32に格納する。
(S420−3)コントローラ31は、プール管理テーブル610を参照し、圧縮データのサイズ以上のサイズの空きサブプールページを特定する。特定される空きサブプールページのサイズは、例えば、圧縮データのサイズ以上のサイズのうちの最小のサイズでよい。
(S420−4)コントローラ31は、圧縮データのサイズと、特定した空きサブプールページのサイズとに差があれば、その差の分のゼロデータ(パディング用データの一例)を圧縮データに追加することにより、ライト用の圧縮データをキャッシュメモリ32上に生成する。
(S420−5)コントローラ31は、特定した空きサブプールページを、ライト先仮想ページに割り当てる(例えば、当該サブプールページの情報を、未使用キュー630から使用キュー620に移す)。結果として、当該サブプールページは、使用サブプールページとなる。
(S420−6)コントローラ31は、ライト要求に対する完了をホスト計算機10に返した後の任意のタイミングで(又は完了を返す前に)、キャッシュメモリ32上のライト用の圧縮データを、割り当てたサブプールページに書き込む。その際、コントローラ31は、プール管理テーブル610及びプールボリュームテーブル660を参照し、当該サブプールページに対応する物理アドレスに圧縮データを書き込む。
S420の判定結果が真の場合(S420:YES)、コントローラ31は、S430〜S460を含む上書きライト処理を行う。
具体的には、S430で、コントローラ31は、下記を行う。
(S430−1)コントローラ31は、プールボリュームテーブル660を参照し、ライト先仮想ページに割り当てられているサブプールページ(以降、図10の説明で「割当て済サブプールページ」)から圧縮旧データをキャッシュメモリ32に読み出し、読み出した圧縮旧データを圧縮伸張回路390により伸張することで旧データをキャッシュメモリ32上に得る。
(S430−2)コントローラ31は、キャッシュメモリ32における旧データに新データ(ライト要求に従うライト対象データ)を上書きする。
(S430−3)コントローラ31は、新データを圧縮伸張回路390により圧縮することによりキャッシュメモリ32上に圧縮新データを得る。
次に、コントローラ31は、S440で、圧縮新データのサイズが割当て済サブプールページのサイズ(又は圧縮旧データのサイズ)を超えているか否かを判定する。
S440の判定結果が偽の場合(S440:NO)、S450で、コントローラ31は、下記を行う。
(S450−1)コントローラ31は、プール管理テーブル610を参照し、圧縮新データのサイズ以上のサイズの空きサブプールページを特定する。特定される空きサブプールページのサイズは、例えば、圧縮新データのサイズ以上のサイズのうちの最小のサイズでよい。
(S450−2)コントローラ31は、圧縮新データのサイズと、特定した空きサブプールページのサイズとに差があれば、その差の分のゼロデータ(パディング用データの一例)を圧縮新データに追加することにより、ライト用の圧縮新データをキャッシュメモリ32上に生成する。
(S450−3)コントローラ31は、特定した空きサブプールページを、割当て済サブプールページに代えてライト先仮想ページに割り当てる。具体的には、例えば、コントローラ31は、当該サブプールページの情報を、未使用キュー630から使用キュー620に移し、割当て済サブプールページの情報を使用キュー620から未使用キュー630に移し、割当て済サブプールページに対応したガベージフラグ634を“ガベージ”とする。結果として、)。結果として、当該サブプールページは、使用サブプールページとなり、割当て済サブプールページはガベージとなる。
(S450−4)コントローラ31は、ライト要求に対する完了をホスト計算機10に返した後の任意のタイミングで(又は完了を返す前に)、キャッシュメモリ32上のライト用の圧縮新データを、割り当てたサブプールページに書き込む。
S440の判定結果が真の場合(S440:YES)、S460で、コントローラ31は、下記を行う。
(S460−1)コントローラ31は、サブプールページ選択処理を行う。
(S460−2)コントローラ31は、圧縮新データのサイズと、サブプールページ選択処理において選択されたサブプールページ(ガベージ又は空きサブプールページ)のサイズとに差があれば、その差の分のゼロデータ(パディング用データの一例)を圧縮新データに追加することにより、ライト用の圧縮新データをキャッシュメモリ32上に生成する。
(S460−3)コントローラ31は、選択されたサブプールページが空きサブプールページの場合、(S450−3)及び(S450−4)と同様の処理を行う。
(S460−4)コントローラ31は、選択されたサブプールページがガベージの場合、次の処理を行う。すなわち、コントローラ31は、選択されたサブプールページがガベージを、割当て済サブプールページに代えてライト先仮想ページに割り当てる。具体的には、例えば、コントローラ31は、当該サブプールページ(ガベージ)の情報を、未使用キュー630から使用キュー620に移し、割当て済サブプールページの情報を使用キュー620から未使用キュー630に移し、割当て済サブプールページに対応したガベージフラグ634を“ガベージ”とする。結果として、当該ガベージは、使用サブプールページとなり、割当て済サブプールページはガベージとなる。その後、コントローラ31は、(S450−4)と同様の処理を行う。
図11は、本実施例に係るサブプールページ選択処理のフローチャートである。
コントローラ31は、プール管理テーブル610を参照し、プール600からサブプールを選択する(S461)。ここでは、例えば、圧縮新データのサイズ以上のサイズのサブプールページを含んだサブプールであってS461で未選択のサブプールのうち、最小のサイズのサブプールページを含んだサブプールが選択される。
コントローラ31は、プール管理テーブル610を参照し、S461で選択したサブプールにガベージがあるか否かを判定する(S462)。
S462の判定結果が真の場合(S462:YES)、コントローラ31は、S461で選択したサブプールからいずれかのガベージを選択する(S463)。
S462の判定結果が偽の場合(S462:NO)、コントローラ31は、圧縮新データのサイズ以上のサイズのサブプールページを有するサブプールであってS461で未選択のサブプールがあるか否かを判定する(S464)。S464の判定結果が真の場合(S464:YES)、S461が行われる。S464の判定結果が偽の場合(S464:NO)、コントローラ31は、最初のS461で選択したサブプール(例えば、圧縮新データのサイズ以上のサイズのうちの最小のサイズのサブプールページを有するサブプール)から空きサブプールページを選択する(S465)。
本実施例によれば、コントローラ31がデータを圧縮してからサブプールページに書き込むようになっていて、且つ、圧縮新データのサイズが割当て済サブプールページのサイズを超えていても、ガベージが再利用され得るため(ガベージがライト先仮想ページに割り当てられるサブプールページとして選択され得るため)、ガベージが増える可能性を低減することができる。また、圧縮新データのサイズになるべく近いサイズのガベージが再利用されるため、容量効率が低下することを低減できる。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する(これは、実施例3以降についても同様である)。
図12は、実施例2に係るサブプールページ選択処理のフローチャートである。
実施例2に係るライト先サブプールページ選択処理は、S464が行われない点で、実施例1と相違する。すなわち、S462の判定結果が偽の場合(S462:NO)、コントローラ31は、S461で選択したサブプールから空きサブプールページを選択する(S465)。
実施例2によれば、実施例1に比べてガベージが再利用される可能性は低くなるものの、ガベージが増える可能性を低減することができる。言い換えれば、圧縮新データのサイズ以上のサイズのうち最も小さいサイズのガベージが無ければ空きサブプールページが選択されるため、実施例1に比べて、容量効率の低下を避けることが優先される
図13は、実施例3に係るサブプールページ選択処理のフローチャートである。
コントローラ31は、プール管理テーブル610を参照し、プール総使用量が閾値を超えているか否かを判定する(S610)。「プール総使用量」とは、プール総使用容量又はプール総使用割合である。「プール総使用容量」は、使用サブプールページの総容量である。「プール総使用割合」は、プール容量に対するプール総使用容量の割合である。
S610の判定結果が真の場合(S610:YES)、コントローラ31は、図11又は図12に示したサブプールページ選択処理を行う(S620)。
S610の判定結果が偽の場合(S610:NO)、コントローラ31は、プール管理テーブル610を参照し、プール600からサブプール(例えば、圧縮新データのサイズ以上のサイズのうち最小のサイズのサブプールページを含んだサブプール)を選択し、選択したサブプールから空きサブプールページを選択する(S630)。
空きサブプールページが充分にある場合、ガベージを選択しなくても問題が無いと考えられる。言い換えれば、ガベージが増えたことにより、実際は空き容量はあるのにも関わらずGC処理を実施しないと、割当て可能なサブプールページが枯渇するといった状況が、回避されればよいと考えられる。プール内にガベージが少ない場合、圧縮新データのサイズに近いサイズのガベージが見つからない場合がある。このような場合でもガベージを再利用しようとすることには、例えば下記の課題があると考えられる。
(x)ガベージを探す処理が、処理コストの増加につながる。
(y)図11を行うと、(x)に加えて、無駄に大きいサイズのガベージが再利用される可能性があるため、サブプールページ内に無駄な領域が増えてしまうおそれがある。
実施例3によれば、ある程度候補となるガベージが溜まった時点でガベージの再利用が行われるため、オーバヘッドの削減をしつつ、容量効率を上げることができる。なお、「プール総使用量」は、「ガベージ総量」と読み替えることもできる。「ガベージ総量」は、ガベージ総容量又はガベージ割合である。「ガベージ総容量」は、ガベージの総容量である。「ガベージ割合」は、プール容量に対するガベージ総容量の割合である。
実施例4では、未使用キュー630に代えて、ガベージキューが用意される。ガベージキューは、ガベージの情報のキューである。ガベージキューは、サブプールページサイズ毎に用意されてもよいが、全てのサブプールページサイズに1つであってもよいし、サブプールページサイズ範囲毎に用意されてもよい。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、2以上の実施例が組み合わされてもよい。
また、例えば、1つの仮想ページに複数のサブプールページが割り当てられ、圧縮新データが、その複数のサブプールページに書き込まれてもよい。例えば、コントローラ31は、総サイズが圧縮新データのサイズ以上になるよう複数のサブプールページを選択し、選択した複数のサブプールページをライト先仮想ページに割り当ててよい。その複数のサブプールページは、複数のガベージでもよいし、複数の空きサブプールページでもよいし、1以上のガベージと1以上のサブプールページとの組み合わせでもよい。
30…ストレージシステム

Claims (10)

  1. 1以上の物理記憶資源と、
    前記1以上の物理記憶資源に対するI/O(Input/Output)を制御するコントローラと
    を有し、
    前記コントローラが、前記1以上の物理記憶資源のうちの少なくとも一部に基づく論理記憶空間であるプールを管理し、
    前記プールは、実領域サイズの異なる複数の実領域群を含み、
    前記複数の実領域群の各々は、実領域サイズが同じ1以上の実領域であり、
    前記コントローラが、論理アドレス空間である仮想ボリュームを提供し、
    前記コントローラが、前記仮想ボリュームのアドレス範囲である仮想領域に対するデータを、圧縮してから、その仮想領域に割り当てられる実領域に書き込むようになっており、
    前記仮想ボリュームのうちのライト先仮想領域に実領域が割当て済の場合、前記コントローラが、
    (A)圧縮されたライト対象データである圧縮新データのサイズが、割当て済の実領域のサイズより大きいか否かを判定し、
    (B)(A)の判定結果が真の場合、
    (b1)前記圧縮新データのサイズ以上のサイズの1以上の実領域であってガベージとしての実領域であるガベージ領域を含む1以上の実領域があるか否かを判定し、
    (b2)(b1)の判定結果が真の場合、ガベージ領域を含む1以上の実領域を選択し、選択した1以上の実領域を、前記割当て済の実領域に代えて前記ライト先仮想領域に割り当て、前記割当て済の実領域をガベージ領域として管理する、
    ストレージ装置。
  2. (b2)において、選択されるガベージ領域は、前記圧縮新データのサイズ以上のサイズのガベージ領域のうち、最もサイズの小さいガベージ領域である、
    請求項1記載のストレージ装置。
  3. 前記圧縮新データのサイズ以上のサイズのうちの最小のサイズのガベージ領域が見つかった場合、(b1)の判定結果が真であり、
    前記圧縮新データのサイズ以上のサイズのうちの最小のサイズのガベージ領域が見つからなかった場合、(b1)の判定結果が偽である、
    請求項1記載のストレージ装置。
  4. 前記コントローラが、
    (X)プール総使用量が閾値を超えているか否かを判定し、
    前記プール総使用量は、プール総使用容量又はプール総使用割合であり、
    前記プール総使用容量は、使用実領域の総容量であり、
    各使用実領域は、いずれかの仮想領域に割り当てられている実領域であり、
    前記プール総使用割合は、プール容量に対するプール総使用容量の割合であり、
    (Y)(X)の判定結果が真の場合、(A)の判定を行い、
    (Z)(X)の判定結果が偽の場合、ライト先仮想領域に割り当てられる1以上の実領域として、前記圧縮新データのサイズ以上のサイズの1以上の空き実領域を選択する、
    請求項1記載のストレージ装置。
  5. 前記選択された1以上の実領域のうち、ガベージ領域以外の実領域は、空き実領域である、
    請求項1記載のストレージ装置。
  6. 仮想ボリュームのうちのライト先仮想領域に実領域が割当て済の場合、以下の(A)及び(B)を行う、
    (A)圧縮されたライト対象データである圧縮新データのサイズが、割当て済の実領域のサイズより大きいか否かを判定する、
    (B)(A)の判定結果が真の場合、
    (b1)前記圧縮新データのサイズ以上のサイズの1以上の実領域であってガベージとしての実領域であるガベージ領域を含む1以上の実領域があるか否かを判定する、
    (b2)(b1)の判定結果が真の場合、ガベージ領域を含む1以上の実領域を選択し、選択した1以上の実領域を、前記割当て済の実領域に代えて前記ライト先仮想領域に割り当て、前記割当て済の実領域をガベージ領域として管理する、
    記憶領域管理方法。
  7. (b2)において、選択されるガベージ領域は、前記圧縮新データのサイズ以上のサイズのガベージ領域のうち、最もサイズの小さいガベージ領域である、
    請求項6記載の記憶領域管理方法。
  8. 前記圧縮新データのサイズ以上のサイズのうちの最小のサイズのガベージ領域が見つかった場合、(b1)の判定結果が真であり、
    前記圧縮新データのサイズ以上のサイズのうちの最小のサイズのガベージ領域が見つからなかった場合、(b1)の判定結果が偽である、
    請求項6記載の記憶領域管理方法。
  9. (X)プール総使用量が閾値を超えているか否かを判定し、
    前記プール総使用量は、プール総使用容量又はプール総使用割合であり、
    前記プール総使用容量は、使用実領域の総容量であり、
    各使用実領域は、いずれかの仮想領域に割り当てられている実領域であり、
    前記プール総使用割合は、プール容量に対するプール総使用容量の割合であり、
    (Y)(X)の判定結果が真の場合、(A)の判定を行い、
    (Z)(X)の判定結果が偽の場合、ライト先仮想領域に割り当てられる1以上の実領域として、前記圧縮新データのサイズ以上のサイズの1以上の空き実領域を選択する、
    請求項1記載のストレージ装置。
  10. 前記選択された1以上の実領域のうち、ガベージ領域以外の実領域は、空き実領域である、
    請求項6記載の記憶領域管理方法。
JP2019524735A 2017-06-20 2017-06-20 ストレージ装置及び記憶領域管理方法 Active JP6696052B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/022613 WO2018235149A1 (ja) 2017-06-20 2017-06-20 ストレージ装置及び記憶領域管理方法

Publications (2)

Publication Number Publication Date
JPWO2018235149A1 true JPWO2018235149A1 (ja) 2019-11-07
JP6696052B2 JP6696052B2 (ja) 2020-05-20

Family

ID=64736915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019524735A Active JP6696052B2 (ja) 2017-06-20 2017-06-20 ストレージ装置及び記憶領域管理方法

Country Status (4)

Country Link
US (1) US10846023B2 (ja)
JP (1) JP6696052B2 (ja)
CN (1) CN110199265B (ja)
WO (1) WO2018235149A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907206B2 (en) * 2021-07-19 2024-02-20 Charles Schwab & Co., Inc. Memory pooling in high-performance network messaging architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450577A (en) * 1993-12-14 1995-09-12 At&T Corp. Zero-defect data integrity in high-capacity transaction systems
US5537658A (en) * 1995-06-07 1996-07-16 International Business Machines Corporation Distributed directory method and structure for direct access storage device (DASD) data compression
US5764880A (en) * 1996-09-10 1998-06-09 International Business Machines Corporation Method and system for rebuilding log-structured arrays
JP2002207634A (ja) * 2001-01-10 2002-07-26 Fuji Xerox Co Ltd 記憶領域管理方法及び記憶装置
CN107247565B (zh) * 2009-03-18 2020-06-09 株式会社日立制作所 存储控制装置以及虚拟卷的控制方法
JP5080611B2 (ja) * 2010-05-14 2012-11-21 株式会社日立製作所 ThinProvisioningが適用されたストレージ装置
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2015128955A1 (ja) * 2014-02-26 2015-09-03 株式会社日立製作所 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法

Also Published As

Publication number Publication date
CN110199265A (zh) 2019-09-03
CN110199265B (zh) 2022-11-01
US10846023B2 (en) 2020-11-24
JP6696052B2 (ja) 2020-05-20
WO2018235149A1 (ja) 2018-12-27
US20190243582A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
JP7091203B2 (ja) メモリシステムおよび制御方法
TWI674502B (zh) 記憶體系統及控制方法
US10884630B2 (en) Storage system
JP5792313B2 (ja) ストレージシステム
JP4684864B2 (ja) 記憶装置システム及び記憶制御方法
US9811465B2 (en) Computer system and cache control method
JP6785204B2 (ja) メモリシステムおよび制御方法
US9792073B2 (en) Method of LUN management in a solid state disk array
US20150095554A1 (en) Storage processor managing solid state disk array
JP5080611B2 (ja) ThinProvisioningが適用されたストレージ装置
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
JP2019079464A (ja) メモリシステムおよび制御方法
JP6678230B2 (ja) ストレージ装置
KR102434170B1 (ko) 하이브리드 메모리 시스템
CN108228482B (zh) 用于管理存储系统中的缓存设备的方法和系统
KR102443600B1 (ko) 하이브리드 메모리 시스템
US8954658B1 (en) Method of LUN management in a solid state disk array
KR102202107B1 (ko) 사용자 개별 서비스 환경을 위한 스토리지 장치 제어 방법 및 스토리지 컨트롤러
JP2021034091A (ja) メモリシステムおよび制御方法
US20080109630A1 (en) Storage system, storage unit, and storage management system
JP2022034455A (ja) 計算機システムおよび管理方法
JP6696052B2 (ja) ストレージ装置及び記憶領域管理方法
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
JP7102482B2 (ja) メモリシステムおよび制御方法
JP7337228B2 (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

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: 20200408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200422

R150 Certificate of patent or registration of utility model

Ref document number: 6696052

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150