(57)【要約】【課題】記憶装置制御装置及びシステムの回路規模低減を実現することを目的とする。【解決手段】一実施形態にかかる記憶装置制御装置は、複数の記憶装置を管理する記憶装置制御装置であって、外部のホストコンピュータが、ストライプ番号と前記複数の記憶装置の数とに基づき行った除算の結果から求めた第１記憶装置番号と第１記憶装置内ストライプ番号を受信する通信部と、前記第１記憶装置番号により特定される記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするアクセス部とを備える。【選択図】図２
2014199591.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置を管理する記憶装置制御装置であって、
外部のホストコンピュータが、ストライプ番号と前記複数の記憶装置の数とに基づき行った除算の結果から求めた第１記憶装置番号と第１記憶装置内ストライプ番号を受信する通信部と、
前記第１記憶装置番号により特定される第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするアクセス部と、
を備える記憶装置制御装置。
【請求項２】
更に計算部と制御部とを有し、
前記計算部は、前記第１記憶装置番号と前記第１記憶装置内ストライプ番号とに基づき、第２記憶装置番号と第２記憶装置内ストライプ番号とを算出し、
前記制御部は、前記アクセス部が前記第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスした後に、前記第１記憶装置番号を前記第２記憶装置番号に更新し、前記第１記憶装置内ストライプ番号を前記第２記憶装置内ストライプ番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第２記憶装置番号により特定される第２記憶装置の前記第２記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項１記載の記憶装置制御装置。
【請求項３】
更に計算部と制御部とを有し、
前記通信部は、前記ホストコンピュータから更に、長さ情報を受信し、
前記計算部は、第１記憶装置内ストライプ番号〜第Ｎ記憶装置内ストライプ番号（Ｎは２以上の整数）までの長さの和が、前記長さ情報により指定された長さ以上になるまで、前記第i記憶装置番号（iは1以上Ｎ-1以下の整数）と前記第i記憶装置内ストライプ番号に基づき、第ｉ＋１記憶装置番号と第ｉ＋１記憶装置内ストライプ番号とを算出し、
前記制御部は、前記アクセス部が前記第i記憶装置番号により特定される第i記憶装置装置の前記第i記憶装置内ストライプ番号により特定される位置にアクセスした後に、前記第i記憶装置番号を前記第i＋1記憶装置番号に更新し、前記第i記憶装置内ストライプ番号を前記第i＋1記憶装置内ストライプ番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第i＋1記憶装置番号により特定される第i＋1記憶装置の前記第i＋1記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項１記載の記憶装置制御装置。
【請求項４】
前記計算部は、
前記第１記憶装置番号に１を加えた番号が前記複数の記憶装置の数で決まる有効な記憶装置番号である場合には、前記第１記憶装置番号に１を加えた番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号と同じ番号を第２記憶装置内ストライプ番号と算出し、
前記第１記憶装置番号に１を加えた番号が前記有効な記憶装置の番号でない場合には、前記複数の記憶装置の記憶装置番号の中で最も小さな記憶装置番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号に１を加えた番号を前記第２記憶装置内ストライプ番号と算出することを特徴とする請求項２記載の記憶装置制御装置。
【請求項５】
前記通信部は、複数の前記記憶装置の数を前記ホストコンピュータに通知することを特徴とする請求項１記載の記憶装置制御装置。
【請求項６】
複数の記憶装置を管理する記憶装置制御装置であって、
外部のホストコンピュータが、ストライプ番号と、複数の前記記憶装置の数から１を引いた数とに基づき行った除算の結果に基づき算出する第１記憶装置番号及び第１記憶装置内ストライプ番号を受信するとともに、前記外部のホストコンピュータが、前記第１記憶装置内ストライプ番号と複数の前記記憶装置の数とに基づく除算の剰余から求めた第１Ａ記憶装置番号を受信する通信部と、
パリティを算出するパリティ演算部と、
前記第１記憶装置番号により特定される第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするとともに、前記第１Ａ記憶装置番号により特定される第１A記憶装置の前記第１記憶装置内ストライプ番号に前記パリティを書き込むアクセス部と、
を備える記憶装置制御装置。
【請求項７】
更に計算部と制御部とを有し、
前記計算部は、前記第１記憶装置番号と前記第１記憶装置内ストライプ番号と前記第１Ａ記憶装置番号とに基づき、第２記憶装置番号と第２記憶装置内ストライプ番号と第２Ａ記憶装置内ストライプ番号とを算出し、
前記制御部は、前記アクセス部が前記第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスし、かつ前記第１Ａ記憶装置番号により特定される第１Ａ記憶装置の前記第１記憶装置内ストライプ番号に前記パリティを書き込んだ後に、前記前記第１記憶装置番号を前記第２記憶装置番号に更新し、前記第１記憶装置内ストライプ番号を前記第２記憶装置内ストライプ番号に更新し、前記第１Ａ記憶装置番号を前記第２Ａ記憶装置番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第２記憶装置番号により特定される第２記憶装置の前記第２記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項６記載の記憶装置制御装置。
【請求項８】
前記計算部は、
前記第１記憶装置番号に１を加えた番号が前記第１Ａ記憶装置番号と一致し、かつ前記第１Ａ記憶装置番号に１を加えた番号が複数の前記記憶装置の数で決まる有効な記憶装置番号である場合には、前記第１Ａ記憶装置番号に１を加えた番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号と同じ番号を第２記憶装置内ストライプ番号と算出し、前記第１Ａ記憶装置番号と同じ番号を前記第２Ａ記憶装置番号と算出し、
前記第１記憶装置番号に１を加えた番号が前記第１Ａ記憶装置番号と一致し、かつ前記第１Ａ記憶装置番号に１を加えた番号が複数の前記記憶装置の数で決まる有効な記憶装置番号でない場合には、複数の前記記憶装置の記憶装置番号の中で最も小さな記憶装置番号を前記第２Ａ記憶装置番号と算出し、前記第２Ａ記憶装置番号に１を加えた番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号に１を加えた番号を前記第２記憶装置内ストライプ番号と算出し、
前記第１記憶装置番号に１を加えた番号が前記第１Ａ記憶装置番号と異なり、かつ複数の前記記憶装置の数で決まる有効な記憶装置番号である場合には、前記第１記憶装置番号に１を加えた番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号と同じ番号を前記第２記憶装置内ストライプ番号と算出し、前記第１Ａ記憶装置番号と同じ番号を前記第２Ａ記憶装置番号と算出し、
前記第１記憶装置番号に１を加えた番号が前記第１Ａ記憶装置番号と異なり、かつ複数の前記記憶装置の数で決まる有効な記憶装置番号でない場合には、複数の前記記憶装置の記憶装置番号の中で最も小さな記憶装置番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号に１を加えた番号を前記第２記憶装置内ストライプ番号と算出し、前記第１Ａ記憶装置番号に１を加えた番号を前記第２Ａ記憶装置番号と算出する
請求項７記載の記憶装置制御装置。
【請求項９】
前記通信部は、前記ホストコンピュータから更に、長さ情報を受信し、
前記計算部は、第１記憶装置内ストライプ番号〜第Ｎ記憶装置内ストライプ番号（Ｎは２以上の整数）までの長さの和が、前記長さ情報により指定された長さ以上になるまで、前記第i記憶装置番号（iは1以上Ｎ-1以下の整数）と前記第i記憶装置内ストライプ番号と前記第iＡ記憶装置番号に基づき、第ｉ＋１記憶装置番号と第ｉ＋１記憶装置内ストライプ番号と第(ｉ＋1)Ａ記憶装置番号とを算出し、
前記制御部は、前記アクセス部が前記第i記憶装置の前記第i記憶装置内ストライプ番号により特定される位置にアクセスした後に、前記第i記憶装置番号を前記第i＋1記憶装置番号に更新し、前記第i記憶装置内ストライプ番号を前記第i＋1記憶装置内ストライプ番号に更新し、前記第iＡ記憶装置番号を前記第(ｉ＋1)Ａ記憶装置番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第i＋1記憶装置番号により特定される第i＋1記憶装置の前記第i＋1記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項６記載の記憶装置制御装置。
【請求項１０】
ホストコンピュータと記憶装置制御装置と複数の記憶装置とを備えるシステムであって、
前記ホストコンピュータは、
ストライプ番号と前記複数の記憶装置の数とに基づき行った除算の結果から求めた第１記憶装置番号と第１記憶装置内ストライプ番号を求める第１計算部と、
前記第１記憶装置番号と前記第１記憶装置内ストライプ番号とを前記記憶装置制御装置に送信する第１通信部とを備え、
前記記憶装置制御装置は、
前記第１記憶装置番号と前記第１記憶装置内ストライプ番号とを受信する第２通信部と、
前記第１記憶装置番号により特定される第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするアクセス部とを備える
記憶装置制御システム。
【請求項１１】
前記記憶装置制御装置は、更に第２計算部と制御部とを有し、
前記第２計算部は、前記第１記憶装置番号と前記第１記憶装置内ストライプ番号とに基づき、第２記憶装置番号と第２記憶装置内ストライプ番号とを算出し、
前記制御部は、前記アクセス部が前記第１記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスした後に、前記第１記憶装置番号を前記第２記憶装置番号に更新し、前記第１記憶装置内ストライプ番号を前記第２記憶装置内ストライプ番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第２記憶装置番号により特定される第２記憶装置の前記第２記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項１０記載の記憶装置制御システム。
【請求項１２】
前記ホストコンピュータの前記第１通信部は、更に、長さ情報を前記記憶装置制御装置に送信し、
前記記憶装置制御装置は、更に第２計算部と制御部とを有し、
前記第２通信部は、前記ホストコンピュータから更に、長さ情報を受信し、
前記第２計算部は、第１記憶装置内ストライプ番号〜第Ｎ記憶装置内ストライプ番号（Ｎは２以上の整数）までの長さの和が、前記長さ情報により指定された長さ以上になるまで、前記第i記憶装置番号（iは1以上Ｎ-1以下の整数）と前記第i記憶装置内ストライプ番号に基づき、第ｉ＋１記憶装置番号と第ｉ＋１記憶装置内ストライプ番号とを算出し、
前記制御部は、前記アクセス部が前記第i記憶装置番号により特定される前記第i記憶装置の前記第i記憶装置内ストライプ番号により特定される位置にアクセスした後に、前記第i記憶装置番号を前記第i＋1記憶装置番号に更新し、前記第i記憶装置内ストライプ番号を前記第i＋1記憶装置内ストライプ番号に更新し、
前記アクセス部は、前記制御部による更新後、前記第i＋1記憶装置番号により特定される第i＋1記憶装置の前記第i＋1記憶装置内ストライプ番号により特定される位置にアクセスすることを特徴とする請求項１０記載の記憶装置制御システム。
【請求項１３】
前記記憶装置制御装置の前記第２計算部は、
前記第１記憶装置番号に１を加えた番号が前記複数の記憶装置の数で決まる有効記憶装置番号である場合には、前記第１記憶装置番号に１を加えた番号を前記第２記憶装置番号と算出し、前記第１記憶装置内ストライプ番号と同じ番号を第２記憶装置内ストライプ番号と算出し、
前記第１記憶装置番号に１を加えた番号が前記有効記憶装置番号でない場合には、前記複数の記憶装置の記憶装置番号の中で最も小さな記憶装置番号を前記第２記憶装置内ストライプ番号と算出し、前記第１記憶装置内ストライプ番号に１を加えた番号を前記第２記憶装置内ストライプ番号と算出することを特徴とする請求項１１記載の記憶装置制御システム。
【請求項１４】
前記記憶装置制御装置の前記第２通信手段は、複数の前記記憶装置の数を前記ホストコンピュータに通知することを特徴とする請求項１０記載の記憶装置制御システム。
【請求項１５】
複数の記憶装置を管理する記憶装置アレイ制御プログラムであって、
外部のホストコンピュータが、ストライプ番号と前記複数の記憶装置の数とに基づき行った除算の結果から求めた第１記憶装置番号と第１記憶装置内ストライプ番号を受信する通信機能と、
前記第１記憶装置番号により特定される記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするアクセス機能と、
を備えるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置制御システム、記憶装置制御装置及びプログラムに関する。
【背景技術】
【０００２】
複数のディスク装置を全体で一つの記憶装置として扱うことができる技術としてRAID(Redundant Arrays of Inexpensive Disks）が知られている。
【０００３】
RAIDを実現するシステムは、複数のディスク装置を備えるディスクアレイと、複数のディスク装置を一つの記憶装置として管理するディスクアレイ制御装置と、当該ディスクアレイ制御装置を介してディスクアレイにアクセスするホスト計算機（例えばＣＰＵ）とを備える。
【０００４】
従来、ディスクアレイにアクセスする場合、ホスト計算機は、ディスクアレイ全体の中の位置を示すストライプ番号を指定していた。そして、ディスクアレイ制御装置が、ホスト計算機から指定されたストライプ番号に基づき、複数のディスクのうちアクセスするディスク装置及びディスク装置内の位置を示すディスク内ストライプ番号を特定し、特定したディスク装置及びディスク内ストライプ番号にアクセスしていた。
【０００５】
ディスクアレイ制御装置は、ストライプ番号からディスク装置及びディスク内ストライプ番号を求めるために除算を行う必要があった。
【０００６】
ディスクアレイ制御装置は、論理回路で作られることが多い。論理回路が除算を行う場合、回路規模が大きくなり、また処理遅延も生じる。また、論理回路のうち、FPGA（Field Programmable Gate Array）は、除算用の回路が設けられていない場合が多い。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第４７６１７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の一側面は、ストライプ番号に基づき、複数の記憶装置群にアクセスする際に、アクセスする記憶装置及び記憶装置内のストライプ番号を特定するための処理を、ホストコンピュータと記憶装置制御装置とで役割分担を上手く行うことで、記憶制御装置を含む記憶装置制御システムの回路規模低減を実現することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面にかかる記憶装置制御装置は、複数の記憶装置を管理する記憶装置制御装置であって、外部のホストコンピュータが、ストライプ番号と前記複数の記憶装置の数とに基づき行った除算の結果から求めた第１記憶装置番号と第１記憶装置内ストライプ番号を受信する通信部と、前記第１記憶装置番号により特定される記憶装置の前記第１記憶装置内ストライプ番号により特定される位置にアクセスするアクセス部とを備える。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態のシステムの構成の概略構成を示す図。
【図２】図１のシステムの詳細を示すブロック図。
【図３】図１のホストコンピュータ１０１の動作を示すフローチャート。
【図４】第１の実施形態及び第２の実施形態における、ストライプ番号とディスク内ストライプ番号とディスク番号との関係を示す図。
【図５】。図１の記憶装置制御装置１０２の動作を示すフローチャート。
【図６】第２の実施形態の変形例における、ストライプ番号とディスク内ストライプ番号とディスク番号との関係を示す図。
【図７】第２の実施形態のシステムの構成の構成を示すブロック図。
【図８】図７のホストコンピュータ１０１の動作を示すフローチャート。
【図９】図７の記憶装置制御装置７００の動作を示すフローチャート。
【図１０】記憶装置制御装置７００の第２計算手段７０２の動作を示すフローチャート。
【図１１】第３の実施形態のシステムの構成の構成を示すブロック図。
【図１２】第３の実施形態のシステムにおける、ストライプ番号とディスク内ストライプ番号とディスク番号との関係を示す図。
【図１３】第３の実施形態の第１の変形例のシステムにおける、ストライプ番号とディスク内ストライプ番号とディスク番号との関係を示す図。
【図１４】第３の実施形態の第２の変形例のシステムにおける、ストライプ番号とディスク内ストライプ番号とディスク番号との関係を示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１２】
（第１の実施形態）
図１は、本発明の第１の実施形態に係わるシステムの概略構成を示すブロック図である。
【００１３】
図１のシステムは、ホストコンピュータ１０１とディスクアレイ制御装置１０２とディスク装置１０３０〜ディスク装置１０３２とを備えている。ホストコンピュータ１０１とディスクアレイ制御装置１０２とは、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓにより接続されている。ディスクアレイ制御装置１０２と１０３０〜ディスク装置１０３２とは、各々、例えば、シリアルＡＴＡやＳＡＳ（Serial Attached SCSI）により接続されている。ディスクアレイ制御装置１０２は複数のポートを備え、複数のポート各々がディスク装置１０３０〜ディスク装置１０３２は各々と接続されていても良い。ディスクアレイ制御装置１０２は、単一のポートを備え、スイッチを介してディスク装置１０３０〜ディスク装置１０３２に接続されていても良い。
【００１４】
ホストコンピュータ１０１は、例えば、プロセッサとメインメモリとを備える装置である。
【００１５】
ディスクアレイ制御装置１０２は、例えば、論理回路により実現される。ディスクアレイ制御装置は、例えば、特にＦＰＧＡ（Field Programmable Gate Array）で実現できる。尚、ディスクアレイ制御装置１０２は、ホストコンピュータ１０１と異なるプロセッサ及びメインメモリにより実現されても良い。
【００１６】
尚、本実施例では、ディスク装置１０３０〜ディスク装置１０３２を例に説明するが、必ずしもＨＤＤ（Hard Disk Drive）などのディスク装置でなくても良い。ＳＳＤ（Solid State Drive）のようなディスクを持たない記憶媒体であっても良い。つまり、ディスク装置は、記憶装置であれば、いずれの装置にも適用できる。
【００１７】
次に、図２を用いて図１のシステムの詳細を説明する。
【００１８】
ホストコンピュータ１０１は、第１計算部２０１と第１通信部１０２とを備える。
【００１９】
第１計算部２０１は、ストライプ番号とディスク装置の台数とに基づき除算を行い、当該除算の結果を用いて、どのディスク装置にアクセスするかを示す第１ディスク番号と、当該ディスク装置の中でアクセスするストライプ番を示す第１ディスク内ストライプ番号とを求める。第１ディスク番号と第１ディスク内ストライプ番号の算出方法は後述する。なお、ホストコンピュータ１０１は、ディスク装置の台数を、予め把握していても良いし、ディスクアレイ制御装置１０２の第２通信部２０３から通知されたものを受け取って把握しても良い。
【００２０】
第１通信部２０２は、第１ディスク番号と前記第１ディスク内ストライプ番号とをディスクアレイ制御装置１０２に送信する。
【００２１】
ディスクアレイ制御装置２０２は、第２通信部２０３とアクセス部２０４とを備える。
【００２２】
第２通信部２０３は、第１ディスク番号と前記第１ディスク内ストライプ番号とを受信する。前述したように、第２通信部２０３は、ディスク装置の台数を、ホストコンピュータ１０１に通知することができても良い。
【００２３】
アクセス部２０４は、第１ディスク番号により特定されるディスク装置の第１ディスク内ストライプ番号により特定される位置にアクセスする。
【００２４】
なお、ディスク装置１０３０〜ディスク装置１０３２は各々のディスク装置を特定するディスク番号が与えられている。また、ディスク装置１０３１〜ディスク装置１０３２は、各々の記憶装置の同一アドレス範囲を示す情報であるディスク内ストライプ番号が割り振られている。つまり、ディスク装置１０３１〜ディスク装置１０３２の同一のディスク内ストライプ番号で示されるアドレス範囲は、同一アドレス範囲となる。尚、ディスク装置１０３１〜ディスク装置１０３２の同一ディスク内ストライプ番号で示されるアドレス範囲は、必ずしも同一アドレス範囲でなくてもよい。ディスク装置１０３１〜ディスク装置１０３２の同一ディスク内ストライプ番号は、それぞれが別のアドレスに対応していても、対応するアドレスの幅が同一であれば良い。
【００２５】
次に、本発明の第１の実施形態のホストコンピュータ１０１及びディスクアレイ制御装置１０２の動作を図３〜図５を用いて説明する。図３はホストコンピュータ１０１の動作を示すフローチャートである。図４は、第１の実施形態におけるストライプ番号とディスク番号とディスク内ストライプ番号との関係を示す図である。図５は、ディスクアレイ制御装置１０２の動作を示すフローチャートである。
【００２６】
図３に示すように、まずホストコンピュータ１０１は、ストライプ番号およびディスク装置１０３０、１０３１、１０３２の台数に基づき、第１ディスク番号および第１ディスク内ストライプ番号を求める（ステップ３０１）。Ｓ３０１において、ホストコンピュータ１０１の第１計算部２０１は、第１ディスク番号を、例えば式１を用いて算出する。また、第１計算部２０１は、ディスク内ストライプ番号を、例えば式２を用いていて算出する。式１において、ｍｏｄ演算子は、ストライプ番号とディスク装置の台数との除算の剰余を表す。
【００２７】
第１ディスク番号＝ストライプ番号  ｍｏｄ  ディスク装置の台数・・・（式１）
第１ディスク内ストライプ番号＝[ストライプ番号÷ディスク装置の台数]・・・（式２）
（[ ]は床関数を表し、[X]は実数X以下の最大の整数と定義される。）
図４を用いて、式１及び２を用いて、ストライプ番号及びディスク装置の台数から第１ディスク番号と第１ディスク内ストライプ番号とを算出する例を説明する。ここで、図４の例では、ディスク装置は３台である。
【００２８】
図４に示すように、式１及び２によって、ストライプ番号、第１ディスク番号、第１ディスク内ストライプ番号との関係は、例えば以下の式のように計算できる。
【００２９】
（ストライプ番号、第１ディスク番号、第１ディスク内ストライプ番号）＝（０、０、０）、（１、１、０）、（２、２、０）、（３．０、１）、（４、１、１）、（５、２、１）・・・（式
４）
ホストコンピュータ１０１は、Ｓ３０１で求めた第１ディスク番号および第１ディスク内ストライプ番号とをディスクアレイ制御装置１０２に対して送信し、ディスクアクセスの指示を行なう（ステップ３０２）。ホストコンピュータ１０１は、複数のストライプ番号に対して、複数の第１ディスク番号と第１ディスク内ストライプ番号との組を求めた場合、複数の第１ディスク番号と第１ディスク内ストライプ番号との組を送信する。
【００３０】
次に、図５を用いて、ディスクアレイ装置制御装置１０２の動作を説明する。
【００３１】
まず通信部２０３は、ホストコンピュータ１０１から、第１ディスク番号および第１ディスク内ストライプ番号を受信する（ステップ４０１）。次に、アクセス部２０４は、ディスク装置１０３０〜１０３２のうち、第１ディスク番号で特定されるディスク装置の第１ディスク内ストライプ番号で示されるアドレスにアクセスする（ステップ４０２）。複数の第１ディスク番号と第１ディスク内ストライプ番号との組を受信した場合は、当該組毎に、第１ディスク番号により特定されるディスク装置の第１ディスク内ストライプ番号により示されるアドレスにアクセスする。
【００３２】
尚、以上の例では、ストライプ番号は０から始まる例を示したが、この例に限られない。例えば、ストライプ番号は３から始まってもよい。
【００３３】
以上、説明したように、第１の実施形態に係わるホストコンピュータ１０１及びディスクアレイ制御装置１０２によれば、ホストコンピュータ１０１が、ディスク制御装置１０２の代わりに、ストライプ番号から第１ディスク番号及び第１ディスク内ストライプ番号を算出するために行う除算を行う。この結果、ディスクアレイ制御装置１０２の回路規模低減することができる。また、論理回路としてFPGAを用いる場合には、除算用の回路を備えないFPGAでもディスク制御装置１０２を実現できるという効果を有する。
【００３４】
＜変形例＞
図６に本実施形態の変形例を説明する図を示す。
【００３５】
図６の例は、２台の装置に全く同じデータを書き込む方式（ＲＡＩＤ１と呼ばれる）場合に適用される例である。
【００３６】
図６の例では、ディスク装置１０３０Ａ及び１０３０Ｂ、ディスク装置１０３１Ａ及び１０３１Ｂ、ディスク装置１０３２Ａ及び１０３２Ｂ、それぞれ２台ずつの装置に同一データが書き込まれる例を示す。
【００３７】
この場合、第１ディスク番号及び第１ディスク内ストライプ番号ともに、式１及び式２において、装置台数÷２とした値を代入した結果を用いて算出することができる。
【００３８】
（第２の実施形態）
次に、第２の実施形態を説明する。
【００３９】
図７は、本発明の第２の実施形態にかかるディスクアレイシステムを示すブロック図である。
【００４０】
図７のシステムは、図１のシステムと比べて、ディスクアレイ制御装置７００の構成が、ディスクアレイ制御装置１０２の構成と異なる、
また、ホストコンピュータ１０１の第１通信部２０１は、第１ディスク番号と第１ディスク内ストライプ番号と合わせて、長さ情報をディスクアレイ制御装置７００に送信する。この場合、ホストコンピュータ１０１は、図４の例で、例えば、先頭のストライプ番号（たとえば、ストライプ番号０）に対する第１ディスク番号と第１ディスク内ストライプ番号を計算し、計算結果に、アクセスしたい長さを示す長さ情報（たとえば、ストライプ番号の数でも良いし、バイト単位でも良い。）を付加してディスクアレイ制御装置７００に送信する。
【００４１】
ディスクアレイ制御装置７００は、ディスクアレイ制御装置１０２と比べて、さらに、制御部７０１と第２計算部７０２とを備える。
【００４２】
第２通信部７０２は、第１ディスク番号と第１ディスク内ストライプ番号と併せて長さ情報を受信する。
【００４３】
第２計算部７０２は、第１ディスク内ストライプ番号〜第Ｎディスク内ストライプ番号（Ｎは２以上の整数）までの長さの和が、長さ情報により指定された長さ以上になるまで、第iディスク番号（iは1以上Ｎ-1以下の整数）と第iディスク内ストライプ番号に基づき、第ｉ＋１記憶装置番号と第ｉ＋１記憶装置内ストライプ番号とを算出する。具体的算出方法は後述する。例えば、第２計算部７０２は、第１ディスク番号と第１ディスク内ストライプ番号とに基づき、第２ディスク番号と第２ディスク内ストライプ番号とを算出する。ここで、第２計算部７０２は、第１ディスク番号に１を加えた番号がディスク装置の台数で決まる有効記憶装置番号（たとえば、ディスク装置の数に応じて決まる最大のディスク番号）である場合には、第１ディスク番号に１を加えた番号を第２ディスク番号と算出し、第１ディスク内ストライプ番号と同じ番号を第２ディスク内ストライプ番号と算出する。一方、第１ディスク番号に１を加えた番号が有効記憶装置番号でない場合には、ディスク装置のディスク番号の中で最も小さなディスク番号を第２ディスク内ストライプ番号と算出し、第１ディスク内ストライプ番号に１を加えた番号を第２ディスク内ストライプ番号と算出する。
【００４４】
制御部７０１は、アクセス部２０４が第iディスク番号により特定される第ディスクの第iディスク内ストライプ番号により特定される位置にアクセスした後に、第iディスク番号を第i＋1ディスク番号に更新し、第iディスク内ストライプ番号を第i＋1ディスク内ストライプ番号に更新する。例えば、制御部７０１は、アクセス部２０４が第１ディスク番号により特定される第１ディスク装置の第１ディスク内ストライプ番号により特定される位置にアクセスした後に、第１ディスク番号を第２ディスク番号に更新し、第１ディスク内ストライプ番号を前記第２ディスク内ストライプ番号に更新する。
【００４５】
アクセス部２０４は、制御部７０１による更新後、第i＋1ディスク番号により特定される第i＋1ディスクの第i＋1ディスク内ストライプ番号により特定される位置にアクセスする。例えば、アクセス部２０４は、制御部７０１による更新後、第２ディスク番号により特定される第２ディスク装置の第２記憶装置内ストライプ番号により特定される位置にアクセスする。
【００４６】
次に、第２の実施形態に係るホストコンピュータ１０１及びディスクアレイ制御装置７００の動作を説明する。図８は、第２の実施形態に係わるホストコンピュータ１０１の動作を示すフローチャートである。図９は、第２の実施形態に係るディスクアレイ制御装置７００の動作を示すフローチャートである。図１０は、第２の実施形態に係るディスクアレイ制御装置１０２の第２計算部７０２の動作の詳細を示すフローチャートである。尚、本実施形態においては、ストライプ番号とディスク番号とディスク内ストライプ番号の説明を、図４を用いて説明する。
【００４７】
まず、図８を用いて、ホストコンピュータ１０１の動作を説明する。
【００４８】
ホストコンピュータ１０１の計算部１０１は、ストライプ番号およびディスク装置１０３０〜１０３２の台数とに基づき除算を行い、第１ディスク番号および第１ディスク内ストライプ番号を求める（ステップ８０１）。例えば、第１ディスク番号は式１に基づき、第１ディスク内ストライプ番号は式２に基づき、算出することができる。例えば、ストライプ番号０に対して、第１ディスク番号０、第１ディスク内ストライプ番号０を求める。本実施例では、ホストコンピュータ１０１は、１つのストライプ番号に対して、１組の第１ディスク番号と第１ディスク内ストライプ番号を求める。
【００４９】
次に、ホストコンピュータ１０１は、Ｓ８０１で算出した第１ディスク番号と第１ディスク内ストライプ番号、および長さ情報をディスクアレイ制御装置７００に送信し、ディスクアクセスの指示を行なう（ステップ８０２）。例えば、長さ情報として、ストライプ番号の数６個に対応する長さとする。
【００５０】
次に、図９及び図１０を用いて、本発明の第２の実施形態に係わるディスクアレイ制御装置１０２の動作について説明する。
【００５１】
第２通信部２０３は、ホストコンピュータ１０１から、第１ディスク番号および第１ディスク内ストライプ番号及び長さ情報を受信する（ステップ９０１）。次に、アクセス部２０４は、ディスク装置１０３１〜１０３２のうち、第１ディスク番号で指定されるディスク装置の第１ディスク内ストライプ番号により特定されるアドレスにアクセスする（ステップ９０２）。
【００５２】
制御部７０１は、ステップ９０２のディスクアクセスを完了した後、ディスクアクセスしたストライプ番号のトータルの長さが、ホストコンピュータ１０１から指示された長さ情報により示される長さに達したか否かを判定する（ステップ９０３）。制御部７０１は、指示された長さに達している場合には、処理を終了する。制御部７０１は、指示された長さに達していない場合には、第１ディスク番号および第１ディスク内ストライプ番号を、第２計算部７０２が計算する第２ディスク番号および第２ディスク内ストライプ番号で置き換える（ステップ９０４）。アクセス部２０４は、置き換えたディスク番号とディスク内ストライプ番号によりＳ９０２の処理を行う。以後、ステップ９０２からステップ９０４の処理を繰り返す。
【００５３】
次に、図１０を用いて、第２計算部７０２の動作を説明する。以下では、第１ディスク番号及び第１ディスク内ストライプ番号から第２ディスク番号及び第２ディスク内ストライプ番号を求める例を説明するが、第i-1ディスク番号と第i-1ディスク内ストライプ番号から第iディスク番号及び第iディスク内ストライプ番号を求める処理一般に適用できる。
【００５４】
まず、第２計算部７０２は、第１ディスク番号に１を加えた番号が、最大のディスク番号以下か否かを判定する（ステップ１００１）。第２計算部７０２は、ステップ１００１で、最大のディスク番号以下と判定した場合には、次のディスク番号である第２ディスク番号を、第１ディスク番号に１を加えた番号とする（ステップ１００２）また、次のディスク内ストライプ番号である第２ディスク内ストライプ番号を、第１ディスク内ストライプ番号と同じ番号にする（ステップ１００３）。一方、ステップ１００１で、最大のディスク番号より大きいと判定した場合には、次のディスク番号である第２ディスク番号を、複数のディスク装置のディスク番号のうち、最初のディスク番号とする（ステップ１００４）。また、次のディスク内ストライプ番号である第２ディスク内ストライプ番号を、第１ディスク内ストライプ番号に１を加えた番号とする（ステップ１００５）。
【００５５】
第２の実施形態に係わるホストコンピュータ１０１及びディスクアレイ制御装置７００によれば、ホストコンピュータ１０１が、ストライプ番号から第１ディスク番号と第１ディスク内ストライプ番号を除算を用いて算出し、ディスクアレイ制御装置７００は、当該第１ディスク番号と第１ディスク内ストライプ番号と長さ情報とに基づき、除算を用いない方法で、第２ディスク番号と第２ディスク内ストライプ番号とを求めている。このように、除算という負荷の高い処理を用いた演算をホストコンピュータ１０１に行わせ、除算を用いないで行う処理をディスクアレイ制御装置７００に行わせることで、ディスクアレイ制御装置７００の回路規模低減を実現できる。その結果、システム全体としての回路規模低減につながる。
【００５６】
（第３の実施形態）
次に、第３の実施形態を説明する。
【００５７】
図１１は、第３の実施形態にかかるディスクアレイシステムの構成を示すブロック図である。
【００５８】
第３の実施形態のホストコンピュータ１０１の第１計算部１０１の機能は第１の実施形態の第１計算部１０１の機能と異なる。
【００５９】
第１計算部１０１は、ストライプ番号と、複数のディスク装置の数から１を引いた数とに基づき除算を行い、第１ディスク番号及び第１ディスク内ストライプ番号を算出する。また、第１計算部１０１は、第１ディスク内ストライプ番号とディスク装置の数とに基づく除算を行い、当該除算の剰余に基づき第１Ａディスク番号を算出する。第１Ａディスク番号を算出した結果、除算により算出した第１ディスク番号が、第１Ａディスク番号と同じまたは第１ディスク番号より大きい場合、除算により算出した第１ディスク番号に１を加算した番号を第１ディスク番号とする。
【００６０】
第３の実施形態では、ディスクアレイ制御装置１１００は、ディスクアレイ制御装置７００の構成と比べて、新たにパリティ演算部１１０３を備える。また、制御部１１０１及び第２計算部１１０２の機能が、ディスクアレイ制御装置７００の制御部７０１と第２計算部１１０２の機能と異なる。
【００６１】
ディスク制御装置１１００の第２通信部２０３は、ホストコンピュータ１０１から第１ディスク置番号、第１ディスク内ストライプ番号、及び第１Ａディスク番号を受信する。
【００６２】
パリティ演算部１０１０３は、パリティを算出する。
【００６３】
アクセス部２０４は、第１ディスク番号により特定される第１ディスク装置の第１ディスク内ストライプ番号により特定される位置にアクセスするとともに、第１Ａディスク番号により特定される第１Aディスク装置の第１ディスク内ストライプ番号にパリティを書き込む。
【００６４】
第２計算部１１０２は、第１ディスク装置番号と第１ディスク内ストライプ番号と第１Aディスク番号とに基づき、第２ディスク置番号と第１ディスク内ストライプ番号と第２Ａディスク番号とを算出する。
【００６５】
制御部１１０２は、アクセス部２０４が第１ディスク番号により特定される第１ディスク装置の第１ディスク内ストライプ番号により特定される位置にアクセスし、かつ第１Ａディスク番号により特定される第１Ａディスク装置の第１ディスク内ストライプ番号にパリティを書き込んだ後に、第１ディスク番号を第２ディスク番号に更新し、第１ディスク内ストライプ番号を第２ディスク内ストライプ番号に更新し、第１Ａディスク番号を前記第２Ａディスク番号に更新する。
【００６６】
アクセス部２０４は、制御部１１０２による更新後、第２ディスク番号により特定される第２ディスク装置の第２ディスク内ストライプ番号により特定される位置にアクセスする。
【００６７】
図１２は、第３の実施形態における、ストライプ番号と、ディスク番号とディスク内ストライプ番号との関係を示す図である。
【００６８】
図１２を用いて、第２計算部１１０２の具体的機能を説明する。
【００６９】
第２計算部１１０２は、第１ディスク番号に１を加えた番号が第１Ａディスク番号と一致し、かつ第１Ａディスク番号に１を加えた番号が複数のディスク装置の数で決まる有効なディスク番号である場合には、第１Ａディスク番号に１を加えた番号を第２ディスク番号と算出し、第１ディスク内ストライプ番号と同じ番号を第２ディスク内ストライプ番号と算出し、第１Ａディスク番号と同じ番号を第２Ａディスク番号と算出する。ここで、有効なディスク番号とは、例えば、ディスク装置の台数によって決まる番号である。図１２の例では、例えば、第１ディスク番号０で、第１ディスク内ストライプ番号が１で、第１Ａディスク番号が１の場合、第２ディスク番号は２、第２Ａディスク番号は１、第２ディスク内ストライプ番号は１となる。
【００７０】
第２計算部１１０２は、第１ディスク番号に１を加えた番号が第１Ａディスク番号と一致し、かつ第１Ａディスク番号に１を加えた番号が複数のディスク装置の数で決まる有効なディスク番号でない場合には、複数のディスク装置のディスク番号の中で最も小さなディスク番号を第２Ａディスク番号と算出し、第２Ａディスク番号に１を加えた番号を第２ディスク番号と算出し、第１ディスク内ストライプ番号に１を加えた番号を第２内ストライプ番号と算出する。図１２の例では、例えば、第１ディスク番号が１で、第１ディスク内ストライプ番号が２で、第１Ａディスク番号が２の場合、第２ディスク番号は１、第２Ａディスク番号は０、第２ディスク内ストライプ番号は３となる。
【００７１】
第２計算部１１０２は、第１ディスク番号に１を加えた番号が第１Ａディスク番号と異なり、かつ複数のディスク装置の数で決まる有効なディスク番号である場合には、第１ディスク番号に１を加えた番号を第２ディスク番号と算出し、第１ディスク内ストライプ番号と同じ番号を第２ディスク内ストライプ番号と算出し、第１Ａディスク番号と同じ番号を第２Ａディスク番号と算出する。図１２の例では、例えば、第１ディスク番号が０で、第１ディスク内ストライプ番号が２で、第１Ａディスク番号が２の場合、第２ディスク番号は１、第２Ａディスク番号は２、第２ディスク内ストライプ番号は２となる。
【００７２】
第２計算部１１０２は、第１ディスク番号に１を加えた番号が第１Ａディスク番号と異なり、かつ複数のディスク装置の数で決まる有効なディスク番号でない場合には、複数のディスク装置のディスク番号の中で最も小さなディスク番号を第２ディスク番号と算出し、第１ディスク内ストライプ番号に１を加えた番号を第２ディスク内ストライプ番号と算出し、第１Ａディスク番号に１を加えた番号を第２Ａディスク番号と算出する。図１２の例では、例えば、第１ディスク番号が２で、第１ディスク内ストライプ番号が０で、第１Ａディスク番号が０の場合、第２ディスク番号は０、第２Ａディスク番号は１、第２ディスク内ストライプ番号は１となる。尚、以上の例では、第２ディスク番号、第２ディスク内ストライプ番号、第２Ａディスク番号についての算出方法を説明したが、第２計算部１１０２は、第１ディスク内ストライプ番号〜第Ｎディスク内ストライプ番号（Ｎは２以上の整数）までの長さの和が、長さ情報により指定された長さ以上になるまで、同様の方法で、第iディスク番号（iは1以上Ｎ-1以下の整数）と第iディスク内ストライプ番号と第iＡディスク番号に基づき、第ｉ＋１ディスク番号と第ｉ＋１ディスク内ストライプ番号と第(ｉ＋1)Ａディスク番号とを算出することができる。
【００７３】
そして、制御部１１０２は、アクセス部２０４が第iディスク装置の第iディスク内ストライプ番号により特定される位置にアクセスした後に、第iディスク番号を第i＋1ディスク番号に更新し、第iディスク内ストライプ番号を第i＋1ディスク内ストライプ番号に更新し、第iＡディスク番号を第(ｉ＋1)Ａディスク番号に更新する。
【００７４】
そして、アクセス部２０４は、制御部１１０２による更新後、第i＋1ディスク番号により特定される第i＋1ディスク装置の第i＋1ディスク内ストライプ番号により特定される位置にアクセスする
第３の実施形態に係わるホストコンピュータ１０１及びディスクアレイ制御装置１１００によれば、ホストコンピュータ１０１が、ストライプ番号から第１ディスク番号と第１ディスク内ストライプ番号と第１Ａディスク番号を、除算を用いて算出し、ディスクアレイ制御装置１１００は、当該第１ディスク番号と第１ディスク内ストライプ番号と第１Ａディスク番号とに基づき、除算を用いない方法で、第２ディスク番号と第２ディスク内ストライプ番号と第２Ａディスク番号とを求めている。このように、除算という負荷の高い処理を用いた演算をホストコンピュータ１０１に行わせ、除算を用いないで行う処理をディスクアレイ制御装置１１００に行わせることで、システム全体としての回路規模低減を実現できる。
【００７５】
＜変形例１＞
図１３に示すように、本実施形態の変形例１として、３つのディスク装置以外に予備のディスク装置を備えるシステムも想定できる。
【００７６】
この場合、第１及び第２ディスク内ストライプ番号と第１及び第２ディスク番号と第１Ａおよび第２Ａディスク番号等を算出する際に、予備のディスク装置は無いものとして扱って、第３の実施形態で説明した計算を行うことで、適切に算出することができる。
【００７７】
＜変形例２＞
図１４に示すように、本実施形態の変形例２として、３つのディスク装置と別個でディスク装置を設け、当該ディスク装置にのみパリティを記憶させる方法がある。
【００７８】
この場合、第１及び第２ディスク内ストライプ番号と第１及び第２ディスク番号等を算出する際には、パリティを記憶させるディスク装置を無いものとして扱って、第１の実施形態または第２の実施形態と同様の計算を行うことで、適切に算出することができる。一方、第１Ａディスク番号と第２Ａディスク番号は、パリティを記憶させる装置となり、固定値となる。
【００７９】
以上説明した少なくとも１つの実施例の効果は、アクセスする記憶装置及び記憶装置内のストライプ番号を特定し、アクセスするための処理について、ホスト計算機と記憶装置制御装置とで役割分担を上手く行うことで、記憶制御装置を含む記憶装置制御システムの回路規模低減を実現することである。
【００８０】
また、ディスク制御装置７００は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、第２通信部２０３、アクセス部２０４、制御部７０１、第２計算部７０２は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、ディスク制御装置７００は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
【００８１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８２】
１０１・・・ホストコンピュータ、１０２、７００・・・記憶装置制御装置、１０３０、１０３１、１０３２・・・ディスク装置、２０１・・・第１計算部、２０２・・・第１通信部、２０３・・・第２通信部、２０４・・・アクセス部、７０１、１１０１・・・制御部、７０２、１１０２・・・第２計算部、１１００・・・ディスクアレイ制御手段、１１０３・・・パリティ演算部
【図１】
2014199591.tif 000003
【図２】
2014199591.tif 000004
【図３】
2014199591.tif 000005
【図４】
2014199591.tif 000006
【図５】
2014199591.tif 000007
【図６】
2014199591.tif 000008
【図７】
2014199591.tif 000009
【図８】
2014199591.tif 000010
【図９】
2014199591.tif 000011
【図１０】
2014199591.tif 000012
【図１１】
2014199591.tif 000013
【図１２】
2014199591.tif 000014
【図１３】
2014199591.tif 000015
【図１４】
2014199591.tif 000016