本発明は、記憶制御装置及びストレージシステムに関する。
サーバコンピュータやメインフレームマシン等のホストコンピュータ(以下、「ホスト」)に接続される、記憶制御装置またはストレージシステムの一種として、ディスクアレイシステムが知られている。ディスクアレイシステムは、RAID(Redundant Array of Inexpensive Disks)システムとも呼ばれ、例えば、アレイ状に配置された複数のディスクドライブ及びそれらを制御する制御部を備えている。
ディスクアレイシステムでは、データのリード要求及びライト要求を、複数のディスクドライブの並列動作によって、高速に処理することができる。また、例えば、RAID1〜RAID5として知られているように、ディスクアレイシステムでは、データに冗長性を付加することもできる(非特許文献1)。
このように、ディスクアレイシステムでは、ディスクドライブに障害が生じた場合でもデータを復元できるように、冗長データを作成し、この冗長データをデータとは異なるディスクドライブに保存している。
RAID構成に加えて、さらに、保証コードを使用するディスクアレイシステムも知られている(特許文献1,特許文献2,特許文献3)。一つの従来技術では、保証コードとして、ホストコンピュータがアクセス先として指定する論理ブロックの論理アドレス(以下、「LA(Logical Address)」)、及び、論理ブロックのデータについて排他的論理和演算を実施して求められるLRC(Longitudinal Redundancy Check)を、論理ブロックにそれぞれ付加し、この保証コードと論理ブロックとをディスクドライブに保存させる。LAは、論理ブロックのデータが書き込まれる記憶領域のアドレスの誤りを検出するために用いられる。LRCは、論理ブロックのデータの誤りを検出するための誤り検出符号として用いられる。
論理ブロックに前記保証コードを付加すると、記憶制御装置が取り扱うデータ量の単位と、記憶装置が取り扱うデータ量の単位とが異なる可能性がある。例えば、ATA(AT Attachment)ディスク等のような、ブロック長(セクタ長)が固定されている記憶装置では、所定サイズの論理ブロック単位で記憶する。論理ブロックに保証コードを付加すると、保証コードの分だけデータ量が増加するため、記憶装置のフォーマットによっては、保証コード付きの論理ブロックを記憶させることができない場合がある。
そこで、この問題を解決するために、第4の文献には、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、記憶装置にデータを入出力する際の値として固定する技術が提案されている(特許文献4)。
特開2000−347815号公報
米国特許第5,819,054号公報
米国特許第5,706,298号公報
特開2006−195851号公報
ディー・パターソン(D.Patterson)、外2名、「ケース・フォー・リダンダント・アレイ・オブ・インエクスペンシブ・ディスク(A Case for Redundant Arrays of Inexpensive Disks(RAID))」、エー.シー.エム.シグモッド コンファレンスプロシーディング(ACM SIGMOD Conference Proceeding)、1988年6月、p.109-116
前記第4文献に記載されているように、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、記憶制御装置が記憶装置にデータを書き込む場合の基本単位として設定することにより、セクタ長が固定されている記憶装置に、保証コードの付加された論理ブロックを書き込むことができる。
例えば、論理ブロックのサイズを512バイト、保証コードのサイズを8バイトとすると、保証コード付き論理ブロックのサイズは520バイトとなる。512バイトと520バイトの最小公倍数は、33280バイトとなる。記憶制御装置が上位装置から受信した64個の論理ブロックについて、各論理ブロック毎にそれぞれ8バイトの保証コードを付与することにより、全体のデータサイズは、33280バイトとなる。この値は、65個分の論理ブロックのサイズに等しい。従って、64個の保証コード付き論理ブロックを、65個の論理ブロックとして一括して記憶装置に記憶させることができる。
しかし、前記第4文献に記載の方法では、更新させるデータ量が少ない場合でも、33280バイト分のデータを生成して記憶装置に送信する必要がある。即ち、前記第4文献に記載の方法では、少量のライトデータを書き込む場合に、記憶装置から33280バイトのデータを読み出し、この読み出されたデータとライトデータとをマージして、記憶装置に書き込む必要がある。このように、前記第4文献に記載の方法では、ライト時の効率が低下する。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、上位装置との間のデータ転送で使用されるサイズと記憶制御装置との間のデータ転送で使用されるサイズとが異なる場合でも、応答性能の低下を抑制しながら、記憶装置にデータを書き込むことができるようにした記憶制御装置及びストレージシステムを提供することにある。本発明の他の目的は、記憶制御装置内におけるデータ入出力処理に用いられるデータ管理単位と記憶装置内に記憶されるデータの管理単位とが異なる場合でも、保証コードを用いて信頼性を向上でき、かつ、データ書込み時の性能低下を抑制できるようにした記憶制御装置及びストレージシステムを提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明の一つの観点に従う、上位装置と少なくとも一つ以上の記憶装置との間でデータ入出力を行う記憶制御装置は、予め設定される値に固定される第1サイズにより、上位装置との間でデータを送受信するための第1通信経路と、第1サイズに対応する値に固定される第2サイズにより、記憶装置との間でデータを送受信するための第2通信経路と、上位装置と第1通信経路を介して接続されると共に記憶装置と第2通信経路を介して接続されており、上位装置と記憶装置との間のデータ入出力を制御するためのコントローラとを備える。さらに、このコントローラは、少なくとも、(1)上位装置から第1通信経路を介して受信した第1サイズのデータを第2サイズのデータに変換し、この変換された第2サイズのデータを第2通信経路を介して記憶装置に送信し、記憶装置に記憶させる書込み機能と、(2)記憶装置から第2通信経路を介して読み出された第2サイズのデータを第1サイズのデータに変換し、この変換された第1サイズのデータを第1通信経路を介して上位装置に送信させる読出し機能とを、備える。
本発明の実施形態では、第1サイズと第2サイズとは、所定サイズを有する第1ブロックの数としてそれぞれ示すことができ、第1サイズの有する第1ブロックの数は、1以上所定の最大値以下の範囲内で、任意に設定可能であり、第2サイズの有する第1ブロックの数は、第1サイズの有する第1ブロックの数よりも1つだけ多く設定される。
本発明の実施形態では、第1サイズの有する第1ブロックの数が所定の最大値未満に設定された場合には、第2サイズの有する複数の第1ブロックのうち最後の第1ブロックには、不使用の領域が含まれる。
本発明の実施形態では、所定の最大値(Nmax)は、第1ブロックの有する所定サイズ(BS1)と第1ブロックに所定の冗長データのデータ長(RDS)を加えた他の所定サイズ(BS2=BS1+RDS)との最小公倍数(LCM(BS1,BS2))を、所定サイズ(BS1)で除算した値(LCM(BS1,BS2)/BS1)から、1を減じた値(Nmax=LCM(BS1,BS2)/BS1−1)として設定される。
本発明の実施形態では、コントローラは、記憶装置が複数存在する場合、複数の記憶装置毎に、第1サイズ及び第2サイズをそれぞれ設定する。
本発明の実施形態では、記憶装置に第2サイズ単位で記憶されたデータを、第1サイズ単位で記憶された場合の配置に変換して提供するためのデータ配置変換部が、記憶装置側に設けられている。
本発明の実施形態では、コントローラは、第2サイズの値を記憶装置内の所定の場所に記憶させる機能をさらに備える。
本発明の実施形態では、コントローラは、コントローラと記憶装置とが第2通信経路を介して接続された場合に、記憶装置に記憶されているデータを、読出しサイズの値を変更しながら所定量読み出して、読み出されたデータの内容を検査することにより、記憶装置に記憶されているデータに関する第2サイズの値を検出する機能をさらに備える。
本発明の実施形態では、第1サイズの値は、上位装置によって決定される。
本発明の実施形態では、第2サイズの値は、記憶装置によって決定される。
本発明の実施形態では、上位装置により決定される第1サイズの値と記憶装置により決定される第2サイズの値とが対応しない場合に、記憶装置に記憶されているデータを全て読出して、上位装置により決定される第1サイズの値に対応する値を第2サイズの値として設定し、この設定された第2サイズ単位で、読み出された全データを記憶装置に書き戻す。
本発明の実施形態では、コントローラは、上位装置から受信したデータについて、予め設定されている第1ブロックのサイズ毎に所定長さの冗長データをそれぞれ付加することにより、第1ブロックよりもサイズの大きい第2ブロックを生成可能であり、かつ、
コントローラは、記憶装置が第1ブロック単位でデータを記憶するか、それとも第2ブロック単位でデータを記憶するのかを判別し、(1)記憶装置が第1ブロック単位でデータを記憶する場合には、第1サイズのデータを変換して得られる第2サイズのデータを第1ブロックを用いて記憶装置に送信し、(2)記憶装置が第2ブロック単位でデータを記憶する場合には、第1サイズのデータを変換して得られる第2サイズのデータを第2ブロックを用いて記憶装置に送信する。
本発明の他の観点に従う、ストレージシステムは、上位装置と第1通信経路を介して接続され、上位装置からの要求を処理するコントローラと、コントローラと第2通信経路を介して接続され、コントローラによって制御される記憶装置とを備え、(1)上位装置とコントローラとは、データ送受信に使用される第1ブロックを予め設定された第1所定数だけ用いることにより、データ送受信を行うように設定されており、(2)コントローラと記憶装置とは、第1所定数よりも1つだけ多い値に設定された第2所定数の第1ブロックを用いて、データ送受信を行うように設定されており、(3)コントローラは、(3−1)上位装置から第1通信経路を介して、第1所定数の第1ブロック分のデータを受信し、(3−2)受信したデータに、第1ブロック毎に所定の冗長データを付加して、第1ブロックよりもサイズの大きい第2ブロック単位のデータを生成し、(3−3)生成された第2ブロック単位のデータを、第2所定数の第1ブロックに分けて格納し、(3−4)第2通信経路を介して、第2所定数の第1ブロックを記憶装置に送信し、記憶装置に記憶させる。
本発明の実施形態では、上位装置は、第1所定数を上位装置に適した値に設定する。
本発明の実施形態では、記憶装置として、複数の記憶装置が設けられており、複数の記憶装置には、それぞれ異なる値で、第2所定数を関連づけることができる。
本発明の各部または各ステップの少なくとも一部は、コンピュータプログラムとして構成される場合がある。このコンピュータプログラムは、記録媒体に固定して配布したり、ネットワークを介して配信することができる。
以下、図面に基づいて、本発明の実施の形態を説明する。まず最初に、本発明の概念を説明し、その次に、具体的な実施例について説明する。図1は、本発明の概念を模式的に示す説明図である。
ストレージシステムは、例えば、コントローラ1,記憶装置2及びホスト3を備えて構成される。コントローラ1とホスト3とは、第1通信経路4を介して双方向通信可能に接続されており、コントローラ1と記憶装置2とは、第2通信経路5を介して双方向通信可能に接続されている。第1通信経路4及び第2通信経路5は、例えば、ファイバチャネルプロトコルを使用するSAN(Storage Area Network)ネットワークとして構成される。
コントローラ1は、ホスト3から発行されるコマンドに従って、記憶装置2からデータを読み出したり、記憶装置2にデータを書き込むという制御を行う。後述の実施例から明らかとなるように、例えば、多数のハードディスクドライブを内蔵するストレージ装置10を、コントローラとして使用することができる。あるいは、ファイバチャネルスイッチを、コントローラとして使用することもできる。コントローラ1は、例えば、上位通信部1Aと、下位通信部1Bと、ライト処理部1Cと、リード処理部1Dと、サイズ変換部1Eと、キャッシュメモリ1Fとを備えて構成される。
上位通信部1Aは、第1通信経路4を介してホスト3に接続されており、ホスト3との間のデータ送受信を担当する。下位通信部1Bは、第2通信経路5を介して記憶装置2に接続されており、記憶装置2との間のデータ送受信を担当する。
ライト処理部1Cは、ホスト3から発行されたライトコマンドに従って、ホスト3から受信したライトデータを記憶装置2に書き込ませるためのライト処理を実行する。リード処理部1Dは、ホスト3から発行されたリードコマンドに従って、ホスト3から要求されたデータを記憶装置2から読出し、読み出したデータをホスト3に送信させる。
サイズ変換部1Eは、ホスト3から受信したデータのサイズ(第1サイズ)を、そのデータを記憶装置2に記憶させるのに適したサイズ(第2サイズ)に変換する。また、サイズ変換部1Eは、記憶装置2から読み出されたデータのサイズを、第2サイズから第1サイズに変換することもできる。データのサイズ変換については、さらに後述する。
キャッシュメモリ1Fは、ホスト3から受信したライトデータや、記憶装置2から読み出されたデータを一時的に記憶するために使用される。なお、キャッシュメモリ1Fまたは図示せぬ別のメモリ内に、コントローラ1による制御に必要な管理情報や構成情報を記憶させることもできる。後述の実施例から明らかなように、共有メモリ140内に構成情報T1を記憶させることもできる(図2参照)。
記憶装置2は、例えば、ハードディスク装置、半導体メモリ装置、フラッシュメモリ装置、光ディスク装置、光磁気ディスク装置等のような、書き換え可能な記憶装置として構成される。後述の実施例から明らかとなるように、例えば、多数のハードディスクドライブを内蔵するストレージ装置30を、記憶装置として使用することもできる。ここでは、説明の便宜上、ハードディスクドライブを例に挙げて説明する。記憶装置2は、例えば、512バイトのような固定されたサイズ単位で、データを取り扱う。
本実施形態の第1の特徴は、ホスト3とコントローラ1との間のデータ送受信に使用されるデータのサイズを、初期設定時の値に固定するという点にある。ホスト3とコントローラ1との間のデータ送受信に使用されるデータのサイズのことを、以下の説明では、基本I/Oサイズ(BIO)と呼ぶ。I/Oとは、Input/Outputの略である。基本I/Oサイズは、例えば、ホスト3上で実行されるアプリケーションプログラムの性質に応じて、定めることができる。
本実施形態の第2の特徴は、コントローラ1と記憶装置2との間のデータ送受信に使用されるデータのサイズを、上述の基本I/Oサイズに対応する値に固定するという点にある。コントローラ1と記憶装置2との間のデータ送受信に使用されるデータのサイズのことを、以下の説明では、基本ディスクアクセスサイズ(BD)と呼ぶ。
本実施形態の第3の特徴は、基本I/Oサイズは、所定範囲内でホスト3に適した値を任意に選択可能であるという点にある。ホスト3に適した値とは、例えば、記憶装置2を利用するアプリケーションプログラムがデータ入出力処理を行う際の単位に応じた値として定義することができる。
本実施形態の第4の特徴は、基本I/Oサイズとして選択可能な最大値を選択すると、基本ディスクアクセスサイズのバイト長は、論理ブロックのバイト長の整数倍の値となり、この結果、コントローラ1及び記憶装置2の処理負担が軽減され、ストレージシステム全体としての効率が最も改善されうるという点にある。
基本I/Oサイズ及び基本ディスクアクセスサイズは、それぞれ所定サイズの論理ブロックBLK1の個数として表現することができる。論理ブロックBLK1は、「第1ブロック」に相当し、例えば、512バイトのサイズを有する。
図1に示す例では、基本I/Oサイズは、論理ブロックBLK1が2個分のサイズとして、固定されている。この場合、各論理ブロックBLK1のサイズが512バイトであるから、基本I/Oサイズは、1024バイトとなる。
ライト処理部1Cは、ホスト3から受信した基本I/Oサイズ分のライトデータについて、各論理ブロックBLK1毎に、冗長なデータ(GD)を付加する。この冗長データは、保証コード(GD)と呼ばれており、論理ブロックBLK1のデータの内容や記憶先を保証するためのデータである。保証コードには、例えば、その論理ブロックBLK1のデータが記憶されるべき場所を示す論理アドレスや、その論理ブロックBLK1内のデータから算出されるLRCの値が含まれる。保証コードは、例えば、8バイトのサイズを有する。
512バイトの論理ブロックBLK1に8バイトの保証コードGDを付加することにより、「第2ブロック」としての拡張論理ブロックBLK2が生成される。サイズ変換部1Eは、拡張論理ブロックBLK2のデータを複数の論理ブロックBLK1を用いて送信できるように、ホスト3から受信したライトデータのサイズを、基本I/Oサイズから基本ディスクアクセスサイズに変換する。
基本I/Oサイズ及び基本ディスクアクセスサイズを論理ブロックBLK1の個数として表現した場合、基本ディスクアクセスサイズBDは、基本I/OサイズBIOよりも論理ブロックBLK1の数が1個だけ多くなるように、予めサイズ変換部1Eに設定されている。図示の例では、基本I/OサイズBIOは、論理ブロックBLK1を2個備えるため、基本ディスクアクセスサイズBDは、論理ブロックBLK1が3個分のサイズとなる。
図1の下側に示すように、もともと2個の論理ブロックBLK1としてコントローラ1に受信されたライトデータは、3個の論理ブロックBLK1を用いて、コントローラ1から記憶装置2に送信される。従って、3個の論理ブロックBLK1からなる基本ディスクアクセスサイズBDは、論理ブロックBLK1が2個分のライトデータ(合計1024バイト)と、各論理ブロックBLK1毎に付与される保証コードGD(合計16バイト)と、不用部分UP(512×3−(1024+16)=496バイト)とを含んでいる。
不用部分UPは、論理ブロックBLK1と拡張論理ブロックBLK2とを整合させるための未使用領域である。不用部分UPには、例えば、値「0」を記憶させる。複数の拡張論理ブロックBLK2の最後に不用部分UPを付け加えることにより、整数値の論理ブロックBLK1によってライトデータを記憶装置2に書き込ませることができる。
上述のように、記憶装置2は、論理ブロックBLK1単位で、データを取り扱う仕様になっている。そして、本実施形態では、保証コードGDの分だけサイズが大きい拡張論理ブロックBLK2を、記憶単位がBLK1に固定された記憶装置2に記憶させるために、不用部分UPを用いて、ライトデータのサイズを論理ブロックBLK1の整数倍に調整する。基本ディスクアクセスサイズBDを構成する論理ブロックBLK1の数は、基本I/OサイズBIOを構成する論理ブロックBLK1の数よりも1だけ多くなる。
基本I/OサイズBIOを構成する論理ブロックBLK1の数は、ホスト3の都合に応じて、任意の値に設定することができる。基本I/OサイズBIOは、最低1つの論理ブロックBLK1を含む必要がある。
基本I/OサイズBIOを構成する論理ブロックBLK1の数の最大値Nmaxは、論理ブロックBLK1のバイト長(BS1=512バイト)と拡張論理ブロックBLK2のバイト長(BS2=520バイト)との最小公倍数(LCM(BS1,BS2))を、論理ブロックBLK1のバイト長BS1で除算した値(LCM(BS1,BS2)/BS1)から、1を減算した値(Nmax=LCM(BS1,BS2)/BS1−1)として定義される。
即ち、基本I/OサイズBIOのバイト長及び基本ディスクアクセスサイズBDのバイト長を、論理ブロックBLK1のバイト長と拡張論理ブロックBLK2のバイト長の最小公倍数に一致させることにより、記憶装置2に書き込まれるライトデータ中の不用部分UPを完全に無くすことができる。
具体的には、論理ブロックBLK1のバイト長が512バイト、拡張論理ブロックBLK2のバイト長が520バイトであるから、512バイトと520バイトの最小公倍数は、33280バイトとなる。この最小公倍数33280バイトを512バイトで除算すると、65となる。即ち、基本ディスクアクセスサイズBDは、最大65個の論理ブロックBLK1から構成可能である。基本I/OサイズBIOを構成する論理ブロックBLK1の最大数(Nmax)は、64(=65−1)となる。64個の論理ブロックBLK1にそれぞれ付加される保証コードGDの総バイト数を減じるためである(8×64=512)。
このように本実施形態では、データを記憶する単位が512バイトに固定された記憶装置2に、保証コードの付加されたデータを記憶させることができる。つまり、本実施形態では、コントローラ1内の記憶空間で使用されるデータ管理単位を、記憶装置2内の記憶空間で使用されるデータ管理単位に変換している。
基本I/OサイズBIOのバイト長と基本ディスクアクセスサイズBDのバイト長とが一致する場合、記憶装置2に書き込まれるデータ内に不用部分UPは生じない。これ以外の場合、記憶装置2に書き込まれるデータ内には、幾らかの不用部分UPが生じる。つまり、基本I/OサイズBIOを構成する論理ブロックBLK1の数が64個未満の場合、コントローラ1から記憶装置2に送信されるライトデータ内には、不用部分UPが含まれる。
記憶装置2に記憶されるライトデータに不用部分UPが含まれる率は、基本I/OサイズBIOを構成する論理ブロックBLK1の数Nが増加するほど低下し、Nが64になった場合に0となる。逆に言えば、基本I/OサイズBIOを構成する論理ブロックBLK1の数が多くなるほど、記憶装置2に記憶されるライトデータ中の不用部分UPのサイズは小さくなり、記憶装置2の記憶容量を有効に利用することができる。
本実施形態では、不用部分UPの分だけ記憶装置2内に無駄な領域を生じる場合があるが、この不用部分UPという特徴的な構成により、保証コードの付加されたライトデータを論理ブロックBLK1単位のデータとして記憶装置2に送信することができる。従って、本実施形態では、保証コードによってライトデータの信頼性を保証することができ、かつ、書込み時のペナルティを解消して応答性能の低下を抑制することができる。
既に述べた通り、コントローラ1と記憶装置2との間のアクセスサイズを、論理ブロックBLK1と拡張論理ブロックBLK2の最小公倍数に固定する場合は、最小公倍数に満たないサイズのデータを更新する場合でも、更新箇所の前後に存在するデータを記憶装置2から読み出す必要があり、応答性能が低下する。これに対し、本実施形態では、拡張論理ブロックBLK2群の末尾に不用部分UPを加えることにより、コントローラ1から記憶装置2に送信されるライトデータの両端を、記憶装置2内の各物理ブロック(即ち、論理ブロックBLK1に等しいサイズのセクタ)の境界に一致させることができる。
本実施形態では、ホスト3が記憶装置2にアクセスする際の基本I/OサイズBIOを、ホスト3に適した値に固定することができる。ユーザは、ストレージシステムの構築時に、記憶装置2の使用効率とホスト3の事情とを総合的に考慮して、基本I/OサイズBIOを選択することができる。基本ディスクアクセスサイズBDは、基本I/OサイズBIOに基づいて自動的に決定される。これにより、保証コードを用いるストレージシステムにおいて、応答性能の低下を抑制し、かつ、使い勝手を改善することができる。
後述の実施例からも明らかなように、基本I/OサイズBIOは、各ボリューム毎に設定することができる。即ち、基本I/OサイズBIOは、各ボリュームを構成する各ディスクドライブ毎に、それぞれ所定範囲に含まれる任意の値を設定可能である。従って、例えば、ホスト3上で実行されるアプリケーションプログラムの種類等に応じて、基本I/OサイズBIO及び基本ディスクアクセスサイズBDを設定することができる。以下、本実施形態を詳述する。
図2は、本実施例に係るストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、少なくとも一つのメインストレージ装置10と、一つまたは複数のホスト20と、一つまたは複数の外部ストレージ装置30と、少なくとも一つの管理端末60とを含んで構成することができる。このストレージシステムは、例えば、各種の企業、大学、政府機関等の組織で使用される。しかし、これに限らず、本ストレージシステムは、家庭内で使用することもできる。
先に図1と図2との対応関係を説明する。メインストレージ装置10のコントローラ100は図1中のコントローラ1に、ホスト20は図1中のホスト3に、外部ストレージ装置30及び/又は記憶部200は図1中の記憶装置2に、通信経路CN1は図1中の通信経路4に、通信経路CN2は図1中の通信経路5に、それぞれ対応する。一方のチャネルアダプタ110(図中、CHA(T))は、図1中の上位通信部1Aに対応する。他方のチャネルアダプタ110(図中、CHA(I))及び/又はディスクアダプタ120は、図1中の下位通信部1Bに対応する。
ホスト20とメインストレージ装置10とは、例えば、SANのような通信経路CN1を介して、双方向通信可能に接続されている。ホスト20は、例えば、サーバコンピュータ、メインフレームコンピュータ、ワークステーション等のようなコンピュータ装置として構成される。ホスト20がメインフレームコンピュータの場合、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等の通信プロトコルに従ってデータ転送が行われる。
メインストレージ装置10は、ストレージシステム内の記憶資源を一元的に管理する役割を果たす。後述のように、メインストレージ装置10は、ストレージシステム内に散在する物理的な記憶資源を仮想化して、ホスト20に提供する機能を備える。即ち、メインストレージ装置10は、外部ストレージ装置30内の記憶資源を、それがあたかもメインストレージ装置10内の記憶資源であるかのように、ホスト20に見せかける。このように、メインストレージ装置10は、ストレージシステム内に散在する記憶資源を仮想化するための仮想化装置としての側面を備える。この側面に注目するならば、メインストレージ装置10は、必ずしもディスクアレイ装置として構成される必要はなく、例えば、ファイバチャネルスイッチ等の別の装置から構成することもできる。
メインストレージ装置10の構成を説明する。メインストレージ装置10は、コントローラ100と、記憶部200とに大別することができる。コントローラ100及び記憶部200の構成は、それぞれ後述する。先に簡単に説明すると、コントローラ100は、メインストレージ装置10の動作を制御するものである。記憶部200は、複数の(通常は多数の)ディスクドライブ210を収容するものである。コントローラ100と記憶部200とは、同一の筐体内に設けることもできるし、それぞれ別々の筐体内に設けることもできる。また、一つまたは複数の筐体内にコントローラ100を設け、他の一つまたは複数の筐体内にそれぞれ複数のディスクドライブ210を設け、これら各筐体間をファイバチャネルプロトコルに従う通信経路で接続する構成としてもよい。
コントローラ100の構成を説明する。コントローラ100は、例えば、少なくとも一つ以上のチャネルアダプタ(以下、CHA)110と、少なくとも一つ以上のディスクアダプタ(以下、DKA)120と、少なくとも一つ以上のキャッシュメモリ130と、少なくとも一つ以上の共有メモリ140と、接続部(図中「SW」)150と、サービスプロセッサ(以下、SVP)160とを備えて構成される。
CHA110は、ホスト20との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各CHA110は、少なくとも一つ以上の通信ポート111を備えている。通信ポート111には、例えば、WWN(World Wide Name)のような識別情報が設定される。ホスト20とメインストレージ装置10とが、iSCSI(internet Small Computer System Interface)等を用いてデータ通信を行う場合、通信ポート111には、IP(Internet Protocol)アドレス等の識別情報が設定される。
図2中には、2種類のCHA110が示されている。図2中左側に位置する一方のCHA110は、ホスト20からのコマンドを受信して処理するためのものであり、その通信ポート111(T)は、ターゲットポートとなっている。図2中右側に位置する他方のCHA110は、外部ストレージ装置30にコマンドを発行するためのものであり、その通信ポート111(I)は、イニシエータポートとなっている。
DKA120は、各ディスクドライブ210との間のデータ通信を制御するためのもので、CHA110と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
各DKA120と各ディスクドライブ210とは、例えば、ファイバチャネルプロトコルに従う通信経路CN4を介して接続されている。各DKA120と各ディスクドライブ210とは、ブロック単位のデータ転送を行う。コントローラ100が各ディスクドライブ210にアクセスするための経路は、冗長化されている。いずれか一方のDKA120や通信経路CN4に障害が発生した場合でも、コントローラ100は、他方のDKA120や通信経路CN4を用いて、ディスクドライブ210にアクセス可能である。同様に、ホスト20とコントローラ100との間の経路、外部ストレージ装置30とコントローラ100との間の経路も冗長化することができる。なお、各DKA120は、ディスクドライブ210の状態を随時監視している。SVP160は、DKA120による監視結果を、内部ネットワークCN5を介して取得する。
各CHA110及び各DKA120は、例えば、プロセッサやメモリ等が実装されたプリント基板と、メモリに格納された制御プログラムとをそれぞれ備えており、これらのハードウェアとソフトウェアとの協働作業によって、それぞれ所定の機能を実現するようになっている。CHA110及びDKA120は、キャッシュメモリ130や共有メモリ140等と共に、コントローラ100を構成する。
CHA110及びDKA120の動作を簡単に説明する。詳細な動作は別の図面を参照しながら後述する。CHA110は、ホスト20から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ140に記憶させる。DKA120は、共有メモリ140を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ210からデータを読み出して、キャッシュメモリ130に記憶させる。CHA110は、キャッシュメモリ130に移されたデータを読み出し、ホスト20に送信する。
一方、CHA110は、ホスト20から発行されたライトコマンドを受信すると、このライトコマンドを共有メモリ140に記憶させる。また、CHA110は、受信したライトデータをキャッシュメモリ130に記憶させる。CHA110は、キャッシュメモリ130にライトデータを記憶させた後、ホスト20に書込み完了を報告する。DKA120は、共有メモリ140に記憶されたライトコマンドに従って、キャッシュメモリ130に記憶されたデータを読出し、所定のディスクドライブ210に記憶させる。
キャッシュメモリ130は、例えば、ホスト20から受信したデータ等を記憶するものである。キャッシュメモリ130は、例えば不揮発メモリから構成される。共有メモリ140は、例えば不揮発メモリから構成される。共有メモリ140には、例えば、構成情報T1のような、制御情報や管理情報等が記憶される。構成情報T1の構造は、別の図面と共に後述する。
共有メモリ140及びキャッシュメモリ130は、同一のメモリ基板上に混在して設けることができる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
接続部150は、各CHA110と、各DKA120と、キャッシュメモリ130及び共有メモリ140をそれぞれ接続させる。これにより、全てのCHA110,DKA120は、キャッシュメモリ130及び共有メモリ140にそれぞれアクセス可能である。接続部150は、例えばクロスバスイッチ等として構成することができる。
SVP160は、LAN等の内部ネットワークCN5を介して、各CHA110及び各DKA120とそれぞれ接続されている。また、SVP160は、LAN等の通信ネットワークCN3を介して、管理端末60に接続可能である。SVP160は、メインストレージ装置10内部の各種状態を収集し、管理端末60に提供する。なお、SVP160は、CHA110またはDKA120のいずれか一方にのみ接続されてもよい。SVP160は、共有メモリ140を介して、各種のステータス情報を収集可能だからである。
コントローラ100の構成は、上述した構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト20との間のデータ通信を行う機能と、外部ストレージ装置30との間のデータ通信を行う機能と、ディスクドライブ210との間のデータ通信を行う機能と、データを一時的に保存する機能と、構成情報T1等を書換可能に保存する機能とを、それぞれ設ける構成でもよい。
記憶部200の構成について説明する。記憶部200は、複数のディスクドライブ210を備えている。各ディスクドライブ210は、例えば、ハードディスクドライブ、フラッシュメモリデバイス、光ディスクドライブ、光磁気ディスクドライブ、ホログラフィックメモリデバイス等として実現される。要するに、記憶部200は、書換可能な不揮発性の記憶装置を備えている。
RAID構成等によっても相違するが、例えば、3個1組や4個1組等の所定数のディスクドライブ210によって、パリティグループ220が構成される。パリティグループ220は、パリティグループ220内の各ディスクドライブ210がそれぞれ有する物理的記憶領域を仮想化したものである。従って、パリティグループ220は、仮想化された物理的記憶デバイスである。パリティグループ220の有する物理的記憶領域には、所定サイズまたは可変サイズの論理ボリューム(LU:Logigal Unit)230を設定できる。論理ボリューム230は、論理的記憶デバイスである。論理ボリューム230は、LUN(Logical Unit Number )に対応付けられて、ホスト20に提供される。
外部ストレージ装置30は、メインストレージ装置10と同様に、例えば、コントローラ300と記憶部400とを備えている。記憶部400の有する一つまたは複数のディスクドライブ410を用いて、論理ボリューム430が設けられる。外部ストレージ装置30は、メインストレージ装置10から見た場合にメインストレージ装置10の外部に存在するため、外部ストレージ装置と呼ぶ。また、外部ストレージ装置30の有するディスクドライブ410を外部ディスクと、外部ストレージ装置30の有する論理ボリューム430を外部ボリュームと、それぞれ呼ぶ場合がある。
図3は、メインストレージ装置10が記憶資源を仮想化する様子を模式的に示す説明図である。上述の通り、メインストレージ装置10のディスクドライブ210がそれぞれ備える物理的な記憶領域は、中間記憶階層220(即ち、パリティグループ)によって仮想化される。中間記憶階層220には、一つまたは複数の論理ボリューム230を、固定サイズまたは可変サイズで、設けることができる。
図3中の左側に示す論理ボリューム230は、メインストレージ装置10内のディスクドライブ210に基づいて生成されているため、内部の実ボリュームである。そこで、この論理ボリューム230を、以下の説明では、単に内部ボリュームと呼ぶ場合がある。内部ボリューム230は、一方のターゲットポート111Tを介して、ホスト20に提供される。
図3中の右側に示す論理ボリューム230Vは、メインストレージ装置10内に仮想的に設けられる論理ボリュームである。この仮想的な論理ボリューム230Vは、仮想的な中間記憶階層220Vを介して、外部ストレージ装置30内の論理ボリューム430に接続されている。即ち、仮想的な中間記憶階層220Vは、仮想的な物理的記憶デバイスであり、その実体は、外部ストレージ装置30内に存在する。
仮想的な論理ボリューム230Vは、他方のターゲットポート111Tを介して、ホスト20に提供される。仮想的な論理ボリューム230Vをアクセス対象とするコマンドがホスト20から発行されると、コントローラ100は、構成情報T1を参照することにより、仮想的な論理ボリューム230Vに対応付けられている外部ボリューム430の所在を確認する。
コントローラ100は、ホスト20から受信したコマンドを、外部ストレージ装置30に送信するためのコマンドに変換する。変換されたコマンドは、イニシエータポート111Iから通信経路CN2を介して、外部ストレージ装置30のターゲットポート311Tに入力される。外部ストレージ装置30のコントローラ300は、メインストレージ装置10から受信したコマンドに従って、外部ボリューム430にデータを書き込んだり、または、外部ボリューム430からデータを読み出したりする。外部ボリューム430から読み出されたデータは、通信経路CN2、中間記憶階層220V、仮想的論理ボリューム230V、通信経路CN1を介して、ホスト20に送信される。
図4は、ストレージシステムのソフトウェア構成に着目した説明図である。ホスト20は、例えば、アプリケーションプログラム21やI/O制御プログラム22等を備えることができる。例えば、データベースプログラム等のようなアプリケーションプログラム21は、I/O制御プログラム22を介して、メインストレージ装置10を利用する。
I/O制御プログラム22は、アプリケーションプログラム21からの要求に基づいて、リードコマンドやライトコマンドを発行する。I/O制御プログラム22は、予め設定された基本I/OサイズBIOに従って、ライトコマンドを発行する。この基本I/OサイズBIOは、論理ブロックBLK1の個数として表現することができる。
メインストレージ装置10は、例えば、ターゲットコマンド処理110TPやイニシエータコマンド処理110IP等を備えている。ターゲットコマンド処理110TPは、ターゲットコマンドを受信するCHA110により実行される。イニシエータコマンド処理110IPは、イニシエータコマンドを発行するCHA110によって実行される。
ターゲットコマンド処理110TPは、ホスト20からライトコマンド及びライトデータを受信すると、第1の所定個数の論理ブロックBLK1に格納されたライトデータを、キャッシュメモリ130に記憶させる。
イニシエータコマンド処理110IPは、キャッシュメモリ130に記憶されたライトデータについて、各論理ブロックBLK1毎に、それぞれ保証コードGDを付加する。なお、保証コードGDの生成及び生成した保証コードGDの論理ブロックBLK1の付加は、ターゲットコマンド処理110TPで実行する構成でもよい。本実施例では、イニシエータコマンド処理110IPが、保証コードの生成等を実行するものとする。
イニシエータコマンド処理110IPは、各論理ブロックBLK1にそれぞれ保証コードGDを付加することにより、拡張論理ブロックBLK2を生成する。上述の通り、論理ブロックBLK1のバイト長は512バイトであり、保証コードGDのバイト長は8バイトであるから、拡張論理ブロックBLK2のバイト長は520バイトとなる。イニシエータコマンド処理110IPは、拡張論理ブロックBLK2の最後に所定サイズの不用部分UPを加えることにより、ライトデータを第2の所定個数の論理ブロックBLK1に格納して、外部ストレージ装置30に送信する。つまり、イニシエータコマンド処理110IPは、基本I/OサイズBIOを構成する論理ブロックBLK1の数に対応する個数の論理ブロックBLK1を用いて、ライトデータを構成する。基本ディスクアクセスサイズBDは、基本I/OサイズBIOを構成する論理ブロックBLK1の数よりも1つ多い数の論理ブロックBLK1から構成される。
外部ストレージ装置30は、例えば、ターゲットコマンド処理310TP及びディスク処理320Pを備えている。ターゲットコマンド処理310TPは、メインストレージ装置10から発行されたコマンドを受信して処理するものである。ディスク処理320Pは、メインストレージ装置10から発行されたコマンドに基づいて、ディスクドライブ410にアクセスし、ディスクドライブ410にデータを読み書きするものである。ディスク処理320Pは、キャッシュメモリ330に記憶されたライトデータを、ディスクドライブ410に書き込む。
キャッシュメモリ330に記憶されるライトデータには、不用部分UPが含まれる場合がある。ディスク処理320Pは、不用部分UPを含むライトデータを、ディスクドライブ410に書き込む。従って、図4中の下側に示すように、ディスクドライブ410の記憶領域には不用部分UPが存在し、この不用部分UPの分だけディスクドライブ410の使用効率は低下する。しかし、ディスクドライブ410の使用効率低下というデメリットと引き替えに、保証コード付き論理ブロック(拡張論理ブロックBLK2)を論理ブロックBLK1の集合体として、そのままディスクドライブ410に書き込むことができる。つまり、本実施例では、ディスクドライブ410の使用効率の低下と引き替えに、保証コードを含むライトデータを書き込む場合のペナルティを低減している。
図5は、構成情報T1を示す説明図である。構成情報T1は、論理ボリュームの構成に関する情報を管理するものであり、例えば、共有メモリ140に記憶される。構成情報T1は、例えば、論理ボリューム識別番号(図中「LU#」)I1と、基本ディスクアクセスサイズの値I2と、パス情報I3と、その他の情報I4とを含んで構成される。
論理ボリューム識別番号I1は、各論理ボリューム230,230Vをそれぞれ識別するための情報である。基本ディスクアクセスサイズの値I2は、各論理ボリューム230,230Vに対応付けられる基本ディスクアクセスサイズBDの値を管理する。なお、基本ディスクアクセスサイズBDの値に代えて、基本I/OサイズBIOの値を管理する構成としてもよい。あるいは、基本ディスクアクセスサイズBDの値及び基本I/OサイズBIOの値をそれぞれ管理する構成でもよい。パス情報I3は、各論理ボリューム230,230Vに接続されているディスクドライブ210または外部ボリューム430へのアクセス経路を管理する。その他の情報I4には、例えば、各論理ボリューム230,230Vの記憶容量、各論理ボリューム230,230Vを構成するディスクドライブの種類、各論理ボリューム230,230Vにアクセス可能なホスト20及びアクセスレベルに関する情報等を含めることができる。
内部の実ボリューム230の場合、パス情報I3には、内部のディスクドライブ210に関する情報が記憶される。例えば、その内部ボリューム230を構成する各ディスクドライブ210の番号等が記憶される。仮想的な論理ボリューム230Vの場合、パス情報I3には、その仮想的な論理ボリューム230Vに対応付けられている外部ボリューム430にアクセスするための経路情報が記憶される。経路情報としては、例えば、外部ストレージ装置30を識別するための装置番号、外部ストレージ装置30のターゲットポート311Tを識別するためのポート番号、外部ストレージ装置30内の論理ボリューム430を識別するためのボリューム番号等を挙げることができる。
図6は、論理ブロックBLK1と拡張論理ブロックBLK2との関係を模式的に示す説明図である。既に述べた通り、本実施例のストレージシステムは、データ転送の単位として、論理ブロックBLK1を使用する。論理ブロックBLK1は、ディスクドライブ210,410内の物理ブロック(セクタ)と同一の512バイトの長さを有する。
図6(a)に示すように、基本I/OサイズBIOは、論理ブロックBLK1の個数として表現することができる。ホスト20は、論理ブロックBLK1のバイト長の整数倍の長さを有する基本I/OサイズBIO単位でライトデータを生成し、このライトデータをメインストレージ装置10に送信する。
図6(b)に示すように、メインストレージ装置10内では、各論理ブロックBLK1毎に、それぞれ保証コードGDを生成して付加する。保証コードGDの付加された論理ブロックBLK1は、520バイトの長さを有する拡張論理ブロックBLK2となる。拡張論理ブロックBLK2は、保証コードGDの分だけサイズが大きくなるため、このままでは、論理ブロックBLK1単位でデータを記憶するディスクドライブ210,410に書き込むことができない。そこで、本実施例では、最後の拡張論理ブロックBLK2の後に、不用部分UPを加えて、ライトデータのバイト長を論理ブロックBLK1の整数倍に一致させる。換言すれば、本実施例では、保証コードを含むライトデータが論理ブロックBLK1の整数倍となるように、ライトデータの後尾に不用部分UPを加える。なお、不用部分UPの挿入位置は、ライトデータの最後尾に限らない。不用部分UPのバイト長は、ホスト20から送信されるライトデータの長さ、つまり、基本I/OサイズBDの値によって変化する。
図7は、ライトデータに占める不用部分UPの割合変化を示す説明図である。図7(1)に示すように、基本I/OサイズBIOが1個の論理ブロックBLK1だけで構成される場合、メインストレージ装置10から外部ストレージ装置30に送信されるライトデータは、2個の論理ブロックBLK1から構成される。この場合、不用部分UPのバイト長は、504(=512×2−(512+8))バイトとなる。外部ストレージ装置30の受信するライトデータ中の不用部分UPの割合は、約49%(=504/1024)となる。
図7(2)に示すように、基本I/OサイズBIOが2個の論理ブロックBLK1から構成される場合、外部ストレージ装置30は、論理ブロック3個分の長さを有するライトデータをメインストレージ装置10から受信する。この場合、不用部分UPのバイト長は、496(=512×3−(512×2+8×2))となる。外部ストレージ装置30の受信するライトデータに含まれる不用部分UPの割合は、約32%となる。
図7(3)に示すように、基本I/OサイズBIOが3個の論理ブロックBLK1から構成される場合、外部ストレージ装置30は、論理ブロック4個分の長さを有するライトデータをメインストレージ装置10から受信する。この場合、不用部分UPのバイト長は、488(=512×4−(512×3+8×3))となる。外部ストレージ装置30の受信するライトデータに含まれる不用部分UPの割合は、約24%となる。
図7(4)に示すように、基本I/OサイズBIOが4個の論理ブロックBLK1から構成される場合、外部ストレージ装置30は、論理ブロック5個分の長さを有するライトデータをメインストレージ装置10から受信する。この場合、不用部分UPのバイト長は、480(512×5−(512×4+8×4))となる。外部ストレージ装置30の受信するライトデータ中の不用部分UPの割合は、約19%となる。
各論理ブロックBLK1毎に付加される保証コードGDの存在により、基本ディスクアクセスサイズBDは、基本I/OサイズBIOを構成する論理ブロックBLK1の数よりも1個だけ多い数の論理ブロックBLK1から構成される。各保証コードGDの合計バイト長と1つの論理ブロックBLK1のバイト長との差分が、不用部分UPのバイト長となる。各保証コードGDの合計バイト長が512バイトになった場合、不用部分UPは発生しなくなる。
図8は、メインストレージ装置10から外部ストレージ装置30に送信されるライトデータ中に、不用部分UPが生じない場合の説明図である。
基本I/OサイズBIOが64個の論理ブロックBLK1から構成される場合、64個の保証コードGDの合計は、512バイトとなる(64×8=512)。この場合、メインストレージ装置10から外部ストレージ装置30に送信されるライトデータは、64個分の論理ブロックBLK1に相当するデータ本体と、1個分の論理ブロックBLK1に相当する保証コードGDとから構成される。従って、基本ディスクアクセスサイズBDは、65個の論理ブロックBLK1から構成される。
つまり、基本I/OサイズBIOのバイト長及び基本ディスクアクセスサイズBDのバイト長を、論理ブロックBLK1のバイト長512と拡張論理ブロックBLK2のバイト長520との最小公倍数LCM(512,520)の値(33280)にそれぞれ設定すれば、不用部分UPは生じない。従って、基本I/OサイズBIOが64個分の論理ブロックBLK1として設定された場合、64個分の論理ブロックBLK1に相当するライトデータは、65個分の論理ブロックBLK1に相当する保証コード付きデータとして、外部ストレージ装置30内のディスクドライブ410に書き込まれる。
図9は、ストレージシステムの初期設定を行うためのフローチャートである。以下に述べる各フローチャートは、発明の理解及び実施に必要な範囲内で、処理の概要を示しており、実際のコンピュータプログラムとは異なる場合がある。当業者であれば、ステップをの順番を入れ替えたり、一部のステップを別のステップに置き換えたり、一部のステップを削除したりできる場合がある。
ユーザは、メインストレージ装置10と外部ストレージ装置30とを通信経路CN2を介して接続し、外部ストレージ装置30内の論理ボリューム430とメインストレージ装置10内の仮想的な論理ボリューム230Vとを対応付ける(S10)。この対応付け作業は、管理端末60からの操作で行うことができる。
ユーザは、メインストレージ装置10とホスト20とを通信経路CN1を介して接続し、ホスト20によりアクセスされる論理ボリューム230,230Vを設定する。即ち、ユーザは、管理端末60を用いることにより、ホスト20が論理ボリューム230,230Vにアクセスするための経路情報等を設定する。
メインストレージ装置10のコントローラ100は、S21で設定される基本I/OサイズBIOに応じて、基本ディスクアクセスサイズBDを設定する(S12)。
一方、ホスト20では、ホスト20がメインストレージ装置10にアクセスするための経路情報を設定し(S20)、さらに、アプリケーションプログラム21の仕様等を考慮して基本I/OサイズBIOを設定する(S21)。便宜上、メインストレージ装置10側の処理が先に行われるかのようにして説明したが、ホスト20の設定とメインストレージ装置10の設定とは、略平行して行うことができる。
このように、ストレージシステムの初期設定時において、ユーザは、ホスト20側の事情を考慮して、基本I/OサイズBIOを設定することができる。そして、この基本I/OサイズBIOに応じた値が、基本ディスクアクセスサイズBDに設定される。
図10は、ホスト20から発行されるリードコマンドをメインストレージ装置10が処理するための処理を示すフローチャートである。メインストレージ装置10は、CHA110を介して、ホスト20から発行されるリードコマンドを受信する(S30)。
メインストレージ装置10は、リードコマンドを解析し、要求されたデータが記憶されている論理ボリュームを特定する(S31)。メインストレージ装置10は、データを記憶するための領域をキャッシュメモリ130に確保する(S32)。
続いて、メインストレージ装置10は、S31で特定された論理ボリュームから、基本ディスクアクセスサイズBD単位でデータを読出し、読み出したデータをキャッシュメモリ130に記憶させる(S33)。
上述の通り、基本I/OサイズBIOの値によっては、不用部分UPが発生する。即ち、本実施例では、ディスクドライブ410(またはディスクドライブ210)のフォーマットは、論理ブロック単位から、基本ディスクアクセスサイズBD単位に変更されて使用されることになる。メインストレージ装置10は、基本ディスクアクセスサイズBDを構成情報T1で管理しているため、ディスクドライブ410(またはディスクドライブ210)から正常にデータを読み出すことができる。つまり、メインストレージ装置10は、どの部分がデータ本体であり、どの部分が保証コードGDであり、どの部分が不用部分UPであるかを見分けることができる。
さて、S33でキャッシュメモリ130上に読み出されたデータは、保証コードGDを備えている。そこで、メインストレージ装置10は、保証コードGDの内容を検査し、S33で読み出したデータが正常なデータであるか否かを確認する(S34)。メインストレージ装置10は、S34で検査されたデータを、CHA110からホスト20に送信させる(S35)。メインストレージ装置10からホスト20に送信されるデータからは、保証コードGDは取り除かれている。
なお、ホスト20のアクセス先が仮想的な論理ボリューム230Vの場合、メインストレージ装置10は、外部ストレージ装置30内の論理ボリューム430からデータを読み出すためのリードコマンドを生成し、このリードコマンドを外部ストレージ装置30に送信する。外部ストレージ装置30は、メインストレージ装置10から受信したリードコマンドに応じて論理ボリューム430からデータを読出し、読み出したデータをメインストレージ装置10に送信する。
図11は、ホスト20から発行されるライトコマンドを処理するためのフローチャートである。このライト処理では、外部ストレージ装置30内の論理ボリューム(外部ボリューム)430に、ライトデータを書き込む場合を例に挙げて説明する。
メインストレージ装置10は、ホスト20から発行されるライトコマンドを受信すると(S40)、そのライトコマンドを解析して、書込み対象の外部ボリューム430を特定する(S41)。外部ボリューム430が特定されることにより、その外部ボリューム430に記憶領域を提供しているディスクドライブ(外部ディスク)410も特定されることになる。フローチャート中では、外部ボリューム430と外部ディスク410とを特に区別することなく記載する場合がある。
メインストレージ装置10は、ライトデータを記憶するための領域をキャッシュメモリ130に確保する(S42)。メインストレージ装置10は、ホスト20から基本I/OサイズBIO単位でライトデータを受信し、この受信したライトデータをキャッシュメモリ130に記憶させる(S43)。
メインストレージ装置10は、ライトデータをキャッシュメモリ130に記憶させた時点で、ホスト20に書込み完了を報告可能である(S44)。あるいは、メインストレージ装置10は、外部ストレージ装置30から書込み完了報告を受信した後で、ホスト20に書込み完了を報告することもできる。いずれの方法を採用してもよい。
メインストレージ装置10は、ホスト20から受信したライトデータについて、各論理ブロックBLK1毎にそれぞれ保証コードGDを生成し、生成された各保証コードGDを各論理ブロックBLK1に付加する(S45)。この保証コードGDの生成及び論理ブロックBLK1への保証コードGDの付加は、CHA110内のソフトウェアまたはハードウェアで行うことができる。あるいは、保証コードの生成及び付加を実行するための専用のハードウェア回路を設ける構成でもよい。
メインストレージ装置10は、保証コードGDの付加されたライトデータ、即ち、拡張論理ブロックBLK2単位のライトデータを、論理ブロックBLK1単位のデータに変換し、外部ストレージ装置30に送信する(S46)。即ち、上述のように、メインストレージ装置10は、保証コードGDの付加されたライトデータを、論理ブロックBLK1の整数倍のサイズを有する基本ディスクアクセスサイズBD単位のデータに変換する。
外部ストレージ装置30は、メインストレージ装置10から受信したライトデータを、キャッシュメモリ330に記憶させる(S50)。外部ストレージ装置30は、キャッシュメモリ330に記憶されたライトデータを、外部ボリューム430を構成するディスクドライブ410に書き込む(S51)。外部ストレージ装置30は、ライトデータをディスクドライブ410に書き込んだ後、メインストレージ装置10に書込み完了を報告する(S52)。これにより、メインストレージ装置10は、外部ストレージ装置30による処理が完了したことを確認する(S47)。
図12は、各論理ボリューム230V毎に、それぞれ異なる基本I/OサイズBIOを設定する様子を示す説明図である。図12に示すように、構成情報T1には、各論理ボリューム230V毎にそれぞれ異なる基本ディスクアクセスサイズBDが予め設定することができる。
例えば、論理ボリューム230V(#00)を利用するホスト20は、2個分の論理ブロックBLK1を基本I/OサイズBIOとしてアクセスする。メインストレージ装置10は、論理ボリューム230V(#00)に対応付けられている外部ボリューム430(#10)に対し、3個分の論理ブロックBLK1を基本ディスクアクセスサイズBDとしてアクセスする。
同様に、論理ボリューム230V(#01)を利用するホスト20は、3個分の論理ブロックBLK1を基本I/OサイズBIOとしてアクセスする。メインストレージ装置10は、論理ボリューム230V(#01)に対応付けられている外部ボリューム430(#11)に対し、4個分の論理ブロックBLK1を基本ディスクアクセスサイズBDとしてアクセスする。
同様に、論理ボリューム230V(#02)を利用するホスト20は、4個分の論理ブロックBLK1を基本I/OサイズBIOとしてアクセスする。メインストレージ装置10は、論理ボリューム230V(#00)に対応付けられている外部ボリューム430(#10)に対し、3個分の論理ブロックBLK1を基本ディスクアクセスサイズBDとしてアクセスする。
本実施例は上述のように構成されるため、以下の効果を奏する。このように本実施例では、データを記憶する単位が論理ブロック単位に固定されたディスクドライブ410(またはディスクドライブ210)に対して、データの読出しを行うことなく、保証コードGDの付加されたデータを記憶させることができる。従って、メインストレージ装置10の応答性能の低下を抑制することができ、使い勝手が向上する。
本実施例では、所定の範囲内で、基本I/OサイズBIOの値をホスト20にとって好ましい値に設定することができる。従って、ホスト20は好ましいサイズでライトデータを送信することができ、使い勝手が向上する。
本実施例では、基本I/OサイズBIOの値及び基本ディスクアクセスサイズBDの値が、論理ブロックBLK1のバイト長(512バイト)と拡張論理ブロックBLK2のバイト長(520バイト)との最小公倍数に設定された場合、ディスクドライブ410(またはディスクドライブ210)を無駄なく利用することができ、ディスクドライブの記憶領域を効率的に使用することができる。
図13,図14に基づいて、本発明の第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。本実施例では、既に使用されていた外部ストレージ装置30をメインストレージ装置10に接続する場合を例に挙げて説明する。
前記第1実施例で述べたように、メインストレージ装置10は、外部ストレージ装置30の有する外部ボリューム430を、それがあたかもメインストレージ装置10内の論理ボリューム230Vであるかのように見せかけるという、仮想化機能を備える。従って、例えば、ユーザは、新型のメインストレージ装置10を購入することにより、旧型の外部ストレージ装置30をメインストレージ装置10で仮想化して使用できる。これにより、メインストレージ装置10の備える大容量のキャッシュメモリ130や高速なマイクロプロセッサを利用して、外部ボリュームへのデータ入出力処理を行うことができ、ストレージシステムの性能が改善される。
このように、メインストレージ装置10の仮想化機能によって、既存の外部ストレージ装置30を有効に利用するこができる。しかし、この場合、外部ボリューム430には、所定のフォーマットに従ってデータが記憶されていることが多い。例えば、以前、メインストレージ装置10によって仮想化されていた外部ストレージ装置30を、新たに購入さした別のメインストレージ装置10によって再び仮想化するような場合、外部ボリューム430を構成する各ディスクドライブ410は、以前に設定された基本ディスクアクセスサイズBDに従ってデータを記憶している。
そこで、本実施例では、外部ボリューム430を構成するディスクドライブ410に既に設定されている基本ディスクアクセスサイズBDの値に基づいて、ストレージシステムを構築する場合を説明する。
図13は、本実施例による、基本ディスクアクセスサイズBDの設定処理を示すフローチャートである。ユーザは、メインストレージ装置10と既存の外部ストレージ装置30とを接続する(S60)。
メインストレージ装置10は、外部ストレージ装置30にアクセスし、外部ディスク(即ち、外部ストレージ装置30の有するディスクドライブ410である)に管理情報T2が記憶されているか否かを判定する(S61)。ディスクドライブ内の管理情報T2と構成情報T1との関係は、図14と共に後述する。
外部ディスク410が管理情報T2を備えている場合(S61:YES)、メインストレージ装置10は、その管理情報T2に基本ディスクアクセスサイズBDの値が設定されているか否かを判定する(S62)。
外部ディスク410の備える管理情報T2内に基本ディスクアクセスサイズBDの値が設定されている場合(S62:YES)、メインストレージ装置10は、その基本ディスクアクセスサイズBDの値を、構成情報T1に登録する(S73)。メインストレージ装置10は、外部ディスク410に基本ディスクアクセスサイズBDが既に設定されている場合、そのBDの値を引き続き使用する。
S64〜S72を説明する前に図14を参照して、ディスクドライブ内の管理情報T2と構成情報T1との関係を説明する。ディスクドライブ410を例に挙げて説明するが、メインストレージ装置10内のディスクドライブ210についても、同様である。
ディスクドライブ410の記憶領域は、管理領域とデータ領域とに大別できる。管理領域には、ディスクドライブ410に関する管理情報T2が記憶され、データ領域には、ライトデータが記憶される。管理情報T2には、基本ディスクアクセスサイズBDの値を記憶させることができる。
従って、図13中のS62では、ディスクドライブ410内の管理情報T2にアクセスすることにより、そのディスクドライブ410に基本ディスクアクセスサイズBDの値が設定されているか否かを調べることができる。メインストレージ装置10は、管理情報T2に設定されている基本ディスクアクセスサイズBDの値を読み出して、この値を構成情報T1に登録する。
これにより、メインストレージ装置10がそのディスクドライブ410にアクセスする場合、即ち、そのディスクドライブ410を利用して生成されている論理ボリューム430にメインストレージ装置10がアクセスする場合、そのディスクドライブ410に既に設定されている基本ディスクアクセスサイズBDに従って、データの読出しまたは書込みが行われる。このように、ディスクドライブ410に既に設定されている基本ディスクアクセスサイズBDの値に従ってアクセスすることにより、メインストレージ装置10は、正常にデータを読み出したり、正常にデータを書き込むことができる。
図13に戻る。ディスクドライブ410が管理情報T2を備えていない場合(S61:NO)、または、ディスクドライブ410の備える管理情報T2に基本ディスクアクセスサイズBDの値が設定されていない場合(S62:NO)、そのディスクドライブ410に設定されてるべき基本ディスクアクセスサイズBDの値が検査される(S64〜S70)。メインストレージ装置10は、ディスクドライブ410内に保証コードGD付きのデータが記憶されているものと推定して、BD値を検査する。
メインストレージ装置10は、基本ディスクアクセスサイズBDの初期値として「1」を設定し(S64)、S64で設定されたBDの値が所定の最大値BDmaxに達したか否かを判定する(S65)。
S64で設定されたBDの値が最大値BDmaxに達していない場合(S65:NO)、メインストレージ装置10は、S64で設定されたBDの値で、ディスクドライブ410からデータを一回または連続した複数回読出す(S66)。そして、メインストレージ装置10は、S66で正常にデータを読み出すことができたか否かを判定する(S67)。
例えば、ディスクドライブ410が3個の論理ブロックBLK1を単位としてデータを記憶している場合(BD=3)を考える。この場合、もしも、メインストレージ装置10がそのディスクドライブ410から、3個未満の論理ブロック単位または4個以上の論理ブロック単位でデータを読み出すと、メインストレージ装置10は、正常にデータを解釈することができない。
メインストレージ装置10が予測するフォーマット(BD値)とディスクドライブ410のフォーマット(BD値)とが異なり、メインストレージ装置10は、どれがデータ本体で、どれが保証コードで、どれが不用部分UPなのか、判断できないためである。これに対し、もしも、メインストレージ装置10の予測するフォーマット(BD値)が、ディスクドライブ410のBD値と一致する場合、メインストレージ装置10は、読み出したデータを正常に判別することができる。
そこで、メインストレージ装置10は、BDの値がBDmaxに達するまで(S65)、BDの値を1つずつ増加させながら(S68)、ディスクドライブ410から繰り返しデータを読出し(S66)、正常にデータを判別できるか否かを検査する(S66)。
なお、ディスクドライブ410のBD値よりも小さいBD値で、ディスクドライブ410からデータを一回だけ読み出す場合、メインストレージ装置10は、データ本体及び保証コードGDを正常に判別できる可能性がある。そこで、S66では、S61またはS68で設定されたBD値で、ディスクドライブ410内の連続する記憶領域からデータを繰り返し読み出すのが好ましい。
予測したBD値がディスクドライブ410のBD値と一致する場合、データを正常に判別することができるため(S67:YES)、メインストレージ装置10は、その予測したBD値を、そのディスクドライブ410のBD値として選択する(S69)。
これに対し、1つずつ増加させながら予測するBD値がBDmaxに到達した場合(S65:YES)、メインストレージ装置10は、BD値を「0」に設定する(S70)。ここで、BD値=0とは、そのディスクドライブ410には、保証コードGD付きでデータが記憶されていないことを意味する。つまり、BD値が0であるディスクドライブ410は、保証コードGDの付加されていないデータを512バイト単位で記憶していることになる。
上述の通り、メインストレージ装置10は、拡張論理ブロックBLK2単位のデータが論理ブロックBLK1単位のデータとしてディスクドライブ410に記憶されることを前提に、BD値を検査している。もしも、ディスクドライブ410が保証コードGD付きのデータを記憶している場合は、いずれディスクドライブ410に設定されている正しいBD値を検出することができる。
しかし、ディスクドライブ410が保証コードGD付きのデータを記憶していない場合、つまり、保証コードGDが付加されていない通常のデータを通常のサイズ(512バイト)で、ディスクドライブ410が記憶している場合には、上記の検査(S64〜S69)でBD値を検出することができない。この場合、そもそもディスクドライブ410にBD値は設定されていないためである。そこで、S70では、そのディスクドライブ410のBD値を「0」として選択する。
このようにして、ディスクドライブ410がどのような単位でデータを記憶しているのかが検出される。メインストレージ装置10は、そのディスクドライブ410が管理情報T2を備えている場合(S71:YES)、S69で選択されたBD値を管理情報T2に書き込む(S72)。これにより、S72で管理情報T2にBD値の書き込まれたディスクドライブ410を、将来、別の新たなメインストレージ装置10が再利用するような場合、この別の新たなメインストレージ装置10は、そのディスクドライブ410に適用すべきBDの値を速やかに得ることができる(S61:YES,S62:YES,S73)。
このように構成される本実施例も、前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、既に使用されたことのあるディスクドライブ410をメインストレージ装置10内に仮想的に取り込む場合に、メインストレージ装置10は、そのディスクドライブ410に適したBD値を検出し、この検出されたBD値を用いてそのディスクドライブ410にアクセスすることができる。従って、ユーザの使い勝手が向上する。
第1実施例で述べたように、ホスト20の事情に応じて基本I/OサイズBIOが決定され、BIOに応じて基本ディスクアクセスサイズBDが選択される。従って、ホスト20の事情に変更が無い限り、そのディスクドライブ410に関するBD値も変化しない。つまり、あるアプリケーションプログラム21によって使用されるデータを記憶したディスクドライブ410には、仮想化装置としてのメインストレージ装置10が交代した場合でも、同一のBD値でアクセス可能である。
図15,図16に基づいて第3実施例を説明する。本実施例では、複数のモードでライトデータを外部ストレージ装置30内のディスクドライブ410に記憶させる場合を説明する。
図15は、ストレージシステムの全体構成を示す模式図である。本実施例のストレージシステムは、複数の外部ストレージ装置30(1),30(2)を備えている。メインストレージ装置10は、ホスト20から受信したライトデータに保証コードGDを付加し、予め設定されたモードに基づいて、外部ストレージ装置30(1),30(2)のいずれかに送信する。
第1外部ストレージ装置30(1)は、前記第1実施例で述べた通り、メインストレージ装置10から受信した、BD分の論理ブロックBLK1からなるライトデータを、論理ボリューム430内に(即ち、論理ボリューム430に記憶領域を提供するディスクドライブ410内に)記憶させる。従って、不用部分UPの分だけディスクドライブ410の使用効率は低下する。しかし、データ書込み時の応答性能は改善される。
第2外部ストレージ装置30(2)では、各論理ボリューム430(1)〜430(3)にそれぞれ異なるモードが適用されている。以下、各モードを順番に説明する。
第1モードは、第2外部ストレージ装置30(2)内で、メインストレージ装置10から受信した保証コードGD付きのライトデータに、別の保証コードGD2を付加する。第2外部ストレージ装置30(2)は、メインストレージ装置10から受信したライトデータに対して、各論理ブロックBLK1毎にそれぞれ保証コードGD2を付加し、ディスクドライブ410内に記憶させる。データ本体及び不用部分UPのそれぞれについて、保証コードGD2が付加される。従って、外部ストレージ装置30(2)は、保証コードGD2によってデータの信頼性を確認することができ、メインストレージ装置10は、保証コードGDによってデータの信頼性を確認することができる。このように、第1モードでは、保証コードの仕組みを冗長化するため、信頼性をより改善することができる。
第2モードは、メインストレージ装置10から受信した拡張論理ブロックBLK2を、第2論理ボリューム430(2)にそのまま記憶させる。第2論理ボリューム430(2)に記憶領域を提供するディスクドライブ410は、そのセクタ長が520バイトに設定されている。従って、メインストレージ装置10は、保証コードGDの付加されたライトデータを、論理ブロックBLK1単位のフォーマットに変換することなく、拡張論理ブロックBLK2単位で、第2論理ボリューム430(2)に送信する。第2モードでは、不用部分UPは発生しない。
第3モードは、前記第1実施例及び前記第1外部ストレージ装置30(1)で述べたように、メインストレージ装置10から受信した保証コード付きライトデータを、論理ブロックBLK1単位で、第3論理ボリューム430(3)に記憶させる。
ここで、メインストレージ装置10に着目する。メインストレージ装置10は、複数の論理ボリューム230(1),230(2)を備えている。一方の論理ボリューム230(1)は、520バイト単位で(拡張論理ブロックBLK2単位で)データを記憶可能なディスクドライブ210に基づいて、構成されている。他方の論理ボリューム230(2)は、前記第1実施例で述べたと同様に、512バイト単位で(論理ブロックBLK1単位で)データを記憶可能なディスクドライブ210に基づいて、生成されている。
従って、一方の論理ボリューム230(1)を構成するディスクドライブ210には、前記第2モードと同様に、拡張論理ブロックBLK2単位でデータが記憶される。他方の論理ボリューム230(2)を構成するディスクドライブ210には、前記第3モードと同様に、保証コード付きライトデータが論理ブロックBLK1単位のデータに変換されて記憶される。
図16は、第1モードが適用される場合の処理を示すフローチャートである。図16は、図11のフローチャートに含まれているS40〜S50,S52を全て備える。図16のフローチャートは、新規なステップS51,S53を備える。
S53では、メインストレージ装置10から受信したライトデータについて、各論理ブロックBLK1毎に保証コードGD2をそれぞれ付加する。続いて、外部ストレージ装置30(2)は、保証コードGD及び保証コードGD2がそれぞれ付加されたライトデータを、ディスクドライブ410に書き込む(S51A)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、同一の外部ストレージ装置30(2)内で、それぞれ異なる複数のモードでライトデータを記憶させることができる。従って、例えば、ディスクドライブ410の性質(固定セクタか可変セクタか、セクタ長は512バイトか520バイトか)とホスト20の都合とを総合的に考慮して、適切なモードを選択することも可能であり、使い勝手が向上する。
図17,図18に基づいて第4実施例を説明する。本実施例では、ホスト20が、メインストレージ装置10を介さずに、外部ストレージ装置30内の論理ボリューム430にアクセスするための方法を提供する。
論理ボリューム430には、前記第1実施例で述べたように、保証コード付きのライトデータが論理ブロックBLK1単位のデータとして記憶される。即ち、論理ボリューム430の複数のセクタを用いて、拡張論理ブロックBLK2及び不用部分UPが記憶される。
ストレージシステムは、複数のホスト20(1),20(2)を備える。一方のホスト20(1)は、前記第1実施例で述べたと同様に、予め設定された基本I/OサイズBIOに基づいて、仮想的な論理ボリューム230Vにアクセスする。仮想的論理ボリューム230Vは、外部ストレージ装置30内の論理ボリューム430に対応付けられている。ホスト20(1)から送信されたライトデータは、メインストレージ装置10内で保証コードGDが付加されて、論理ボリューム430を構成するディスクドライブ410に書き込まれる。
他方のホスト20(2)は、他の第1通信経路CN1を介して、外部ストレージ装置30のターゲットポート311Tに接続されている。他方のホスト20(2)は、アドレス変換部301を介して、論理ボリューム430にアクセスする。
図18は、「データ配置変換部」としてのアドレス変換部301の構成を模式的に示す説明図である。上述のように、実ボリュームである論理ボリューム430には、データ本体のほかに保証コードGDや不用部分UPも記憶されている。メインストレージ装置10は、論理ボリューム430の記憶領域のうち、データ本体がどこに記憶されており、不用部分UPや保証コードGDがどこに記憶されているのかを、把握している。従って、ホスト20(1)は、メインストレージ装置10を介して、論理ボリューム430内のデータを利用できる。
これに対し、外部ストレージ装置30に直接接続されるホスト20(2)は、論理ボリューム430の記憶領域がどのように使用されているのか把握することができない。そこで、アドレス変換部301は、論理ボリューム430に記憶されているデータを再配置して、仮想的な論理ボリューム430Vを生成する。アドレス変換部301は、論理ブロックBLK1単位で整然とデータが記憶されている仮想的論理ボリューム430Vを、ホスト20(2)に提供する。
アドレス変換部301は、例えば、仮想的な論理ボリューム430V内の論理アドレス(仮想LBA)と論理ボリューム430内の論理アドレス(実LBA)とを対応付けることにより構成される。図18では、説明の便宜上、基本ディスクアクセスサイズBDの値を2個分の論理ブロックBLK1として設定した場合を示している。この場合は、仮想LBAと実LBAとは一対一で対応付けることができる。もしも、例えば、基本ディスクアクセスサイズBDの値を3個分の論理ブロックBLK1として設定したような場合、512バイトのデータ本体は、複数のセクタに跨って記憶される。従って、より好ましくは、アドレス変換部301は、例えば、仮想LBAと実LBA及びデータ長とを対応付けることにより、構成される。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、外部ストレージ装置30内にアドレス変換部301を設け、アドレス変換部301によって仮想的な論理ボリューム430Vを生成する。従って、本実施例では、ホスト20(2)は、メインストレージ装置10を用いずに、論理ボリューム430に記憶されたデータにアクセスすることができ、使い勝手が向上する。
図19に基づいて第5実施例を説明する。本実施例は、第2実施例で起こりうる不具合を改善する。第2実施例では、既に使用されたことのあるディスクドライブ410をメインストレージ装置10に接続する場合、その既存のディスクドライブ410に設定されているBD値を構成情報T1に登録する。そして、そのディスクドライブ410に記憶されているデータを利用するホスト20の事情に変更が無い場合、そのディスクドライブ410に設定されているBD値を用いても不都合が生じないと説明した。
しかし、もしも、例えば、アプリケーションプログラム21の構成が更新されて、ライトデータの発行サイズが変更された場合には、ホスト20にとって好ましい基本I/OサイズBIOとディスクドライブ410に設定済のBD値とが対応しない可能性がある。
そこで、図19に示す初期設定処理では、既存のディスクドライブ410のデータを全て読出し、基本I/OサイズBIOに応じて選択される新たな基本ディスクアクセスサイズBDの値に従って、既存のディスクドライブ410のフォーマットを変更する。
ストレージシステムの構築時に、メインストレージ装置10と外部ストレージ装置30とが接続され(S80)、かつ、メインストレージ装置10とホスト20とが接続される(S81)。
メインストレージ装置10は、外部ストレージ装置30にアクセスして、ディスクドライブ410の管理情報T2に記憶されている基本ディスクアクセスサイズBDの値を取得する(S82)。続いて、メインストレージ装置10は、S21でホスト20に設定される基本I/OサイズBIOの値を取得する(S83)。メインストレージ装置10は、S82で取得した基本ディスクアクセスサイズBDとS83で取得した基本I/OサイズBIOとが対応するか否かを判定する(S84)。つまり、メインストレージ装置10は、基本I/OサイズBIOの値に対応する値が、基本ディスクアクセスサイズBDの値として設定されているか否かを判断する。第1実施例で述べた通り、BD値とBIO値とが適切に対応する場合、BD値の方がBIO値よりも論理ブロック1個分だけ大きい。
基本I/OサイズBIOと基本ディスクアクセスサイズBDとが対応しない場合(S84:NO)、メインストレージ装置10は、基本I/OサイズBIOに対応する基本ディスクアクセスサイズBDを選択する(S85)。メインストレージ装置10は、ディスクドライブ410に記憶されている全データを読み出して、この読み出したデータをS85で選択されたBD値に従って、ディスクドライブ410に書き戻す(S86)。これにより、ディスクドライブ410には、ホスト20にとって好ましいBIO値に対応したBD値で、データが記憶される。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、既存のディスクドライブ410に設定済のBD値とホスト20により選択されるBIO値とが対応しない場合に、BIO値に対応するBD値で既存のディスクドライブ410のフォーマットを変更することができる。従って、使い勝手が向上する。
図20に基づいて第6実施例を説明する。本実施例では、論理ボリューム430に記憶されたデータをバックアップする場合に、保証コードGDや不用部分UPを取り除く。
図20は、ストレージシステムの全体構成を模式的に示す説明図である。外部ストレージ装置30には、バックアップ用の通信経路CN6を介して、バックアップ装置50が接続されている。バックアップ装置50は、例えば、磁気テープやハードディスク等のような記録媒体を一つまたは複数備えている。バックアップ装置50は、論理ボリューム430に記憶されたデータを読み出して、記録媒体に記憶させる。
アドレス変換部301は、前記第4実施例で述べた通り、論理ボリューム430に記憶されているデータを論理ブロックBLK1単位で記憶されているかのように見せかけるための仮想的な論理ボリューム430Vを生成する。
バックアップ装置50は、アドレス変換部301により提供される仮想的な論理ボリューム430Vからデータを読出し、読み出したデータを記録媒体に記憶させる。従って、バックアップ装置50には、保証コードGDや不用部分UPが除去された状態で、論理ボリューム430内のデータ本体だけが記憶される。
なお、例えば、バックアップ装置50が520バイト単位で記憶可能な記録媒体を備える場合、論理ボリューム430からバックアップ装置50にデータ本体及び保証コードGDのみを転送し、不用部分UPは転送しないように構成してもよい。このような変形例は、当業者であれば、アドレス変換部301の構成を変更することによって容易に実現できることを理解するであろう。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、論理ボリューム430の記憶内容をバックアップする場合に、保証コードGD及び不用部分UPを除去して、データ本体のみをバックアップ装置50に記憶させることができる。従って、バックアップ装置50の記録媒体を有効に利用することができ、使い勝手が向上する。
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。当業者であれば、前記各実施例を適宜組み合わせることもできる。
本発明の実施形態の全体概念を示す説明図である。
本発明の実施例によるストレージシステムの全体構成を示すブロック図である。
メインストレージ装置による仮想化機能を模式的に示す説明図である。
ストレージシステムのソフトウェア構成の要部を模式的に示す説明図である。
構成情報を示す説明図である。
基本I/Oサイズと基本ディスクアクセスサイズとの関係を示す説明図である。
基本I/Oサイズを変化させた場合のディスクドライブの利用効率の変化を模式的に示す説明図である。
図7と同様の説明図である。
ストレージシステムの初期設定を行う場合の処理を示すフローチャートである。
リードコマンドを処理するためのフローチャートである。
ライトコマンドを処理するためのフローチャートである。
メインストレージ装置内の各仮想的な論理ボリューム毎に、それぞれ異なる基本I/Oサイズを設定可能なことを示す説明図である。
本発明の第2実施例にかかるストレージシステムで実行される、基本ディスクアクセスサイズを設定するための処理を示すフローチャートである。
ディスクドライブ内の管理情報とメインストレージ装置内の構成情報との関係を示す説明図である。
本発明の第3実施例に係るストレージシステムの構成を示す説明図である。
保証コード付きのライトデータに別の保証コードをさらに付加してディスクドライブに書き込むための処理を示すフローチャートである。
本発明の第4実施例に係るストレージシステムの構成を示す説明図である。
アドレス変換部の構成及びアドレス変換部により生成される仮想的な論理ボリュームの構成を示す説明図である。
本発明の第5実施例に係るストレージシステムで実行される、ストレージシステムの初期設定処理を示すフローチャートである。
本発明の第6実施例に係るストレージシステムの構成を示す説明図である。
符号の説明
1…コントローラ、1A…上位通信部、1B…下位通信部、1C…ライト処理部、1D…リード処理部、1E…サイズ変換部、1F…キャッシュメモリ、2…記憶装置、3…ホスト、4…第1通信経路、5…第2通信経路、BLK1…論理ブロック、BLK2…拡張論理ブロック、GD…保証コード、UP…不用部分、10…メインストレージ装置、20…ホスト、21…アプリケーションプログラム、22…I/O制御プログラム、30…外部ストレージ装置、50…バックアップ装置、60…管理端末、BD…基本ディスクアクセスサイズ、BIO…基本ディスクアクセスサイズ、100…コントローラ、110…チャネルアダプタ(CHA)、110IP…イニシエータコマンド処理、110TP…ターゲットコマンド処理、111…通信ポート、111I…イニシエータポート、111T…ターゲットポート、120…ディスクアダプタ(DKA)、130…キャッシュメモリ、140…共有メモリ、150…接続部、200…記憶部、210…ディスクドライブ、220…パリティグループまたは中間記憶階層、220V…中間記憶階層、230…論理ボリューム、230V…仮想的論理ボリューム、300…コントローラ、301…アドレス変換部、310TP…ターゲットコマンド処理、311T…ターゲットポート、320P…ディスク処理、330…キャッシュメモリ、400…記憶部、410…ディスクドライブ、430…論理ボリューム、430V…仮想的論理ボリューム、T1…構成情報、T2…管理情報、CN1〜CN6…通信経路