JP2017004146A - ストレージ制御装置 - Google Patents

ストレージ制御装置 Download PDF

Info

Publication number
JP2017004146A
JP2017004146A JP2015115559A JP2015115559A JP2017004146A JP 2017004146 A JP2017004146 A JP 2017004146A JP 2015115559 A JP2015115559 A JP 2015115559A JP 2015115559 A JP2015115559 A JP 2015115559A JP 2017004146 A JP2017004146 A JP 2017004146A
Authority
JP
Japan
Prior art keywords
data
area
control unit
copy
partition
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.)
Pending
Application number
JP2015115559A
Other languages
English (en)
Inventor
弘 小嵐
Hiroshi Koarashi
弘 小嵐
慎平 荻野
Shimpei Ogino
慎平 荻野
仁美 秋山
Hitomi Akiyama
仁美 秋山
猛 植田
Takeshi Ueda
猛 植田
憲二 樋口
Kenji Higuchi
憲二 樋口
明宇 成瀬
Akitaka Naruse
明宇 成瀬
礼介 中川
Reisuke Nakagawa
礼介 中川
宏章 今野
Hiroaki Konno
宏章 今野
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 JP2015115559A priority Critical patent/JP2017004146A/ja
Priority to US15/170,039 priority patent/US20160357479A1/en
Publication of JP2017004146A publication Critical patent/JP2017004146A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

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

Abstract

【課題】フォーマットが未済の領域を効率的に利用可能な状態にすること。
【解決手段】複数の区画を有する記憶領域30aの各区画に関するフォーマット状態を記した管理情報21aを記憶する記憶部21と、記憶領域30aに対する第1のデータ41の書き込み要求を受け付けたときに、管理情報21aに基づいて該第1のデータ41の書き込み先を含む区画がフォーマット済みであるかを判定し、フォーマットが未済の場合には、第1のデータ41と、所定の第2のデータ42とを組み合わせて該区画のサイズに適合する第3のデータ43を生成し、該第3のデータ43を該区画に書き込む制御を実行する制御部22と、を有する、ストレージ制御装置20が提供される。
【選択図】図1

Description

本発明は、ストレージ制御装置に関する。
RAID(Redundant Arrays of Inexpensive Disks)技術を用いて複数の記憶装置(HDD(Hard Disk Drive)やSSD(Solid State Drive)など)を冗長化し、高速なデータアクセス及び大容量化を実現するディスクアレイが広く利用されている。ディスクアレイには、論理ユニット(LU:Logical Unit)と呼ばれる論理記憶領域が設定され、LUに記憶装置の物理記憶領域が割り当てられる。LUは、LUN(Logical Unit Number)で識別される。なお、LUNに対応する論理記憶領域をLUN領域と呼ぶ場合がある。
LUN領域の設定は、ディスクアレイに接続されたコントローラが実行する。コントローラは、ディスクアレイに割り当てるLUNを設定する際、そのLUNに対応するLUN領域をフォーマットする。このとき、コントローラは、そのLUN領域に対応する記憶装置のセクタに対し、null(ゼロ)データとBCC(Block Checking Character)とを書き込む処理を実行する。
近年、記憶装置単体の大容量化も進み、運用開始時に実行されるフォーマットにかかる時間が長くなっている。そのため、運用中にフォーマットを実行できるようにする技術について検討が行われている。
例えば、書き込み要求で指定されたエリアが初期化済みであればディスクにデータを書き込み、初期化未済であれば初期化が完了するまでキャッシュにデータを退避させ、初期化完了時にキャッシュのデータをディスクに書き込む技術が提案されている。また、フォーマット済みか否かをビットマップメモリで管理し、アクセス領域が全てフォーマット済みの場合にディスクアクセスを実施し、未済の場合にフォーマットを実施する技術が開示されている。
特開2005−11317号公報 特開2003−29934号公報
上記の技術はフォーマットが未済の場合に書き込みデータを一時的に退避させておき、対象領域のフォーマットを実施する方法である。そのため、対象領域にnullデータなどのデータを書き込んでフォーマットを実施した後、さらに書き込み要求を受けたデータを該対象領域に書き込む処理が実施される。
運用中にフォーマットの処理が実行できれば、ディスクアレイのフォーマットが完了するまで運用開始を待たずに済むという利点がある。しかし、フォーマットの処理が実行されている間、ディスクアレイやコントローラなどのリソースに負荷がかかるため、データの読み書き処理が遅くなるなど、他の処理に影響が生じうる。
一態様によれば、本発明の目的は、フォーマットが未済の領域を効率的に利用可能な状態にするストレージ制御装置を提供することにある。
一態様によれば、複数の区画を有する記憶領域の各区画に関するフォーマット状態を記した管理情報を記憶する記憶部と、記憶領域に対する第1のデータの書き込み要求を受け付けたときに、管理情報に基づいて該第1のデータの書き込み先を含む区画がフォーマット済みであるかを判定し、フォーマットが未済の場合には、第1のデータと、所定の第2のデータとを組み合わせて該区画のサイズに適合する第3のデータを生成し、該第3のデータを該区画に書き込む制御を実行する制御部とを有する、ストレージ制御装置が提供される。
本開示によれば、フォーマットが未済の領域を効率的に利用可能な状態にできる。
第1実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るサーバのハードウェアの一例を示した図である。 第2実施形態に係るコントローラが有する機能の一例を示した図である。 第2実施形態に係るLUN管理テーブルの一例を示した図である。 第2実施形態に係るフォーマット管理テーブルの更新を示した図である。 第2実施形態に係るコピー処理の一例(コピー元の区画サイズ<コピー先の区画サイズ)を示した図である。 第2実施形態に係るコピー処理の一例(コピー元の区画サイズ>コピー先の区画サイズ)を示した図である。 第2実施形態に係るLUN作成処理の流れを示したフロー図である。 第2実施形態に係るWRITE処理の流れを示した第1のフロー図である。 第2実施形態に係るWRITE処理の流れを示した第2のフロー図である。 第2実施形態に係るREAD処理の流れを示したフロー図である。 OPC/QuickOPCへの応用について説明するための図である。 SnapOPC/SnapOPC+への応用について説明するための第1の図である。 SnapOPC/SnapOPC+への応用について説明するための第2の図である。 SnapOPC/SnapOPC+への応用について説明するための第3の図である。 ECへの応用について説明するための図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。第1実施形態は、フォーマットが未済の領域に対し、書き込み要求の対象となるデータを書き込むことで、事前のフォーマットを省略する仕組みを提供する。この仕組みによれば、これまでフォーマットの処理にかかっていた時間及び該処理に伴って生じていた負荷の増大を抑制できる。図1は、第1実施形態に係るストレージシステムの一例を示した図である。
図1に示すストレージシステムは、サーバ10と、ストレージ制御装置20と、ディスクアレイ30とを有する。サーバ10は、ストレージ制御装置20に対し、ディスクアレイ30へデータを書き込むように要求する。また、サーバ10は、ストレージ制御装置20に対し、ディスクアレイ30からデータを読み出すように要求する。ディスクアレイ30は、例えば、RAID技術を用いて複数の記憶装置(HDDやSSDなど)を冗長化したRAID装置である。ディスクアレイ30の動作は、ストレージ制御装置20により制御される。
ストレージ制御装置20は、記憶部21、及び制御部22を有する。
記憶部21は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。制御部22は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、制御部22は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。制御部22は、例えば、記憶部21又は他のメモリに記憶されたプログラムを実行する。
記憶部21は、複数の区画を有する記憶領域30aの各区画に関するフォーマット状態を記した管理情報21aを記憶する。
記憶領域30aは、例えば、LUN領域である。区画は、LUN領域に設定された複数の分割領域である。区画は、複数のブロックを含む。図1に例示した記憶領域30aは、区画1、区画2、区画3を有する。区画1は、アドレスA1a、A1bで識別される2つのブロックを有する。区画2は、アドレスA2a、A2bで識別される2つのブロックを有する。区画3は、アドレスA3a、A3bで識別される2つのブロックを有する。区画に含まれるブロック数(区画サイズ)は3以上であってもよい。
管理情報21aは、記憶領域30aの区画毎にフォーマット済みであるか否かが記された情報である。例えば、管理情報21aは、各区画に対応するビット値を有し、ビット値が0の場合にフォーマット済み、ビット値が1の場合にフォーマット未済を表すビットマップを用いて表現することができる。
制御部22は、記憶領域30aに対する第1のデータ41の書き込み要求を受け付けたときに、管理情報21aに基づいて該第1のデータ41の書き込み先を含む区画がフォーマット済みであるかを判定する。また、制御部22は、フォーマットが未済の場合には、第1のデータ41と、所定の第2のデータ42とを組み合わせて該区画のサイズに適合する第3のデータ43を生成する。そして、制御部22は、第3のデータ43を該区画に書き込む制御を実行する。
ここで、図1に示した例に沿って、さらに説明する。
図1の例において、サーバ10は、記憶領域30aのアドレスA2aを指定して第1のデータ41の書き込みをストレージ制御装置20に要求している。この書き込み要求を受け付けた制御部22は、管理情報21aを参照し、アドレスA2aの領域を含む区画2がフォーマット済みであるか否かを判定する。図1の例では、区画2はフォーマット済みではない(未済)。この場合、制御部22は、第1のデータ41と第2のデータ42とを組み合わせて第3のデータ43を生成する。
第2のデータ42は、nullデータなどのフォーマット時に記憶領域30aへ書き込まれるデータである。第2のデータ42は、区画2の領域の中で、第1のデータ41が書き込まれない領域が埋まるようにサイズが調整されたデータである。この例では、アドレスA2aの領域に第1のデータ41が書き込まれると、アドレスA2bの領域が未フォーマットの状態で残る。この場合、制御部22は、アドレスA2bの領域を埋める第2のデータ42を用意し、第1のデータ41に組み合わせて第3のデータ43を生成する。
制御部22は、上記のようにして生成した第3のデータ43を区画2に書き込む。そして、制御部22は、管理情報21aを更新し、区画2のフォーマット状態をフォーマット済みにする。第3のデータ43が区画2に書き込まれることで、区画2にはデータが書き込まれた状態になる。この方法によれば、第1のデータ41をアドレスA2aの領域に書き込む前に、アドレスA2aの領域にnullデータなどを書き込むフォーマットの処理が省略されるため、処理時間や処理負荷を抑制することが可能になる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態は、フォーマットが未済の領域に対し、書き込み要求の対象となるデータを書き込むことで、事前のフォーマットを省略する仕組みを提供する。この仕組みによれば、これまでフォーマットの処理にかかっていた時間及び該処理に伴って生じていた負荷の増大を抑制できる。
[2−1.システム]
図2を参照しながら、第2実施形態に係るストレージシステムについて説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。
図2に示したストレージシステムは、サーバ101a、101b、FC(Fibre Channel)スイッチ102、FCポート103、LAN(Local Area Network)スイッチ104、NIC(Network Interface Card)ポート105、及びストレージ装置110を含む。FCポート103は、FCスイッチ102とストレージ装置110とを接続するインターフェースである。NICポート105は、LANスイッチ104とストレージ装置110とを接続するインターフェースである。
サーバ101a、101bは、ストレージ装置110に対してデータの書き込み及びデータの読み出しを要求するホストコンピュータである。図2の例では、説明の都合上、FCスイッチ102には1台のサーバ101aしか接続されていないが、FCスイッチ102には複数台のホストコンピュータを接続することができる。これらのホストコンピュータは、FCスイッチ102を介してストレージ装置110のFCポート103に接続され、SAN(Storage Area Network)を構成する。
また、図2の例では、説明の都合上、LANスイッチ104には1台のサーバ101bしか接続されていないが、LANスイッチ104には複数台のホストコンピュータを接続することができる。これらのホストコンピュータは、LANスイッチ104を介してストレージ装置110のNICポート105に接続され、ストレージ装置110をNAS(Network Attached Storage)として利用することができる。
なお、サーバ101aは、ストレージ装置110の管理用のI/Oを送受信するためにLANを利用してもよい。この場合、サーバ101aは、FCスイッチ102に接続されると共に、LANスイッチ104にも接続される。
ストレージ装置110は、コントローラ111、RAIDグループ112、及びスペアディスクプール113を有する。コントローラ111は、RAIDグループ112、及びスペアディスクプール113の動作を制御する。RAIDグループ112は、複数のHDDを有し、RAID技術を用いて複数のHDDを冗長化したディスクアレイである。RAIDグループ112上にはLUN領域が設定される。なお、RAIDグループ112には、SSDが混在していてもよい。
LUN領域の設定は、コントローラ111が実行する。コントローラ111は、RAIDグループ112に設定するLUN領域にLUNを割り当てる際、LUN領域をフォーマットするか否かを判断する。つまり、コントローラ111は、後述するようにLUNの割り当て時にフォーマットを回避することができる。フォーマットを実施する場合、コントローラ111は、設定するLUN領域に対応するHDDのセクタに対し、nullデータとBCCとを書き込む。一方、フォーマットを実施しない場合、コントローラ111は、未フォーマットのLUN領域にLUNを割り当てる。
スペアディスクプール113は、RAIDグループ112に組み込まれていないHDDの集合である。スペアディスクプール113のHDDは、例えば、RAIDグループ112のLUN領域に格納されたデータのバックアップなどに利用される。なお、スペアディスクプール113のHDDは、RAIDグループ112のHDDが故障した際に代替HDDとして利用されるHDDを含んでいてもよい。
コントローラ111は、サーバ101a、101bから受け付けた読み出し要求(READ要求)に応じてLUN領域からデータを読み出す。READ要求が指定する位置からデータを読み出す際、コントローラ111は、データの品質保証のためにHDDのセクタに記録されたデータとBCCとの整合性を確認する。整合性が確認できた場合、コントローラ111は、読み出したデータでサーバ101a、101bに応答する(READ処理)。
また、コントローラ111は、サーバ101a、101bから受け付けた書き込み要求(WRITE要求)に応じてLUN領域にデータを書き込む。このとき、コントローラ111は、WRITE要求が指定する位置から旧データとBCCを読み出して整合性を確認する。整合性が確認できた場合、コントローラ111は、読み出したBCCと書き込みデータとを用いてXOR(排他的論理和)演算を実行し、書き込みデータに対するBCCを生成する。そして、コントローラ111は、書き込みデータとBCCとをWRITE要求が指定する位置に書き込む(WRITE処理)。
READ要求及びWRITE要求を受け付けた場合、データとBCCとの整合性がとれていれば、コントローラ111は、正常にREAD処理及びWRITE処理を完了することができる。しかし、工場出荷時など、HDDの各セクタに記録されたデータとBCCとの整合性がとれていない場合がある。この整合性をとる処理としてフォーマットがある。
HDDの容量増加に伴ってフォーマットにかかる時間は長くなってきており、運用開始前にフォーマットを実施すると運用開始までに長時間待たされることになる。また、運用中にフォーマットをバックグラウンドで実施する場合、フォーマットの処理により負荷が増大するため、アクセスに対する応答が遅れるなどの影響が生じうる。
フォーマットの実施後にWRITE処理を実行する場合、nullデータ及びBCCの書き込み処理、整合性の確認処理、書き込みデータによる書き換え処理が順次行われることになり冗長である。この冗長な処理が負荷を高める要因の1つになっている。このような書き込み、読み出し、書き込みという3ステップの処理を経ずに上述した整合性を確保できる機能を実現すれば、運用中の負荷増大を抑制しつつ、運用開始前のフォーマットを省略することができる。
第2実施形態に係るストレージ装置110は、上記のような冗長な処理を回避し、運用開始までの待ち時間の短縮、及びバックグラウンド処理による運用中の性能低下の抑制を実現する機能を有する。この機能は、例えば、旧製品から新製品に置き換える際に行われるデータの移行や、テープ媒体から新たに追加したHDDにデータを復元する場合など、バックグラウンドでデータをコピーする場合などにも高い効果が期待できる。
以下、上記のようなストレージ装置110について、さらに説明する。
[2−2.ハードウェア]
ここで、図3を参照しながら、サーバ101a、101bのハードウェアについて説明する。図3は、第2実施形態に係るサーバのハードウェアの一例を示した図である。
サーバ101a、101bが有する機能は、例えば、図3に示すハードウェア資源を用いて実現することが可能である。つまり、サーバ101a、101bが有する機能は、コンピュータプログラムを用いて図3に示すハードウェアを制御することで実現される。
図3に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSDやRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、サーバ101a、101bのハードウェアについて説明した。なお、ストレージ装置110や、第1実施形態のストレージ制御装置20の機能も、図3に例示したハードウェアの少なくとも一部を利用して実現することが可能である。
[2−3.コントローラの機能]
次に、図4を参照しながら、コントローラ111の機能について説明する。図4は、第2実施形態に係るコントローラが有する機能の一例を示した図である。
コントローラ111は、記憶部131、FCP(Fibre Channel Protocol)/NAS制御部132、RAID制御部133、コピー制御部134、及びキャッシュ制御部135を有する。
なお、記憶部131は、RAMなどの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。FCP/NAS制御部132、RAID制御部133、コピー制御部134、及びキャッシュ制御部135は、CPUやDSPなどのプロセッサである。但し、FCP/NAS制御部132、RAID制御部133、コピー制御部134、及びキャッシュ制御部135は、ASICやFPGAなどの電子回路であってもよい。FCP/NAS制御部132、RAID制御部133、コピー制御部134、及びキャッシュ制御部135は、例えば、記憶部131又は他のメモリに記憶されたプログラムを実行する。
記憶部131は、LUN管理テーブル(TBL)131a及びFMT管理テーブル(TBL)131bの情報を記憶する記憶領域を有する。
(LUN管理テーブル131a)
LUN管理テーブル131aは、図5に示すように、LUN名、LUN領域サイズ、構成DISK名LIST、及び各DISK上の位置・サイズに関する情報を含む。さらに、LUN管理テーブル131aは、LUN領域を区切る区画のブロック数、未フォーマット区画の数、FMT管理テーブル131b上のアドレス、及びFMT管理テーブル131bのサイズに関する情報を含む。なお、図5は、第2実施形態に係るLUN管理テーブルの一例を示した図である。
LUN名は、LUN管理テーブル131aが管理するLUN領域に設定された名称を示す。LUN領域サイズは、LUN領域に含まれるブロック数を示す。構成DISK名LISTは、論理ユニットであるLUN領域に対応する物理記憶領域があるHDDのリスト(例えば、HDDに設定された名称のリスト)を示す。各DISK上の位置・サイズは、LUN領域が設定されたHDD上の位置(例えば、OFFSET値で表現)及びそのサイズを示す。
LUN領域を区切る区画のブロック数は、1つの区画に含まれるブロックの数を示す。1つのLUN領域には複数の区画が設定される。それぞれの区画は複数のブロックで構成される。そのため、LUN管理テーブル131aには、1区画のサイズを示すブロック数の情報が格納される。このブロック数は、例えば、LUN領域の作成時に設定される。
また、LUN領域を区切る区画のブロック数は、RAIDストライプ内のブロック数のn数(nは2以上の整数)に設定される。RAIDストライプはHDDの種類やRAIDグループ112内にあるHDDの数などで変わるため、RAIDストライプ内のブロック数を単位としてLUN領域を区切る区画のブロック数が設定される。なお、RAIDストライプを単位とするとLUN管理テーブル131aのサイズが大きくなりすぎるため、その倍数に設定されることが好ましい。運用上の都合などで第2実施形態に係る技術を適用しない場合(無効)は0とする。
未フォーマット区画の数は、LUN領域のサイズを区画のブロック数で割った値を初期値とし、区画のフォーマットが実施された場合には、その区画の分だけ値が更新される。初期値は、LUN領域に含まれる区画の全数である。そして、フォーマットが済んだ区画の数だけ初期値から1ずつ減算することで、現在の未フォーマット区画の数が得られる。なお、運用上の都合などで第2実施形態に係る技術を適用しない場合(無効)は0とする。
FMT管理TBL上のアドレスは、FMT管理テーブル131bの実体であるビットマップテーブルのアドレスを示す。後述するように、このビットマップテーブルは、ビットを並べたテーブルであり、1つのビットがLUN領域に設定された1つの区画に対応する。そして、各ビットのビット値がフォーマット状態を表す。例えば、ビット値1は未フォーマット状態を表し、ビット値0はフォーマット済みの状態を表す。
FMT管理TBLのサイズは、このビットマップテーブルに含まれるビットの数(ビットサイズ)を表す。なお、運用上の都合などで第2実施形態に係る技術を適用しない場合(無効)は、FMT管理TBL上のアドレスも、FMT管理TBLのサイズも0とする。
(FMT管理テーブル131b)
FMT管理テーブル131bは、図6に示すように、ビット値が並んだビットマップテーブルである。1つのビットは1つの区画に対応する。なお、図6は、第2実施形態に係るフォーマット管理テーブルの更新を示した図である。図6の例は、全てのビットがビット値1(未フォーマット状態)に設定された初期状態から、アドレスA6のビットに対応する区画がフォーマットされた場合の状態に遷移する様子を示している。
ビットマップ上の位置と区画との関係は、上述したLUN管理テーブル131aのFMT管理TBL上のアドレスを参照すれば特定することができる。例えば、ビットマップ上のアドレスA6のビットに対応する区画がフォーマットされた場合、アドレスA6のビットは、未フォーマット状態を表すビット値1からビット値0に書き換えられる。同様に、他の区画がフォーマットされた場合も、その区画に対応するビットのビット値が0に書き換えられる。
再び図4を参照する。
FCP/NAS制御部132は、LUN領域に対するFCP及びNASのI/O制御を実施する。FCではファイバチャネルプロトコル(FCP)が使用され、SCSIコマンドがやり取りされる。一方、NASでは、NFS(Network File System)やCIFS(Common Internet File System)などのファイル共有コマンドがやり取りされる。FCP/NAS制御部132は、これらのプロトコルに従ってサーバ101a、101bとコマンドをやり取りする。
RAID制御部133は、RAIDグループ112の動作を制御する。コピー制御部134は、LUN領域間のデータコピーを制御する。キャッシュ制御部135は、RAIDグループ112に対するI/O実行時にキャッシュメモリ(非図示)を利用して処理を高速化するキャッシュ制御を実施する。
キャッシュメモリは、RAIDグループ112のLUN領域に対するデータの読み書きよりも高速な読み書きが可能な記憶装置である。キャッシュメモリとしては、例えば、コントローラ111に接続された不揮発性メモリ又は揮発性メモリなどが利用される。
例えば、キャッシュ制御部135は、サーバ101aからWRITE要求を受け付けた場合、書き込み対象のデータをキャッシュメモリに書き込む。そして、キャッシュ制御部135は、キャッシュメモリへの書き込みが完了した段階でサーバ101aへ完了応答を返す。また、キャッシュ制御部135は、予め設定されたタイミングでキャッシュメモリに格納されたデータをLUN領域に書き込む。
また、キャッシュ制御部135は、サーバ101aからREAD要求を受け付けた場合、キャッシュメモリに読み出し対象のデータが存在するかを確認する。キャッシュメモリに読み出し対象のデータがある場合、キャッシュ制御部135は、キャッシュメモリからデータを読み出してサーバ101aへ応答する。キャッシュメモリに読み出し対象のデータがない場合、キャッシュ制御部135は、LUN領域からデータを読み出してサーバ101aへ応答する。
(コピー処理の例)
ここで、図7及び図8を参照しながら、コピー制御部134の機能について、さらに説明する。図7は、第2実施形態に係るコピー処理の一例(コピー元の区画サイズ<コピー先の区画サイズ)を示した図である。図8は、第2実施形態に係るコピー処理の一例(コピー元の区画サイズ>コピー先の区画サイズ)を示した図である。
図7の例は、コピー元となるLUN領域に格納されたデータD1、D2を、コピー先となるLUN領域にコピーする場合のコピー方法を示している。LUN領域には複数の区画が設定され、各区画にはLUN領域のブロックが複数割り当てられている。コピー元のLUN領域は、区画サイズが2(つまり、1つの区画の大きさが2ブロック分)の6つの区画を有する。一方、コピー先のLUN領域は、区画サイズが3(つまり、1つの区画の大きさが3ブロック分)の4つの区画を有する。
コピー元のLUN領域の中でブロック番号0、1に割り当てられた区画には、データD1が格納されている。また、ブロック番号2、3に割り当てられた区画、ブロック番号4、5に割り当てられた区画、ブロック番号6、7に割り当てられた区画、及びブロック番号10、11に割り当てられた区画は、未フォーマット領域である。ブロック番号8、9に割り当てられた区画には、データD2が格納されている。
コピー先のLUN領域には、ブロック番号0、1、2に割り当てられた区画、ブロック番号3、4、5に割り当てられた区画、ブロック番号6、7、8に割り当てられた区画、及びブロック番号9、10、11に割り当てられた区画がある。コピー制御部134がデータD1、D2をコピーする前は、いずれの区画も未フォーマット領域である。ここで、コピー制御部134は、同じブロック番号のブロックにデータD1、D2をコピーする。
データD1をコピーする場合、コピー制御部134は、データD1が格納されるコピー先のブロック番号を特定する。また、コピー制御部134は、特定したブロック番号を含む区画を特定する。図7の例では、ブロック番号0、1、2に割り当てられた区画が特定される。ここで、コピー制御部134は、特定した区画にデータD1を格納した際、未フォーマット領域として残る領域のブロック番号を特定し、そのブロック番号に対応する領域がnullデータで埋まるようにデータD1にnullデータを付加する。
図7の例では、データD1をそのままコピーすると、コピー先のブロック番号2に対応する領域が未フォーマット領域となるため、コピー制御部134は、データD1の後ろに1ブロック分のnullデータを付加してデータD1aを作成する。そして、コピー制御部134は、データD1aをコピー先のLUN領域に書き込む。このとき、コピー制御部134は、データD1aについて計算したBCCを共にLUN領域に書き込む。
データD2をコピーする場合、コピー制御部134は、データD2が格納されるコピー先のブロック番号を特定する。また、コピー制御部134は、特定したブロック番号を含む区画を特定する。図7の例では、ブロック番号6、7、8に割り当てられた区画、及びブロック番号9、10、11に割り当てられた区画が特定される。
ここで、コピー制御部134は、特定した区画にデータD2を格納した際、未フォーマット領域として残る領域のブロック番号を特定し、そのブロック番号に対応する領域がnullデータで埋まるようにデータD2にnullデータを付加する。この例では2つの区画が特定されているため、コピー制御部134は、区画毎にnullデータを付加したデータ(データD2a、D2b)を作成する。
図7の例では、データD2のブロック番号8に対応する部分をそのままコピーすると、ブロック番号8を含むコピー先の区画の中で、ブロック番号6、7に対応する領域が未フォーマット領域となる。また、データD2のブロック番号9に対応する部分をそのままコピーすると、ブロック番号9を含むコピー先の区画の中で、ブロック番号10、11に対応する領域が未フォーマット領域となる。
そのため、コピー制御部134は、データD2のブロック番号8に対応する部分の前に2ブロック分のnullデータを付加してデータD2aを作成する。また、コピー制御部134は、データD2のブロック番号9に対応する部分の後ろに2ブロック分のnullデータを付加してデータD2bを作成する。そして、コピー制御部134は、データD2a、D2bをコピー先のLUN領域に書き込む。このとき、コピー制御部134は、データD2a、D2bのそれぞれについて計算したBCCを共にLUN領域に書き込む。
コピー元の区画サイズがコピー先の区画サイズより小さい場合について説明したが、コピー元の区画サイズがコピー先の区画サイズより大きい場合についても同様である。
図8の例は、コピー元となるLUN領域に格納されたデータD3、D4を、コピー先となるLUN領域にコピーする場合のコピー方法を示している。コピー元のLUN領域は、区画サイズが3(つまり、1つの区画の大きさが3ブロック分)の4つの区画を有する。一方、コピー先のLUN領域は、区画サイズが2(つまり、1つの区画の大きさが2ブロック分)の6つの区画を有する。
コピー元のLUN領域には、ブロック番号0、1、2に割り当てられた区画、ブロック番号3、4、5に割り当てられた区画、ブロック番号6、7、8に割り当てられた区画、及びブロック番号9、10、11に割り当てられた区画がある。
コピー元のLUN領域の中でブロック番号0、1、2に割り当てられた区画には、データD3が格納されている。ブロック番号6、7、8に割り当てられた区画には、データD4が格納されている。また、ブロック番号3、4、5に割り当てられた区画、及びブロック番号9、10、11に割り当てられた区画は、未フォーマット領域である。
コピー先のLUN領域には、ブロック番号0、1に割り当てられた区画、ブロック番号2、3に割り当てられた区画、ブロック番号4、5に割り当てられた区画、ブロック番号6、7に割り当てられた区画、ブロック番号8、9に割り当てられた区画、ブロック番号10、11に割り当てられた区画がある。未フォーマット領域である。コピー制御部134がデータD3、D4をコピーする前は、いずれの区画も未フォーマット領域である。ここで、コピー制御部134は、同じブロック番号のブロックにデータD3、D4をコピーする。
データD3をコピーする場合、コピー制御部134は、データD3が格納されるコピー先のブロック番号を特定する。また、コピー制御部134は、特定したブロック番号を含む区画を特定する。図8の例では、ブロック番号0、1に割り当てられた区画、及びブロック番号2、3に割り当てられた区画が特定される。
ここで、コピー制御部134は、特定した区画にデータD3を格納した際、未フォーマット領域として残る領域のブロック番号を特定し、そのブロック番号に対応する領域がnullデータで埋まるようにデータD3にnullデータを付加する。この例では2つの区画が特定されているため、コピー制御部134は、必要に応じてnullデータを付加し、それぞれの区画にサイズが適合するデータ(データD3a、D3b)を作成する。
図8の例では、データD3をそのままコピーすると、コピー先のブロック番号3に対応する領域が未フォーマット領域となる。そのため、コピー制御部134は、データD3の先頭2ブロック分のデータD3aと、末尾1ブロック分のデータの後ろに1ブロック分のnullデータを付加したデータD3bとを作成する。そして、コピー制御部134は、データD3a、D3bをコピー先のLUN領域に書き込む。このとき、コピー制御部134は、データD3a、D3bのそれぞれについて計算したBCCを共にLUN領域に書き込む。
データD4をコピーする場合、コピー制御部134は、データD4が格納されるコピー先のブロック番号を特定する。また、コピー制御部134は、特定したブロック番号を含む区画を特定する。図8の例では、ブロック番号6、7に割り当てられた区画、及びブロック番号8、9に割り当てられた区画が特定される。
この場合、データD3のコピーに関する処理と同様、コピー制御部134は、データD4の先頭2ブロック分のデータD4aと、末尾1ブロック分のデータの後ろに1ブロック分のnullデータを付加したデータD4bとを作成する。そして、コピー制御部134は、データD4a、D4bをコピー先のLUN領域に書き込む。このとき、コピー制御部134は、データD4a、D4bのそれぞれについて計算したエラーチェックコードであるBCCを共にLUN領域に書き込む。
上記のように、コピー制御部134は、未フォーマットの区画に対し、区画のサイズに合わせてnullデータを追加して書き込み対象のデータを直接書き込む。このとき、コピー制御部134は、区画に書き込むデータのBCCを計算し、計算したBCCを共に書き込むことで、区画に格納されたデータとBCCとの整合性が維持される。その結果、事前にフォーマットがされていなくても、書き込み後に正常にREAD処理及びWRITE処理を完了させることが可能になる。
上記の方法によれば、一度の書き込み処理で、書き込み対象のデータの書き込みと、区画毎に残る未フォーマット領域のフォーマットとが完了するため、処理の負担はほとんど増大しない。また、運用開始前のフォーマットが省略できるため、運用開始までの待ち時間が短縮される。また、バックグラウンドでLUN領域全体のフォーマットを一度に実行する場合とは異なり、運用中の負荷増大に伴う他の処理への影響を回避できる。
なお、説明の都合上、ここではLUN領域間におけるデータコピーを例に説明したが、未フォーマットの区画に対するデータの書き込みを実行する際にキャッシュ制御部135も同様の処理を実行する。つまり、キャッシュ制御部135は、キャッシュメモリからLUN領域へデータを書き込む際、書き込み先の区画に適合するように適宜nullデータを付加したデータを生成する。また、キャッシュ制御部135は、生成したデータのBCCを計算し、そのデータと共にLUN領域に書き込む。
以上、コントローラ111の機能について説明した。
上述したコントローラ111の機能によれば、通常の運用時における処理の高速化や効率化に加え、障害発生時におけるRAIDの再構築処理など、フォーマット済みの区画を対象として実行される処理の高速化も期待できる。つまり、上述したコントローラ111の機能によれば、書き込みが生じた区画だけがフォーマット済みの状態になるため、再構築の対象とされる範囲が小さくなる。その結果、短時間で復旧できるようになる。また、各区画に対する書き込み回数が少なくなる分、SSDなどの書き込み回数に制限があるデバイスを利用している場合に、その寿命が延びる可能性もある。
[2−4.処理フロー]
次に、コントローラ111が実行する処理の流れについて説明する。
(LUN作成)
まず、図9を参照しながら、LUN領域の作成に関する処理(LUN作成処理)の流れについて説明する。図9は、第2実施形態に係るLUN作成処理の流れを示したフロー図である。この処理は、主にRAID制御部133が実行する。
(S101)RAID制御部133は、クイックフォーマット用のビットマップを作成する。ビットマップを作成したRAID制御部133は、FCP/NAS制御部132を介してサーバ101a、101bにLUNを公開する。
クイックフォーマットとは、HDDのセクタに対するnullデータ及びBCCの書き込み(初期化)をバックグラウンドで実施する方法である。コントローラ111は初期化の実施中もサーバ101a、101bからアクセスを受けるため、初期化の進捗状況を管理するために各ビットが進捗状況を示すビットマップが利用される。
(S102)RAID制御部133は、フォーマット省略方式を適用するか否かを判定する。フォーマット省略方式とは、図7及び図8のように未フォーマット領域に対し、フォーマットを経ずに書き込みデータを直接書き込む方式である。
フォーマット省略方式を適用するか否かはユーザにより予め設定され、その設定内容を示す情報が記憶部131に格納されている。RAID制御部133は、この情報を参照してフォーマット省略方式を適用するか否かを判定する。フォーマット省略方式を適用する場合、処理はS103へと進む。一方、フォーマット省略方式を適用しない場合、処理はS104へと進む。
(S103)RAID制御部133は、FMT管理テーブル131bを作成し、記憶部131に格納する。このとき、RAID制御部133は、図6(初期状態)に示すように、全てのビットが未フォーマット状態を示すビット値(図6の例では1)で埋められたビットマップをFMT管理テーブル131bとして作成する。FMT管理テーブル131bが記憶部131に格納されることで、フォーマット省略方式が有効化される。S103の処理が完了すると、図9に示した一連の処理は終了する。
(S104)RAID制御部133は、バックグラウンドフォーマット(つまり、クリックフォーマット)を実行する。例えば、RAID制御部133は、コントローラ111がサーバ101a、101bからアクセス要求を受けた場合に、アクセス先の領域を初期化し、初期化の完了をキャッシュ制御部135に通知する。この通知を受けたキャッシュ制御部135が、アクセス要求に応じた処理を実行する。S104の処理が完了すると、図9に示した一連の処理は終了する。
以上、LUN作成処理の流れについて説明した。
(WRITE)
次に、図10及び図11を参照しながら、WRITE処理の流れについて説明する。図10は、第2実施形態に係るWRITE処理の流れを示した第1のフロー図である。図11は、第2実施形態に係るWRITE処理の流れを示した第2のフロー図である。
この処理は、主にキャッシュ制御部135が実行する。なお、説明の都合上、サーバ101aからコントローラ111がWRITE要求を受け付けた場合を例に説明する。
(S111)キャッシュ制御部135は、WRITE要求で指定されたブロック(該当ブロック)がキャッシュ上にあるか否かを判定する。つまり、キャッシュ制御部135は、該当ブロックのデータがキャッシュメモリに格納されているか否かを判定する。該当ブロックがキャッシュ上にある場合、処理はS112へと進む。一方、該当ブロックがキャッシュ上にない場合、処理はS113へと進む。
(S112)キャッシュ制御部135は、キャッシュ上へデータを展開し、サーバ101aへ応答する。つまり、キャッシュ制御部135は、WRITE処理の対象となる書き込みデータをキャッシュメモリ上の該当ブロックに格納し、FCP/NAS制御部132を介して、書き込み完了を示す完了応答をサーバ101aへ送信する。なお、キャッシュメモリ上のデータは、予め設定されたタイミングでキャッシュ制御部135によりRAIDグループ112のHDDに書き込まれる。S112の処理が完了すると、図10及び図11に示した一連の処理は終了する。
(S113)キャッシュ制御部135は、該当ブロックを含むLUN領域のLUN(該当LUN)に対応するFMT管理テーブル131bが有効か否かを判定する。つまり、キャッシュ制御部135は、該当LUNに対応するFMT管理テーブル131bが記憶部131に格納されているか否かを判定する。該当LUNのFMT管理テーブル131bが有効である場合、処理はS114へと進む。一方、該当LUNのFMT管理テーブル131bが有効でない場合、処理はS116へと進む。
(S114)キャッシュ制御部135は、WRITE要求で指定されたLBA(Logical Block Addressing)を基に、書き込み先に対応するFMT管理テーブル131bのビット位置を特定する。つまり、キャッシュ制御部135は、FMT管理テーブル131bから、該当ブロックを含む区画(該当区画)のフォーマット状態を示すビットを特定する。
(S115)キャッシュ制御部135は、特定したビットのビット値を参照し、該当区画がフォーマット済みか否かを判定する。該当区画がフォーマット済みである場合、処理はS116へと進む。一方、該当区画がフォーマット済みでない場合、処理は図11のS117へと進む。
(S116)キャッシュ制御部135は、キャッシュ上へデータを展開し、サーバ101aへ応答する。つまり、キャッシュ制御部135は、WRITE処理の対象となる書き込みデータをキャッシュメモリ上の該当ブロックに格納し、FCP/NAS制御部132を介して、書き込み完了を示す完了応答をサーバ101aへ送信する。なお、キャッシュメモリ上のデータは、予め設定されたタイミングでキャッシュ制御部135によりRAIDグループ112のHDDに書き込まれる。S116の処理が完了すると、図10及び図11に示した一連の処理は終了する。
(S117)キャッシュ制御部135は、該当区画の先頭ブロック番号を特定する。
(S118)キャッシュ制御部135は、フォーマット用データ(nullデータ及びそのBCC)を準備する。
(S119)キャッシュ制御部135は、nullデータ、BCC、ブロック番号、個数、及びWRITEのみの動作モードを指定し、マージ制御を実施する。マージ制御とは、該当区画のサイズに応じて適宜書き込みデータにnullデータを付加し、nullデータを付加した書き込みデータに基づくBCCを計算する処理である。
WRITEのみの動作モードとは、該当区画に書き込まれている古いデータ及びそのBCCを読み出す処理を実行せず、直ちに書き込みデータを該当区画に書き込む処理を実行する動作モードである。キャッシュ制御部135は、図7及び図8の例と同様に、WRITE要求されたデータの前後に必要に応じてnullデータを付加して新たな書き込みデータを生成し、このデータについて計算したBCCと共に、この新たな書き込みデータを該当区画に書き込む。
(S120)キャッシュ制御部135は、該当区画に対応するFMT管理テーブル131bのビット(該当ビット)を更新する。S117からS119の処理は、実質的に該当区画をフォーマットした状態にするから、キャッシュ制御部135は、該当ビットのビット値をフォーマット済みの状態を示す値(例えば、0)に書き換える。
(S121)キャッシュ制御部135は、LUN管理テーブル131aの記録されている情報の中で、未フォーマット区画の数(未フォーマットの状態にある区画数のカウント値)を1減少させる。
(S122)キャッシュ制御部135は、未フォーマット区画の数が0か否かを判定する。未フォーマット区画の数が0の場合、処理はS123へと進む。一方、未フォーマット区画の数が0でない場合、処理はS124へと進む。なお、未フォーマット区画の数が0であるということは、該当LUNのLUN領域全体がフォーマット済みの状態になったことを示す。
(S123)キャッシュ制御部135は、該当LUNに対応するFMT管理テーブル131bを削除する。つまり、LUN領域全体がフォーマット済みの状態になった場合に、キャッシュ制御部135は、そのLUN領域のフォーマット状態を示すFMT管理テーブル131bを削除し、記憶部131の空き容量を増加させる。
(S124)キャッシュ制御部135は、キャッシュ上へデータを展開し、サーバ101aへ応答する。つまり、キャッシュ制御部135は、WRITE処理の対象となる書き込みデータをキャッシュメモリ上の該当ブロックに格納し、FCP/NAS制御部132を介して、書き込み完了を示す完了応答をサーバ101aへ送信する。なお、キャッシュメモリ上のデータは、予め設定されたタイミングでキャッシュ制御部135によりRAIDグループ112のHDDに書き込まれる。S124の処理が完了すると、図10及び図11に示した一連の処理は終了する。
以上、WRITE処理の流れについて説明した。
(READ)
次に、図12を参照しながら、READ処理の流れについて説明する。図12は、第2実施形態に係るREAD処理の流れを示したフロー図である。この処理は、主にキャッシュ制御部135が実行する。なお、説明の都合上、サーバ101aからコントローラ111がREAD要求を受け付けた場合を例に説明する。
(S131)キャッシュ制御部135は、READ要求で指定されたブロック(該当ブロック)がキャッシュ上にあるか否かを判定する。つまり、キャッシュ制御部135は、該当ブロックのデータがキャッシュメモリに格納されているか否かを判定する。該当ブロックがキャッシュ上にある場合、処理はS136へと進む。一方、該当ブロックがキャッシュ上にない場合、処理はS132へと進む。
(S132)キャッシュ制御部135は、該当ブロックを含むLUN領域のLUN(該当LUN)に対応するFMT管理テーブル131bが有効か否かを判定する。つまり、キャッシュ制御部135は、該当LUNに対応するFMT管理テーブル131bが記憶部131に格納されているか否かを判定する。該当LUNのFMT管理テーブル131bが有効である場合、処理はS133へと進む。一方、該当LUNのFMT管理テーブル131bが有効でない場合、処理はS135へと進む。
(S133)キャッシュ制御部135は、READ要求で指定されたLBAを基に、読み出し先に対応するFMT管理テーブル131bのビット位置を特定する。つまり、キャッシュ制御部135は、FMT管理テーブル131bから、該当ブロックを含む区画(該当区画)のフォーマット状態を示すビットを特定する。
(S134)キャッシュ制御部135は、特定したビットのビット値を参照し、該当区画がフォーマット済みか否かを判定する。該当区画がフォーマット済みである場合、処理はS135へと進む。一方、該当区画がフォーマット済みでない場合、処理はS137へと進む。
(S135)キャッシュ制御部135は、キャッシュメモリ上へ該当ブロックにあるデータを読み出す。
(S136)キャッシュ制御部135は、読み出したデータでサーバ101aへ応答する。S136の処理が完了すると、図12に示した一連の処理は終了する。
(S137)キャッシュ制御部135は、nullデータでサーバ101aへ応答する。S137の処理が完了すると、図12に示した一連の処理は終了する。
以上、READ処理の流れについて説明した。
[2−5.応用例]
ここで、上述した第2実施形態に係る技術の応用例について説明する。なお、以下ではバックグラウンドコピー方式、コピーオンライト方式、二重化切離し方式を例に説明するが、同技術の適用範囲はこれらの例に限定されるものではない。
(OPC/QuickOPC)
まず、図13を参照しながら、OPC(One Point Copy)/QuickOPCと呼ばれる方式(バックグラウンドコピー方式)への応用について説明する。図13は、OPC/QuickOPCへの応用について説明するための図である。
OPCは、ある時点で、コピー元のLUN領域の連続するブロック領域を異なるLUN領域(コピー先)にコピーする機能である。この機能は、例えば、図13に示すように、業務用の記憶領域である業務ボリュームから、バックアップ用の記憶領域である複製ボリュームにデータをコピーする用途で利用することができる。この例では、開始指示前の業務ボリュームが複製ボリュームにコピーされている。
OPCは、論理コピー及び物理コピーという2種類のコピー状態を有する。論理コピーは、サーバ101a、101bから受け付けたコピーの要求に対し、物理的にコピーを実行する前に論理的にコピーを完了させ、その完了通知をサーバ101a、101bに返すモードである。一方、物理コピーは、論理コピーが完了した後に物理的にHDD上でコピーを実行する状態である。OPCは、バックグラウンドで実行される。
QuickOPCは、ある時点で、連続するブロック領域をコピーするOPCと同様の仕組みを有する。但し、QuickOPCは、初回のコピー完了後、2回目以降のコピーでは前回コピーを実行した時点からの差分データがある更新ブロックをコピーする。初回のコピーは、全領域の物理コピーを実行する。2回目以降のコピーは、前回から更新した分を対象に物理コピーを実行する。
第2実施形態の技術を適用する場合、コピー元のLUN領域は未フォーマット領域を含みうる。そして、フォーマット済みの領域が物理コピーの対象となる。コピー先のLUN領域は、全領域が未フォーマット領域であるか、OPC又はQuickOPCの実行時に設定された未フォーマットの領域である。
(論理コピー)
OPCを起動した場合、コピー制御部134は、コピー状態を表現するビットマップ(転送用ビットマップ)を生成する。転送用ビットマップは、ブロック領域のデータがコピー済みであるか否かをビット値で表現したものである。転送用ビットマップを生成すると、コピー制御部134は、論理コピーを完了する。
コピー制御部134は、転送用ビットマップを用いたコピー監視とホストI/Oとの排他制御により、論理コピーが完了した時点におけるコピー元の領域に格納されたデータと同じ内容のデータをコピー先の領域に生成する。
QuickOPCを起動した場合、コピー制御部134は、転送用ビットマップと、更新状態を表すビットマップ(差分用ビットマップ)を生成する。差分用ビットマップは、ブロック領域の更新状態をビット値で表現したものである。転送用ビットマップ及び差分用ビットマップを生成すると、コピー制御部134は、初期の論理コピーを完了する。
コピー制御部134は、コピー元の未フォーマット領域を「コピー完了」とする。これにより、コピーの対象領域を減らすことができる。なお、コピー元のLUN領域とコピー先のLUN領域との間で区画サイズが異なる場合、コピー制御部134は、コピー先の区画サイズに合わせて調整した領域を「コピー完了」とする(図7及び図8参照)。
(物理コピー)
論理コピー完了後、コピー制御部134は、コピー元の領域にあるデータをコピー先の領域へと順次物理的にコピーする。そして、コピー制御部134は、物理コピーが完了した領域に対応する転送用ビットマップのビット値を「コピー完了」のものに変更する。
コピー先への書き出しは、コピー元から読み出したデータをキャッシュメモリに書き出すことにより開始される。コピー制御部134は、キャッシュメモリに該当区画のサイズ分の初期化データ(nullデータ及びBCC)を準備し、書き込み対象のデータをマージする。また、コピー制御部134は、予め設定されたタイミング(例えば、書き込みデータのデータ量が閾値を超えた場合、ホストI/Oが一定時間停止した場合、書き込みデータが一定時間以上キャッシュメモリに常駐している場合など)でHDDに書き込む。
OPCの場合、コピー制御部134は、LUN領域全体の物理コピーが完了すると、フォーマット状態を示すビットマップを削除して記憶容量を開放する。QuickOPCの場合、コピー制御部134は、LUN領域全体の物理コピーが完了しても、トラッキング状態としてビットマップを継続して維持する。なお、コピー状態を表す転送用ビットマップは維持される。
QuickOPCでは、初期の論理コピーが完了した後、コピー元の領域及びコピー先の領域でWRITE処理が発生した場合、差分用ビットマップを用いて更新箇所の情報が保持される。初期の論理コピーが完了した後、コピー元の未コピー領域にWRITE要求が発生した場合、WRITE処理前のデータが直ちにコピー先の領域にコピーされ、その後、WRITE要求の処理が実行される。この場合、該当する領域の転送用ビットマップは「コピー完了」に変更され、差分ビットマップが「更新あり」に変更される。
また、QuickOPCでは、既に起動済みのQuickOPCセッションに対し、ホストコンピュータから再起動の指示を受けた場合に、コピー制御部134は、差分ビットマップに記録された更新部分をコピー先にコピーする。これらの制御を実施することで、コピー先の事前物理フォーマットが不要となるため、時間を節約できる。また、コピー元に未フォーマット領域が存在する場合には、転送されるデータのデータ量をフォーマット済み領域のデータに絞ることができるため、時間の節約や負荷の低減が見込める。
(SnapOPC/SnapOPC+)
次に、図14〜図16を参照しながら、SnapOPC/SnapOPC+と呼ばれる方式(コピーオンライト方式)への応用について説明する。図14は、SnapOPC/SnapOPC+への応用について説明するための第1の図である。図15は、SnapOPC/SnapOPC+への応用について説明するための第2の図である。図16は、SnapOPC/SnapOPC+への応用について説明するための第3の図である。
SnapOPCは、ある時点で、LUN領域の連続するブロック領域(コピー元)を異なるLUN領域のブロック領域(コピー先)として論理的にコピーする。但し、SnapOPCは、OPC/QuickOPCとは異なり更新のあったブロックの更新前のデータをコピー先に移動する。ホストコンピュータが認識するデータのコピー先LUN領域は、更新されていないコピー元ブロック領域と、更新したコピー元ブロック領域の更新前データとを組み合わせて再現される。
この機能は、例えば、図14に示すように、業務用の記憶領域である業務ボリュームから、バックアップ用の記憶領域である複製ボリュームに更新前データをコピーする用途で利用することができる。この例では、開始指示前の業務ボリュームに格納されていたデータの中で、開始指示後に業務ボリューム内で更新された領域に対応する開始指示前のデータが複製ボリュームにコピーされている。
SnapOPC/SnapOPC+では、コピー先に用意する領域は更新量分の容量で足りる。また、SnapOPC/SnapOPC+では、コピー元を更新するごとに、随時、コピー先に旧データが物理コピーされる。
SnapOPC+は、SnapOPCの機能に更新部分を世代管理できる仕組みを設けて改良したものである。この仕組みによれば、SnapOPCでは重複して保持してしまうデータを更新履歴として世代管理するため、より少ないコピー先領域で世代毎のバックアップを実現することができる。また、更新されたデータの差分を更新履歴として世代管理できるため、SnapOPCを利用した定期的なバックアップよりも少ないディスク容量で世代バックアップが可能になるという利点もある。
フォーマット省略方式を採用した場合、コピー元の領域は未フォーマット領域を含みうる。コピー先の領域はLUN領域であり、最初は実データの割当てがなく、コピー元ブロック領域の更新に応じて、適宜、別途用意した複数のLUN領域を含むストレージプールから所要の領域を切出したものが割り当てられる(図15参照)。
例えば、コピー先の領域として割当てられる領域サイズの単位は1GB、2GB、4GBなどから選択されることが多い。但し、ストレージプールに含まれるLUN領域にフォーマット省略方式を採用する場合、LUN領域の区画サイズの倍数に調整される。
フォーマット済み区画で更新が発生した場合、更新があったブロックについて更新前データがコピー先に移動される(図16参照)。未フォーマット区画で書込みが発生した場合、未フォーマット区画に更新前の実データは存在しない。しかし、SnapOPC/SnapOPC+ではサーバから認識するコピー先LUN領域は、更新されていないコピー元ブロックと更新したコピー元ブロックの更新前データを組み合わせて再現される。
そのため、コピー制御部134は、コピー先ブロックに更新前データとしてnullデータを書き出す。コピー制御部134は、WRITE処理の対象となるブロック分のnullデータをコピー先ブロックに書き出す。このとき、コピー制御部134は、コピー対象のデータと初期化データとをキャッシュ上でマージして書き込む。コピー元の領域に対するWRITE処理も同様に実行される。
なお、コピー元で未フォーマット区画に最初のWRITE要求がされた後、その初期化対象区画に次のWRITE要求がされた場合、コピー制御部134は、キャッシュ制御を通して更新前ブロックのデータ(nullデータ)を得てコピー先に書き込む。HDDへの書き込みが完了してnullデータがキャッシュ上にない場合、コピー制御部134は、HDDから更新前ブロックのデータ(nullデータ)を読出して更新先に書き込む。
上記のように、ストレージプールのLUN領域にフォーマット省略方式を適用した場合、LUN領域の事前物理フォーマットが不要となるため時間を節約できる。また、未フォーマット区画に対するWRITE処理が続く場合、更新前データ(nullデータ)がキャッシュ上でヒットする可能性が高く、コピー先の領域に対する更新前データ(nullデータ)のWRITE処理に要する時間が短くなるという利点がある。
(EC)
次に、図17を参照しながら、EC(Equivalent Copy)と呼ばれる方式(二重化切離し方式)への応用について説明する。図17は、ECへの応用について説明するための図である。
ECは異なるLUN領域上の連続するブロック領域(コピー元)を異なるLUN領域のブロック領域(コピー先)にコピーし、コピー元の領域とコピー先の領域とで二重化状態を作出し、この二重化状態を切離すことによってコピーを作成する技術である。また、ECは、サスペンドとレジュームにより等価状態の一時切り離しと再開を行う仕組みを有する(図17参照)。再開時は、一時切り離し状態におけるコピー元の領域に対する更新・差分データがコピー先に反映される。
フォーマット省略方式を採用した場合、コピー元の領域には未フォーマット領域が含まれうる。フォーマット済み領域が初期コピーの対象となる。コピー先の領域は領域全体が未フォーマット領域に設定されるか、又はEC実行時に動的に未フォーマット領域に設定される。なお、コピー元の領域とコピー先の領域とで初期化の対象区画のサイズが異なる場合、SnapOPC/SnapOPC+の場合と同様に、nullデータの付加による調整が実施される(図7及び図8参照)。
コピー制御部134は、コピー先の領域への書き出しを実行する際、コピー元の領域から読み出したデータをコピー先のシステムにあるキャッシュメモリに書き出す。このとき、コピー制御部134は、キャッシュメモリに該当区画分の初期化データを準備し、コピー対象のデータをマージする。そして、コピー制御部134は、予め設定されたタイミングでコピー先のHDDにキャッシュしたデータを書き出す。
ECの場合、二重化が保たれた状態でサーバからWRITE要求があると、WRITE処理は二重化された両方の領域に対して行われる。フォーマット省略方式を採用する場合、二重化状態の構築中、又は、等価性維持状態でWRITE要求が未フォーマット区画に対してされた場合、コピー制御部134は、二重化された両方の領域に対して初期化データをマージした書き込み対象のデータを書き込む。
サスペンドを指示し、等価性維持状態の停止又は切り離しをすることで二重化された各領域は、それぞれを対象とする処理で独立して使用できるようになる。コピー元のLUN領域及びコピー先のLUN領域に対する更新状態はビットマップで管理される。レジュームを指示した場合、更新データは、二重化再開後の差分コピーがコピー先のLUN領域に反映される。
フォーマット省略方式を採用した場合、コピー先の事前物理フォーマットが不要となるため、時間を節約できる。また、二重化構築時に初期転送されるデータを、未フォーマット区画を除く領域のデータに絞ることができるため、データ量を低減でき、転送にかかる負荷を低減することができる。
(その他)
変形例として、LUN領域の物理フォーマットをバックグラウンドジョブとして実行し、未フォーマット区画を認識しながら、区画単位で物理フォーマットを行う方法が変形例として考えられる。
上記の変形例では、コントローラ111は、該当LUN領域に対するI/O(ホストI/Oやコピー機能の実施に伴うI/Oなど)が発生したら、そのバックグラウンドジョブの処理を一時停止させる。該当LUN領域に対するI/Oがなくなって一定時間が経過したら、コントローラ111は、バックグラウンドジョブの処理を再開する。そして、コントローラ111は、FMT管理テーブル131bを参照して未フォーマット区画を確認しながら、未フォーマット区画の物理フォーマットを継続実施する。
また、キャッシュ制御部135が、1回の書き込みで該当区画がnullデータ以外のデータで埋まるように書き込みを遅延させるキャッシュ制御を実施するように変形してもよい。この変形によれば、未フォーマット領域に直接nullデータ以外のデータを書き込める機会が増えるため、より効率的に処理負荷を低減することができる。
以上、コントローラ111が実行する処理の流れについて説明した。
上述したコントローラ111の処理によれば、通常の運用時における処理の高速化や効率化に加え、障害発生時におけるRAIDの再構築処理など、フォーマット済みの区画を対象として実行される処理の高速化も期待できる。つまり、上述したコントローラ111の処理によれば、書き込みが生じた区画だけがフォーマット済みの状態になるため、再構築の対象とされる範囲が小さくなる。その結果、短時間で復旧できるようになる。また、各区画に対する書き込み回数が少なくなる分、SSDなどの書き込み回数に制限があるデバイスを利用している場合に、その寿命が延びる可能性もある。
以上、第2実施形態について説明した。
10 サーバ
20 ストレージ制御装置
21 記憶部
21a 管理情報
22 制御部
30 ディスクアレイ
30a 記憶領域
41 第1のデータ
42 第2のデータ
43 第3のデータ
A1a、A1b、A2a、A2b、A3a、A3b アドレス

Claims (6)

  1. 複数の区画を有する記憶領域の各区画に関するフォーマット状態を記した管理情報を記憶する記憶部と、
    前記記憶領域に対する第1のデータの書き込み要求を受け付けたときに、前記管理情報に基づいて該第1のデータの書き込み先を含む前記区画がフォーマット済みであるかを判定し、フォーマットが未済の場合には、前記第1のデータと、所定の第2のデータとを組み合わせて該区画のサイズに適合する第3のデータを生成し、該第3のデータを該区画に書き込む制御を実行する制御部と
    を有する、ストレージ制御装置。
  2. 前記制御部は、生成した前記第3のデータに基づいて該第3のデータのエラーチェックコードを計算し、該第3のデータとともに該エラーチェックコードを書き込む制御を実行する
    請求項1に記載のストレージ制御装置。
  3. 前記制御部は、前記第1のデータの書き込み先を含む前記区画のうち該第1のデータが書き込まれる領域以外の領域に前記第2のデータが埋まるように前記第1のデータと前記第2のデータとを組み合わせて前記第3のデータを生成する
    請求項1に記載のストレージ制御装置。
  4. 前記制御部は、前記記憶領域に対する読み出し要求を受け付けたときに、前記管理情報に基づいて、読み出し先を含む前記区画がフォーマット済みであるかを判定し、フォーマットが未済の場合には、前記第2のデータを用いて前記読み出し要求に応答する
    請求項1に記載のストレージ制御装置。
  5. 前記制御部は、前記管理情報に記された、前記第3のデータが書き込まれた前記区画に関するフォーマット状態をフォーマット済みに変更する
    請求項1に記載のストレージ制御装置。
  6. 前記制御部は、前記管理情報に記されたフォーマット状態が全ての前記区画についてフォーマット済みである場合に前記管理情報を削除する
    請求項1に記載のストレージ制御装置。
JP2015115559A 2015-06-08 2015-06-08 ストレージ制御装置 Pending JP2017004146A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015115559A JP2017004146A (ja) 2015-06-08 2015-06-08 ストレージ制御装置
US15/170,039 US20160357479A1 (en) 2015-06-08 2016-06-01 Storage control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015115559A JP2017004146A (ja) 2015-06-08 2015-06-08 ストレージ制御装置

Publications (1)

Publication Number Publication Date
JP2017004146A true JP2017004146A (ja) 2017-01-05

Family

ID=57451068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015115559A Pending JP2017004146A (ja) 2015-06-08 2015-06-08 ストレージ制御装置

Country Status (2)

Country Link
US (1) US20160357479A1 (ja)
JP (1) JP2017004146A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417205B2 (en) * 2016-06-07 2019-09-17 Sap Se Database system and method of operation thereof

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241904A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd ディスクアレイ装置、及びその制御方法
US20110029728A1 (en) * 2009-07-28 2011-02-03 Lsi Corporation Methods and apparatus for reducing input/output operations in a raid storage system
JP2012014574A (ja) * 2010-07-02 2012-01-19 Fujitsu Ltd ストレージ装置、構成情報保存方法および構成情報保存プログラム
WO2013140492A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 データアクセス方法およびプログラム
US20140325157A1 (en) * 2013-04-26 2014-10-30 Netapp, Inc. Data access request monitoring to reduce system resource use for background operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119201A (en) * 1997-02-19 2000-09-12 International Business Machines Corporation Disk under-run protection using formatted padding sectors
JP2004063023A (ja) * 2002-07-30 2004-02-26 Renesas Technology Corp 半導体記憶装置
JP4751123B2 (ja) * 2005-07-29 2011-08-17 株式会社日立製作所 ストレージシステム、フォーマット方法及びコンピュータプログラム
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
KR20130096881A (ko) * 2012-02-23 2013-09-02 삼성전자주식회사 플래시 메모리 장치
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9582435B2 (en) * 2015-03-23 2017-02-28 Sandisk Technologies Llc Memory system and method for efficient padding of memory pages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241904A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd ディスクアレイ装置、及びその制御方法
US20110029728A1 (en) * 2009-07-28 2011-02-03 Lsi Corporation Methods and apparatus for reducing input/output operations in a raid storage system
JP2012014574A (ja) * 2010-07-02 2012-01-19 Fujitsu Ltd ストレージ装置、構成情報保存方法および構成情報保存プログラム
WO2013140492A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 データアクセス方法およびプログラム
US20140325157A1 (en) * 2013-04-26 2014-10-30 Netapp, Inc. Data access request monitoring to reduce system resource use for background operations

Also Published As

Publication number Publication date
US20160357479A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
US10956289B2 (en) Switching over from using a first primary storage to using a second primary storage when the first primary storage is in a mirror relationship
US10733060B2 (en) Asynchronous local and remote generation of consistent point-in-time snap copies in consistency groups
US7558916B2 (en) Storage system, data processing method and storage apparatus
US9678686B2 (en) Managing sequentiality of tracks for asynchronous PPRC tracks on secondary
JP5461216B2 (ja) 論理ボリューム管理の為の方法と装置
US9098466B2 (en) Switching between mirrored volumes
JP5056747B2 (ja) 記憶領域管理装置、記憶領域管理方法
US10824364B2 (en) Point-in-time snap copy on asynchronous consistency group management
US8090907B2 (en) Method for migration of synchronous remote copy service to a virtualization appliance
JP2013069096A (ja) 制御装置、制御方法およびストレージ装置
US11221955B2 (en) Metadata track selection switching in a data storage system
US20090177916A1 (en) Storage system, controller of storage system, control method of storage system
US11003541B2 (en) Point-in-time copy on a remote system
US11023431B2 (en) Split data migration in a data storage system
US10885061B2 (en) Bandwidth management in a data storage system
JP2017004146A (ja) ストレージ制御装置
US11468091B2 (en) Maintaining consistency of asynchronous replication
US9779002B2 (en) Storage control device and storage system
US20240220378A1 (en) Information processing system and information processing method
US10936194B2 (en) Storage device status management for conflict avoidance in a data storage system
US20230135652A1 (en) Distributed storage system and storage control method
WO2018055751A1 (ja) 計算機システム及び記憶制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190528