JP6513888B2 - データ量削減機能を有する計算機システム、及び、記憶制御方法 - Google Patents

データ量削減機能を有する計算機システム、及び、記憶制御方法 Download PDF

Info

Publication number
JP6513888B2
JP6513888B2 JP2018538974A JP2018538974A JP6513888B2 JP 6513888 B2 JP6513888 B2 JP 6513888B2 JP 2018538974 A JP2018538974 A JP 2018538974A JP 2018538974 A JP2018538974 A JP 2018538974A JP 6513888 B2 JP6513888 B2 JP 6513888B2
Authority
JP
Japan
Prior art keywords
address
data
logical
logical address
storage
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
JP2018538974A
Other languages
English (en)
Other versions
JPWO2018051392A1 (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 JPWO2018051392A1 publication Critical patent/JPWO2018051392A1/ja
Application granted granted Critical
Publication of JP6513888B2 publication Critical patent/JP6513888B2/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction 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
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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/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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、概して、データ量削減機能を有する計算機システムでの記憶制御に関する。
計算機システムの一例として、ストレージシステムがある。データ量削減機能を有するストレージシステムとして、例えば、特許文献1に開示のストレージシステム、すなわち、ガベージコレクション機能を有するストレージシステムが知られている。特許文献1には、次のことが開示されている。
ストレージシステムは、記憶デバイスと、ガベージコレクション機能を有するストレージコントローラとを有する。ストレージコントローラが、仮想アドレスと、記憶デバイスの物理アドレスとのマッピングを管理する。ストレージコントローラは、仮想アドレスに対するライトが発生した場合、その仮想アドレスに対し、既に割り当てられている物理アドレスに代えて新たなライト先の空き物理アドレスをマッピングするというマッピング更新(アドレス変換テーブルの更新)を行う。その結果、無効データ(仮想アドレスに対するマッピングが解除された物理アドレスに従うデータ)が増える。ストレージコントローラは、有効データ(いずれかの仮想アドレスにマッピングされている物理アドレスに従うデータ)をコピーし無効データを削除するガベージコレクションを実行する。これにより、データ量が削減され、空き物理アドレス(空き領域)が増える。
US 8,527,544
特許文献1に従うストレージシステムによれば、データ量削減を実現するためにストレージコントローラの処理負荷が高くなる。具体的には、仮想アドレスに対してライトが発生する都度にストレージコントローラがマッピング更新(アドレス変換テーブルの更新)を行う必要がある。また、ガベージコレクションのためにストレージコントローラが大量の有効データをコピーしなければならいことが生じ得る。
ストレージコントローラの処理負荷が高くなると、データのI/O(Input/Output)性能が低下し得る。
同様の問題は、計算機システムの一例として、データ量削減機能を有するサーバシステム(例えば、HDD(Hard Disk Drive)のような補助記憶デバイスを有するサーバ)が採用された場合にもあり得る。
第1論理アドレスをライト先とした更新後データと第2論理アドレスをライト先とした既存データとが重複する場合、計算機システムは、第1物理アドレスに関連付けられたメモリセグメントに前記更新後データに代えて所定データをライトし、第2物理アドレスに第1論理アドレスを動的マッピングする。計算機システムは、第1物理アドレスに対応した記憶デバイスに対し、所定データのライトコマンド、又は、第1物理アドレスに従う仮想アドレスを指定したアンマップコマンドを送信する。第1及び第2論理アドレスは、論理アドレス空間の少なくとも一部である論理アドレス範囲に属する論理アドレスである。第1物理アドレスは、物理アドレス空間の少なくとも一部である物理アドレス範囲に属する物理アドレスであって、第1論理アドレスに静的マッピングされている物理アドレスである。
プロセッサ部の処理負荷を抑えつつデータ量削減を実現することができる。
実施例1の概要を示す。 ストレージシステムの構成を示す。 FMD(フラッシュメモリデバイス)の構成を示す。 ストレージコントローラ内のメモリの構成と、そのメモリ内のプログラム及び情報とを示す。 ストレージシステム内の記憶階層を示す。 重複管理ボリュームの構成を示す。 一比較例に係る重複管理ボリュームの構成を示す。 VOL管理テーブルの構成を示す。 ページ割当て管理テーブルの構成を示す。 プール管理テーブルの構成を示す。 RG管理テーブルの構成を示す。 動的マッピングテーブルの構成を示す。 静的マッピングテーブルの構成を示す。 空き管理テーブルの構成を示す。 ページ単位管理テーブルの構成を示す。 ページ単位管理テーブルの構成を示す。 プール一覧画面を示す。 フロントエンドライト処理の流れを示す。 実施例1に係る重複管理処理の流れを示す。 実施例1に係るフルダーティ化処理の流れを示す。 実施例1に係る重複排除処理の流れを示す。 実施例1に係るキャッシュ転送処理の流れを示す。 バックエンドライト処理の流れを示す。 実施例2に係る重複管理処理の流れを示す。 実施例2に係るキャッシュ転送処理の流れを示す。 実施例2に係るフルダーティ化処理の流れを示す。 実施例2に係る重複排除処理の流れを示す。 実施例3に係る重複排除処理の流れの一部を示す。 実施例4に係る重複排除処理の流れの一部を示す。 コレクションリード処理の流れを示す。 更新後データが論理ボリュームにおける既存データと重複するケースの一例の模式図である。 非重複の更新後データのライト先が重複先論理アドレスであるケースの一例の模式図である。 非重複の更新後データのライト先が重複元論理アドレスであるケースの一例の模式図である。 更新後データが論理ボリュームにおける既存データのいずれとも重複しないケースの一例の模式図である。 重複離脱処理の一例の模式図である。 実施例3に係る重複排除の一例の模式図である。 上書きキャッシュライト処理の流れを示す。
以下、図面を参照して、幾つかの実施例を説明する。
以下の説明では、「インターフェース部」は、1以上のインターフェースである。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。また、以下の説明では、インターフェースデバイスを「I/F」と略記することがある。
また、以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、不揮発メモリを有する不揮発メモリデバイスでよい。そのような不揮発メモリデバイスとして、フラッシュメモリ(FM)を有するFMデバイス(以下、FMD)を例に取るが、FMDに代えて、他種の不揮発メモリ(例えば、磁気抵抗メモリであるMRAM(Magnetoresistive Random Access Memory)、抵抗変化型メモリであるReRAM(Resistance Random Access Memory)、或いは、強誘電体メモリであるFeRAM(Ferroelectric Random Access Memory)等の半導体メモリ)を有した不揮発メモリデバイスを採用することもできる。
また、以下の説明では、「メモリ部」は、1以上のメモリである。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「計算機システム」は、サーバシステムとストレージシステムのうちの少なくとも1つでよい。「サーバシステム」は、1以上の物理的なサーバ(例えばサーバのクラスタ)であってもよいし、少なくとも1つの仮想的なサーバ(例えばVM(Virtual Machine))を含んでもよい。また、「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばSDS(Software Defined Storage))を含んでもよい。
また、以下の説明では、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)も採用可能である。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、PDEVの一例として、FMDが採用される。FMDの上位システムは、FMDが外部ストレージとして接続されたサーバシステムであってもよいし、FMDを有するサーバシステム内のプロセッサ部であってもよいし、FMDを有するストレージシステム内のストレージコントローラであってもよい。
FMDは、FM(フラッシュメモリ)と、FMへのデータの入出力を制御するFMコントローラとを有する。FMは、1以上のFMチップで構成されている。FMチップは、複数の物理領域で構成されている。具体的には、例えば、FMチップは、NANDフラッシュであり、複数の物理ブロックで構成されている。各物理ブロックは、複数の物理ページで構成されている。物理ブロック又は物理ページが物理領域の一例である。物理ページ単位でデータがアクセス(リード及びライト)され、物理ブロック単位でデータが消去される。FMコントローラは、仮想アドレス空間を上位システムに提供し、仮想アドレスとFMDアドレスとの対応関係を管理する(例えば仮想アドレスとFMDアドレスの対応関係を表すアドレス変換情報を保持している)。仮想アドレスは、FMDにより管理される論理アドレスであり、FMDアドレスは、FMDにより管理される物理アドレス(FMにおける物理領域を指すアドレス)である。FMコントローラは、上位システムからのI/Oコマンドで指定されている仮想アドレスに対応したFMDアドレスが属する物理領域を特定し、特定した物理領域に対してI/Oを行う。仮想アドレスは、例えば、LBA(Logical Block Address)であり、FMDアドレスは、例えば、PBA(Physical Block Address)である。
また、以下の説明では、FMは、追記型である。具体的には、或る物理ページのFMDアドレスが割り当てられている仮想アドレスがライト先の場合、ライト先仮想アドレスに、割当て済のFMDアドレスに代えて新たにFMDアドレスが割り当てられ、新たに割り当てられたFMDアドレスが指す物理ページ(空きページ)にデータが書き込まれる。各仮想アドレスについて、最近割り当てられたFMDアドレスが指す物理ページに書き込まれているデータ(つまり最新のデータ)は「有効データ」であり、有効データが書き込まれている物理ページは「有効ページ」であり、過去に割り当てられていたFMDアドレスが指す物理ページに格納されているデータは「無効データ」であり、無効データが書き込まれているページは「無効ページ」である。また、有効ページでも無効ページでも無く新たにデータを格納可能な物理ページが、「空きページ」である。
図1は、実施例1の概要を示す。
計算機システムの一例として、ストレージシステムが採用されている。ストレージシステムは、1以上のFMDと、1以上のFMDに接続されたストレージコントローラ101とを有する。ストレージコントローラ101は、プロセッサ部を含むコントローラの一例である。
FMDは、圧縮機能及びアンマップ機能のうちの少なくとも1つと、容量仮想化機能とを有するPDEVの一例である。「アンマップ機能」とは、指定された仮想アドレス(以下の説明では物理アドレス)に対する実アドレス(以下の説明ではFMDアドレス)のマッピングを解除する機能である(解除された物理アドレスに従う領域は空きとして管理可能である)。「容量仮想化」は、物理容量に依存しない仮想容量(典型的には、物理容量よりも大きな仮想容量)を持つ仮想アドレス空間を提供することである。「物理容量」とは、FMDの物理的な記憶容量(実際の記憶容量)である。「仮想容量」とは、FMDの仮想的な記憶容量(FMDの上位システムに見せるFMDの記憶容量)である。
ストレージコントローラ101は、データ量削減機能として、重複排除機能を有する。「重複排除」とは、重複する2以上のデータのうちの一部のデータのみをFMDに格納し残りのデータをFMDに格納しないことである。
このように、本実施例によれば、ストレージコントローラ101により重複排除が行われ、FMDにより圧縮が行われる。
また、ストレージコントローラ101は、論理アドレス空間と物理アドレス空間とを管理する。論理アドレス空間は、ストレージコントローラ101の上位システム(例えばサーバシステム)に提供されるアドレス空間である。論理アドレス空間は、典型的には論理ボリューム(論理ボリュームの論理アドレス空間)として提供される。物理アドレス空間は、ストレージコントローラ101の上位システムには提供されないアドレス空間であり、ストレージシステムにおける内部アドレス空間である。物理アドレスは、FMDが提供する仮想アドレス相当でよい。
論理アドレス範囲と物理アドレス範囲との対応関係は、静的に決まっていてもよいし動的に決まって(変更されて)もよい。前者の場合、サーバシステムに提供される論理ボリュームの全域にストレージシステム内で管理されている内部ボリュームが割り当てられており、物理アドレス範囲は、内部ボリュームにおける領域を指すアドレス範囲でよい。後者の場合、物理アドレス範囲は、Thin Provisioning技術のような動的割当て技術に従いプールから割り当てられる実領域(以下、実ページ)を指すアドレス範囲である。「プール」は、複数の実ページ(実体的な記憶領域)で構成された記憶領域でよい。ストレージコントローラ101が、サーバシステムから受信したライト要求が指定する論理アドレスに対してプールから物理アドレス(実ページ)を割り当てる。ストレージシステムは、割り当てられた実ページに、そのライト要求に付随するライト対象データを書き込む。本実施例では、動的割当て技術が採用されている。以下の説明では、説明の混同を避けるために、論理アドレス範囲と物理アドレス範囲(実ページ)間の関連付け(例えば、論理アドレス範囲に対する物理アドレス範囲の関連付け)を、「割当て」と呼ぶ。一方、論理アドレス範囲に属する論理アドレスと、その論理アドレス範囲に割り当てられている物理アドレス範囲に属する物理アドレス間の関連付け(例えば、物理アドレスに対する論理アドレスの関連付け)を、「マッピング」と呼ぶ。
本実施例では、2種類のマッピング、具体的には、静的マッピングと動的マッピングがある。
「静的マッピング」は、次の通りである。すなわち、論理アドレス範囲に物理アドレス範囲が割り当てられると、そのアドレス範囲間において、論理アドレスと物理アドレスとの関係が一義的に決まる。例えば、論理アドレス範囲の先頭及び後端と物理アドレス範囲の先頭及び後端がそれぞれ対応し、論理アドレス範囲の先頭からのアドレス値と物理アドレス範囲の先頭からのアドレス値とが一致する。つまり、論理アドレス範囲に物理アドレス範囲が割り当てられると、そのアドレス範囲間において、論理アドレスと物理アドレスは予め1:1で対応する。このような対応(関連付け)が、「静的マッピング」である。論理アドレスの静的マッピング先の物理アドレスは、テーブルを参照することにより特定されてもよいし、テーブル参照無しに計算により算出されてもよい。例えば、静的マッピングに従う論理アドレス及び物理アドレスのアドレス値は同じでよい。
一方、「動的マッピング」は、現在のマッピングである。すなわち、動的マッピングは、静的マッピングのような固定的なマッピングと異なり、後述の重複排除処理や重複離脱処理等によって変わる。典型的には、論理アドレス範囲において第1及び第2論理アドレスにそれぞれ重複した第1及び第2データが対応している場合、第1論理アドレスは、第1物理アドレスに対応するが(静的マッピング)、第2論理アドレスは、第2データが重複排除されることにより、第2物理アドレスではなく(静的マッピングではなく)、重複排除された第2データに重複する第1データが対応する第1物理アドレスに動的に関連付けられる。この動的な関連付けが、「動的マッピング」である。本実施例では、1つの論理アドレス範囲について、動的マッピングは、その論理アドレス範囲に割り当てられた物理アドレス範囲(例えば後述の実ページ)にのみ適用されるが、それに限らず、例えば、その論理アドレス範囲に割り当てられた物理アドレス範囲とは異なる物理アドレス範囲にも適用されてもよい。
以上のように、本実施例では、FMDが圧縮機能及び容量仮想化機能を有し、ストレージコントローラ101が重複排除機能を有する。論理アドレスと物理アドレス間のマッピングとして、静的マッピング及び動的マッピングがある。ストレージコントローラ101は、実ページのような比較的大きな単位で物理アドレス範囲を論理アドレス範囲に割り当て、その論理アドレス範囲とその物理アドレス範囲間で、静的マッピングを使用し続ける。
以下、幾つかのケース(例)A〜Dを、図1を参照して説明する。なお、ケースA〜Dにおいて、論理アドレス範囲は、第1〜第4論理アドレスを含む。故に、その論理アドレス範囲に割り当てられた物理アドレス範囲は、第1〜第4論理アドレスにそれぞれ静的マッピングされた第1〜第4物理アドレスを含む。1つの論理アドレスに1つのデータが対応するとする。また、FMDにライトされたデータは、FMDの圧縮機能により、圧縮されてFMにライトされることになるが、説明の冗長を避けるため、圧縮されることの記述は省略されることがある。
<ケースA>
ケースAは、重複排除されていないデータAがデータEに更新されるケースである。
ストレージコントローラ101は、データEを第1物理アドレスに対してライトする。第1物理アドレスは、データAに対応した第1論理アドレスに静的マッピングされている物理アドレスである。すなわち、ストレージコントローラ101は、論理アドレスと物理アドレスとの対応関係を変更すること無しに、データAにデータEを同一物理アドレス(第1物理アドレス)に対して上書きする。このため、データEは、データAが格納されているFMDに追記される。結果として、FMDにおいて、データAが有効データから無効データとなり、データEがデータAに代わって有効データとなる。
<ケースB>
ケースBは、いずれのデータとも重複していないデータCが、既存データBと重複するデータB(つまり既存のデータBと同一のデータB)に更新されるケースである。このケースでは、互いに重複する2つのデータB及びBが論理アドレス範囲について生じる。
ストレージコントローラ101は、以下の処理(b1)及び(b2)を行う。
(b1)ストレージコントローラ101は、第3物理アドレスに対応した更新前データCにゼロデータをライトする。具体的には、ストレージコントローラ101は、ゼロデータのライトコマンドを、第3物理アドレスに対応したFMDに送信する。結果として、そのFMDに、ゼロデータが圧縮されて追記され、故に、更新前データCがFMDにおいて無効データとなる。第3物理アドレスは、更新後データBのライト先である第3論理アドレスに静的マッピングされている物理アドレスである。ゼロデータは、全てのビットが0であるデータである。圧縮ゼロデータ(圧縮されたゼロデータ)が有効データとしてFMDに存在するが、ゼロデータは圧縮効果が高いため、圧縮ゼロデータのサイズは通常の圧縮データ(例えば、ユーザデータA、B、…)の圧縮データに比べて小さい。ゼロデータは、所定データの一例である。所定データは、全てのビットが1であるデータでもよい。
(b2)ストレージコントローラ101は、第3論理アドレスを第2物理アドレスに動的マッピングする。第3論理アドレスは、更新後データBのライト先である論理アドレスである。第2物理アドレスは、既存データBに対応した第2論理アドレスに静的マッピングされている物理アドレスである。
以上の処理(b1)及び(b2)により、更新後データBが重複排除される。具体的には、更新後データBがFMDに追記されることが回避される。
なお、ケースBのように重複が生じるケースでは、互いに重複する既存データ及び更新後データのうち更新後データについて重複排除が行われることが好ましい。なぜなら、例えば既存データBが重複排除されると、第3物理アドレスにデータBがライトされ、結果として、FMDにデータBが既に存在しているにも関わらずデータBがFMDに追記されることになるからである。
また、本実施例において、物理アドレス(ケースBでは第3物理アドレス)に対するゼロデータのライトに代えて、その物理アドレスについてのアンマップコマンドをFMDに送信することであってもよい。アンマップコマンドとは、物理アドレス(FMDが提供する仮想アドレス)に関連付いているFMDアドレスについてアンマップ(マッピングの解除)を指示するコマンドである。アンマップコマンドによれば、FMDアドレスのマッピングが解除されるので、そのFMDアドレスがマッピングされていた物理アドレス(仮想アドレス)の分、FMDの使用容量が削減されたことになる。本実施例では、重複排除の方式として、ゼロデータをライトする方式が採用されるが、上記のように、重複排除対象のデータに対応した物理アドレスについてのアンマップコマンドを送信する方式が採用されてもよい。但し、アンマップコマンドを送信する方式では、物理アドレスについてゼロデータがライトされることとみなしてパリティを生成することが必要になり得る。FMDが、FMDアドレスがアンマップされている物理アドレス(仮想アドレス)を指定したリードコマンドをストレージコントローラ101から受信した場合にゼロデータを返す仕様になっているためである。FMDアドレスがアンマップされた物理アドレスについての本実施例で言う「ゼロデータ」は、FMDアドレスが割り当てられていない物理アドレスに対するリードコマンドに応答して返されるデータであるフォーマットデータの一例である。本実施例では、重複排除されたデータに代えて書き込まれるデータだけでなく、フォーマットデータも、「ゼロデータ」である。
<ケースC>
ケースCは、重複元及び重複先のうち重複先のデータが更新されるケースである。「重複元」とは、参照される側であり、「重複先」とは、参照する側である。以下の説明では、適宜、論理アドレス、物理アドレス及びデータの少なくとも1つに「重複元」及び「重複先」を付すことがある。「重複元論理アドレス」は、重複元データのライト先の論理アドレスである。「重複元物理アドレス」は、重複元論理アドレスに静的マッピングされている物理アドレス、別の言い方をすれば、重複先論理アドレスに動的マッピングされている物理アドレスである。「重複元データ」は、重複する2以上のデータのうち重複排除されなかったデータである。一方、「重複先論理アドレス」は、重複先データのライト先の論理アドレスであって、重複元物理アドレスに動的マッピングされる論理アドレスである。「重複先物理アドレス」は、重複先論理アドレスに静的マッピングされている物理アドレスである。「重複先データ」は、重複する2以上のデータのうち重複排除されたデータである。サーバシステムからは、2以上の論理アドレスにそれぞれ2以上の同一データが存在するようにみえても、ストレージシステム内部では、それら2以上の同一データのうち重複元とされたデータのみがFMDにライトされ、重複先とされたデータ(重複排除されたデータ)はFMDにライトされない。
ストレージコントローラ101は、重複先データBに非重複データEがライトされる場合(重複先論理アドレス(第3論理アドレス)に非重複データEがライトされる場合)、以下の処理(c1)及び(c2)を行う。
(c1)ストレージコントローラ101は、重複先論理アドレス(第3論理アドレス)の動的マッピング先を、重複元物理アドレス(第2物理アドレス)から、重複先論理アドレス(第3論理アドレス)の静的マッピング先(第3物理アドレス)に変更する。つまり、ストレージコントローラ101は、重複先論理アドレス(第3論理アドレス)について、動的マッピング先を静的マッピング先に一致させる。
(c2)ストレージコントローラ101は、第3物理アドレスに対応したゼロデータ(重複先データBに対応したゼロデータ)に、非重複データEを上書きする。
以上の処理(c1)及び(c2)により、重複排除状態が解除され、非重複データE(更新後データE)がFMDに追記される。
<ケースD>
ケースDは、重複元及び重複先のうち重複元のデータが更新されるケースである。
ストレージコントローラ101は、重複元データBに非重複データEがライトされる場合(重複元論理アドレス(第2論理アドレス)に非重複データEがライトされる場合)、以下の処理(d1)〜(d3)を行う。
(d1)ストレージコントローラ101は、重複先論理アドレス(第3論理アドレス)の動的マッピング先を、重複元物理アドレス(第2物理アドレス)から、重複先論理アドレス(第3論理アドレス)の静的マッピング先(第3物理アドレス)に変更する。
(d2)ストレージコントローラ101は、重複元物理アドレス(第2物理アドレス)から重複先物理アドレス(第3物理アドレス)に重複元データBをコピーする。結果として、第3物理アドレスに対応したゼロデータが重複元データBで上書きされる。
(d3)ストレージコントローラ101は、第2物理アドレスに対応した重複元データBに、非重複データEを上書きする。
以上の処理(d1)〜(d3)により、重複排除状態が解除され、非重複データE(更新後データE)がFMDに追記される。また、重複元データBもFMDに追記される。なお、重複元データBは既にFMDに存在しているので、第3物理アドレスにコピーされた重複元データBをFMDに追記されることに代えて、データBに対応したFMDアドレスを第3物理アドレスに関連付けることが考えられる。しかし、物理アドレス(特に仮想アドレス)とFMDアドレスとの対応関係の管理は、FMDにより行われていることであり、ストレージコントローラ101により制御できることではない。そのため、物理アドレスにライトされるデータはFMDに追記するようにすることが好ましい。
以上のように、本実施例では、FMDが圧縮機能及び容量仮想化機能を有し、ストレージコントローラ101が重複排除機能を有する。論理アドレスと物理アドレス間のマッピングとして、静的マッピング及び動的マッピングがある。ストレージコントローラ101は、実ページのような比較的大きな単位で物理アドレス範囲を論理アドレス範囲に割り当て、重複したデータが生じない限り、静的マッピングを使用する。このため、同一の論理アドレスに対してデータのライトが行われる都度に、その論理アドレスに対する物理アドレスを変更する必要がない。つまり、ライトの都度のマッピング更新を必要としない。これは、ストレージコントローラ101の負荷軽減に貢献する。
また、本実施例では、静的マッピングされている物理アドレスに更新後データをライトするようになっており、物理アドレス範囲に空きを作るためのガベージコレクションをストレージコントローラ101が行う必要は無い。これも、ストレージコントローラ101の負荷軽減に貢献する。
また、重複先データ(重複排除されたデータ)はゼロデータとしてFMDにライトされる(又は重複先物理アドレスについてFMDによりアンマップが実行される)。このため、FMDの実使用容量(物理的な使用容量)を削減することができる。
以下、本実施例を詳細に説明する。
図2は、ストレージシステムの構成を示す。
ストレージシステム200は、複数(又は1つ)のFMD320と、複数のFMD320に接続されたストレージコントローラ101とを有する。複数のFMD320は1以上のRGを構成してもよい。RGは、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループの略である。
ストレージコントローラ101は、S−I/F214と、M−I/F215と、F−I/F213と、メモリ212と、それらに接続されたプロセッサ211とを有する。S−I/F214、M−I/F215及びF−I/F213が、インターフェース部の一例である。メモリ212が、記憶部の一例である。プロセッサ211が、プロセッサ部の一例である。
S−I/F214は、サーバシステム201とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。S−I/F214に、FC(Fibre Channel)ネットワーク203を介して、サーバシステム201が接続される。サーバシステム201は、ストレージコントローラ101に対して、I/O先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を指定したI/Oコマンドを送信する。
M−I/F215は、管理システム205とストレージコントローラ101の間のデータのやり取りを仲介する通信インターフェースデバイスである。M−I/F215には、IP(Internet Protocol)ネットワーク204を介して管理システム205が接続される。ネットワーク203及び204は、同一の通信ネットワークでもよい。管理システム205は、ストレージシステム200を管理する。
F−I/F213は、複数のFMD320とストレージコントローラ101の間のデータのやり取りを仲介する通信インターフェースデバイスである。F−I/F213には、複数のFMD320が接続される。
メモリ212は、プロセッサ211が実行するプログラムや、プロセッサ211が使用するデータを記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。メモリ212及びプロセッサ211の組が二重化されている。
図3は、FMD320の構成を示す。
FMD320は、複数のFM(FMチップ)320と、複数のFM320に接続されたFMコントローラ300とを有する。FMは、典型的には、NAND型のFMである。
FMコントローラ300は、FM320に対するI/Oを制御する。FMコントローラ300は、L−I/F313と、U−I/F314と、圧縮/伸張回路315と、メモリ312と、それらに接続されたプロセッサ311とを有する。
U−I/F314は、上位システムの一例であるストレージコントローラ101に接続される通信インターフェースデバイスであり、ストレージコントローラ101とFMコントローラ300間のデータ通信を仲介する。L−I/F313は、FM320とFMコントローラ300間のデータ通信を仲介する。圧縮/伸張回路315は、データの圧縮及び伸張を行うハードウェアである。圧縮及び伸張は、ハードウェアに代えてプロセッサ211がプログラムを実行することにより行われてもよい。
メモリ312は、プロセッサ311が実行するプログラムや、プロセッサ311が使用するデータを記憶する。プロセッサ311は、メモリ312に格納されているプログラムを実行する。
FMコントローラ300は、ストレージコントローラ101からライトコマンドを受信した場合、ライトコマンドに従うデータを圧縮/伸張回路により圧縮してFM320に追記する。また、FMコントローラ300は、ストレージコントローラ101からリードコマンドを受信した場合、リードコマンドに従うデータをFM320から読み出して圧縮/伸張回路により伸張してストレージコントローラ101に応答する。
FMコントローラ300は、仮想アドレス空間をストレージコントローラ101に提供する。FMコントローラ300は、仮想アドレスとFMDアドレスの対応関係を表すアドレス変換情報を保持している。FMコントローラ300は、ストレージコントローラ101からのライトコマンド又はリードコマンドで指定されている仮想アドレスに対応したFMDアドレスが属する物理ページを特定し、特定した物理ページに対してライト又はリードを実行する。
図4は、メモリ212の構成と、メモリ212内のプログラム及び情報とを示す。
メモリ212は、ローカルメモリ401、キャッシュメモリ402、及び共有メモリ404というメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。
ローカルメモリ401は、このローカルメモリ401を含むメモリ212と同一組に属するプロセッサ211により使用される。言い換えれば、ローカルメモリ401は、このローカルメモリ401を含むメモリ212と異なる組に属するプロセッサ211により使用されない。ローカルメモリ401には、リードプログラム411、フロントエンドライトプログラム412、バックエンドライトプログラム413、アドレス変換プログラム414、重複排除プログラム415、及び、プール容量管理プログラム416が格納される。これらのプログラムについては後述する。
キャッシュメモリ402には、FMD320に対してライト又はリードされるデータが一時的に格納される。
共有メモリ404は、この共有メモリ404を含むメモリ212と同一組に属するプロセッサ211と異なる組に属するプロセッサ211との両方により使用される。共有メモリ404には、VOL管理テーブル421、ページ割当て管理テーブル422、プール管理テーブル423、RG管理テーブル424、動的マッピングテーブル425、静的マッピングテーブル426、空き管理テーブル427、ページ単位管理テーブル428及び重複排除管理テーブル429が格納される。これらのテーブルについては後述する。
図5は、ストレージシステム200内の記憶階層を示す。
論理ボリューム501、重複管理ボリューム502、仮想プール503、RG504、仮想アドレス空間505、及び、FMDアドレス空間506がある。論理ボリューム501に対応したアドレス空間に属するアドレスが、図1における論理アドレスに相当する。重複管理ボリューム502、仮想プール503、RG504及び仮想アドレス空間に対応したアドレス空間に属するアドレスが、図1における物理アドレスに相当する。
論理ボリューム501は、サーバシステム201に提供される記憶空間である。
重複管理ボリューム502は、重複排除の管理のための内部ボリューム(サーバシステム201に提供されない記憶空間)である。プール503は、1以上のRG504に基づく記憶空間(例えば、1以上のRG504に基づく複数のボリュームで構成された記憶空間)であり、複数の実ページで構成されている。RG504は、複数のFMD320又は複数のFMD領域(1以上のFMD320が提供する記憶領域)で構成された記憶空間である。仮想アドレス空間505は、FMD320により提供された空間である。仮想アドレス空間505のサイズは、容量仮想化機能により、典型的には、物理サイズ(複数のFM320の合計容量)より大きい。
FMDアドレス空間506は、FMD320において管理されている内部空間(物理空間)である。FMDアドレス空間506は、典型的には、物理サイズに等しい。
本実施例では、例えば、以下のように、データが格納される。
例えば、論理ボリューム501に、重複する2つのデータAと、非重複の1つのデータBが格納されているとする。
重複する2つのデータAは、ストレージシステム200内部では、次のように格納されている。
・重複元データAが、重複元論理アドレスに静的マッピングされている重複元物理アドレスに対して格納されている。ここで言う重複元物理アドレスは、重複管理ボリューム502における領域のアドレスと、その領域(アドレス)に割り当てられた実ページ(プール503の一部領域)における領域のアドレスとに関わる。重複元データAは、結果として、RG504及び仮想アドレス空間505を通じて、圧縮されてFMDアドレス空間506に格納されている(圧縮データa)。
・重複先データAについては、重複先論理アドレスが重複元物理アドレスに動的マッピングされている。重複先データAに代えて、ゼロデータが、重複先物理アドレスに対して格納されている。ここで言う重複先物理アドレスは、重複管理ボリューム502における領域のアドレスと、その領域(アドレス)に割り当てられた実ページ(プール503の一部領域)における領域のアドレスとに関わる。ゼロデータは、結果として、RG504及び仮想アドレス空間505を通じて、圧縮されてFMDアドレス空間506に格納されている。
一方、非重複のデータBは、ストレージシステム200内部では、次のように格納されている。すなわち、データBは、重複管理ボリューム502を経由せず、そのデータBのライト先論理アドレスに静的マッピングされている物理アドレスに対して格納されている。ここで言う重複先物理アドレスは、論理アドレスに割り当てられた実ページにおける領域のアドレスに関わる。データBは、結果として、RG504及び仮想アドレス空間505を通じて、圧縮されてFMDアドレス空間506に格納されている(圧縮データb)。
キャッシュメモリ402は、論理ボリューム501に対応した第1キャッシュ領域と、重複管理ボリューム502に対応した第2キャッシュ領域とを含んでいてよい。この場合、サーバシステム201との間でやり取りされるデータは、第1キャッシュ領域に格納され、FMD320との間でやり取りされるデータは、第2キャッシュ領域に格納され、第1キャッシュ領域と第2キャッシュ領域間で適宜データが転送される。また、重複管理ボリューム502があることで、重複排除の管理をフロントエンドとバックエンドとで切り離す(具体的には、例えば、サーバシステム201からのデータを第1キャッシュ領域に格納しその後に第2キャッシュ領域にそのデータを転送するときに重複排除する)といったことができる。このため、重複管理ボリューム502は、必ずしも無くてもよいが、あることが好ましい。
図6は、重複管理ボリューム502の構成を示す。
重複管理ボリューム502は、静的マッピング空間601と、追記空間602とを含む。静的マッピング空間601には、静的マッピングに従いデータがライトされる空間である。追記空間602は、静的マッピング空間601の補助的な記憶空間(例えばバッファ)でよい。例えば、追記空間602は、データの退避先として使用されてもよいし、データの重複の有無の判断のために算出されたハッシュ値(データのハッシュ値)の一時的な格納先として使用されてもよい。
図7は、一比較例に係る重複管理ボリュームの構成を示す。
一比較例に係る重複管理ボリューム700によれば、全域が、追記空間701である。一比較例に係る追記空間701は、データのライトが発生する都度にデータが追記される空間である。一比較例によれば、追記空間701に対してストレージコントローラがガベージコレクションを行う必要が生じる。
図8は、VOL管理テーブル421の構成を示す。
本実施例では、論理ボリューム501のようにサーバシステム201に提供されるボリュームも、重複管理ボリューム502のようにサーバシステム201に提供されない内部ボリュームも、「VOL」と総称される。VOL管理テーブル421は、VOLに関する情報を保持する。VOL管理テーブル421は、VOL毎に、エントリを有する。各エントリは、VOL#801、VOL属性802、VOL容量803及びプール#804といった情報を保持する。
VOL#801は、VOLの番号(識別番号)を表す。VOL属性802は、VOLの属性を表す(例えば論理ボリュームは“論理”、重複管理ボリュームは“重複管理”)。VOL容量803は、VOLの容量を表す。プール#804は、VOLに関連付けられているプール503の番号を表す。
図9は、ページ割当て管理テーブル422の構成を示す。
ページ割当て管理テーブル422は、実ページが割り当てられ得る領域毎に、エントリを有する。各エントリは、VOL#901、VOLアドレス902、ページ#903及びページ割当て状態904といった情報を保持する。
VOL#901は、領域が属するVOLの番号を表す。VOLアドレス902は、領域を指すアドレスである。このアドレスは、領域が属するVOLが論理ボリューム501であれば、論理アドレスであり、領域が属するVOLが重複管理ボリューム502であれば、重複管理アドレス(重複管理ボリューム502における領域を指すアドレス)である。ページ#903は、領域に割り当てられている実ページの番号である。実ページが割り当てられていなければ、ページ#903は“−”である。
ページ割当て状態904は、実ページの状態を表す。例えば、重複管理ボリューム502における領域に実ページが割り当てられている場合、重複管理ボリューム502のその領域について、ページ割当て状態904は、“割当て済”である。また、例えば、論理ボリューム501における領域に対して実ページが割り当てられておらず、重複管理ボリューム502のいずれかの領域に実ページが割り当てられている場合、論理ボリューム501のその領域について、ページ割当て状態904は、“重複管理状態”である。また、例えば、論理ボリューム501における領域に対して実ページが割り当てられておらず、且つ、重複管理ボリューム502のいずれの領域にも実ページが割り当てられていない場合、ページ割当て状態904は、“未割当て”である。また、例えば、“重複管理状態”でないVOL及びVOLアドレスについて実ページが割り当てられている場合、“割当て済”となる。
ストレージコントローラ101は、論理アドレス範囲(実ページと同サイズの領域)毎にライト頻度(更新頻度)を管理してよい。ストレージコントローラ101は、ライト頻度が閾値未満であれば、重複排除管理のために実ページを重複管理ボリューム502(例えば、ライト先論理ボリューム501に関連付けられている重複管理ボリューム502)に割り当ててよい。一方、ストレージコントローラ101は、ライト頻度が閾値以上であれば、実ページを論理ボリューム501に割り当ててよい(すなわち、その実ページが割り当てられた論理アドレス範囲については重複排除処理を実行しないでよい)。なぜなら、ライト頻度が閾値以上であると、重複排除を行っても短時間のうちに更新後データとして非重複データがライトされる可能性が高いためである。
図10は、プール管理テーブル423の構成を示す。
プール管理テーブル423は、プール503に関する情報を保持する。プール管理テーブル423は、プール503毎にエントリを有する。各エントリは、プール#1001、RG#1002、仮想プール容量1003、仮想プール使用容量1004、実プール容量1005、実プール使用容量1006及び容量仮想化機能有無1007といった情報を保持する。
プール#1001は、プール503の番号を表す。RG#1002は、プール503の基になっている1以上のRG504の番号を表す。
仮想プール容量1003は、プール503の仮想的な容量、具体的には、例えば、プール503の基になっている1以上のRG504にそれぞれ対応した1以上の仮想RG容量(後述)の合計を表す。
仮想プール使用容量1004は、仮想プール容量1003のうち使用されている容量(典型的には、プール503のうちの割当て済実ページの総容量)を表す。
実プール容量1005は、プール503の実体的な(物理的な)容量、具体的には、例えば、プール503の基になっている1以上のRG504にそれぞれ対応した1以上の実RG容量(後述)の合計を表す。
実プール使用容量1006は、実プール容量1005のうちの使用されている容量、例えば、プール503の基になっている1以上のRG504にそれぞれ対応した1以上の実RG使用容量(後述)の合計を表す。
容量仮想化機能有無1007は、プール503が容量仮想化機能を有するか否かを表す。プール503の基になっている1以上のRG504の全てが容量仮想機能を有していれば、容量仮想化機能有無1007は“有り”である。
なお、本実施例では、説明を分かり易くするために、1つのRG504の仮想RG容量全体が1つのプール503に対応することとしているが、仮想RG容量の一部がプール503に使用され残りが他の用途(例えば他のプール503)に使用されてもよい。
図11は、RG管理テーブル424の構成を示す。
RG管理テーブル424は、RG504に関する情報を保持する。RG管理テーブル424は、RG504毎にエントリを有する。各エントリは、RG#1101、FMD#1102、RAIDレベル1103、仮想RG容量1104、実RG容量1105、実RG使用容量1106及び容量仮想化機能有無1107といった情報を保持する。
RG#1101は、RG504の番号を表す。FMD#1102は、RG504を構成する複数のFMD320の番号を表す。RAIDレベル1103は、RG504のRAIDレベル1103を表す(3D+1PのようなRAID構成を含んでもよい)。
仮想RG容量1104は、RG504の仮想的な容量、具体的には、RG504を構成する複数のFMD320がそれぞれ提供する複数の仮想アドレス空間の総容量である。
実RG容量1105は、RG504の実体的な容量、具体的には、RG504を構成する複数のFMD320の実容量(FM320の総容量)の合計を表す。
実RG使用容量1106は、実RG容量1105のうちの使用されている容量、具体的には、RG504を構成する複数のFMD320にそれぞれ対応した複数の実使用容量の合計を表す。1つのFMD320について、「実使用容量」とは、有効データの総量である。圧縮機能及び容量仮想化機能を有するFMD320において、有効データは、圧縮データである。実RG使用容量1106は、容量計算処理により更新される。容量計算処理は、例えば定期的に次のように実行される。プール503容量管理プログラム416が、RG504を構成する複数のFMD320の各々に実使用容量の問合せを送信する。プール503容量管理プログラム416が、その複数のFMD320からそれぞれ得られた複数の回答(実使用容量)を基に、実RG使用容量1106を算出する。本実施例では、容量仮想化機能を有するFMD320は、実使用容量の問合せを受け付けその問合せに対して実使用容量を回答する機能を有する。
容量仮想化機能有無1107は、RG504が容量仮想化機能を有するか否かを表す。RG504の基になっている複数のFMD320の全てが容量仮想機能を有していれば、RG504が容量仮想化機能を有している、ということである。
図12は、動的マッピングテーブル425の構成を示す。
動的マッピングテーブル425は、論理アドレスと物理アドレス(ここでは重複管理アドレス)間の動的マッピングを表す。動的マッピングテーブル425は、動的マッピング毎にエントリを有する。各エントリは、VOL#1201、VOLアドレス1202、重複管理ボリューム#1203、重複管理アドレス1204及び重複排除状態1205といった情報を保持する。
VOL#1201は、VOL(ここでは論理ボリューム501)の番号を表す。VOLアドレス1202は、VOLの領域を指すアドレス(ここでは論理アドレス)を表す。重複管理ボリューム#1203は、対応するVOL#及びVOLアドレスが動的マッピングされている領域を含んだ重複管理ボリューム502の番号を表す。重複管理アドレス1204は、対応するVOL#1201及びVOLアドレス1202が動的マッピングされている領域(重複管理ボリューム502における領域)を指すアドレスを表す。
重複排除状態1205は、重複排除に関する状態を表す。“重複有り(重複元)”は、VOLアドレスが重複元であることを意味する。“重複有り(重複先)”は、VOLアドレスが重複先であることを意味する。“重複無し”は、対応するVOLアドレス(論理アドレス)について重複データが無いという状態、すなわち、対応するVOLアドレス(論理アドレス)の動的マッピング先がそのVOLアドレス(論理アドレス)の静的マッピング先と一致することを意味する。
図13は、静的マッピングテーブル426の構成を示す。
静的マッピングテーブル426は、論理アドレスと物理アドレス(ここでは重複管理アドレス1204)間の静的マッピングを表す。静的マッピングテーブル426は、静的マッピング毎にエントリを有する。各エントリは、VOL#1301、VOLアドレス1302、重複管理ボリューム#1303及び重複管理アドレス1304といった情報を保持する。
VOL#1301は、VOL(ここでは論理ボリューム501)の番号を表す。VOLアドレス1302は、VOLの領域を指すアドレス(ここでは論理アドレス)を表す。重複管理ボリューム#1303は、対応するVOL#及びVOLアドレスが静的マッピングされている領域を含んだ重複管理ボリューム502の番号を表す。重複管理アドレス1304は、対応するVOL#及びVOLアドレスが静的マッピングされている領域(重複管理ボリューム502における領域)を指すアドレスを表す。
図13によれば、例えば次の通りである。すなわち、論理ボリューム“0”の先頭アドレス(VOLアドレス1302“0”)が、重複管理ボリューム“100”の先頭アドレス(重複管理アドレス1302“0”)に静的マッピングされており、以降のVOLアドレス及び重複管理アドレスも、1:1で静的マッピングされている。
図14は、空き管理テーブル427の構成を示す。
空き管理テーブル427は、重複管理ボリューム502の追記空間602における空き領域を表す。空き管理テーブル427は、重複管理ボリューム502毎にエントリを有する。各エントリは、重複管理ボリューム#1401、先頭アドレス1402、終端アドレス1403、使用済アドレス1404及び解放済アドレス1405といった情報を保持する。
重複管理ボリューム#1401は、重複管理ボリューム502の番号を表す。先頭アドレス1402は、追記空間602の先頭アドレスを表す。終端アドレス1403は、追記空間602の終端アドレスを表す。使用済アドレス1404は、追記空間602のうちの使用済領域の先頭又は終端のアドレスを表す。解放済アドレス1405は、追記空間602のうちの解放済領域の先頭又は終端のアドレスを表す。
追記空間602には、データが追記又は上書きされる。例えば、追記空間602内の領域が動的マッピング先である論理アドレスの状態が重複無しの状態であれば、上書きであってもよいし(具体的には、追記空間602内のその領域にデータが上書きされてもよいし)、追記であってもよい(具体的には、動的マッピング先が追記空間602内の空き領域に変更されてその空き領域にデータが書き込まれてもよい)。また、例えば、追記空間602内の領域が動的マッピング先でない論理アドレスについては、追記でよい(具体的には、その論理アドレスの動的マッピング先が追記空間602内の空き領域に変更されてその空き領域にデータが書き込まれてもよい)。使用済アドレス1404>解放済アドレス1405の場合、先頭アドレス1402から解放済アドレス1405までの領域(解放済領域)と、使用済アドレス1404から終端アドレス1403までの領域とが空き領域であり、解放済アドレス1405から使用済アドレス1404までの領域が、使用済領域である。一方、使用済アドレス1404<解放済アドレス1405の場合、先頭アドレス1402から使用済アドレス1404までの領域と、解放済アドレス1405から終端アドレス1403までの領域とが使用済領域であり、使用済アドレス1404から解放済アドレス1405までの領域(解放済領域)が空き領域である。
図15は、ページ単位管理テーブル428の構成を示す。
ページ単位管理テーブル428は、実ページに関する情報を保持する。ページ単位管理テーブル428は、実ページ毎にエントリを有する。各エントリは、ページ#1501、VOL#1502、VOLアドレス1503、仮想RG#1504、仮想RGアドレス1505、重複排除有無1506及び割当て先属性1507といった情報を保持する。
ページ#1501は、実ページの番号を表す。VOL#1502は、実ページの割当て先のVOLの番号を表す。VOLアドレス1503は、実ページの割当て先の領域(VOLにおける領域)を指すアドレスを表す。仮想RG#1504は、実ページを含む仮想RGの番号を表す。「仮想RG」とは、プール503の一部であり、RG504により提供された空間(領域)である。仮想RGアドレス1505は、仮想RGにおける領域(実ページ)を指すアドレスである。重複排除有無1506は、実ページにおいて重複排除がされているか否かを表す。重複元及び重複先(VOL上はゼロデータ)のどちらでもない実ページについての重複排除有無1506は“無し”である。割当て先属性1507は、実ページの割当て先領域を含んだVOLの属性(例えば“論理ボリューム”、“重複管理ボリューム”)を表す。ページ単位管理テーブル428があることにより、実ページ内に重複データ(重複元データ及び重複先データの総称)を含まない場合には、ストレージコントローラ101(プロセッサ211)は、静的マッピングのみで重複管理アドレスを特定でき、動的マッピングテーブル425を参照する必要はない。動的マッピングテーブル425は、情報量が多くなることがあり、そのため、階層管理やディレクトリ管理が望ましく、故に、テーブル425へのアクセスオーバーヘッドが大きくなることがある。一方、静的マッピングテーブル426は、動的マッピングテーブル425に比して、情報量が少なく、故に、構造がシンプルであり、アクセスオーバーヘッドは小さい。実ページ単位で重複排除が実施されていない場合は、重複排除有無1506“無し”を特定できれば、処理オーバーヘッドを削減することができる。
図16は、重複排除管理テーブル429の構成を示す。
重複排除管理テーブル429は、データと重複するデータの位置(論理アドレス)を表す。例えば、重複排除管理テーブル429は、ストレージシステム200に格納されたデータ毎にハッシュ値をキーとして有する。各キー(ハッシュ値)に、そのキーと重複するハッシュ値となるデータが格納されている領域を表すVOL#及びVOLアドレス(例えば論理ボリューム番号及び論理アドレス)が関連付けられる。
図17は、プール一覧画面を示す。
プール一覧画面1700は、管理画面の一例である。管理画面は、ストレージシステム200からの情報を基に管理システム205により表示される画面である。
プール一覧画面1700には、プール一覧情報が表示される。プール一覧情報は、プール管理テーブル423に従う情報である。すなわち、プール#は、プール#1001に相当し、論理容量及び論理使用容量は、仮想プール容量1003及び仮想プール使用容量1004に相当し、実容量及び実使用容量は、実プール容量1005及び実プール使用容量1006に相当する。削減率(%)は、(実使用容量/仮想プール使用容量)×100に相当する(小数点第一位は四捨五入)。削減率は、ストレージコントローラ101及び管理システム205の一方により算出される。
管理者は、プール一覧画面1700を見て、例えば、論理容量と論理使用容量との差分が閾値未満になったプール503、及び、実容量と実使用容量との差分が閾値未満になったプール503のうちの少なくとも1つのプール503に対してRG504(又はRG504に基づくボリューム)を追加することを決定できる。
以下、本実施例で行われる処理を説明する。
図18は、フロントエンドライト処理の流れを示す。
フロントエンドライト処理とは、データのライト要求をサーバシステム201から受信した場合に開始される処理であって、そのデータを第1キャッシュ領域(ライト要求に従うライト先の論理ボリューム501に対応したキャッシュ領域)にライトする処理である。フロントエンドライト処理は、フロントエンドライトプログラム412により実行される。第1キャッシュ領域と第2キャッシュ領域(重複管理ボリューム502に対応したキャッシュ領域)間のデータ転送は、アドレス変換プログラム414により実行される。図18の説明において、受信したライト要求に従うデータを「データW」と表記する。
S1801で、フロントエンドライトプログラム412は、第1キャッシュ領域についてキャッシュヒットしたか否かを判断する。ライト要求について、「キャッシュヒット」とは、ライト要求に従うライト先に対応したキャッシュセグメント(キャッシュメモリ402における領域)が確保されていることを意味する。
S1801の判断結果が偽の場合(S1801:No)、S1802で、フロントエンドライトプログラム412は、第1キャッシュ領域からキャッシュセグメントを確保する。
S1803で、フロントエンドライトプログラム412は、確保されているキャッシュセグメントにデータWをライトする。
S1804で、フロントエンドライトプログラム412は、VOL管理テーブル421を基に、データのライト先の論理ボリューム501に重複管理ボリューム502が関連付けられているか(つまり、ライト先の論理ボリューム501が重複排除対象のVOLであるか)否かを判断する。
S1804の判断結果が真の場合(S1804:Yes)、S1805で、フロントエンドライトプログラム412は、ページ割当て管理テーブル422を基に、ライト先に対応したページ割当て状態904が“重複管理状態”か否かを判断する。なお、もし、ライト先に対応したページ割当て状態904が“未割当て”の場合、S1805で、未割当ての実ページ(空き実ページ)が割当て対象として選択され、その実ページが割り当てられてよい。
S1805の判断結果が真の場合(S1805:Yes)、S1806で、フロントエンドライトプログラム412は、重複排除ダーティーキューに、データWのコマンドを積む。そのコマンドは、重複管理処理のコマンドである。
S1804又はS1805の判断結果が偽の場合(S1804:No又はS1805:No)、S1807で、フロントエンドライトプログラム412は、デステージダーティーキューに、データWのコマンドを積む。そのコマンドは、デステージ(キャッシュメモリ402からFMD320へデータをライトすること)のコマンドである。
S1808で、フロントエンドライトプログラム412は、Good応答(ライト完了報告)を、ライト要求の送信元(サーバシステム201)に返す。
図19は、重複管理処理の流れを示す。
S1901で、アドレス変換プログラム414は、重複排除ダーティーキューを参照する。
S1902で、アドレス変換プログラム414は、ダーティデータがあるか否かを判断する。
S1902の判断結果が真の場合(S1902:Yes)、S1903で、アドレス変換プログラム414は、重複排除ダーティーキューからダーティデータを選択する。
S1904で、アドレス変換プログラム414は、S1903で選択されたダーティデータ(図19〜図22及び図37の説明において「選択ダーティデータ」)のサイズが重複排除単位サイズ未満か否かを判断する。「重複排除単位サイズ」とは、重複排除のために比較されるデータの単位サイズである。
S1904の判断結果が真の場合(S1904:Yes)、S1905で、アドレス変換プログラム414は、フルダーティ化処理(図20)を実行する。これにより、論理ボリューム501においてフルダーティデータが生成される。「フルダーティデータ」とは、選択ダーティデータと、ゼロデータ及び不足データ(後述)のうちの少なくとも1つとで構成されたデータであって、重複排除単位サイズと同サイズのデータである。
S1906で、アドレス変換プログラム414は、重複排除プログラム415を呼び出す。重複排除プログラム415により、重複排除処理(図21)が実行される。
S1907で、アドレス変換プログラム414は、S1906の重複排除処理においてデータライト要の設定がされたか否かを判断する。
S1907の判断結果が真の場合(S1907:Yes)、S1908で、アドレス変換プログラム414は、キャッシュ転送処理(図22)を実行する。
S1909で、アドレス変換プログラム414は、選択ダーティデータを第1キャッシュ領域(論理ボリューム501に対応したキャッシュ領域)から破棄する。
図20は、フルダーティ化処理の流れを示す。
S2001で、アドレス変換プログラム414は、プール管理テーブル423を基に、割り当てられている実ページを含んだプール503について容量仮想化有無“有り”か否かを判断する。
S2001の判断結果が真の場合(S2001:Yes)、S2002で、アドレス変換プログラム414は、ページ単位管理テーブル428を基に、選択ダーティデータに対応した実ページについて重複排除有無1506“有り”か否かを判断する。
S2002の判断結果が真の場合(S2002:Yes)、S2003で、アドレス変換プログラム414は、動的マッピングテーブル425を基に、選択ダーティデータの論理アドレス(VOLアドレス1202)に対応した重複管理アドレスを特定する。
S2002の判断結果が偽の場合(S2002:No)、S2004で、アドレス変換プログラム414は、静的マッピングテーブル426を基に、選択ダーティデータの論理アドレス(VOLアドレス1202)に対応した重複管理アドレスを算出する。
S2005で、アドレス変換プログラム414は、第2キャッシュ領域(重複管理ボリューム502に対応したキャッシュ領域)についてキャッシュミスしたか否かを判断する。キャッシュミスは、特定又は算出された重複管理アドレス1204(図20の説明において「対象重複管理アドレス」)について第2キャッシュ領域にキャッシュセグメントが確保されていないことを意味する。
S2005の判断結果が真の場合(S2002:Yes)、S2006で、アドレス変換プログラム414は、ページ単位管理テーブル428を基に、対象重複管理アドレスに実ページが割当て済か否かを判断する。
S2006の判断結果が真の場合(S2006:Yes)、S2007で、アドレス変換プログラム414は、ページ単位管理テーブル428及びRG管理テーブル424を基に、割り当てられている実ページの基になっているFMD320(及びFMD320提供の仮想アドレス)を特定する。
S2008で、アドレス変換プログラム414は、第2キャッシュ領域からキャッシュセグメントを確保し、特定されたFMD320から、割り当てられている実ページにおけるデータ(少なくとも、選択ダーティデータにより更新されるデータを含み重複排除単位サイズ以上のサイズのデータ)を、第2キャッシュ領域(確保したキャッシュセグメント)に読み出す(ステージングする)。キャッシュセグメントのサイズは、重複排除単位サイズと同じかそれより大きくてよい。
S2009で、アドレス変換プログラム414は、第2キャッシュ領域(確保したキャッシュセグメント)から第1キャッシュ領域における不足領域に不足データを転送する。「不足領域」とは、フルダーティデータサイズ(重複排除単位サイズ)と同サイズの領域のうち選択ダーティデータに占められていない領域である。「不足データ」とは、フルダーティデータサイズ分のデータ(ステージングされたデータのうちの少なくとも一部)と選択ダーティデータとの差分である。
S2006の判断結果が偽の場合(S2006:No)、S2010で、アドレス変換プログラム414は、第1キャッシュ領域における不足領域にゼロデータをライトする。「不足領域」とは、フルダーティデータのサイズと同サイズの領域のうち選択ダーティデータに占められていない領域である。
以上のS2009及びS2010によれば、第1キャッシュ領域(論理ボリューム501に対応したキャッシュ領域)に、選択ダーティデータを含んだフルダーティデータができる。
図21は、重複排除処理の流れを示す。
S2101で、重複排除プログラム415は、重複排除管理テーブル429を基に、フルダーティデータに重複しているデータがあるか否かを判断する。ここでの「フルダーティデータ」は、その全部又は一部が選択ダーティデータである。
S2101の判断結果が真の場合(S2101:Yes)、S2102で、重複排除プログラム415は、動的マッピングテーブル425を更新する。これは、例えば、図1について言えば、ケースBに対応し、後述する図面について言えば、図31に対応する。つまり、フルダーティデータに対応したVOLアドレス(論理アドレス)が、フルダーティデータと重複するデータに対応した重複管理アドレスに動的マッピングされる。そのVOLアドレス(論理アドレス)は、重複先VOLアドレス(論理アドレス)であり、重複先VOLアドレス(論理アドレス)が動的マッピングされた重複管理アドレスは、重複元重複管理アドレスである。また、フルダーティデータが、重複先データであり、フルダーティデータと重複するデータが重複元データである。
S2103で、重複排除プログラム415は、プール管理テーブル423を基に、割り当てられている実ページを含んだプール503について容量仮想化機能有無1007“有り”か否かを判断する。
S2103の判断結果が真の場合(S2103:Yes)、S2104で、重複排除プログラム415は、重複元に関する情報を更新する。例えば、重複元データが格納されている実ページに対応した重複排除有無1506は“有り”とされる。重複元重複管理アドレスに対応した重複排除状態1205は“重複有り(重複元)”とされる。
S2105で、重複排除プログラム415は、重複先に関する情報を更新する。例えば、重複先データが格納されている実ページに対応した重複排除有無1506は“有り”とされる。重複先重複管理アドレスに対応した重複排除状態1205は“重複有り(重複先)”とされる。
S2106で、重複排除プログラム415は、重複排除管理テーブル429を更新する。すなわち、フルダーティデータのキー(ハッシュ値)に、フルダーティデータのライト先のVOL#及びVOLアドレスが関連付けられる。
S2107で、重複排除プログラム415は、静的マッピング空間601、具体的には、フルダーティデータのライト先論理アドレスに静的マッピングされているアドレスに、ゼロデータをライトする。ゼロデータは、実際には、その静的マッピングされているアドレスに対応したキャッシュセグメントにライトされる。
S2108で、重複排除プログラム415は、S2107でライトしたゼロデータをダーティデータとして設定する(ゼロデータが書かれたキャッシュセグメントをダーティのセグメントとして管理する)。具体的には、例えば、そのゼロデータについてのコマンドがデステージダーティキューに積まれる。
S2103の判断結果が偽の場合(S2103:No)(つまり、上記の一比較例のケースがあれば)、S2109で、重複排除プログラム415は、重複元に関する情報を更新する。例えば、S2104と同様に、重複排除有無1506及び重複排除状態1205が更新される。
S2110で、重複排除プログラム415は、重複先に関する情報を更新する。例えば、S2105と同様に、重複排除有無1506及び重複排除状態1205が更新される。
S2111で、重複排除プログラム415は、重複排除管理テーブル429を更新する。
S2101の判断結果が偽の場合(S2101:No)、S2121で、重複排除プログラム415は、フルダーティデータについて、データライト要を設定する。
図22は、キャッシュ転送処理の流れを示す。
S2201で、アドレス変換プログラム414は、プール管理テーブル423を基に、割り当てられている実ページを含んだプール503について容量仮想化有無“有り”か否かを判断する。
S2201の判断結果が真の場合(S2201:Yes)、S2202で、アドレス変換プログラム414は、上書きキャッシュライト処理を実行する。
S2201の判断結果が偽の場合(S2201:No)、S2203で、アドレス変換プログラム414は、追記書きキャッシュライト処理を実行する。この処理では、第2キャッシュ領域に、フルダーティデータが追記されることになる。この処理が行われるということは、重複管理ボリューム502は、一比較例に係る重複管理ボリューム502(図7)である。
図37は、上書きキャッシュライト処理の流れを示す。
上書きキャッシュライト処理は、キャッシュ転送処理の一部である。キャッシュ転送処理は、データライト要が設定されている場合(図21のS2121)に実行される。データライト要は、フルダーティデータ(選択ダーティデータ)と重複するデータが見つからなかった場合(図21のS2101:No)に実行される。このため、上書きキャッシュライト処理は、図1で言えば、ケースA、ケースC及びケースDに対応する。また、後述の図面で言えば、図32又は図33に対応する。
S3700で、アドレス変換プログラム414は、ページ単位管理テーブル428を基に、割り当てられている実ページに対応した重複排除有無1506が“有り”か否かを判断する。
S3700の判断結果が真の場合(S3700:Yes)、S3701で、アドレス変換プログラム414は、動的マッピングテーブル425を基に、旧データ(フルダーティデータにより更新される更新前データ)に対応したアドレスの重複排除状態1205は“重複有り”(具体的には“重複有り(重複元)”及び“重複有り(重複先)”のいずれかである)か否かを判断する。
S3700又はS3701の判断結果が偽の場合(S3700:No又はS3701:No)、S3702で、アドレス変換プログラム414は、フルダーティデータのライト先重複管理アドレスを算出し、そのアドレスに従うキャッシュアドレスを算出する。
S3701の判断結果が真の場合(S3701:Yes)、S3703で、アドレス変換プログラム414は、旧データに対応したアドレスの重複排除状態1205は“重複有り(重複先)”か否かを判断する。
S3703の判断結果が真の場合(S3703:Yes)、S3704で、アドレス変換プログラム414は、静的マッピングテーブル426を基に、重複先論理アドレスに静的マッピングされている重複先重複管理アドレスを特定し、その特定したアドレスに従うキャッシュアドレス(キャッシュセグメントのアドレス)を算出する。
S3703の判断結果が偽の場合(S3703:No)、S3705で、アドレス変換プログラム414は、空き管理テーブル427を基に、空き領域を特定し、その空き領域のアドレスに従うキャッシュアドレス(キャッシュセグメントのアドレス)を算出する。
S3706で、アドレス変換プログラム414は、S3702、S3704又はS3705で算出されたアドレスに従うキャッシュセグメントを第2キャッシュ領域から確保する(S3706)。
S3707で、アドレス変換プログラム414は、S3706で確保されたキャッシュセグメントにフルダーティデータをライトする。
S3708で、アドレス変換プログラム414は、マッピング先変更があるか否かを判断する。例えば、図1で言うケースCのようなケースであれば、動的マッピングが静的マッピングに一致するため、S3708の判断結果は真となる。
S3708の判断結果が真の場合(S3708:Yes)、S3709で、アドレス変換プログラム414は、動的マッピングテーブル425を更新する。例えば、動的マッピング先が静的マッピング先と同じとされる。
S3710で、アドレス変換プログラム414は、重複排除管理テーブル429を更新する。
図23は、バックエンドライト処理の流れを示す。
バックエンドライト処理は、キャッシュメモリ402からFMD320へのデステージの処理である。バックエンドライト処理は、ライト要求に従う処理(フロントエンドライト処理)とは非同期に行われるが(例えば定期的に行われるが)、ライト要求に従う処理の一部として行われてもよい。後者の場合、フルダーティデータのデステージが完了された場合に、ライト要求に対するGood応答が返される。
S2301で、バックエンドライトプログラム413は、デステージダーティキューを参照する。
S2302で、バックエンドライトプログラム413は、デステージされるべきダーティデータがあるか否かを判断する。
S2302の判断結果が真の場合(S2302:Yes)、S2303で、バックエンドライトプログラム413は、ダーティデータを選択する。
S2304で、バックエンドライトプログラム413は、S2304で選択したダーティデータをFMD320にデステージ(ライト)する。必要に応じて、そのダーティデータを用いてパリティが生成又は更新される。また、ダーティデータがゼロデータの場合、ゼロデータのデステージに代えて、上述したアンマップコマンドの送信が行われてもよい。その場合、必要に応じて、ゼロデータを用いてパリティが生成又は更新されてよい。
本実施例における幾つかの処理を模式的に説明する。
図31は、更新後データが論理ボリューム501における既存データと重複するケースの一例の模式図である。図31が示すケースは、図21のS2101:Yesのケースの一例である。
論理ボリューム501においてデータB、C、A及びAがある。データB、C、A及びAは、第1〜第4論理アドレスにそれぞれ対応する。第1〜第4論理アドレスに第1〜第4重複管理アドレスが静的マッピングされている。第1〜第4重複管理アドレスは、静的マッピング空間601に属するアドレスであり、追記空間602に属するアドレスではない。第3論理アドレス(重複先)が第4重複管理アドレス(重複元)に動的マッピングされており、第3重複管理アドレス(重複先)にゼロデータがライトされている。
この状況において、第2論理アドレスに更新後データAがライトされるとする。この場合、更新後データAに重複する重複元データAが特定される。第2論理アドレス(重複先)が第4重複管理アドレス(重複元)に動的マッピングされる(符号(1))。第2論理アドレスが静的マッピングされている第2重複管理アドレス(重複先)にゼロデータがライトされる(符号(2))。
図32は、非重複の更新後データのライト先が重複先論理アドレスであるケースの一例の模式図である。図32が示すケースは、図37のS3703:Yesのケースの一例である。
図31に示した更新の後に、第2論理アドレス(重複先)に非重複データCがライトされるとする。この場合、第2論理アドレス(重複先)の動的マッピング先が、第4重複管理アドレス(重複元)から、第2論理アドレス(重複先)の静的マッピング先(第2重複管理アドレス)に切り替わる(符号(1))。第2論理アドレスが静的マッピングされている第2重複管理アドレスに更新後データCがライトされる(符号(2))。
図33は、非重複の更新後データのライト先が重複元論理アドレスであるケースの一例の模式図である。図33が示すケースは、図37のS3703:Noのケースの一例である。
図31に示した更新の後に、第4論理アドレス(重複元)に非重複データCがライトされるとする。この場合、第4論理アドレス(重複元)に追記空間602における空きアドレスが関連付けられる(符号(1))。つまり、第4論理アドレス(重複元)に対して空きアドレスが動的マッピングされる。空きアドレスが指す空き領域にデータCがライトされる(符号(2))。第2及び第3論理アドレスは、重複元データAがある第4重複管理アドレスに動的マッピングされたままである。
図34は、更新後データが論理ボリューム501における既存データのいずれとも重複しないケースの一例の模式図である。図34が示すケースは、図37のS3700:NoやS3701:Noのケースの一例である。
図33に示した更新の後に、第4論理アドレスに非重複データDがライトされるとする。この場合、第4論理アドレスの動的マッピング先領域(追記空間602における領域)に、データDがライトされる。
図33及び図34に例示したように、重複元論理アドレスに対応した重複元データが更新される場合には、重複元論理アドレスを追記空間602内の空き領域に動的マッピングすることで、I/O性能の低下を軽減したデータ更新(言い換えれば、重複先論理アドレスに対応した重複先データが更新される場合と同程度のI/O性能のデータ更新)が可能である。
追記空間602内の領域に対する動的マッピングは重複離脱処理により解消される。
図35は、重複離脱処理の一例の模式図である。
図33に示した更新の後の重複離脱処理が行われるとする。その重複離脱処理では、例えば次の処理が行われる。
アドレス変換プログラム414は、重複元データAをいずれかの重複先重複管理アドレスにコピーする(符号(1))。コピー元の一例が、第4重複管理アドレスであり、コピー先の一例が、第2重複管理アドレスである。第2重複管理アドレスにおけるゼロデータが、第4重複管理アドレスにおけるデータAで上書きされ、第2重複管理アドレスは、重複先から重複元となる。
アドレス変換プログラム414は、静的マッピング空間601に対する動的マッピングを更新する(符号(2))。すなわち、アドレス変換プログラム414は、第2論理アドレスの動的マッピング先を、第4重複管理アドレスから、第2論理アドレスの静的マッピング先(第2重複管理アドレス)に変更する。また、アドレス変換プログラム414は、第3論理アドレスの動的マッピング先を第4重複管理アドレスから第2重複管理アドレスに変更する。
アドレス変換プログラム414は、追記空間602内の領域におけるデータCを、その領域に動的マッピングされている第4論理アドレスの静的マッピング先である第4重複管理アドレスにコピーする(符号(3))。アドレス変換プログラム414は、第4論理アドレスの動的マッピング先を、追記空間602内の領域から、第4論理アドレスの静的マッピング先(第4重複管理アドレス)に変更する(符号(4))。アドレス変換プログラム414は、追記空間602内の領域(動的マッピングされていた領域)を解放する(符号(5))。例えば、その領域にゼロデータが書き込まれる。
このような重複離脱処理が行われることにより、重複元論理アドレスに対応した重複元データが更新されることによって追記空間602内領域に対して動的マッピングが生成されても通常の状態(追記空間602内領域に対して動的マッピングが無い状態)に適切に戻すことができる。このため、追記空間602のガベージコレクションが不要となる。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
ダーティデータのサイズが重複排除単位サイズに満たない場合、実施例1では論理アドレス(論理ボリューム)に対してフルダーティ化処理が実行されるが、実施例2では重複管理アドレス(重複管理ボリューム)に対してフルダーティ化処理が実行される。つまり、実施例2は、フルダーティデータが生成されるレイヤが実施例1と異なる。
図24は、実施例2に係る重複管理処理の流れを示す。
S2401で、アドレス変換プログラム414は、重複排除ダーティーキューを参照する。重複排除ダーティーキューは、論理ボリューム501上のダーティデータについてのコマンドのキューである。
S2402で、アドレス変換プログラム414は、ダーティデータがあるか否かを判断する。
S2402の判断結果が真の場合(S2402:Yes)、S2403で、アドレス変換プログラム414は、重複排除ダーティーキューからダーティデータを選択する。ここで選択されたダーティデータを、図24〜図27の説明で、「選択ダーティデータ」と言う。
S2404で、アドレス変換プログラム414は、キャッシュ転送処理を実行する。
S2405で、アドレス変換プログラム414は、重複排除プログラム415を呼び出す。重複排除プログラム415により、重複排除処理(図27)が実行される。
S2406で、アドレス変換プログラム414は、選択ダーティデータを第1キャッシュ領域(論理ボリューム501に対応したキャッシュ領域)から破棄する。
図25は、実施例2に係るキャッシュ転送処理の流れを示す。
S2501で、アドレス変換プログラム414は、動的マッピングテーブル425を基に、選択ダーティデータについての論理アドレス(VOLアドレス)に対応した重複排除状態1205が“重複無し”か否かを判断する。
S2501の判断結果が真の場合(S2501:Yes)、S2502で、アドレス変換プログラム414は、動的マッピングテーブル425を基に、選択ダーティデータについての論理アドレスに動的マッピングされている重複管理アドレスを特定し、その特定したアドレスに従うキャッシュアドレス(キャッシュセグメントのアドレス)を算出する。特定された重複管理アドレスは、追記空間602に属する領域を指すアドレスである。
S2503で、アドレス変換プログラム414は、第1キャッシュ領域(論理ボリューム501に対応したキャッシュ領域)から、S2502で算出されたアドレスが指す領域(第2キャッシュ領域内の領域)に、選択ダーティデータをコピーする。
S2501の判断結果が偽の場合(S2501:No)、S2504で、アドレス変換プログラム414は、選択ダーティデータに対応した論理アドレスの重複排除状態1205は“重複有り(重複先)”か否かを判断する。
S2504の判断結果が真の場合(S2504:Yes)、S2505で、アドレス変換プログラム414は、静的マッピングテーブル426を基に、重複先論理アドレスに静的マッピングされている重複先重複管理アドレスを特定し、その特定したアドレスに従うキャッシュアドレス(キャッシュセグメントのアドレス)を算出する。
S2504の判断結果が偽の場合(S2504:No)、S2506で、アドレス変換プログラム414は、空き管理テーブル427を基に、空き領域を特定し、その空き領域のアドレスに従うキャッシュアドレス(キャッシュセグメントのアドレス)を算出する。
S2507で、アドレス変換プログラム414は、選択ダーティデータのサイズが重複排除単位サイズ未満か否かを判断する。
S2507の判断結果が真の場合(S2507:Yes)、S2507で、アドレス変換プログラム414は、フルダーティ化処理(図26)を実行する。
S2509で、アドレス変換プログラム414は、第1キャッシュ領域(論理ボリューム501に対応したキャッシュ領域)から、S2508でのステージング先領域(第2キャッシュ領域内の領域)に、選択ダーティデータをコピーする。
S2510で、アドレス変換プログラム414は、動的マッピングテーブル425を更新する。
以上のS2508及びS2509によれば、第2キャッシュ領域(重複管理ボリューム502に対応したキャッシュ領域)に、選択ダーティデータを含んだフルダーティデータができる。
図26は、実施例2に係るフルダーティ化処理の流れを示す。
S2601で、アドレス変換プログラム414は、プール管理テーブル423を基に、割り当てられている実ページを含んだプール503について容量仮想化有無“有り”か否かを判断する。
S2601の判断結果が真の場合(S2601:Yes)、S2602で、アドレス変換プログラム414は、ページ単位管理テーブル428を基に、選択ダーティデータに対応した実ページについて重複排除有無1506“有り”か否かを判断する。
S2602の判断結果が真の場合(S2602:Yes)、S2603で、アドレス変換プログラム414は、動的マッピングテーブル425を基に、選択ダーティデータの論理アドレス(VOLアドレス1202)に対応した重複管理アドレスを特定する。
S2602の判断結果が偽の場合(S2602:No)、S2604で、アドレス変換プログラム414は、静的マッピングテーブル426を基に、選択ダーティデータの論理アドレス(VOLアドレス1202)に対応した重複管理アドレスを算出する。
S2605で、アドレス変換プログラム414は、第2キャッシュ領域(重複管理ボリューム502に対応したキャッシュ領域)についてキャッシュミスしたか否かを判断する。
S2605の判断結果が真の場合(S2602:Yes)、S2606で、アドレス変換プログラム414は、ページ単位管理テーブル428を基に、実ページが対象重複管理アドレスに割当て済か否かを判断する。
S2606の判断結果が真の場合(S2606:Yes)、S2607で、アドレス変換プログラム414は、ページ単位管理テーブル428及びRG管理テーブル424を基に、割り当てられている実ページの基になっているFMD320(及びFMD320提供の仮想アドレス)を特定する。
S2608で、アドレス変換プログラム414は、第2キャッシュ領域からキャッシュセグメントを確保し、特定されたFMD320から、割り当てられている実ページにおけるデータ(少なくとも、選択ダーティデータにより更新されるデータを含み重複排除単位サイズ以上のサイズのデータ)を、第2キャッシュ領域(確保したキャッシュセグメント)に読み出す(ステージングする)。
S2609で、アドレス変換プログラム414は、第2キャッシュ領域(確保したキャッシュセグメント)における不足領域に不足データを転送する。
S2606の判断結果が偽の場合(S2606:No)、S2610で、アドレス変換プログラム414は、第2キャッシュ領域における不足領域にゼロデータをライトする。
図27は、実施例2に係る重複排除処理の流れを示す。
S2701で、重複排除プログラム415は、第2キャッシュ領域におけるフルダーティーデータを選択する。
S2702で、重複排除プログラム415は、重複排除管理テーブル429を参照し、選択したフルダーティデータに重複するデータが有るか否かを判断する。
S2702の判断結果が真の場合(S2702:Yes)、S2703で、重複排除プログラム415は、動的マッピングテーブル425を更新する。具体的には、重複排除プログラム415は、S2701で選択されたフルダーティデータがある領域を指す重複管理アドレスに静的マッピングされている論理アドレスを、重複元重複管理アドレスに動的マッピングする。
S2704で、重複排除プログラム415は、S2701で選択されたフルダーティデータがある領域(第2キャッシュ領域における領域)にゼロデータをライトする。
実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。
実施例3では、追記空間602(バッファ空間)に重複元データが格納される。重複排除処理は、ライト要求に従う処理とは非同期に行われる。
図28は、実施例3に係る重複排除処理の流れの一部を示す。
S2103:Yesの場合、重複排除プログラム415は、重複元データを追記空間602にコピーする。その後、S2104が実行される。
図36は、実施例3に係る重複排除の一例の模式図である。
第3論理アドレスに更新後データBがライトされるとする。更新後データBは、第2論理アドレスに対応した既存データBと重複する。
この場合、重複排除プログラム415は、重複元となるデータBを静的マッピング空間601から追記空間602にコピーする(又は、更新後データBを追記空間602にライトする)。重複排除プログラム415は、コピー先領域(追記空間602内の領域)に、第2及び第3論理アドレスをそれぞれ動的マッピングする。重複排除プログラム415は、第2及び第3論理アドレスにそれぞれ対応した静的マッピング先である第2及び第3重複管理アドレスの各々にゼロデータをライトする。
実施例3によれば、論理アドレスの動的マッピング先が追記空間602に維持される。このため、動的マッピング先を静的マッピング空間601における領域間で変更する必要が無い。つまり、動的マッピング先の変更頻度を軽減すること、及び、図33及び図35に示したデータコピーを削減することが期待できる。
実施例4を説明する。その際、実施例1〜3との相違点を主に説明し、実施例1〜3との共通点については説明を省略又は簡略する。
実施例4では、バックエンドライト処理において、パリティ生成をスキップすることが可能である。
図29は、実施例4に係る重複排除処理の流れの一部を示す。
S2108又はS2111の後、S2901で、重複排除プログラム415は、重複元が属するRG504に重複先が属するか否かを判断する。
S2901の判断結果が真の場合(S2901:Yes)、S2902で、重複排除プログラム415は、重複先(ゼロデータ)についてパリティ生成不要を設定する。ゼロデータがライトされるということは、重複元データが存在するということなので、重複元データとゼロデータが同一RG504にライトされるのであれば、パリティ生成は不要でよい。
パリティ生成不要が設定されている場合、バックエンドライト処理のS2304ではパリティは生成されない。
一方、重複元データがゼロデータのライト先RG504と異なるRGにある場合(言い換えれば、重複元データのある物理アドレスとゼロデータがライトされる物理アドレスとが異なるRGに属する場合)、パリティは生成される。
図30は、コレクションリード処理の流れを示す。
S3001で、リードプログラム411は、コレクション対象データ(復旧対象データ)に対応した重複元データがあるか否かを判断する。
S3001の判断結果が真の場合(S3001:Yes)、S3002で、リードプログラム411は、コレクション対象データに対応した重複元データをステージングする(重複元データをFMD320からキャッシュメモリ402に読み出す)。
S3003で、リードプログラム411は、コレクション処理を実行する。具体的には、例えば、S3002が実行された場合、リードプログラム411は、ステージングされた重複元データを、コレクション対象とする。また、S3002が実行されなかった場合、リードプログラム411は、コレクション対象データをステージングし、そのデータをコレクション対象とする。
S3004で、リードプログラム411は、コレクション対象とされたデータを復旧先FMD320にデステージする。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、計算機システムとして、プロセッサ部及び記憶部を有するサーバシステムが採用されてもよい。この場合、FMDは、サーバシステムの外部又は内部に用意されてもよい。サーバシステムは、FMDが接続されたインターフェース部、記憶部、及び、そのインターフェース部及び記憶部に接続されたプロセッサ部を有する。サーバシステムでは、ライト要求の送信元としての上位システムは、サーバシステムで実行されるアプリケーションや仮想サーバであってよい。
200…ストレージシステム

Claims (8)

  1. 記憶媒体と、記憶デバイスコントローラ部とを有する記憶デバイスと、
    前記記憶デバイスに接続されたストレージコントローラ部と、
    を備えた計算機システムにおいて、
    前記記憶デバイスの記憶デバイスコントローラ部は、
    仮想アドレスでアドレスを規定される仮想化アドレス空間を提供する仮想化機能と、
    アンマップコマンドで指定された仮想アドレスに対する前記記憶媒体での実アドレスのマッピングを解除するアンマップ機能と、
    を実行し、
    前記ストレージコントローラ部は、上位システムに提供する論理アドレスと、前記仮想アドレスに対応する物理アドレスとのマッピングを管理するマッピング機能を実行し、
    第1の論理アドレスをライト先とした第1のデータと第2の論理アドレスをライト先とした第2のデータとが重複する場合、前記ストレージコントローラ部は、
    前記第1の論理アドレスと前記第2の論理アドレスとが同じ物理アドレスにマッピングされるようにマッピングを変更し、
    前記アンマップ機能を機能させるアンマップコマンドを、前記変更前に第1の論理アドレスにマッピングされていた第1の物理アドレスに従う仮想アドレスを指定して前記記憶デバイスに送信する、
    計算機システム。
  2. 請求項1において、
    前記第1の論理アドレスと前記第2の論理アドレスとは、前記変更前に前記第1の物理アドレス及び前記変更前に第2の論理アドレスにマッピングされていた第2の物理アドレスとは異なる第3の物理アドレスにマッピングされ、
    前記アンマップ機能を機能させるアンマップコマンドを、前記第2の物理アドレスに従う仮想アドレスを指定して前記記憶デバイスに送信する
    ことを特徴とする計算機システム。
  3. 請求項2において、
    静的マッピング空間と、追記空間とを有し、
    前記第1及び/または第2の物理アドレスは、前記静的マッピング空間に属し、前記第3の物理アドレスは、前記追記空間に属する
    ことを特徴とする計算機システム。
  4. 請求項1において、
    前記第1の論理アドレスが、第2の論理アドレスにマッピングされている第2の物理アドレスにマッピングされるようにマッピングを変更する
    ことを特徴とする計算機システム。
  5. 記憶媒体と、記憶デバイスコントローラ部とを有する記憶デバイスと、
    前記記憶デバイスに接続されたストレージコントローラ部と、
    を備えた計算機システムにおいて、
    前記記憶デバイスの記憶デバイスコントローラ部は、
    前記記憶媒体の記憶容量を仮想化し、仮想アドレスでアドレスを規定される仮想化アドレス空間を提供する容量仮想化機能と、
    データを圧縮する圧縮機能と、
    を実行し、
    前記ストレージコントローラ部は、上位システムに提供する論理アドレスと、前記仮想アドレスに対応する物理アドレスとのマッピングを管理するマッピング機能を実行し、
    第1の論理アドレスをライト先とした第1のデータと第2の論理アドレスをライト先とした第2のデータとが重複する場合、前記ストレージコントローラ部は、
    前記第1の論理アドレスと前記第2の論理アドレスとが同じ物理アドレスにマッピングされるようにマッピングを変更し、
    前記圧縮機能を機能させる所定のデータのライトコマンドを、前記変更前に第1の論理アドレスにマッピングされていた第1の物理アドレスに従う仮想アドレスを指定して前記記憶デバイスに送信する、
    計算機システム。
  6. 請求項5において、
    前記所定データは、全ビット値が同じ値のデータである
    ことを特徴とする計算機システム。
  7. 記憶媒体と、記憶デバイスコントローラ部とを有する記憶デバイスと、
    前記記憶デバイスに接続されたストレージコントローラ部と、
    を備えた計算機システムにおける記憶制御方法において、
    前記記憶デバイスの記憶デバイスコントローラ部は、
    仮想アドレスでアドレスを規定される仮想化アドレス空間を提供する仮想化機能と、
    アンマップコマンドで指定された仮想アドレスに対する前記記憶媒体での実アドレスのマッピングを解除するアンマップ機能と、
    を実行し、
    前記ストレージコントローラ部は、上位システムに提供する論理アドレスと、前記仮想アドレスに対応する物理アドレスとのマッピングを管理するマッピング機能を実行し、
    第1の論理アドレスをライト先とした第1のデータと第2の論理アドレスをライト先とした第2のデータとが重複する場合、前記ストレージコントローラ部は、
    前記第1の論理アドレスと前記第2の論理アドレスとが同じ物理アドレスにマッピングされるようにマッピングを変更し、
    前記アンマップ機能を機能させるアンマップコマンドを、前記変更前に第1の論理アドレスにマッピングされていた第1の物理アドレスに従う仮想アドレスを指定して前記記憶デバイスに送信する、
    記憶制御方法。
  8. 記憶媒体と、記憶デバイスコントローラ部とを有する記憶デバイスと、
    前記記憶デバイスに接続されたストレージコントローラ部と、
    を備えた計算機システムにおける記憶制御方法において、
    前記記憶デバイスの記憶デバイスコントローラ部は、
    前記記憶媒体の記憶容量を仮想化し、仮想アドレスでアドレスを規定される仮想化アドレス空間を提供する容量仮想化機能と、
    データを圧縮する圧縮機能と、
    を実行し、
    前記ストレージコントローラ部は、上位システムに提供する論理アドレスと、前記仮想アドレスに対応する物理アドレスとのマッピングを管理するマッピング機能を実行し、
    第1の論理アドレスをライト先とした第1のデータと第2の論理アドレスをライト先とした第2のデータとが重複する場合、前記ストレージコントローラ部は、
    前記第1の論理アドレスと前記第2の論理アドレスとが同じ物理アドレスにマッピングされるようにマッピングを変更し、
    前記圧縮機能を機能させる所定のデータのライトコマンドを、前記変更前に第1の論理アドレスにマッピングされていた第1の物理アドレスに従う仮想アドレスを指定して前記記憶デバイスに送信する、
    計算機システムにおける記憶制御方法。
JP2018538974A 2016-09-13 2016-09-13 データ量削減機能を有する計算機システム、及び、記憶制御方法 Active JP6513888B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/076904 WO2018051392A1 (ja) 2016-09-13 2016-09-13 データ量削減機能を有する計算機システム、及び、記憶制御方法

Publications (2)

Publication Number Publication Date
JPWO2018051392A1 JPWO2018051392A1 (ja) 2019-01-24
JP6513888B2 true JP6513888B2 (ja) 2019-05-15

Family

ID=61618714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018538974A Active JP6513888B2 (ja) 2016-09-13 2016-09-13 データ量削減機能を有する計算機システム、及び、記憶制御方法

Country Status (3)

Country Link
US (1) US11086562B2 (ja)
JP (1) JP6513888B2 (ja)
WO (1) WO2018051392A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086562B2 (en) * 2016-09-13 2021-08-10 Hitachi, Ltd. Computer system having data amount reduction function and storage control method
CN109117383B (zh) * 2017-06-25 2022-09-20 慧荣科技股份有限公司 管理闪存模块的方法和闪存控制器
JP6608468B2 (ja) * 2018-01-26 2019-11-20 株式会社日立製作所 ストレージ装置及びその制御方法
US11663139B2 (en) * 2019-04-22 2023-05-30 SK Hynix Inc. Apparatus for transmitting map information in memory system
US11681459B2 (en) * 2021-04-23 2023-06-20 EMC IP Holding Company, LLC System and method for minimizing write-amplification in log-structured writes
CN113094003B (zh) * 2021-05-12 2022-12-09 湖南国科微电子股份有限公司 数据处理方法、数据存储装置及电子设备
KR20230100008A (ko) * 2021-12-28 2023-07-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128630A (en) * 1997-12-18 2000-10-03 International Business Machines Corporation Journal space release for log-structured storage systems
JP5331323B2 (ja) * 2007-09-26 2013-10-30 株式会社日立製作所 ストレージサブシステム及びその制御方法
US20120317084A1 (en) * 2011-06-13 2012-12-13 Beijing Z&W Technology Consulting Co., Ltd. Method and system for achieving data de-duplication on a block-level storage virtualization device
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
WO2013160942A2 (en) * 2012-04-25 2013-10-31 Hitachi, Ltd. File storage system and file cloning method
US9727245B2 (en) * 2013-03-15 2017-08-08 Avalanche Technology, Inc. Method and apparatus for de-duplication for solid state disks (SSDs)
WO2015068233A1 (ja) * 2013-11-07 2015-05-14 株式会社日立製作所 ストレージシステム
WO2015167493A1 (en) * 2014-04-30 2015-11-05 Hewlett-Packard Development Company, L.P. Duplicate data using cyclic redundancy check
US10747440B2 (en) * 2014-09-24 2020-08-18 Hitachi, Ltd. Storage system and storage system management method
US10013169B2 (en) * 2014-12-19 2018-07-03 International Business Machines Corporation Cooperative data deduplication in a solid state storage array
US9733836B1 (en) * 2015-02-11 2017-08-15 Violin Memory Inc. System and method for granular deduplication
US9710165B1 (en) * 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US10496626B2 (en) * 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US11086562B2 (en) * 2016-09-13 2021-08-10 Hitachi, Ltd. Computer system having data amount reduction function and storage control method

Also Published As

Publication number Publication date
US20190095132A1 (en) 2019-03-28
JPWO2018051392A1 (ja) 2019-01-24
US11086562B2 (en) 2021-08-10
WO2018051392A1 (ja) 2018-03-22

Similar Documents

Publication Publication Date Title
JP6513888B2 (ja) データ量削減機能を有する計算機システム、及び、記憶制御方法
US11886294B2 (en) Distributed storage system
CN107209714B (zh) 分布式存储系统及分布式存储系统的控制方法
JP5918906B2 (ja) ストレージ装置及びストレージ制御方法
GB2536514A (en) Storage device and method for controlling storage device
JP6429963B2 (ja) ストレージ装置及びストレージ装置の制御方法
JP6677740B2 (ja) ストレージシステム
JP6722216B2 (ja) データ量削減機能を有する計算機システム、及び、記憶制御方法
US20180307440A1 (en) Storage control apparatus and storage control method
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
US10114566B1 (en) Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots
WO2015173925A1 (ja) ストレージ装置
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
US8732422B2 (en) Storage apparatus and its control method
WO2015162766A1 (ja) ストレージシステム及び半導体記憶装置
JP7093799B2 (ja) ストレージシステムおよびリストア制御方法
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices
US20240176520A1 (en) Storage system and storage control method
JP7443404B2 (ja) ストレージシステム
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
JP2023001471A (ja) ストレージシステム、計算機システム及び制御方法
WO2018051446A1 (ja) オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180918

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190410

R150 Certificate of patent or registration of utility model

Ref document number: 6513888

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150