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

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

Info

Publication number
JP6579149B2
JP6579149B2 JP2017083354A JP2017083354A JP6579149B2 JP 6579149 B2 JP6579149 B2 JP 6579149B2 JP 2017083354 A JP2017083354 A JP 2017083354A JP 2017083354 A JP2017083354 A JP 2017083354A JP 6579149 B2 JP6579149 B2 JP 6579149B2
Authority
JP
Japan
Prior art keywords
data
area
address
copy
information
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
JP2017083354A
Other languages
English (en)
Other versions
JP2018181173A (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.)
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 JP2017083354A priority Critical patent/JP6579149B2/ja
Priority to US15/955,745 priority patent/US10691550B2/en
Publication of JP2018181173A publication Critical patent/JP2018181173A/ja
Application granted granted Critical
Publication of JP6579149B2 publication Critical patent/JP6579149B2/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

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

Description

本発明は、ストレージ制御装置、及びストレージ制御プログラムに関する。
業務サーバなどのサーバ装置が扱う大量のデータは、例えば、記憶容量の大きなストレージ装置を有するストレージシステムにより管理される。ストレージシステムでは、論理的な記憶領域(論理領域)と、ストレージ装置に搭載される記憶装置の記憶領域(物理領域)とを利用してデータのI/O(Input/Output)が処理される。
記憶装置としては、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記録媒体や、複数の記録媒体を組み合わせて利用するRAID(Redundant Arrays of Inexpensive Disks)装置などがある。複数の記憶装置の物理領域を纏めて1つの仮想的な物理領域(ストレージプール/ディスクプール)として利用する技術もある。キャッシュを搭載するストレージ装置の場合、物理領域として一時的にキャッシュが利用される場合もある。
サーバ装置によるデータへのアクセスは論理領域を介して実施される。ある論理領域に対するデータの書き込みがあると、ストレージ装置は、データが書き込まれる論理領域のアドレス(論理アドレス)に対応する物理領域のアドレス(物理アドレス)にデータを書き込む。このとき、新たに書き込まれるデータと同じ内容の他のデータが物理領域に存在しても、書き込み先の論理アドレスと、他のデータの論理アドレスとが異なる場合、他のデータとは異なる物理アドレスにデータが書き込まれる。
HDDやSSDなどのハードウェア資源により提供される物理領域の容量は有限であるため、同じ内容のデータが複数の論理アドレスに書き込まれる場合に、これら複数の論理アドレスを同じ物理アドレスに対応付けて物理領域を有効利用する方法がある。この方法は重複排除と呼ばれる場合がある。
なお、ある時点における記憶領域のスナップショットを作成するストレージシステムにおいて、スナップショットの作成時にデータのハッシュ値を利用して同じデータの存在を判定する方法が提案されている。この方法では、同じデータが存在する場合に、スナップショットの作成時に既に存在するデータが利用される。また、ハッシュ値が同じ場合にデータ同士を比較し、比較結果に応じて重複データを排除する方法が提案されている。
特開2010−72746号公報 特開2009−251725号公報
論理領域の間でデータのコピーを実施する場合、コピー対象のデータは、コピー先の論理アドレスに対応する物理アドレスに書き込まれる。そのため、物理領域には、コピー元のデータ及びコピー先のデータが格納される。しかし、コピー元のデータとコピー先のデータとは同じデータである。同じ論理領域内にある2つの論理アドレス間でデータをコピーする場合も同様に、2つの論理アドレスにそれぞれ対応する2つの物理アドレスに同じデータが格納される。コピー後に上記の重複排除を実施すれば物理領域を有効活用できるが、重複データを処理するための負担が生じる。
1つの側面によれば、本発明の目的は、重複排除に伴う処理負担を低減することが可能なストレージ制御装置、及びストレージ制御プログラムを提供することにある。
一態様によれば、論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、第1の論理領域にあるデータを第2の論理領域にコピーするとき、メタ情報のうち第1の論理領域と物理領域のアドレスとを対応付けるための第1のメタ情報を用いて取得した、第1の論理領域におけるデータのアドレスに対応する物理領域の第1のアドレスを、メタ情報のうち第2の論理領域と物理領域のアドレスとを対応付けるための第2のメタ情報における物理アドレスとして、第2の論理領域におけるデータのコピー先アドレスに対応付けることでコピーを完了する制御部とを備え制御部は、メタ情報のデータサイズが所定サイズに到達したとき、メタ情報を物理領域に書き込むと共に、メタ情報の書き込み先となる物理領域内の位置を示す位置情報を生成し、位置情報を参照することで物理領域に格納されているメタ情報を検索するストレージ制御装置が提供される。
重複排除に伴う処理負担を低減することができる。
第1実施形態に係るストレージ制御装置の一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るサーバの機能を実現可能なハードウェアの一例を示したブロック図である。 第2実施形態に係るノードの機能を実現可能なハードウェア及びソフトウェアスタックの一例を示したブロック図である。 複数のノードに対するデータの分散配置について説明するための図である。 ストレージプールに書き込まれるユーザデータ及びメタ情報の管理方法について説明するための図である。 メタアドレス情報の構造及び内容について説明するための図である。 メタ情報の構造及び内容について説明するための図である。 メタアドレス情報及びメタ情報のキャッシュ及びストレージプールへの書き込み方法について説明するための図である。 書き込み処理の流れ(重複なしの場合)について説明するためのシーケンス図である。 書き込み処理の流れ(重複ありの場合)について説明するためのシーケンス図である。 読み出し処理の流れについて説明するためのシーケンス図である。 スナップショット系コピーの例(SnapOPC/SnapOPC+)について説明するための図である。 スナップショット系コピー中のI/O処理について説明するための図である。 第2実施形態に係るスナップショット系重複排除コピー中のI/O処理(コピー元WRITEの場合)について説明するための図である。 第2実施形態に係るスナップショット系重複排除コピー中のI/O処理(コピー先WRITEの場合)について説明するための図である。 バックアップ系コピーの例(QuickOPC)について説明するための図である。 第2実施形態に係るバックアップ系重複排除コピー中のI/O処理(初期コピー#1)について説明するための図である。 第2実施形態に係るバックアップ系重複排除コピー中のI/O処理(初期コピー#2)について説明するための図である。 第2実施形態に係る重複排除コピー中のI/O処理(初期コピー)の流れを示した第1のフロー図である。 第2実施形態に係る重複排除コピー中のI/O処理(初期コピー)の流れを示した第2のフロー図である。 第2実施形態に係る重複排除コピー中の書き込みI/O処理(コピー中WRITE)の流れを示した第1のフロー図である。 第2実施形態に係る重複排除コピー中の書き込みI/O処理(コピー中WRITE)の流れを示した第2のフロー図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。第1実施形態は、コピーされるデータの重複排除に伴う処理負担を低減する方法に関する。図1は、第1実施形態に係るストレージ制御装置の一例を示した図である。なお、図1に示したストレージ制御装置10は、第1実施形態に係るストレージ制御装置の一例である。
図1に示すように、ストレージ制御装置10は、記憶部11及び制御部12を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。制御部12は、1つ又は複数のCPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのプロセッサである。制御部12は、例えば、記憶部11又は他のメモリ(非図示)に記憶されたプログラムを実行する。
ストレージ制御装置10は、物理領域20に接続される。物理領域20は、例えば、HDD、SSD、RAID装置などの記憶装置により形成される記憶領域、或いは、複数の記憶領域により形成されるストレージプールである。物理領域20には、一例として、第1の論理領域21の少なくとも一部、及び第2の論理領域22の少なくとも一部が対応付けられる。
第1の論理領域21及び第2の論理領域22のアドレス(論理アドレス)と、物理領域20のアドレス(物理アドレス)との関係は、記憶部11に格納されるメタ情報11aにより規定される。図1に例示したメタ情報11aは、第1の論理領域21に関する情報31と、第2の論理領域22に関する情報32とを含む。
第1の論理領域21に関する情報31は、第1の論理領域21の論理アドレスと、物理領域20の物理アドレスとを対応付ける。第2の論理領域22に関する情報32は、第2の論理領域22の論理アドレスと、物理領域20の物理アドレスとを対応付ける。
第1の論理領域21の枠内で「#00」と表記されたブロックは、論理アドレス「lgAdd#00」にあるデータを表す。一方、物理領域20の枠内で「#00」と表記されたブロックは、物理アドレス「phAdd#0」にあるデータを表す。「lgAdd#00」と「phAdd#0」とは第1の論理領域21に関する情報31の中で対応付けられている。「#01」「#02」についても同様である。なお、説明の都合上、コピー前の状態において第2の論理領域22にはデータが格納されていないとする。
第1の論理領域21にあるデータを第2の論理領域22にコピーするとき、制御部12は、メタ情報11aを用いて、第1の論理領域21におけるデータのアドレスに対応する物理領域20のアドレスを、第2の論理領域22におけるデータのコピー先アドレスに対応付けてコピーを完了する。
例えば、第1の論理領域21のlgAdd#00にあるデータをそれぞれ第2の論理領域22のlgAdd#10にコピーする場合、制御部12は、第1の論理領域21に関する情報31からlgAdd#00に対応するphAdd#0を取得する。そして、制御部12は、第2の論理領域22に関する情報32のうち、コピー先アドレスであるlgAdd#10に対応する物理アドレスの欄に「phAdd#0」と記載する。つまり、制御部12は、lgAdd#10とphAdd#0とを対応付ける。
lgAdd#10とphAdd#0とを対応付けた制御部12は、コピーの状態を管理するための完了情報11bのうち、lgAdd#10に対応する状態の情報を「完了」に更新する。なお、完了情報11bは、記憶部11に格納される。同様に、制御部12は、lgAdd#11にphAdd#1を対応付け、lgAdd#12にphAdd#2を対応付ける。そして、制御部12は、lgAdd#11、#12に対応する状態の情報を「完了」に更新する。
上記のように、メタ情報11aの更新をもってコピーを完了とすることで同じデータが物理領域20に重複して格納されずに済み、物理領域20を有効活用することができる。コピー後に重複排除する場合には物理領域20のコピー先アドレスにデータを一旦書き込み、その後で削除する処理が生じるが、上述した第1実施形態の技術を適用することで、無駄な書き込み及び削除の処理を省略することができる。その結果、重複排除に伴う処理負担を低減することができる。
以上、第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は、ホストコンピュータと他の機器(ストレージ装置やネットワーク機器)とを接続するためのHBA(Host Bus Adapter)や通信インターフェースである。
プロセッサ51bは、入出力I/F51dに接続される。入出力I/F51dは、例えば、キーボード、マウス、タッチパッドなどの入力装置や、ELD(Electro-Luminescent Display)、LCD(Liquid Crystal Display)などの表示装置である。プロセッサ51bは、例えば、メモリ51aに格納されたプログラムを実行する。
なお、プログラムは、予めメモリ51aに格納されるか、或いは、光ディスク、磁気ディスク、半導体メモリなどの可搬記憶媒体51eから読み出されてプロセッサ51bによりメモリ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に格納されるか、或いは、光ディスク、磁気ディスク、半導体メモリなどの可搬記憶媒体52から読み出されてプロセッサ111bによりメモリ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要求を受け付ける。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、…、UD#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などを含む。論理アドレス情報210aには、ユーザデータ208が格納される論理領域のLUN及びその格納位置を示すLBAが含まれる。また、物理アドレス情報210bには、ユーザデータ208が格納されるストレージプール206の識別情報(Disk Pool No.)、そのストレージプール206におけるRAIDユニットの識別情報(RAID Unit No.)、そのRAIDユニット内の位置情報(RAID Unit LBA)が含まれる。
メタアドレス情報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はリセットされる。例えば、ストレージプール206内の17番目にあるRAIDユニット(RU#17)までが格納済の場合、18番目のRAIDユニット(RU#18)にメタ情報キャッシュ212のデータが書き込まれる。
この場合、RU#18のメタ情報210に対応するメタアドレス情報209が生成され、メタアドレスキャッシュ211に格納される。メタアドレスキャッシュ211のデータ(メタアドレス情報209)がキャッシュフル(充填状態)になると、そのデータはストレージプール206に書き込まれ、メタアドレスキャッシュ211はリセットされる。このとき、メタアドレスキャッシュ211のデータは、メタアドレス情報209用に予約されているRAIDユニットに書き込まれる。なお、メタアドレス情報209の書き込みは上書きでもよい。
(書き込み処理の流れ)
ノード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に示した一連の処理は終了する。
以上、第2実施形態に係るストレージシステムについて説明した。なお、ここでは説明の都合上、ノード111の基本機能をソフトウェアスタックとして表現し、ソフトウェアスタックの要素を単位としてデータの書き込み及び読み出しの動作について説明した。また、ユーザデータ208、メタ情報210がRAIDユニット単位でストレージプール206に追記書き込みされる仕組みについて説明してきた。
上記のような仕組みを適用することで、ストレージプール206を形成する記録媒体への書き込み頻度を低減するシステムの実現に寄与し、SSDなどの書き込み回数に制約のある記録媒体を利用する際にコスト低減や運用効率の向上などに繋がると期待されうる。但し、上述したストレージシステム50は、第2実施形態の技術を適用可能なシステムの一例であり、一部の機能を省略する変形や他の機能を追加する変形も可能である。
[2−2.重複排除コピー]
上記のストレージシステム50には、ストレージプール206に同じデータが書き込まれることを抑制する重複排除機能が搭載されている。上記の例では、データの書き込み要求を受け付けるタイミングで重複排除を実施していた。以下では、データをコピーする処理の中で効率的に重複排除を実施する方法(重複排除コピー)について説明する。
(スナップショット系重複排除コピー)
重複排除コピーは、例えば、開始指示の時点を基準にコピー元領域にあるデータの更新部分をコピー先領域へとコピーするスナップショット系のコピー処理(スナップショット系コピー)に適用可能である。スナップショット系コピーとしては、例えば、図13のような仕組みがある。図13は、スナップショット系コピーの例(SnapOPC/SnapOPC+)について説明するための図である。
図13の横軸は時間軸である。「コピー元領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー元領域及びそのコピー元領域にあるデータを示している。「コピー先領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー先領域及びそのコピー先領域にあるデータを示している。「世代管理」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点におけるコピー先領域の状態(各世代のバックアップデータの内容)を示している。なお、世代管理は、SnapOPC+の機能である。
図13に示すように、スナップショット系コピーの開始指示があると、コピー元領域のデータ更新に応じて、順次、更新前のデータがコピー先領域へコピーされる。新たな開始指示があると、前の開始指示に応じてコピーされたコピー先領域のデータが第1世代バックアップデータとして管理される。そして、新たな開始指示後のコピー元領域におけるデータ更新に応じて、順次、更新前のデータがコピー先領域へコピーされる。これらの手順により、図13の例では、第1世代バックアップデータに加え、第2世代バックアップデータ、及び第3世代バックアップデータが生成されている。
スナップショット系コピーは、サーバ51によるI/O要求を遮断せずに実施される。そのため、コピー元領域からコピー先領域へのデータコピー中にI/Oが生じうる。この場合、スナップショット系コピー中のI/O処理は、例えば、図14のようになる。図14は、スナップショット系コピー中のI/O処理について説明するための図である。
スナップショット系コピーの動作中にコピー元領域に対するデータの書き込み要求(コピー元WRITE)が生じ、コピーが未了である場合、(A)に示すように、まず、更新前のデータ(旧データ)をコピー先領域へコピーする処理が実行される。そして、コピー元WRITEに応じたコピー元領域への書き込み処理が実行される。一方、コピーが完了している場合には、コピー元WRITEに応じて書き込み処理が実行される。
スナップショット系コピーの動作中にコピー先領域に対するデータの書き込み要求(コピー先WRITE)が生じ、コピーが未了である場合、(B)に示すように、まず、旧データをコピー元領域からコピー先領域へコピーする処理が実行される。そして、コピー先WRITEに応じたコピー先領域への書き込み処理が実行される。一方、コピーが完了している場合には、コピー先WRITEに応じて書き込み処理が実行される。
スナップショット系コピーの動作中にコピー元領域に対するデータの読み出し要求(コピー元READ)が生じた場合、コピーが未了であるか、完了しているかにかかわらず、コピー元領域に対する読み出し処理が実行される。
スナップショット系コピーの動作中にコピー先領域に対するデータの読み出し要求(コピー先READ)が生じ、コピーが未了である場合、コピー元領域にある読み出し対象のデータが読み出され、コピー先READへの応答としてサーバ51に出力される。つまり、内部でコピー先READが、コピー元領域に対するデータの読み出し要求(コピー元READ)に変換される。一方、コピーが完了している場合には、コピー先READに応じてコピー先領域のデータに対する読み出し処理が実行される。
上記(A)及び(B)の場合、スナップショット系コピーの動作中、コピーが未了のタイミングで書き込み要求が生じると、対象となるデータのコピーが完了するまで新たなデータの書き込み処理が待たされる。そこで、第2実施形態に係るノード111は、重複排除部203及びデータ管理部204の機能により、図15及び図16に示すような方法で重複排除コピーを実施する。
図15を参照する。図15は、第2実施形態に係るスナップショット系重複排除コピー中のI/O処理(コピー元WRITEの場合)について説明するための図である。
一例として、0番目の論理領域(LUN#0)をコピー元領域とし、1番目の論理領域(LUN#1)をコピー先領域として、スナップショット系コピーによりLUN#0からLUN#1へとデータをコピーするケースについて説明する。
図15には、論理アドレスと物理アドレスとを対応付ける情報としてLUN#0、#1のマップ情報が示されている。なお、ここでは説明の都合上、「アドレス」という表現を用いるが、ここではLBAなどのアドレス値を表すものに限られず、データ又はデータの集合(例えば、RAIDユニット)がある位置を表す情報を意味する。
また、説明の都合上、表現を簡略化したマップ情報を例に説明するが、論理アドレス情報210aと物理アドレス情報210bとを含むメタ情報210がマップ情報に対応する。例えば、LUN#0のマップ情報は、LUN#0の論理アドレス情報210aを有するメタ情報210に対応する。LUN#1のマップ情報は、LUN#1の論理アドレス情報210aを有するメタ情報210に対応する。
図15(A)は、コピー前の状態を示している。コピー元領域であるLUN#0の論理アドレスlgAdd#00、#01、#02には、それぞれストレージプール206の物理アドレスphAdd#0、#1、#2が対応付けられている。一方、コピー先領域であるLUN#1の論理アドレスlgAdd#10、#11、#12と、ストレージプール206の物理アドレスとの対応関係が初期化されている。
図15(A)の例では、論理アドレスと物理アドレスとの対応関係がない状態(初期化された状態)を示すために、マップ情報にある物理アドレスの欄を空白にしている。但し、コピーの状態(未了/完了)はコピービットマップ213を利用して管理されるため、物理アドレスの欄に以前の対応関係を示す物理アドレスが記述されていてもよい。なお、コピービットマップ213はメモリ111aに格納されている。
例えば、コピービットマップ213の値が「0」の場合にコピー完了、「1」の場合にコピー未了を表す場合、スナップショット系コピーの開始指示に応じて、コピー先領域の各論理アドレスに対応するコピービットマップ213が「1」に設定される。
図13に例示した通常のスナップショット系コピーの場合、コピー先の論理アドレスに対応する物理アドレスにデータが書き込まれると、その論理アドレスに対応するコピービットマップ213の値が「1」から「0」に書き換えられる。また、図14の(A)及び(B)のようにコピーが未了の状態で書き込み要求があると、上位の物理アドレスに対するデータの書き込みが完了してから書き込み要求に応じた処理が実行される。
一方、図15の例では、(A)のように、コピーが未了の状態で論理アドレスlgAdd#00に新たなデータの書き込み要求(新データWRITE)が生じたとき(a)、(B)のようにLUN#1のマップ情報及びコピービットマップ213が更新される。
例えば、重複排除部203は、LUN#0のマップ情報からコピー元の論理アドレスlgAdd#00に対応する物理アドレスphAdd#0を読み出す。また、重複排除部203は、LUN#1のマップ情報において、読み出した物理アドレスphAdd#0をコピー先の論理アドレスlgAdd#10に対応付ける。そして、重複排除部203は、論理アドレスlgAdd#10に対応するコピービットマップ213の値を「0」に書き換える。
その後、データ管理部204は、LUN#0に対する新データWRITEの処理を実行する。データ管理部204は、LUN#0のマップ情報において、新データWRITEにより書き込まれる新たなデータの物理アドレスphAdd#10を論理アドレスlgAdd#00に対応付ける。つまり、データ管理部204は、物理アドレスphAdd#0をphAdd#10に書き換える。また、データ管理部204は、デバイス管理部205を介して、新たなデータをストレージプール206に書き込む。
上記のように、LUN#0のマップ情報からLUN#1のマップ情報への物理アドレスをコピーすることで1つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。そして、コピー未了の領域に対する書き込み要求が生じても、素早く書き込み要求に応じた処理を実行可能になる。
図16を参照する。図16は、第2実施形態に係るスナップショット系重複排除コピー中のI/O処理(コピー先WRITEの場合)について説明するための図である。
図16(A)のように、LUN#0からLUN#1へのコピーが未了の状態で、コピー先領域であるLUN#1の論理アドレスlgAdd#11に対する書き込み要求が生じた場合、(B)に示すような方法でマップ情報が更新される。まず、重複排除部203により、LUN#0のマップ情報にある物理アドレスphAdd#1がLUN#1のマップ情報にコピーされ、(b1)のように、対応するコピービットマップ213の値が「0」に書き換えられる。
その後、データ管理部204は、LUN#1に対する新データWRITEの処理を実行する。データ管理部204は、LUN#1のマップ情報において、新データWRITEにより書き込まれる新たなデータの物理アドレスphAdd#11を論理アドレスlgAdd#11に対応付ける。つまり、データ管理部204は、物理アドレスphAdd#1をphAdd#11に書き換える。また、データ管理部204は、デバイス管理部205を介して、新たなデータをストレージプール206に書き込む。
書き込み要求に応じた処理としては、例えば、該当する物理アドレスにあるデータを全て書き換える処理の他に、そのデータの一部を書き換える処理(更新処理)などがある。更新処理の場合、元のデータが参照されることがある。そのため、図16(B)のように、一旦、LUN#0のマップ情報からLUN#1のマップ情報へ物理アドレスをコピーした後で、書き込み要求に応じた処理が実行される。
上記のように、LUN#0のマップ情報からLUN#1のマップ情報への物理アドレスをコピーすることで1つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。そして、コピー未了の領域に対する書き込み要求が生じても、素早く書き込み要求に応じた処理を実行可能になる。
(バックアップ系重複排除コピー)
上述した重複排除コピーの仕組みは、スナップショット系コピーだけではなく、バックアップ系コピーに対しても適用可能である。バックアップ系コピーとしては、例えば、図17のような仕組みがある。図17は、バックアップ系コピーの例(QuickOPC)について説明するための図である。
図17の横軸は時間軸である。「コピー元領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー元領域及びそのコピー元領域にあるデータを示している。「コピー先領域」という表記の横に並ぶ各ブロックは、各ブロックに対応する時点のコピー先領域及びそのコピー先領域にあるデータを示している。
図17に示すように、バックアップ系コピーの開始指示があると、その開始指示の時点におけるコピー元領域のデータがコピー先領域へコピーされる。開始指示の後でコピー元領域のデータが更新されても次の開始指示があるまで更新内容がコピー先領域に反映されない。新たな開始指示があると、その開始指示の時点におけるコピー元領域と、前の開始指示の時点におけるコピー元領域との差分がコピー先領域へ反映される。
バックアップ系コピーの開始指示に応じて上記の処理が順次実行される。なお、開始指示の間に更新された内容(差分)だけをコピー先領域にコピーする方法の他に、開始指示の時点におけるコピー元領域のデータを全てコピー先領域へコピーする方法もある。いずれの方法を採用する場合でもコピー元領域からコピー先領域へのデータコピー中にI/Oが生じうる。つまり、スナップショット系コピーと同様に改善の余地がある。
バックアップ系コピーの場合、異なるストレージプールの間でデータのコピーが実施されることが多い。一例として、図18には、業務処理に利用される業務プール206aから、業務プール206aのバックアップに利用されるバックアッププール206bへデータコピーする例を示した。図18は、第2実施形態に係るバックアップ系重複排除コピー中のI/O処理(初期コピー#1)について説明するための図である。
図18(A)に示すように、業務プール206aの物理アドレスphAdd#0a、#1a、#2aにそれぞれRAIDユニット#0、#1、#2が格納されている。これらのRAIDユニット#0、#1、#2をバックアッププール206bへコピーする場合、重複排除部203は、(B)のように、LUN#0のマップ情報にある物理アドレスphAdd#0a、#1a、#2aをLUN#1のマップ情報にコピーする。
また、重複排除部203は、コピー先の論理アドレスlgAdd#10、#11、#12に対応するコピービットマップ213の値を「0」に書き換える。これらの処理により、バックアップ系コピーが完了する。この状態で重複排除後の状態が実現される。
その後、データ管理部204は、図19(A)に示すように、業務プール206aからバックアッププール206bへとデータをコピーする。図19は、第2実施形態に係るバックアップ系重複排除コピー中のI/O処理(初期コピー#2)について説明するための図である。また、データ管理部204は、コピー先の物理アドレスphAdd#0b(バックアッププール206bの物理アドレス)をLUN#1のマップ情報に反映させる。
業務プール206aからバックアッププール206bへデータをコピーするタイミングは、例えば、ノード111の負荷、業務プール206a及びバックアッププール206bへのアクセス状況に応じて設定されてもよい。また、このタイミングは、ユーザや管理者により設定できるようにしてもよい。
上記のように、LUN#0のマップ情報からLUN#1のマップ情報への物理アドレスをコピーすることで1つの物理アドレスにあるデータを複数の論理アドレスから参照する形になり、重複排除の状態が実現される。また、マップ情報の更新だけでコピーが完了するため、コピーの処理にかかる時間を短縮することができる。
また、マップ情報間で物理アドレスをコピーするタイミングと、業務プール206aからバックアッププール206bへと実際にデータをコピーするタイミングとを非同期に設定することが可能になる。そのため、バックアップ系コピーを実施しながらも、業務プール206aへのアクセス負荷が高い時間帯を避けてバックアッププール206bにデータを退避することができる。
また、バックアッププール206bへの退避が完了すると、業務処理の状況にほとんど影響を与えることなく、磁気テープなどの可搬性記録媒体などへのバックアップが可能になる。つまり、バックアップ系コピーに上記の仕組みを適用することで、ストレージシステム50全体の性能向上及び利便性向上に寄与する。
(処理フロー:初期コピー)
ここで、図20及び図21を参照しながら、重複排除コピー中のI/O処理の流れについて説明する。図20は、第2実施形態に係る重複排除コピー中のI/O処理(初期コピー)の流れを示した第1のフロー図である。図21は、第2実施形態に係る重複排除コピー中のI/O処理(初期コピー)の流れを示した第2のフロー図である。
これまで、主にノード111の機能について説明してきたが、ノード111、113、121、123のそれぞれは、状況に応じて所定の役割を担う。
例えば、セッション管理を担当するセッション管理ノード、コピー元となるコピー元担当ノード、コピー先となるコピー先担当ノード、自身が管理するディスクグループにデータが格納されるデータ格納ノードがある。なお、セッション管理ノードをSM−Node、コピー元担当ノードをCP−S−Node、コピー先担当ノードをCP−D−Node、データ格納ノードをDS−Nodeと表記する場合がある。
セッション管理ノードは、コピーセッションのコピービットマップ213を管理するノードである。セッション管理ノードの役割はコピーセッション毎に割り振られる。
コピー元担当ノードは、コピー1回分のデータ(実データ/ユーザデータ208)範囲に対応するコピー元領域及びそのコピー元領域のマップ情報(メタ情報210に対応)を管理するノードである。コピー先担当ノードは、コピー1回分のデータ(実データ/ユーザデータ208)範囲に対応するコピー先領域及びそのコピー先領域のマップ情報(メタ情報210に対応)を管理するノードである。
以下では、説明の都合上、ノード111、113、121、123がそれぞれセッション管理ノード、コピー元担当ノード、コピー先担当ノード、データ格納ノードであるとして説明する。また、ノード113、121、123は、いずれもノード111と同じハードウェア及びソフトウェアスタックを有するとして説明を進める。ノード111、113、121、123による以下の処理は、主にプロセッサ111bにより実行される。
(S201)ノード111は、コピーの開始指示に応じてコピービットマップ213を参照し、コピー範囲の中でコピーが未了の部分を検索する。そして、ノード111は、コピーの開始位置を決定する。また、ノード111は、コピービットマップ213を参照し、コピーの開始位置から連続して未了の値「1」が記述されている範囲を特定する。特定された範囲が今回のコピー範囲となる。
(S202)ノード111は、コピー範囲の排他設定を実施する。排他設定されたコピー範囲への新規I/Oはコピーの処理が完了するまで待たされる。
(S203)ノード111は、コピー範囲の開始位置及びそのコピー範囲に基づいてコピー元担当ノード(ノード113)を特定する。そして、ノード111は、ノード113との間で通信を開始する。この通信で、ノード111からノード113へとコピー処理の実行要求(Req.1)が通知される。
(S204)ノード113は、マップ情報を利用したコピーができるか否かを判定する。例えば、ノード113は、コピー元領域のコピー範囲に対応するマップ情報のバウンダリと、コピー先領域のコピー範囲に対応するマップ情報のバウンダリとが合っている場合、マップ情報を利用したコピーができると判定する。
図18の例では、LUN#0のマップ情報内の論理アドレスlgAdd#00、#01、#02の範囲がコピー元領域のコピー範囲になる。また、LUN#1のマップ情報内の論理アドレスlgAdd#10、#11、#12の範囲がコピー先領域のコピー範囲になる。LUN#0側のバウンダリはlgAdd#00、#02であり、LUN#1側のバウンダリはlgAdd#10、#12である。いずれのコピー範囲も連続する3つの論理アドレスを含むサイズであり、バウンダリの対応関係が認められる。
マップ情報を利用したコピーができる場合、処理はS205へと進む。一方、マップ情報を利用したコピーができない場合、処理はS215へと進む。
(S205)コピー元担当ノードであるノード113は、コピー元領域のコピー範囲に対応するマップ情報を読み出す。このマップ情報を参照することで、ノード113は、コピー範囲のデータが格納されている場所を特定することが可能になる。
(S206)ノード113は、マップ情報を参照してデータ格納ノードを特定する。この例では、データ格納ノードとしてノード123が特定される。ノード123は、データ格納ノードとして特定されたノード123との通信を開始する。この通信で、ノード113からノード123へとコピー対象のユーザデータ208に対する処理の実行要求(Req.2)が通知される。
(S207、S208)データ格納ノードであるノード123は、ユーザデータ208の参照情報207にコピー先領域の情報(例えば、コピー先領域のLUN、LBA)を記録する。そして、ノード123は、コピー元担当ノードであるノード113へ実行要求(Req.2)に対する応答(Rsp.2)を返す。
(S209)コピー元担当ノードであるノード113は、コピーの開始位置とコピー範囲とに基づいてコピー先担当ノードを特定する。この例では、コピー先担当ノードとしてノード121が特定される。この場合、ノード113は、コピー先担当ノードとして特定されたノード121との通信を開始する。この通信で、ノード113からノード121へとコピー元領域のマップ情報が送られ、マップ情報の更新要求(Req.3)が通知される。
(S210、S211)コピー先担当ノードであるノード121は、ノード113から受信したマップ情報に基づいて、コピー先領域のコピー範囲に対応するマップ情報を更新する。そして、ノード121は、コピー元担当ノードであるノード113へ更新要求(Req.3)に対する応答(Rsp.3)を返す。
(S212)コピー先担当ノードであるノード121から応答(Rsp.3)を受けたノード113は、セッション管理ノードであるノード111へ実行要求(Req.1)に対する応答(Rsp.1)を返す。
(S213、S214)セッション管理ノードであるノード111は、コピー範囲に対応するコピービットマップ213をOFFに設定(コピー範囲の論理アドレスに対応する値を0に設定)する。そして、ノード111は、コピー範囲の排他設定を解除する。この時点でコピー範囲のコピーが完了したとみなされる。S214の処理が完了すると、図20及び図21に示した一連の処理は終了する。
(S215)コピー元担当ノードであるノード113又はコピー先担当ノードであるノード121は、図18や図19などに示したマップ情報を利用する重複排除コピーではなく、コピー範囲のデータを物理領域(例えば、業務プール206a、バックアッププール206b)間で実際に読み書きする通常コピー(非重複排除コピー)を実施する。S215の処理が完了すると、図20及び図21に示した一連の処理は終了する。
(処理フロー:コピー中WRITE)
次に、図22及び図23を参照しながら、重複排除コピー中のI/O処理の流れについて、さらに説明する。ここでは、コピー中の書き込み処理について説明する。図22は、第2実施形態に係る重複排除コピー中の書き込みI/O処理(コピー中WRITE)の流れを示した第1のフロー図である。図23は、第2実施形態に係る重複排除コピー中の書き込みI/O処理(コピー中WRITE)の流れを示した第2のフロー図である。
以下では、ノード111、113、121、123の役割がさらに追加される。追加される役割は、ライトI/O受信ノード、担当ノードである。ライトI/O受信ノードは、サーバ51からWRITE I/OのI/O要求を受け付けたノードである。担当ノードは、サーバ51からI/O要求を処理するノードである。
なお、ライトI/O受信ノードをI/O−R−Node、担当ノードをRSP−Nodeと表記する場合がある。ここでは一例として、ノード113がライトI/O受信ノードの役割を担当するものとする。
(S301、S302)ライトI/O受信ノードであるノード113は、WRITE範囲に基づいて担当ノードを決定する。この例では、担当ノードがノード121に決定されたとする。この場合、ノード113は、担当ノードであるノード121との通信を開始する。この通信では、ノード113からノード121へコピー中WRITEの実行要求(Req.20)が通知される。
(S303)担当ノードであるノード121は、WRITE範囲にコピーセッションがあるか否かを判定する。例えば、ノード121は、コピービットマップ213を参照し、WRITE範囲の論理アドレスに対応する値が「1」(コピー未了)の部分がある場合にWRITE範囲にコピーセッションがあると判定する。WRITE範囲にコピーセッションがある場合、処理はS304へと進む。一方、WRITE範囲にコピーセッションがない場合、処理はS316へと進む。
(S304)ノード121は、セッション管理ノードであるノード111との通信を開始する。この通信では、ノード121からノード111へとWRITE I/O処理の実行要求(Req.21)が通知される。
(S305)セッション管理ノードであるノード111は、WRITE範囲と重なるコピー範囲の排他設定を実施する。排他設定されたコピー範囲への新規I/Oはコピーの処理が完了するまで待たされる。なお、コピー開始位置及びコピー範囲は、例えば、WRITE範囲及びコピービットマップ213の値に基づいて決定可能である。
(S306)ノード111は、コピービットマップ213を参照し、WRITE範囲と重なるコピー範囲がコピー済みであるか否かを判定する。コピー範囲がコピー済みである場合、処理はS309へと進む。一方、コピー範囲がコピー済みでない場合、処理はS307へと進む。
(S307、S308)図20、図21のS204からS212までの処理が実行される。その後、ノード111は、コピー範囲に対応するコピービットマップ213をOFFに設定(値を「0」に設定)する。
(S309)ノード111は、担当ノードであるノード121へ実行要求(Req.21)に対する応答(Rsp.21)を返す。
(S310、S311)ノード121は、WRITE I/O処理を実行する。なお、WRITE I/O処理の実行は、ノード121以外のノードが実行してもよい。また、ノード121は、セッション管理ノードであるノード111との通信を開始する。この通信では、ノード121からノード111へWRITE範囲の差分ビットマップ(後述)の更新要求(Req.22)が通知される。
(S312)セッション管理ノードであるノード111は、WRITE範囲の差分ビットマップをONに設定(値を「1」に設定)する。差分ビットマップは、マップ情報を利用してコピー完了とされ、物理領域間(例えば、業務プール206a、バックアッププール206b)のコピーが未了の状態にあるデータが更新された場合に、その更新部分を指し示すためのフラグである。例えば、値「1」で「更新あり」を示す場合、差分ビットマップの値を参照することで、コピー中WRITEの該当範囲が特定されうる。
(S313、S314、S315)ノード111は、担当ノードであるノード121へ更新要求(Req.22)に対する応答(Rsp.22)を返す。この応答を受けたノード121は、ライトI/O受信ノードであるノード113へ実行要求(Req.20)に対する応答(Rsp.20)を返す。この応答を受けたノード113は、サーバ51に対してWRITE I/OのI/O要求に対する応答を返す。S315の処理が完了すると、図22及び図23に示した一連の処理は完了する。
(S316)担当ノードであるノード121は、コピーセッションがないため、通常通りWRITE I/O処理を実行する。なお、ノード121以外のノードがWRITE I/Oを実行してもよい。S316の処理が完了すると、図22及び図23に示した一連の処理は終了する。
以上、第2実施形態に係る重複排除コピーについて説明した。上記の処理フローの説明では、1つの実施例として複数のノードにそれぞれ役割を割り振り、ノード間の通信を交えて重複排除コピー及びコピー中WRITEの処理などを実行する仕組みを紹介した。但し、各ノードが担当する役割の内容や、役割の振り分け方などは様々に変形可能である。
つまり、図15、図16、図18、図19に示した重複排除コピーの処理のうち、どの部分をどのノードに担当させるかは実施の態様に応じて適宜変形することが可能である。また、上記のマップ情報はメタ情報210に対応する情報であり、メタ情報210を利用する場合も上記の処理フローに沿って処理を進めることができる。このような変形についても当然に第2実施形態の技術的範囲に属する。
以上、第2実施形態について説明した。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、
第1の論理領域にあるデータを第2の論理領域にコピーするとき、前記メタ情報のうち前記第1の論理領域と前記物理領域のアドレスとを対応付けるための第1のメタ情報を用いて取得した、前記第1の論理領域における前記データのアドレスに対応する前記物理領域の第1のアドレスを、
前記メタ情報のうち前記第2の論理領域と前記物理領域のアドレスとを対応付けるための第2のメタ情報における物理アドレスとして、前記第2の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する制御部と
を有する、ストレージ制御装置。
(付記2) 前記制御部は、前記データが前記第1の論理領域に書き込まれるとき、前記第1の論理領域に関する情報を前記データに付与し、前記データを前記第1の論理領域から前記第2の論理領域にコピーするとき、前記データに前記第2の論理領域に関する情報をさらに付与する
付記1に記載のストレージ制御装置。
(付記3) 前記制御部は、前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成する
付記2に記載のストレージ制御装置。
(付記4) 前記制御部は、前記コピーの完了前に、前記第2の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第1のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第2のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第2のアドレスと、前記新たなデータが書き込まれる前記第2の論理領域のアドレスとを対応付ける
付記1に記載のストレージ制御装置。
(付記5) 前記制御部は、前記第1の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第1のアドレスとは異なる前記物理領域の第3のアドレスに書き込まれるように制御すると共に、前記第1のメタ情報を用いて、前記第1の論理領域における前記データのアドレスと前記第3のアドレスとを対応付ける
付記1に記載のストレージ制御装置。
(付記6) 論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶部に記憶させ、
第1の論理領域にあるデータを第2の論理領域にコピーするとき、前記メタ情報のうち前記第1の論理領域と前記物理領域のアドレスとを対応付けるための第1のメタ情報を用いて取得した、前記第1の論理領域における前記データのアドレスに対応する前記物理領域の第1のアドレスを、
前記メタ情報のうち前記第2の論理領域と前記物理領域のアドレスとを対応付けるための第2のメタ情報における物理アドレスとして、前記第2の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する
処理をコンピュータに実行させる、ストレージ制御プログラム。
(付記7) 前記データが前記第1の論理領域に書き込まれるとき、前記第1の論理領域に関する情報を前記データに付与し、前記データを前記第1の論理領域から前記第2の論理領域にコピーするとき、前記データに前記第2の論理領域に関する情報をさらに付与する
処理を前記コンピュータに実行させる、付記6に記載のストレージ制御プログラム。
(付記8) 前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成する
処理を前記コンピュータに実行させる、付記7に記載のストレージ制御プログラム。
(付記9) 前記コピーの完了前に、前記第2の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第1のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第2のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第2のアドレスと、前記新たなデータが書き込まれる前記第2の論理領域のアドレスとを対応付ける
処理を前記コンピュータに実行させる、付記6に記載のストレージ制御プログラム。
(付記10) 前記第1の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第1のアドレスとは異なる前記物理領域の第3のアドレスに書き込まれるように制御すると共に、前記第1のメタ情報を用いて、前記第1の論理領域における前記データのアドレスと前記第3のアドレスとを対応付ける
処理を前記コンピュータに実行させる、付記6に記載のストレージ制御プログラム。
10 ストレージ制御装置
11 記憶部
11a メタ情報
11b 完了情報
12 制御部
20 物理領域
21 第1の論理領域
22 第2の論理領域
31 第1の論理領域の対応情報
32 第2の論理領域の対応情報

Claims (5)

  1. 論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶する記憶部と、
    第1の論理領域にあるデータを第2の論理領域にコピーするとき、前記メタ情報のうち前記第1の論理領域と前記物理領域のアドレスとを対応付けるための第1のメタ情報を用いて取得した、前記第1の論理領域における前記データのアドレスに対応する前記物理領域の第1のアドレスを、
    前記メタ情報のうち前記第2の論理領域と前記物理領域のアドレスとを対応付けるための第2のメタ情報における物理アドレスとして、前記第2の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了する制御部と
    を備え、
    前記制御部は、前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成し、前記位置情報を参照することで前記物理領域に格納されている前記メタ情報を検索する、
    トレージ制御装置。
  2. 前記制御部は、前記データが前記第1の論理領域に書き込まれるとき、前記第1の論理領域に関する情報を前記データに付与し、前記データを前記第1の論理領域から前記第2の論理領域にコピーするとき、前記データに前記第2の論理領域に関する情報をさらに付与する
    請求項1に記載のストレージ制御装置。
  3. 前記制御部は、前記コピーの完了前に、前記第2の論理領域における前記データのコピー先アドレスに新たなデータが書き込まれるとき、前記第1のアドレスを前記データのコピー先アドレスに対応付けた後で、前記第2のメタ情報を用いて、前記新たなデータの書き込み先となる前記物理領域の第2のアドレスと、前記新たなデータが書き込まれる前記第2の論理領域のアドレスとを対応付ける
    請求項1に記載のストレージ制御装置。
  4. 前記制御部は、前記第1の論理領域における前記データのアドレスに新たなデータが書き込まれるとき、前記新たなデータが前記第1のアドレスとは異なる前記物理領域の第3のアドレスに書き込まれるように制御すると共に、前記第1のメタ情報を用いて、前記第1の論理領域における前記データのアドレスと前記第3のアドレスとを対応付ける
    請求項1に記載のストレージ制御装置。
  5. 論理領域と物理領域のアドレスとを対応付けるためのメタ情報を記憶部に記憶させ、
    第1の論理領域にあるデータを第2の論理領域にコピーするとき、前記メタ情報のうち前記第1の論理領域と前記物理領域のアドレスとを対応付けるための第1のメタ情報を用いて取得した、前記第1の論理領域における前記データのアドレスに対応する前記物理領域の第1のアドレスを、
    前記メタ情報のうち前記第2の論理領域と前記物理領域のアドレスとを対応付けるための第2のメタ情報における物理アドレスとして、前記第2の論理領域における前記データのコピー先アドレスに対応付けることで前記コピーを完了し、
    前記メタ情報のデータサイズが所定サイズに到達したとき、前記メタ情報を前記物理領域に書き込むと共に、前記メタ情報の書き込み先となる前記物理領域内の位置を示す位置情報を生成し、前記位置情報を参照することで前記物理領域に格納されている前記メタ情報を検索する、
    処理をコンピュータに実行させる、ストレージ制御プログラム。
JP2017083354A 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム Active JP6579149B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017083354A JP6579149B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置、及びストレージ制御プログラム
US15/955,745 US10691550B2 (en) 2017-04-20 2018-04-18 Storage control apparatus and storage control method

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2018181173A JP2018181173A (ja) 2018-11-15
JP6579149B2 true JP6579149B2 (ja) 2019-09-25

Family

ID=63854480

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US10691550B2 (ja)
JP (1) JP6579149B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200086143A (ko) * 2019-01-08 2020-07-16 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
JP7121079B2 (ja) * 2020-07-31 2022-08-17 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ複製方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893152A (en) * 1996-03-08 1999-04-06 Sun Microsystems, Inc. Method and apparatus that detects and tolerates inconsistencies between the cache and main memory, and the translation lookaside buffer and the virtual memory page table in main memory
US7752491B1 (en) * 2005-05-05 2010-07-06 Seagate Technology Llc Methods and structure for on-the-fly head depopulation in a dynamically mapped mass storage device
JP5026213B2 (ja) 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
JP2009251725A (ja) 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
JP5313600B2 (ja) 2008-09-16 2013-10-09 株式会社日立製作所 ストレージシステム、及びストレージシステムの運用方法
US9009429B2 (en) * 2009-03-30 2015-04-14 Hewlett-Packard Development Company, L.P. Deduplication of data stored in a copy volume
US20120005557A1 (en) * 2010-06-30 2012-01-05 Eitan Mardiks Virtual copy and virtual write of data in a storage device
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法
JP5776474B2 (ja) * 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
JP6094112B2 (ja) * 2012-09-20 2017-03-15 富士通株式会社 ストレージシステム、ストレージ制御装置、ストレージ制御方法、及びストレージ制御プログラム
US9104328B2 (en) * 2012-10-31 2015-08-11 Hitachi, Ltd. Storage apparatus and method for controlling storage apparatus
US9785564B2 (en) * 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
WO2015145617A1 (ja) * 2014-03-26 2015-10-01 株式会社日立製作所 ストレージシステム及び記憶制御方法

Also Published As

Publication number Publication date
JP2018181173A (ja) 2018-11-15
US20180307565A1 (en) 2018-10-25
US10691550B2 (en) 2020-06-23

Similar Documents

Publication Publication Date Title
US10235066B1 (en) Journal destage relay for online system checkpoint creation
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US7716183B2 (en) Snapshot preserved data cloning
US8627012B1 (en) System and method for improving cache performance
US10133511B2 (en) Optimized segment cleaning technique
US9235524B1 (en) System and method for improving cache performance
US10055420B1 (en) Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata
US8918607B2 (en) Data archiving using data compression of a flash copy
US8930947B1 (en) System and method for live migration of a virtual machine with dedicated cache
US9563555B2 (en) Systems and methods for storage allocation
US7827368B2 (en) Snapshot format conversion method and apparatus
US7831565B2 (en) Deletion of rollback snapshot partition
US8850145B1 (en) Managing consistency groups in storage systems
JP2007226347A (ja) 計算機システム、計算機システムの管理装置、及びデータのリカバリー管理方法
US20140074782A1 (en) Re-trim of free space within vhdx
US20210216569A1 (en) Techniques for performing offload copy operations
US20130325810A1 (en) Creation and expiration of backup objects in block-level incremental-forever backup systems
JP4398464B2 (ja) 1つのターゲット・ボリュームと1つのソース・ボリュームとの間のポイント・イン・タイム・コピー関連性を管理するためのシステム、方法、及びプログラム
US9063892B1 (en) Managing restore operations using data less writes
JP7472341B2 (ja) ストレージシステム及びストレージシステムの制御方法
JP6579149B2 (ja) ストレージ制御装置、及びストレージ制御プログラム
US9053033B1 (en) System and method for cache content sharing
US9009416B1 (en) System and method for managing cache system content directories
US10712941B2 (en) Leveraging temporal locality to link files together and bypass accessing a central inode list

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190521

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190718

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190718

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190812

R150 Certificate of patent or registration of utility model

Ref document number: 6579149

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150