説明

制御装置、制御方法およびストレージ装置

【課題】ホスト装置から受け付けたWRITESAMEコマンドに対するホスト装置への応答時間を短縮すること。
【解決手段】ゼロデータ識別情報記憶部3cは、記憶媒体4への書き込み対象のデータブロック5内のデータがゼロデータである場合、データブロック5がゼロデータであることを識別するゼロデータ識別情報を記憶する。制御部3dは、アクセス要求装置2が発行する記憶媒体4の所定の記憶領域に指定数のデータブロック5の書き込みを要求する書き込み要求に関連づけられてアクセス要求装置2から送られてくるデータブロック5内のデータがゼロデータである場合、ゼロデータ識別情報記憶部3cにゼロデータ識別情報を設定し、ゼロデータ識別情報を設定した時点で記憶媒体4への書き込み完了をアクセス要求装置2に応答する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は制御装置、制御方法およびストレージ装置に関する。
【背景技術】
【0002】
近年、コンピュータシステムで取り扱う大容量のデータを記憶する記憶装置を複数用いたストレージ装置が広く使用されている。ストレージ装置は、一例として1つまたは複数の記憶媒体と、これらの記憶媒体に対するデータの書き込みおよびデータの読み出しを制御する制御装置を含む。制御装置のデータの制御方法として、ホスト装置から転送されたデータを、バッファメモリに格納した後に、バッファメモリから記憶媒体にデータを転送する方法が知られている。この制御装置のデータの制御方法では、ホスト装置からバッファメモリにデータを格納するよりも、バッファメモリから記憶媒体にデータを書き込む方が、多くの処理時間を要することが知られている。このため、ホスト装置から制御装置にデータの転送が終了した時点で割り込み信号をホスト装置に転送し、ホスト装置のデータの転送を可能とする技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−20398号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ホスト装置が発行するライトコマンドの1つにホスト装置から転送されたデータブロックを指定された回数分書き込む指示のコマンド(WRITESAMEコマンド)が知られている。WRITESAMEコマンドに対し、制御装置は、ホスト装置から受け取ったデータブロックを1つずつ、指定された回数分、バッファメモリに書き込むという処理を行う。
【0005】
しかしながら、実データをバッファメモリに書き込む分、書き込みが完了するまでに時間がかかり、ホスト装置への応答時間がかかるという問題があった。
本発明はこのような点に鑑みてなされたものであり、ホスト装置から受け付けたWRITESAMEコマンドに対するホスト装置への応答時間を短縮する制御装置、制御方法およびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、記憶媒体へのデータアクセスを制御する装置であり、ゼロデータ識別情報記憶部と、制御部とを有している。
【0007】
ゼロデータ識別情報記憶部は、記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶する。
【0008】
制御部は、アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられてアクセス要求装置から送られてくるデータブロック内のデータがゼロデータである場合、ゼロデータ識別情報記憶部にゼロデータ識別情報を設定し、ゼロデータ識別情報を設定した時点で記憶媒体への書き込み完了をアクセス要求装置に応答する。
【発明の効果】
【0009】
ホスト装置から受け付けた書き込み要求に対するホスト装置への応答時間を短縮することができる。
【図面の簡単な説明】
【0010】
【図1】第1の実施の形態のストレージ装置を示す図である。
【図2】第2の実施の形態のストレージシステムを示すブロック図である。
【図3】第2の実施の形態の制御モジュールの機能を示すブロック図である。
【図4】第2の実施の形態の管理テーブルを説明する図である。
【図5】WRITESAMEビットマップ管理領域を説明する図である。
【図6】WRITE系コマンド処理を示すフローチャートである。
【図7】第2の実施の形態の第1の処理を示すフローチャートである。
【図8】第2の実施の形態の第2の処理を示すフローチャートである。
【図9】WRITESAMEビットマップをダーティビットマップに変換する処理を説明する図である。
【図10】第2の実施の形態のREADコマンド処理を示すフローチャートである。
【図11】第3の実施の形態の管理テーブルを示す図である。
【図12】第3の実施の形態の第1の処理を示すフローチャートである。
【図13】第3の実施の形態の第2の処理を示すフローチャートである。
【図14】第3の実施の形態の第2の処理を示すフローチャートである。
【図15】第3の実施の形態のREADコマンド処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、実施の形態のストレージ装置を、図面を参照して詳細に説明する。まず、第1の実施の形態において開示のストレージ装置を説明する。その後、第2の実施の形態において、開示のストレージ装置をより具体的に説明する。
【0012】
<第1の実施の形態>
図1は、第1の実施の形態のストレージ装置を示す図である。
第1の実施の形態のストレージ装置1は、電気通信回線や、光通信回線等を介してアクセス要求装置2に接続されている。
【0013】
ストレージ装置1は、制御装置3と、記憶媒体4を有している。記憶媒体4は、情報を記憶可能な記憶領域を有する。この記憶媒体4としては、例えば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)等が挙げられる。なお、本実施の形態のストレージ装置1は、1個の記憶媒体4を有するが、記憶媒体の個数は、2個以上であってもよい。
【0014】
アクセス要求装置2は、例えば図1に示すように、記憶媒体4の所定の記憶領域に指定数のデータブロック5の書き込みを要求する書き込み要求(以下、「同一データブロック書き込み要求」と言う)を制御装置3に転送する。また、アクセス要求装置2は、同一データブロック書き込み要求を転送した後に、データブロック5を制御装置3に転送する。
【0015】
制御装置3は、アクセス要求装置2からの記憶媒体4へのデータブロック5の書き込み要求に応じて、記憶媒体4へのデータブロック5の書き込みを制御する。この制御装置3は、データブロック記憶領域3aと、書き込み領域識別情報記憶部3bと、ゼロデータ識別情報記憶部3cと、制御部3dと、記憶媒体制御部3eとを有している。データブロック記憶領域3a、書き込み領域識別情報記憶部3bおよびゼロデータ識別情報記憶部3cは、制御装置3が有するキャッシュメモリ(Cache Memory)が備える記憶領域により実現することができる。また、制御部3dおよび記憶媒体制御部3eは、制御装置3が有するCPU(Central Processing Unit)が備える機能により実現することができる。
【0016】
データブロック記憶領域3aは、記憶媒体4への書き込み対象のデータブロック5を一時的に記憶可能な記憶領域である。
書き込み領域識別情報記憶部3bは、同一データブロック書き込み要求によるデータブロック5の記憶媒体4への書き込み領域を識別する書き込み領域識別情報を記憶する。書き込み領域識別情報の一例としてビットマップが挙げられる。
【0017】
ゼロデータ識別情報記憶部3cは、データブロック5内のデータの全てのビットがゼロ(0)のゼロデータである場合に、データブロック5内のデータがゼロデータであることを識別するゼロデータ識別情報を記憶する。ゼロデータ識別情報の一例としてフラグが挙げられる。
【0018】
制御部3dは、同一データブロック書き込み要求をアクセス要求装置2から受け付けると、同一データブロック書き込み要求に応じた書き込み領域識別情報を書き込み領域識別情報記憶部3bに設定する。
【0019】
また、制御部3dは、同一データブロック書き込み要求を受け付けた後にアクセス要求装置2から転送されるデータブロック5を受け取ると、データブロック5内のデータがゼロデータであるか否かを判断する。データブロック5内のデータがゼロデータである場合、制御部3dは、ゼロデータ識別情報記憶部3cにゼロデータ識別情報を設定する。そして、制御部3dは、ゼロデータ識別情報を設定した時点で記憶媒体4への書き込み完了をアクセス要求装置2に応答する。その後、制御部3dは、ゼロデータの記憶媒体4の書き込み先への書き込みを、記憶媒体制御部3eに通知する。
【0020】
第1の実施の形態の制御装置3は、データブロック5内のデータがゼロデータである場合、ゼロデータ識別情報記憶部3cにフラグを設定した時点で記憶媒体4への書き込み完了をアクセス要求装置2に応答する。従って、受け取ったゼロデータのデータブロックをデータブロック記憶領域3aに書き込んだ後に書き込み完了をアクセス要求装置2に応答する場合に比べ、アクセス要求装置2に応答する時間を短くすることができる。
【0021】
また、制御装置3は、書き込み領域識別情報記憶部3bを有し、制御部3dは、同一データブロック書き込み要求による書き込み領域識別情報を記憶する。従って、制御装置3は、同一データブロック書き込み要求によるデータブロックの記憶媒体4への書き込み領域を識別することができる。
【0022】
ところで、制御部3dは、データブロック5内のデータがゼロデータではない場合、書き込み領域識別情報記憶部3bに記憶されている書き込み領域識別情報に対応して用意されるデータブロック記憶領域3aの書き込み領域の先頭にデータブロック5を書き込む。
【0023】
記憶媒体制御部3eは、制御部3dの通知に応じて、データブロック5を記憶媒体4に書き込む。具体的には、記憶媒体制御部3eは、ゼロデータ識別情報記憶部3cにゼロデータ識別情報が設定されているか否かを判断する。
【0024】
そして、ゼロデータ識別情報が設定されていることを確認すると、記憶媒体制御部3eは、同一データブロック書き込み要求により指定された数だけゼロデータのデータブロック5を複製する。そして、記憶媒体制御部3eは、書き込み領域識別情報記憶部3bに記憶された書き込み領域識別情報に対応する記憶媒体4の記憶領域に複製したゼロデータのデータブロック5を書き込む。また、記憶媒体制御部3eは、ゼロデータ識別情報が設定されていないことを確認すると、書き込み領域識別情報記憶部3bに記憶された書き込み領域識別情報に基づいてデータブロック記憶領域3aの書き込み領域の先頭に記憶されたデータブロック5を、同一データブロック書き込み要求により指定された数だけ複製する。そして、記憶媒体制御部3eは、複製したデータブロック5を書き込み領域識別情報記憶部3bに記憶された書き込み領域識別情報に対応する記憶媒体4の記憶領域に書き込む。
【0025】
記憶媒体制御部3eの処理により、同一データブロック書き込み要求が指定した記憶媒体4の記憶領域に、同一データブロック書き込み要求により指定された数だけデータブロック5が書き込まれる。
【0026】
以下、実施の形態をより具体的に説明する。
<第2の実施の形態>
図2は、第2の実施の形態のストレージシステムを示すブロック図である。
【0027】
ストレージシステム1000は、ホスト装置30と、このホスト装置30にファイバチャネル(FC:Fibre Channel)スイッチ31を介して接続されたストレージ装置100とを有している。なお、図2では1つのホスト装置30がストレージ装置100に接続されているが、複数のホスト装置が、ストレージ装置100に接続されていてもよい。また、ホスト装置30とストレージ装置100は、SAS(Serial Attached SCSI)や、iSCSI等のFC以外の接続方法で接続されていてもよい。
【0028】
ストレージ装置100は、それぞれが複数のHDD20を備えるドライブエンクロージャ(DE:Drive Enclosure)20a、20b、20c、20dと、これらのドライブエンクロージャ20a、20b、20c、20dの物理記憶領域をRAID(Redundant Arrays of Inexpensive/Independent Disks)によって管理する制御モジュール(CM:Controller Module)10a、10bとを有している。なお、本実施の形態では、ドライブエンクロージャ20a、20b、20c、20dが備える記憶媒体としては、HDD20を例示したが、HDD20に限らず、SSD等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20を区別しない場合は、「HDD20群」と言う。HDD20群の総容量は、例えば600GB(Giga Byte)〜240TB(Tera Byte)である。
【0029】
ストレージ装置100は、2つの制御モジュール10a、10bを運用に使用することで、冗長性が確保されている。なお、ストレージ装置100が備える制御モジュールの数は、2つに限定されず、3つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール10aのみを使用した構成であってもよい。
【0030】
制御モジュール10a、10bは、それぞれ制御装置の一例であり、制御モジュール10a、10bは、それぞれ同じハードウェア構成によって実現される。
制御モジュール10aは、内部バスを介してチャネルアダプタ(CA:Channel Adapter)11a、11bに接続されている。制御モジュール10bは、内部バスを介してチャネルアダプタ11c、11dに接続されている。
【0031】
チャネルアダプタ11a、11b、11c、11dは、それぞれファイバチャネルスイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト装置30のチャネルCH1、CH2、CH3、CH4に接続される。チャネルアダプタ11a、11b、11c、11dは、ホスト装置30と制御モジュール10a、10bとの間でデータを送受信するインタフェース機能を提供する。
【0032】
制御モジュール10a、10bは、それぞれ、ホスト装置30からのデータアクセス要求に応じてドライブエンクロージャ20a、20b、20c、20dが有するHDD20の物理記憶領域へのデータアクセスをRAIDによって制御する。
【0033】
制御モジュール10a、10bは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール10aのハードウェア構成を説明する。
制御モジュール10aは、CPU101と、RAM(Random Access Memory)102と、フラッシュROM(Read Only Memory)103と、キャッシュメモリ104と、デバイスアダプタ(DA:Device Adapter)105a、105bとを備えている。
【0034】
CPU101は、フラッシュROM103等に記憶されたプログラムを実行することにより、制御モジュール10a全体を統括的に制御する。RAM102は、CPU101に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュROM103は、不揮発性のメモリであり、CPU101により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【0035】
また、フラッシュROM103は、ストレージ装置100の停電時等にキャッシュメモリ104のデータ記憶領域に記憶されているデータの退避先となる。
キャッシュメモリ104は、ホスト装置30がHDD20群への書き込みを要求したデータや、HDD20群から読み出したデータ等を一時的に記憶する。
【0036】
また、キャッシュメモリ104には、CPU101による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ104としては、例えば、SRAM等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ104の記憶容量は、特に限定されないが、一例として2〜64GB程度である。
【0037】
デバイスアダプタ105a、105bは、ドライブエンクロージャ20a、20b、20c、20dに接続されている。このデバイスアダプタ105a、105bは、ドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群とキャッシュメモリ104との間でデータを送受信するインタフェース機能を提供する。制御モジュール10aは、デバイスアダプタ105a、105bを介してドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群との間でデータの送受信を行う。
【0038】
制御モジュール10aと制御モジュール10bとは図示しないルータを介して接続されている。例えば、HDD20群に書き込みを要求するデータがホスト装置30からチャネルアダプタ11aを介して制御モジュール10aに送信されると、CPU101は、受信したデータをキャッシュメモリ104に格納する。また、CPU101は、データの格納と共に、受信したデータを、ルータを介して制御モジュール10bに送信する。そして、制御モジュール10bは、制御モジュール10bが有するCPUが受信したデータを制御モジュール10bが有するキャッシュメモリに格納する。この処理によって、制御モジュール10a内のキャッシュメモリ104と制御モジュール10b内のキャッシュメモリとに同一のデータが記憶される。
【0039】
ドライブエンクロージャ20a、20b、20c、20dには、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20のうち、1つ、または複数のHDD20により構成されたRAIDグループが形成されている。このRAIDグループは、「論理ボリューム」「仮想ディスク」「RLU(RAID Logical Unit)」等と呼ばれる場合もある。
【0040】
図2では、RAID5を構成するRAIDグループ21を示している。なお、RAIDグループ21を構成するHDD20は、他のHDD20と区別するために、異なる符号(HDD21a、21b、21c、21d)を付している。すなわち、RAIDグループ21は、HDD21a、21b、21c、21dで構成されており、RAID5(3+1)で運用されている。なお、RAIDグループ21のRAID構成は、一例であり、図示のRAID構成に限定されない。例えば、RAIDグループ21は、任意の個数のHDD20を有することができる。また、RAIDグループ21は、RAID6等、任意のRAID方式で構成することができる。
【0041】
RAIDグループ21には、各RAIDの記憶領域が1つまたは複数に論理的に分割されている。論理的に分割した記憶領域には、それぞれLUN(Logical Unit Number)が設定されて(割り当てられて)いる。以下の説明では、ホスト装置30がRAIDグループ21に設定されたLUNのLBA(Logical Block Address)を指定してデータアクセスする場合の制御モジュール10aの処理を説明する。
【0042】
ホスト装置30は、LBA単位のデータブロックを用いて指定したLUNのLBAにデータブロックを書き込むよう制御モジュール10aに指示する。ホスト装置30は、指定したLUNおよびLBAにデータブロックを書き込むよう制御モジュール10aに指示する際に、WRITESAMEコマンドおよびWRITEコマンド(以下、WRITE系コマンドと言う)のいずれかを発行する。
【0043】
WRITEコマンドは、ホスト装置30が用意したデータブロックそのものの書き込みをホスト装置30が制御モジュール10aに指示する際に発行するコマンドである。WRITEコマンドには、データブロックの書き込みを開始するLUNのLBAを指定するデータ、および書き込み対象のデータブロックが含まれている。
【0044】
WRITESAMEコマンドは、RAIDグループ21に設定されたLUNへの複製対象のデータブロックの指定した個数分の書き込みを、ホスト装置30が制御モジュール10aに指示する際に発行するコマンドである。WRITESAMEコマンドには、複製対象のデータブロックの書き込みを開始するLUNのLBAを指定するデータ、および複製対象のデータブロックを連続して書き込むLBAの個数を指定するデータが含まれている。
【0045】
ホスト装置30は、例えばあるLBAからLBA10個分のデータブロックを、指定したLUNに書き込むよう制御モジュール10aに指示する際に、WRITESAMEコマンドを発行する。また、ホスト装置30は、WRITESAMEコマンドを発行する際には、WRITESAMEコマンドの発行後に複製対象のデータブロックをストレージ装置100に送信する。
【0046】
このようなハードウェア構成の制御モジュール10aには、以下のような機能が設けられる。
図3は、第2の実施の形態の制御モジュールの機能を示すブロック図である。
【0047】
制御モジュール10aは、チャネル制御部41と、キャッシュ制御部42と、ディスク制御部43とを有している。キャッシュ制御部42と、ディスク制御部43は、CPU101により実現可能な機能である。なお、キャッシュ制御部42は、書き込み領域識別情報設定部およびゼロデータ識別情報設定部の一例であり、ディスク制御部43は、記憶媒体制御部の一例である。
【0048】
チャネル制御部41は、ホスト装置30から受け付けたWRITESAMEコマンド等の各種コマンドおよび、複製対象のデータブロック等の各種データをキャッシュ制御部42に送る。
【0049】
キャッシュ制御部42は、キャッシュメモリ104のデータ記憶領域をキャッシュページと呼ばれる単位で制御する。各キャッシュページは、RAIDグループ21に設定されたLUNのLBAに関連づけられて使用される。本実施の形態の各キャッシュページは、一例として128個のLBAを有している。1つのLBAは、例えば、512バイト(Byte)である。1つのLBAには、8バイトのBCC(Block Check Code)が付加されている。以下、キャッシュページに展開されたRAIDグループ21に設定されたLUNのLBAそれぞれに対応する記憶領域を「キャッシュページのLBA」と言う。
【0050】
キャッシュ制御部42は、キャッシュページの各LBAに対応する管理テーブルを作成する。この管理テーブルは、キャッシュメモリ104の一部の領域で形成される。管理テーブルを作成することにより、管理テーブルに対応するキャッシュメモリ104のキャッシュページが確保される。
【0051】
そして、キャッシュ制御部42は、ホスト装置30が発行する各種コマンドに応じて管理テーブルおよびキャッシュページを制御する。なお、各種コマンドに応じた処理の詳細は、後に詳述する。
【0052】
図4は、第2の実施の形態の管理テーブルを説明する図である。
管理テーブル42aは、1キャッシュページ分のデータブロックを管理するテーブルである。管理テーブル42aは、ゼロデータフラグ管理領域421aと、ダーティ(Dirty)ビットマップ(bitmap)管理領域422aと、データプレゼント(Data Present)ビットマップ管理領域423aと、WRITESAMEビットマップ管理領域424aとを有している。
【0053】
ゼロデータフラグ管理領域421aは、ホスト装置30から制御モジュール10aが受信したデータブロックのデータがゼロデータである場合、受信したデータブロックのデータがゼロデータであることを識別するゼロデータフラグを管理する領域である。受信したデータブロックのデータがゼロデータである場合、ゼロデータフラグがセットされる。なお、ゼロデータフラグは、ゼロデータ識別情報の一例である。
【0054】
ダーティビットマップ管理領域422aは、キャッシュページのダーティデータブロックが記憶されている箇所を識別するビットマップ(1または0)を管理する領域である。ここでダーティデータブロックは、キャッシュページに記憶されたデータブロックであって、RAIDグループ21を構成するHDD20に書き込まれていないデータブロックである。以下、ダーティビットマップ管理領域422aのビットマップを「ダーティビットマップ」と言う。キャッシュ制御部42は、キャッシュページのダーティデータブロックが記憶されている箇所に対応するダーティビットマップを、“1”に設定する。
【0055】
データプレゼントビットマップ管理領域423aは、キャッシュページのうちデータブロックが記憶されている箇所を識別するビットマップを管理する領域である。キャッシュ制御部42は、キャッシュページのデータブロックが記憶されている箇所に対応するビットマップを、“1”に設定する。キャッシュ制御部42は、例えばホスト装置30からデータの読み出し要求を受け取ると、データプレゼントビットマップ管理領域423aを参照することで、読み出し要求のデータブロックが、管理テーブル42aに対応するキャッシュページに記憶されているか否かを判断することができる。
【0056】
WRITESAMEビットマップ管理領域424aには、WRITESAMEコマンドが指定した複製対象のデータブロックの書き込みを開始するキャッシュページのLBAから、複製対象のデータブロックを複製するLBAの個数分だけ“1”に設定されるビットマップを管理する領域である。以下、WRITESAMEビットマップ管理領域424a内のビットマップを「WRITESAMEビットマップ」と言う。なお、WRITESAMEビットマップは、書き込み領域識別情報の一例である。
【0057】
図5は、WRITESAMEビットマップ管理領域を説明する図である。
図5は、キャッシュ制御部42が、管理テーブル42aを作成することにより確保されたキャッシュページ104aを示している。
【0058】
WRITESAMEビットマップ管理領域424aには、キャッシュページ104aの128個の各LBAに対応するWRITESAMEビットマップが用意されている。
図5では、複製対象のデータブロックの書き込みを開始するLBAをLBA51に指定し、複製対象のデータブロックを書き込むLBAの個数を5つに指定したWRITESAMEコマンドが発行された場合を例示している。キャッシュ制御部42は、LBA51〜55に対応するWRITESAMEビットマップ管理領域424aのWRITESAMEビットマップを“1”に設定する。なお、図5に示すキャッシュページ104aのLBA51〜55は、WRITESAMEコマンドが指定する書き込み対象のLBAの範囲を示すものであり、複製対象のデータブロックがLBA51〜55に実際に書き込まれていることを示している訳ではない。
【0059】
再び図3に戻って説明する。
ディスク制御部43は、ホスト装置30が発行したWRITE系コマンドにより書き込みが指定されるデータブロックを、RAIDグループ21に設定されたLUNに、キャッシュ制御部42の制御とは非同期に書き込む。ディスク制御部43のデータブロックの書き込み方法については、後に詳述する。
【0060】
また、ディスク制御部43は、ホスト装置30の要求に応じて、READコマンドにより指定されたLUNのLBAに記憶されているデータブロックを読み出し、キャッシュメモリ104のデータ記憶領域に書き込む。なお、READコマンドは、ホスト装置30が読み出しを希望するデータが記憶されているLUNおよびLBAを指定し、指定したLUNおよびLBAのデータブロック(以下、「読み出し対象のデータブロック」と言う)の読み出しを希望する際に発行するコマンドである。
【0061】
次に、WRITE系コマンドを受け取った場合の制御モジュール10aの処理(WRITE系コマンド処理)を説明する。
図6は、WRITE系コマンド処理を示すフローチャートである。
【0062】
[ステップS1] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aを参照し、いずれかのWRITESAMEビットマップが“1”に設定されているか否かを判断する。いずれかのWRITESAMEビットマップが“1”に設定されている場合(ステップS1のYes)、ステップS3に遷移する。WRITESAMEビットマップが“1”に設定されていない場合(ステップS1のNo)、ステップS2に遷移する。
【0063】
[ステップS2] キャッシュ制御部42は、WRITESAMEビットマップがいずれも“1”に設定されていない場合のWRITE系コマンドに対する処理(第1の処理)を行う。第1の処理が終了すると、図6の処理を終了する。
【0064】
[ステップS3] キャッシュ制御部42は、いずれかのWRITESAMEビットマップが“1”に設定されている場合のWRITE系コマンドに対する処理(第2の処理)を行う。第2の処理が終了すると、図6の処理を終了する。
【0065】
次に、ステップS2の第1の処理を説明する。
図7は、第2の実施の形態の第1の処理を示すフローチャートである。
[ステップS11] キャッシュ制御部42は、受け取ったWRITE系コマンドが、WRITESAMEコマンドか否かを判断する。受け取ったWRITE系コマンドが、WRITESAMEコマンドである場合(ステップS11のYes)、ステップS12に遷移する。受け取ったWRITE系コマンドが、WRITESAMEコマンドではない場合、すなわち、受け取ったWRITE系コマンドがWRITEコマンドである場合(ステップS11のNo)、ステップS18に遷移する。
【0066】
[ステップS12] キャッシュ制御部42は、ホスト装置30からWRITESAMEコマンドを受け取ると、WRITESAMEコマンドに対応する管理テーブル42aを作成する。管理テーブル42aを作成することにより、管理テーブル42aに対応するキャッシュページ104aが確保される。その後、ステップS13に遷移する。
【0067】
[ステップS13] キャッシュ制御部42は、ステップS11にて受け取ったWRITESAMEコマンドを解析する。そして、キャッシュ制御部42は、WRITESAMEコマンドが指定したLBAから指定した個数分、WRITESAMEビットマップ管理領域424aのWRITESAMEビットマップを“1”に設定する。その後、ステップS14に遷移する。
【0068】
[ステップS14] キャッシュ制御部42は、ホスト装置30が送信した複製対象のデータブロックをチャネル制御部41から受け取ると、ステップS15に遷移する。
[ステップS15] キャッシュ制御部42は、ステップS14にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップS14にて受け取った複製対象のデータブロック内のデータがゼロデータである場合(ステップS15のYes)、ステップS16に遷移する。ステップS14にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合(ステップS15のNo)、ステップS17に遷移する。
【0069】
[ステップS16] キャッシュ制御部42は、ゼロデータフラグ管理領域421aのゼロデータフラグをセットする。その後、ステップS19に遷移する。
[ステップS17] キャッシュ制御部42は、“1”に設定されているWRITESAMEビットマップのうち、先頭のWRITESAMEビットマップに対応するステップS11にて確保したキャッシュページ104aのLBAに、ステップS14にて受け取った複製対象のデータブロックを書き込む。この処理により、ステップS13にて解析したWRITESAMEコマンドが指定するLBAに対応するステップS11にて確保したキャッシュページ104aのLBAに、ステップS14にて受け取った複製対象のデータブロックが書き込まれる。その後、ステップS19に遷移する。
【0070】
[ステップS18] キャッシュ制御部42は、ホスト装置30から受信したデータブロックを、ステップS11にて確保したキャッシュページ104aのWRITEコマンドにより指定されたLBAに書き込む。また、キャッシュ制御部42は、データブロックが書き込まれたキャッシュページ104aのLBAに対応するデータプレゼントビットマップ管理領域423aのビットマップを“1”に設定する。また、データブロックが書き込まれたキャッシュページ104aのLBAに対応するダーティビットマップ管理領域422aのビットマップも“1”に設定する。その後、ステップS19に遷移する。
【0071】
[ステップS19] キャッシュ制御部42は、WRITE系コマンドに対するデータの書き込み完了をホスト装置30に応答する。その後、図7の処理を終了する。
図7に示す処理によると、複製対象のデータブロック内のデータがゼロデータである場合に、キャッシュページ104aにデータブロックを書き込まずにWRITESAMEコマンドに対するデータブロックの書き込み完了をホスト装置30に応答する。従って、受け取ったゼロデータのデータブロックをキャッシュページ104aに書き込んだ後に書き込み完了をホスト装置30に応答する場合に比べ、ホスト装置30に応答する時間を短くすることができる。
【0072】
ところで、図7に示す処理を実行した後に、キャッシュ制御部42は、複製対象のデータブロック内のデータがゼロデータ以外である場合、図7のステップS17にて複製対象のデータブロックを書き込んだキャッシュページ104aのLBAに記憶されているデータブロックを、他のWRITESAMEビットマップが“1”に設定されている場所に対応するキャッシュページ104aのLBAに複製する。そして、キャッシュページ104aのLBAへの複製が終了すると、複製されたデータブロックをキャッシュページ104aの複製されたデータブロックが記憶されているLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。
【0073】
また、キャッシュ制御部42からディスクへの書き込み指示を受け、ディスク制御部43は、図7のステップS14にてホスト装置30が送信した複製対象のデータブロックを、第1の処理とは非同期にWRITE系コマンドにより指定されたLUNのLBAに書き込む。WRITE系コマンドにより指定されたLUNのLBAにデータブロックを書き込む際、ディスク制御部43は、以下の処理を行う。
【0074】
ディスク制御部43は、ゼロデータフラグ管理領域421aを参照する。そして、ディスク制御部43は、複製対象のデータブロック内のデータがゼロデータである場合、図7のステップS13にて“1”に設定したWRITESAMEビットマップに対応するキャッシュページ104aのLBAを特定する。そして、特定したLBAに対応するRAIDグループ21に設定されたLUNのLBAにゼロデータのデータブロックを書き込む。
【0075】
次に、ステップS3の第2の処理を説明する。
図8は、第2の実施の形態の第2の処理を示すフローチャートである。
[ステップS21] キャッシュ制御部42は、ホスト装置30から受け取ったWRITE系コマンドが、WRITESAMEコマンドか否かを判断する。受け取ったWRITE系コマンドが、WRITESAMEコマンドである場合(ステップS21のYes)、ステップS22に遷移する。受け取ったWRITE系コマンドが、WRITESAMEコマンドではない場合、すなわち、WRITEコマンドである場合(ステップS21のNo)、ステップS29に遷移する。
【0076】
[ステップS22] キャッシュ制御部42は、ホスト装置30が送信した複製対象のデータブロックをチャネル制御部41から受け取ると、ステップS23に遷移する。
[ステップS23] キャッシュ制御部42は、ステップS22にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップS22にて受け取った複製対象のデータブロック内のデータがゼロデータである場合(ステップS23のYes)、ステップS24に遷移する。ステップS22にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合(ステップS23のNo)、ステップS26に遷移する。
【0077】
[ステップS24] キャッシュ制御部42は、管理テーブル42aのゼロデータフラグ管理領域421aを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合(ステップS24のYes)、ステップS25に遷移する。ゼロデータフラグがセットされていない場合(ステップS24のNo)、ステップS26に遷移する。
【0078】
[ステップS25] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aを参照する。そして、キャッシュ制御部42は、“1”に設定されているWRITESAMEビットマップと、ステップS21にて受け取ったWRITESAMEコマンドにより“1”に設定されるWRITESAMEビットマップをマージしたWRITESAMEビットマップのパターンを作成する。そして、キャッシュ制御部42は、作成したWRITESAMEビットマップのパターンでWRITESAMEビットマップ管理領域424aを更新する。その後、ステップS31に遷移する。
【0079】
[ステップS26] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aに記憶されているWRITESAMEビットマップにより特定されるデータブロックをダーティデータブロックに変換する。具体的には、キャッシュ制御部42は、WRITESAMEビットマップが“1”に設定されている箇所に対応するキャッシュページ104aのLBAを特定する。そしてキャッシュ制御部42は、特定したLBAに、“1”に設定されている先頭のWRITESAMEビットマップに対応するキャッシュページ104aのLBAに記憶されているデータブロックを展開する。そして、キャッシュ制御部42は、展開したデータブロックが記憶されている箇所に対応するダーティビットマップ管理領域422aのダーティビットマップを“1”に設定する。その後、ステップS27に遷移する。
【0080】
[ステップS27] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aのWRITESAMEビットマップをクリア(全て“0”に設定)する。その後、キャッシュ制御部42は、ステップS21にて受け付けたWRITESAMEコマンドが指定したLBAから指定した個数分、WRITESAMEビットマップ管理領域424aのWRITESAMEビットマップを“1”に設定する。その後、ステップS28に遷移する。
【0081】
[ステップS28] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aの“1”に設定されているWRITESAMEビットマップのうち、先頭のWRITESAMEビットマップに対応するキャッシュページ104aのLBAに、ステップS22にて受け取った複製対象のデータブロックを書き込む。その後、ステップS31に遷移する。
【0082】
[ステップS29] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aを参照する。そして、WRITESAMEビットマップが“1”に設定されている箇所に対応するキャッシュページ104aのLBAのデータブロックを、ディスク制御部43の書き込み方法と同様の方法でキャッシュページ104aのLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。その後、ステップS30に遷移する。
【0083】
[ステップS30] キャッシュ制御部42は、ホスト装置30から受信したデータブロックを、キャッシュページ104aのLBAに書き込む。また、キャッシュ制御部42は、データブロックが書き込まれたキャッシュページ104aのLBAに対応するデータプレゼントビットマップ管理領域423aのビットマップを“1”に設定する。その後、ステップS31に遷移する。
【0084】
[ステップS31] キャッシュ制御部42は、データの書き込み完了をホスト装置30に応答する。その後、図8の処理を終了する。
次に、図8のステップS26の処理を、具体例を用いて説明する。
【0085】
図9は、WRITESAMEビットマップをダーティビットマップに変換する処理を説明する図である。
図9(a)は、WRITESAMEビットマップをダーティビットマップに変換する前のキャッシュページ104a、WRITESAMEビットマップ管理領域424aおよびダーティビットマップ管理領域422aを示している。
【0086】
キャッシュページ104aのLBA51には実データが記憶されている。また、LBA52〜55は、実データは記憶されていないが、WRITESAMEビットマップが“1”に設定されている。
【0087】
図9(b)は、WRITESAMEビットマップをダーティビットマップに変換する途中のキャッシュページ104a、WRITESAMEビットマップ管理領域424aおよびダーティビットマップ管理領域422aを示している。
【0088】
キャッシュ制御部42は、WRITESAMEビットマップを参照し、LBA51に記憶されているデータブロックをLBA52、53、54、55の順にコピーする。そして、コピーが終了すると、LBAに対応するビットのダーティビットマップを“1”に設定する。図9(b)に示す処理により、WRITESAMEビットマップからダーティビットマップへの変換が行われる。変換する途中では、WRITESAMEビットマップ管理領域424aのWRITESAMEビットマップの値は変化しない。
【0089】
図9(c)は、WRITESAMEビットマップをダーティビットマップに変換が終了した時点のキャッシュページ104a、WRITESAMEビットマップ管理領域424aおよびダーティビットマップ管理領域422aを示している。WRITESAMEビットマップからダーティビットマップへの変換が終了すると、ステップS27にて説明したように、WRITESAMEビットマップがクリアされる。
【0090】
次に、制御モジュール10aがホスト装置30からREADコマンドを受信したときの処理(READコマンド処理)を説明する。
図10は、第2の実施の形態のREADコマンド処理を示すフローチャートである。
【0091】
[ステップS41] キャッシュ制御部42は、READコマンドにより指定された読み出し対象のデータブロックがキャッシュメモリ104に存在するか否か(キャッシュヒットするか否か)を判断する。読み出し対象のデータブロックがキャッシュメモリ104に存在する場合(ステップS41のYes)、ステップS42に遷移する。読み出し対象のデータブロックがキャッシュメモリ104に存在しない場合(ステップS41のNo)、ステップS45に遷移する。
【0092】
[ステップS42] キャッシュ制御部42は、WRITESAMEビットマップ管理領域424aを参照し、READコマンドにより指定されるLUNのLBAに対応するビットマップが“1”に設定されているか否かを判断する。読み出し対象のデータブロックにより指定されるLUNのLBAにビットマップが“1”に設定されている場合、すなわち、読み出し対象のデータブロックが、WRITESAMEコマンドの発行により書き込まれたデータである場合、(ステップS42のYes)、ステップS43に遷移する。読み出し対象のデータブロックにより指定されるLUNのLBAにビットマップが“1”に設定されていない場合、すなわち、読み出し対象のデータブロックが、WRITEコマンドの発行により書き込まれたデータブロックである場合(ステップS42のNo)、ステップS46に遷移する。
【0093】
[ステップS43] キャッシュ制御部42は、ゼロデータフラグ管理領域421aを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合(ステップS43のYes)、ステップS44に遷移する。ゼロデータフラグがセットされていない場合(ステップS43のNo)、ステップS47に遷移する。
【0094】
[ステップS44] キャッシュ制御部42は、READコマンドにより指定されるLBAの数だけゼロデータのデータブロックを作成する。そして、キャッシュ制御部42は、作成したゼロデータのデータブロックをホスト装置30に転送する。その後、ステップS49に遷移する。
【0095】
[ステップS45] キャッシュ制御部42は、READコマンドにより指定されるLUNのLBAに基づいて、RAIDグループ21に設定されたLUNのLBAからデータブロックを読み出す。読み出したデータブロックが、読み出し対象のデータブロックとなる。そして、キャッシュ制御部42は、読み出したデータブロックをキャッシュページ104aに書き込む。その後、ステップS46に遷移する。
【0096】
[ステップS46] キャッシュ制御部42は、ステップS45にて読み出した、読み出し対象のデータブロックまたは、キャッシュページ104aに記憶されている読み出し対象のデータブロックをホスト装置30に転送する。その後、ステップS49に遷移する。
【0097】
[ステップS47] キャッシュ制御部42は、図7のステップS17にて書き込んだLBAに書き込まれたデータブロックをキャッシュページ104aから読み出す。そして、読み出したデータブロックを、READコマンドにより指定されるLBAの数だけ複製する。複製されたデータブロックが、読み出し対象のデータブロックとなる。その後、ステップS48に遷移する。
【0098】
[ステップS48] キャッシュ制御部42は、読み出し対象のデータブロックをホスト装置30に転送する。その後、ステップS49に遷移する。
[ステップS49] キャッシュ制御部42は、データの転送完了をホスト装置30に応答する。その後、図10に示す処理を終了する。
【0099】
以上述べたように、制御モジュール10aによれば、キャッシュ制御部42が、データブロック内のデータがゼロデータである場合、ゼロデータフラグ管理領域421aにフラグを設定した時点でデータの転送完了をホスト装置30に応答する。従って、受け取ったゼロデータのデータブロックをキャッシュページ104aに書き込んだ後に書き込み完了をホスト装置30に応答する場合に比べ、ホスト装置30に応答する時間を短くすることができる。
【0100】
また、ホスト装置30に応答する時間を短くしても、ディスク制御部43は、WRITESAMEビットマップを用いることで、RAIDグループ21に設定されたLUNにデータブロックを書き込むことができる。
【0101】
また、キャッシュ制御部42は、READコマンドを受け取った場合は、WRITESAMEビットマップおよびゼロデータフラグを用いることで、ホスト装置30が要求するデータブロックを転送することができる。
【0102】
<第3の実施の形態>
次に、第3の実施の形態のストレージシステムについて説明する。
以下、第3の実施の形態のストレージシステムについて、前述した第2の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【0103】
第3の実施の形態のストレージシステムは、制御モジュール10a、10bが、RAIDグループ21に設定されたLUNにデータを書き込む領域をキャッシュページ単位で管理する。第3の実施の形態のストレージシステムは、制御モジュール10a、10bが備える管理テーブルの構成および、管理テーブルを用いた処理方法が第2の実施の形態と異なっている。
【0104】
図11は、第3の実施の形態の管理テーブルを示す図である。
第3の実施の形態の管理テーブル42bは、フラグ管理領域421bと、ダーティビットマップ管理領域422bと、データプレゼントビットマップ管理領域423bとを有している。
【0105】
フラグ管理領域421bには、SAMEデータフラグと、ゼロデータフラグを管理する領域である。SAMEデータフラグは、ダーティビットマップで示されるデータブロックは、全て同じデータ内容のデータブロックであることを示すフラグである。ゼロデータフラグは、ダーティビットマップで示されるデータブロックが、全てゼロデータのデータブロックであることを示すフラグである。
【0106】
ダーティビットマップ管理領域422bと、データプレゼントビットマップ管理領域423bの機能は、ダーティビットマップ管理領域422aと、データプレゼントビットマップ管理領域423aと同じであるため説明を省略する。
【0107】
この管理テーブル42bでは、管理テーブル42aに比べてWRITESAMEビットマップ管理領域が省略されているため、キャッシュメモリ104の記憶領域に占める管理テーブル42bの割合を、管理テーブル42aに比べ少なくすることができる。
【0108】
次に、第3の実施の形態の制御モジュール10aの第1の処理を説明する。
図12は、第3の実施の形態の第1の処理を示すフローチャートである。
[ステップS51] キャッシュ制御部42は、ホスト装置30からWRITESAMEコマンドを受け取ると、WRITESAMEコマンドに対応する管理テーブル42bを作成する。管理テーブル42bを作成することにより、管理テーブル42bに対応するキャッシュページが確保される。その後、ステップS52に遷移する。
【0109】
[ステップS52] キャッシュ制御部42は、受け取ったWRITE系コマンドが、WRITESAMEコマンドか否かを判断する。受け取ったWRITE系コマンドが、WRITESAMEコマンドである場合(ステップS52のYes)、ステップS53に遷移する。受け取ったWRITE系コマンドが、WRITESAMEコマンドではない場合、すなわち、WRITEコマンドである場合(ステップS52のNo)、ステップS61に遷移する。
【0110】
[ステップS53] キャッシュ制御部42は、管理テーブル42bのダーティビットマップ管理領域422bを参照し、“1”に設定されているダーティビットマップが存在するか否か、すなわち、ダーティデータブロックがキャッシュページ104aに存在するか否かを判断する。“1”に設定されているダーティビットマップが存在する場合(ステップS53のYes)、ステップS54に遷移する。“1”に設定されているダーティビットマップが存在しない場合(ステップS53のNo)、ステップS55に遷移する。
【0111】
[ステップS54] キャッシュ制御部42は、ダーティビットマップにより特定されるキャッシュページ104aのダーティデータブロックを、特定したダーティデータブロックが記憶されているLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。その後、ステップS55に遷移する。
【0112】
[ステップS55] キャッシュ制御部42は、ホスト装置30が送信した複製対象のデータブロックをチャネル制御部41から受け取ると、ステップS56に遷移する。
[ステップS56] キャッシュ制御部42は、WRITESAMEコマンドに含まれるLBAに対応するダーティビットマップを“1”に設定する。その後、ステップS57に遷移する。
【0113】
[ステップS57] キャッシュ制御部42は、ステップS55にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップS55にて受け取った複製対象のデータブロック内のデータがゼロデータである場合(ステップS57のYes)、ステップS58に遷移する。ステップS55にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合(ステップS57のNo)、ステップS59に遷移する。
【0114】
[ステップS58] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bのゼロデータフラグをセットする。その後、ステップS62に遷移する。
[ステップS59] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bのSAMEデータフラグをセットする。その後、ステップS60に遷移する。
【0115】
[ステップS60] キャッシュ制御部42は、“1”に設定されているダーティビットマップのうち、先頭のダーティビットマップに対応するステップS51にて確保したキャッシュページ104aのLBAに、ステップS55にて受け取った複製対象のデータブロックを書き込む。その後、ステップS62に遷移する。
【0116】
[ステップS61] キャッシュ制御部42は、ホスト装置30から受信したデータブロックを、ステップS51にて作成した管理テーブル42bに対応するキャッシュメモリ104のデータ記憶領域に書き込む。また、キャッシュ制御部42は、データブロックが書き込まれたキャッシュページ104aのLBAに対応するデータプレゼントビットマップ管理領域423aのビットマップを“1”に設定する。その後、ステップS62に遷移する。
【0117】
[ステップS62] キャッシュ制御部42は、WRITESAMEコマンドに対するデータの書き込み完了をホスト装置30に応答する。その後、図12の処理を終了する。
キャッシュ制御部42は、複製対象のデータブロック内のデータがゼロデータ以外である場合、次の処理を行う。ディスク制御部43は、複製対象のデータブロックを書き込んだキャッシュページ104aに記憶されているデータブロックを、キャッシュページ104aのLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。
【0118】
ところで、図12に示す処理を実行した後に、キャッシュ制御部42から、ディスクへの書き込み指示を受け、ディスク制御部43は、図12のステップS55にてホスト装置30が送信した複製対象のデータブロックを、第1の処理とは非同期にWRITE系コマンドにより指定されたLUNのLBAに書き込む。WRITE系コマンドにより指定されたLUNのLBAにデータブロックを書き込む際、ディスク制御部43は、以下の処理を行う。
【0119】
ディスク制御部43は、フラグ管理領域421bのゼロデータフラグを参照する。そして、ディスク制御部43は、複製対象のデータブロック内のデータがゼロデータである場合、管理テーブル42bに対応するキャッシュページ104aのLBAに対応するRAIDグループ21に設定されたLUNのLBAにゼロデータのデータブロックを書き込む。
【0120】
次に、第3の実施の形態の第2の処理を説明する。
図13および図14は、第3の実施の形態の第2の処理を示すフローチャートである。
[ステップS71] キャッシュ制御部42は、ホスト装置30から受け取ったWRITE系コマンドが、WRITESAMEコマンドか否かを判断する。受け取ったWRITE系コマンドが、WRITESAMEコマンドである場合(ステップS71のYes)、ステップS72に遷移する。受け取ったWRITE系コマンドが、WRITESAMEコマンドではない場合、すなわち、WRITEコマンドである場合(ステップS71のNo)、ステップS84に遷移する。
【0121】
[ステップS72] キャッシュ制御部42は、ホスト装置30が送信した複製対象のデータブロックをチャネル制御部41から受け取ると、ステップS73に遷移する。
[ステップS73] キャッシュ制御部42は、ステップS72にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップS72にて受け取った複製対象のデータブロック内のデータがゼロデータである場合(ステップS73のYes)、ステップS74に遷移する。ステップS72にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合(ステップS73のNo)、ステップS76に遷移する。
【0122】
[ステップS74] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合(ステップS74のYes)、ステップS75に遷移する。ゼロデータフラグがセットされていない場合(ステップS74のNo)、ステップS78に遷移する。
【0123】
[ステップS75] キャッシュ制御部42は、ダーティビットマップ管理領域422bを参照し、既存のダーティビットマップと、ステップS72にて受け取ったWRITESAMEコマンドにより“1”に設定されるダーティビットマップをマージしたダーティビットマップのパターンを作成する。そして、キャッシュ制御部42は、作成したダーティビットマップのパターンでダーティビットマップ管理領域422bを更新する。その後、ステップS86に遷移する。
【0124】
[ステップS76] キャッシュ制御部42は、管理テーブル42bのダーティビットマップ管理領域422bを参照し、ダーティビットマップの先頭のLBAに対応するデータブロックを、キャッシュページ104aから読み出す。その後、ステップS77に遷移する。
【0125】
[ステップS77] キャッシュ制御部42は、ステップS76にて読み出したデータブロックが、ステップS72にて受け取ったデータブロックと同一か否かを判断する。ステップS76にて読み出したデータブロックが、ステップS72にて受け取ったデータブロックと同一である場合(ステップS77のYes)、ステップS75に遷移する。ステップS76にて読み出したデータブロックが、ステップS72にて受け取ったデータブロックと同一ではない場合(ステップS77のNo)、ステップS78に遷移する。
【0126】
[ステップS78] キャッシュ制御部42は、ダーティビットマップにより特定されるキャッシュページ104aのダーティデータブロックを、特定したダーティデータブロックが記憶されているLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。ステップS79に遷移する。
【0127】
[ステップS79] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bのゼロデータフラグおよびSAMEデータフラグをリセットする。その後、ステップS80に遷移する。
【0128】
[ステップS80] キャッシュ制御部42は、ダーティビットマップ管理領域422bのダーティビットマップをクリアする。その後、キャッシュ制御部42は、ステップS71にて受け付けたWRITESAMEコマンドが指定したLBAから指定した個数分、ダーティビットマップ管理領域422bのダーティビットマップを“1”に設定する。その後、ステップS81に遷移する。
【0129】
[ステップS81] キャッシュ制御部42は、ステップS72にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップS72にて受け取った複製対象のデータブロック内のデータがゼロデータである場合(ステップS81のYes)、ステップS82に遷移する。ステップS81にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合(ステップS81のNo)、ステップS83に遷移する。
【0130】
[ステップS82] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bのゼロデータフラグをセットする。その後、ステップS86に遷移する。
[ステップS83] キャッシュ制御部42は、管理テーブル42bのフラグ管理領域421bのSAMEデータフラグをセットする。その後、ステップS86に遷移する。
【0131】
[ステップS84] キャッシュ制御部42は、ダーティビットマップ管理領域422bを参照する。そして、ダーティビットマップが“1”に設定されている箇所に対応するキャッシュページ104aのLBAのデータブロックを、ディスク制御部43の書き込み方法と同様の方法でキャッシュページ104aのLBAに対応するRAIDグループ21に設定されたLUNのLBAに書き込む。その後、ステップS85に遷移する。
【0132】
[ステップS85] キャッシュ制御部42は、ホスト装置30から受信したデータブロックを、キャッシュページ104aのLBAに書き込む。また、キャッシュ制御部42は、データブロックが書き込まれたキャッシュページ104aのLBAに対応するデータプレゼントビットマップ管理領域423bのビットマップを“1”に設定する。その後、ステップS86に遷移する。
【0133】
[ステップS86] キャッシュ制御部42は、データの書き込み完了をホスト装置30に応答する。その後、図13の処理を終了する。
次に、第3の実施の形態のREADコマンド処理を説明する。
【0134】
図15は、第3の実施の形態のREADコマンド処理を示すフローチャートである。
[ステップS91] キャッシュ制御部42は、READコマンドにより指定された読み出し対象のデータブロックがキャッシュメモリ104に存在するか否か(キャッシュヒットするか否か)を判断する。読み出し対象のデータブロックがキャッシュメモリ104に存在する場合(ステップS91のYes)、ステップS92に遷移する。読み出し対象のデータブロックがキャッシュメモリ104に存在しない場合(ステップS91のNo)、ステップS95に遷移する。
【0135】
[ステップS92] キャッシュ制御部42は、キャッシュ制御部42は、フラグ管理領域421bを参照し、SAMEデータフラグがセットされているか否かを判断する。SAMEデータフラグがセットされている場合、(ステップS92のYes)、ステップS93に遷移する。SAMEデータフラグがセットされていない場合(ステップS92のNo)、ステップS96に遷移する。
【0136】
[ステップS93] キャッシュ制御部42は、フラグ管理領域421bを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合(ステップS93のYes)、ステップS94に遷移する。ゼロデータフラグがセットされていない場合(ステップS93のNo)、ステップS97に遷移する。
【0137】
[ステップS94] キャッシュ制御部42は、READコマンドにより指定されるLBAの数だけゼロデータのデータブロックを作成する。そして、キャッシュ制御部42は、作成したゼロデータのデータブロックをホスト装置30に転送する。その後、ステップS98に遷移する。
【0138】
[ステップS95] キャッシュ制御部42は、READコマンドにより指定されるLUNのLBAに基づいて、RAIDグループ21に設定されたLUNのLBAからデータブロックを読み出す。読み出したデータブロックが、読み出し対象のデータブロックとなる。そして、キャッシュ制御部42は、読み出したデータブロックをキャッシュページ104aに書き込む。その後、ステップS97に遷移する。
【0139】
[ステップS96] キャッシュ制御部42は、図12のステップS60にて書き込んだLBAに書き込まれたデータブロックをキャッシュページ104aから読み出す。そして、読み出したデータブロックを、READコマンドにより指定されるLBAの数だけ複製する。複製されたデータブロックが、読み出し対象のデータブロックとなる。その後、ステップS97に遷移する。
【0140】
[ステップS97] キャッシュ制御部42は、読み出し対象のデータブロックをホスト装置30に転送する。その後、ステップS98に遷移する。
[ステップS98] データの転送完了をホスト装置30に応答する。その後、図15に示す処理を終了する。
【0141】
この第3の実施の形態のストレージシステムによれば、第2の実施の形態のストレージシステムと同様の効果が得られる。
そして、第3の実施の形態のストレージシステムによれば、さらに、管理テーブル42bの容量を、管理テーブル42aに比べて小さくできるため、キャッシュメモリ104の記憶領域に与える影響を小さくすることができる。
【0142】
以上、本発明の制御装置、制御方法およびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0143】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置3、制御モジュール10a、10bが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等が挙げられる。光磁気記録媒体には、MO(Magneto-Optical disk)等が挙げられる。
【0144】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0145】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0146】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
【0147】
以上の第1〜第3の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 記憶媒体へのデータアクセスを制御する制御装置において、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とする制御装置。
【0148】
(付記2) 前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記書き込み要求を前記アクセス要求装置から受け付けると、前記書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定することを特徴とする付記1記載の制御装置。
【0149】
(付記3) 前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていることを確認すると前記書き込み領域識別情報記憶部に記憶された前記書き込み領域識別情報を用いて前記アクセス要求装置から送られてきた前記データブロックを前記記憶媒体に書き込む記憶媒体制御部をさらに有することを特徴とする付記2記載の制御装置。
【0150】
(付記4) 前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていないことを確認すると前記書き込み領域識別情報記憶部に記憶された前記書き込み領域識別情報を用いて前記記憶媒体に書き込むデータブロックを複製し、複製された前記データブロックを前記記憶媒体に書き込む記憶媒体制御部をさらに有することを特徴とする付記2記載の制御装置。
【0151】
(付記5) 前記データブロックを一時的に記憶するデータブロック記憶領域を備えるキャッシュメモリをさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報に対応して用意される前記データブロック記憶領域の書き込み領域の先頭に前記データブロックを書き込み、前記記憶媒体制御部は、前記書き込み領域の先頭に記憶されている前記データブロックを複製することを特徴とする付記4記載の制御装置。
【0152】
(付記6) 前記アクセス要求装置から所定のデータブロックを読み出す要求を受け付けると、前記制御部は、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報が設定されている場合、要求を受け付けた前記データブロックの数だけゼロデータの前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記1記載の制御装置。
【0153】
(付記7) 前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記読み出し要求に応じた前記データブロックに対応する前記書き込み領域識別情報が記憶されている場合、前記ゼロデータ識別情報記憶部を参照することを特徴とする付記6記載の制御装置。
【0154】
(付記8) 前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に前記データブロックを書き込み、
前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていない場合、前記記憶媒体制御部は、前記書き込み領域の先頭に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記1記載の制御装置。
【0155】
(付記9) 前記制御部は、前記書き込み領域識別情報が前記書き込み領域識別情報記憶部に記憶されている状態で、ゼロデータの前記データブロックを指定された数だけ前記記憶媒体に書き込む書き込み要求を前記アクセス要求装置から受け付けると前記ゼロデータ識別情報を参照し、前記ゼロデータ識別情報が設定されている場合、前記書き込み要求に関連づけられて送られてくる前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報にマージし、マージが完了した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答することを特徴とする付記2記載の制御装置。
【0156】
(付記10) 前記制御部は、前記書き込み領域識別情報が前記書き込み領域識別情報記憶部に記憶されている状態で、ゼロデータではないデータが含まれる前記データブロックを指定された数だけ前記記憶媒体に書き込む要求を前記アクセス要求装置から受け付けると、前記書き込み領域識別情報により識別される前記書き込み領域に対応するキャッシュメモリのデータブロック記憶領域に前記書き込み要求に関連づけられて送られてくる前記データブロックを書き込み、前記アクセス要求装置から送られてくる前記データブロックの前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に記憶することを特徴とする付記9記載の制御装置。
【0157】
(付記11) 前記書き込み要求を受け付けたことを識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータではない場合、前記書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定し、前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に、前記データブロックを書き込むことを特徴とする付記1記載の制御装置。
【0158】
(付記12) 前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記書き込み領域識別情報が記憶されている場合、前記読み出し要求に応じた前記データブロックの数だけ前記データブロック記憶領域に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記11記載の制御装置。
【0159】
(付記13) 前記データブロック記憶領域に記憶されている前記データブロックの書き込み領域を識別するメモリ領域識別情報を記憶するメモリ領域識別情報記憶部をさらに有し、
前記制御部は、前記データブロック記憶領域に前記データブロックが書き込まれている状態で、ゼロデータの前記データブロックを指定された数だけ前記記憶媒体に書き込む書き込み要求を前記アクセス要求装置から受け付けると前記ゼロデータ識別情報を参照し、前記ゼロデータ識別情報が設定されている場合、前記書き込み要求に関連づけられて送られてくる前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を、前記メモリ領域識別情報記憶部に記憶されている前記メモリ識別情報にマージし、マージが完了した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答することを特徴とする付記11記載の制御装置。
【0160】
(付記14) 記憶媒体へのデータアクセスを制御する制御方法において、
コンピュータが、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、
前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する、
ことを特徴とする制御方法。
【0161】
(付記15) 記憶媒体と、前記記憶媒体へのデータアクセスを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【0162】
1、100 ストレージ装置
2 アクセス要求装置
3 制御装置
3a データブロック記憶領域
3b 書き込み領域識別情報記憶部
3c ゼロデータ識別情報記憶部
3d 制御部
3e 記憶媒体制御部
4 記憶媒体
5 データブロック
10a、10b 制御モジュール
20 HDD
20a〜20d ドライブエンクロージャ
30 ホスト装置
41 チャネル制御部
42 キャッシュ制御部
42a、42b 管理テーブル
43 ディスク制御部
104 キャッシュメモリ
104a キャッシュページ
421a ゼロデータフラグ管理領域
421b フラグ管理領域
422a、422b ダーティビットマップ管理領域
423a、423b データプレゼントビットマップ管理領域
424a WRITESAMEビットマップ管理領域
1000 ストレージシステム

【特許請求の範囲】
【請求項1】
記憶媒体へのデータアクセスを制御する制御装置において、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とする制御装置。
【請求項2】
前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記書き込み要求を前記アクセス要求装置から受け付けると、前記書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定することを特徴とする請求項1記載の制御装置。
【請求項3】
前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていることを確認すると前記書き込み領域識別情報記憶部に記憶された前記書き込み領域識別情報を用いて前記アクセス要求装置から送られてきた前記データブロックを前記記憶媒体に書き込む記憶媒体制御部をさらに有することを特徴とする請求項2記載の制御装置。
【請求項4】
前記アクセス要求装置から所定のデータブロックを読み出す要求を受け付けると、前記制御部は、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報が設定されている場合、要求を受け付けた前記データブロックの数だけゼロデータの前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする請求項1記載の制御装置。
【請求項5】
前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記読み出し要求に応じた前記データブロックに対応する前記書き込み領域識別情報が記憶されている場合、前記ゼロデータ識別情報記憶部を参照することを特徴とする請求項4記載の制御装置。
【請求項6】
前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に前記データブロックを書き込み、
前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていない場合、前記記憶媒体制御部は、前記書き込み領域の先頭に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする請求項1記載の制御装置。
【請求項7】
記憶媒体へのデータアクセスを制御する制御方法において、
コンピュータが、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、
前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する、
ことを特徴とする制御方法。
【請求項8】
記憶媒体と、前記記憶媒体へのデータアクセスを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とするストレージ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate