(57)【特許請求の範囲】
【請求項１】
複数のメインフレーム用ホスト計算機とネットワークを介して接続される複数のストレージ装置であって、
前記ホスト計算機に提供されるボリューム識別情報として前記複数のストレージ装置間で同一識別情報を付与した多重ボリュームを設け、
前記複数のストレージ装置は、少なくとも、前記多重ボリュームに対してエクステント排他処理を実行する第１のストレージ装置およびそれ以外の第２のストレージ装置と、各々に制御部と、を備え、
前記ホスト計算機は、コマンドチェイン構成によってデータの入出力処理を要求するチャネルコマンドを送信し、
前記複数のストレージ装置のいずれかの制御部は、
前記コマンドチェインの先頭チャネルコマンドから前記入出力処理の対象となる前記多重ボリュームに関する情報を取得し、
自らが前記第１のストレージ装置であれば、前記入出力処理の対象となる前記多重ボリュームに対して、前記エクステント排他処理と共に前記先頭チャネルコマンドの後続コマンドによる入出力処理を実行し該実行後に該エクステント排他を解除すること、および、
自らが前記第２のストレージ装置であれば、前記入出力処理の対象となる前記多重ボリュームに対する前記エクステント排他処理を前記第１のストレージ装置へ依頼し該排他処理の結果を受け、該結果に基づき該多重ボリュームに対して前記先頭チャネルコマンドの後続コマンドによる入出力処理を実行し、該実行後に該エクステント排他の解除を前記第１のストレージ装置へ通知する
ことを特徴とするストレージ装置。
【請求項２】
請求項１記載のストレージ装置であって、
前記複数のストレージ装置は、少なくとも前記多重ボリュームのエクステント範囲に対する前記第１のストレージ装置の情報を格納する第１のテーブルを備え、
前記複数のストレージ装置のいずれかの制御部は、自らが前記第１または第２のストレージ装置であるかを前記第１のテーブルにより判断する
ことを特徴とするストレージ装置。
【請求項３】
請求項２記載のストレージ装置であって、
前記複数のストレージ装置は、少なくとも前記多重ボリュームのエクステント範囲と該範囲を処理するストレージ装置の情報を格納する第２のテーブルを備え、
前記第１のストレージ装置の制御部は、前記入出力処理に関し、前記エクステント排他処理に係るエクステント範囲および該範囲に対する入出力処理を実行するストレージ装置を前記第２のテーブルに登録する
ことを特徴とするストレージ装置。
【請求項１０】
複数のメインフレーム用ホスト計算機とネットワークを介して接続される複数のストレージ装置であって、
前記ホスト計算機に提供されるボリューム識別情報として前記複数のストレージ装置間で同一識別情報を付与した多重ボリュームを設け、
前記複数のストレージ装置は、少なくとも、前記多重ボリュームに対してエクステント排他処理を実行する第１のストレージ装置およびそれ以外の第２のストレージ装置とから構成され、
前記複数のストレージ装置のいずれかは、
前記ホスト計算機から、コマンドチェイン構成によってデータの入出力処理を要求する前記チャネルコマンドを受信する第１のステップと、
前記コマンドチェインの先頭チャネルコマンドから前記入出力処理の対象となる前記多重ボリュームに関する情報を取得する第２のステップと、
自らが前記第１または第２のいずれのストレージ装置であるかを判断する第３のステップと、
自らが前記第１のストレージ装置であれば、前記入出力処理の対象となる前記多重ボリュームに対して前記エクステント排他処理と共に前記先頭チャネルコマンドの後続コマンドによる入出力処理を実行し該実行後に該エクステント排他を解除する第４のステップと
自らが前記第２のストレージ装置であれば、前記入出力処理の対象となる前記多重ボリュームに対する前記エクステント排他処理を前記第１のストレージ装置へ依頼し該排他処理の結果を受け、該結果に基づき該多重ボリュームに対して前記先頭チャネルコマンドの後続コマンドによる入出力処理を実行し、該実行後に該エクステント排他の解除を前記第１のストレージ装置へ通知する第５のステップと、を有し、
前記第５のステップは、前記第１のストレージ装置は前記エクステント排他処理を実行し該実行結果を依頼元である前記第２のストレージ装置へ通知するステップを含む、
ことを特徴とするデータ管理方法。
【請求項１１】
請求項１０記載のデータ管理方法であって、
前記第３のステップは、少なくとも前記多重ボリュームのエクステント範囲に対する前記第１のストレージ装置の情報を格納する第１のテーブルにより判断する
ことを特徴とするデータ管理方法。
【請求項１２】
請求項１１記載のデータ管理方法であって、
前記第４または第５のステップにおける前記エクステント排他処理には、少なくとも前記多重ボリュームのエクステント範囲と該範囲を処理するストレージ装置の情報を格納する第２のテーブルに、該エクステント排他処理に係るエクステント範囲および該範囲に対する入出力処理を実行するストレージ装置を登録することを含む
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置および該ストレージ装置におけるデータ管理方法に関し、特に、複数のストレージ装置のボリュームを複数のホスト計算機から共有アクセスするストレージ装置に適用して好適なるものである。
【背景技術】
【０００２】
計算機システムで使用されるデータの重要性が増し、地震や火災といった災害が発生した場合に備えて、複数のサイトに配置された複数ストレージ装置間でデータを多重化して保持するストレージ運用が知られている。複数ストレージ装置間でデータを多重化する方法として、ホスト計算機が複数のボリュームに同一データを書込む多重出力方式や、ストレージ装置間でデータを多重化するリモートコピー方式がある。【０００３】
リモートコピー方式は、異なるホスト計算機が、異なるサイトに配置されたストレージ装置にそれぞれ接続する。通常は、主サイトのホスト計算機が主サイトのストレージ装置にアクセスして業務を行い、主サイトのストレージ装置が副サイトのストレージ装置に更新データを転送し、副サイトのホスト計算機は副サイトのストレージに出力することはない。この形態を、アクティブ―スタンバイ構成と呼ぶ。主サイトの災害発生時には、ホスト計算機の業務を副サイトへ交替することで、副サイトのストレージ装置にアクセスして業務を継続する。【０００４】
ホスト計算機とストレージ装置の接続形態としては、複数ホスト計算機から１ストレージ装置の同一ボリュームを共有する形態と、１ホスト計算機から複数ストレージ装置にアクセスする形態がとれる。【０００５】
複数ホスト計算機から１ストレージ装置の同一ボリュームを共有する形態では、ホスト計算機同士がクラスタリング技術を用いる場合と、ストレージ装置内のアクセス排他技術を用いる場合がある。ホスト計算機のクラスタリング技術を用いる場合、１台のホスト計算機が故障すると、残るホスト計算機のいずれかが業務を引き継ぐ。ここでボリュームアクセスの競合はホスト計算機間で排他するのが一般的である。【０００６】
一方、ストレージ装置内のアクセス排他技術を用いる場合、ボリューム単位に使用可能なホスト計算機を予約する方法と、複数のホスト計算機から同一ボリュームの異なるアクセス範囲を同時に使用する方法とがある。【０００７】
例えば、特許文献１では、ホスト計算機からの入出力要求の範囲（エクステント範囲）を記憶し、ストレージ制御装置がエクステント単位で排他制御する技術が開示されている。ホスト計算機がメインフレームの場合、チャネルコマンドを連ねたコマンドチェインの先頭コマンドのパラメタにエクステント範囲が指定される。これにより、複数のホスト計算機間でボリュームアクセス範囲の排他制御を行わなくても、ストレージ制御装置が先頭コマンドのエクステント範囲に従ってボリュームの排他共用を実現できる。【０００８】
また最近は、データ容量の増大により、１サイト内のストレージ装置数が増加している。ストレージシステムが大規模化した場合には管理が複雑化するため、特許文献２では、複数のストレージ装置に同一のストレージ装置識別子を付与するストレージ仮想化機能が開示されている。ストレージ仮想化機能により、管理対象のストレージ装置識別数を削減することが可能になる。【０００９】
また、特許文献３には、複数ストレージ装置内のボリュームに同一識別子を付与し、ホスト計算機からそれら複数ストレージのいずれにアクセスしても、同一のアクセス結果を得ることが可能な、アクティブ―アクティブ構成が開示されている。特許文献３では、ホスト計算機は１台であり、ホスト計算機は入出力処理の完了を待ってから次の入出力要求を発行することになっている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許出願公開第２００５／００５０２７４号明細書
【特許文献２】米国特許出願公開第２００８／００３４００５号明細書
【特許文献３】米国特許出願公開第２０１１／０２０２７１８号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記した特許文献１〜３において、複数ホスト計算機の異なる業務からボリュームを共有する際には、単独のストレージ装置内のボリュームをストレージ制御装置がエクステント排他するか、ボリュームにアクセスするホスト計算機を、クラスタを組んだホスト計算機側で決定していた。しかし、複数ホスト計算機から、複数ストレージ装置の間で同一識別子を有する複数ボリュームをエクステント排他共有する方法については、何ら考慮されていなかった。【００１２】
例えば、上記したように、ストレージ仮想化機能により、複数ストレージ装置に同一識別子を付与し、複数ストレージ間で同一の識別子を付与したボリュームを保持することができるが、ホスト計算機からコマンドチェインを受取ったストレージ装置内のボリュームでしかエクステント排他を制御できない。これにより、アクティブ―アクティブの構成において、複数のストレージが同一識別子を付与されたボリュームに対する異なるコマンドチェインを同時に受付けると、それぞれのストレージ装置内で同一識別子のボリュームの同一エクステント範囲にアクセスし、同一識別子のボリュームにもかかわらず、ストレージ装置間で保持するデータが同一にならないという問題があった。【００１３】
本発明は、以上の点を考慮してなされたもので、複数ホスト計算機から同一識別子を付与された複数のストレージ装置のいずれにアクセスしても、それらストレージ間で同一識別子を付与された複数ボリュームを、エクステント排他共有することが可能なストレージ装置および該ストレージ装置におけるデータ管理方法を提案するものである。
【課題を解決するための手段】
【００１４】
かかる課題を解決するために、本発明においては、データの入出力要求をするチャネルコマンドを送信する複数のメインフレーム用ホスト計算機とネットワークを介して接続される複数のストレージ装置であって、ホスト計算機に提供されるボリューム識別情報として複数のストレージ装置間で同一識別情報を付与した多重ボリュームを設け、複数のストレージ装置は、少なくとも、高可用構成における正系として多重ボリュームに対してチャネルコマンドによる入出力要求を処理する正ストレージ装置および副系となる副ストレージ装置と、各々に制御部と、を備え、正ストレージ装置の制御部は、ホスト計算機からまたは副ストレージ装置の制御部を経由して受信するチャネルコマンドが多重ボリュームに対する入出力要求である場合に、このチャネルコマンドが指定する多重ボリュームのエクステント範囲に対するアクセス権限を判断し、このアクセス権限が許容されている場合には入出力要求による入出力処理を実行するように構成したストレージ装置を提供するもので、正ストレージ装置の制御部は、アクセス権限をエクステント範囲に対する入出力処理がすでに別で実行中かどうかの情報に基づいて判断することを特徴とする。
かかる構成によれば、複数のホスト計算機が、複数のストレージ装置に配置した同一の識別情報を有する多重ボリュームの異なるエクステント範囲に、同時にアクセスすることができる。
【発明の効果】
【００１５】
本発明によれば、複数のホスト計算機から接続した複数のストレージ間で同一識別子を有するボリューム群に同時にアクセスすることにより、高可用（ＨＡ）システム全体のスループットを向上することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明に係る計算機システムの全体構成を示すブロック図である。
【図２】ストレージ装置の概略構成を示すブロック図である。
【図３】ホスト計算機の概略構成を示すブロック図である。
【図４】ストレージ装置の主メモリに格納される各種テーブルおよびプログラムを示すブロック図である。
【図５】コマンドチェイン例を示す図である。
【図６】エクステント排他制御テーブルの構成例を示す図である。
【図７】装置ＩＤ管理テーブルの構成例を示す図である。
【図８】論理ボリューム管理テーブルの構成例を示す図である。
【図９】仮想ストレージ配置管理テーブルの構成例を示す図である。
【図１０】制御情報管理テーブルの構成例を示す図である。
【図１１】チャネルコマンド転送処理の第１の処理手順を示すフローチャートである。
【図１２】ボリューム多重化処理の処理手順を示すフローチャートである。
【図１３】Write系コマンド処理の処理手順を示すフローチャートである。
【図１４】Read系コマンド処理の処理手順を示すフローチャートである。
【図１５】制御情報多重化処理の処理手順を示すフローチャートである。
【図１６】チャネルコマンド転送処理の第２の処理手順を示すフローチャートである。
【図１７】エクステント排他処理の処理手順を示すフローチャートである。
【図１８】論理ボリュームエクステント排他制御テーブルの構成例を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら、本発明の実施形態として実施例１〜実施例３について順に説明する。
【実施例１】
【００１８】
実施例１のストレージシステムは、複数のストレージ装置の論理ボリューム（以下、テーブル等において「論理ＶＯＬ」と記すことがある）に同一の識別子を付与し、同一識別子の論理ボリュームから１つの仮想ボリューム（以下、テーブル等において「仮想ＶＯＬ」と記すことがある）を構成する。そして、複数のホスト計算機からその仮想ボリュームをエクステント排他して同時に使用する。【００１９】
図１は、本発明に係る計算機システムの全体構成を示すブロック図である。計算機システム１は、複数のストレージ装置１００と、複数のホスト計算機２００（メインフレームやサーバなど）と、を有している。なお、ストレージ装置１００を、ストレージシステム、あるいはストレージサブシステムと言うこともできる。【００２０】
ストレージ装置１００とホスト計算機２００は、ネットワーク１０２を介して接続されている。ネットワーク１０２は、データネットワークであって、ホスト計算機２００がメインフレームの場合には、チャネルコマンドや転送データが通信される。ネットワーク１０４は、ストレージ装置１００相互間のデータネットワークである。【００２１】
また、図１には、エクステント排他共有を組む仮想ストレージ装置の概念図を示している。ストレージ装置１００には、１つ以上の論理コントロールユニット（以下、「論理ＣＵ」という）３５０があり、この論理ＣＵ３５０は、複数の論理ボリューム３６０を有するもので、ストレージ装置１００の容量を分割した単位である。【００２２】
ホスト計算機２００は、入出力装置の構成定義情報３１０を用いてストレージ装置１００にアクセスする。ここで、構成定義情報３１０には、ストレージ装置１００への接続形態と、論理ＣＵ３５０および論理ボリューム３６０を階層化した情報が定義されている。また、実施例１のホスト計算機２００は、ホスト計算機の入出力処理を専用に実行するためのチャネル３４０を有する。チャネル３４０は、構成定義情報３１０に関連付けされたサブチャネル情報３２０を保持し、ホスト計算機２００がアクセスする論理ボリューム３６０を特定する。また、ストレージ装置１００を制御するためのチャネルコマンド群３３０を有する。【００２３】
仮想ストレージ装置３７０は、複数のストレージ装置１００の資源を、ホスト計算機２００に同一装置に見せるための論理的な装置である。仮想ストレージ装置３７０内には１つ以上の仮想コントロールユニット（以下、「仮想ＣＵ」という）３８０があり、仮想ＣＵ３８０内には１つ以上の仮想ボリューム３９０を階層的に構成する。ホスト計算機２００が仮想ボリューム３９０にアクセスするには、構成定義情報３１０とサブチャネル３２０において、仮想ストレージ装置３７０への接続形態と、仮想ＣＵ３８０および仮想ボリューム３９０を階層化した情報が定義される。また、チャネルコマンド３３０群の先頭コマンドは、仮想ボリューム３９０のアクセス対象となるエクステント範囲を排他する情報を保持する。【００２４】
仮想ボリューム３９０は、データを格納する実体として、複数のストレージ装置１００が有する論理ボリューム３６０を割当てる。なお、仮想ストレージ３７０に対応する論理ボリューム３６０の識別情報は、ストレージ装置１００間で同一である必要はない。【００２５】
図２は、ストレージ装置１００の概略構成を示したブロック図である。ストレージ装置１００は、少なくとも１つのコントローラ１１０と、少なくとも１つの記憶装置１２０と、を有している。記憶装置１２０は、通信路１３０を介してコントローラ１１０に接続される。なお、複数の記憶装置１２０を用いて、少なくとも１つのパリティグループを構成することができる。【００２６】
コントローラ１１０は、プロセッサ１１１、主メモリ１１２およびキャッシュメモリ１１３を備えて構成され、ホストインタフェース（以下、インタフェースを「Ｉ／Ｆ」と略す）１１４を介してデータネットワーク１０２または１０４に接続され、ディスクＩ／Ｆ１１５を介して通信路１３０に接続されている。【００２７】
コントローラ１１０は、ホスト計算機２００から受信したコマンドに従って、記憶装置１２０に対するデータの入出力処理を制御する。ここで、キャッシュメモリ１１３をバッファとして用いることにより、記憶装置１２０を読み書きするよりも短時間で入出力処理が完了するように制御する。【００２８】
プロセッサ１１１は、ストレージ装置１００全体の動作を制御する。主メモリ１１２に格納されたマイクロプログラムをプロセッサ１１１が実行することにより、ストレージ装置１００全体として各種処理が行われる。【００２９】
記憶装置１２０は、例えば、高価で高性能なＳＳＤ（Solid  State  Drive）などの半導体メモリ、ＦＣ（Fibre  Channel）ディスクやＳＡＳ（Serial  Attached  SCSI）ディスクなどのディスク装置、および、ＳＡＴＡ(Serial  AT  Attachment）ディスクなどの安価で低性能なディスク装置、などから構成される。【００３０】
図３は、ホスト計算機２００の概略構成を示したブロック図である。ホスト計算機２００は、プロセッサ２１０、メモリ２２０、入力装置２３０および出力装置２４０を備えていて、入出力Ｉ／Ｆ２５０を介してネットワーク１０２に接続されている。入力装置２３０は、例えばキーボードやポインティングデバイスであり、出力装置２４０は、例えばディスプレイやプリンタである。【００３１】
ホスト計算機２００は、各種のアプリケーションを実行し、データの入出力（Ｉ／Ｏ）処理が必要になると、入出力命令を実行して入出力コマンド処理をストレージ装置１００に要求し、ストレージ装置１００から入出力コマンド処理の応答データを受け取る。【００３２】
図４は、主メモリ１１２内に格納される各種管理テーブルとマイクロプログラム４００を示すブロック図である。主メモリ１１２に格納されている管理テーブルには、コマンドチェイン４１０、エクステント排他制御テーブル４２０、論理ボリュームエクステント排他制御テーブル４２５、装置ＩＤ管理テーブル４３０、仮想ボリューム管理テーブル４４０、仮想ストレージ配置管理テーブル４５０および制御情報管理テーブル４６０がある。また、マイクロプログラム４００として、チャネルコマンド転送プログラム４７０、ボリューム多重化プログラム４８０、制御情報多重化プログラム４９０およびエクステント排他処理プログラム４９５が格納されている。【００３３】
図５は、コマンドチェイン４１０の例を示した図である。チャネル３４０とコントローラ１１０の間で転送される命令やデータ群の例として、チャネルがデータの書き出し（Write）と読み出し（Read）を要求するコマンドチェインを示している。コマンドチェイン４１０は複数コマンドを連結し、その各コマンドはコマンド種フィールド５１０とパラメタ部５２０から構成される。【００３４】
コマンド種Define  Extentは、後続コマンドの入出力処理の範囲およびキャッシュアクセスモード等の指示を行う。コマンド種Locateは、目的レコードへのシークおよびサーチ動作を行う。コマンド種Writeは、当該データの書き出しを行う。書き出すデータは、パラメタ部５２０が示すホスト計算機２００上のデータ領域から転送される。コマンド種Readは、続くデータの読み込みを行う。読み込んだデータは、パラメタ部５２０が示すホスト計算機２００上のデータ領域（データバッファ）に転送する。【００３５】
Define  Extentコマンドで指示されるエクステント情報は、一般に後続のチャネルコマンドによるＩ／Ｏ要求がパラメタ部５２０に示されるエクステント範囲外である場合に、そのＩ／Ｏ要求の実行を拒否する目的で使用されている。本発明では、パラメタ部５２０に示されるエクステント範囲は、後述する仮想ボリューム３９０の排他制御のために、エクステント排他制御テーブル４２０に格納され、また、ストレージ装置１００がＩ／Ｏ処理中の範囲情報として、論理ボリュームエクステント排他制御テーブル４２５に格納される。【００３６】
図６は、エクステント排他制御テーブル４２０の構成例を示す図である。エクステント排他制御テーブル４２０は、仮想ボリューム３９０のエクステント範囲を処理するストレージ装置１００を管理するテーブルである。エクステント排他制御テーブル４２０は、各エントリが、仮想ストレージ装置フィールド６１０、仮想ＶＯＬフィールド６２０、エクステント範囲フィールド６３０および処理ストレージ装置フィールド６４０から構成される。【００３７】
仮想ストレージ装置フィールド６１０には、仮想ストレージ装置３７０の識別情報が格納され、仮想ＶＯＬフィールド６２０には、仮想ボリューム３９０の識別情報が格納される。仮想ボリューム３９０の識別情報には、仮想ＣＵ３８０の識別情報が含まれる場合がある。そして、エクステント範囲フィールド６３０には、ストレージ装置１００が処理中のエクステント範囲情報が格納される。エクステント範囲情報は、例えば、先頭シリンダ番号およびトラック番号と最終シリンダ番号およびトラック番号からなる。処理ストレージ装置フィールド６４０には、エクステント範囲フィールド６３０が示すエクステント範囲に対応する論理ボリューム３６０内の範囲を、主として処理するストレージ装置１００の識別情報が格納される。【００３８】
図７は、装置ＩＤ管理テーブル４３０の構成例を示す図である。装置ＩＤ管理テーブル４３０は、仮想ボリューム３９０とそのデータを保持するストレージ装置１００内の論理ボリューム３６０を対応付けるためのテーブルである。装置ＩＤ管理テーブル４３０は、各エントリが、仮想ストレージ装置フィールド７１０、仮想ＣＵフィールド７２０、仮想ＶＯＬフィールド７３０、論理ＣＵフィールド７４０および論理ＶＯＬフィールド７５０から構成される。【００３９】
仮想ストレージ装置フィールド７１０には、仮想ストレージ装置３７０の識別情報が格納され、仮想ＣＵフィールド７２０には、仮想ＣＵ３８０の識別情報が格納され、仮想ＶＯＬフィールド７３０には、仮想ボリューム３９０の識別情報が格納される。そして、論理ＣＵフィールド７４０には、仮想ＣＵ３８０を割り当てるストレージ装置１００の論理ＣＵ３５０の識別情報が格納され、論理ＶＯＬフィールド７５０には、仮想ボリューム３９０のデータを格納する論理ボリューム３６０の識別情報が格納される。【００４０】
図８は、論理ボリューム管理テーブル４４０の構成例を示す図である。論理ボリューム管理テーブル４４０は、論理ボリューム３６０の仮想化対応状態を管理するためのテーブルである。論理ボリューム管理テーブル４４０は、各エントリが、論理ＣＵフィールド８１０、論理ＶＯＬフィールド８２０、仮想ＶＯＬ属性フィールド８３０、正副フィールド８４０および正ストレージ装置フィールド８５０から構成される。【００４１】
論理ＣＵフィールド８１０には、本テーブル４４０を保持するストレージ装置１００の論理ＣＵ３５０の識別情報が格納され、論理ＶＯＬフィールド８２０には、論理ＣＵフィールド８１０が示す論理ＣＵ３５０内の論理ボリューム３６０の識別情報が格納される。仮想ＶＯＬ属性フィールド８３０には、論理ＶＯＬフィールド８２０が示す論理ボリューム３６０に対応する仮想ボリューム３９０の属性が格納される。その属性の種類には、複数ストレージ装置１００で多重化していることを示す高可用属性（HA）、ボリューム移行中を示す移行先属性（Migrate  to）または移行元属性（Migrate  from）、異なるストレージ装置１００は仮想ボリューム３９０に対応付けられた論理ボリューム３６０が存在しないことを示す単独属性（Simplex）、がある。正副フィールド８４０には、当該論理ボリュームの正副の識別情報として、ボリューム移行時の移行元を示す正（Primary）か移行先を示す副（Secondary）が格納され、正ストレージ装置フィールド８５０には、高可用属性（HA）時またはボリューム移行に係る属性（Migrate  to／Migrate  from）の場合に当該論理ボリュームに対する正ストレージ装置の識別情報が格納される。【００４２】
図９は、仮想ストレージ配置管理テーブル４５０の構成例を示す図である。仮想ストレージ配置管理テーブル４５０は、仮想ストレージ装置３７０内の仮想ボリューム３９０に対応付けられた論理ボリュームが存在するストレージ装置１００を管理するためのテーブルである。仮想ストレージ配置管理テーブル４５０は、各エントリが、仮想ストレージ装置フィールド９１０、仮想ＣＵフィールド９２０、仮想ＶＯＬフィールド９２５、ストレージ装置数フィールド９３０およびストレージ装置フィールド９４０から構成される。【００４３】
仮想ストレージ装置フィールド９１０には、仮想ストレージ装置３７０の識別情報が格納され、仮想ＣＵフィールド９２０には、仮想ＣＵ３８０の識別情報が格納される。ここでは、仮想ＣＵ内の仮想ボリュームを一括でストレージ装置１００に配置する。仮想ＶＯＬフィールド９２５には、仮想ボリューム３９０の識別情報が格納される。ストレージ装置数フィールド９３０には、仮想ＣＵ３８０を割り当てる配置先のストレージ装置１００がいくつあるかを示す情報が格納される。そして、ストレージ装置フィールド９４０には、配置先のストレージ装置１００の識別情報が格納される。【００４４】
図１０は、制御情報管理テーブル４６０の構成例を示す図である。制御情報管理テーブル４６０は、ストレージ装置１００が保持している制御情報と同等の制御情報を、仮想ストレージ装置３７０用に保持するためのテーブルである。制御情報管理テーブル４６０は、各エントリが、仮想ストレージ装置フィールド１０１０、仮想ＣＵフィールド１０２０および制御情報フィールド１０３０から構成される。【００４５】
仮想ストレージ装置フィールド１０１０には、仮想ストレージ装置３７０の識別情報が格納され、仮想ＣＵフィールド１０２０には、仮想ＣＵ３８０の識別情報が格納される。ここでは、仮想ＣＵ単位に制御情報を管理する。そして、制御情報フィールド１０３０には、キャッシュ使用情報、稼動情報および論理パスマップ情報が格納される。キャッシュ使用情報は、ＣＦＷ（キャッシュ高速書き込み）ＩＤ情報等のキャッシュ制御情報である。稼動情報は、Ｉ／Ｏ処理実行回数等の統計情報である。論理パスマップ情報は、ホスト計算機２００とストレージ装置１００間の経路を制御する情報である。その他、Ｉ／Ｏ処理実行を保留していることを示す情報がある。仮想ストレージ装置３７０の制御情報は、制御情報フィールド１０３０の情報を用いて、必要に応じてホスト計算機２００に送出する。【００４６】
図１８は、論理ボリュームエクステント排他制御テーブル４２５の構成例を示す図である。論理ボリュームエクステント排他制御テーブル４２５は、論理ボリューム３６０のエクステント範囲を処理するストレージ装置１００を管理するテーブルである。論理ボリュームエクステント排他制御テーブル４２５は、各エントリが、論理ＣＵフィールド１８１０、論理ＶＯＬフィールド１８２０、エクステント範囲フィールド１８３０およびロック状態フィールド１８４０から構成される。【００４７】
論理ＣＵフィールド１８１０には、論理ＣＵ３５０の識別情報が格納され、論理ＶＯＬフィールド１８２０には、論理ボリューム３６０の識別情報が格納される。エクステント範囲フィールド１８３０には、ストレージ装置１００がＩ／Ｏ処理中のエクステント範囲情報が格納される。ロック状態フィールド１８４０には、エクステント範囲フィールド１８３０が示すエクステント範囲を、既に別のＩ／Ｏ処理でアクセス中（ロック中）か否かの情報が格納され、その格納のタイミングは、コマンドチェインの先頭コマンド処理時に「ロック中」情報が格納され、上記コマンドチェインの処理が終了した時に「ロック解除」情報がコントローラ１１０によって登録される。【００４８】
次に、実施例１におけるチャネルコマンド転送プログラム４７０による各種処理の処理手順について説明する。
図１１は、チャネルコマンド転送処理の第１の処理手順を示すフローチャートである。チャネルコマンド転送処理では、仮想ボリューム３９０のエクステントaを排他的に使用するために、一連のチャネルコマンドからなるコマンドチェインを、仮想ボリューム３９０を制御する正ストレージ装置に転送し、正ストレージ装置でＩ／Ｏ処理を実行しながら、副ストレージ装置とその実行結果を一致させる。【００４９】
まず、チャネルコマンド転送プログラム４７０は、ホスト計算機２００からのＩ／Ｏ要求を受け付けて、チャネルコマンドを受信する（Ｓ１１１０）。ここで、チャネルコマンド転送プログラム４７０は、該受信した情報から対象となるボリューム情報を取得する。対象ボリュームが仮想ボリュームか否かを、装置ＩＤ管理テーブル４３０を用いて判断する（Ｓ１１２０）。すなわち、対象ボリュームのストレージ装置識別情報およびＣＵ識別情報が、それぞれ仮想ストレージ装置フィールド７１０および仮想ＣＵフィールド７２０に一致するエントリがあれば、対象ボリュームは仮想ボリュームであると判断できる。【００５０】
ステップＳ１１２０で、対象ボリュームが仮想ボリュームではない（Ｎｏ）と判断すると、通常ボリュームのチャネルコマンド処理を実行する（Ｓ１１２５）。
一方、ステップＳ１１２０で、対象ボリュームが仮想ボリュームである（Ｙｅｓ）と判断すると、仮想ボリュームに対応した論理ボリューム識別情報を取得する（Ｓ１１３０）。これには、装置ＩＤ管理テーブル４３０を用いる。すなわち、対象仮想ボリュームの識別子に相当する識別情報を有する仮想ストレージ装置フィールド７１０と仮想ＣＵフィールド７２０と仮想ＶＯＬフィールド７３０に一致するエントリから、論理ＣＵフィールド７４０と論理ＶＯＬフィールド７５０に格納された論理ボリューム識別情報を取得する。【００５１】
続いて、複数ストレージ装置が、対応する論理ボリュームを保持している多重ボリューム対象かどうかを判断する（Ｓ１１４０）。これには、仮想ストレージ配置管理テーブル４５０を用い、対象ボリュームのストレージ装置識別情報およびＣＵ識別情報がそれぞれ仮想ストレージ装置フィールド９１０および仮想ＣＵフィールド９２０に一致するエントリから、ストレージ装置フィールド９４０に複数のストレージ装置情報が格納されていたら、多重ボリュームが対象であると判断できる。【００５２】
ステップＳ１１４０で、対象ボリュームが多重ボリューム対象ではない（Ｎｏ）と判断すると、その論理ボリュームを対象に通常のチャネルコマンド処理を実行する（Ｓ１１４５）。続いて、その実行結果のボリューム情報を論理ボリュームから仮想ボリュームの情報に変換してコマンド要求元に返答する（Ｓ１１４７）。【００５３】
一方、ステップＳ１１４０で、対象ボリュームが多重ボリューム対象である（Ｙｅｓ）と判断すると、仮想ボリュームを制御する正ストレージ装置情報を取得する（Ｓ１１５０）。これには、論理ボリューム管理テーブル４４０を用いる。すなわち、論理ボリューム識別情報を有する論理ＣＵフィールド８１０と論理ＶＯＬフィールド８２０に一致するエントリから、正ストレージ装置フィールド８５０に格納された正ストレージ装置情報を取得する。【００５４】
次に、ステップＳ１１５０で取得した正ストレージ装置情報が、別のストレージ装置を示しているかどうかを判断する（Ｓ１１６０）。ステップＳ１１６０で、正ストレージ装置情報が別のストレージ装置でないこと（すなわち、自ストレージ装置であること）を示している（Ｎｏ）と判断すると、ボリューム多重化処理Ｓ１１６５を実行する。ステップＳ１１６５の処理については、図１２で詳細に説明する。【００５５】
一方、ステップＳ１１６０で、正ストレージ装置情報が別のストレージ装置を示している（Ｙｅｓ）と判断すると、チャネルコマンドをそのストレージ装置に転送する（Ｓ１１７０）。続いて、そのストレージ装置からチャネルコマンドの実行結果を取得する（Ｓ１１７５）。【００５６】
ステップＳ１１８０で、そのチャネルコマンドの実行結果が正常であり、かつ、そのチャネルコマンドがコマンドチェインで連続してコマンドを受信している（Ｙｅｓ）と判断すると、ステップＳ１１７０から処理を繰り返す。【００５７】
一方、ステップＳ１１８０で、チャネルコマンドの実行結果が正常終了ではないか、あるいは、コマンドチェインが終了している（Ｎｏ）と判断すると、要求元にＩ／Ｏ処理実行結果を返答する（Ｓ１１９０）。ここでも、ステップＳ１１４７と同様に、ボリューム識別情報が返答する内容に含まれる場合には、仮想ボリューム識別情報に変換する。
以上により、一連のチャネルコマンドからなるコマンドチェインを、仮想ボリューム３９０を制御する正ストレージ装置に転送することができる。【００５８】
次に、ステップＳ１１６５のボリューム多重化処理について説明する。
図１２は、ボリューム多重化処理の処理手順を示すフローチャートである。ボリューム多重化処理は、ボリューム多重化プログラム４８０が、複数ストレージ装置に対して、同一データを有する同一識別情報のボリュームを多重に配置させる処理である。【００５９】
まず、先頭のチャネルコマンドに含まれるエクステント排他指示を処理する（Ｓ１２１０）。ここでは、通常のエクステント排他処理により、指定のエクステント範囲に対して、他のＩ／Ｏ要求でアクセスされないように制御する。具体的には、論理ボリュームエクステント排他制御テーブル４２５のロック状態フィールド１８４０に、「ロック中」情報を格納する。【００６０】
次に、チャネルコマンドがWrite系のコマンドかどうか判断する（Ｓ１２２０）。ステップＳ１２２０でチャネルコマンドがWrite系のコマンドである（Ｙｅｓ）と判断すると、Write系コマンド処理を実行する（Ｓ１２２５）。ステップＳ１２２５の処理は、図１３で詳細に説明する。【００６１】
ステップＳ１２２０でWrite系コマンドではない（Ｎｏ）と判断すると、次に、チャネルコマンドがRead系のコマンドかどうか判断する（Ｓ１２３０）。ステップＳ１２３０でチャネルコマンドがRead系のコマンドである（Ｙｅｓ）と判断すると、Read系コマンド処理を実行する（Ｓ１２３５）。ステップＳ１２３５の処理は、図１４で詳細に説明する。【００６２】
ステップＳ１２３０でRead系コマンドではない（Ｎｏ）と判断すると、通常のコマンド処理を実行する（Ｓ１２４０）。
こうして、コマンドに対する処理を実行後、コマンドチェインで後続のコマンドがあるかどうか判定する（Ｓ１２５０）。ここで、後続コマンドがある（Ｙｅｓ）と判断すると、ステップＳ１２２０から処理を繰り返し、後続コマンドがない（Ｎｏ）と判断すると、処理を終了する。【００６３】
次に、ステップＳ１２２５のWrite系コマンド処理について説明する。
図１３は、Write系コマンド処理の処理手順を示すフローチャートである。まず、Write系コマンドの書込み範囲がエクステント排他違反をしていないか判断する（Ｓ１３１０）。この判断は、仮想ボリュームに対するエクステント範囲へのアクセス権が、すでに別のＩ／Ｏ処理に与えられていないかどうかを、論理ボリュームエクステント排他制御テーブル４２５を用いてチェックする。【００６４】
ステップＳ１３１０で、当該Writeコマンドでアクセスするエクステント範囲に対して、論理ボリュームエクステント排他制御テーブル４２５のロック状態フィールド１８４０が「ロック中」のとき、別のＩ／Ｏ処理にアクセス権が与えられている（Ｙｅｓ）と判断し、エクステント排他エラー処理を実行する（Ｓ１３２０）。【００６５】
一方、本Ｉ／Ｏ処理にアクセス権がある（Ｎｏ）と判断すると、仮想ボリュームの実体となる論理ボリュームの書込み箇所にディスク装置を位置付ける（Ｓ１３３０）。続いて、Writeコマンドで指定されたデータをディスク装置に書込む（Ｓ１３４０）。ただし、ステップＳ１３３０とステップＳ１３４０は、ディスク装置ではなくキャッシュメモリを対象とし、ディスク装置への書込みは非同期に行ってもよい。【００６６】
次に、仮想ボリュームの実体を保持している多重ボリューム配置のストレージ装置の情報を取得する（Ｓ１３５０）。このとき、仮想ストレージ配置管理テーブル４５０を参照する。
続いて、ステップＳ１３４０で書込んだデータを含む更新スロットのデータを、ステップＳ１３５０で取得したストレージ装置に転送する（Ｓ１３６０）。【００６７】
次に、データ未転送の多重ボリューム配置のストレージ装置が他にもあるかどうか判断する（Ｓ１３７０）。データ未転送の多重ボリューム配置のストレージ装置が他にある（Ｙｅｓ）と判断すると、ステップＳ１３５０から処理を繰り返す。一方、多重ボリューム配置のストレージ装置のすべてにデータ転送を実行した（Ｎｏ）と判断すると、Write系コマンドの完了処理を実行する（Ｓ１３８０）。ステップＳ１３８０は、たとえばコマンド実行結果コードをセットする等の処理である。【００６８】
次に、ステップＳ１２３５のRead系コマンド処理について説明する。
図１４は、Read系コマンド処理の処理手順を示すフローチャートである。まず、Read系コマンドの読込み範囲がエクステント排他違反をしていないか判断する（Ｓ１４１０）。この判断は、先のWrite系コマンド処理と同様に、仮想ボリュームに対するエクステント範囲へのアクセス権が、すでに別のＩ／Ｏ処理に与えられていないかどうかをチェックする。ステップＳ１４１０で、別のＩ／Ｏ処理に与えられている（Ｙｅｓ）と判断すると、エクステント排他エラー処理を実行する（Ｓ１４２０）。【００６９】
一方、本Ｉ／Ｏ処理にアクセス権がある（Ｎｏ）と判断すると、ディスク装置またはキャッシュメモリから、Read系コマンドに指示されたデータを読み出す（Ｓ１４３０）。続いて、ステップＳ１４３０で読み出したデータを、Read系コマンドの転送元ストレージ装置に送信する（Ｓ１４４０）。【００７０】
次に、Read系コマンドが連続してデータ読み出しを指示していれば（Ｙｅｓ）、ステップＳ１４３０から処理を繰り返す（Ｓ１４５０）。一方、連続してデータ読み出しを指示していなければ（Ｎｏ）、Read系コマンドの完了処理を実行する（Ｓ１４６０）。ステップＳ１４６０は、たとえばコマンド実行結果コードをセットする等の処理である。【００７１】
以上のように、実施例１によれば、複数のストレージ装置の論理ボリュームに同一の識別情報を付与し、同一識別情報の論理ボリュームから１つの仮想ボリュームを構成する。そして、複数のホスト計算機から仮想ボリュームをエクステント排他して同時に使用することができる。
【実施例２】
【００７２】
論理ボリューム管理テーブル４４０の仮想ＶＯＬ属性フィールド８３０の属性値がボリューム移行（Migrate  to／Migrate  from）の場合には、移行前のストレージ装置の制御情報を移行先に引き継がなければならない。そこで、仮想ボリュームの実体を有するストレージ装置間で制御情報を一致させる処理について、実施例２として以下に説明する。【００７３】
図１５は、制御情報多重化処理の処理手順を示すフローチャートである。ボリューム移行が発動されると、移行対象のボリューム内のデータを移行先にコピーする（Ｓ１５００）。実施例２では、移行先ストレージ装置から移行元ボリュームのデータを読み込み、移行先ボリュームに格納する。制御情報には仮想ＣＵ毎に保持する情報がある。そこで、移行先の仮想ＣＵ内のボリュームコピーが完了したかどうかを判断して（Ｓ１５０５）、完了した場合（Ｙｅｓ）には、制御情報多重化処理を発動する。【００７４】
次に、引き継ぐべき仮想ＣＵを有する移行元ストレージ装置の情報を取得する（Ｓ１５１０）。ここでは、論理ボリューム管理テーブル４４０の正ストレージ装置フィールド８５０の値を用いる。なお、コントローラは、この正ストレージ装置フィールド８５０の値をボリュームの移行処理が完了すると削除し、同時に、仮想ＶＯＬ属性フィールド８３０の情報を「Simplex」に変更する。【００７５】
続いて、移行元ストレージ装置に制御情報取得要求を送信する（Ｓ１５２０）。移行元ストレージ装置は、移行対象の制御情報取得要求を受信すると（Ｓ１５５０）、その移行対象に関する制御情報を用意する（Ｓ１５６０）。これは、移行元ストレージ装置のコントローラが要求された移行対象に関する制御情報を制御情報管理テーブル４６０から取り出すことによる。実施例２では、仮想ＣＵの識別情報から特定できる制御情報が、制御情報管理テーブル４６０の制御情報フィールド１０３０に格納されているものとする。【００７６】
次に、移行元ストレージ装置は所定の制御情報を返信し（Ｓ１５７０）、それを要求元のストレージ装置が受信する（Ｓ１５３０）。そして、受信した制御情報を、要求元ストレージ装置の制御情報管理テーブル４６０内に格納する（Ｓ１５４０）。
こうして、実施例２によれば、仮想ボリュームに関連する制御情報を、仮想ボリュームを制御する複数のストレージ装置間で一致させることができる。
【実施例３】
【００７７】
実施例３のストレージシステムは、実施例１の仮想ボリュームを構成し、複数のホスト計算機から仮想ボリュームをエクステント排他して同時に使用する際、エクステント排他指定を含む先頭チャネルコマンドのみをストレージ装置間で交換し、その他のチャネルコマンドは、ホスト計算機からＩ／Ｏ要求を受取ったストレージ装置内で実行する。【００７８】
図１６は、チャネルコマンド転送処理の第２の処理手順を示すフローチャートである。チャネルコマンド転送処理の第２の処理手順は、チャネルコマンド転送プログラム４７０による処理であり、ステップＳ１１１０からステップＳ１１６０については、実施例１における図１１に示したステップＳ１１１０からステップＳ１１６０の処理と同等である。よって、以下ではステップＳ１１６０から説明を始める。【００７９】
ステップＳ１１６０で、仮想ボリュームを制御する正ストレージ装置が別ストレージ装置ではない（すなわち、自ストレージ装置である）と判断する（Ｎｏ）と、エクステント排他登録を実施する（Ｓ１６１０）。ここでは、エクステント排他制御テーブル４２０の該当仮想ボリュームのエントリにおいて、エクステント範囲フィールド６３０にエクステント範囲を登録し、処理ストレージ装置フィールド６４０に自ストレージ装置の識別情報を登録する。【００８０】
次に、通常のチャネルコマンド処理を実施し（Ｓ１６２０）、続いて、エクステント排他解除を実施する（Ｓ１６３０）。ここでは、エクステント排他制御テーブル４２０の該当仮想ボリュームのエントリにおいて、エクステント範囲フィールド６３０からエクステント範囲を削除し、処理ストレージ装置フィールド６４０から自ストレージ装置の識別情報を削除する。【００８１】
一方、ステップ１１６０で、仮想ボリュームを制御する正ストレージ装置が別ストレージ装置である（Ｙｅｓ）と判断すると、エクステント排他依頼をその正ストレージ装置に通知する（Ｓ１６４０）。エクステント排他依頼を受取った正ストレージ装置によるエクステント排他処理については、図１７を用いて後述する。【００８２】
次に、正ストレージ装置からエクステント排他依頼の結果を受取り、エクステント排他に成功したかどうかを判断する（Ｓ１６５０）。ステップＳ１６５０で、エクステント排他を別のＩ／Ｏ要求が先に指定してきた等により、エクステント排他に失敗した（Ｎｏ）と判断すると、エラー終了する（Ｓ１６６５）。【００８３】
一方、ステップＳ１６５０で、エクステント排他に成功した（Ｙｅｓ）と判断すると、通常チャネルコマンド処理を実行する（Ｓ１６６０）。そして、その一連のチャネルコマンド処理が終了したら、エクステント排他解除を正ストレージ装置に通知する（Ｓ１６７０）。【００８４】
図１７は、エクステント排他処理プログラム４９５によるエクステント排他処理の処理手順を示すフローチャートである。図１６に示すチャネルコマンド転送処理のステップＳ１６４０の通知を受取った正ストレージ装置における処理を、図１７により説明する。【００８５】
エクステント排他登録の通知とともに、先頭チャネルコマンドを受信する（Ｓ１７１０）。次に、エクステント排他を登録する（Ｓ１７２０）。ここでも、エクステント排他制御テーブル４２０の該当仮想ボリュームのエントリにおいて、エクステント範囲フィールド６３０にエクステント範囲を登録し、処理ストレージ装置フィールド６４０に送信元ストレージ装置の識別情報を登録する。【００８６】
その後エクステント排他解除通知を受信するまで待機する。この間、異なるＩ／Ｏ要求が入ると、エクステント排他制御テーブル４２０の登録情報を調べ、当該エクステント範囲にアクセスを要求してきたらエラーを返す。【００８７】
そして、エクステント排他解除通知を受信すると（Ｓ１７３０）、エクステント排他解除を実施する（Ｓ１７４０）。ここでは、エクステント排他制御テーブル４２０の該当仮想ボリュームのエントリにおいて、エクステント範囲フィールド６３０からエクステント範囲を削除し、処理ストレージ装置フィールド６４０からストレージ装置の識別情報を削除する。【００８８】
以上のように、実施例３によれば、複数のホスト計算機から仮想ボリュームをエクステント排他して同時に使用する際、エクステント排他指定を含む先頭チャネルコマンドのみをストレージ装置間で交換し、その他のチャネルコマンドは、ホスト計算機からＩ／Ｏ要求を受取ったストレージ装置内で実行することができる。
【符号の説明】
【００８９】
１      計算機システム
１００  ストレージ装置
１０２、１０４  ネットワーク
２００  ホスト計算機
３４０  チャネル
３５０  論理コントロールユニット（論理ＣＵ）
３６０  論理ボリューム
３７０  仮想ストレージ装置
３８０  仮想コントロールユニット（仮想ＣＵ）
３９０  仮想ボリューム
４００  マイクロプログラム
４１０  コマンドチェイン
４２０  エクステント排他制御テーブル
４３０  装置ＩＤ管理テーブル
４４０  仮想ボリューム管理テーブル
４５０  仮想ストレージ配置管理テーブル
４６０  制御情報管理テーブル
４７０  チャネルコマンド転送プログラム
４８０  ボリューム多重化プログラム
４９０  制御情報多重化プログラム
４９５  エクステント排他処理プログラム
【図１】
0005945065.tif 000002
【図２】
0005945065.tif 000003
【図３】
0005945065.tif 000004
【図４】
0005945065.tif 000005
【図５】
0005945065.tif 000006
【図６】
0005945065.tif 000007
【図７】
0005945065.tif 000008
【図８】
0005945065.tif 000009
【図９】
0005945065.tif 000010
【図１０】
0005945065.tif 000011
【図１１】
0005945065.tif 000012
【図１２】
0005945065.tif 000013
【図１３】
0005945065.tif 000014
【図１４】
0005945065.tif 000015
【図１５】
0005945065.tif 000016
【図１６】
0005945065.tif 000017
【図１７】
0005945065.tif 000018
【図１８】
0005945065.tif 000019