(57)【要約】【課題】仮想化の対象となるデバイスの動作に関わらず、動作を続けるストレージ仮想化方法を提供する。【解決手段】ネットワークに接続されるインターフェースと、インターフェースに接続されるプロセッサと、プロセッサに接続されるメモリと、を備え、要求されたアクセス処理を実行するストレージシステムにおいて、ストレージシステムへのアクセス処理の要求に用いられるアドレスは、第１アドレス及び第２アドレスによって構成され、プロセッサは、アクセス処理を要求するパケットを受信すると、受信したパケットから、第１アドレス及び前記第２アドレスを抽出し、抽出された第１アドレスが、ストレージシステムに割り当てられた第１アドレスと一致するか否かを判定し、抽出された第１アドレスが、ストレージシステムに割り当てられた第１アドレスと一致すると判定された場合、抽出された第２アドレスを用いて、要求されたアクセス処理を実行する。【選択図】図１１
2009258825.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、要求されたアクセス処理を実行するストレージシステムにおいて、
前記ストレージシステムへのアクセス処理の要求に用いられるアドレスは、第１アドレス及び第２アドレスによって構成され、
前記プロセッサは、
前記ストレージシステムにアクセス処理を要求するパケットを受信すると、前記受信したパケットから、前記第１アドレス及び前記第２アドレスを抽出し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致するか否かを判定し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致すると判定された場合、前記抽出された第２アドレスを用いて、前記要求されたアクセス処理を実行することを特徴とするストレージシステム。
【請求項２】
前記第１アドレスは、前記ストレージシステムを識別するためのアドレスであり、
前記第２アドレスは、前記アクセスが要求されたデータの前記ストレージシステム内の位置を特定するためのアドレスであることを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第１アドレスは、前記ストレージシステムを識別するためのアドレスであり、
前記第２アドレスは、第３アドレス及び第４アドレスによって構成され、
前記第３アドレスは、前記アクセスが要求されたオブジェクトを識別するためのアドレスであり、
前記第４アドレスは、前記アクセスが要求されたデータの前記オブジェクト内の位置を特定するためのアドレスであり、
前記プロセッサは、
前記受信したパケットから、前記第３アドレス及び前記第４アドレスを抽出し、
前記抽出された第３アドレス及び第４アドレスを用いて、前記要求されたアクセス処理を実行することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記第１アドレスは、前記アドレスのうち上位から所定のビットに設定されることを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記プロセッサは、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致すると判定された場合、前記要求されたアクセス処理が前記ストレージシステムによって取り扱うことができる範囲であるか否か、及び、前記要求されたアクセス処理が読み出しであるか否かを判定し、
前記要求されたアクセス処理が前記ストレージシステムに取り扱われる範囲を超えており、かつ、前記要求されたアクセス処理が読み出しであると判定された場合、予め定められた応答データを送信することを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記応答データは、複数の応答データから選択可能であることを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記プロセッサは、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致すると判定された場合、前記要求されたアクセスが前記ストレージシステムによって取り扱うことができる範囲であるか否か、及び、前記要求されたアクセス処理が読み出しであるか否かを判定し、
前記要求されたアクセスが前記ストレージシステムに取り扱われる範囲を超えており、かつ、前記要求されたアクセス処理が読み出しでないと判定された場合、予め定められた応答データを送信することを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記応答データは、複数の応答データから選択可能であることを特徴とする請求項７に記載のストレージシステム。
【請求項９】
前記アドレスの一部は、前記ストレージシステムによって提供されるファイル構造を表すメタデータに割り当てられており、
前記プロセッサは、前記クライアントが前記メタデータに割り当てられたアドレスの範囲にアクセス処理を要求した場合、前記ストレージシステムによって提供されるファイル構造を表すデータを、前記クライアントが理解可能なファイル構造のデータに変換し、前記変換されたデータを前記クライアントに送信することを特徴とする請求項１に記載のストレージシステム。
【請求項１０】
ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、アクセス処理を要求するパケットをストレージシステムに転送する仮想化装置において、
前記ストレージシステムへのアクセス処理の要求に用いられるアドレスは、第１アドレス及び第２アドレスによって構成され、
前記プロセッサは、
前記ストレージシステムにアクセス処理を要求するパケットを受信すると、前記受信したパケットから前記第１アドレスを抽出し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられているか否かを判定し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられていると判定された場合、前記第２アドレスを用いて前記要求されたアクセス処理を実行させるために、前記受信したパケットを前記抽出された第１アドレスが割り当てられたストレージシステムに転送することを特徴とする仮想化装置。
【請求項１１】
前記第１アドレスは、前記ストレージシステムを識別するためのアドレスであり、
前記第２アドレスは、前記アクセスが要求されたデータの前記ストレージシステム内の位置を特定するためのアドレスであることを特徴とする請求項１０に記載の仮想化装置。
【請求項１２】
前記第１アドレスは、前記アドレスのうち上位から所定のビットに設定されることを特徴とする請求項１０に記載の仮想化装置。
【請求項１３】
前記プロセッサは、
前記抽出された第１アドレスが前記ストレージシステムに割り当てられていると判定された場合、前記要求されたアクセスが前記ストレージシステムによって取り扱うことができる範囲であるか否か、及び、前記要求されたアクセス処理が読み出しであるか否かを判定し、
前記要求されたアクセス処理が前記ストレージシステムに取り扱われる範囲を超えており、かつ、前記要求されたアクセス処理が読み出しであると判定された場合、予め定められた応答データを送信することを特徴とする請求項１０に記載の仮想化装置。
【請求項１４】
前記応答データは、複数の応答データから選択可能であることを特徴とする請求項１３に記載の仮想化装置。
【請求項１５】
前記プロセッサは、
前記抽出された第１アドレスが前記ストレージシステムに割り当てられていると判定された場合、前記要求されたアクセスが前記ストレージシステムによって取り扱うことができる範囲であるか否か、及び、前記要求されたアクセス処理が読み出しであるか否かを判定し、
前記要求されたアクセス処理が前記ストレージシステムに取り扱われる範囲を超えており、かつ、前記要求されたアクセス処理が読み出しでないと判定された場合、予め定められた応答データを送信することを特徴とする請求項１０に記載の仮想化装置。
【請求項１６】
前記応答データは、複数の応答データから選択可能であることを特徴とする請求項１５に記載の仮想化装置。
【請求項１７】
前記アドレスの一部は、前記ストレージシステムによって提供されるファイル構造を表すメタデータに割り当てられており、
前記第２プロセッサは、前記クライアントが前記メタデータに割り当てられたアドレスの範囲にアクセス処理を要求した場合、前記ストレージシステムによって提供されるファイル構造を表すデータを、前記クライアントが理解可能なファイル構造のデータに変換し、前記変換されたデータを前記クライアントに送信することを特徴とする請求項１０に記載の仮想化装置。
【請求項１８】
ネットワークに接続される仮想化装置と、前記仮想化装置に接続されるストレージシステムと、を備える計算機システムにおいて、
前記仮想化装置は、前記ネットワークに接続される第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージシステムは、前記ネットワークに接続される第２インターフェースと、前記第２インターフェースに接続される第２プロセッサと、前記第２プロセッサに接続される第２メモリと、を備え、
前記ストレージシステムへのアクセス処理の要求に用いられるアドレスは、第１アドレス及び第２アドレスによって構成され、
前記第１プロセッサは、
前記ストレージシステムにアクセス処理を要求するパケットを受信すると、前記受信したパケットから前記第１アドレスを抽出し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられているか否かを判定し、
前記抽出された第１アドレスが、前記ストレージシステムに割り当てられていると判定された場合、前記受信したパケットを前記抽出された第１アドレスが割り当てられたストレージシステムに転送し、
前記第２プロセッサは、
前記受信したパケットから前記第２アドレスを抽出し、
前記抽出された第２アドレスを用いて、前記要求されたアクセス処理を実行することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特に、アドレス空間が分割して割り当てられるストレージシステムに関する。
【背景技術】
【０００２】
一つのハードディスクドライブ（ＨＤＤ）より多くの容量をもつストレージを実現するため、複数のストレージを管理する管理コストを低減させる等の理由によって、複数のストレージを仮想的に一つのストレージとしてアクセス可能にするストレージ仮想化の技術が広く用いられている。
【０００３】
ストレージは、物理デバイス、論理デバイス、論理ボリューム、及びファイルシステムのように階層的な構造を有する。ストレージを利用する上位システムは、物理デバイス上に、少なくとも一つの論理デバイスを構成する。また、論理デバイス上に、少なくとも一つの論理ボリュームを構成する。また、論理ボリューム上にファイルシステムを構成し、ファイルシステムにデータを入出力する。
【０００４】
また、各階層でストレージを仮想化することができる。複数の物理デバイスを仮想化して一つの論理デバイスを構成する技術として、非特許文献１には、ＲＡＩＤを構成する技術が記載されている。例えば、ＲＡＩＤの方式のうちの一つであるＲＡＩＤ５は、Ｎ＋１台の物理デバイスを用いて、Ｎ台の物理デバイスからパリティデータを生成する。生成されたパリティデータは、１台の物理デバイスに格納され、残りのＮ台の物理デバイスを用いてＮ台分の容量をもつ論理デバイスを構成する。このように、ストレージを仮想化することによって、上位システムは、ＲＡＩＤによって仮想化したストレージをＮ倍の容量をもつ論理デバイスとして認識し、一つの物理デバイスに構成した論理デバイスと同様にアクセスすることができる。
【０００５】
論理デバイスの仮想化技術として、特許文献１には、仮想ボリュームの記憶領域割り当て方法が記載されている。また、特許文献２には、クラスタストレージのデバイス連結方法が記載されている。また、特許文献３には、ディスクアレイベースのＩ／Ｏルーティング及びマルチレイヤの外部記憶装置の接続方法が記載されている。これらの方法によって、複数の論理デバイスの記憶領域の一部又は全部を用いて、一つの論理デバイス又は論理ボリュームを仮想的に実現することができる。上位システムは、これらの論理デバイス又は論理ボリュームを通常の論理デバイス又は論理ボリュームと同様にアクセスすることができる。
【０００６】
前述したストレージ仮想化方法は、一つの物理デバイス上に構成された論理デバイスと同様に利用することができる仮想的な論理デバイスを構成することを目的にしている。このため、仮想的な論理デバイスの容量は、連続したアドレス空間に割り当てられている。したがって、仮想的な論理デバイスを構成するために用いられる複数の物理デバイス及び複数の論理デバイスを含む全てのデバイスが正常に動作している必要があり、これらの物理デバイス又は論理デバイスの少なくとも一つにアクセスできない場合には障害が発生したとして対処する必要がある。
【特許文献１】特開２００４−１６４３７０号公報
【特許文献２】特開２００５−１６５７０２号公報
【特許文献３】特開２００６−２４２１５号公報
【非特許文献１】D. A. Patterson, G. A. Gibson, R. H. Katz、"A Case for Redundant Arrays of Inexpensive Disks (RAID),"、Proceedings of the International Conference on Management of Data (SIGMOD)、June 1988.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のストレージ仮想化方法では、仮想化に用いられる全てのストレージが正常に動作していることが前提であるため、家庭内のように全ての機器の電源が入っていることが保証されない環境では、従来のストレージ仮想化方法を用いることができない課題がある。また、従来のストレージ仮想化方法は、ブロック単位でアクセス可能なデバイスである複数のブロックデバイスから仮想的なブロックデバイスを構成するため、ブロックデバイスしか認識できない機器がオブジェクト単位でアクセス可能なデバイスであるオブジェクトデバイスへのアクセスを可能にするように、複数のオブジェクトデバイスから仮想的なブロックデバイスを構成するストレージ仮想化ができない課題がある。
【０００８】
本発明の第１の目的は、仮想化の対象となるデバイスの動作に関わらず、動作を続けるストレージ仮想化方法を提供することである。また、本発明の第２の目的は、オブジェクトデバイスをブロックデバイスとしてアクセス可能にするストレージ仮想化方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、要求されたアクセス処理を実行するストレージシステムにおいて、前記ストレージシステムへのアクセス処理の要求に用いられるアドレスは、第１アドレス及び第２アドレスによって構成され、前記プロセッサは、前記ストレージシステムにアクセス処理を要求するパケットを受信すると、前記受信したパケットから、前記第１アドレス及び前記第２アドレスを抽出し、前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致するか否かを判定し、前記抽出された第１アドレスが、前記ストレージシステムに割り当てられた第１アドレスと一致すると判定された場合、前記抽出された第２アドレスを用いて、前記要求されたアクセス処理を実行する。
【発明の効果】
【００１０】
本発明の一実施形態によれば、ストレージ仮想化の対象となるデバイスの動作に関わらず、ストレージを仮想化することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１２】
図１は、本発明の実施の形態の計算機システムのブロック図である。
【００１３】
図１に示すように、計算機システムは、クライアント１０１、ストレージ装置１０２、及び仮想化装置１０３を備える。
【００１４】
クライアント１０１は、パケットを用いて、ストレージ装置１０２に入出力データの処理を要求する計算機である。例えば、クライアント１０１は、パケットにアクセス先の論理ブロックアドレスを設定してアクセス先を指定し、処理を要求することができる。なお、クライアント１０１の構成は、図３を用いて後述する。
【００１５】
ストレージ装置１０２は、クライアント１０１から要求された処理を実行する装置である。ストレージ装置１０２は、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）によって構成されてもよい。なお、ストレージ装置１０２の構成は、図５を用いて後述する。
【００１６】
仮想化装置１０３は、クライアント１０１から受信したパケットを、ストレージ装置１０２に転送する。なお、仮想化装置１０３の構成は、図４を用いて後述する。
【００１７】
クライアント１０１から受信したパケットをストレージ装置１０２に転送する場合、仮想化装置１０３は、例えば、クライアント１０１から受信したパケットに設定されているアクセス先のアドレスから、ストレージ装置１０２を識別する識別子（例えば、後述するストレージ識別子３０１）を抽出し、抽出されたストレージ識別子３０１が割り当てられているストレージ装置１０２にパケットを転送してもよい。
【００１８】
また、仮想化装置１０３は、ブロードキャスト及びマルチキャスト等を用いて、クライアント１０１から受信したパケットをストレージ装置１０２に転送してもよい。この場合、ストレージ装置１０２は、仮想化装置１０３から転送されたパケットに設定されているアクセス先のアドレスから、ストレージ識別子３０１を抽出し、抽出されたストレージ識別子３０１が自身に割り当てられている場合には、要求された処理を実行する。また、抽出されたストレージ識別子３０１が自身に割り当てられたストレージ識別子３０１でない場合には、要求された処理を実行せずに終了する。
【００１９】
クライアント１０１と仮想化装置１０３とは、例えば、ＴＣＰ／ＩＰプロトコルを用いて通信可能なイーサネット（登録商標、以下同じ）、及びｅＳＡＴＡ等のいずれかによって接続されてもよい。また、仮想化装置１０３とストレージ装置１０２とは、例えば、イーサネット、ファイバチャネルネットワーク、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）、及びＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）等のいずれかによって接続されてもよい。
【００２０】
図１に示す計算機システムの構成では、仮想化装置１０３が複数のストレージ装置１０２を一つのアドレス空間に割り当てることによってストレージ装置１０２の仮想化を実現する。よって、クライアント１０１は、複数のストレージ装置１０２を一つのストレージ装置１０２としてアクセスすることが可能になる。
【００２１】
図３は、本発明の実施の形態のクライアント１０１のブロック図である。
【００２２】
クライアント１０１は、プロセッサ（ＣＰＵ）１３０１、メモリ１３０２、ハードディスク１３０３、入力装置１３０４、出力装置１３０５、及び通信インターフェース１３０６を備える。
【００２３】
ＣＰＵ１３０１は、メモリ１３０２に格納されているプログラムを実行し、クライアント１０１全体を制御するプロセッサである。
【００２４】
メモリ１３０２は、ＣＰＵ１３０１によって実行されるプログラムを格納する。メモリ１３０２は、例えば、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）のような半導体メモリで構成するとよい。また、ハードディスク１３０３に格納されたプログラム及びデータが必要に応じて読み出され、メモリ１３０２に格納される。
【００２５】
ハードディスク１３０３は、プログラム及びデータ等を格納する。
【００２６】
入力装置１３０４は、ユーザによる情報の入力を受け付ける。入力装置１３０４は、例えば、キーボード及び／又はマウス等を含む。
【００２７】
出力装置１３０５は、ユーザへの情報を掲示する。出力装置１３０５は、例えば、液晶表示装置のようなディスプレイ装置又はプリンタ等を含む。
【００２８】
通信インターフェース１３０６は、ネットワーク（例えば、ＬＡＮ又はインターネット等）を介して、データを送受信する。
【００２９】
図４は、本発明の実施の形態の仮想化装置１０３のブロック構成図である。
【００３０】
仮想化装置１０３は、ポート１４０１、プロセッサ（ＣＰＵ）１４０２、メモリ１４０３、及びハードディスク１４０４を備える。
【００３１】
ポート１４０１は、クライアント１０１又はストレージ装置１０２と接続するインターフェースである。
【００３２】
ＣＰＵ１４０２は、メモリ１４０３に格納されているプログラムを実行し、仮想化装置１０３全体を制御するプロセッサである。
【００３３】
メモリ１４０３は、ＣＰＵ１４０２によって実行されるプログラムを格納する。メモリ１４０３は、例えば、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）のような半導体メモリで構成するとよい。また、ハードディスク１４０４に格納されたプログラム及びデータが必要に応じて読み出され、メモリ１４０３に格納される。なお、メモリ１４０３には、ポート１４０１と各ポート１４０１に接続されるストレージ装置１０２との対応関係の情報が格納される。格納された対応関係の情報に基づいて、クライアント１０１からの要求がストレージ装置１０２に転送される。
【００３４】
ハードディスク１４０４は、プログラム及びデータ等を記憶する。
【００３５】
図５は、本発明の実施の形態のストレージ装置１０２のブロック構成図である。
【００３６】
ストレージ装置１０２は、ポート１５０１、コントローラ１５０２、及びディスク装置１５０３を備える。
【００３７】
ポート１５０１は、クライアント１０１又はストレージ装置１０２と接続するインターフェースである。
【００３８】
コントローラ１５０２は、プロセッサ（ＣＰＵ）１５０４及びメモリ１５０５を備える。ＣＰＵ１５０４は、メモリ１５０５に格納されているプログラムを実行し、ストレージ装置１０２全体を制御するプロセッサである。メモリ１５０５は、ＣＰＵ１５０４によって実行されるプログラムを格納する。
【００３９】
ディスク装置１５０３は、ユーザデータを保存する。ディスク装置１５０３は、例えば、ハードディスク（ＨＤＤ）で構成するとよい。ユーザデータは、クライアント１０１によって書き込まれたデータである。
【００４０】
なお、ディスク装置１５０３の記憶領域は、複数のボリュームに分割又は結合されてもよい。各ボリュームは、クライアント１０１上のアプリケーションプログラムが一つの論理的なディスク装置として認識する記憶領域である。ディスク装置１５０３に含まれる任意の容量の物理的な記憶領域が、各ボリュームに割り当てられる。
【００４１】
本実施の形態のストレージ装置１０２は、ブロックデバイス及びオブジェクトデバイスのいずれのデバイスによって構成されてもよい。
【００４２】
なお、ブロックデバイスとは、データをアドレスによって指定された所定の大きさのブロック単位でアクセス可能なデバイス（例えば、ストレージ装置１０２）である。また、オブジェクトデバイスとは、データをオブジェクト（ファイル）単位でアクセス可能なデバイス（例えば、ストレージ装置１０２）である。
【００４３】
以下、ストレージ装置１０２をブロックデバイスによって構成する場合について説明する。
【００４４】
図６は、本発明の実施の形態のストレージ装置１０２がブロックデバイスの場合のアドレス構造の説明図である。
【００４５】
図６に示すように、アドレス構造３００は、ブロックデバイスにアクセスする場合に指定される論理ブロックアドレスのアドレス構造であり、各ストレージ装置１０２に共通のアドレス空間を示す。
【００４６】
アドレス構造３００は、ストレージ識別子３０１及びストレージ内アドレス３０２を含む。ストレージ識別子３０１は、ストレージ装置１０２の識別子を示すアドレスであり、ストレージ内アドレス３０２は、ストレージ装置１０２内の物理的な位置を示すアドレスである。図６に示すように、アドレス構造３００の上位ビットの所定のビット数がストレージ識別子３０１として割り当てられる。ストレージ識別子３０１を所定の上位ビットに割り当てる理由は、ＴＣＰ／ＩＰプロトコルを用いてパケットを送信する場合、上位ビットから順にデータが送信されるためである。パケットの受信側では、送信されたデータの上位ビットから順に読み出すことによって、効率よく処理を実行することが可能になる。
【００４７】
アドレス構造３００は、所定のビット数の部分がストレージ識別子３０１として割り当てられ、残りの部分がストレージ内アドレス３０２として割り当てられる。例えば、アドレス構造３００が、ＳＣＳＩ及びＡＴＡで用いられている４８ビットの論理ブロックアドレスのアドレス構造である場合、ストレージ識別子３０１に上位８ビットを割り当て、ストレージ内アドレス３０２に４０ビットを割り当てると、一台当たり５１２ＴＢの容量を持つストレージ装置１０２を２５６台用いて仮想化することができる。
【００４８】
ストレージ識別子３０１は、例えば、最初の１台に「０」を割り当て、ストレージが増える度にカウントアップすることによってストレージ識別子３０１が割り当てられてもよい。また、ファイバチャネル等で設定されているＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）の小さい順にストレージ識別子３０１が割り当てられてもよい。
【００４９】
図８は、本発明の実施の形態のストレージ装置１０２がブロックデバイスのアドレス割り当ての説明図である。
【００５０】
図８に示すように、アドレス空間５００は、複数のストレージ装置１０２を一つのブロックデバイスに仮想化した場合の全体のアドレス空間であり、各ストレージ装置１０２のアドレス範囲を含む。
【００５１】
アドレス空間５００は、ストレージ装置１０２に割り当て済みのアドレス範囲５０１及びストレージ装置１０２に割り当てられていないアドレス範囲５０２を含む。また、割り当て済みのアドレス範囲５０１は、ストレージ装置１０２の容量の範囲内を示すアドレス範囲５１１及びストレージ装置１０２の容量の範囲外を示すアドレス範囲５１２を含む。なお、ストレージ装置１０２の容量の範囲内とは、ストレージ装置１０２によって取り扱うことができる範囲である。
【００５２】
なお、図６に示すストレージ識別子３０１のアドレスによって、各ストレージ装置１０２に割り当てられたアドレス範囲５０１が特定される。また、図６に示すストレージ内アドレス３０２によって、ブロックデータが格納されているアドレス範囲５１１が特定される。特定されたアドレス範囲５１１のアドレスは、ストレージ装置１０２の記憶領域に割り当てられた論理ブロックアドレスに対応する。したがって、特定されたアドレス範囲５１１のアドレスを用いて、ブロックデータにアクセスすることができる。
【００５３】
次に、ストレージ装置１０２をオブジェクトデバイスによって構成する場合について説明する。
【００５４】
図７は、本発明の実施の形態のストレージ装置１０２がオブジェクトデバイスの場合のアドレス構造の説明図である。
【００５５】
図７に示すように、アドレス構造４００は、オブジェクトデバイスにアクセスする場合に指定される論理ブロックアドレスのアドレス構造であり、各ストレージ装置１０２に共通のアドレス空間を示す。
【００５６】
アドレス構造４００は、ストレージ識別子３０１、オブジェクト識別子４０１、及びオブジェクトオフセット４０２を含む。オブジェクト識別子４０１は、オブジェクトの識別子を示すアドレスであり、オブジェクトオフセット４０２は、オブジェクト内の相対的な位置を示すアドレスである。
【００５７】
アドレス構造４００は、所定のビット数の部分がストレージ識別子３０１として割り当てられ、次の所定のビット数の部分がオブジェクト識別子４０１として割り当てられ、残りの部分がオブジェクトオフセット４０２として割り当てられる。例えば、アドレス構造４００が、４８ビットの論理ブロックアドレスのアドレス構造である場合、ストレージ識別子３０１に最上位の８ビットを割り当て、ストレージ識別子３０１の下位の１２ビットをオブジェクト識別子４０１に、オブジェクトオフセット４０２に最下位の２８ビットを割り当てると、２５６台のストレージ装置１０２を仮想化することができ、各ストレージ装置１０２にはそれぞれ１２８ＧＢのオブジェクト（ファイル）を４０９６個格納することができる。
【００５８】
図９は、本発明の実施の形態のストレージ装置１０２がオブジェクトデバイスの場合のアドレス割り当ての説明図である。
【００５９】
図９に示すように、アドレス空間６００は、複数のストレージ装置１０２を一つのオブジェクトデバイスに仮想化した場合の全体のアドレス空間であり、各ストレージ装置１０２のアドレス範囲が割り当てられる。
【００６０】
アドレス空間６００は、ストレージ装置１０２に割り当て済みのアドレス範囲５０１、ストレージ装置１０２に割り当てられていないアドレス範囲５０２、メタ情報に割り当てられたアドレス範囲５０３を含む。
【００６１】
なお、アドレス範囲５０３は、ストレージ装置１０２のファイル構造のデータである。
【００６２】
クライアント１０１がストレージ装置１０２にアクセスするためには、ストレージ装置１０２のファイル構造を理解する必要がある。このため、クライアント１０１は、メタ情報に割り当てられたアドレス範囲５０３にアクセスし、ストレージ装置１０２のファイル構造を通知してもらう必要がある。
【００６３】
ストレージ装置１０２は、クライアント１０１がメタ情報のアドレス範囲５０３にアクセスした場合、ストレージ装置１０２のファイル構造のデータ（例えば、オブジェクト識別子４０１及びオブジェクトオフセット４０２等の情報）を、クライアント１０１が理解可能なファイルシステムの形式に変換し、変換されたファイル構造のデータをクライアント１０１に通知する。そして、クライアント１０１は、通知されたファイル構造のデータを用いてストレージ装置１０２にアクセスすることができる。
【００６４】
また、アドレス範囲５０１は、ストレージ装置１０２の容量の範囲内を示すアドレス範囲５１１及びストレージ装置１０２の容量の範囲外を示すアドレス範囲５１２を含む。
【００６５】
また、アドレス範囲５１１は、オブジェクトに割り当て済みのアドレス範囲６０１及びストレージ装置１０２によって取り扱うことができる範囲のうち、オブジェクトが割り当てられていないアドレス範囲６０２を含む。
【００６６】
また、アドレス範囲６０１は、オブジェクトの容量の範囲内を示すアドレス範囲６１１及びオブジェクトの容量の範囲外を示すアドレス範囲６１２を含む。なお、容量の範囲内とは、オブジェクトのデータサイズの範囲内である。
【００６７】
なお、図７に示すストレージ識別子３０１のアドレスによって、各ストレージ装置１０２に割り当てられたアドレス範囲５０１が特定される。また、図７に示すオブジェクト識別子４０１によって、アドレス範囲６０１のオブジェクトの先頭アドレスを特定することができる。また、図７に示すオブジェクトオフセット４０２によって、オブジェクトの先頭アドレスからの相対的なアドレスを特定することができる。
【００６８】
図１１は、本発明の実施の形態の計算機システムにおけるアクセス処理のフローチャートである。
【００６９】
まず、仮想化装置１０３は、クライアント１０１からパケットによって、入出力データの処理の要求を受信する（８０１）。
【００７０】
次に、仮想化装置１０３は、ステップ８０１で受信したパケットに設定されている論理ブロックアドレスから、ストレージ識別子３０１を抽出する（８０２）。ストレージ識別子３０１を抽出する場合、ストレージ識別子３０１に割り当てられたアドレス部分以外にマスクをかけることによって、抽出することができる。例えば、ストレージ識別子３０１を示すビット数のアドレス部分が「１」であり、ストレージ識別子３０１を示すビット数の部分以外が「０」であるアドレスマスクと、受信した要求に設定されているアドレスとをＡＮＤ演算することによって、ストレージ識別子３０１のアドレスを抽出することができる。
【００７１】
次に、仮想化装置１０３は、ステップ８０２で抽出されたストレージ識別子３０１と一致するストレージ装置１０２が存在するか否かを判定する（８１０）。
【００７２】
ストレージ識別子３０１と一致するストレージ装置１０２が存在する場合、処理はステップ８２０に進む。一方、ストレージ識別子３０１と一致するストレージ装置１０２が存在しない場合、処理は終了する。
【００７３】
次に、仮想化装置１０３は、ステップ８０１で受信したパケットのアクセス先が、ステップ８１０で存在すると判定されたストレージ装置１０２に割り当てられた容量の範囲内であるか否かを判定する（８２０）。
【００７４】
具体的には、クライアント１０１がブロックデバイスにアクセスする場合、まず、ストレージ装置１０２は、ステップ８０１で受信した要求に設定されているアドレスから、ストレージ内アドレス３０２に割り当てられたアドレス部分以外にマスクをかけることによって、ストレージ内アドレス３０２を抽出する。抽出されたストレージ内アドレス３０２が、ストレージ装置１０２に割り当てられた容量の範囲内であるアドレス範囲５１１に含まれるか否かを判定する。アドレス範囲５１１にストレージ内アドレス３０２が含まれる場合、クライアント１０１から受信した要求のアクセス先が、ストレージ装置１０２に割り当てられた容量の範囲内であると判定する。
【００７５】
また、クライアント１０１がオブジェクトデバイスにアクセスする場合、まず、ストレージ装置１０２は、ステップ８０１で受信したパケットに設定されているアドレスから、オブジェクト識別子４０１に割り当てられたアドレス部分以外にマスクをかけることによって、オブジェクト識別子４０１を抽出する。抽出されたオブジェクト識別子４０１が、アドレス範囲６０２に含まれるか否かを判定する。
【００７６】
アドレス範囲６０２にオブジェクト識別子４０１が含まれる場合、ストレージ装置１０２は、ステップ８０１で受信したパケットに設定されているアドレスから、オブジェクトオフセット４０２に割り当てられたアドレス部分以外にマスクをかけることによって、オブジェクトオフセット４０２を抽出する。抽出されたオブジェクトオフセット４０２が、ストレージ装置１０２に割り当てられたアドレス範囲６１１に含まれるか否かを判定する。
【００７７】
アドレス範囲６１１にオブジェクトオフセット４０２が含まれる場合、クライアント１０１から受信した要求のアクセス先が、ストレージ装置１０２に割り当てられた容量の範囲内であると判定する。
【００７８】
ストレージ装置１０２に割り当てられた容量の範囲内である場合、処理はステップ８２１に進む。一方、ストレージ装置１０２に割り当てられた容量の範囲外である場合、処理はステップ８３０に進む。
【００７９】
ステップ８２１では、仮想化装置１０３は、ステップ８１０で存在すると判定したストレージ装置１０２に、ステップ８０１で受信したパケットを転送する（８２１）。なお、パケットをストレージ装置１０２に転送する場合、仮想化装置１０３は、論理ブロックアドレスのストレージ識別子３０１の部分をマスクして（ストレージ識別子３０１のビットを全て「０」に設定して）、ストレージ装置１０２に転送してもよい。このようにすると、マスクされた論理ブロックアドレスが、ストレージ装置１０２によって取り扱うことができる範囲に含まれるため、ストレージ装置１０２が要求を受け付けることができる。
【００８０】
次に、ストレージ装置１０２は、ステップ８２１で仮想化装置１０３から転送された要求の処理を実行する（８２２）。例えば、読み出し要求である場合、受信したパケットに設定されているアドレスに対応する記憶領域からデータを読み出す。また、書き込み要求である場合、受信したパケットに設定されているアドレスに対応する記憶領域にデータを書き込む。
【００８１】
次に、ストレージ装置１０２は、クライアント１０１に送信する応答を作成する（８２３）。例えば、読み出し要求に対する応答を作成する場合、ステップ８２１で読み出されたデータに基づいて応答が作成される。また、書き込み要求に対する応答を作成する場合、書き込みが完了したことを示す応答が作成される。
【００８２】
次に、ストレージ装置１０２は、ステップ８２３又はステップ８３２で作成した応答に、ストレージ装置１０２自身のストレージ識別子３０１を付与して、仮想化装置１０３に応答を送信する（８２４）。
【００８３】
次に、仮想化装置１０３は、ステップ８２４でストレージ装置１０２から送信された応答をクライアント１０１に転送する（８２５）。そして、処理は終了する。
【００８４】
ステップ８３０では、仮想化装置１０３は、要求された処理が読み出し要求であるか否かを判定する。
【００８５】
要求が読み出し要求である場合、処理はステップ８３１に進む。一方、処理が書き込み要求である場合、処理はステップ８３２に進む。
【００８６】
ステップ８３１では、仮想化装置１０３は、予め設定されているデータパターンを生成する。例えば、全て「０」のデータを生成してもよい。また、全て「１」のデータを生成してもよい。また、ランダムなデータを生成してもよい。また、ユーザによって設定されるデータを生成してもよい。そして、処理はステップ８２３に進む。
【００８７】
ステップ８３２では、仮想化装置１０３は、予め設定されている応答を作成する。例えば、書き込みエラーを示すエラーメッセージを作成してもよい。また、容量の範囲外を示すエラーメッセージを作成してもよい。また、書き込みが完了したことを示すメッセージを作成してもよい。そして、処理はステップ８２４に進む。
【００８８】
なお、ステップ８２０では、仮想化装置１０３が、ストレージ装置１０２に割り当てられた容量の範囲内であるか否かを判定しているが、ストレージ装置１０２がストレージ装置１０２自身に割り当てられた容量の範囲内であるか否かを判定してもよい。この場合、ステップ８２１で、仮想化装置１０３がストレージ装置１０２に要求を転送する代わりに、ステップ８１０で、仮想化装置１０３は、ストレージ識別子３０１と一致するストレージ装置１０２が存在する場合、クライアント１０１から受信した要求をストレージ装置１０２に転送する。
【００８９】
また、仮想化装置１０３は、ステップ８０１の処理を実行した後にストレージ装置１０２に要求を転送してもよい。要求を転送する場合、仮想化装置１０３は、ブロードキャスト又はマルチキャストによって各ストレージ装置１０２に送信することができる。なお、この場合、ステップ８０２からステップ８２３及びステップ８３０からステップ８３２の処理は、ストレージ装置１０２が実行する。
【００９０】
図１２は、本発明の実施の形態のクライアント１０１からのアクセス要求がストレージ装置１０２の容量の範囲外である場合の処理の設定画面の説明図である。
【００９１】
図１２に示す設定画面は、ストレージ装置１０２の容量の範囲外にアクセスする場合の処理の選択項目９０１、ファイル選択処理ボタン９０２、及びキャンセルボタン９０３を含む。
【００９２】
図１２に示す例では、読み出し要求が容量の範囲外の場合の処理の選択項目９０１として、全て「０」のデータを返す、全て「１」のデータを返す、ランダムなデータを返す、及びユーザが設定するデータを返す、を含む。また、書き込み要求が容量の範囲外の場合の処理の選択項目９０１として、「書き込みエラー」を返す、「容量の範囲エラー」を返す、及び「書き込み完了」を返す、を含む。
【００９３】
システムの管理者が、読み出し要求が容量の範囲外である場合の処理と、書き込み要求が容量の範囲外である場合の処理とを選択項目９０１から選択し、ファイル選択処理ボタン９０２を操作する（例えば、マウスでクリックする）ことによって、設定が完了する。また、キャンセルボタン９０３を操作する（例えば、マウスでクリックする）ことによって、設定を取り消すことができる。
【００９４】
以上、本実施の形態について説明したが、後述する図２に示すように、仮想化装置１０３の役割をストレージ１０２が分担することによって、システムを構成してもよい。
【００９５】
図２は、本発明の実施の形態の計算機システムの変形例のブロック図である。
【００９６】
図２に示すクライアント１０１及びストレージ装置１０２は、図１に示すクライアント１０１及びストレージ装置１０２と同様であるため説明を省略する。なお、クライアント１０１とストレージ装置１０２とは、例えば、イーサネット、ファイバチャネルネットワーク、ＡＴＡ、及びＳＡＴＡ等のいずれかによって接続されてもよい。
【００９７】
図２に示すクライアント１０１は、ブロードキャスト及びマルチキャスト等を用いて、ストレージ装置１０２にアクセスの要求を送信する。
【００９８】
ストレージ装置１０２は、クライアント１０１から受信した要求に従って、処理を実行する。例えば、ストレージ装置１０２は、まず、受信したパケットに設定されているアドレスから、ストレージ識別子３０１を判定する。そして、判定されたストレージ識別子３０１が自身に割り当てられているストレージ識別子３０１と同一である場合には、要求された処理を実行する。また、抽出されたストレージ識別子３０１が自身に割り当てられたストレージ識別子３０１でない場合には、要求された処理を実行せずに終了する。
【００９９】
図２に示す計算機システムの構成では、図１に示す仮想化装置１０３の役割を複数のストレージ装置１０２が分担することによって、ストレージ装置１０２の仮想化を実現することができる。
【０１００】
次に、図２に示す計算機システムの変形例において実行されるアクセス処理について説明する。
【０１０１】
図１０は、本発明の実施の形態の計算機システムの変形例におけるアクセス処理のフローチャートである。
【０１０２】
メモリ１５０５に格納されている各種プログラムをＣＰＵ１５０４が実行することによって、図１０に示すアクセス処理が実行される。
【０１０３】
まず、ストレージ装置１０２は、クライアント１０１からパケットによって、入出力データの処理の要求を受信する（７０１）。
【０１０４】
次に、ストレージ装置１０２は、ステップ７０１で受信したパケットに設定されている論理ブロックアドレスから、ストレージ識別子３０１を抽出する（７０２）。なお、ステップ７０２の処理は、図１１のステップ８０２の処理と同様にストレージ識別子３０１を抽出する。
【０１０５】
次に、ストレージ装置１０２は、ステップ７０２で抽出されたストレージ識別子３０１とストレージ装置１０２に割り当てられたストレージ識別子３０１とが一致するか否かを判定する（７１０）。
【０１０６】
ストレージ装置１０２自身に割り当てられたストレージ識別子３０１と一致する場合、処理はステップ７２０に進む。一方、ストレージ装置１０２に割り当てられたストレージ識別子３０１と一致しない場合、要求された処理をこのストレージ装置１０２が実行する必要がないため、処理は終了する。
【０１０７】
次に、ストレージ装置１０２は、ステップ７０１で受信したパケットのアクセス先が、ストレージ装置１０２の容量の範囲内であるか否か、すなわち、ストレージ装置１０２によって取り扱うことができる範囲であるか否かを判定する（７２０）。
【０１０８】
なお、ステップ７２０の処理は、図１１のステップ８２０の処理と同様に、ストレージ装置１０２に割り当てられた容量の範囲内であるか否かを判定する。
【０１０９】
ストレージ装置１０２自身に割り当てられた容量の範囲内である場合、処理はステップ７２１に進む。一方、ストレージ装置１０２自身に割り当てられた容量の範囲外である場合、処理はステップ７３０に進む。
【０１１０】
ステップ７２１では、ストレージ装置１０２は、クライアント１０１から要求された処理を実行する。例えば、読み出し要求である場合、受信したパケットに設定されているアドレスに対応する記憶領域からデータを読み出す。また、書き込み要求である場合、受信したパケットに設定されているアドレスに対応する記憶領域にデータを書き込む。
【０１１１】
次に、ストレージ装置１０２は、クライアント１０１に送信する応答を作成する（７２２）。例えば、読み出し要求に対する応答を作成する場合、ステップ７２１で読み出されたデータに基づいて応答が作成される。また、書き込み要求に対する応答を作成する場合、書き込みが完了したことを示す応答が作成される。
【０１１２】
次に、ストレージ装置１０２は、ステップ７２２又はステップ７３２で作成した応答をクライアント１０１に送信する（７２３）。そして処理は終了する。
【０１１３】
ステップ７３０では、ストレージ装置１０２は、要求された処理が読み出し要求であるか否かを判定する。
【０１１４】
要求が読み出し要求である場合、処理はステップ７３１に進む。一方、要求が書き込み要求である場合、処理はステップ７３２に進む。
【０１１５】
ステップ７３１では、ストレージ装置１０２は、予め設定されているデータパターンを生成する。例えば、全て「０」のデータを生成してもよい。また、全て「１」のデータを生成してもよい。また、ランダムなデータを生成してもよい。また、ユーザによって設定されるデータを生成してもよい。そして、処理はステップ７２２に進む。なお、生成されるデータパターンは、後述する図１２に示す設定画面によって設定される。
【０１１６】
ステップ７３２では、ストレージ装置１０２は、予め設定されている応答を作成する。例えば、書き込みエラーを示すエラーメッセージを作成してもよい。また、容量の範囲外を示すエラーメッセージを作成してもよい。また、書き込みが完了したことを示すメッセージを作成してもよい。そして、処理はステップ７２３に進む。なお、作成される応答は、ステップ７３１と同様に、後述する図１２に示す設定画面によって設定される。
【０１１７】
本発明の実施の形態では、ストレージのアドレス空間を分割し、複数のストレージを同一のアドレス空間に割り当ててストレージを仮想化することによって、ストレージ仮想化の対象のデバイスの動作の有無に関わらず、ストレージを仮想化することができる。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施の形態の計算機システムのブロック図である。
【図２】本発明の実施の形態の別の計算機システムのブロック図である。
【図３】本発明の実施の形態のクライアントのブロック図である。
【図４】本発明の実施の形態の仮想化装置のブロック図である。
【図５】本発明の実施の形態のストレージ装置のブロック図である。
【図６】本発明の実施の形態のストレージ装置がブロックデバイスの場合のアドレス構造の説明図である。
【図７】本発明の実施の形態のストレージ装置がオブジェクトデバイスの場合のアドレス構造の説明図である。
【図８】本発明の実施の形態のストレージ装置がブロックデバイスの場合のアドレス割り当ての説明図である。
【図９】本発明の実施の形態のストレージ装置がオブジェクトデバイスの場合のアドレス割り当ての説明図である。
【図１０】本発明の実施の形態の計算機システムの変形例におけるアクセス処理のフローチャートである。
【図１１】本発明の実施の形態の計算機システムにおけるアクセス処理のフローチャートである。
【図１２】本発明の実施の形態のクライアントからのアクセス要求がストレージ装置の容量の範囲外である場合の処理の設定画面の説明図である。
【符号の説明】
【０１１９】
１０１  クライアント
１０２  ストレージ装置
１０３  仮想化装置
３００  アドレス構造
３０１  ストレージ識別子
３０２  ストレージ内アドレス
４００  アドレス構造
４０１  オブジェクト識別子
４０２  オブジェクトオフセット
５０１  ストレージ装置に割り当て済みのアドレス範囲
５０２  ストレージ装置に未割り当てのアドレス範囲
５１１  ストレージ装置の容量のアドレス範囲
５１２  ストレージ装置の容量範囲外のアドレス範囲
６０１  オブジェクトに割り当て済みのアドレス範囲
６０２  オブジェクトに未割り当てのアドレス範囲
６１１  オブジェクトの容量のアドレス範囲
６１２  オブジェクトの容量外のアドレス範囲
【図１】
2009258825.tif 000003
【図２】
2009258825.tif 000004
【図３】
2009258825.tif 000005
【図４】
2009258825.tif 000006
【図５】
2009258825.tif 000007
【図６】
2009258825.tif 000008
【図７】
2009258825.tif 000009
【図８】
2009258825.tif 000010
【図９】
2009258825.tif 000011
【図１０】
2009258825.tif 000012
【図１１】
2009258825.tif 000013
【図１２】
2009258825.tif 000014