JP2018181171A - ストレージ制御装置、及びストレージ制御プログラム - Google Patents

ストレージ制御装置、及びストレージ制御プログラム Download PDF

Info

Publication number
JP2018181171A
JP2018181171A JP2017083352A JP2017083352A JP2018181171A JP 2018181171 A JP2018181171 A JP 2018181171A JP 2017083352 A JP2017083352 A JP 2017083352A JP 2017083352 A JP2017083352 A JP 2017083352A JP 2018181171 A JP2018181171 A JP 2018181171A
Authority
JP
Japan
Prior art keywords
data
information
block
data block
area
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
JP2017083352A
Other languages
English (en)
Other versions
JP6451769B2 (ja
Inventor
直浩 武田
Naohiro Takeda
直浩 武田
典秀 久保田
Norihide Kubota
典秀 久保田
與志仁 紺田
Yoshihito Konta
與志仁 紺田
利夫 菊池
Toshio Kikuchi
利夫 菊池
祐輔 倉澤
Yusuke Kurasawa
祐輔 倉澤
勇至 田中
Yuji Tanaka
勇至 田中
真理乃 梶山
Marino Kajiyama
真理乃 梶山
悠介 鈴木
Yusuke Suzuki
悠介 鈴木
祥成 篠▲崎▼
Yoshinari Shinozaki
祥成 篠▲崎▼
岳志 渡辺
Takashi Watanabe
岳志 渡辺
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017083352A priority Critical patent/JP6451769B2/ja
Priority to US15/955,236 priority patent/US10990535B2/en
Publication of JP2018181171A publication Critical patent/JP2018181171A/ja
Application granted granted Critical
Publication of JP6451769B2 publication Critical patent/JP6451769B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/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/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/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】データ毎に異なる情報が付与されるデータの重複排除をより簡易に実現すること。【解決手段】データD1と、データD1に対するチェック符号32aと、論理領域21内の位置に関する第1の情報32bとを含む第1のデータブロック30が物理領域22にある場合、データD1と、チェック符号42aと、論理領域21内の位置に関する第2の情報42bとを含む第2のデータブロック40を論理領域21に書き込むとき、第1のデータブロック30のメタ情報を用いて取得した、第1のデータブロック30がある物理領域22の位置を、第2のデータブロック40のメタ情報における物理領域22の位置として、第2のデータブロック40が書き込まれる論理領域21の位置に対応付け、第2のデータブロック40から取得される第2の情報42bを記憶部11に格納するストレージ制御装置10が提供される。【選択図】図1

Description

本発明は、ストレージ制御装置、及びストレージ制御プログラムに関する。
業務サーバなどのサーバ装置が扱う大量のデータは、例えば、記憶容量の大きなストレージ装置を有するストレージシステムにより管理される。ストレージシステムでは、論理的な記憶領域(論理領域)と、ストレージ装置に搭載される記憶装置の記憶領域(物理領域)とを利用してデータのI/O(Input/Output)が処理される。
記憶装置としては、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記録媒体や、複数の記録媒体を組み合わせて利用するRAID(Redundant Arrays of Inexpensive Disks)装置などがある。複数の記憶装置の物理領域を纏めて1つの仮想的な物理領域(ストレージプール/ディスクプール)として利用する技術もある。キャッシュを搭載するストレージ装置の場合、物理領域として一時的にキャッシュが利用される場合もある。
サーバ装置によるデータへのアクセスは論理領域に対して実施される。ある論理領域に対するデータの書き込みがあると、ストレージ装置は、データが書き込まれる論理領域のアドレス(論理アドレス)に対応する物理領域のアドレス(物理アドレス)にデータを書き込む。このとき、新たに書き込まれるデータと同じ内容の他のデータが物理領域に存在しても、書き込み先の論理アドレスと、他のデータの論理アドレスとが異なる場合、他のデータとは異なる物理アドレスにデータが書き込まれる。
HDDやSSDなどのハードウェア資源により提供される物理領域の容量は有限であるため、同じ内容のデータが複数の論理アドレスに書き込まれる場合に、これら複数の論理アドレスを同じ物理アドレスに対応付けて物理領域を有効利用する方法がある。この方法は重複排除と呼ばれる。
例えば、I/O処理の対象となるデータブロックを単位として重複排除を実施する場合、複数のデータブロックが同一である場合には重複排除の対象となる。一方、データブロック間で僅かでも異なるデータがある場合には対象から漏れる。
ストレージシステムでは、I/O処理時の誤り検出などに用いるチェックコードがユーザデータに付与されることがある。また、ユーザデータ毎に内容が異なる保証コードがユーザデータに付与される場合もある。この場合、保証コードの部分がユーザデータ毎に異なる内容となるため、同じ内容のユーザデータが存在しても重複排除の対象とならないリスクがある。このリスクに対処するため、ユーザデータと保証コードとを分けて保証コードを記憶領域に格納する方法が提案されている。
なお、複数の保証コードをまとめてセクタ長で管理すると共に、保証コードとデータとを対応付ける方法が提案されている。また、論理データブロック毎に保証コードを付加し、読み出し時にチェックするディスクアレイ装置が提案されている。このディスクアレイ装置では、重複排除の対象となるデータ間で保証コードが一致するように、一方のデータに固有の属性を、他のデータに固有の属性へと変更する方法が採用されている。
特開2014−225297号公報 特開2004−288078号公報 特開2009−80696号公報
データの内容に基づいて生成されるチェックコードなどの情報は、データの内容が同じであれば同じ内容になることが多い。また、上記の提案方式のようにデータに固有の属性を変更して保証コードの内容を一致させれば重複排除が可能になる。但し、重複排除の対象となるデータ間で保証コードが一致するように保証コードを変更する処理が生じる。
1つの側面によれば、本発明の目的は、データ毎に異なる情報が付与されるデータの重複排除をより簡易に実現することが可能なストレージ制御装置、及びストレージ制御プログラムを提供することにある。
一態様によれば、論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部と、データと、データに対するチェック符号と、論理領域内の位置に関する第1の情報とを含む第1のデータブロックが物理領域にある場合、データと、チェック符号と、論理領域内の位置に関する第2の情報とを含む第2のデータブロックを論理領域に書き込むとき、メタ情報のうち第1のデータブロックのメタ情報を用いて取得した、第1のデータブロックがある物理領域の位置を、メタ情報のうち第2のデータブロックのメタ情報における物理領域の位置として、第2のデータブロックが書き込まれる論理領域の位置に対応付け、第2のデータブロックから取得される第2の情報を記憶部に格納する制御部とを有する、ストレージ制御装置が提供される。
データ毎に異なる情報が付与されるデータの重複排除をより簡易に実現できる。
第1実施形態に係るストレージ制御装置の一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るサーバの機能を実現可能なハードウェアの一例を示したブロック図である。 第2実施形態に係るノードの機能を実現可能なハードウェア及びソフトウェアスタックの一例を示したブロック図である。 複数のノードに対するデータの分散配置について説明するための図である。 ストレージプールに書き込まれるユーザデータ及びメタ情報の管理方法について説明するための図である。 メタアドレス情報の構造及び内容について説明するための図である。 メタ情報の構造及び内容について説明するための図である。 メタアドレス情報及びメタ情報のキャッシュ及びストレージプールへの書き込み方法について説明するための図である。 書き込み処理の流れ(重複なしの場合)について説明するためのシーケンス図である。 書き込み処理の流れ(重複ありの場合)について説明するためのシーケンス図である。 読み出し処理の流れについて説明するためのシーケンス図である。 重複排除について説明するための図である。 BCCの構造及び内容について説明するための図である。 WRITE I/O時の処理の流れについて説明するためのフロー図である。 READ I/O時の処理の流れについて説明するためのフロー図である。 WRITE I/O時の処理のうち、データ分割、BCC付加、及びBIDの保存などについて説明するための図である。 WRITE I/O時の処理のうち、データ分割、BCC付加、及びBIDの保存などに関する処理の流れについて説明するためのフロー図である。 WRITE I/O時の処理のうち、サイズ変換などについて説明するための図である。 WRITE I/O時の処理のうち、サイズ変換などに関する処理の流れについて説明するためのフロー図である。 READ I/O時の処理のうち、サイズ変換などに関する処理の流れについて説明するためのフロー図である。 READ I/O時の処理のうち、BIDの復元などに関する処理の流れについて説明するためのフロー図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。第1実施形態は、重複排除機能を提供するストレージ制御装置に関する。
図1は、第1実施形態に係るストレージ制御装置の一例を示した図である。なお、図1に示したストレージ制御装置10は、第1実施形態に係るストレージ制御装置の一例である。
図1に示すように、ストレージ制御装置10は、記憶部11及び制御部12を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。制御部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのプロセッサである。制御部12は、例えば、記憶部11又は他のメモリに記憶されたプログラムを実行する。
記憶部11には、論理領域21の位置と物理領域22の位置とを対応付けるメタ情報11aが格納される。
物理領域22は、HDDやSSDなどの記録媒体や、複数の記録媒体を組み合わせたRAID装置などの記憶装置が有する物理的な記憶領域、或いは、複数の記憶装置が有する物理的な記憶領域を纏めたストレージプールなどである。論理領域21は、物理領域22の少なくとも一部に対応付けられる論理的な記憶領域である。
論理領域21の位置は、例えば、論理アドレスにより表現されうる。物理領域22の位置は、例えば、物理アドレスにより表現されうる。図1(A)のように、メタ情報11aは、論理アドレスL0、L1、L2と、物理アドレスP0、P1とを対応付ける。また、図1の例では、位置に関する情報11bが記憶部11に格納される。位置に関する情報11bは、論理領域21におけるデータの位置毎に異なる情報である。
図1の例では、データ31(データD1)と、データD1に対するチェック符号32aと、論理領域21内の位置(論理アドレスL1)に関する第1の情報32bとを含む第1のデータブロック30が物理領域22に存在している。チェック符号32aは、データ31に基づいて生成されるCRC(Cyclic Redundancy Check)などの符号である。第1の情報32bは、論理領域21にあるデータ31の位置に依存して変わる情報である。
なお、この段階ではメタ情報11aの論理アドレスL2に物理アドレスP1が対応付けられておらず、位置に関する情報11bのうち、論理アドレスL2にあるデータに対応する欄にL2の情報が登録されていない。
上記の状態で、データ41(データD1)と、チェック符号42aと、論理領域21内の位置L2に関する第2の情報42bとを含む第2のデータブロック40を論理領域21に書き込む場合、制御部12は、データD1に関する重複排除を実施する。
データ41は、データ31と同じ内容(データD1)のデータである。チェック符号42aは、データ41に基づいて生成されるCRCなどの符号である。データ31、41は同じデータD1であるから、チェック符号32a、42aは同じ符号になる。一方、第2の情報42bは、論理領域21にあるデータ41の位置に依存して変わる情報である。そのため、第1の情報32bと第2の情報42bとは異なる情報である。
上記の場合、第1のデータブロック30と第2のデータブロック40とは大部分(データ31、41、チェック符号32a、42a)が同じであるが、一部(第1の情報32b、第2の情報42b)が異なるデータブロックである。また、論理領域21におけるデータ41の位置を示す第2の情報42bは、データ41の読み出し時に利用される。
制御部12は、メタ情報11aを用いて、第2のデータブロック40が書き込まれる論理領域21の位置(論理アドレスL2)と、第1のデータブロック30がある物理領域22の位置(物理アドレスP1)とを対応付ける((A)の状態)。この段階で、2つの論理アドレスL1、L2が、データD1のある1つの物理アドレスP1に対応付けられ、データD1に対する重複排除が適用された状態になる。
但し、論理アドレスL2に対応付けられる物理アドレスP1には、第2の情報42bとは異なる第1の情報32bを含む第1のデータブロック30が格納されている。そのため、メタ情報11aに基づいて第2のデータブロック40を読み出すと、物理アドレスP1にある第1のデータブロック30が物理領域22から読み出される。そのため、制御部12は、第2のデータブロック40から第2の情報42bを取得し、取得した第2の情報42bを位置に関する情報11bとして記憶部11に格納する。
第2のデータブロック40を読み出す場合、制御部12は、物理領域22から第1のデータブロック30を読み出すと共に、記憶部11から取得した第2の情報42bを用いて第2のデータブロック40を復元する。例えば、制御部12は、第1のデータブロック30に含まれる第1の情報32bを削除し、データ31及びチェック符号32aに第2の情報42bを付加して第2のデータブロック40を復元する。
上記のように、論理領域21におけるデータの位置に依存して変わる情報が含まれるデータブロック間で重複排除を実施する際に、その情報を記憶部11に格納しておくことで、記憶部11にある情報を利用して元のデータブロックを復元することが可能になる。この方法では、データブロックの書き込み時に、データブロック間で異なる情報の書き換えがなく、メタ情報11aの更新により重複排除が完了する。そのため、重複排除の処理が簡易になると共に、重複排除の処理にかかる時間や負荷の軽減に寄与する。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態は、重複排除機能を有するストレージシステムに関する。
[2−1.システム]
図2を参照しながら、第2実施形態に係るストレージシステムについて説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。なお、図2に示したストレージシステム50は、第2実施形態に係るストレージシステムの一例である。
図2に示すように、ストレージシステム50は、サーバ51と、ノードブロック101、102とを有する。サーバ51は、例えば、ホストコンピュータである。ノードブロック101、102は、例えば、それぞれ1つの筐体に収容されるストレージ装置である。以下では、説明の都合上、ノードブロック101、102をそれぞれNodeBlock#0、#1と表記する場合がある。
ノードブロック101は、ノード111、113、及びドライブグループ112、114を有する。ノード111、113は、サーバ51から受け付けるI/O要求を処理するコンピュータである。なお、ノード111、113は、ストレージ制御装置の一例である。ドライブグループ112、114は、例えば、HDD、SSD、RAID装置などの記憶装置、或いは、複数の記憶装置を接続した記憶装置の集合である。
ノードブロック102は、ノード121、123、及びドライブグループ122、124を有する。ノード121、123は、サーバ51から受け付けるI/O要求を処理するコンピュータである。なお、ノード121、123は、ストレージ制御装置の一例である。ドライブグループ122、124は、例えば、HDD、SSD、RAID装置などの記憶装置、或いは、複数の記憶装置を接続した記憶装置の集合である。
以下では、説明の都合上、ノード111、113、121、123をそれぞれNode#0、#1、#2、#3と表記する場合や、ドライブグループ112、114、122、124をそれぞれDriveG#0、#1、#2、#3と表記する場合がある。
サーバ51とノード111、113、121、123とは、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを利用して接続される。ノードブロック101、102は、例えば、FC、iSCSI、LAN(Local Area Network)などを利用して接続される。ノード111、113、121、123とドライブグループ112、114、122、124とは、それぞれ、FC、iSCSI、SATA(Serial Advanced Technology Attachment)などを利用して接続される。なお、これらの接続方法は一例であり、上記の例に限定されない。
(サーバのハードウェア)
図3を参照しながら、サーバ51のハードウェアについて説明する。図3は、第2実施形態に係るサーバの機能を実現可能なハードウェアの一例を示したブロック図である。
図3に示すように、サーバ51は、メモリ51a、プロセッサ51b、及びホストI/F(Interface)51cを有する。
メモリ51aは、RAMなどの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。プロセッサ51bは、1つ又は複数のCPU、DSP、ASIC、FPGAなどの演算回路である。ホストI/F51cは、ホストコンピュータ(この例ではサーバ51)と他の機器(ストレージ装置やネットワーク機器)とを接続するためのHBA(Host Bus Adapter)や、通信インターフェースである。
プロセッサ51bは、入出力I/F51dに接続される。入出力I/F51dは、例えば、キーボード、マウス、タッチパッドなどの入力装置や、ELD(electroluminescent display)、LCD(liquid crystal display)などの表示装置である。プロセッサ51bは、例えば、メモリ51aに格納されたプログラムを実行する。
なお、プログラムは、予めメモリ51aに格納されるか、或いは、プロセッサ51bにより、光ディスク、磁気ディスク、半導体メモリなどの可搬記録媒体51eから読み出されてメモリ51aに格納される。サーバ51と、ノード111、113、121、123とはホストI/F51cを介して接続される。
(ノードのハードウェア及びソフトウェアスタック)
図4を参照しながら、ノード111のハードウェア及びソフトウェアスタック(基本機能)について説明する。図4は、第2実施形態に係るノードの機能を実現可能なハードウェア及びソフトウェアスタックの一例を示したブロック図である。なお、ノード111、113、121、123のハードウェア及びソフトウェアスタックは実質的に同じであるため、ノード113、121、123についての説明は省略する。
図4に示すように、ノード111は、メモリ111a、プロセッサ111b、ホストI/F111c、通信I/F111d、及び接続I/F111eを有する。
メモリ111aは、RAMなどの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。プロセッサ111bは、CPU、DSP、ASIC、FPGAなどの演算回路である。ホストI/F111cは、例えば、HBAである。図4の例では、プロセッサ111bを含む複数のプロセッサ、及びホストI/F111cを含む複数のホストI/Fがノード111に搭載されている。
通信I/F111dは、ノードブロック102との間の通信に利用される通信インターフェース(FCアダプタ、iSCSIアダプタなど)である。接続I/F111eは、ドライブグループ112と接続するための接続インターフェース(FCアダプタ、SATAアダプタなど)である。
プロセッサ111bは、例えば、メモリ111aに格納されたプログラムを実行する。プログラムは、予めメモリ111aに格納されるか、或いは、プロセッサ111bにより、光ディスク、磁気ディスク、半導体メモリなどの可搬記録媒体52から読み出されてメモリ111aに格納される。サーバ51とノード111とはホストI/F111cを介して接続される。ノード111とノードブロック102とは通信I/F111dを介して接続される。
ノード111により提供される基本機能は、主に、メモリ111a及びプロセッサ111bによるソフトウェアの処理により実現される。図4に示すように、ノード111は、基本機能の要素として、上位接続部201、I/O制御部202、重複排除部203、データ管理部204、及びデバイス管理部205を有する。なお、専用のハードウェアを利用して少なくとも一部の要素を実現する変形が可能である。
上位接続部201は、サーバ51からI/O要求(WRITE I/O要求、READ I/O要求)を受け付ける。I/O制御部202は、上位接続部201が受け付けたI/O要求に応じてI/O処理を制御する。重複排除部203は、重複データの有無を判定する。データ管理部204は、データの圧縮及び伸張、バッファリング、後述するメタ情報(論理アドレスと物理アドレスとを対応付ける情報)の管理などを実施する。デバイス管理部205は、ドライブグループ112に対するデータの読み書きを実施する。
(データの書き込み方法)
ここで、データの書き込み方法について説明する。
まず、図5を参照する。図5は、複数のノードに対するデータの分散配置について説明するための図である。
ストレージシステム50では、ノード間の負荷分散を図るために書き込み対象のデータ(WRITE I/Oデータ)が複数のデータ(実データ)に分割され、ノード111、113、121、123に分散配置される。そして、ノード111、113、121、123に分散配置された複数の実データは、それぞれドライブグループ112、114、122、124に書き込まれる。
なお、ストレージシステム50では、データが書き込まれる物理領域としてドライブグループ112、114、122、124を束ねたストレージプール206が利用される。ストレージプール206内に書き込まれるデータの位置は、ストレージプール206のアドレス(物理アドレス)により管理される。
図5の例では、0番目の論理領域(以下、LUN(Logical Unit Number)#0)のWRITE I/Oデータがストレージプール206に書き込まれる。WRITE I/Oデータは、例えば、実データD0、D1、…、D19に分割される。そして、Dk(k=p+4q;p=0,1,2,3、q=0,1,2,3,4)がNode#pに割り当てられる。この分散配置を適用することで、ノード111、113、121、123、及びドライブグループ112、114、122、124に対する負荷が分散される。
なお、ノード数が増加した場合にはデータの再配置が実施される。
次に、図6を参照する。図6は、ストレージプールに書き込まれるユーザデータ及びメタ情報の管理方法について説明するための図である。
図6(A)に示すように、実データD0をストレージプール206に書き込むとき、データ管理部204は、実データD0に参照情報207を付加してユーザデータ208を生成する。参照情報207は、SB(Super Block)207aと、参照LUN/LBA(Logical Block Addressing)情報207bとを含む。
SB207aは、例えば、32バイトに設定され、参照情報207の長さを示すヘッダ長(Header length)や実データD0のハッシュ値(Hash Value)などを含む。参照LUN/LBA情報207bは、例えば、8バイトに設定され、実データD0が格納される論理領域のLUN、及びその格納位置を示すLBAを含む。つまり、参照LUN/LBA情報207bは、実データD0の論理的な格納先に関する情報を含む。
実データD0と同じ内容の実データDxを書き込む場合、データ管理部204は、実データDxの格納先となる論理領域のLUN、及びその格納位置を示すLBAを含む参照LUN/LBA情報207bを生成する。また、データ管理部204は、実データDxの参照LUN/LBA情報207bを実データD0のユーザデータ208に追加する。
データ管理部204は、図6(B)のように、ユーザデータ208をメモリ111aに一時的に格納する。なお、ユーザデータ208の格納先はメモリ111aとは異なるキャッシュメモリ(非図示)でもよい。データ管理部204は、複数の実データのそれぞれに対応する複数のユーザデータをメモリ111aに追記し、所定量(例えば、24MB)のデータブロックを単位としてストレージプール206に書き出す制御を実施する。
以下では、説明の都合上、書き出されるデータの単位をRAIDユニットと呼ぶ場合がある。図6(C)の例では、ユーザデータUD#1、UD#2、…、US#mを結合したデータがストレージプール206に書き込まれている。なお、図6(C)の矢印(a)、(b)、(c)は、参照LUN/LBA情報207bと実データとの対応関係を示している。ストレージプール206には、ユーザデータ208の他に、後述するメタアドレス情報209及びメタ情報210が書き込まれる。
メタ情報210は、論理アドレスと物理アドレスとを対応付ける情報である。メタアドレス情報209は、ストレージプール206におけるメタ情報210の位置を示す情報である。メタアドレス情報209及びメタ情報210もRAIDユニット単位でストレージプール206に書き込まれる。
メタアドレス情報209が書き込まれる領域は、例えば、ストレージプール206の先頭から所定範囲に予め確保される。他方、ユーザデータ208及びメタ情報210は、RAIDユニット単位のデータが集まったタイミングでストレージプール206に順次追記される。つまり、図6(C)に示すように、メタアドレス情報209がストレージプール206の所定範囲(この例では先頭から所定範囲)に並んで書き込まれ、ユーザデータ208及びメタ情報210は混在する。
メタアドレス情報209は、図7のような構造及び内容を有する。図7は、メタアドレス情報の構造及び内容について説明するための図である。
図7に示すように、メタアドレス情報209は、ストレージプール206の識別情報(Disk Pool No.)を含む。また、メタアドレス情報209は、対応するメタ情報210のRAIDユニットを特定するための識別情報(RAID Unit No.)を含む。また、メタアドレス情報209は、対応するメタ情報210があるRAIDユニット内の位置情報(RAID Unit Offset LBA)を含む。メタアドレス情報209を参照することで、ストレージプール206に格納されているメタ情報210を検索することができる。
メタ情報210は、図8に示すような構造及び内容を有する。図8は、メタ情報の構造及び内容について説明するための図である。
図8に示すように、メタ情報210は、論理アドレス情報210a、物理アドレス情報210b、及びBID領域210c(破線枠内)などを含む。
論理アドレス情報210aには、ユーザデータ208が格納される論理領域のLUN及びその格納位置を示すLBAが含まれる。また、物理アドレス情報210bには、ユーザデータ208が格納されるストレージプール206の識別情報(Disk Pool No.)、そのストレージプール206におけるRAIDユニットの識別情報(RAID Unit No.)、そのRAIDユニット内の位置情報(RAID Unit LBA)が含まれる。BID領域210cは、BCC(Block Check Code)に含まれるBID(Block Identifier)を格納するために確保される領域である。
メタアドレス情報209及びメタ情報210は、図9に示す方法でメモリ111aにキャッシュされ、RAIDユニット単位でストレージプール206に書き込まれる。図9は、メタアドレス情報及びメタ情報のキャッシュ及びストレージプールへの書き込み方法について説明するための図である。
図9に示すように、メモリ111aには、キャッシュ領域として、メタアドレス情報209が一時的に格納されるメタアドレスキャッシュ211と、メタ情報210が一時的に格納されるメタ情報キャッシュ212とが設定される。メタアドレスキャッシュ211には、メタアドレス情報209が蓄積される。メタ情報キャッシュ212には、メタ情報210が蓄積される。なお、メタアドレスキャッシュ211及びメタ情報キャッシュ212のサイズは、RAIDユニットのサイズ(例えば、24MB)に設定される。
メタ情報キャッシュ212のデータ(メタ情報210)がキャッシュフル(充填状態)になると、そのデータはストレージプール206へ書き込まれ、メタ情報キャッシュ212はリセットされる。つまり、RAIDユニット分のメタ情報210が集まると、ストレージプール206への書き込みが実施される。
例えば、ストレージプール206内の17番目にあるRAIDユニット(RU#17)までが格納済の場合、18番目のRAIDユニット(RU#18)にメタ情報キャッシュ212のデータが書き込まれる。
この場合、RU#18にメタ情報210が格納されていることを示すメタアドレス情報209が生成され、メタアドレスキャッシュ211に格納される。
メタアドレスキャッシュ211のデータ(メタアドレス情報209)がキャッシュフル(充填状態)になると、そのデータはストレージプール206に書き込まれ、メタアドレスキャッシュ211はリセットされる。つまり、RAIDユニット分のメタアドレス情報209が集まると、ストレージプール206への書き込みが実施される。
なお、メタアドレスキャッシュ211のデータは、メタアドレス情報209用に確保されているRAIDユニット(例えば、ストレージプール206の先頭から所定範囲の領域)のうち空きのRAIDユニットに書き込まれる。
(書き込み処理の流れ)
ノード111における書き込み処理の流れは図10及び図11のようになる。
まず、図10を参照する。図10は、書き込み処理の流れ(重複なしの場合)について説明するためのシーケンス図である。
(S101)I/O制御部202は、上位接続部201を介してサーバ51から実データの書き込み要求(WRITE要求)を受け付け、実データと共にWRITE要求を重複排除部203へと出力する。
(S102)重複排除部203は、WRITE要求の対象となる実データが重複排除の対象になるか否かを判定する。例えば、重複排除部203は、メモリ111a又はストレージプール206にあるユーザデータ208のSB207aからハッシュ値を抽出し、WRITE要求の対象となる実データのハッシュ値と比較する。ハッシュ値が一致する場合、重複排除部203は、重複する実データがあると判定する。図10の例では重複排除部203により重複がないと判定される。
(S103)重複排除部203は、データ管理部204にユーザデータ208を新規に書き込むように依頼する(UD WRITE)。
(S104)データ管理部204は、WRITE要求の書き込み先となるRAIDユニットの識別情報(RU#)をデバイス管理部205に要求する。
(S105)デバイス管理部205は、WRITE要求の書き込み先となるRAIDユニットの識別情報(RU#)及びそのRAIDユニットがあるストレージプール206の識別情報(DP#)をデータ管理部204へと出力する。
(S106)データ管理部204は、WRITE要求の対象となる実データを圧縮する。なお、非圧縮の状態でストレージプール206へ書き込む設定に変形してもよい。
(S107、S108)データ管理部204は、デバイス管理部205から出力されたDP#及びRU#を用いて参照LUN/LBA情報207bを生成し、SB207aと組み合わせて参照情報207を生成する。そして、データ管理部204は、圧縮後の実データに参照情報207を組み合わせたユーザデータ208をメモリ111aに格納する(バッファリング)。
(S109)データ管理部204は、メモリ111aにあるユーザデータ208をRAIDユニット単位でストレージプール206に書き出せるか否かを判定する。書き出せる場合にはストレージプール206への書き出し処理が実行される。図10の例では、メモリ111aにあるユーザデータ208のデータ量がRAIDユニットの単位に達しておらず、書き出さないと判定されている(NO)。
(S110、S111)データ管理部204は、デバイス管理部205から出力されたDP#及びRU#を重複排除部203へ出力する。DP#及びRU#を受信した重複排除部203は、ユーザデータ208の書き込み先及び書き込み完了を認識し、データ管理部204に対してメタ情報210の更新を要求する。
(S112)データ管理部204は、デバイス管理部205から出力されたDP#及びRU#に基づいてメタ情報210を更新する。
(S113、S114)データ管理部204は、バッファリングしたユーザデータ208に対応するメタ情報210の書き込み先となるRAIDユニットの識別情報(RU#)をデバイス管理部205に要求する。この要求を受信したデバイス管理部205は、メタ情報210の書き込み先となるストレージプール206の識別情報(DP#)及びRAIDユニットの識別情報(RU#)をデータ管理部204に出力する。
(S115、S116)データ管理部204は、バッファリングしたユーザデータ208に対応するメタ情報210をメタ情報キャッシュ212(メモリ111a)に格納する(バッファリング)。そして、データ管理部204は、メタ情報キャッシュ212がキャッシュフルか否かを判定する(書き出し判定)。キャッシュフルの場合にはメタ情報キャッシュ212のデータをストレージプール206へ書き出す制御が実施される。図10の例では、書き出さないと判定されている(NO)。
(S117、S118)データ管理部204は、デバイス管理部205から受信したDP#及びRU#を用いてメタアドレス情報209を更新する。そして、データ管理部204は、WRITE要求に対する応答としてユーザデータ208の書き込み完了をI/O制御部202に通知する。I/O制御部202は、上位接続部201を介してサーバ51に書き込み完了の応答を返す。S118の処理が完了すると、図10に示した一連の処理は終了する。
次に、図11を参照する。図11は、書き込み処理の流れ(重複ありの場合)について説明するためのシーケンス図である。
(S121)I/O制御部202は、上位接続部201を介してサーバ51から実データの書き込み要求(WRITE要求)を受け付け、実データと共にWRITE要求を重複排除部203へと出力する。
(S122)重複排除部203は、WRITE要求の対象となる実データが重複排除の対象になるか否かを判定する。
例えば、重複排除部203は、メモリ111a又はストレージプール206にあるユーザデータ208のSB207aからハッシュ値を抽出し、WRITE要求の対象となる実データのハッシュ値と比較する。ハッシュ値が一致する場合、重複排除部203は、重複する実データがあると判定する。図11の例では重複排除部203により重複があると判定される。
(S123)重複排除部203は、データ管理部204に対して重複のあるユーザデータ208の書き込みを指示する(UD WRITE)。
(S124)データ管理部204は、WRITE要求の対象となる実データと同じデータを含むユーザデータ208をストレージプール206から読み出す処理をデバイス管理部205に要求する(READ要求)。
なお、読み出し対象のユーザデータ208がメモリ111aにある場合、データ管理部204は、デバイス管理部205へのREAD要求を省略してメモリ111aからユーザデータ208を読み出してもよい。
(S125)デバイス管理部205は、READ要求に応じてユーザデータ208を読み出し、読み出したユーザデータ208をデータ管理部204に出力する。
(S126)データ管理部204は、デバイス管理部205から受信したユーザデータ208に含まれるSB207aのハッシュ値と、WRITE要求の対象となる実データから生成されるハッシュ値とを比較する。ハッシュ値が一致しない場合、データ管理部204は、エラー処理を実行する。図11の例ではハッシュ値が一致している。
(S127)データ管理部204は、WRITE要求の対象となる実データに対応する参照LUN/LBA情報207bを生成し、デバイス管理部205から受信したユーザデータ208の参照情報207に追加する(参照情報更新)。
(S128)データ管理部204は、WRITE要求の書き込み先となるRAIDユニットの識別情報(RU#)をデバイス管理部205に要求する。
(S129)デバイス管理部205は、WRITE要求の書き込み先となるRAIDユニットの識別情報(RU#)及びそのRAIDユニットがあるストレージプール206の識別情報(DP#)をデータ管理部204へと出力する。
(S130、S131)データ管理部204は、デバイス管理部205から出力されたDP#及びRU#を重複排除部203へ出力する。DP#及びRU#を受信した重複排除部203は、ユーザデータ208の書き込み先及び書き込み完了を認識し、データ管理部204に対してメタ情報210の更新を要求する。
(S132)データ管理部204は、デバイス管理部205から出力されたDP#及びRU#に基づいてメタ情報210を更新する。
(S133、S134)データ管理部204は、バッファリングしたユーザデータ208に対応するメタ情報210の書き込み先となるRAIDユニットの識別情報(RU#)をデバイス管理部205に要求する。この要求を受信したデバイス管理部205は、メタ情報210の書き込み先となるストレージプール206の識別情報(DP#)及びRAIDユニットの識別情報(RU#)をデータ管理部204に出力する。
(S135、S136)データ管理部204は、バッファリングしたユーザデータ208に対応するメタ情報210をメタ情報キャッシュ212(メモリ111a)に格納する(バッファリング)。そして、データ管理部204は、メタ情報キャッシュ212がキャッシュフルか否かを判定する(書き出し判定)。キャッシュフルの場合にはメタ情報キャッシュ212のデータをストレージプール206へ書き出す制御が実施される。図11の例では、書き出さないと判定されている(NO)。
(S137、S138)データ管理部204は、デバイス管理部205から受信したDP#及びRU#を用いてメタアドレス情報209を更新する。そして、データ管理部204は、WRITE要求に対する応答としてユーザデータ208の書き込み完了をI/O制御部202に通知する。I/O制御部202は、上位接続部201を介してサーバ51に書き込み完了の応答を返す。S138の処理が完了すると、図11に示した一連の処理は終了する。
(読み出し処理の流れ)
ノード111における読み出し処理の流れは図12のようになる。図12は、読み出し処理の流れについて説明するためのシーケンス図である。
(S141)I/O制御部202は、上位接続部201を介してサーバ51から実データの読み出し要求(READ要求)を受け付け、READ要求をデータ管理部204へと出力する。
(S142、S143)データ管理部204は、メタ情報210があるストレージプール206及びRAIDユニットなどの情報を含むメタアドレス情報209を探索する。そして、データ管理部204は、メタアドレス情報209をデバイス管理部205に通知してメタ情報210の読み出しを要求する(READ要求)。
(S144)デバイス管理部205は、データ管理部204から受け付けたREAD要求に応じてメタ情報210をストレージプール206から読み出し、データ管理部204に出力する。なお、該当するメタ情報210がメタアドレスキャッシュ211にある場合、デバイス管理部205は、メタアドレスキャッシュ211から読み出したメタ情報210をデータ管理部204に出力する。
(S145、S146)データ管理部204は、メタ情報210を解析し、I/O制御部202から受け付けたREAD要求の対象となるデータがあるストレージプール206、RAIDユニット、及び物理アドレスなどを含む物理アドレス情報210bを特定する。そして、データ管理部204は、物理アドレス情報210bをデバイス管理部205に通知してユーザデータ208の読み出しを要求する(READ要求)。
(S147)デバイス管理部205は、データ管理部204から受け付けたREAD要求に応じてユーザデータ208をストレージプール206から読み出し、データ管理部204に出力する。なお、該当するユーザデータ208がメモリ111aにキャッシュされている場合、デバイス管理部205は、メモリ111aから読み出したユーザデータ208をデータ管理部204に出力する。
(S148、S149)ユーザデータ208が圧縮されている場合、データ管理部204は、ユーザデータ208を伸張する。また、データ管理部204は、ユーザデータ208に付与されている参照情報207を削除して実データを復元する。
(S150)データ管理部204は、READ要求に対する応答として、復元した実データをI/O制御部202に出力する。I/O制御部202は、上位接続部201を介してサーバ51に実データを出力する。S150の処理が完了すると、図12に示した一連の処理は終了する。
上記の説明では、説明の都合上、ノード111の基本機能をソフトウェアスタックとして表現し、ソフトウェアスタックの要素を単位としてデータの書き込み及び読み出しの動作について述べた。また、ユーザデータ208、メタ情報210がRAIDユニット単位でストレージプール206に追記書き込みされる仕組みについて説明してきた。なお、メタアドレス情報209の書き込みは上書きでもよい。
上記のような仕組みを適用することで、ストレージプール206を形成する記録媒体への書き込み頻度を低減するシステムの実現に寄与し、SSDなどの書き込み回数に制約のある記録媒体を利用する際のコスト低減や運用効率の向上などに繋がると期待されうる。但し、上述したストレージシステム50は、第2実施形態の技術を適用可能なシステムの一例であり、一部の機能を省略する変形や他の機能を追加する変形も可能である。
(補足:重複排除について)
ここで、図13を参照しながら、重複排除の機能(重複排除部203)について、さらに説明する。図13は、重複排除について説明するための図である。なお、図13の例では、説明の都合上、論理アドレス情報210aと物理アドレス情報210bとを対応付けるメタ情報210の集合を表形式(メタ情報テーブル)で表現している。
図13(A)において、LUN#0のメタ情報テーブルでは、LUN#0の論理アドレスlgAdd#00、#01と、ストレージプール206の物理アドレスphAdd#0、#1とがそれぞれ対応付けられている。LUN#1のメタ情報テーブルでは、LUN#1の論理アドレスlgAdd#10、#11と、ストレージプール206の物理アドレスphAdd#0、#2とがそれぞれ対応付けられている。
LUN#0、#1のメタ情報テーブルを参照すると、論理アドレスlgAdd#00、#10に同じ物理アドレスphAdd#0が対応付けられている。つまり、物理アドレスphAdd#0にあるデータについて重複排除が適用されており、論理アドレスlgAdd#00、#10のデータを読み出す場合、いずれの場合も物理アドレスphAdd#0のデータが読み出される。
上記の状態で、(a)のように、論理アドレスlgAdd#00に新たなデータが書き込まれると(新データWRITE)、重複排除部203は、(B)のように、LUN#1のメタ情報テーブルを更新する。例えば、新たなデータの書き込み先が物理アドレスphAdd#10である場合、重複排除部203は、論理アドレスlgAdd#00を物理アドレスphAdd#10に対応付ける。デバイス管理部205は、新たなデータをストレージプール206の物理アドレスphAdd#10に書き込む。
上記のように、メタ情報テーブル(メタ情報210の集合)を書き換えることで重複排除を実施し、新データWRITEの際に、重複データの参照元となる論理アドレス(論理アドレスlgAdd#10)があるデータを残すことで書き込み処理を効率化できる。上記の方法を適用すると、例えば、ストレージプール206に重複データを一旦書き込んだ後で削除する場合に比べ、ストレージプール206への書き込み回数を減らすことができ、SSDなどの書き込み回数に制約のある記録媒体の長寿命化に寄与する。
以上、第2実施形態に係るストレージシステムについて説明した。
[2−2.BCCの管理]
上述したストレージシステム50では、I/O処理の単位となるブロック毎にデータの誤りをチェックするためのチェックコード(BCC)が付与される。BCCを付与することで、ノード111内で実施するコピー処理や、ストレージプール206に対するREAD/WRITE処理の際に生じうるデータの誤りをチェックできるようになる。
I/O処理の単位となるブロックのサイズは、例えば、ストレージプール206を形成する記録媒体(HDDやSSDなど)のセクタサイズ(例えば、512バイト、4096バイト)を基準に設定される。I/O処理の対象となるデータのサイズが512バイト、BCCのサイズが8バイトの場合、BCCを含むデータブロックは520バイトブロックになる。以下、サイズがXバイトのデータブロックをXバイトブロックと呼ぶ場合がある。
BCCは、図14のような構造及び内容を有する。図14は、BCCの構造及び内容について説明するための図である。図14には、複数の512バイトブロックにそれぞれ8バイトのBCCを付与して複数の520バイトブロックを生成する方法が例示されている。WRITE I/O処理の対象となるデータ(例えば、管理単位となる8KBブロック)は、512バイトブロックに分割され、図14に示すようにBCCが付与される。そして、520バイトブロックの集合が実データ(図14の例では実データD0)となる。
BCCは、ブロックCRC213a及びBID213bを有する。ブロックCRC213aの領域には、例えば、付与先の512バイトブロックから生成される16ビットのCRCが格納される。BID213bは、論理領域内のデータ位置をチェックするための情報を含む。BID213bの領域は、LBAに対応するカウント値(LBAをBig Endianで表現した場合の下位32ビットに相当)が格納されるカウンタ領域(後16ビット)と、カウント値以外のデータが格納される非固有データ領域(前16ビット)とを有する。
上記の非固有データ領域のデータは、8KBブロックに含まれる520バイトブロックに共通のデータである。他方、上記のカウント値は、512バイトブロックのデータ位置に応じて異なる。そのため、上記のカウント値は、個々の512バイトブロックに固有のデータとなる。また、上記のカウント値は、8KBブロックの先頭にある520バイトブロックのカウント値を基準に、順次1ずつインクリメントされた値になる。
例えば、先頭の520バイトブロックのBCCにあるカウント値がnの場合、次の520バイトブロックのBCCにあるカウント値は(n+1)になる。つまり、先頭の520バイトブロックを0番目として、m番目の520バイトブロックのBCCにあるカウント値は(n+m)になる。そのため、先頭の520バイトブロックのBCCにあるカウント値が分かれば、m番目の520バイトブロックのBCCにあるカウント値を計算により復元することができる。
上記のように、512バイトブロックに付与されるBCCは、その512バイトブロックに固有のデータを含む。そのため、BCCを付与後のデータブロック(520バイトブロック)を対象に重複排除を実施すると、重複排除の対象となるデータブロックが少なくなる。そのため、重複排除部203は、512バイトブロック、或いは、520バイトブロックのうちBID213b以外のデータを対象に重複排除を実施する。そして、重複排除部203は、BID213bをメタ情報210のBID領域210cに格納する。
なお、上述したメタ情報210は、例えば、8KBブロック毎に生成される。重複排除部203は、WRITE I/O処理時に重複排除を実施するとき、8KBブロックの先頭に位置する520バイトブロックのBCCにあるBID213bを抽出し、抽出したBID213bをメタ情報210のBID領域210cに格納する。
READ I/O処理時には、重複排除部203が、メタ情報210のBID領域210cからBID213bを読み出し、読み出したBID213bを利用して、8KBブロックの先頭以外に位置する520バイトブロックのBCCを復元する。8KBブロックの先頭以外に位置する520バイトブロックのカウント値は計算により復元することができる。そのため、重複排除部203は、計算により復元したカウント値と、読み出したBID213bのブロックCRC213a及びBID213bの非固有データ領域とを用いて各520バイトブロックのBCCを復元する。
上記のように、8KBブロックの先頭に位置する520バイトブロックのBID213bだけをメタ情報210に格納し、他の520バイトブロックのBCCを計算により復元することで、メモリ111aの使用量を節約することができる。また、メタ情報210に格納することでBIDの管理が容易になる。
なお、説明の都合上、8KBなどのデータサイズを例示しているが、データサイズの設定は変形可能である。また、上記の説明では実データD0に対応する512バイトブロックのBCCについて述べたが、実データD0に参照情報207を付与したユーザデータ208についても上記と同様の方法でBCCの管理及び重複排除を実施することができる。
ところで、上記のように512バイトブロックにBCCが付加されると、HDDやSSDなどの記録媒体が採用するフォーマットのセクタサイズと、書き込み対象のデータサイズ(520バイト)とに差が生じ、アクセスに支障が生じうる。そのため、ストレージシステム50では、データ管理部204により520バイトブロックの集合を512バイトブロックの集合にサイズ変換する処理が実行される。
上記のサイズ変換により、記録媒体のセクタサイズと、書き込み対象のデータサイズ(512バイト)との差が解消され、ストレージプール206を形成する記録媒体へのアクセスに支障が生じるリスクを回避することができる。以下では、上述したBCCの管理及びサイズ変換の処理を含むWRITE I/O時の処理及びREAD I/O時の処理について、さらに説明する。
(WRITE I/O時の処理)
図15を参照しながら、WRITE I/O時の処理について、さらに説明する。図15は、WRITE I/O時の処理の流れについて説明するためのフロー図である。なお、ここでは一例としてノード111による処理について説明する。
(S201)上位接続部201は、サーバ51からWRITE I/O要求を受け付け、WRITE I/O処理の対象となるデータ(WRITE I/Oデータ)に含まれる複数の8KBブロックをそれぞれ512バイト単位で分割して複数の512バイトブロックを生成する。また、上位接続部201は、複数の512バイトブロックのそれぞれにBCCを付加して520バイトブロックを生成する(図14を参照)。
(S202)I/O制御部202は、上位接続部201により生成された520バイトブロックの書き込みを重複排除部203に要求する(WRITE I/O Req.)。
(S203)重複排除部203は、書き込み対象の520バイトブロックからBIDを抽出し、その520バイトブロックに対応する8KBブロックの格納位置を示すメタ情報210のBID領域210c(図8を参照)に、抽出したBIDを保存する。このとき、重複排除部203は、8KBブロックの先頭にある512バイトブロックに対応するBIDをBID領域210cに保存する。8KBブロックが重複排除の対象である場合、重複排除部203は、メタ情報210を用いて重複排除を実施する(図13を参照)。
(S204)データ管理部204は、書き込み対象の8KBブロックから生成される複数の520バイトブロックを複数の512バイトブロックに変換する(サイズ変換)。例えば、データ管理部204は、複数の520バイトブロックを結合したビット列から512バイト単位でデータブロックを切り出して複数の512バイトブロックを生成する。
(S205)デバイス管理部205は、データ管理部204により生成された複数の512バイトブロックをストレージプール206に書き込む。なお、書き込み対象の8KBブロックをキャッシュする場合、複数の512バイトブロックは、一旦、メモリ111aに書き込まれる。S205の処理が完了すると、図15に示した一連の処理は終了する。
(READ I/O時の処理)
図16を参照しながら、READ I/O時の処理について、さらに説明する。図16は、READ I/O時の処理の流れについて説明するためのフロー図である。なお、ここでは一例としてノード111による処理について説明する。
(S211)デバイス管理部205は、ストレージプール206から読み出し対象の8KBブロックに対応する複数の512バイトブロックを読み出す。
(S212)データ管理部204は、デバイス管理部205により読み出された複数の512バイトブロックをそれぞれ520バイトブロックに変換する(サイズ変換)。例えば、データ管理部204は、複数の512バイトブロックを結合したビット列から520バイト単位でデータブロックを切り出して複数の520バイトブロックを生成する。
(S213)重複排除部203は、読み出し対象の8KBブロックに対応するメタ情報210のBID領域210cからBIDを取得する。メタ情報210のBID領域210cから取得されるBIDは、8KBブロックの先頭に位置する512バイトブロックに対応するBIDである。そのため、重複排除部203は、取得したBIDに基づいて8KBブロックの先頭以外に位置する512バイトブロックに対応するBIDを復元する。
例えば、重複排除部203は、BID領域210cから取得したBIDのカウンタ領域にあるカウンタ値を1つずつインクリメントしたBIDを生成し、8KBブロック内の位置に応じたBIDを各520バイトブロックのBCCに設定する。8KBブロックの先頭を0番目とする場合、先頭からm番目の位置にある512バイトブロックに対応するBIDは、BID領域210cから取得されるBIDのカウント値にmを加えた値になる。
(S214)I/O制御部202は、重複排除部203により復元された520バイトブロックを上位接続部201に転送する。
(S215)上位接続部201は、I/O制御部202から受け付けた520バイトブロックのBCCを利用して、512バイトブロックの誤りをチェックする(BCCチェック)。そして、上位接続部201は、520バイトブロックからBCCを削除して512バイトブロックを復元し、復元した512バイトブロックを結合した8KBブロックをサーバ51に送信する。S215の処理が完了すると、図16に示した一連の処理は終了する。
なお、図15及び図16の説明では、説明の都合上、データの圧縮・伸張や、参照情報207の付加・削除などの処理について説明を省略した。データ圧縮・伸張を含む処理の流れについては、後段においてさらに説明する。他方、参照情報207の付与・削除については、既に示した図6及び図10から図12の説明を参照されたい。
(WRITE:データ分割、BCC付加、及びBIDの保存など)
ここで、図17及び図18を参照しながら、WRITE I/O時の処理のうち、データ分割、BCC付加、及びBIDの保存などの処理について、さらに説明する。
図17は、WRITE I/O時の処理のうち、データ分割、BCC付加、及びBIDの保存などについて説明するための図である。図18は、WRITE I/O時の処理のうち、データ分割、BCC付加、及びBIDの保存などに関する処理の流れについて説明するためのフロー図である。
図17に示すように、サーバ51からWRITE I/Oデータを取得すると、上位接続部201は、WRITE I/Oデータを8KBブロックに分割する。このとき、WRITE I/Oデータのサイズによっては、8KBのサイズに満たないデータブロックが生じうる(データD3の部分)。このような場合、上位接続部201は、データブロックが8KBとなるようにパディング処理を実行する。例えば、上位接続部201は、8KBのサイズになるまでデータD3の後にビット値0を追加する。
8KBブロックを生成すると、上位接続部201は、8KBブロックを複数の512バイトブロックに分割する。また、上位接続部201は、複数の512バイトブロックのそれぞれにBCCを付加して520バイトブロックを生成する。重複排除部203は、8KBブロックの先頭に対応する520バイトブロックのBID213bを抽出し、メタ情報210のBID領域210cに保存する。そして、サイズ変換により520バイトブロックから生成される512バイトブロックがストレージプール206に書き込まれる。
上記のようなデータ分割、BCC付加、及びBIDの保存などの処理は、例えば、図18の流れに沿って実行される。なお、図18に示した処理は、上述したS201、203の処理に対応する。
(S221、S222)上位接続部201は、WRITE I/Oデータを8KB単位に分割して複数の8KBブロックを生成する。8KBブロックの一部にデータがない領域(未割り当て領域)がある場合(図17のデータD3の部分を参照)、上位接続部201は、未割り当て領域にビット値0を充填するパディング処理を実行する。
(S223)上位接続部201は、処理対象の8KBブロックを選択する。そして、上位接続部201は、選択した8KBブロックを複数の512バイトブロックに分割し、各512バイトブロックにBCCを付加して520バイトブロックを生成する。
(S224)重複排除部203は、上位接続部201により選択された8KBブロックが重複排除の対象であるか否かを判定する。
例えば、重複排除部203は、選択された8KBブロックのハッシュ値を計算し、計算したハッシュ値と同じハッシュ値を参照情報207(SB207a)に含むユーザデータ208を探索する。ハッシュ値が同じユーザデータ208がある場合、重複排除部203は、選択された8KBブロックが重複排除の対象であると判定する。
選択された8KBブロックが重複排除の対象である場合、処理はS225へと進む。一方、選択された8KBブロックが重複排除の対象でない場合、処理はS227へと進む。
(S225)重複排除部203は、8KBブロックの先頭にある512バイトブロックに対応する520バイトブロック(先頭520バイトブロック)のBCCからBID213bを抽出する。そして、重複排除部203は、抽出したBID213bを、選択された8KBブロックに対応するメタ情報210のBID領域210cに格納する。
(S226)重複排除部203は、各520バイトブロックのBCCにあるBIDを初期化する。例えば、重複排除部203は、各520バイトブロックのBCCにあるBIDをビット値0で書き換える。
(S227、S228)重複排除部203は、選択された8KBブロック(該当8KBブロック)のデータをデータ管理部204へ出力する。上位接続部201は、WRITE I/Oデータから生成された全ての8KBブロックを選択し終えたか否かを判定する。全ての8KBブロックを選択し終えている場合、図18に示した一連の処理は終了する。一方、未選択の8KBブロックがある場合、処理はS223へと進む。
(WRITE:サイズ変換など)
次に、図19及び図20を参照しながら、WRITE I/O時の処理のうち、サイズ変換などの処理について、さらに説明する。
図19は、WRITE I/O時の処理のうち、サイズ変換などについて説明するための図である。図20は、WRITE I/O時の処理のうち、サイズ変換などに関する処理の流れについて説明するためのフロー図である。
これまでは、説明の都合上、8KBブロックの圧縮について説明を省略していた。しかし、8KBブロックを圧縮する場合も上記と同様に処理を進めることができる。例えば、8KBブロックから上述した方法で複数の520バイトブロックを生成すると、図19に示すように、8320バイト(520バイト×16)のデータが得られる。
この場合、記録媒体のセクタサイズにデータサイズを合わせるため、データ管理部204は、(A)のように、複数の520バイトブロックを512バイト単位で分割すると共に、パディング処理により未割り当て領域にビット値0を充填する。この処理により、17個の512バイトブロックが得られる。他方、8KBブロックを圧縮する場合、(B)に示すように、データ管理部204は、圧縮後のデータを512バイト単位で分割して複数の512バイトブロックを生成する。
上記のようなサイズ変換などの処理は、例えば、図20の流れに沿って実行される。なお、図20に示した処理は、上述したS204の処理に対応する。
(S231)データ管理部204は、重複排除部203から出力された8KBブロックの圧縮を実施する。このとき、データ管理部204は、8KBブロックの圧縮率を検出する。圧縮率は、例えば、圧縮前のデータサイズと圧縮後のデータサイズとの比率である。圧縮によりデータサイズが1/2になった場合、圧縮率は50%である。
(S232)データ管理部204は、圧縮率が100%より大きいか否かを判定する。つまり、データ管理部204は、圧縮後のデータサイズが圧縮前のデータサイズより小さいか否かを判定する。圧縮率が100%より大きい場合、処理はS233へと進む。一方、圧縮率が100%より小さい場合、処理はS234へと進む。
(S233)データ管理部204は、圧縮前の8KBブロック(非圧縮ブロック)を512バイト単位に分割して各セクタに割り当てる。つまり、データ管理部204は、図19の(A)に示すように、非圧縮ブロックを分割して複数の512バイトブロックを生成する。S233の処理が完了すると、処理はS235へと進む。
(S234)データ管理部204は、圧縮後の8KBブロック(圧縮ブロック)を512バイト単位に分割して各セクタに割り当てる。つまり、データ管理部204は、図19の(B)に示すように、圧縮ブロックを分割して複数の512バイトブロックを生成する。
(S235、S236)データ管理部204は、分割により生成された512バイトブロックのうち終端(最終セクタ部分)の512バイトブロックに未割り当て領域がある場合、パディング処理により未割り当て領域にビット値0を充填する。そして、データ管理部204は、各セクタのデータ(各512バイトブロック)をデバイス管理部205へ出力する。S236の処理が完了すると、図20に示した一連の処理は終了する。
(READ:サイズ変換など)
次に、図21を参照しながら、READ I/O時の処理のうち、サイズ変換などに関する処理について、さらに説明する。図21は、READ I/O時の処理のうち、サイズ変換などに関する処理の流れについて説明するためのフロー図である。なお、図21に示した処理は、上述したS215の処理に対応する。
(S241)データ管理部204は、デバイス管理部205に8KBブロック分のデータをストレージプール206から読み出すように読み出し依頼を行う。
(S242)データ管理部204は、デバイス管理部205により読み出された8KBブロック分のデータが圧縮データであるか否かを判定する。圧縮データである場合、処理はS243へと進む。一方、圧縮データでない場合(非圧縮データである場合)、処理はS244へと進む。
(S243)データ管理部204は、複数の512バイトブロックを結合して圧縮データを復元し、復元した圧縮データを伸張する。
(S244、S245)データ管理部204は、各セクタの512バイトブロックを結合して520バイトブロックのデータを復元する。つまり、データ管理部204は、WRITE I/O時にセクタサイズに合わせて512バイトブロックにサイズ変換したデータを逆変換して520バイトブロックのデータを復元する。そして、データ管理部204は、復元したデータを重複排除部203へ出力する。
(READ:BIDの復元など)
次に、図22を参照しながら、READ I/O時の処理のうち、BIDの復元などに関する処理について、さらに説明する。図22は、READ I/O時の処理のうち、BIDの復元などに関する処理の流れについて説明するためのフロー図である。なお、図22の処理は、上述したS213、S215の処理に対応する。
(S251、S252)重複排除部203は、データ管理部204から出力された8KBブロックのデータ(520バイトブロックの集合)を取得する。また、重複排除部203は、取得した8KBブロックに対応するメタ情報210をストレージプール206又はメタ情報キャッシュ212から読み出す。
(S253)重複排除部203は、取得した8KBブロックが重複排除の対象か否かを判定する。例えば、取得した8KBブロックに対応するメタ情報210の論理アドレス情報210aと同じ論理領域のデータ位置を指す他のメタ情報がある場合、重複排除部203は、取得した8KBブロックが重複排除の対象であると判定する。
取得した8KBブロックが重複排除の対象である場合、処理はS254へと進む。一方、取得した8KBブロックが重複排除の対象でない場合、処理はS256へと進む。
(S254)重複排除部203は、メタ情報210のBID領域210cからBID213bを取得する。このBID213bは、8KBブロックの先頭に位置する512バイトブロックに付加されたBCCのBID213bである。
(S255)重複排除部203は、8KBブロックの先頭に対応する520バイトブロックのBCCに、取得したBID213bを設定する。また、重複排除部203は、取得したBID213bに含まれるカウンタ値をインクリメントして、8KBブロックの先頭以外にある各520バイトブロックのBCCに設定するBIDを復元する。
(S256)重複排除部203は、復元したBIDを各520バイトブロックのBCCに設定することで、8KBブロックに対応する全ての520バイトブロックを復元する。また、重複排除部203は、読み出し対象の全ての8KBブロックを取得し終えたか否かを判定する。全ての8KBブロックを取得し終えている場合、処理はS257へと進む。一方、未取得の8KBブロックがある場合、処理はS251へと進む。
(S257)重複排除部203は、BCC付READ I/Oデータ(各8KBブロックに対応する520バイトブロックの集合)をI/O制御部202へ出力する。各520バイトブロックはI/O制御部202を介して上位接続部201に入力され、上位接続部201によりBCCチェック及びBCCの削除後、サーバ51へ送信される。S257の処理が完了すると、図22に示した一連の処理は終了する。
上記のように、BCCに含まれるBID213bをメタ情報210に保持し、512バイトブロックについて重複排除を実施することで重複排除の効率改善に寄与する。また、メタ情報210にBID213bを格納することで、BID213bを格納する領域をメモリ111a又はストレージプール206に確保せずに済むため、記憶容量の節約に寄与する。また、先頭520バイトブロックのBID213bをメタ情報210に保存し、残りの520バイトブロックのBIDを計算により復元するため、記憶容量のさらなる節約に寄与する。
以上、第2実施形態について説明した。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部と、
データと、前記データに対するチェック符号と、前記論理領域内の位置に関する第1の情報とを含む第1のデータブロックが前記物理領域にある場合、
前記データと、前記チェック符号と、前記論理領域内の位置に関する第2の情報とを含む第2のデータブロックを前記論理領域に書き込むとき、
前記メタ情報のうち前記第1のデータブロックのメタ情報を用いて取得した、前記第1のデータブロックがある前記物理領域の位置を、前記メタ情報のうち前記第2のデータブロックのメタ情報における前記物理領域の位置として、前記第2のデータブロックが書き込まれる前記論理領域の位置に対応付け、前記第2のデータブロックから取得される前記第2の情報を前記記憶部に格納する制御部と
を有する、ストレージ制御装置。
(付記2) 前記制御部は、前記第2のデータブロックを前記論理領域から読み出すとき、前記メタ情報のうち前記第2のデータブロックのメタ情報を参照して前記物理領域から前記第1のデータブロックを読み出し、前記論理領域内の位置に関する第2の情報と前記第1のデータブロックに含まれる前記チェック符号とに基づいて前記第2のデータブロックを復元する
付記1に記載のストレージ制御装置。
(付記3) 前記データは、複数の分割データを有し、
前記第2の情報は、前記複数の分割データにそれぞれ対応する複数の付加情報を有し、
前記複数の付加情報のそれぞれは、前記複数の分割データのうち、対応する分割データが前記データの先頭から何番目の位置にあるかを示すカウンタ値を含み、
前記制御部は、
前記第2の情報を前記記憶部に格納するとき、前記複数の付加情報のうち、前記データの先頭にある分割データに対応する付加情報を前記記憶部に格納し、前記第2のデータブロックを復元する際には、前記複数の付加情報のうち、前記記憶部にある付加情報を用いて残りの付加情報を生成する
付記2に記載のストレージ制御装置。
(付記4) 前記制御部は、前記第2の情報を、前記メタ情報のうち前記第2のデータブロックのメタ情報に保存する
付記3に記載のストレージ制御装置。
(付記5) 前記制御部は、前記第1のデータブロックを前記物理領域に書き込むとき、それぞれが前記物理領域に設定される単位区画と同じサイズになるように前記第1のデータブロックを複数のデータ要素に分割し、前記複数のデータ要素を前記物理領域に書き込む
付記4に記載のストレージ制御装置。
(付記6) 論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部を参照し、
データと、前記データに対するチェック符号と、前記論理領域内の位置に関する第1の情報とを含む第1のデータブロックが前記物理領域にある場合、
前記データと、前記チェック符号と、前記論理領域内の位置に関する第2の情報とを含む第2のデータブロックを前記論理領域に書き込むとき、
前記メタ情報のうち前記第1のデータブロックのメタ情報を用いて取得した、前記第1のデータブロックがある前記物理領域の位置を、前記メタ情報のうち前記第2のデータブロックのメタ情報における前記物理領域の位置として、前記第2のデータブロックが書き込まれる前記論理領域の位置に対応付け、前記第2のデータブロックから取得される前記第2の情報を前記記憶部に格納する
処理をコンピュータに実行させる、ストレージ制御プログラム。
(付記7) 前記第2のデータブロックを前記論理領域から読み出すとき、前記メタ情報のうち前記第2のデータブロックのメタ情報を参照して前記物理領域から前記第1のデータブロックを読み出し、前記論理領域内の位置に関する第2の情報と前記第1のデータブロックに含まれる前記チェック符号とに基づいて前記第2のデータブロックを復元する
処理を前記コンピュータに実行させる、付記6に記載のストレージ制御プログラム。
(付記8) 前記データは、複数の分割データを有し、
前記第2の情報は、前記複数の分割データにそれぞれ対応する複数の付加情報を有し、
前記複数の付加情報のそれぞれは、前記複数の分割データのうち、対応する分割データが前記データの先頭から何番目の位置にあるかを示すカウンタ値を含み、
前記ストレージ制御プログラムは、
前記第2の情報を前記記憶部に格納するとき、前記複数の付加情報のうち、前記データの先頭にある分割データに対応する付加情報を前記記憶部に格納し、前記第2のデータブロックを復元する際には、前記複数の付加情報のうち、前記記憶部にある付加情報を用いて残りの付加情報を生成する
処理を前記コンピュータに実行させる、付記7に記載のストレージ制御プログラム。
(付記9) 前記第2の情報を、前記メタ情報のうち前記第2のデータブロックのメタ情報に保存する
処理を前記コンピュータに実行させる、付記8に記載のストレージ制御プログラム。
(付記10) 前記第1のデータブロックを前記物理領域に書き込むとき、それぞれが前記物理領域に設定される単位区画と同じサイズになるように前記第1のデータブロックを複数のデータ要素に分割し、前記複数のデータ要素を前記物理領域に書き込む
処理を前記コンピュータに実行させる、付記9に記載のストレージ制御プログラム。
10 ストレージ制御装置
11 記憶部
11a メタ情報
11b 位置に関する情報
12 制御部
21 論理領域
22 物理領域
30 第1のデータブロック
31、41、D1 データ
32、42 コード情報
32a、42a チェック符号
32b 第1の情報
40 第2のデータブロック
42b 第2の情報
L0、L1、L2 論理アドレス
P0、P1 物理アドレス
一態様によれば、論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部と、データと、データに対するチェック符号と、論理領域内にある当該データの位置に関する第1の情報とを含む第1のデータブロックがメタ情報のうち第1のデータブロックのメタ情報によって示される物理領域にある場合であって、データと、チェック符号と、論理領域内にある当該データの位置に関する第2の情報とを含む第2のデータブロックを論理領域に書き込むとき、データの重複排除処理によって、メタ情報のうち第1のデータブロックのメタ情報を用いて取得した、第1のデータブロックがある物理領域の位置を、第2のデータブロックの論理領域に対応する物理領域の位置として対応付け、第2のデータブロックから取得される第2の情報を記憶部の第2のデータブロックのメタ情報の格納領域に格納する制御部とを有する、ストレージ制御装置が提供される。

Claims (6)

  1. 論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部と、
    データと、前記データに対するチェック符号と、前記論理領域内の位置に関する第1の情報とを含む第1のデータブロックが前記物理領域にある場合、
    前記データと、前記チェック符号と、前記論理領域内の位置に関する第2の情報とを含む第2のデータブロックを前記論理領域に書き込むとき、
    前記メタ情報のうち前記第1のデータブロックのメタ情報を用いて取得した、前記第1のデータブロックがある前記物理領域の位置を、前記メタ情報のうち前記第2のデータブロックのメタ情報における前記物理領域の位置として、前記第2のデータブロックが書き込まれる前記論理領域の位置に対応付け、前記第2のデータブロックから取得される前記第2の情報を前記記憶部に格納する制御部と
    を有する、ストレージ制御装置。
  2. 前記制御部は、前記第2のデータブロックを前記論理領域から読み出すとき、前記メタ情報のうち前記第2のデータブロックのメタ情報を参照して前記物理領域から前記第1のデータブロックを読み出し、前記論理領域内の位置に関する第2の情報と前記第1のデータブロックに含まれる前記チェック符号とに基づいて前記第2のデータブロックを復元する
    請求項1に記載のストレージ制御装置。
  3. 前記データは、複数の分割データを有し、
    前記第2の情報は、前記複数の分割データにそれぞれ対応する複数の付加情報を有し、
    前記複数の付加情報のそれぞれは、前記複数の分割データのうち、対応する分割データが前記データの先頭から何番目の位置にあるかを示すカウンタ値を含み、
    前記制御部は、
    前記第2の情報を前記記憶部に格納するとき、前記複数の付加情報のうち、前記データの先頭にある分割データに対応する付加情報を前記記憶部に格納し、前記第2のデータブロックを復元する際には、前記複数の付加情報のうち、前記記憶部にある付加情報を用いて残りの付加情報を生成する
    請求項2に記載のストレージ制御装置。
  4. 前記制御部は、前記第2の情報を、前記メタ情報のうち前記第2のデータブロックのメタ情報に保存する
    請求項3に記載のストレージ制御装置。
  5. 前記制御部は、前記第1のデータブロックを前記物理領域に書き込むとき、それぞれが前記物理領域に設定される単位区画と同じサイズになるように前記第1のデータブロックを複数のデータ要素に分割し、前記複数のデータ要素を前記物理領域に書き込む
    請求項4に記載のストレージ制御装置。
  6. 論理領域の位置と物理領域の位置とを対応付けるメタ情報が格納される記憶部を参照し、
    データと、前記データに対するチェック符号と、前記論理領域内の位置に関する第1の情報とを含む第1のデータブロックが前記物理領域にある場合、
    前記データと、前記チェック符号と、前記論理領域内の位置に関する第2の情報とを含む第2のデータブロックを前記論理領域に書き込むとき、
    前記メタ情報のうち前記第1のデータブロックのメタ情報を用いて取得した、前記第1のデータブロックがある前記物理領域の位置を、前記メタ情報のうち前記第2のデータブロックのメタ情報における前記物理領域の位置として、前記第2のデータブロックが書き込まれる前記論理領域の位置に対応付け、前記第2のデータブロックから取得される前記第2の情報を前記記憶部に格納する
    処理をコンピュータに実行させる、ストレージ制御プログラム。
JP2017083352A 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム Active JP6451769B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017083352A JP6451769B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム
US15/955,236 US10990535B2 (en) 2017-04-20 2018-04-17 Storage control apparatus and storage control method for deduplication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017083352A JP6451769B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム

Publications (2)

Publication Number Publication Date
JP2018181171A true JP2018181171A (ja) 2018-11-15
JP6451769B2 JP6451769B2 (ja) 2019-01-16

Family

ID=63854485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017083352A Active JP6451769B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム

Country Status (2)

Country Link
US (1) US10990535B2 (ja)
JP (1) JP6451769B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021022324A (ja) * 2019-07-30 2021-02-18 富士通株式会社 記憶制御装置および記憶制御プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109508254B (zh) * 2017-09-14 2020-09-08 华为技术有限公司 一种数据恢复方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009104420A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd 記憶制御装置及び記憶装置の障害検出方法
JP2013532853A (ja) * 2010-10-26 2013-08-19 株式会社日立製作所 ストレージ装置及びデータ制御方法
JP2017004399A (ja) * 2015-06-15 2017-01-05 富士通株式会社 ストレージ制御装置、及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
JP2004288078A (ja) 2003-03-25 2004-10-14 Hitachi Ltd 固定長ディスクを利用したディスクアレイシステム
JP5331323B2 (ja) 2007-09-26 2013-10-30 株式会社日立製作所 ストレージサブシステム及びその制御方法
US8775718B2 (en) * 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US9401967B2 (en) * 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US9250823B1 (en) * 2014-05-20 2016-02-02 Emc Corporation Online replacement of physical storage in a virtual storage system
JP6050794B2 (ja) 2014-08-22 2016-12-21 株式会社日立製作所 フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
US10031675B1 (en) * 2016-03-31 2018-07-24 Emc Corporation Method and system for tiering data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009104420A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd 記憶制御装置及び記憶装置の障害検出方法
JP2013532853A (ja) * 2010-10-26 2013-08-19 株式会社日立製作所 ストレージ装置及びデータ制御方法
JP2017004399A (ja) * 2015-06-15 2017-01-05 富士通株式会社 ストレージ制御装置、及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021022324A (ja) * 2019-07-30 2021-02-18 富士通株式会社 記憶制御装置および記憶制御プログラム

Also Published As

Publication number Publication date
US10990535B2 (en) 2021-04-27
US20180307616A1 (en) 2018-10-25
JP6451769B2 (ja) 2019-01-16

Similar Documents

Publication Publication Date Title
JP6200886B2 (ja) フラッシュストレージアレイにおける論理セクタマッピング
JP5302886B2 (ja) ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
JP6240071B2 (ja) ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
US10248623B1 (en) Data deduplication techniques
US20180173632A1 (en) Storage device and method for controlling storage device
US10628054B2 (en) Raid array systems and operations using mapping information
US10055420B1 (en) Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata
US8171253B2 (en) Virtual disk mapping
US8539148B1 (en) Deduplication efficiency
JP6345698B2 (ja) 格納されたデータにおける冗長削減
US8914597B2 (en) Data archiving using data compression of a flash copy
JP6124902B2 (ja) ストレージシステムにおける可変長符号化
US8442952B1 (en) Recovering in deduplication systems
US20100281207A1 (en) Flash-based data archive storage system
US11347725B2 (en) Efficient handling of highly amortized metadata page updates in storage clusters with delta log-based architectures
US20140173177A1 (en) Write Performance In Solid State Storage by Recognizing Copy Source to Target Operations and Only Storing Updates Instead of Entire Block
US20120278560A1 (en) Pre-fetching in a storage system that maintains a mapping tree
US9996426B1 (en) Sparse segment trees for high metadata churn workloads
US10963177B2 (en) Deduplication using fingerprint tries
JP6451769B2 (ja) ストレージ制御装置、及びストレージ制御プログラム
US20200241778A1 (en) Efficient data deduplication caching
US7627716B2 (en) Method, system, and program for an adaptor to read and write to system memory
US8402247B2 (en) Remapping of data addresses for large capacity low-latency random read memory
JP6579149B2 (ja) ストレージ制御装置、及びストレージ制御プログラム
US11144533B1 (en) Inline deduplication using log based storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181102

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181126

R150 Certificate of patent or registration of utility model

Ref document number: 6451769

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150