(57)【要約】【課題】本発明の記憶制御装置は、記憶単位が固定されている記憶装置に、その記憶単位よりも大きなサイズでデータを書き込み、かつ、応答性能の低下を抑制する。【解決手段】ホスト３は、初期設定時に定められる基本I/OサイズBIOに従って、所定個数の論理ブロックBLK１でライトデータを送信する。コントローラ１は、各論理ブロックBLK１毎に保証コードGDをそれぞれ生成し、ライトデータに付加する。保証コードGDの付加されたライトデータは、基本I/OサイズBIOに対応する値に設定される基本ディスクアクセスサイズBDに従って、他の所定個数の論理ブロックBLK１に格納され、記憶装置２に送信される。記憶装置２に不用部分UPも記憶される場合、記憶領域の使用効率は低下するが、データ書込み時に更新対象データの前後に位置するデータを読み出す必要がなく、応答性能の低下が抑制される。【選択図】図１
2008197864.tif 000002
【特許請求の範囲】
【請求項１】
上位装置と少なくとも一つ以上の記憶装置との間でデータ入出力を行う記憶制御装置であって、
予め設定される値に固定される第１サイズにより、前記上位装置との間でデータを送受信するための第１通信経路と、
前記第１サイズに対応する値に固定される第２サイズにより、前記記憶装置との間でデータを送受信するための第２通信経路と、
前記上位装置と前記第１通信経路を介して接続されると共に前記記憶装置と前記第２通信経路を介して接続されており、前記上位装置と前記記憶装置との間のデータ入出力を制御するためのコントローラであって、少なくとも、（１）前記上位装置から前記第１通信経路を介して受信した前記第１サイズのデータを前記第２サイズのデータに変換し、この変換された第２サイズのデータを前記第２通信経路を介して前記記憶装置に送信し、前記記憶装置に記憶させる書込み機能と、（２）前記記憶装置から前記第２通信経路を介して読み出された前記第２サイズのデータを前記第１サイズのデータに変換し、この変換された第１サイズのデータを前記第１通信経路を介して前記上位装置に送信させる読出し機能とを、備えるコントローラと、
を備える記憶制御装置。
【請求項２】
前記第１サイズと前記第２サイズとは、所定サイズを有する第１ブロックの数としてそれぞれ示すことができ、
前記第１サイズの有する前記第１ブロックの数は、１以上所定の最大値以下の範囲内で、任意に設定可能であり、
前記第２サイズの有する前記第１ブロックの数は、前記第１サイズの有する前記第１ブロックの数よりも１つだけ多く設定される、請求項１に記載の記憶制御装置。
【請求項３】
前記第１サイズの有する前記第１ブロックの数が前記所定の最大値未満に設定された場合には、前記第２サイズの有する複数の前記第１ブロックのうち最後の第１ブロックには、不使用の領域が含まれる、請求項２に記載の記憶制御装置。
【請求項４】
前記所定の最大値（Nmax）は、前記第１ブロックの有する前記所定サイズ（BS１）と前記第１ブロックに所定の冗長データのデータ長（RDS）を加えた他の所定サイズ（BS２＝BS１＋RDS）との最小公倍数（LCM（BS１，BS２））を、前記所定サイズ（BS１）で除算した値（LCM（BS１，BS２）/BS１）から、１を減じた値（Nmax＝LCM（BS１，BS２）/BS１−１）として設定される、請求項２に記載の記憶制御装置。
【請求項５】
前記コントローラは、前記記憶装置が複数存在する場合、複数の記憶装置毎に、前記第１サイズ及び前記第２サイズをそれぞれ設定する請求項１に記載の記憶制御装置。
【請求項６】
前記記憶装置に前記第２サイズ単位で記憶されたデータを、前記第１サイズ単位で記憶された場合の配置に変換して提供するためのデータ配置変換部が、前記記憶装置側に設けられている請求項１に記載の記憶制御装置。
【請求項７】
前記コントローラは、前記第２サイズの値を前記記憶装置内の所定の場所に記憶させる機能をさらに備える、請求項１に記載の記憶制御装置。
【請求項８】
前記コントローラは、前記コントローラと前記記憶装置とが前記第２通信経路を介して接続された場合に、前記記憶装置に記憶されているデータを、読出しサイズの値を変更しながら所定量読み出して、読み出されたデータの内容を検査することにより、前記記憶装置に記憶されているデータに関する前記第２サイズの値を検出する機能をさらに備える、請求項１に記載の記憶制御装置。
【請求項９】
前記第１サイズの値は、前記上位装置によって決定される請求項１に記載の記憶制御装置。
【請求項１０】
前記第２サイズの値は、前記記憶装置によって決定される請求項９に記載の記憶制御装置。
【請求項１１】
前記上位装置により決定される前記第１サイズの値と前記記憶装置により決定される前記第２サイズの値とが対応しない場合に、前記記憶装置に記憶されているデータを全て読出して、前記上位装置により決定される前記第１サイズの値に対応する値を前記第２サイズの値として設定し、この設定された第２サイズ単位で、前記読み出された全データを前記記憶装置に書き戻す請求項１０に記載の記憶制御装置。
【請求項１２】
前記コントローラは、前記上位装置から受信したデータについて、予め設定されている第１ブロックのサイズ毎に所定長さの冗長データをそれぞれ付加することにより、前記第１ブロックよりもサイズの大きい第２ブロックを生成可能であり、かつ、
前記コントローラは、前記記憶装置が前記第１ブロック単位でデータを記憶するか、それとも前記第２ブロック単位でデータを記憶するのかを判別し、（１）前記記憶装置が前記第１ブロック単位でデータを記憶する場合には、前記第１サイズのデータを変換して得られる前記第２サイズのデータを前記第１ブロックを用いて前記記憶装置に送信し、（２）前記記憶装置が前記第２ブロック単位でデータを記憶する場合には、前記第１サイズのデータを変換して得られる第２サイズのデータを前記第２ブロックを用いて前記記憶装置に送信する、請求項１に記載の記憶制御装置。
【請求項１３】
上位装置と第１通信経路を介して接続され、前記上位装置からの要求を処理するコントローラと、
前記コントローラと第２通信経路を介して接続され、前記コントローラによって制御される記憶装置とを備え、
（１）前記上位装置と前記コントローラとは、データ送受信に使用される第１ブロックを予め設定された第１所定数だけ用いることにより、データ送受信を行うように設定されており、
（２）前記コントローラと前記記憶装置とは、前記第１所定数よりも１つだけ多い値に設定された第２所定数の前記第１ブロックを用いて、データ送受信を行うように設定されており、
（３）前記コントローラは、
（３−１）前記上位装置から前記第１通信経路を介して、前記第１所定数の前記第１ブロック分のデータを受信し、
（３−２）前記受信したデータに、前記第１ブロック毎に所定の冗長データを付加して、前記第１ブロックよりもサイズの大きい第２ブロック単位のデータを生成し、
（３−３）生成された前記第２ブロック単位のデータを、前記第２所定数の第１ブロックに分けて格納し、
（３−４）前記第２通信経路を介して、前記第２所定数の第１ブロックを前記記憶装置に送信し、前記記憶装置に記憶させる、
ストレージシステム。
【請求項１４】
前記上位装置は、前記第１所定数を前記上位装置に適した値に設定させる、請求項１３に記載のストレージシステム。
【請求項１５】
前記記憶装置として、複数の記憶装置が設けられており、
前記複数の記憶装置には、それぞれ異なる値で、前記第２所定数を関連づけることができる、請求項１３に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及びストレージシステムに関する。
【背景技術】
【０００２】
サーバコンピュータやメインフレームマシン等のホストコンピュータ（以下、「ホスト」）に接続される、記憶制御装置またはストレージシステムの一種として、ディスクアレイシステムが知られている。ディスクアレイシステムは、RAID（Redundant Array of Inexpensive Disks）システムとも呼ばれ、例えば、アレイ状に配置された複数のディスクドライブ及びそれらを制御する制御部を備えている。
【０００３】
ディスクアレイシステムでは、データのリード要求及びライト要求を、複数のディスクドライブの並列動作によって、高速に処理することができる。また、例えば、RAID１〜RAID５として知られているように、ディスクアレイシステムでは、データに冗長性を付加することもできる（非特許文献１）。
【０００４】
このように、ディスクアレイシステムでは、ディスクドライブに障害が生じた場合でもデータを復元できるように、冗長データを作成し、この冗長データをデータとは異なるディスクドライブに保存している。
【０００５】
RAID構成に加えて、さらに、保証コードを使用するディスクアレイシステムも知られている（特許文献１，特許文献２，特許文献３）。一つの従来技術では、保証コードとして、ホストコンピュータがアクセス先として指定する論理ブロックの論理アドレス（以下、「LA（Logical Address）」）、及び、論理ブロックのデータについて排他的論理和演算を実施して求められるLRC（Longitudinal Redundancy Check）を、論理ブロックにそれぞれ付加し、この保証コードと論理ブロックとをディスクドライブに保存させる。LAは、論理ブロックのデータが書き込まれる記憶領域のアドレスの誤りを検出するために用いられる。LRCは、論理ブロックのデータの誤りを検出するための誤り検出符号として用いられる。
【０００６】
論理ブロックに前記保証コードを付加すると、記憶制御装置が取り扱うデータ量の単位と、記憶装置が取り扱うデータ量の単位とが異なる可能性がある。例えば、ATA（AT Attachment）ディスク等のような、ブロック長（セクタ長）が固定されている記憶装置では、所定サイズの論理ブロック単位で記憶する。論理ブロックに保証コードを付加すると、保証コードの分だけデータ量が増加するため、記憶装置のフォーマットによっては、保証コード付きの論理ブロックを記憶させることができない場合がある。
【０００７】
そこで、この問題を解決するために、第４の文献には、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、記憶装置にデータを入出力する際の値として固定する技術が提案されている（特許文献４）。
【特許文献１】特開２０００−３４７８１５号公報
【特許文献２】米国特許第５,８１９,０５４号公報
【特許文献３】米国特許第５,７０６,２９８号公報
【特許文献４】特開２００６−１９５８５１号公報
【非特許文献１】ディー・パターソン（D.Patterson）、外2名、「ケース・フォー・リダンダント・アレイ・オブ・インエクスペンシブ・ディスク（A Case for Redundant Arrays of Inexpensive Disks(RAID)）」、エー．シー．エム．シグモッド  コンファレンスプロシーディング(ACM SIGMOD Conference Proceeding)、1988年6月、p.109-116
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前記第４文献に記載されているように、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、記憶制御装置が記憶装置にデータを書き込む場合の基本単位として設定することにより、セクタ長が固定されている記憶装置に、保証コードの付加された論理ブロックを書き込むことができる。
【０００９】
例えば、論理ブロックのサイズを５１２バイト、保証コードのサイズを８バイトとすると、保証コード付き論理ブロックのサイズは５２０バイトとなる。５１２バイトと５２０バイトの最小公倍数は、３３２８０バイトとなる。記憶制御装置が上位装置から受信した６４個の論理ブロックについて、各論理ブロック毎にそれぞれ８バイトの保証コードを付与することにより、全体のデータサイズは、３３２８０バイトとなる。この値は、６５個分の論理ブロックのサイズに等しい。従って、６４個の保証コード付き論理ブロックを、６５個の論理ブロックとして一括して記憶装置に記憶させることができる。
【００１０】
しかし、前記第４文献に記載の方法では、更新させるデータ量が少ない場合でも、３３２８０バイト分のデータを生成して記憶装置に送信する必要がある。即ち、前記第４文献に記載の方法では、少量のライトデータを書き込む場合に、記憶装置から３３２８０バイトのデータを読み出し、この読み出されたデータとライトデータとをマージして、記憶装置に書き込む必要がある。このように、前記第４文献に記載の方法では、ライト時の効率が低下する。
【００１１】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、上位装置との間のデータ転送で使用されるサイズと記憶制御装置との間のデータ転送で使用されるサイズとが異なる場合でも、応答性能の低下を抑制しながら、記憶装置にデータを書き込むことができるようにした記憶制御装置及びストレージシステムを提供することにある。本発明の他の目的は、記憶制御装置内におけるデータ入出力処理に用いられるデータ管理単位と記憶装置内に記憶されるデータの管理単位とが異なる場合でも、保証コードを用いて信頼性を向上でき、かつ、データ書込み時の性能低下を抑制できるようにした記憶制御装置及びストレージシステムを提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１２】
上記課題を解決すべく、本発明の一つの観点に従う、上位装置と少なくとも一つ以上の記憶装置との間でデータ入出力を行う記憶制御装置は、予め設定される値に固定される第１サイズにより、上位装置との間でデータを送受信するための第１通信経路と、第１サイズに対応する値に固定される第２サイズにより、記憶装置との間でデータを送受信するための第２通信経路と、上位装置と第１通信経路を介して接続されると共に記憶装置と第２通信経路を介して接続されており、上位装置と記憶装置との間のデータ入出力を制御するためのコントローラとを備える。さらに、このコントローラは、少なくとも、（１）上位装置から第１通信経路を介して受信した第１サイズのデータを第２サイズのデータに変換し、この変換された第２サイズのデータを第２通信経路を介して記憶装置に送信し、記憶装置に記憶させる書込み機能と、（２）記憶装置から第２通信経路を介して読み出された第２サイズのデータを第１サイズのデータに変換し、この変換された第１サイズのデータを第１通信経路を介して上位装置に送信させる読出し機能とを、備える。
【００１３】
本発明の実施形態では、第１サイズと第２サイズとは、所定サイズを有する第１ブロックの数としてそれぞれ示すことができ、第１サイズの有する第１ブロックの数は、１以上所定の最大値以下の範囲内で、任意に設定可能であり、第２サイズの有する第１ブロックの数は、第１サイズの有する第１ブロックの数よりも１つだけ多く設定される。
【００１４】
本発明の実施形態では、第１サイズの有する第１ブロックの数が所定の最大値未満に設定された場合には、第２サイズの有する複数の第１ブロックのうち最後の第１ブロックには、不使用の領域が含まれる。
【００１５】
本発明の実施形態では、所定の最大値（Nmax）は、第１ブロックの有する所定サイズ（BS１）と第１ブロックに所定の冗長データのデータ長（RDS）を加えた他の所定サイズ（BS２＝BS１＋RDS）との最小公倍数（LCM（BS１，BS２））を、所定サイズ（BS１）で除算した値（LCM（BS１，BS２）/BS１）から、１を減じた値（Nmax＝LCM（BS１，BS２）/BS１−１）として設定される。
【００１６】
本発明の実施形態では、コントローラは、記憶装置が複数存在する場合、複数の記憶装置毎に、第１サイズ及び第２サイズをそれぞれ設定する。
【００１７】
本発明の実施形態では、記憶装置に第２サイズ単位で記憶されたデータを、第１サイズ単位で記憶された場合の配置に変換して提供するためのデータ配置変換部が、記憶装置側に設けられている。
【００１８】
本発明の実施形態では、コントローラは、第２サイズの値を記憶装置内の所定の場所に記憶させる機能をさらに備える。
【００１９】
本発明の実施形態では、コントローラは、コントローラと記憶装置とが第２通信経路を介して接続された場合に、記憶装置に記憶されているデータを、読出しサイズの値を変更しながら所定量読み出して、読み出されたデータの内容を検査することにより、記憶装置に記憶されているデータに関する第２サイズの値を検出する機能をさらに備える。
【００２０】
本発明の実施形態では、第１サイズの値は、上位装置によって決定される。
【００２１】
本発明の実施形態では、第２サイズの値は、記憶装置によって決定される。
【００２２】
本発明の実施形態では、上位装置により決定される第１サイズの値と記憶装置により決定される第２サイズの値とが対応しない場合に、記憶装置に記憶されているデータを全て読出して、上位装置により決定される第１サイズの値に対応する値を第２サイズの値として設定し、この設定された第２サイズ単位で、読み出された全データを記憶装置に書き戻す。
【００２３】
本発明の実施形態では、コントローラは、上位装置から受信したデータについて、予め設定されている第１ブロックのサイズ毎に所定長さの冗長データをそれぞれ付加することにより、第１ブロックよりもサイズの大きい第２ブロックを生成可能であり、かつ、
【００２４】
コントローラは、記憶装置が第１ブロック単位でデータを記憶するか、それとも第２ブロック単位でデータを記憶するのかを判別し、（１）記憶装置が第１ブロック単位でデータを記憶する場合には、第１サイズのデータを変換して得られる第２サイズのデータを第１ブロックを用いて記憶装置に送信し、（２）記憶装置が第２ブロック単位でデータを記憶する場合には、第１サイズのデータを変換して得られる第２サイズのデータを第２ブロックを用いて記憶装置に送信する。
【００２５】
本発明の他の観点に従う、ストレージシステムは、上位装置と第１通信経路を介して接続され、上位装置からの要求を処理するコントローラと、コントローラと第２通信経路を介して接続され、コントローラによって制御される記憶装置とを備え、（１）上位装置とコントローラとは、データ送受信に使用される第１ブロックを予め設定された第１所定数だけ用いることにより、データ送受信を行うように設定されており、（２）コントローラと記憶装置とは、第１所定数よりも１つだけ多い値に設定された第２所定数の第１ブロックを用いて、データ送受信を行うように設定されており、（３）コントローラは、（３−１）上位装置から第１通信経路を介して、第１所定数の第１ブロック分のデータを受信し、（３−２）受信したデータに、第１ブロック毎に所定の冗長データを付加して、第１ブロックよりもサイズの大きい第２ブロック単位のデータを生成し、（３−３）生成された第２ブロック単位のデータを、第２所定数の第１ブロックに分けて格納し、（３−４）第２通信経路を介して、第２所定数の第１ブロックを記憶装置に送信し、記憶装置に記憶させる。
【００２６】
本発明の実施形態では、上位装置は、第１所定数を上位装置に適した値に設定する。
【００２７】
本発明の実施形態では、記憶装置として、複数の記憶装置が設けられており、複数の記憶装置には、それぞれ異なる値で、第２所定数を関連づけることができる。
【００２８】
本発明の各部または各ステップの少なくとも一部は、コンピュータプログラムとして構成される場合がある。このコンピュータプログラムは、記録媒体に固定して配布したり、ネットワークを介して配信することができる。
【発明を実施するための最良の形態】
【００２９】
以下、図面に基づいて、本発明の実施の形態を説明する。まず最初に、本発明の概念を説明し、その次に、具体的な実施例について説明する。図１は、本発明の概念を模式的に示す説明図である。
【００３０】
ストレージシステムは、例えば、コントローラ１，記憶装置２及びホスト３を備えて構成される。コントローラ１とホスト３とは、第１通信経路４を介して双方向通信可能に接続されており、コントローラ１と記憶装置２とは、第２通信経路５を介して双方向通信可能に接続されている。第１通信経路４及び第２通信経路５は、例えば、ファイバチャネルプロトコルを使用するSAN（Storage Area Network）ネットワークとして構成される。
【００３１】
コントローラ１は、ホスト３から発行されるコマンドに従って、記憶装置２からデータを読み出したり、記憶装置２にデータを書き込むという制御を行う。後述の実施例から明らかとなるように、例えば、多数のハードディスクドライブを内蔵するストレージ装置１０を、コントローラとして使用することができる。あるいは、ファイバチャネルスイッチを、コントローラとして使用することもできる。コントローラ１は、例えば、上位通信部１Ａと、下位通信部１Ｂと、ライト処理部１Ｃと、リード処理部１Ｄと、サイズ変換部１Ｅと、キャッシュメモリ１Ｆとを備えて構成される。
【００３２】
上位通信部１Ａは、第１通信経路４を介してホスト３に接続されており、ホスト３との間のデータ送受信を担当する。下位通信部１Ｂは、第２通信経路５を介して記憶装置２に接続されており、記憶装置２との間のデータ送受信を担当する。
【００３３】
ライト処理部１Ｃは、ホスト３から発行されたライトコマンドに従って、ホスト３から受信したライトデータを記憶装置２に書き込ませるためのライト処理を実行する。リード処理部１Ｄは、ホスト３から発行されたリードコマンドに従って、ホスト３から要求されたデータを記憶装置２から読出し、読み出したデータをホスト３に送信させる。
【００３４】
サイズ変換部１Ｅは、ホスト３から受信したデータのサイズ（第１サイズ）を、そのデータを記憶装置２に記憶させるのに適したサイズ（第２サイズ）に変換する。また、サイズ変換部１Ｅは、記憶装置２から読み出されたデータのサイズを、第２サイズから第１サイズに変換することもできる。データのサイズ変換については、さらに後述する。
【００３５】
キャッシュメモリ１Ｆは、ホスト３から受信したライトデータや、記憶装置２から読み出されたデータを一時的に記憶するために使用される。なお、キャッシュメモリ１Ｆまたは図示せぬ別のメモリ内に、コントローラ１による制御に必要な管理情報や構成情報を記憶させることもできる。後述の実施例から明らかなように、共有メモリ１４０内に構成情報Ｔ１を記憶させることもできる（図２参照）。
【００３６】
記憶装置２は、例えば、ハードディスク装置、半導体メモリ装置、フラッシュメモリ装置、光ディスク装置、光磁気ディスク装置等のような、書き換え可能な記憶装置として構成される。後述の実施例から明らかとなるように、例えば、多数のハードディスクドライブを内蔵するストレージ装置３０を、記憶装置として使用することもできる。ここでは、説明の便宜上、ハードディスクドライブを例に挙げて説明する。記憶装置２は、例えば、５１２バイトのような固定されたサイズ単位で、データを取り扱う。
【００３７】
本実施形態の第１の特徴は、ホスト３とコントローラ１との間のデータ送受信に使用されるデータのサイズを、初期設定時の値に固定するという点にある。ホスト３とコントローラ１との間のデータ送受信に使用されるデータのサイズのことを、以下の説明では、基本I/Oサイズ（BIO）と呼ぶ。I/Oとは、Input/Outputの略である。基本I/Oサイズは、例えば、ホスト３上で実行されるアプリケーションプログラムの性質に応じて、定めることができる。
【００３８】
本実施形態の第２の特徴は、コントローラ１と記憶装置２との間のデータ送受信に使用されるデータのサイズを、上述の基本I/Oサイズに対応する値に固定するという点にある。コントローラ１と記憶装置２との間のデータ送受信に使用されるデータのサイズのことを、以下の説明では、基本ディスクアクセスサイズ（BD）と呼ぶ。
【００３９】
本実施形態の第３の特徴は、基本I/Oサイズは、所定範囲内でホスト３に適した値を任意に選択可能であるという点にある。ホスト３に適した値とは、例えば、記憶装置２を利用するアプリケーションプログラムがデータ入出力処理を行う際の単位に応じた値として定義することができる。
【００４０】
本実施形態の第４の特徴は、基本I/Oサイズとして選択可能な最大値を選択すると、基本ディスクアクセスサイズのバイト長は、論理ブロックのバイト長の整数倍の値となり、この結果、コントローラ１及び記憶装置２の処理負担が軽減され、ストレージシステム全体としての効率が最も改善されうるという点にある。
【００４１】
基本I/Oサイズ及び基本ディスクアクセスサイズは、それぞれ所定サイズの論理ブロックBLK１の個数として表現することができる。論理ブロックBLK１は、「第１ブロック」に相当し、例えば、５１２バイトのサイズを有する。
【００４２】
図１に示す例では、基本I/Oサイズは、論理ブロックBLK１が２個分のサイズとして、固定されている。この場合、各論理ブロックBLK１のサイズが５１２バイトであるから、基本I/Oサイズは、１０２４バイトとなる。
【００４３】
ライト処理部１Ｃは、ホスト３から受信した基本I/Oサイズ分のライトデータについて、各論理ブロックBLK１毎に、冗長なデータ（GD）を付加する。この冗長データは、保証コード（GD）と呼ばれており、論理ブロックBLK１のデータの内容や記憶先を保証するためのデータである。保証コードには、例えば、その論理ブロックBLK１のデータが記憶されるべき場所を示す論理アドレスや、その論理ブロックBLK１内のデータから算出されるLRCの値が含まれる。保証コードは、例えば、８バイトのサイズを有する。
【００４４】
５１２バイトの論理ブロックBLK１に８バイトの保証コードGDを付加することにより、「第２ブロック」としての拡張論理ブロックBLK２が生成される。サイズ変換部１Ｅは、拡張論理ブロックBLK２のデータを複数の論理ブロックBLK１を用いて送信できるように、ホスト３から受信したライトデータのサイズを、基本I/Oサイズから基本ディスクアクセスサイズに変換する。
【００４５】
基本I/Oサイズ及び基本ディスクアクセスサイズを論理ブロックBLK１の個数として表現した場合、基本ディスクアクセスサイズBDは、基本I/OサイズBIOよりも論理ブロックBLK１の数が１個だけ多くなるように、予めサイズ変換部１Ｅに設定されている。図示の例では、基本I/OサイズBIOは、論理ブロックBLK１を２個備えるため、基本ディスクアクセスサイズBDは、論理ブロックBLK１が３個分のサイズとなる。
【００４６】
図１の下側に示すように、もともと２個の論理ブロックBLK１としてコントローラ１に受信されたライトデータは、３個の論理ブロックBLK１を用いて、コントローラ１から記憶装置２に送信される。従って、３個の論理ブロックBLK１からなる基本ディスクアクセスサイズBDは、論理ブロックBLK１が２個分のライトデータ（合計１０２４バイト）と、各論理ブロックBLK１毎に付与される保証コードGD（合計１６バイト）と、不用部分UP（５１２×３−（１０２４＋１６）＝４９６バイト）とを含んでいる。
【００４７】
不用部分UPは、論理ブロックBLK１と拡張論理ブロックBLK２とを整合させるための未使用領域である。不用部分UPには、例えば、値「０」を記憶させる。複数の拡張論理ブロックBLK２の最後に不用部分UPを付け加えることにより、整数値の論理ブロックBLK１によってライトデータを記憶装置２に書き込ませることができる。
【００４８】
上述のように、記憶装置２は、論理ブロックBLK１単位で、データを取り扱う仕様になっている。そして、本実施形態では、保証コードGDの分だけサイズが大きい拡張論理ブロックBLK２を、記憶単位がBLK１に固定された記憶装置２に記憶させるために、不用部分UPを用いて、ライトデータのサイズを論理ブロックBLK１の整数倍に調整する。基本ディスクアクセスサイズBDを構成する論理ブロックBLK１の数は、基本I/OサイズBIOを構成する論理ブロックBLK１の数よりも１だけ多くなる。
【００４９】
基本I/OサイズBIOを構成する論理ブロックBLK１の数は、ホスト３の都合に応じて、任意の値に設定することができる。基本I/OサイズBIOは、最低１つの論理ブロックBLK１を含む必要がある。
【００５０】
基本I/OサイズBIOを構成する論理ブロックBLK１の数の最大値Nmaxは、論理ブロックBLK１のバイト長（BS１＝５１２バイト）と拡張論理ブロックBLK２のバイト長（BS２＝５２０バイト）との最小公倍数（LCM（BS１，BS２））を、論理ブロックBLK１のバイト長BS１で除算した値（LCM（BS１，BS２）/BS１）から、１を減算した値（Nmax＝LCM（BS１，BS２）/BS１−１）として定義される。
【００５１】
即ち、基本I/OサイズBIOのバイト長及び基本ディスクアクセスサイズBDのバイト長を、論理ブロックBLK１のバイト長と拡張論理ブロックBLK２のバイト長の最小公倍数に一致させることにより、記憶装置２に書き込まれるライトデータ中の不用部分UPを完全に無くすことができる。
【００５２】
具体的には、論理ブロックBLK１のバイト長が５１２バイト、拡張論理ブロックBLK２のバイト長が５２０バイトであるから、５１２バイトと５２０バイトの最小公倍数は、３３２８０バイトとなる。この最小公倍数３３２８０バイトを５１２バイトで除算すると、６５となる。即ち、基本ディスクアクセスサイズBDは、最大６５個の論理ブロックBLK１から構成可能である。基本I/OサイズBIOを構成する論理ブロックBLK１の最大数（Nmax）は、６４（＝６５−１）となる。６４個の論理ブロックBLK１にそれぞれ付加される保証コードGDの総バイト数を減じるためである（８×６４＝５１２）。
【００５３】
このように本実施形態では、データを記憶する単位が５１２バイトに固定された記憶装置２に、保証コードの付加されたデータを記憶させることができる。つまり、本実施形態では、コントローラ１内の記憶空間で使用されるデータ管理単位を、記憶装置２内の記憶空間で使用されるデータ管理単位に変換している。
【００５４】
基本I/OサイズBIOのバイト長と基本ディスクアクセスサイズBDのバイト長とが一致する場合、記憶装置２に書き込まれるデータ内に不用部分UPは生じない。これ以外の場合、記憶装置２に書き込まれるデータ内には、幾らかの不用部分UPが生じる。つまり、基本I/OサイズBIOを構成する論理ブロックBLK１の数が６４個未満の場合、コントローラ１から記憶装置２に送信されるライトデータ内には、不用部分UPが含まれる。
【００５５】
記憶装置２に記憶されるライトデータに不用部分UPが含まれる率は、基本I/OサイズBIOを構成する論理ブロックBLK１の数Ｎが増加するほど低下し、Ｎが６４になった場合に０となる。逆に言えば、基本I/OサイズBIOを構成する論理ブロックBLK１の数が多くなるほど、記憶装置２に記憶されるライトデータ中の不用部分UPのサイズは小さくなり、記憶装置２の記憶容量を有効に利用することができる。
【００５６】
本実施形態では、不用部分UPの分だけ記憶装置２内に無駄な領域を生じる場合があるが、この不用部分UPという特徴的な構成により、保証コードの付加されたライトデータを論理ブロックBLK１単位のデータとして記憶装置２に送信することができる。従って、本実施形態では、保証コードによってライトデータの信頼性を保証することができ、かつ、書込み時のペナルティを解消して応答性能の低下を抑制することができる。
【００５７】
既に述べた通り、コントローラ１と記憶装置２との間のアクセスサイズを、論理ブロックBLK１と拡張論理ブロックBLK２の最小公倍数に固定する場合は、最小公倍数に満たないサイズのデータを更新する場合でも、更新箇所の前後に存在するデータを記憶装置２から読み出す必要があり、応答性能が低下する。これに対し、本実施形態では、拡張論理ブロックBLK２群の末尾に不用部分UPを加えることにより、コントローラ１から記憶装置２に送信されるライトデータの両端を、記憶装置２内の各物理ブロック（即ち、論理ブロックBLK１に等しいサイズのセクタ）の境界に一致させることができる。
【００５８】
本実施形態では、ホスト３が記憶装置２にアクセスする際の基本I/OサイズBIOを、ホスト３に適した値に固定することができる。ユーザは、ストレージシステムの構築時に、記憶装置２の使用効率とホスト３の事情とを総合的に考慮して、基本I/OサイズBIOを選択することができる。基本ディスクアクセスサイズBDは、基本I/OサイズBIOに基づいて自動的に決定される。これにより、保証コードを用いるストレージシステムにおいて、応答性能の低下を抑制し、かつ、使い勝手を改善することができる。
【００５９】
後述の実施例からも明らかなように、基本I/OサイズBIOは、各ボリューム毎に設定することができる。即ち、基本I/OサイズBIOは、各ボリュームを構成する各ディスクドライブ毎に、それぞれ所定範囲に含まれる任意の値を設定可能である。従って、例えば、ホスト３上で実行されるアプリケーションプログラムの種類等に応じて、基本I/OサイズBIO及び基本ディスクアクセスサイズBDを設定することができる。以下、本実施形態を詳述する。
【実施例１】
【００６０】
図２は、本実施例に係るストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、少なくとも一つのメインストレージ装置１０と、一つまたは複数のホスト２０と、一つまたは複数の外部ストレージ装置３０と、少なくとも一つの管理端末６０とを含んで構成することができる。このストレージシステムは、例えば、各種の企業、大学、政府機関等の組織で使用される。しかし、これに限らず、本ストレージシステムは、家庭内で使用することもできる。
【００６１】
先に図１と図２との対応関係を説明する。メインストレージ装置１０のコントローラ１００は図１中のコントローラ１に、ホスト２０は図１中のホスト３に、外部ストレージ装置３０及び／又は記憶部２００は図１中の記憶装置２に、通信経路CN１は図１中の通信経路４に、通信経路CN２は図１中の通信経路５に、それぞれ対応する。一方のチャネルアダプタ１１０（図中、CHA（T））は、図１中の上位通信部１Ａに対応する。他方のチャネルアダプタ１１０（図中、CHA（I））及び／又はディスクアダプタ１２０は、図１中の下位通信部１Ｂに対応する。
【００６２】
ホスト２０とメインストレージ装置１０とは、例えば、SANのような通信経路CN１を介して、双方向通信可能に接続されている。ホスト２０は、例えば、サーバコンピュータ、メインフレームコンピュータ、ワークステーション等のようなコンピュータ装置として構成される。ホスト２０がメインフレームコンピュータの場合、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送が行われる。
【００６３】
メインストレージ装置１０は、ストレージシステム内の記憶資源を一元的に管理する役割を果たす。後述のように、メインストレージ装置１０は、ストレージシステム内に散在する物理的な記憶資源を仮想化して、ホスト２０に提供する機能を備える。即ち、メインストレージ装置１０は、外部ストレージ装置３０内の記憶資源を、それがあたかもメインストレージ装置１０内の記憶資源であるかのように、ホスト２０に見せかける。このように、メインストレージ装置１０は、ストレージシステム内に散在する記憶資源を仮想化するための仮想化装置としての側面を備える。この側面に注目するならば、メインストレージ装置１０は、必ずしもディスクアレイ装置として構成される必要はなく、例えば、ファイバチャネルスイッチ等の別の装置から構成することもできる。
【００６４】
メインストレージ装置１０の構成を説明する。メインストレージ装置１０は、コントローラ１００と、記憶部２００とに大別することができる。コントローラ１００及び記憶部２００の構成は、それぞれ後述する。先に簡単に説明すると、コントローラ１００は、メインストレージ装置１０の動作を制御するものである。記憶部２００は、複数の（通常は多数の）ディスクドライブ２１０を収容するものである。コントローラ１００と記憶部２００とは、同一の筐体内に設けることもできるし、それぞれ別々の筐体内に設けることもできる。また、一つまたは複数の筐体内にコントローラ１００を設け、他の一つまたは複数の筐体内にそれぞれ複数のディスクドライブ２１０を設け、これら各筐体間をファイバチャネルプロトコルに従う通信経路で接続する構成としてもよい。
【００６５】
コントローラ１００の構成を説明する。コントローラ１００は、例えば、少なくとも一つ以上のチャネルアダプタ（以下、CHA）１１０と、少なくとも一つ以上のディスクアダプタ（以下、DKA）１２０と、少なくとも一つ以上のキャッシュメモリ１３０と、少なくとも一つ以上の共有メモリ１４０と、接続部（図中「SW」）１５０と、サービスプロセッサ（以下、SVP）１６０とを備えて構成される。
【００６６】
CHA１１０は、ホスト２０との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各CHA１１０は、少なくとも一つ以上の通信ポート１１１を備えている。通信ポート１１１には、例えば、WWN（World Wide Name）のような識別情報が設定される。ホスト２０とメインストレージ装置１０とが、iSCSI（internet Small Computer System Interface）等を用いてデータ通信を行う場合、通信ポート１１１には、ＩＰ（Internet Protocol）アドレス等の識別情報が設定される。
【００６７】
図２中には、２種類のCHA１１０が示されている。図２中左側に位置する一方のCHA１１０は、ホスト２０からのコマンドを受信して処理するためのものであり、その通信ポート１１１（Ｔ）は、ターゲットポートとなっている。図２中右側に位置する他方のCHA１１０は、外部ストレージ装置３０にコマンドを発行するためのものであり、その通信ポート１１１（Ｉ）は、イニシエータポートとなっている。
【００６８】
DKA１２０は、各ディスクドライブ２１０との間のデータ通信を制御するためのもので、CHA１１０と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
【００６９】
各DKA１２０と各ディスクドライブ２１０とは、例えば、ファイバチャネルプロトコルに従う通信経路CN４を介して接続されている。各DKA１２０と各ディスクドライブ２１０とは、ブロック単位のデータ転送を行う。コントローラ１００が各ディスクドライブ２１０にアクセスするための経路は、冗長化されている。いずれか一方のDKA１２０や通信経路CN４に障害が発生した場合でも、コントローラ１００は、他方のDKA１２０や通信経路CN４を用いて、ディスクドライブ２１０にアクセス可能である。同様に、ホスト２０とコントローラ１００との間の経路、外部ストレージ装置３０とコントローラ１００との間の経路も冗長化することができる。なお、各DKA１２０は、ディスクドライブ２１０の状態を随時監視している。SVP１６０は、DKA１２０による監視結果を、内部ネットワークCN５を介して取得する。
【００７０】
各CHA１１０及び各DKA１２０は、例えば、プロセッサやメモリ等が実装されたプリント基板と、メモリに格納された制御プログラムとをそれぞれ備えており、これらのハードウェアとソフトウェアとの協働作業によって、それぞれ所定の機能を実現するようになっている。CHA１１０及びDKA１２０は、キャッシュメモリ１３０や共有メモリ１４０等と共に、コントローラ１００を構成する。
【００７１】
CHA１１０及びDKA１２０の動作を簡単に説明する。詳細な動作は別の図面を参照しながら後述する。CHA１１０は、ホスト２０から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ１４０に記憶させる。DKA１２０は、共有メモリ１４０を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ２１０からデータを読み出して、キャッシュメモリ１３０に記憶させる。CHA１１０は、キャッシュメモリ１３０に移されたデータを読み出し、ホスト２０に送信する。
【００７２】
一方、CHA１１０は、ホスト２０から発行されたライトコマンドを受信すると、このライトコマンドを共有メモリ１４０に記憶させる。また、CHA１１０は、受信したライトデータをキャッシュメモリ１３０に記憶させる。CHA１１０は、キャッシュメモリ１３０にライトデータを記憶させた後、ホスト２０に書込み完了を報告する。DKA１２０は、共有メモリ１４０に記憶されたライトコマンドに従って、キャッシュメモリ１３０に記憶されたデータを読出し、所定のディスクドライブ２１０に記憶させる。
【００７３】
キャッシュメモリ１３０は、例えば、ホスト２０から受信したデータ等を記憶するものである。キャッシュメモリ１３０は、例えば不揮発メモリから構成される。共有メモリ１４０は、例えば不揮発メモリから構成される。共有メモリ１４０には、例えば、構成情報Ｔ１のような、制御情報や管理情報等が記憶される。構成情報Ｔ１の構造は、別の図面と共に後述する。
【００７４】
共有メモリ１４０及びキャッシュメモリ１３０は、同一のメモリ基板上に混在して設けることができる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
【００７５】
接続部１５０は、各CHA１１０と、各DKA１２０と、キャッシュメモリ１３０及び共有メモリ１４０をそれぞれ接続させる。これにより、全てのCHA１１０，DKA１２０は、キャッシュメモリ１３０及び共有メモリ１４０にそれぞれアクセス可能である。接続部１５０は、例えばクロスバスイッチ等として構成することができる。
【００７６】
SVP１６０は、LAN等の内部ネットワークCN５を介して、各CHA１１０及び各DKA１２０とそれぞれ接続されている。また、SVP１６０は、LAN等の通信ネットワークCN３を介して、管理端末６０に接続可能である。SVP１６０は、メインストレージ装置１０内部の各種状態を収集し、管理端末６０に提供する。なお、SVP１６０は、CHA１１０またはDKA１２０のいずれか一方にのみ接続されてもよい。SVP１６０は、共有メモリ１４０を介して、各種のステータス情報を収集可能だからである。
【００７７】
コントローラ１００の構成は、上述した構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト２０との間のデータ通信を行う機能と、外部ストレージ装置３０との間のデータ通信を行う機能と、ディスクドライブ２１０との間のデータ通信を行う機能と、データを一時的に保存する機能と、構成情報Ｔ１等を書換可能に保存する機能とを、それぞれ設ける構成でもよい。
【００７８】
記憶部２００の構成について説明する。記憶部２００は、複数のディスクドライブ２１０を備えている。各ディスクドライブ２１０は、例えば、ハードディスクドライブ、フラッシュメモリデバイス、光ディスクドライブ、光磁気ディスクドライブ、ホログラフィックメモリデバイス等として実現される。要するに、記憶部２００は、書換可能な不揮発性の記憶装置を備えている。
【００７９】
RAID構成等によっても相違するが、例えば、３個１組や４個１組等の所定数のディスクドライブ２１０によって、パリティグループ２２０が構成される。パリティグループ２２０は、パリティグループ２２０内の各ディスクドライブ２１０がそれぞれ有する物理的記憶領域を仮想化したものである。従って、パリティグループ２２０は、仮想化された物理的記憶デバイスである。パリティグループ２２０の有する物理的記憶領域には、所定サイズまたは可変サイズの論理ボリューム（LU：Logigal Unit）２３０を設定できる。論理ボリューム２３０は、論理的記憶デバイスである。論理ボリューム２３０は、LUN（Logical Unit Number ）に対応付けられて、ホスト２０に提供される。
【００８０】
外部ストレージ装置３０は、メインストレージ装置１０と同様に、例えば、コントローラ３００と記憶部４００とを備えている。記憶部４００の有する一つまたは複数のディスクドライブ４１０を用いて、論理ボリューム４３０が設けられる。外部ストレージ装置３０は、メインストレージ装置１０から見た場合にメインストレージ装置１０の外部に存在するため、外部ストレージ装置と呼ぶ。また、外部ストレージ装置３０の有するディスクドライブ４１０を外部ディスクと、外部ストレージ装置３０の有する論理ボリューム４３０を外部ボリュームと、それぞれ呼ぶ場合がある。
【００８１】
図３は、メインストレージ装置１０が記憶資源を仮想化する様子を模式的に示す説明図である。上述の通り、メインストレージ装置１０のディスクドライブ２１０がそれぞれ備える物理的な記憶領域は、中間記憶階層２２０（即ち、パリティグループ）によって仮想化される。中間記憶階層２２０には、一つまたは複数の論理ボリューム２３０を、固定サイズまたは可変サイズで、設けることができる。
【００８２】
図３中の左側に示す論理ボリューム２３０は、メインストレージ装置１０内のディスクドライブ２１０に基づいて生成されているため、内部の実ボリュームである。そこで、この論理ボリューム２３０を、以下の説明では、単に内部ボリュームと呼ぶ場合がある。内部ボリューム２３０は、一方のターゲットポート１１１Ｔを介して、ホスト２０に提供される。
【００８３】
図３中の右側に示す論理ボリューム２３０Ｖは、メインストレージ装置１０内に仮想的に設けられる論理ボリュームである。この仮想的な論理ボリューム２３０Ｖは、仮想的な中間記憶階層２２０Ｖを介して、外部ストレージ装置３０内の論理ボリューム４３０に接続されている。即ち、仮想的な中間記憶階層２２０Ｖは、仮想的な物理的記憶デバイスであり、その実体は、外部ストレージ装置３０内に存在する。
【００８４】
仮想的な論理ボリューム２３０Ｖは、他方のターゲットポート１１１Ｔを介して、ホスト２０に提供される。仮想的な論理ボリューム２３０Ｖをアクセス対象とするコマンドがホスト２０から発行されると、コントローラ１００は、構成情報Ｔ１を参照することにより、仮想的な論理ボリューム２３０Ｖに対応付けられている外部ボリューム４３０の所在を確認する。
【００８５】
コントローラ１００は、ホスト２０から受信したコマンドを、外部ストレージ装置３０に送信するためのコマンドに変換する。変換されたコマンドは、イニシエータポート１１１Ｉから通信経路CN２を介して、外部ストレージ装置３０のターゲットポート３１１Ｔに入力される。外部ストレージ装置３０のコントローラ３００は、メインストレージ装置１０から受信したコマンドに従って、外部ボリューム４３０にデータを書き込んだり、または、外部ボリューム４３０からデータを読み出したりする。外部ボリューム４３０から読み出されたデータは、通信経路CN２、中間記憶階層２２０Ｖ、仮想的論理ボリューム２３０Ｖ、通信経路CN１を介して、ホスト２０に送信される。
【００８６】
図４は、ストレージシステムのソフトウェア構成に着目した説明図である。ホスト２０は、例えば、アプリケーションプログラム２１やI/O制御プログラム２２等を備えることができる。例えば、データベースプログラム等のようなアプリケーションプログラム２１は、I/O制御プログラム２２を介して、メインストレージ装置１０を利用する。
【００８７】
I/O制御プログラム２２は、アプリケーションプログラム２１からの要求に基づいて、リードコマンドやライトコマンドを発行する。I/O制御プログラム２２は、予め設定された基本I/OサイズBIOに従って、ライトコマンドを発行する。この基本I/OサイズBIOは、論理ブロックBLK１の個数として表現することができる。
【００８８】
メインストレージ装置１０は、例えば、ターゲットコマンド処理１１０ＴＰやイニシエータコマンド処理１１０ＩＰ等を備えている。ターゲットコマンド処理１１０ＴＰは、ターゲットコマンドを受信するCHA１１０により実行される。イニシエータコマンド処理１１０ＩＰは、イニシエータコマンドを発行するCHA１１０によって実行される。
【００８９】
ターゲットコマンド処理１１０ＴＰは、ホスト２０からライトコマンド及びライトデータを受信すると、第１の所定個数の論理ブロックBLK１に格納されたライトデータを、キャッシュメモリ１３０に記憶させる。
【００９０】
イニシエータコマンド処理１１０ＩＰは、キャッシュメモリ１３０に記憶されたライトデータについて、各論理ブロックBLK１毎に、それぞれ保証コードGDを付加する。なお、保証コードGDの生成及び生成した保証コードGDの論理ブロックBLK１の付加は、ターゲットコマンド処理１１０ＴＰで実行する構成でもよい。本実施例では、イニシエータコマンド処理１１０ＩＰが、保証コードの生成等を実行するものとする。
【００９１】
イニシエータコマンド処理１１０ＩＰは、各論理ブロックBLK１にそれぞれ保証コードGDを付加することにより、拡張論理ブロックBLK２を生成する。上述の通り、論理ブロックBLK１のバイト長は５１２バイトであり、保証コードGDのバイト長は８バイトであるから、拡張論理ブロックBLK２のバイト長は５２０バイトとなる。イニシエータコマンド処理１１０ＩＰは、拡張論理ブロックBLK２の最後に所定サイズの不用部分UPを加えることにより、ライトデータを第２の所定個数の論理ブロックBLK１に格納して、外部ストレージ装置３０に送信する。つまり、イニシエータコマンド処理１１０ＩＰは、基本I/OサイズBIOを構成する論理ブロックBLK１の数に対応する個数の論理ブロックBLK１を用いて、ライトデータを構成する。基本ディスクアクセスサイズBDは、基本I/OサイズBIOを構成する論理ブロックBLK１の数よりも１つ多い数の論理ブロックBLK１から構成される。
【００９２】
外部ストレージ装置３０は、例えば、ターゲットコマンド処理３１０ＴＰ及びディスク処理３２０Ｐを備えている。ターゲットコマンド処理３１０ＴＰは、メインストレージ装置１０から発行されたコマンドを受信して処理するものである。ディスク処理３２０Ｐは、メインストレージ装置１０から発行されたコマンドに基づいて、ディスクドライブ４１０にアクセスし、ディスクドライブ４１０にデータを読み書きするものである。ディスク処理３２０Ｐは、キャッシュメモリ３３０に記憶されたライトデータを、ディスクドライブ４１０に書き込む。
【００９３】
キャッシュメモリ３３０に記憶されるライトデータには、不用部分UPが含まれる場合がある。ディスク処理３２０Ｐは、不用部分UPを含むライトデータを、ディスクドライブ４１０に書き込む。従って、図４中の下側に示すように、ディスクドライブ４１０の記憶領域には不用部分UPが存在し、この不用部分UPの分だけディスクドライブ４１０の使用効率は低下する。しかし、ディスクドライブ４１０の使用効率低下というデメリットと引き替えに、保証コード付き論理ブロック（拡張論理ブロックBLK２）を論理ブロックBLK１の集合体として、そのままディスクドライブ４１０に書き込むことができる。つまり、本実施例では、ディスクドライブ４１０の使用効率の低下と引き替えに、保証コードを含むライトデータを書き込む場合のペナルティを低減している。
【００９４】
図５は、構成情報Ｔ１を示す説明図である。構成情報Ｔ１は、論理ボリュームの構成に関する情報を管理するものであり、例えば、共有メモリ１４０に記憶される。構成情報Ｔ１は、例えば、論理ボリューム識別番号（図中「LU#」）Ｉ１と、基本ディスクアクセスサイズの値Ｉ２と、パス情報Ｉ３と、その他の情報Ｉ４とを含んで構成される。
【００９５】
論理ボリューム識別番号Ｉ１は、各論理ボリューム２３０，２３０Ｖをそれぞれ識別するための情報である。基本ディスクアクセスサイズの値Ｉ２は、各論理ボリューム２３０，２３０Ｖに対応付けられる基本ディスクアクセスサイズBDの値を管理する。なお、基本ディスクアクセスサイズBDの値に代えて、基本I/OサイズBIOの値を管理する構成としてもよい。あるいは、基本ディスクアクセスサイズBDの値及び基本I/OサイズBIOの値をそれぞれ管理する構成でもよい。パス情報Ｉ３は、各論理ボリューム２３０，２３０Ｖに接続されているディスクドライブ２１０または外部ボリューム４３０へのアクセス経路を管理する。その他の情報Ｉ４には、例えば、各論理ボリューム２３０，２３０Ｖの記憶容量、各論理ボリューム２３０，２３０Ｖを構成するディスクドライブの種類、各論理ボリューム２３０，２３０Ｖにアクセス可能なホスト２０及びアクセスレベルに関する情報等を含めることができる。
【００９６】
内部の実ボリューム２３０の場合、パス情報Ｉ３には、内部のディスクドライブ２１０に関する情報が記憶される。例えば、その内部ボリューム２３０を構成する各ディスクドライブ２１０の番号等が記憶される。仮想的な論理ボリューム２３０Ｖの場合、パス情報Ｉ３には、その仮想的な論理ボリューム２３０Ｖに対応付けられている外部ボリューム４３０にアクセスするための経路情報が記憶される。経路情報としては、例えば、外部ストレージ装置３０を識別するための装置番号、外部ストレージ装置３０のターゲットポート３１１Ｔを識別するためのポート番号、外部ストレージ装置３０内の論理ボリューム４３０を識別するためのボリューム番号等を挙げることができる。
【００９７】
図６は、論理ブロックBLK１と拡張論理ブロックBLK２との関係を模式的に示す説明図である。既に述べた通り、本実施例のストレージシステムは、データ転送の単位として、論理ブロックBLK１を使用する。論理ブロックBLK１は、ディスクドライブ２１０，４１０内の物理ブロック（セクタ）と同一の５１２バイトの長さを有する。
【００９８】
図６（ａ）に示すように、基本I/OサイズBIOは、論理ブロックBLK１の個数として表現することができる。ホスト２０は、論理ブロックBLK１のバイト長の整数倍の長さを有する基本I/OサイズBIO単位でライトデータを生成し、このライトデータをメインストレージ装置１０に送信する。
【００９９】
図６（ｂ）に示すように、メインストレージ装置１０内では、各論理ブロックBLK１毎に、それぞれ保証コードGDを生成して付加する。保証コードGDの付加された論理ブロックBLK１は、５２０バイトの長さを有する拡張論理ブロックBLK２となる。拡張論理ブロックBLK２は、保証コードGDの分だけサイズが大きくなるため、このままでは、論理ブロックBLK１単位でデータを記憶するディスクドライブ２１０，４１０に書き込むことができない。そこで、本実施例では、最後の拡張論理ブロックBLK２の後に、不用部分UPを加えて、ライトデータのバイト長を論理ブロックBLK１の整数倍に一致させる。換言すれば、本実施例では、保証コードを含むライトデータが論理ブロックBLK１の整数倍となるように、ライトデータの後尾に不用部分UPを加える。なお、不用部分UPの挿入位置は、ライトデータの最後尾に限らない。不用部分UPのバイト長は、ホスト２０から送信されるライトデータの長さ、つまり、基本I/OサイズBDの値によって変化する。
【０１００】
図７は、ライトデータに占める不用部分UPの割合変化を示す説明図である。図７（１）に示すように、基本I/OサイズBIOが１個の論理ブロックBLK１だけで構成される場合、メインストレージ装置１０から外部ストレージ装置３０に送信されるライトデータは、２個の論理ブロックBLK１から構成される。この場合、不用部分UPのバイト長は、５０４（＝５１２×２−（５１２＋８））バイトとなる。外部ストレージ装置３０の受信するライトデータ中の不用部分UPの割合は、約４９％（＝５０４／１０２４）となる。
【０１０１】
図７（２）に示すように、基本I/OサイズBIOが２個の論理ブロックBLK１から構成される場合、外部ストレージ装置３０は、論理ブロック３個分の長さを有するライトデータをメインストレージ装置１０から受信する。この場合、不用部分UPのバイト長は、４９６（＝５１２×３−（５１２×２＋８×２））となる。外部ストレージ装置３０の受信するライトデータに含まれる不用部分UPの割合は、約３２％となる。
【０１０２】
図７（３）に示すように、基本I/OサイズBIOが３個の論理ブロックBLK１から構成される場合、外部ストレージ装置３０は、論理ブロック４個分の長さを有するライトデータをメインストレージ装置１０から受信する。この場合、不用部分UPのバイト長は、４８８（＝５１２×４−（５１２×３＋８×３））となる。外部ストレージ装置３０の受信するライトデータに含まれる不用部分UPの割合は、約２４％となる。
【０１０３】
図７（４）に示すように、基本I/OサイズBIOが４個の論理ブロックBLK１から構成される場合、外部ストレージ装置３０は、論理ブロック５個分の長さを有するライトデータをメインストレージ装置１０から受信する。この場合、不用部分UPのバイト長は、４８０（５１２×５−（５１２×４＋８×４））となる。外部ストレージ装置３０の受信するライトデータ中の不用部分UPの割合は、約１９％となる。
【０１０４】
各論理ブロックBLK１毎に付加される保証コードGDの存在により、基本ディスクアクセスサイズBDは、基本I/OサイズBIOを構成する論理ブロックBLK１の数よりも１個だけ多い数の論理ブロックBLK１から構成される。各保証コードGDの合計バイト長と１つの論理ブロックBLK１のバイト長との差分が、不用部分UPのバイト長となる。各保証コードGDの合計バイト長が５１２バイトになった場合、不用部分UPは発生しなくなる。
【０１０５】
図８は、メインストレージ装置１０から外部ストレージ装置３０に送信されるライトデータ中に、不用部分UPが生じない場合の説明図である。
【０１０６】
基本I/OサイズBIOが６４個の論理ブロックBLK１から構成される場合、６４個の保証コードGDの合計は、５１２バイトとなる（６４×８＝５１２）。この場合、メインストレージ装置１０から外部ストレージ装置３０に送信されるライトデータは、６４個分の論理ブロックBLK１に相当するデータ本体と、１個分の論理ブロックBLK１に相当する保証コードGDとから構成される。従って、基本ディスクアクセスサイズBDは、６５個の論理ブロックBLK１から構成される。
【０１０７】
つまり、基本I/OサイズBIOのバイト長及び基本ディスクアクセスサイズBDのバイト長を、論理ブロックBLK１のバイト長５１２と拡張論理ブロックBLK２のバイト長５２０との最小公倍数LCM（５１２，５２０）の値（３３２８０）にそれぞれ設定すれば、不用部分UPは生じない。従って、基本I/OサイズBIOが６４個分の論理ブロックBLK１として設定された場合、６４個分の論理ブロックBLK１に相当するライトデータは、６５個分の論理ブロックBLK１に相当する保証コード付きデータとして、外部ストレージ装置３０内のディスクドライブ４１０に書き込まれる。
【０１０８】
図９は、ストレージシステムの初期設定を行うためのフローチャートである。以下に述べる各フローチャートは、発明の理解及び実施に必要な範囲内で、処理の概要を示しており、実際のコンピュータプログラムとは異なる場合がある。当業者であれば、ステップをの順番を入れ替えたり、一部のステップを別のステップに置き換えたり、一部のステップを削除したりできる場合がある。
【０１０９】
ユーザは、メインストレージ装置１０と外部ストレージ装置３０とを通信経路CN２を介して接続し、外部ストレージ装置３０内の論理ボリューム４３０とメインストレージ装置１０内の仮想的な論理ボリューム２３０Ｖとを対応付ける（Ｓ１０）。この対応付け作業は、管理端末６０からの操作で行うことができる。
【０１１０】
ユーザは、メインストレージ装置１０とホスト２０とを通信経路CN１を介して接続し、ホスト２０によりアクセスされる論理ボリューム２３０，２３０Ｖを設定する。即ち、ユーザは、管理端末６０を用いることにより、ホスト２０が論理ボリューム２３０，２３０Ｖにアクセスするための経路情報等を設定する。
【０１１１】
メインストレージ装置１０のコントローラ１００は、Ｓ２１で設定される基本I/OサイズBIOに応じて、基本ディスクアクセスサイズBDを設定する（Ｓ１２）。
【０１１２】
一方、ホスト２０では、ホスト２０がメインストレージ装置１０にアクセスするための経路情報を設定し（Ｓ２０）、さらに、アプリケーションプログラム２１の仕様等を考慮して基本I/OサイズBIOを設定する（Ｓ２１）。便宜上、メインストレージ装置１０側の処理が先に行われるかのようにして説明したが、ホスト２０の設定とメインストレージ装置１０の設定とは、略平行して行うことができる。
【０１１３】
このように、ストレージシステムの初期設定時において、ユーザは、ホスト２０側の事情を考慮して、基本I/OサイズBIOを設定することができる。そして、この基本I/OサイズBIOに応じた値が、基本ディスクアクセスサイズBDに設定される。
【０１１４】
図１０は、ホスト２０から発行されるリードコマンドをメインストレージ装置１０が処理するための処理を示すフローチャートである。メインストレージ装置１０は、CHA１１０を介して、ホスト２０から発行されるリードコマンドを受信する（Ｓ３０）。
【０１１５】
メインストレージ装置１０は、リードコマンドを解析し、要求されたデータが記憶されている論理ボリュームを特定する（Ｓ３１）。メインストレージ装置１０は、データを記憶するための領域をキャッシュメモリ１３０に確保する（Ｓ３２）。
【０１１６】
続いて、メインストレージ装置１０は、Ｓ３１で特定された論理ボリュームから、基本ディスクアクセスサイズBD単位でデータを読出し、読み出したデータをキャッシュメモリ１３０に記憶させる（Ｓ３３）。
【０１１７】
上述の通り、基本I/OサイズBIOの値によっては、不用部分UPが発生する。即ち、本実施例では、ディスクドライブ４１０（またはディスクドライブ２１０）のフォーマットは、論理ブロック単位から、基本ディスクアクセスサイズBD単位に変更されて使用されることになる。メインストレージ装置１０は、基本ディスクアクセスサイズBDを構成情報Ｔ１で管理しているため、ディスクドライブ４１０（またはディスクドライブ２１０）から正常にデータを読み出すことができる。つまり、メインストレージ装置１０は、どの部分がデータ本体であり、どの部分が保証コードGDであり、どの部分が不用部分UPであるかを見分けることができる。
【０１１８】
さて、Ｓ３３でキャッシュメモリ１３０上に読み出されたデータは、保証コードGDを備えている。そこで、メインストレージ装置１０は、保証コードGDの内容を検査し、Ｓ３３で読み出したデータが正常なデータであるか否かを確認する（Ｓ３４）。メインストレージ装置１０は、Ｓ３４で検査されたデータを、CHA１１０からホスト２０に送信させる（Ｓ３５）。メインストレージ装置１０からホスト２０に送信されるデータからは、保証コードGDは取り除かれている。
【０１１９】
なお、ホスト２０のアクセス先が仮想的な論理ボリューム２３０Ｖの場合、メインストレージ装置１０は、外部ストレージ装置３０内の論理ボリューム４３０からデータを読み出すためのリードコマンドを生成し、このリードコマンドを外部ストレージ装置３０に送信する。外部ストレージ装置３０は、メインストレージ装置１０から受信したリードコマンドに応じて論理ボリューム４３０からデータを読出し、読み出したデータをメインストレージ装置１０に送信する。
【０１２０】
図１１は、ホスト２０から発行されるライトコマンドを処理するためのフローチャートである。このライト処理では、外部ストレージ装置３０内の論理ボリューム（外部ボリューム）４３０に、ライトデータを書き込む場合を例に挙げて説明する。
【０１２１】
メインストレージ装置１０は、ホスト２０から発行されるライトコマンドを受信すると（Ｓ４０）、そのライトコマンドを解析して、書込み対象の外部ボリューム４３０を特定する（Ｓ４１）。外部ボリューム４３０が特定されることにより、その外部ボリューム４３０に記憶領域を提供しているディスクドライブ（外部ディスク）４１０も特定されることになる。フローチャート中では、外部ボリューム４３０と外部ディスク４１０とを特に区別することなく記載する場合がある。
【０１２２】
メインストレージ装置１０は、ライトデータを記憶するための領域をキャッシュメモリ１３０に確保する（Ｓ４２）。メインストレージ装置１０は、ホスト２０から基本I/OサイズBIO単位でライトデータを受信し、この受信したライトデータをキャッシュメモリ１３０に記憶させる（Ｓ４３）。
【０１２３】
メインストレージ装置１０は、ライトデータをキャッシュメモリ１３０に記憶させた時点で、ホスト２０に書込み完了を報告可能である（Ｓ４４）。あるいは、メインストレージ装置１０は、外部ストレージ装置３０から書込み完了報告を受信した後で、ホスト２０に書込み完了を報告することもできる。いずれの方法を採用してもよい。
【０１２４】
メインストレージ装置１０は、ホスト２０から受信したライトデータについて、各論理ブロックBLK１毎にそれぞれ保証コードGDを生成し、生成された各保証コードGDを各論理ブロックBLK１に付加する（Ｓ４５）。この保証コードGDの生成及び論理ブロックBLK１への保証コードGDの付加は、CHA１１０内のソフトウェアまたはハードウェアで行うことができる。あるいは、保証コードの生成及び付加を実行するための専用のハードウェア回路を設ける構成でもよい。
【０１２５】
メインストレージ装置１０は、保証コードGDの付加されたライトデータ、即ち、拡張論理ブロックBLK２単位のライトデータを、論理ブロックBLK１単位のデータに変換し、外部ストレージ装置３０に送信する（Ｓ４６）。即ち、上述のように、メインストレージ装置１０は、保証コードGDの付加されたライトデータを、論理ブロックBLK１の整数倍のサイズを有する基本ディスクアクセスサイズBD単位のデータに変換する。
【０１２６】
外部ストレージ装置３０は、メインストレージ装置１０から受信したライトデータを、キャッシュメモリ３３０に記憶させる（Ｓ５０）。外部ストレージ装置３０は、キャッシュメモリ３３０に記憶されたライトデータを、外部ボリューム４３０を構成するディスクドライブ４１０に書き込む（Ｓ５１）。外部ストレージ装置３０は、ライトデータをディスクドライブ４１０に書き込んだ後、メインストレージ装置１０に書込み完了を報告する（Ｓ５２）。これにより、メインストレージ装置１０は、外部ストレージ装置３０による処理が完了したことを確認する（Ｓ４７）。
【０１２７】
図１２は、各論理ボリューム２３０Ｖ毎に、それぞれ異なる基本I/OサイズBIOを設定する様子を示す説明図である。図１２に示すように、構成情報Ｔ１には、各論理ボリューム２３０Ｖ毎にそれぞれ異なる基本ディスクアクセスサイズBDが予め設定することができる。
【０１２８】
例えば、論理ボリューム２３０Ｖ（＃００）を利用するホスト２０は、２個分の論理ブロックBLK１を基本I/OサイズBIOとしてアクセスする。メインストレージ装置１０は、論理ボリューム２３０Ｖ（＃００）に対応付けられている外部ボリューム４３０（＃１０）に対し、３個分の論理ブロックBLK１を基本ディスクアクセスサイズBDとしてアクセスする。
【０１２９】
同様に、論理ボリューム２３０Ｖ（＃０１）を利用するホスト２０は、３個分の論理ブロックBLK１を基本I/OサイズBIOとしてアクセスする。メインストレージ装置１０は、論理ボリューム２３０Ｖ（＃０１）に対応付けられている外部ボリューム４３０（＃１１）に対し、４個分の論理ブロックBLK１を基本ディスクアクセスサイズBDとしてアクセスする。
【０１３０】
同様に、論理ボリューム２３０Ｖ（＃０２）を利用するホスト２０は、４個分の論理ブロックBLK１を基本I/OサイズBIOとしてアクセスする。メインストレージ装置１０は、論理ボリューム２３０Ｖ（＃００）に対応付けられている外部ボリューム４３０（＃１０）に対し、３個分の論理ブロックBLK１を基本ディスクアクセスサイズBDとしてアクセスする。
【０１３１】
本実施例は上述のように構成されるため、以下の効果を奏する。このように本実施例では、データを記憶する単位が論理ブロック単位に固定されたディスクドライブ４１０（またはディスクドライブ２１０）に対して、データの読出しを行うことなく、保証コードGDの付加されたデータを記憶させることができる。従って、メインストレージ装置１０の応答性能の低下を抑制することができ、使い勝手が向上する。
【０１３２】
本実施例では、所定の範囲内で、基本I/OサイズBIOの値をホスト２０にとって好ましい値に設定することができる。従って、ホスト２０は好ましいサイズでライトデータを送信することができ、使い勝手が向上する。
【０１３３】
本実施例では、基本I/OサイズBIOの値及び基本ディスクアクセスサイズBDの値が、論理ブロックBLK１のバイト長（５１２バイト）と拡張論理ブロックBLK２のバイト長（５２０バイト）との最小公倍数に設定された場合、ディスクドライブ４１０（またはディスクドライブ２１０）を無駄なく利用することができ、ディスクドライブの記憶領域を効率的に使用することができる。
【実施例２】
【０１３４】
図１３，図１４に基づいて、本発明の第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に該当する。本実施例では、既に使用されていた外部ストレージ装置３０をメインストレージ装置１０に接続する場合を例に挙げて説明する。
【０１３５】
前記第１実施例で述べたように、メインストレージ装置１０は、外部ストレージ装置３０の有する外部ボリューム４３０を、それがあたかもメインストレージ装置１０内の論理ボリューム２３０Ｖであるかのように見せかけるという、仮想化機能を備える。従って、例えば、ユーザは、新型のメインストレージ装置１０を購入することにより、旧型の外部ストレージ装置３０をメインストレージ装置１０で仮想化して使用できる。これにより、メインストレージ装置１０の備える大容量のキャッシュメモリ１３０や高速なマイクロプロセッサを利用して、外部ボリュームへのデータ入出力処理を行うことができ、ストレージシステムの性能が改善される。
【０１３６】
このように、メインストレージ装置１０の仮想化機能によって、既存の外部ストレージ装置３０を有効に利用するこができる。しかし、この場合、外部ボリューム４３０には、所定のフォーマットに従ってデータが記憶されていることが多い。例えば、以前、メインストレージ装置１０によって仮想化されていた外部ストレージ装置３０を、新たに購入さした別のメインストレージ装置１０によって再び仮想化するような場合、外部ボリューム４３０を構成する各ディスクドライブ４１０は、以前に設定された基本ディスクアクセスサイズBDに従ってデータを記憶している。
【０１３７】
そこで、本実施例では、外部ボリューム４３０を構成するディスクドライブ４１０に既に設定されている基本ディスクアクセスサイズBDの値に基づいて、ストレージシステムを構築する場合を説明する。
【０１３８】
図１３は、本実施例による、基本ディスクアクセスサイズBDの設定処理を示すフローチャートである。ユーザは、メインストレージ装置１０と既存の外部ストレージ装置３０とを接続する（Ｓ６０）。
【０１３９】
メインストレージ装置１０は、外部ストレージ装置３０にアクセスし、外部ディスク（即ち、外部ストレージ装置３０の有するディスクドライブ４１０である）に管理情報Ｔ２が記憶されているか否かを判定する（Ｓ６１）。ディスクドライブ内の管理情報Ｔ２と構成情報Ｔ１との関係は、図１４と共に後述する。
【０１４０】
外部ディスク４１０が管理情報Ｔ２を備えている場合（S61:YES）、メインストレージ装置１０は、その管理情報Ｔ２に基本ディスクアクセスサイズBDの値が設定されているか否かを判定する（Ｓ６２）。
【０１４１】
外部ディスク４１０の備える管理情報Ｔ２内に基本ディスクアクセスサイズBDの値が設定されている場合（S62:YES）、メインストレージ装置１０は、その基本ディスクアクセスサイズBDの値を、構成情報Ｔ１に登録する（Ｓ７３）。メインストレージ装置１０は、外部ディスク４１０に基本ディスクアクセスサイズBDが既に設定されている場合、そのBDの値を引き続き使用する。
【０１４２】
Ｓ６４〜Ｓ７２を説明する前に図１４を参照して、ディスクドライブ内の管理情報Ｔ２と構成情報Ｔ１との関係を説明する。ディスクドライブ４１０を例に挙げて説明するが、メインストレージ装置１０内のディスクドライブ２１０についても、同様である。
【０１４３】
ディスクドライブ４１０の記憶領域は、管理領域とデータ領域とに大別できる。管理領域には、ディスクドライブ４１０に関する管理情報Ｔ２が記憶され、データ領域には、ライトデータが記憶される。管理情報Ｔ２には、基本ディスクアクセスサイズBDの値を記憶させることができる。
【０１４４】
従って、図１３中のＳ６２では、ディスクドライブ４１０内の管理情報Ｔ２にアクセスすることにより、そのディスクドライブ４１０に基本ディスクアクセスサイズBDの値が設定されているか否かを調べることができる。メインストレージ装置１０は、管理情報Ｔ２に設定されている基本ディスクアクセスサイズBDの値を読み出して、この値を構成情報Ｔ１に登録する。
【０１４５】
これにより、メインストレージ装置１０がそのディスクドライブ４１０にアクセスする場合、即ち、そのディスクドライブ４１０を利用して生成されている論理ボリューム４３０にメインストレージ装置１０がアクセスする場合、そのディスクドライブ４１０に既に設定されている基本ディスクアクセスサイズBDに従って、データの読出しまたは書込みが行われる。このように、ディスクドライブ４１０に既に設定されている基本ディスクアクセスサイズBDの値に従ってアクセスすることにより、メインストレージ装置１０は、正常にデータを読み出したり、正常にデータを書き込むことができる。
【０１４６】
図１３に戻る。ディスクドライブ４１０が管理情報Ｔ２を備えていない場合（S61:NO）、または、ディスクドライブ４１０の備える管理情報Ｔ２に基本ディスクアクセスサイズBDの値が設定されていない場合（S62:NO）、そのディスクドライブ４１０に設定されてるべき基本ディスクアクセスサイズBDの値が検査される（Ｓ６４〜Ｓ７０）。メインストレージ装置１０は、ディスクドライブ４１０内に保証コードGD付きのデータが記憶されているものと推定して、BD値を検査する。
【０１４７】
メインストレージ装置１０は、基本ディスクアクセスサイズBDの初期値として「１」を設定し（Ｓ６４）、Ｓ６４で設定されたBDの値が所定の最大値BDmaxに達したか否かを判定する（Ｓ６５）。
【０１４８】
Ｓ６４で設定されたBDの値が最大値BDmaxに達していない場合（S65:NO）、メインストレージ装置１０は、Ｓ６４で設定されたBDの値で、ディスクドライブ４１０からデータを一回または連続した複数回読出す（Ｓ６６）。そして、メインストレージ装置１０は、Ｓ６６で正常にデータを読み出すことができたか否かを判定する（Ｓ６７）。
【０１４９】
例えば、ディスクドライブ４１０が３個の論理ブロックBLK１を単位としてデータを記憶している場合（BD=３）を考える。この場合、もしも、メインストレージ装置１０がそのディスクドライブ４１０から、３個未満の論理ブロック単位または４個以上の論理ブロック単位でデータを読み出すと、メインストレージ装置１０は、正常にデータを解釈することができない。
【０１５０】
メインストレージ装置１０が予測するフォーマット（BD値）とディスクドライブ４１０のフォーマット（BD値）とが異なり、メインストレージ装置１０は、どれがデータ本体で、どれが保証コードで、どれが不用部分UPなのか、判断できないためである。これに対し、もしも、メインストレージ装置１０の予測するフォーマット（BD値）が、ディスクドライブ４１０のBD値と一致する場合、メインストレージ装置１０は、読み出したデータを正常に判別することができる。
【０１５１】
そこで、メインストレージ装置１０は、BDの値がBDmaxに達するまで（Ｓ６５）、BDの値を１つずつ増加させながら（Ｓ６８）、ディスクドライブ４１０から繰り返しデータを読出し（Ｓ６６）、正常にデータを判別できるか否かを検査する（Ｓ６６）。
【０１５２】
なお、ディスクドライブ４１０のBD値よりも小さいBD値で、ディスクドライブ４１０からデータを一回だけ読み出す場合、メインストレージ装置１０は、データ本体及び保証コードGDを正常に判別できる可能性がある。そこで、Ｓ６６では、Ｓ６１またはＳ６８で設定されたBD値で、ディスクドライブ４１０内の連続する記憶領域からデータを繰り返し読み出すのが好ましい。
【０１５３】
予測したBD値がディスクドライブ４１０のBD値と一致する場合、データを正常に判別することができるため（S67:YES）、メインストレージ装置１０は、その予測したBD値を、そのディスクドライブ４１０のBD値として選択する（Ｓ６９）。
【０１５４】
これに対し、１つずつ増加させながら予測するBD値がBDmaxに到達した場合（S65:YES）、メインストレージ装置１０は、BD値を「０」に設定する（Ｓ７０）。ここで、BD値＝０とは、そのディスクドライブ４１０には、保証コードGD付きでデータが記憶されていないことを意味する。つまり、BD値が０であるディスクドライブ４１０は、保証コードGDの付加されていないデータを５１２バイト単位で記憶していることになる。
【０１５５】
上述の通り、メインストレージ装置１０は、拡張論理ブロックBLK２単位のデータが論理ブロックBLK１単位のデータとしてディスクドライブ４１０に記憶されることを前提に、BD値を検査している。もしも、ディスクドライブ４１０が保証コードGD付きのデータを記憶している場合は、いずれディスクドライブ４１０に設定されている正しいBD値を検出することができる。
【０１５６】
しかし、ディスクドライブ４１０が保証コードGD付きのデータを記憶していない場合、つまり、保証コードGDが付加されていない通常のデータを通常のサイズ（５１２バイト）で、ディスクドライブ４１０が記憶している場合には、上記の検査（Ｓ６４〜Ｓ６９）でBD値を検出することができない。この場合、そもそもディスクドライブ４１０にBD値は設定されていないためである。そこで、Ｓ７０では、そのディスクドライブ４１０のBD値を「０」として選択する。
【０１５７】
このようにして、ディスクドライブ４１０がどのような単位でデータを記憶しているのかが検出される。メインストレージ装置１０は、そのディスクドライブ４１０が管理情報Ｔ２を備えている場合（S71:YES）、Ｓ６９で選択されたBD値を管理情報Ｔ２に書き込む（Ｓ７２）。これにより、Ｓ７２で管理情報Ｔ２にBD値の書き込まれたディスクドライブ４１０を、将来、別の新たなメインストレージ装置１０が再利用するような場合、この別の新たなメインストレージ装置１０は、そのディスクドライブ４１０に適用すべきBDの値を速やかに得ることができる（S61:YES，S62:YES，S73）。
【０１５８】
このように構成される本実施例も、前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、既に使用されたことのあるディスクドライブ４１０をメインストレージ装置１０内に仮想的に取り込む場合に、メインストレージ装置１０は、そのディスクドライブ４１０に適したBD値を検出し、この検出されたBD値を用いてそのディスクドライブ４１０にアクセスすることができる。従って、ユーザの使い勝手が向上する。
【０１５９】
第１実施例で述べたように、ホスト２０の事情に応じて基本I/OサイズBIOが決定され、BIOに応じて基本ディスクアクセスサイズBDが選択される。従って、ホスト２０の事情に変更が無い限り、そのディスクドライブ４１０に関するBD値も変化しない。つまり、あるアプリケーションプログラム２１によって使用されるデータを記憶したディスクドライブ４１０には、仮想化装置としてのメインストレージ装置１０が交代した場合でも、同一のBD値でアクセス可能である。
【実施例３】
【０１６０】
図１５，図１６に基づいて第３実施例を説明する。本実施例では、複数のモードでライトデータを外部ストレージ装置３０内のディスクドライブ４１０に記憶させる場合を説明する。
【０１６１】
図１５は、ストレージシステムの全体構成を示す模式図である。本実施例のストレージシステムは、複数の外部ストレージ装置３０（１），３０（２）を備えている。メインストレージ装置１０は、ホスト２０から受信したライトデータに保証コードGDを付加し、予め設定されたモードに基づいて、外部ストレージ装置３０（１），３０（２）のいずれかに送信する。
【０１６２】
第１外部ストレージ装置３０（１）は、前記第１実施例で述べた通り、メインストレージ装置１０から受信した、BD分の論理ブロックBLK１からなるライトデータを、論理ボリューム４３０内に（即ち、論理ボリューム４３０に記憶領域を提供するディスクドライブ４１０内に）記憶させる。従って、不用部分UPの分だけディスクドライブ４１０の使用効率は低下する。しかし、データ書込み時の応答性能は改善される。
【０１６３】
第２外部ストレージ装置３０（２）では、各論理ボリューム４３０（１）〜４３０（３）にそれぞれ異なるモードが適用されている。以下、各モードを順番に説明する。
【０１６４】
第１モードは、第２外部ストレージ装置３０（２）内で、メインストレージ装置１０から受信した保証コードGD付きのライトデータに、別の保証コードGD２を付加する。第２外部ストレージ装置３０（２）は、メインストレージ装置１０から受信したライトデータに対して、各論理ブロックBLK１毎にそれぞれ保証コードGD２を付加し、ディスクドライブ４１０内に記憶させる。データ本体及び不用部分UPのそれぞれについて、保証コードGD２が付加される。従って、外部ストレージ装置３０（２）は、保証コードGD２によってデータの信頼性を確認することができ、メインストレージ装置１０は、保証コードGDによってデータの信頼性を確認することができる。このように、第１モードでは、保証コードの仕組みを冗長化するため、信頼性をより改善することができる。
【０１６５】
第２モードは、メインストレージ装置１０から受信した拡張論理ブロックBLK２を、第２論理ボリューム４３０（２）にそのまま記憶させる。第２論理ボリューム４３０（２）に記憶領域を提供するディスクドライブ４１０は、そのセクタ長が５２０バイトに設定されている。従って、メインストレージ装置１０は、保証コードGDの付加されたライトデータを、論理ブロックBLK１単位のフォーマットに変換することなく、拡張論理ブロックBLK２単位で、第２論理ボリューム４３０（２）に送信する。第２モードでは、不用部分UPは発生しない。
【０１６６】
第３モードは、前記第１実施例及び前記第１外部ストレージ装置３０（１）で述べたように、メインストレージ装置１０から受信した保証コード付きライトデータを、論理ブロックBLK１単位で、第３論理ボリューム４３０（３）に記憶させる。
【０１６７】
ここで、メインストレージ装置１０に着目する。メインストレージ装置１０は、複数の論理ボリューム２３０（１），２３０（２）を備えている。一方の論理ボリューム２３０（１）は、５２０バイト単位で（拡張論理ブロックBLK２単位で）データを記憶可能なディスクドライブ２１０に基づいて、構成されている。他方の論理ボリューム２３０（２）は、前記第１実施例で述べたと同様に、５１２バイト単位で（論理ブロックBLK１単位で）データを記憶可能なディスクドライブ２１０に基づいて、生成されている。
【０１６８】
従って、一方の論理ボリューム２３０（１）を構成するディスクドライブ２１０には、前記第２モードと同様に、拡張論理ブロックBLK２単位でデータが記憶される。他方の論理ボリューム２３０（２）を構成するディスクドライブ２１０には、前記第３モードと同様に、保証コード付きライトデータが論理ブロックBLK１単位のデータに変換されて記憶される。
【０１６９】
図１６は、第１モードが適用される場合の処理を示すフローチャートである。図１６は、図１１のフローチャートに含まれているＳ４０〜Ｓ５０，Ｓ５２を全て備える。図１６のフローチャートは、新規なステップＳ５１，Ｓ５３を備える。
【０１７０】
Ｓ５３では、メインストレージ装置１０から受信したライトデータについて、各論理ブロックBLK１毎に保証コードGD２をそれぞれ付加する。続いて、外部ストレージ装置３０（２）は、保証コードGD及び保証コードGD２がそれぞれ付加されたライトデータを、ディスクドライブ４１０に書き込む（Ｓ５１Ａ）。
【０１７１】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、同一の外部ストレージ装置３０（２）内で、それぞれ異なる複数のモードでライトデータを記憶させることができる。従って、例えば、ディスクドライブ４１０の性質（固定セクタか可変セクタか、セクタ長は５１２バイトか５２０バイトか）とホスト２０の都合とを総合的に考慮して、適切なモードを選択することも可能であり、使い勝手が向上する。
【実施例４】
【０１７２】
図１７，図１８に基づいて第４実施例を説明する。本実施例では、ホスト２０が、メインストレージ装置１０を介さずに、外部ストレージ装置３０内の論理ボリューム４３０にアクセスするための方法を提供する。
【０１７３】
論理ボリューム４３０には、前記第１実施例で述べたように、保証コード付きのライトデータが論理ブロックBLK１単位のデータとして記憶される。即ち、論理ボリューム４３０の複数のセクタを用いて、拡張論理ブロックBLK２及び不用部分UPが記憶される。
【０１７４】
ストレージシステムは、複数のホスト２０（１），２０（２）を備える。一方のホスト２０（１）は、前記第１実施例で述べたと同様に、予め設定された基本I/OサイズBIOに基づいて、仮想的な論理ボリューム２３０Ｖにアクセスする。仮想的論理ボリューム２３０Ｖは、外部ストレージ装置３０内の論理ボリューム４３０に対応付けられている。ホスト２０（１）から送信されたライトデータは、メインストレージ装置１０内で保証コードGDが付加されて、論理ボリューム４３０を構成するディスクドライブ４１０に書き込まれる。
【０１７５】
他方のホスト２０（２）は、他の第１通信経路CN１を介して、外部ストレージ装置３０のターゲットポート３１１Ｔに接続されている。他方のホスト２０（２）は、アドレス変換部３０１を介して、論理ボリューム４３０にアクセスする。
【０１７６】
図１８は、「データ配置変換部」としてのアドレス変換部３０１の構成を模式的に示す説明図である。上述のように、実ボリュームである論理ボリューム４３０には、データ本体のほかに保証コードGDや不用部分UPも記憶されている。メインストレージ装置１０は、論理ボリューム４３０の記憶領域のうち、データ本体がどこに記憶されており、不用部分UPや保証コードGDがどこに記憶されているのかを、把握している。従って、ホスト２０（１）は、メインストレージ装置１０を介して、論理ボリューム４３０内のデータを利用できる。
【０１７７】
これに対し、外部ストレージ装置３０に直接接続されるホスト２０（２）は、論理ボリューム４３０の記憶領域がどのように使用されているのか把握することができない。そこで、アドレス変換部３０１は、論理ボリューム４３０に記憶されているデータを再配置して、仮想的な論理ボリューム４３０Ｖを生成する。アドレス変換部３０１は、論理ブロックBLK１単位で整然とデータが記憶されている仮想的論理ボリューム４３０Ｖを、ホスト２０（２）に提供する。
【０１７８】
アドレス変換部３０１は、例えば、仮想的な論理ボリューム４３０Ｖ内の論理アドレス（仮想LBA）と論理ボリューム４３０内の論理アドレス（実LBA）とを対応付けることにより構成される。図１８では、説明の便宜上、基本ディスクアクセスサイズBDの値を２個分の論理ブロックBLK１として設定した場合を示している。この場合は、仮想LBAと実LBAとは一対一で対応付けることができる。もしも、例えば、基本ディスクアクセスサイズBDの値を３個分の論理ブロックBLK１として設定したような場合、５１２バイトのデータ本体は、複数のセクタに跨って記憶される。従って、より好ましくは、アドレス変換部３０１は、例えば、仮想LBAと実LBA及びデータ長とを対応付けることにより、構成される。
【０１７９】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、外部ストレージ装置３０内にアドレス変換部３０１を設け、アドレス変換部３０１によって仮想的な論理ボリューム４３０Ｖを生成する。従って、本実施例では、ホスト２０（２）は、メインストレージ装置１０を用いずに、論理ボリューム４３０に記憶されたデータにアクセスすることができ、使い勝手が向上する。
【実施例５】
【０１８０】
図１９に基づいて第５実施例を説明する。本実施例は、第２実施例で起こりうる不具合を改善する。第２実施例では、既に使用されたことのあるディスクドライブ４１０をメインストレージ装置１０に接続する場合、その既存のディスクドライブ４１０に設定されているBD値を構成情報Ｔ１に登録する。そして、そのディスクドライブ４１０に記憶されているデータを利用するホスト２０の事情に変更が無い場合、そのディスクドライブ４１０に設定されているBD値を用いても不都合が生じないと説明した。
【０１８１】
しかし、もしも、例えば、アプリケーションプログラム２１の構成が更新されて、ライトデータの発行サイズが変更された場合には、ホスト２０にとって好ましい基本I/OサイズBIOとディスクドライブ４１０に設定済のBD値とが対応しない可能性がある。
【０１８２】
そこで、図１９に示す初期設定処理では、既存のディスクドライブ４１０のデータを全て読出し、基本I/OサイズBIOに応じて選択される新たな基本ディスクアクセスサイズBDの値に従って、既存のディスクドライブ４１０のフォーマットを変更する。
【０１８３】
ストレージシステムの構築時に、メインストレージ装置１０と外部ストレージ装置３０とが接続され（Ｓ８０）、かつ、メインストレージ装置１０とホスト２０とが接続される（Ｓ８１）。
【０１８４】
メインストレージ装置１０は、外部ストレージ装置３０にアクセスして、ディスクドライブ４１０の管理情報Ｔ２に記憶されている基本ディスクアクセスサイズBDの値を取得する（Ｓ８２）。続いて、メインストレージ装置１０は、Ｓ２１でホスト２０に設定される基本I/OサイズBIOの値を取得する（Ｓ８３）。メインストレージ装置１０は、Ｓ８２で取得した基本ディスクアクセスサイズBDとＳ８３で取得した基本I/OサイズBIOとが対応するか否かを判定する（Ｓ８４）。つまり、メインストレージ装置１０は、基本I/OサイズBIOの値に対応する値が、基本ディスクアクセスサイズBDの値として設定されているか否かを判断する。第１実施例で述べた通り、BD値とBIO値とが適切に対応する場合、BD値の方がBIO値よりも論理ブロック１個分だけ大きい。
【０１８５】
基本I/OサイズBIOと基本ディスクアクセスサイズBDとが対応しない場合（S84:NO）、メインストレージ装置１０は、基本I/OサイズBIOに対応する基本ディスクアクセスサイズBDを選択する（Ｓ８５）。メインストレージ装置１０は、ディスクドライブ４１０に記憶されている全データを読み出して、この読み出したデータをＳ８５で選択されたBD値に従って、ディスクドライブ４１０に書き戻す（Ｓ８６）。これにより、ディスクドライブ４１０には、ホスト２０にとって好ましいBIO値に対応したBD値で、データが記憶される。
【０１８６】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、既存のディスクドライブ４１０に設定済のBD値とホスト２０により選択されるBIO値とが対応しない場合に、BIO値に対応するBD値で既存のディスクドライブ４１０のフォーマットを変更することができる。従って、使い勝手が向上する。
【実施例６】
【０１８７】
図２０に基づいて第６実施例を説明する。本実施例では、論理ボリューム４３０に記憶されたデータをバックアップする場合に、保証コードGDや不用部分UPを取り除く。
【０１８８】
図２０は、ストレージシステムの全体構成を模式的に示す説明図である。外部ストレージ装置３０には、バックアップ用の通信経路CN６を介して、バックアップ装置５０が接続されている。バックアップ装置５０は、例えば、磁気テープやハードディスク等のような記録媒体を一つまたは複数備えている。バックアップ装置５０は、論理ボリューム４３０に記憶されたデータを読み出して、記録媒体に記憶させる。
【０１８９】
アドレス変換部３０１は、前記第４実施例で述べた通り、論理ボリューム４３０に記憶されているデータを論理ブロックBLK１単位で記憶されているかのように見せかけるための仮想的な論理ボリューム４３０Ｖを生成する。
【０１９０】
バックアップ装置５０は、アドレス変換部３０１により提供される仮想的な論理ボリューム４３０Ｖからデータを読出し、読み出したデータを記録媒体に記憶させる。従って、バックアップ装置５０には、保証コードGDや不用部分UPが除去された状態で、論理ボリューム４３０内のデータ本体だけが記憶される。
【０１９１】
なお、例えば、バックアップ装置５０が５２０バイト単位で記憶可能な記録媒体を備える場合、論理ボリューム４３０からバックアップ装置５０にデータ本体及び保証コードGDのみを転送し、不用部分UPは転送しないように構成してもよい。このような変形例は、当業者であれば、アドレス変換部３０１の構成を変更することによって容易に実現できることを理解するであろう。
【０１９２】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、論理ボリューム４３０の記憶内容をバックアップする場合に、保証コードGD及び不用部分UPを除去して、データ本体のみをバックアップ装置５０に記憶させることができる。従って、バックアップ装置５０の記録媒体を有効に利用することができ、使い勝手が向上する。
【０１９３】
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。当業者であれば、前記各実施例を適宜組み合わせることもできる。
【図面の簡単な説明】
【０１９４】
【図１】本発明の実施形態の全体概念を示す説明図である。
【図２】本発明の実施例によるストレージシステムの全体構成を示すブロック図である。
【図３】メインストレージ装置による仮想化機能を模式的に示す説明図である。
【図４】ストレージシステムのソフトウェア構成の要部を模式的に示す説明図である。
【図５】構成情報を示す説明図である。
【図６】基本I/Oサイズと基本ディスクアクセスサイズとの関係を示す説明図である。
【図７】基本I/Oサイズを変化させた場合のディスクドライブの利用効率の変化を模式的に示す説明図である。
【図８】図７と同様の説明図である。
【図９】ストレージシステムの初期設定を行う場合の処理を示すフローチャートである。
【図１０】リードコマンドを処理するためのフローチャートである。
【図１１】ライトコマンドを処理するためのフローチャートである。
【図１２】メインストレージ装置内の各仮想的な論理ボリューム毎に、それぞれ異なる基本I/Oサイズを設定可能なことを示す説明図である。
【図１３】本発明の第２実施例にかかるストレージシステムで実行される、基本ディスクアクセスサイズを設定するための処理を示すフローチャートである。
【図１４】ディスクドライブ内の管理情報とメインストレージ装置内の構成情報との関係を示す説明図である。
【図１５】本発明の第３実施例に係るストレージシステムの構成を示す説明図である。
【図１６】保証コード付きのライトデータに別の保証コードをさらに付加してディスクドライブに書き込むための処理を示すフローチャートである。
【図１７】本発明の第４実施例に係るストレージシステムの構成を示す説明図である。
【図１８】アドレス変換部の構成及びアドレス変換部により生成される仮想的な論理ボリュームの構成を示す説明図である。
【図１９】本発明の第５実施例に係るストレージシステムで実行される、ストレージシステムの初期設定処理を示すフローチャートである。
【図２０】本発明の第６実施例に係るストレージシステムの構成を示す説明図である。
【符号の説明】
【０１９５】
１…コントローラ、１Ａ…上位通信部、１Ｂ…下位通信部、１Ｃ…ライト処理部、１Ｄ…リード処理部、１Ｅ…サイズ変換部、１Ｆ…キャッシュメモリ、２…記憶装置、３…ホスト、４…第１通信経路、５…第２通信経路、BLK１…論理ブロック、BLK２…拡張論理ブロック、GD…保証コード、UP…不用部分、１０…メインストレージ装置、２０…ホスト、２１…アプリケーションプログラム、２２…I/O制御プログラム、３０…外部ストレージ装置、５０…バックアップ装置、６０…管理端末、BD…基本ディスクアクセスサイズ、BIO…基本ディスクアクセスサイズ、１００…コントローラ、１１０…チャネルアダプタ（CHA）、１１０ＩＰ…イニシエータコマンド処理、１１０ＴＰ…ターゲットコマンド処理、１１１…通信ポート、１１１Ｉ…イニシエータポート、１１１Ｔ…ターゲットポート、１２０…ディスクアダプタ（DKA）、１３０…キャッシュメモリ、１４０…共有メモリ、１５０…接続部、２００…記憶部、２１０…ディスクドライブ、２２０…パリティグループまたは中間記憶階層、２２０Ｖ…中間記憶階層、２３０…論理ボリューム、２３０Ｖ…仮想的論理ボリューム、３００…コントローラ、３０１…アドレス変換部、３１０ＴＰ…ターゲットコマンド処理、３１１Ｔ…ターゲットポート、３２０Ｐ…ディスク処理、３３０…キャッシュメモリ、４００…記憶部、４１０…ディスクドライブ、４３０…論理ボリューム、４３０Ｖ…仮想的論理ボリューム、Ｔ１…構成情報、Ｔ２…管理情報、CN１〜CN６…通信経路
【図１】
2008197864.tif 000003
【図２】
2008197864.tif 000004
【図３】
2008197864.tif 000005
【図４】
2008197864.tif 000006
【図５】
2008197864.tif 000007
【図６】
2008197864.tif 000008
【図７】
2008197864.tif 000009
【図８】
2008197864.tif 000010
【図９】
2008197864.tif 000011
【図１０】
2008197864.tif 000012
【図１１】
2008197864.tif 000013
【図１２】
2008197864.tif 000014
【図１３】
2008197864.tif 000015
【図１４】
2008197864.tif 000016
【図１５】
2008197864.tif 000017
【図１６】
2008197864.tif 000018
【図１７】
2008197864.tif 000019
【図１８】
2008197864.tif 000020
【図１９】
2008197864.tif 000021
【図２０】
2008197864.tif 000022