(57)【要約】【課題】ストレージシステム間の新規の通信技術を提供する。【解決手段】第一及び第二のストレージシステムでは、第一及び第二のコントローラと記憶装置との間に、第一及び第二のスイッチ装置が介在する。第一及び第二のスイッチ装置の少なくとも一方に、共有記憶域を備える。第一及び第二のコントローラを、該共有記憶域を介して互いに通信するよう構成する。【選択図】図２０
2008097331.tif 000002
【特許請求の範囲】
【請求項１】
第一のストレージシステムが、第一のコントローラと、複数の第一の記憶装置と、前記第一のコントローラと前記複数の第一の記憶装置との間に介在する第一のスイッチ装置とを備え、前記第一のコントローラが、第一の上位装置から送信された入出力要求を受信し、該受信した入出力要求に従って、前記第一のスイッチ装置を介して、前記複数の第一の記憶装置のうちのいずれかに対してデータの書込み及び／又は読出しを行うように構成されており、前記第一のスイッチ装置が、第一の共有記憶域を備え、
前記第一のストレージシステムに接続される第二のストレージシステムであって、
第二のコントローラと、
複数の第二の記憶装置と、
前記第二のコントローラと前記複数の第二の記憶装置との間に介在する第二のスイッチ装置と
を備え、前記第二のコントローラが、第一及び／又は第二の上位装置から送信された入出力要求を受信し、該受信した入出力要求に従って、前記第二のスイッチ装置を介して、前記複数の第二の記憶装置のうちのいずれかに対してデータの書込み及び／又は読出しを行うように構成されており、
前記第二のスイッチ装置が、第二の共有記憶域を備え、
前記第二のコントローラが、前記第一及び第二の共有記憶域のいずれかを介して、前記第一のコントローラと互いに通信する、
ストレージシステム。
【請求項２】
前記複数の第一の記憶装置のうちの少なくとも一つと前記複数の第二の記憶装置のうちの少なくとも一つとの間でデータのコピーが行われ、
前記第二のコントローラは、前記少なくとも一つの第一の記憶装置がコピー元の場合には、前記第一の共有記憶域を介して前記第一のコントローラと互いに通信する、
請求項１記載のストレージシステム。
【請求項３】
前記第一及び第二の共有記憶域には、それぞれ、第一のサブ領域と第二のサブ領域とがあり、
前記第二のコントローラが、前記第一のコントローラに対するメッセージを書込む場合には、前記第一のサブ領域に書き、前記第一のコントローラからのメッセージを読み出す場合には、前記第二のサブ領域から読む、
請求項１記載のストレージシステム。
【請求項４】
前記第一及び／又は第二のスイッチ装置は、前記第一及び第二のコントローラから前記第二の共有記憶域を更新及び／又は参照するための更新コマンド及び／又は参照コマンドを受け付けるスイッチ制御部を備える、
請求項１記載のストレージシステム。
【請求項５】
前記更新コマンドは、SCSI規格のMode Selectであり、前記参照コマンドは、SCSI規格のMode Senseであり、
前記スイッチ制御部は、前記更新コマンド及び前記参照コマンドを、コマンドのmode parametersとして、前記第一及び／又は第二の共有記憶域に書き込まれる及び読み出される情報を、前記第一及び第二のコントローラと送受信する、
請求項４記載のストレージシステム。
【請求項６】
前記第一のストレージシステムが、前記第一の上位装置から入出力要求を受信する第一のフロントエンド通信ポートと、該通信ポートと異なる第一のバックエンド通信ポートとを備え、
前記第二のストレージシステムが、前記第二の上位装置から入出力要求を受信する第二のフロントエンド通信ポートと、該通信ポートと異なる第二のバックエンド通信ポートとを備え、
前記第二のスイッチ装置が、前記第二及び第一のバックエンド通信ポートを介して前記第一のスイッチ装置に接続され、
前記第二のコントローラにより、前記複数の第一の記憶装置のうちの少なくとも一つと前記複数の第二の記憶装置のうちの少なくとも一つとの間でのデータのコピーが、前記第一のコントローラを経由することなく、前記第一のスイッチ装置、前記第一のバックエンド通信ポート、前記第二のバックエンド通信ポート及び前記第二のスイッチ装置を経由して行われる、
請求項１記載のストレージシステム。
【請求項７】
前記第一のストレージシステムが、前記複数の第一の記憶装置の記憶空間を基に構成された複数の第一の論理ボリュームと、前記複数の第一の論理ボリュームの各々に関する情報を管理するための第一のボリューム構成情報を記憶する第一の構成情報記憶域とを備え、前記第一のコントローラが、前記第一のボリューム構成情報を基に、前記第一の上位装置からの入出力要求に従う処理を実行するように構成されており、
前記第二のコントローラが、前記第一のボリューム構成情報にアクセスするためのアクセスコマンドを前記第一のスイッチ装置に接続されている記憶装置に発行することにより、又は、前記第一のボリューム構成情報を取得するためのコマンドを前記第一のスイッチ装置を介して前記第一のコントローラに発行することにより、前記第一のボリューム構成情報にアクセスする、
請求項１記載のストレージシステム。
【請求項８】
前記第二のストレージシステムが、第二のボリューム構成情報を記憶する第二の構成情報記憶域を備え、
前記第一及び第二のボリューム構成情報のいずれにも、どの論理ボリュームがどのストレージシステムに存在するかを表す情報が含まれており、
前記第二のコントローラが、前記第二のボリューム構成情報を基に、前記第二の上位装置からの入出力要求に従う処理を実行するように構成されており、アクセスコマンドを前記第一のスイッチ装置に接続されている記憶装置に発行することにより、又は、前記第一のスイッチ装置を介して前記第一のコントローラに所定のコマンドを発行することにより、前記複数の第一の論理ボリュームのうちの一部又は全部の第一の論理ボリュームに関する情報を無効とし、且つ、該一部又は全部の第一の論理ボリュームに関する情報を、前記第二のボリューム構成情報で有効とすることにより、前記複数の第一の論理ボリュームのうちの一部又は全部に対するデータの入出力を実行することのアクセス制御権を、前記第一のストレージシステムから引き継ぐ、
請求項７記載のストレージシステム。
【請求項９】
前記第一のコントローラは、前記第一の共有記憶域にロックが設定されている場合には、前記第一のボリューム構成情報を更新しないように構成されており、
前記第二のコントローラは、前記アクセスコマンドを前記第一のスイッチ装置に発行する前に、前記第一の共有記憶域にロックを設定する、
請求項８記載のストレージシステム。
【請求項１０】
前記第一のストレージシステムが、前記第一の上位装置から入出力要求を受信する第一のフロントエンド通信ポートと、該通信ポートと異なる第一のバックエンド通信ポートとを備え、
前記第二のストレージシステムが、前記第二の上位装置から入出力要求を受信する第二のフロントエンド通信ポートと、該通信ポートと異なる第二のバックエンド通信ポートとを備え、
前記第二のスイッチ装置が、前記第二及び第一のバックエンド通信ポートを介して前記第一のスイッチ装置に接続され、
前記第二のコントローラにより、前記複数の第一の記憶装置のうちの少なくとも一つと前記複数の第二の記憶装置のうちの少なくとも一つとの間でのデータのコピーが、前記第一のコントローラを経由することなく、前記第一のスイッチ装置、前記第一のバックエンド通信ポート、前記第二のバックエンド通信ポート及び前記第二のスイッチ装置を経由して行われ、
前記第二のコントローラが、前記アクセス制御権の引継ぎを実行することにより、前記一部又は全部の第一の論理ボリュームに対する入出力要求を受け付け、該入出力要求を受信した場合、該第一の論理ボリュームに対するデータの入出力が、前記第二のスイッチ装置、前記第二のバックエンド通信ポート、前記第一のバックエンド通信ポート及び前記第一のスイッチ装置を経由して行われる、
請求項８記載のストレージシステム。
【請求項１１】
前記第二のコントローラは、前記第一のコントローラが正常か否かを判断し、正常ではないと判断した場合に、前記アクセス制御権の引継ぎを実行し、正常であると判断した場合には、前記アクセス制御権の引継ぎを実行しない、
請求項１０記載のストレージシステム。
【請求項１２】
前記第二のコントローラは、前記コピーを開始する前に、前記アクセス制御権の引継ぎを実行する、
請求項１０記載のストレージシステム。
【請求項１３】
前記第二のコントローラは、前記第一のコントローラが正常か否かを判断し、正常であると判断した場合、前記アクセス制御権の引継ぎを実行する前に、前記第一のコントローラと前記第一の上位装置との接続を切断するためのメッセージを、第一の共有記憶域に書く、
請求項１２記載のストレージシステム。
【請求項１４】
前記第二のコントローラは、前記第一のコントローラが正常か否かを判断し、正常でないと判断した場合、前記アクセス制御権の引継ぎを実行する前に、前記第一のコントローラと前記第一の上位装置との接続を切断するための指示を第一のスイッチ装置に出す、
請求項１２記載のストレージシステム。
【請求項１５】
前記第二のコントローラは、前記第一のボリューム構成情報を基に、コピー先として、前記複数の第一の論理ボリュームにそれぞれ対応した複数の第二の論理ボリュームを準備し、前記複数の第一の論理ボリュームから前記複数の第二の論理ボリュームへのデータコピーが終了した場合に、前記複数の第一の論理ボリューム内のデータを削除する、
請求項１０記載のストレージシステム。
【請求項１６】
前記第一のストレージシステムが、前記第一の上位装置から入出力要求を受信する第一のフロントエンド通信ポートと、該通信ポートと異なる第一のバックエンド通信ポートと、前記複数の第一の記憶装置の記憶空間を基に構成された複数の第一の論理ボリュームと、前記複数の第一の論理ボリュームの各々に関する情報を管理するための第一のボリューム構成情報を記憶する第一の構成情報記憶域とを備え、前記第一のコントローラが、前記第一のボリューム構成情報を基に、前記第一の上位装置からの入出力要求に従う処理を実行するように構成されており、
前記第二のストレージシステムが、前記第二の上位装置から入出力要求を受信する第二のフロントエンド通信ポートと、該通信ポートと異なる第二のバックエンド通信ポートと、第二のボリューム構成情報を記憶する第二の構成情報記憶域とを備え、前記第二のコントローラが、前記第二のボリューム構成情報を基に、前記第一及び／又は第二の上位装置からの入出力要求に従う処理を実行するように構成されており、前記第一及び第二のボリューム構成情報のいずれにも、どの論理ボリュームがどのストレージシステムに存在するかを表す情報が含まれており、
前記第二のスイッチ装置が、前記第二及び第一のバックエンド通信ポートを介して前記第一のスイッチ装置に接続され、
前記第二のコントローラが、
前記第一のコントローラが正常か否かを判断し、
正常であると判断した場合、前記第一のコントローラと前記第一の上位装置との接続を切断するためのメッセージを、第一の共有記憶域に書き、
その後、所定の完了通知を受けた場合に、前記第一のスイッチ装置にアクセスコマンドを発行することにより、前記複数の第一の論理ボリュームの全部に関する情報を無効とし、且つ、該全部の第一の論理ボリュームに関する情報を、前記第二のボリューム構成情報で有効とすることにより、前記複数の第一の論理ボリュームの全部に対するデータの入出力を実行することのアクセス制御権を、前記第一のストレージシステムから引き継ぎ、
前記第一のボリューム構成情報を基に、コピー先として、前記複数の第一の論理ボリュームにそれぞれ対応した複数の第二の論理ボリュームを準備し、前記第二のコントローラにより、前記複数の第一の論理ボリュームと前記複数の第二の論理ボリュームとの間でのデータコピーが、前記第一のコントローラを経由することなく、前記第一のスイッチ装置、前記第一のバックエンド通信ポート、前記第二のバックエンド通信ポート及び前記第二のスイッチ装置を経由して行われ、
そのデータコピー中に、前記第一の論理ボリュームに対する入出力要求を受け付け、該入出力要求を受信した場合、該第一の論理ボリュームに対するデータの入出力が、前記第二のスイッチ装置、前記第二のバックエンド通信ポート、前記第一のバックエンド通信ポート及び前記第一のスイッチ装置を経由して行われ、
前記データコピーが終了した場合に、前記複数の第一の論理ボリューム内のデータを削除する、
請求項１記載のストレージシステム。
【請求項１７】
第一のストレージシステムと第二のストレージシステムとが互いに接続されたシステムであるストレージシステム群において、
前記第一のストレージシステムが、第一のコントローラと、複数の第一の記憶装置と、前記第一のコントローラと前記複数の第一の記憶装置との間に介在する第一のスイッチ装置とを備え、前記第一のコントローラが、第一の上位装置から送信された入出力要求を受信し、該受信した入出力要求に従って、前記第一のスイッチ装置を介して、前記複数の第一の記憶装置のうちのいずれかに対してデータの書込み及び／又は読出しを行うように構成されており、
前記第二のストレージシステムが、第二のコントローラと、複数の第二の記憶装置と、前記第二のコントローラと前記複数の第二の記憶装置との間に介在する第二のスイッチ装置とを備え、前記第二のコントローラが、第一及び／又は第二の上位装置から送信された入出力要求を受信し、該受信した入出力要求に従って、前記第二のスイッチ装置を介して、前記複数の第二の記憶装置のうちのいずれかに対してデータの書込み及び／又は読出しを行うように構成されており、
前記第一及び第二のスイッチ装置の少なくとも一方が、共有記憶域を備え、前記共有記憶域を介して、前記第一及び第二のコントローラが互いに通信する、
ストレージシステム群。
【請求項１８】
前記第一のストレージシステムが、前記第一の上位装置から入出力要求を受信する第一のフロントエンド通信ポートと、該通信ポートと異なる第一のバックエンド通信ポートとを備え、
前記第二のストレージシステムが、前記第二の上位装置から入出力要求を受信する第二のフロントエンド通信ポートと、該通信ポートと異なる第二のバックエンド通信ポートとを備え、
前記第一及び第二のスイッチ装置が、前記第一及び第二のバックエンド通信ポートを介して互いに接続され、
前記第二のコントローラが、前記第一及び第二のスイッチ装置の一方にコピー指示を出すことにより、前記複数の第一の記憶装置のうちの少なくとも一つと前記複数の第二の記憶装置のうちの少なくとも一つとの間でのデータのコピーが、前記第一のコントローラを経由することなく、前記第一のスイッチ装置、前記第一のバックエンド通信ポート、前記第二のバックエンド通信ポート及び前記第二のスイッチ装置を経由して行われる、
請求項１７記載のストレージシステム群。
【請求項１９】
複数の通信ポートを備えるスイッチ装置において、
複数のコマンド発行部間の通信で使用される共有記憶域と、
前記複数のコマンド発行部から前記共有記憶域を更新及び／又は参照するための更新コマンド及び／又は参照コマンドを受け付けるスイッチ制御部と
を備えるスイッチ装置。
【請求項２０】
前記スイッチ装置は、請求項４記載のストレージシステムに備えられるスイッチ装置であって、前記第二のバックエンド通信ポートを備える、又は、該第二のバックエンド通信ポートに直結されるインタフェース部を有する、
請求項１９記載のスイッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他のストレージシステムに接続されるストレージシステムに関する。
【背景技術】
【０００２】
第一のストレージシステムに第二のストレージシステムを接続するケースとして、例えば、第一のストレージシステムに記憶されているデータを第二のストレージシステムに移行するケースがある。データ移行の技術として、例えば、文献１（特開２００４−１０２３７４号公報）に開示の技術がある。
【０００３】
【特許文献１】特開２００４−１０２３７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、第一のストレージシステムとして、第一のコントローラと、第一の記憶装置と、第一のコントローラと第一の記憶装置との間に介在する第一のスイッチ装置とを備えたストレージシステムが考えられる。この場合、第一のコントローラは、第一の上位装置（例えばホスト計算機）から送信された入出力要求（ライト要求／リード要求）を受信し、その受信した入出力要求に従って、第一のスイッチ装置を介して、前記複数の第一の記憶装置のうちのいずれかに対してデータの書込み及び／又は読出しを行うように構成されていることが考えられる。また、第二のストレージシステムとして、第一のストレージシステムと同様の構成になっていることが考えられる（第一のストレージシステムと同種の構成要素については、「第一」という言葉を「第二」と読み替えることにする）。
【０００５】
ストレージシステム間の通信技術の一つとして、例えば、第一及び第二のコントローラ間を専用線で直結しコントローラ間で通信する技術が考えられる。それとは異なる別の通信技術が望ましい場合がある。また、ストレージシステム間を接続するケースは、データ移行に限らず、他種のケースも有り得る。
【０００６】
従って、本発明の目的は、ストレージシステム間の新規の通信技術を提供することにある。
【０００７】
本発明の更なる目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【０００８】
第一及び第二のスイッチ装置の少なくとも一方に、共有記憶域を備える。第一及び第二のコントローラを、該共有記憶域を介して互いに通信するよう構成する。
【０００９】
具体的には、例えば、該共有記憶域を備えるスイッチ装置に、複数のコマンド発行部（例えばSCSI規格で言うイニシエータ）から該共有記憶域を更新及び／又は参照するための更新コマンド及び／又は参照コマンドを受け付けるスイッチ制御部（例えばマイクロプロセッサ）を備える。各コントローラが、相手のコントローラにメッセージを送る場合には、該メッセージと共に更新コマンドを該スイッチ制御部に送信し、それにより、該メッセージを共有記憶域に書込むことができる。同様に、各コントローラは、相手のコントローラからのメッセージを受ける場合には、参照コマンドをスイッチ制御部に送信し、それにより、該メッセージを共有記憶域から読むことができる。
【発明の効果】
【００１０】
本発明によれば、ストレージシステム間の新規の通信技術が提供される。
【発明を実施するための最良の形態】
【００１１】
本発明の一実施形態の概念を説明する。
【００１２】
第一及び第二のストレージシステムに、第一及び第二のコントローラと記憶装置との間に、第一及び第二のスイッチ装置が介在する。第一及び第二のスイッチ装置の少なくとも一方に、共有記憶域を備える。第一及び第二のコントローラを、該共有記憶域を介して互いに通信するよう構成する。
【００１３】
具体例を図２０Ａに示す。スイッチ装置は、例えば、ＳＡＳ（Serial Attached SCSI）のExpanderである。Expanderに、共有記憶域が設けられる。Expanderは、ＳＥＳターゲットを持ち、SCSI規格に従うＳＥＳ（SCSI Enclosure Services）コマンドを複数のイニシエータＡ及びＢ（例えば第一及び第二のコントローラ）から受け付けることができるように構成されている。ＳＥＳコマンドとしては、ＳＥＳターゲットの内部状態を参照するためのコマンドや該内部状態を更新するためのコマンドがある。この内部状態を共有記憶域として使用することで、これを介して、複数のイニシエータＡ及びＢ間でメッセージを送受信することができる。
【００１４】
また、図２０Ｂに示すように、各ストレージシステムのスイッチ装置に、ホスト接続用ポート（ホスト計算機が接続されるポート）とは別のデータ移行専用ポートが設けられる。データ移行専用ポートは専用線で接続され、該専用線を介してデータ移行が実行される。また、該データ移行中は、移行先のコントローラがホスト計算機からの入出力要求を処理することで、第一のストレージシステムのＬＵから専用線を介してデータを読出しホスト計算機に提供したり、該専用線を介してデータを該ＬＵに書くことができる。
【００１５】
以下、図面を参照して、本発明の幾つかの実施例を説明する。その際、ストレージシステムに搭載される記憶装置は、例えば、ハードディスクドライブ（以下ＨＤＤという）とすることができるが、それに代えて、ＤＶＤ（Digital Versatile Disks）ドライブ、磁気テープドライブ、フラッシュメモリなど種々の記憶装置を採用することができる。
【実施例１】
【００１６】
図１は、本発明の第一実施例に係る計算機システムの構成例を示す。なお、図１では、第一と第二のストレージシステムがあるが、それらの同種の要素については同一の親番号と異なる子符号を付している。その際、第一のストレージシステムには、子符号として"Ａ"を付し、第二のストレージシステムには、子符号として"Ｂ"を付している。以下、同種の要素を格別区別しない場合には親番号のみを用いて説明し、区別する場合には親番号と子符合との組み合わせを用いることにする。
【００１７】
ＳＡＮ（Storage Area Network）１９０に、複数（又は一つ）のホスト計算機１９２と、第一及び第二のストレージシステム９２０Ａ及び９２０Ｂとが接続されている。ＳＡＮ１９０に代えて、他種の通信ネットワークが採用されても良い。
【００１８】
ＬＡＮ（Local Area Network）１９１に、管理端末１９８と、第一及び第二のストレージシステム９２０Ａ及び９２０Ｂとが接続されている。ＬＡＮ１９１に代えて、他種の通信ネットワークが採用されても良い。
【００１９】
ホスト計算機１９２は、ストレージシステム９２０に、入出力要求（ライト要求／リード要求）を送信することにより、ストレージシステム９２０Ａにデータを書込む又は読み出す。
【００２０】
管理端末１９８は、第一及び第二のストレージシステム９２０Ａ及び９２０Ｂを管理するための計算機である。管理端末１９８は、例えば、論理ユニット（論理ボリュームと呼ばれることもある）の作成やセキュリティの設定など、後述する構成情報の変更に関わる作業に必要なＧＵＩ（Graphical User Interface）やＣＬＩ（Common Line Interface）等のユーザインタフェースを提供することができる。管理端末１９８が行う処理については後に詳述する。
【００２１】
第一及び第二のストレージシステム９２０Ａ及び９２０Ｂは、ハードウェア構成としては略同様なので、第一のストレージシステム９２０Ａを代表的に例に採り説明する。
【００２２】
第一のストレージシステム９２０Ａには、コントローラ１２０Ａと、一又は複数のドライブ部１６０Ａとが備えられる。該サブシステム９２０Ａ内では、コントローラ１２０Ａと一又は複数のドライブ部１６０Ａがカスケード状に接続されている。この接続構成は、ホスト計算機１９２からＨＤＤ１２Ａへのデータ書込みの際のデータの流れを例に採って言えば、コントローラ１２０Ａが最上流となり、そこから、ドライブ部１、ドライブ部２、…ドライブ部ｐ（ｐは１以上の整数（ここでは３以上の整数））のように下流へと続く構成になっている。以下、本実施例において、このような接続構成を指す場合には、「カスケード接続構成」と言うことにする。カスケード接続構成は、例えば、図示のような直列に限らず、例えば、ツリー状の構成になっていても良い。
【００２３】
コントローラ１２０Ａは、第一のストレージシステム９２０Ａの動作を制御する装置であり、ドライブ部１６０Ａに備えられる第一のドライブ部コントローラ３０３Ａのようなスイッチ装置とは異なる。コントローラ１２０Ａは、例えば、冗長化（例えば二重化）されており、各コントローラ１２０Ａが、他のコントローラ１２０Ａと、コントローラ間通信インタフェース装置（以下、インタフェース装置を「Ｉ／Ｆ」と略記する）１１８Ａを介して接続されている。これにより、一つのコントローラ１２０Ａに障害が発生したことを他のコントローラ１２０Ａが検出し、他のコントローラ１２０Ａによる縮退運転が可能である。また、本実施例では、各ＨＤＤ１２Ａに対するアクセス経路も冗長化されていて、一つのアクセス経路に障害が生じても他のアクセス経路を介してコントローラ１２０ＡからＨＤＤ１２Ａにアクセスすることができるように構成されている。
【００２４】
コントローラ１２０Ａには、一又は複数のホストＩ／Ｆ１１４Ａ、管理Ｉ／Ｆ１１９Ａ、プロセッサ１１２Ａ、メモリ１０５Ａ、及びドライブＩ／Ｆ１１５Ａが備えられる。
【００２５】
各ホストＩ／Ｆ１１４Ａは、例えば通信ポートであり、ホスト計算機１９２から入出力要求を受け付ける。
【００２６】
管理Ｉ／Ｆ１１９Ａは、例えば通信ポートであり、管理端末１９８からの命令を受け付ける。
【００２７】
メモリ１０５Ａには、複数のコンピュータプログラムやデータが記憶される。複数のコンピュータプログラムとしては、例えば、入出力処理プログラム１３２Ａ、構成管理プログラム１３４Ａ及びデータ移行プログラム１３６Ａがある。また、メモリ１０５Ａには、キャッシュ領域１５０Ａが設けられ、該キャッシュ領域１５０Ａに、ホスト計算機１９２からＨＤＤ１２Ａに対して書込みまれる及び読み出されるデータが一時記憶される。
【００２８】
ドライブＩ／Ｆ１１５Ａは、ドライブ部１６０Ａの第一のドライブ部コントローラ３０３Ａを介してＨＤＤ１２Ａと通信するためのインタフェース装置である。
【００２９】
プロセッサ１１２Ａは、例えばＣＰＵ（Central Processing Unit）であり、メモリ１０５Ａに記憶されているコンピュータプログラムを読み込んで実行する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサによって処理が行われるものとする。
【００３０】
入出力処理プログラム１３２Ａは、ホストＩ／Ｆ１１４Ａが受信した入出力要求を処理する。入出力要求がライト要求の場合、入出力処理プログラム１３２Ａは、該ライト要求に従うデータをキャッシュ領域１５０Ａに一時書き、該データを、キャッシュ領域１５０Ａから読み出し、ＨＤＤ１２Ａに書く。一方、入出力要求がリード要求の場合、入出力処理プログラム１３２Ａは、ＨＤＤ１２Ａからデータを読み出し、該データをキャッシュ領域１５０Ａに一時書き、該データを、キャッシュ領域１５０Ａから読み出し、該リード要求の送信元のホスト計算機１９２に送信する。
【００３１】
構成管理プログラム１３４Ａは、後述する構成情報の管理を行うプログラムである。構成管理プログラム１３４Ａは、例えば、管理端末１９８からの命令に応答して、構成情報を更新することができる。
【００３２】
データ移行プログラム１３６Ａは、論理ユニット（ＬＵ）間のデータ移行を実行する。データ移行プログラム１３６Ａが行う処理については、後に詳述する。
【００３３】
ドライブ部１６０Ａには、冗長化された第一のドライブ部コントローラ３０３Ａ及びデータ移行用ポート６０１Ａが備えられる。各第一のドライブ部コントローラ３０３Ａには、一又は複数のＨＤＤ１２Ａが接続される。データ移行用ポート６０１Ａは、第一のドライブ部コントローラ３０３Ａに接続されており、コントローラ１２０Ａには接続されていない。データ移行用ポート６０１Ａは、専用線（以下、データ移行用ケーブル）９３０を介して、第二のストレージシステム９２０Ｂのデータ移行用ポート６０１Ｂに接続される。データ移行用ケーブル９３０に代えて、通信ネットワークが採用されても良い。いずれの場合であっても、本実施例では、第一のドライブ部コントローラ３０３Ａ及び３０３Ｂ間の通信、換言すれば、ストレージシステム９２０Ａ及び９２０Ｂ間の通信は、バックエンドに備えられたそのデータ移行用ケーブル９３０を介して行われ、コントローラ１２０Ａ及び１２０Ｂが接続されるＳＡＮ１９０を介して行われない。但し、例えば、そのバックエンドでの通信が不能になった場合には、ＳＡＮ１９０を介してコントローラ１２０Ａ及び１２０Ｂ間で通信が行われても良い。
【００３４】
以上が、本実施例に係る計算機システムの概要である。なお、データ移行用ケーブル９３０は、冗長化されているが、１本であっても良い。また、一つの回路基盤に、コントローラ１２０Ａ、第一のドライブ部コントローラ３０３Ａ、データ移行用ポート６０１Ａが実行されても良い。具体的には、例えば、メモリ１０５Ａ及び後述のメモリ１８５Ａ（第一のドライブ部コントローラ３０３Ａにあるメモリ１８５Ａ）が一つのメモリであっても良いが、プロセッサ３０１Ａは、ホスト計算機１９２からの入出力要求を処理するプロセッサ１１２Ａから独立したプロセッサにする。該独立したプロセッサ３０１Ａが、プロセッサ１１２Ａ、１１２Ｂ間のメッセージを、メモリに書いたり、メモリから読み出して提供したりすることができる。
【００３５】
次に、第一のドライブ部コントローラ３０３Ａについて詳述する。
【００３６】
図２は、第一のドライブ部コントローラ３０３Ａの構成例を示す。
【００３７】
第一のドライブ部コントローラ３０３Ａは、スイッチ装置である。該スイッチ装置は、例えば、ＳＡＳ（Serial Attached SCSI）でのExpanderであっても良いし、Fibre Channelのスイッチ装置であっても良い。ドライブ部コントローラ３０３は、装置管理部３００Ａ、メモリ１８５Ａ、プロセッサ３０１Ａ、クロスバスイッチ３１１Ａ、複数のＩ／Ｆ３０９Ａ、３１５Ａ、３１３Ａ及び３１７Ａを備える。
【００３８】
装置管理部３００Ａは、第一のストレージシステム９２０Ａ内の所定の構成要素から情報を取得する装置である。例えば、装置管理部３００Ａは、ファン（例えばＨＤＤ１２Ａを冷却するファン）や温度計等から、第一のストレージシステム９２０Ａの管理のために必要な情報（例えば温度計であれば測定された温度）を取得することができる。
【００３９】
プロセッサ３０１Ａは、例えばＣＰＵであり、メモリ１８５Ａからコンピュータプログラムを読み出して実行することができる。
【００４０】
メモリ１８５Ａには、装置管理プログラム３０４Ａ及びストレージ間通信プログラム３０５Ａが記憶される。装置管理プログラム３０４Ａは、第一のストレージシステム９２０Ａの所定の構成要素を管理するためのプログラムであり、例えば、装置管理部３００Ａが取得した情報を基に、ＨＤＤ１２Ａの閉塞処理、電源ユニット及びファンの制御などを行うことができる。ストレージ間通信プログラム３０５Ａは、バックエンドでストレージシステム９２０Ａ及び９２０Ｂ間の通信を行なうためのプログラムである。ストレージ間通信プログラム３０５Ａは、データ移行用ポート６０１Ａを介して相手のストレージ間通信プログラム３０５Ｂと通信することができる。
【００４１】
また、メモリ１８５Ａには、複数のイニシエータ間の通信用の記憶領域である通信用領域３０７Ａが設けられる。この通信用領域３０７Ａは、複数のイニシエータに共有される記憶領域である。なお、ここで言う「イニシエータ」とは、本実施例ではコントローラ１２０Ａ及び１２０Ｂ、厳密には、コントローラ１２０Ａ及び１２０Ｂのコマンド発行部となるプロセッサである。
【００４２】
クロスバスイッチ３１１Ａは、プロセッサ１１２Ａと複数のＩ／Ｆ３０９Ａ、３１５Ａ、３１３Ａ及び３１７Ａとの相互の接続を切替える装置である。クロスバスイッチに代えて、他種のスイッチ部（例えばＬＳＩ（Large Scale Integration）の一種としてのデータ転送回路）が採用されても良い。
【００４３】
複数のＩ／Ｆ３０９Ａ、３１５Ａ、３１３Ａ及び３１７Ａの各々は、例えば通信ポート（具体例としては、ＳＡＳのExpanderで言う「Phy」）である。複数のＩ／Ｆ３０９Ａ、３１５Ａ、３１３Ａ及び３１７Ａうち、Ｉ／Ｆ３１５Ａが、他のＩ／Ｆ３０９Ａ、３１３Ａ、３１７Ａと異なる種類のＩ／Ｆであっても良い。これらのＩ／Ｆは、スイッチ型（スター型）のトポロジをとることができ、ＳＡＳやFibre Channel等が適用可能である。
【００４４】
本実施例では、例えば、コントローラ１２０Ａ、ドライブ部１の第一のドライブ部コントローラ３０３Ａ、ドライブ部２の第一のドライブ部コントローラ３０３Ａ、…、ドライブ部ｐの第一のドライブ部コントローラ３０３Ａのような上記カスケード接続構成となっている。Ｉ／Ｆ３０９Ａには、上流側のＩ／Ｆ（コントローラ１２０ＡのドライブＩ／Ｆ１１５Ａ、又は、上流の第一のドライブ部コントローラ３０３ＡのＩ／Ｆ３１３Ａ）が接続される。Ｉ／Ｆ３１３Ａには、下流側のＩ／Ｆ（下流の第一のドライブ部コントローラ３０３ＡのＩ／Ｆ３０９Ａ、この第一のドライブ部コントローラ３０３Ａが最下流の場合には何も接続されないか或いはＨＤＤ１２Ａが接続されても良い）が接続される。Ｉ／Ｆ３１７Ａは、ＨＤＤ１２Ａが接続される。
【００４５】
図３は、複数のＨＤＤの記憶空間の領域割当ての一例の説明図である。
【００４６】
複数のＨＤＤ１２Ａの記憶空間は、ユーザボリューム領域５０１Ａとシステム領域１９０Ａとに大別することができる。
【００４７】
ユーザボリューム領域５０１Ａは、ホスト計算機１９２で実行されるアプリケーションプログラムが使用するデータ（ユーザデータ）が格納される領域である。具体的には、例えば、二以上のＨＤＤ１２Ａにより構成されたＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループの記憶空間を利用して生成されたＬＵの集合である。
【００４８】
システム領域１９０Ａは、一以上のＨＤＤ１２Ａの記憶空間の一部又は全部の領域であり、第一のストレージシステム９２０Ａの構成に関する情報（以下、構成情報）１７２Ａが記憶される領域である。構成情報１７２Ａには、例えば、ＬＵ構成管理テーブル１１００Ａ、ポート管理テーブル１２００Ａ、及びＲＡＩＤグループ管理テーブル１３００Ａが含まれる。構成情報１７２Ａは、例えば、データ移行用ポート６０１Ａに接続された第二のストレージシステムＡからアクセス可能なように、所定のＨＤＤ１２Ａの所定のアドレスに所定のフォーマットで格納されて良い。或いは、例えば、ドライブ部コントローラ３０３の通信用領域３０７を介したメッセージ送受信により、構成情報１７２が格納されている場所を示す情報がやり取りされることにより、構成情報１７２Ａ、１７２Ｂの場所が互いのコントローラ１２０Ａ、１２０Ｂで認識されても良い。
【００４９】
図７Ａは、ＬＵ構成管理テーブル１１００Ａの構成例を示す。
【００５０】
ＬＵ構成管理テーブル１１００Ａは、ＬＵを管理するためのテーブルであり、例えば、このテーブル１１００Ａには、各ＬＵ毎に、内部ＬＵＮ、割当てホストＩＤ、ホストＬＵＮ、容量、物理位置、ＲＡＩＤグループＩＤ、ペア状態が記録される。内部ＬＵＮとは、第一のストレージシステム９２０ＡがＬＵ（以下、対象ＬＵ）を識別するためのＬＵＮである。それに対し、ホストＬＵＮとは、ホスト計算機１９２が対象ＬＵを識別するためのＬＵＮである。割当てホストＩＤとは、対象ＬＵの割当て先のホスト計算機の識別子である。入出力処理プログラム１３２Ａは、割当てホストＩＤが「１」のホストには、内部ＬＵＮ０及び１のＬＵにアクセスを許可するが、それ以外の内部ＬＵＮのＬＵにアクセスすることを禁止する。容量とは、対象ＬＵの容量である。物理位置とは、対象ＬＵが存在する位置を表し、例えば、ストレージシステムの識別子である。この物理位置というカラムが、ポイントの一つであり、物理位置を記録できるようになっていることにより、第一のストレージシステム９２０Ａは、第二のストレージシステム９２０ＢのＨＤＤ１２Ｂ上にあるＬＵを持つことができる。ＲＡＩＤグループＩＤとは、対象ＬＵを有するＲＡＩＤグループの識別子である。ペア状態とは、対象ＬＵを含むＬＵペアの状態である。ペア状態"シンプル"とは、対象ＬＵとＬＵペアを構成する相手ＬＵが存在しないことを意味する。
【００５１】
図７Ｂは、ポート管理テーブル１２００Ａの構成例を示す。
【００５２】
ポート管理テーブル１２００Ａは、各ホストＩ／Ｆ１１４Ａに関する情報を管理するためのテーブルである。例えば、このテーブル１２００Ａには、各ホストＩ／Ｆ１１４Ａ毎に、ホストＩ／Ｆ番号（ホストＩ／Ｆ１１４Ａの識別番号）、ＩＰアドレス、サブネットマスク、デフォルトゲートウェイ、割り当て内部ＬＵＮが記録される。割当て内部ＬＵＮとは、ホストＩ／Ｆに割り当てられているＬＵ（該ホストＩ／Ｆを介してアクセス可能なＬＵ）の内部ＬＵＮである。この実施例では、ホストＩ／Ｆ１１４Ａは、iSCSIポートであるとしている。従って、このポート管理テーブル１２００Ａには、iSCSIがベースとするIPに必要な設定が記録される。
【００５３】
図７Ｃは、ＲＡＩＤグループ管理テーブル１３００Ａの構成例を示す。
【００５４】
ＲＡＩＤグループ管理テーブル１３００Ａは、各ＲＡＩＤグループに関する情報を管理するためのテーブルである。例えば、このテーブル１３００Ａには、各ＲＡＩＤグループ毎に、ＲＡＩＤグループＩＤ、ＲＡＩＤレベル、ＨＤＤ構成及びＬＵ割当て済み領域が記録される。ＲＡＩＤグループＩＤは、ＲＡＩＤグループの識別子である。ＨＤＤ構成は、ＲＡＩＤグループを構成する各ＨＤＤ１２Ａの識別番号である。ＬＵ割当て済み領域とは、ＲＡＩＤグループが提供する記憶空間のうちのどの部分がＬＵとして割当て済みかを表す。このＬＵ割当て済み領域から、空き（未割当ての）の記憶空間部分を特定し、その記憶空間部分を利用してＬＵを新たに生成することができる。
【００５５】
図４は、通信用領域３０７Ａの構成例を示す。
【００５６】
通信用領域３０７Ａには、第一のチャネル領域９５１Ａ、第二のチャネル領域９５３Ａ及びロック情報領域９５５Ａが含まれる。本実施例では、２チャネルが用意されているが、３チャネル以上用意されても良い。また、ロック情報領域も複数個用意されても良い。
【００５７】
各チャネル領域９５１は、メッセージ送信用のチャネルとしての領域である。第一のチャネル領域９５１Ａは、第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂ方向のチャネルの領域である。第二のチャネル領域９５３Ａは、第二のストレージシステム９２０Ｂから第一のストレージシステム９２０Ａ方向のチャネルの領域である。
【００５８】
各チャネル領域９５１には、以下の情報領域がある。すなわち、有効フラグが書かれる領域、シーケンス番号が書かれる領域、メッセージサイズが書かれる領域、及びメッセージ本体が書かれる領域である。有効フラグとは、意図した通信相手に向けたメッセージであるかどうかを示すフラグである。シーケンス番号とは、受信元が前回のチェック時と異なる新しいメッセージが書かれているかどうかをチェックするために用いる（前回と違った番号になっていれば新しいメッセージであると判断することができる）。シーケンス番号は、メッセージの送信元がインクリメントすることができる。メッセージサイズとは、メッセージ本体のデータサイズである。メッセージ本体とは、メッセージそれ自体である。
【００５９】
ロック情報領域９５５Ａは、構成情報１７２Ａに対する更新の排他制御に使用される領域である。具体的には、例えば、ロック情報領域９５５Ａには、１又は０の１ビットで構成することのできるロック変数が書かれる。ロック変数が１の場合はロック取得済みを表し、ロック変数が０の場合はロック未取得であることを表す。ここでロックが取得された場合には、第一のストレージシステム９２０Ａ内の構成情報１７２Ａの更新が禁止（つまり排他制御）される。なお、排他制御の及ぶ範囲は、変更されても良いし、排他制御対象毎（例えばＬＵ、構成情報１７２Ａ）にロック変数が用意されても良い。
【００６０】
以下、本実施例で行われる種々の処理の流れを説明する。
【００６１】
図５Ａは、第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂにメッセージを送信する場合のコントローラ１２０Ａ（プロセッサ１１２Ａ）の処理のフローチャートを示す。図５Ｂは、その場合のコントローラ１２０Ｂ（プロセッサ１１２Ｂ）の処理のフローチャートを示す。図５Ｃは、その場合のドライブ部コントローラ３０３（プロセッサ３０１）の処理のフローチャートを示す。なお、各図では、ステップを「Ｓ」と略記している。
【００６２】
ストレージシステム９２０Ａ及び９２０Ｂ間の通信に利用されるドライブ部コントローラ３０３がどれであるかは、例えば、予め、コントローラ１２０Ａ、１２０Ｂ及びドライブ部コントローラ３０３に設定されており、その設定に従がって、以下の処理が行われるようになっている。この設定は、例えば、コントローラ１２０Ａ、１２０Ｂ及びドライブ部コントローラ３０３におけるそれぞれのメモリ１０５Ａ、１０５Ｂ、３０４に記録することができる。以下の処理では、該通信に利用されるドライブ部コントローラ３０３を３０３Ａとする。
【００６３】
図５Ａに示すように、コントローラ１２０Ａ（プロセッサ１１２Ａ）が、通信用領域３０７Ａを更新するための更新コマンドを第一のドライブ部コントローラ３０３Ａに送信する（Ｓ１０１）。
【００６４】
この処理は、専用のプログラム（図示せず）により実行されても良いし、前述したプログラム１３２Ａ、１３４Ａ及び１３６Ａのいずれもが実行できるようになっていても良いし、それらのうちの所定のプログラム（例えばデータ移行プログラム１３６Ａ）が実行するようになっていても良い。
【００６５】
図５Ｂに示すように、コントローラ１２０Ｂ（プロセッサ１１２Ｂ）が、タイムアウト時間を設定し、タイマ動作（計時動作）を開始する（Ｓ１１１）。タイムアウト時間は、状況に応じた値に設定されても良いし、予め決められた固定の値であっても良い。また、タイムアウト時間に代えて、Ｓ１１２以降をループする回数（ポーリング回数）が設定され、タイマ動作に代えて、ポーリング回数がカウントされるようになっていてもよい。
【００６６】
プロセッサ１１２Ｂは、一定時間待機した後（Ｓ１１２）、通信用領域３０７Ａを参照するための参照コマンドを第一のドライブ部コントローラ３０３Ａに送信し（Ｓ１１３）、それに応答して、第一のチャネル領域９５１Ａに記録されている種々の情報を受ける（Ｓ１１４）。
【００６７】
プロセッサ１１２Ｂは、その情報を解析し、有効フラグが立っていて（有効フラグ＝１）で且つシーケンス番号が前回の参照時と異なっているかどうかを判断する（Ｓ１１４）。プロセッサ１１２Ｂは、異なっていれば（Ｓ１１４でｙｅｓ）、メッセージの受信成功として終了し、異なっていなければ（Ｓ１１４でｎｏ）、タイマ動作開始後タイムアウト時間経過しているかチェックし（Ｓ１１５）、経過していなければ（Ｓ１１５でｎｏ）、Ｓ１１２に戻り、経過していれば（Ｓ１１５でｙｅｓ）、タイムアウトとなる。
【００６８】
以上の処理は、専用のプログラム（図示せず）により実行されても良いし、前述したプログラム１３２Ｂ、１３４Ｂ及び１３６Ｂのいずれもが実行できるようになっていても良いし、それらのうちの所定のプログラム（例えばデータ移行プログラム１３６Ｂ）が実行するようになっていても良い。
【００６９】
図５Ｃに示す各ステップは、例えば、第一のドライブ部コントローラ３０３Ａのストレージ間通信プログラム３０５Ａが実行することができる。ストレージ間通信プログラム３０５Ａは、コマンド受信待ちにおいて（Ｓ１２１）、コマンドを受信した場合、コマンド種別を判定する（Ｓ１２２）。
【００７０】
Ｓ１２２において、通信用領域３０７Ａを更新するための更新コマンドであれば、ストレージ間通信プログラム３０５Ａは、該更新コマンドに従って第一のチャネル領域９５１Ａを更新し（Ｓ１２４）、該更新コマンドに対する応答（例えば更新完了）を、プロセッサ１１２Ａに送信する（Ｓ１２６）。更新コマンドでは、更新すべきチャネル領域（第一のチャネル領域９５１Ａ）が指定されていて、ストレージ間通信プログラム３０５Ａが、その指定されているチャネル領域の情報を更新するようになっていても良いし、或いは、更新コマンドではチャネル領域の指定はされておらず、ストレージ間通信プログラム３０５Ａが、更新コマンドの送信元に対応したチャネル領域を選択し、選択したチャネル領域に記録されている情報を更新するようにしても良い。これは、参照コマンドに従う参照の場合についても同様とすることができる。
【００７１】
Ｓ１２２において、通信用領域３０７Ａを参照するための参照コマンドであれば、ストレージ間通信プログラム３０５Ａは、該参照コマンドに従って、第一のチャネル領域９５１Ａから情報を取得し、該情報をコマンド発行元（プロセッサ１１２Ｂ）に送信する（Ｓ１２５）。そして、ストレージ間通信プログラム３０５Ａは、該参照コマンドに対する応答（例えば参照完了）を、プロセッサ１１２Ｂに送信する（Ｓ１２６）。
【００７２】
Ｓ１２２において、通信用領域３０７Ａを更新／参照するための更新コマンド及び参照コマンド以外の他のコマンドであれば、プロセッサ３０１Ａは、受信したコマンドに従う処理を実行し（Ｓ１２３）、該コマンドに対する応答をコマンド送信元に返す（Ｓ１２６）。該他のコマンドとしては、例えば、筐体内の温度の取得コマンド、後述するロック獲得コマンド、ロック解放コマンドなどがある。
【００７３】
以上の図５Ａ、図５Ｂ及び図５Ｃの処理により、コントローラ１２０Ａ及び１２０Ｂ間が互いにメッセージを送受信することができる。なお、この送受信では、コントローラ１２０Ｂからのメッセージ、参照コマンド及びコントローラ１２０Ｂに提供されるメッセージは、所定のドライブ部コントローラ３０３Ｂ、データ移行用ポート６０１Ｂ、データ移行用ケーブル９３０及びデータ移行用ポート６０１Ａを経由する。具体的には、例えば、所定のドライブ部コントローラ３０３Ｂのメモリ１８５Ｂには、メッセージの送受信に利用されるドライブ部コントローラ３０３Ｂは自分ではなく３０３Ａである旨を表す情報が設定されており、該ドライブ部コントローラ３０３Ｂのストレージ間通信プログラム３０５Ｂが、その情報を認識する。コントローラ１２０Ｂが、通信用領域３０７Ａの参照コマンドを所定のドライブ部コントローラ３０３Ｂに送信する。この場合、ストレージ間通信プログラム３０５Ｂが、その参照コマンドを、上記認識をしているので、データ移行用ポート６０１Ｂ及びデータ移行用ケーブル９３０を通じて第一のドライブ部コントローラ３０３Ａに転送する。これにより、第一のドライブ部コントローラ３０３Ａが、コントローラ１２０Ｂが送信した参照コマンドを受信することができる。該参照コマンドに応答して、ストレージ間通信プログラム３０５Ａが、第一のチャネル領域９５１Ａに記録されているメッセージを、データ移行用ポート６０１Ａ及びデータ移行用ケーブル９３０を通じてドライブ部コントローラ３０３Ｂに送信することができる。ストレージ間通信プログラム３０５Ｂは、その受信したメッセージを、コントローラ１２０Ｂに転送することができる。または、メッセージの送受信に利用されるドライブ部コントローラは３０３Ａであるという情報に基づいて、コントローラ１２０Ｂが直接ドライブ部コントローラ３０３Ａと通信しても良い（具体的には、コントローラ１２０Ｂは、ドライブ部コントローラ３０３Ｂを経由してドライブ部コントローラ３０３Ａに対して参照コマンド等のコマンドを発行しても良い）。
【００７４】
また、以上の図５Ａ、図５Ｂ及び図５Ｃの処理により、コントローラ１２０Ａ及び１２０Ｂ間で同期をとることができる。すなわち、例えば、コントローラ１２０Ａからシーケンス番号１のメッセージを送信した場合、コントローラ１２０Ｂは、そのシーケンス番号１のメッセージを複数回処理することなく動作することができる。また、同期をとるための更なる方法として、例えば、メッセージの受信側が、メッセージを参照したか否かを表すフラグを、該メッセージが記録されているチャネル領域に設定し、メッセージ送信側は、そのフラグが倒れていれば（例えばフラグ＝０であれば）、次のメッセージを書かず、そのフラグが立っていれば（例えばフラグ＝１であれば）、次のメッセージを書いても良い。
【００７５】
コントローラ１２０Ａ、１２０Ｂとドライブ部コントローラ間３０３Ａでのコマンドについては、例えば、SCSI規格のMode Select（更新コマンド）/Mode Sense（参照コマンド）を用いる方法がある（具体的には、例えば、ＳＥＳに従うコマンドを用いる方法がある）。通信用領域３０７の各チャネル領域９５１、９５３に対応するmode pageを定義することにより、これらのコマンドのmode parametersとして、チャネル領域９５１，９５３の内容を送受信することができる。この方法は、SCSI規格と互換性のある規格（例えばFibre Channel，SAS，iSCSI等）をドライブ部１６０のI/Fとして用いたときに適用することが可能である。
【００７６】
前述の例では、第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂにメッセージを送信する場合を例に採り説明したが、第二のストレージシステム９２０Ｂから第一のストレージシステム９２０Ａにメッセージを送信する場合には、第二のチャネル領域９５３Ａが利用されることになる。
【００７７】
ドライブ部コントローラ３０３は、各ストレージシステム９２０Ａ、９２０Ｂ内に複数個あるが、ストレージシステム９２０Ａ及び９２０Ｂ間の通信に用いるドライブ部コントローラは、前述したように予め設定しておくことができる。また、通信用領域３０７は、全てのドライブ部コントローラ３０３に備えられていなくても良く、少なくとも一つのドライブ部コントローラ３０３に備えられていれば良い。通信用領域３０７は、どこのドライブ部コントローラ３０３に備えられていても良い（例えば、複数のドライブ部のうちの最上流のドライブ部のドライブ部コントローラにあっても良い）。以上のことは、データ移行用ポート６０１についても同様である。
【００７８】
以下、第一のドライブ部コントローラ３０３Ａ（プロセッサ３０１Ａ）がロック獲得コマンド及びロック解放コマンドをそれぞれ受信した場合に実行する処理を図６Ａ及び図６Ｂを参照して説明する。その説明では、コントローラ１２０Ｂがコントローラ１２０Ａによる構成情報１７２Ａの更新を禁止或いは該禁止の解除をするためにロック獲得コマンド及びロック解放コマンドを送信するとする。
【００７９】
図６Ａは、第一のドライブ部コントローラ３０３Ａ（プロセッサ３０１Ａ）がロック獲得コマンドを受信した場合に図５ＣのＳ１２３で実行する処理のフローチャートを示す。
【００８０】
プロセッサ３０１Ａは、コントローラ１２０Ａからロック獲得コマンドを受信した場合、第一のチャネル領域９５１Ａを参照し、ロック変数をチェックする（Ｓ１３１）。その結果、ロック変数＝１であれば、プロセッサ３０１Ａは、ロック獲得失敗をコントローラ１２０Ａに応答する（Ｓ１３２）。一方、ロック変数＝０であれば、プロセッサ３０１Ａは、そのロック変数に１を代入し、ロック獲得成功をコントローラ１２０Ａに応答する（Ｓ１３３）。
【００８１】
図６Ｂは、第一のドライブ部コントローラ３０３Ａ（プロセッサ３０１Ａ）がロック解放コマンドを受信した場合に図５ＣのＳ１２３で実行する処理のフローチャートを示す。
【００８２】
プロセッサ３０１Ａは、コントローラ１２０Ａからロック解放コマンドを受信した場合、第一のチャネル領域９５１Ａを参照し、ロック変数をチェックする（Ｓ１４１）。その結果、ロック変数＝１であれば、プロセッサ３０１Ａは、そのロック変数に０を代入し、ロック解放成功をコントローラ１２０Ａに応答する（Ｓ１４２）。一方、ロック変数＝０であれば、プロセッサ３０１Ａは、ロック解放失敗をコントローラ１２０Ａに応答する（Ｓ１４３）。
【００８３】
図６Ａ、図６Ｂにおける条件判定（Ｓ１３１とＳ１４１）と、ロック変数への代入（Ｓ１３３とＳ１４３）は、ロックが２個のコントローラ１２０によって同時に取得されるような矛盾を防ぐために、アトミック（不可分）に実行されなければならない。
【００８４】
さて、本実施例では、例えば、ストレージシステムのリプレースを行うために、旧型（既存）の第一のストレージシステム９２０Ａのデータを新型（未使用）の第二のストレージシステム９２０Ｂに移行することがある。そのこと等を目的として、第一のストレージシステム９２０Ａに第二のストレージシステム９２０Ｂが接続される。
【００８５】
図８は、第一のドライブ部コントローラ３０３Ａ及び３０３Ｂがデータ移行用ケーブル９３０を介して接続された場合に実行される処理のフローチャートを示す。
【００８６】
稼動中の第一のストレージシステム９２０Ａでは、何らかのイベントが発生するのを待っている状態にある（Ｓ１５１）。
【００８７】
Ｓ１５２では、第二のストレージシステム９２０Ｂのデータ移行用ポート６０１Ｂに、第一のストレージシステム９２０Ａのデータ移行用ポート６０１Ａに接続されたデータ移行用ケーブル９３０が人間（例えば保守員）によって接続され、その後、第二のストレージシステム９２０Ｂの電源が投入される。その後、通知受信待ちとなる（Ｓ１５３）。具体的には、例えば、コントローラ１２０Ｂが、通信用領域３０７の第一のチャネル領域９５１Ａをポーリングする（定期的に参照コマンドを発行する）。
【００８８】
Ｓ１５２により、例えば、データ移行用ポート６０１Ａから所定の電気信号が装置管理部３００Ａに入力され、装置管理部３００Ａによって、第二のストレージシステム９２０Ｂがデータ移行用ポート６０１Ａを介して接続されたことが検出される。装置管理部３００Ａによってそのような検出がされたこと（すなわち、第二のストレージシステム９２０Ｂが接続されたこと）を、装置管理プログラム３０４Ａが、コントローラ１２０Ａに報告する。
【００８９】
Ｓ１５４では、コントローラ１２０Ａが、その報告に応答して、第二のストレージシステム９２０Ｂに、状態を表すメッセージ（以下、状態メッセージ）を通知する。その際、コントローラ１２０Ａは、通信用領域３０７Ａの第一のチャネル領域９５１Ａに、状態を表すメッセージを書くことができる。
【００９０】
Ｓ１５５において、コントローラ１２０Ｂが、第一のストレージシステム９２０Ａが正常動作中か否かを判断する。ここでは、例えば、状態メッセージを取得し、該状態メッセージが正常を表している場合には、正常動作中と判断することができる（Ｓ１５５でｙｅｓ）。一方、状態メッセージが正常を表していない場合、或いは、状態メッセージを参照できないままタイムアウトになってしまった場合、正常動作中ではないと判断することができる（Ｓ１５５でｎｏ）。Ｓ１５５でｙｅｓの場合、終了となり、Ｓ１５５でｎｏの場合、Ｓ１５６に進む。
【００９１】
Ｓ１５６では、コントローラ１２０Ｂは、第一のストレージシステム９２０ＡのＨＤＤディスカバリを実行する。具体的には、例えば、第一のストレージシステム９２０Ａに存在するＨＤＤ１２Ａを調べるための所定の照会コマンドを第一のドライブ部コントローラ３０３Ａに送信する。これにより、第一のストレージシステム９２０Ａの配下にある全ＨＤＤ１２Ａが、第二のストレージシステム９２０Ｂの配下になる。言い換えれば、全ＨＤＤ１２Ａの制御権が、第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ａに移る。
【００９２】
Ｓ１５７では、構成情報１７２Ａがシステム領域１９０Ａ（図３参照）から読み出され、構成情報１７２Ｂにマージ（追加）される。具体的には、例えば、コントローラ１２０Ｂの構成管理プログラム１３４Ｂが、構成情報１７２Ａを参照するためのリードコマンドを第一のドライブ部コントローラ３０３Ａに送信する。該リードコマンドでは、例えば、構成情報１７２Ａが存在する場所（例えばＳ１５６のＨＤＤディスカバリで特定された場所）が指定されている。第一のドライブ部コントローラ３０３Ａのストレージ間通信プログラム３０５Ａが、該リードコマンドに応答して、構成情報１７２ＡをＨＤＤ１２Ａから取得し、取得した構成情報１７２Ａを、コントローラ１２０Ｂに送信する。構成管理プログラム１３４Ｂが、構成情報１７２Ａに記録されている情報を、構成情報１７２Ｂに追加する。その際、構成情報１７２Ａをシステム領域１９０Ａから消去しても良い。
【００９３】
以上の処理により、バックエンドでデータ移行用ケーブル９３０を介して第一のドライブ部コントローラ３０３Ａ及び３０３Ｂ間を接続した場合、コントローラ１２０Ｂが、コントローラ１２０Ａの状態を判断し、コントローラ１２０Ａが正常ではないと判断した場合には、第一のストレージシステム９２０ＡのＨＤＤ及びＬＵの制御権を自動的に取得することができる。
【００９４】
図９は、ＬＵの制御権を第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂに移すための処理のフローチャートである。
【００９５】
この処理は、例えば、コントローラ１２０Ａは正常であるが、第一のストレージシステム９２０Ａに存在する複数のＬＵのうちの一部のＬＵの制御権を移す場合に実行される。この処理の利点としては、例えば、コントローラ１２０Ａの負荷をコントローラ１２０Ｂに分散することが挙げられる。また、この処理は、対象ＬＵのデータ移行の際にも利用することができる。この処理では、第一のストレージシステム９２０Ａにおいて内部ＬＵＮ４のＬＵの制御権が移るものとする。内部ＬＵＮ４のＬＵを対象とすることは、例えば、管理端末１９８から指定することができる。
【００９６】
コントローラ１２０Ｂが、ロック獲得コマンドを第一のドライブ部コントローラ３０３Ａに送信する（Ｓ１６１）。ストレージ間通信プログラム３０５Ａが、ロックを獲得する（ロック変数＝１とする）ことで（Ｓ１６２）、構成情報１７２Ａの更新が禁止される状態となる。具体的には、コントローラ１２０Ａから構成情報１７２Ａの更新が要求されても、ストレージ間通信プログラム３０５Ａが、その要求に対して排他制御中を表すメッセージをコントローラ１２０Ａに返すことで、構成情報１７２Ａが更新されないようにすることができる。Ｓ１６２の後、コントローラ１２０Ａは通知受信待ち、例えば通信用領域３０７Ａに参照コマンドを定期的に送信する状態となる（Ｓ１６３）。
【００９７】
コントローラ１２０Ｂは、構成情報１７２ＡのＨＤＤ１２Ａへの書き出しを依頼し対象ＬＵ（ＬＵ制御権移行の対象である内部ＬＵＮ４のＬＵ）を通知するメッセージを通信用領域３０７Ａに書く（Ｓ１６４）。ここで、構成情報１７２ＡをＨＤＤ１２Ａへの書き出しを依頼するのは、構成情報１７２Ａが、コントローラ１２０Ａのメモリ１０５Ａに読み出され、該メモリ１０５Ａ上で、参照や更新が行われていることがあるためである。そのため、構成情報１７２Ａがメモリ１０５Ａ上で更新されるようになっていない場合には、このような依頼は無くて良い。Ｓ１６４の後、コントローラ１２０Ｂは通知受信待ち、例えば通信用領域３０７Ａに参照コマンドを定期的に送信する状態となる（Ｓ１６５）。
【００９８】
Ｓ１６６で、コントローラ１２０Ａは、Ｓ１６４で書かれたメッセージに応答して、構成情報１７２ＡをＨＤＤ１２Ａへ書き出し（システム領域１９０Ａに書き出し）、対象ＬＵのデステージ及びオフライン化を実行する。ここでのデステージとは、キャッシュ領域１５０Ａに存在するデータのうち対象ＬＵに未反映のデータをキャッシュ領域１５０Ａから対象ＬＵに書き出すことである。また、ここでのオフライン化とは、対象ＬＵと該対象ＬＵにアクセスすることが許可されているホスト計算機（割当てホストＩＤから識別されるホスト計算機、以下、対象ホスト）との接続を切断することである。コントローラ１２０Ａは、構成情報１７２ＡをＨＤＤ１２Ａへ書き出すことが完了したならば、その完了を表すメッセージを、通信用領域３０７Ａに書く（Ｓ１６７）。
【００９９】
Ｓ１６８で、コントローラ１２０Ｂは、Ｓ１６７で書かれたメッセージに応答して、構成情報１７２Ａを読むためのリードコマンドをＨＤＤ１２Ａに送信する。
【０１００】
Ｓ１６９では、コントローラ１２０Ｂは、構成情報１７２Ａ及び１７２Ｂを更新することにより、対象ＬＵの制御権を移動する。具体的には、コントローラ１２０Ｂは、図１０Ａに示すように、ＬＵ構成管理テーブル１１００Ａから、内部ＬＵＮ４を含んだ行を削除し、図１０Ｂに示すように、該削除した行を、ＬＵ構成管理テーブル１１００Ｂに追加する。
【０１０１】
Ｓ１７０では、コントローラ１２０Ｂは、パス切替、対象ＬＵのオンライン化を実行する。具体的には、例えば、コントローラ１２０Ｂは、内部ＬＵＮ４が割り当たっているホストＩ／Ｆ１１４ＡのＩＰアドレス等を、ＩＰアドレス等が未設定でオフライン状態のホストＩ／Ｆ１１４Ｂに設定し、該ホストＩ／Ｆ１１４Ｂをオンラインにする。対象ＬＵのパス切替の方法としては、ＩＰアドレスの引継ぎ以外にも、ｉＳＮＳ（Ｉｎｔｅｒｎｅｔ  Ｓｔｏｒａｇｅ  Ｎａｍｅ  Ｓｅｒｖｅｒ）の更新やホスト１９２内の設定変更によって、対象ＬＵにアクセスするためのＩＰアドレスを変更する方法もある。
【０１０２】
Ｓ１７１では、コントローラ１２０Ｂが、ロック解放コマンドを第一のドライブ部コントローラ３０３Ａに送信する。ストレージ間通信プログラム３０５Ａが、ロックを解放する（ロック変数＝０とする）ことで（Ｓ１７２）、構成情報１７２Ａの更新禁止が解除される。
【０１０３】
以上が、ＬＵ制御権の移行のための処理である。Ｓ１７０が行われる前までは、対象ホストが対象ＬＵにアクセスするためのＩＰアドレスを指定して入出力要求を送信した場合、コントローラ１２０Ａが該入出力要求は受信するが、Ｓ１７０が行われた後は、該入出力要求は、コントローラ１２０Ｂが受けることになる。これにより、対象ホストからの入出力要求を止めずに、対象ＬＵに対する入出力要求の送信先を第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂに変更することができる。なお、ホストI/F１１４Ａ及び１１４Ｂが、Fibre Channelの場合、IPアドレス引継ぎを行わず、代わりに、コントローラ１２０Ａが対象ＬＵに対する入出力要求受け付け停止を行い、コントローラ１２０Ｂが、対象ＬＵに対する入出力要求受付開始を行うことができる。
【０１０４】
また、Ｓ１７０が行われた後、コントローラ１２０Ｂが、第一のストレージシステム９２０Ａ内の対象ＬＵに対する入出力要求を受けた場合、例えば以下の処理により、その入出力要求を第一のストレージシステム９２０Ａに転送することができる。すなわち、コントローラ１２０Ｂは、入出力要求から特定されるホストＬＵＮに対応した内部ＬＵＮ４を特定し、該内部ＬＵＮ４に対応した物理位置を参照する。該物理位置が、サブシステム１を表している場合には、該内部ＬＵＮ４に対応したＨＤＤ１２Ａに対するライトコマンド／リードコマンドを、第一のドライブ部コントローラ３０３Ａを経由して該ＨＤＤ１２Ａに送信する。これにより、コントローラ１２０Ｂが、第一のストレージシステム９２０Ａの対象ＬＵに対し、該入出力要求に従うデータの書込みや読出しを行うことができる。
【０１０５】
図１１は、第二のストレージシステム９２０Ｂが第一のストレージシステム９２０Ａのユーザボリューム領域５０１Ａの空き部分に自分の配下のＬＵを設定するための処理のフローチャートである。
【０１０６】
この処理は、例えば、管理端末１９８がコントローラ１２０Ｂに新規ＬＵ作成を指示することにより開始することができる。新規ＬＵ作成指示では、既存ＲＡＩＤグループ（ＲＧ）にＬＵを作成するか否かや、どんなＲＡＩＤレベルのＲＡＩＤグループに作るか等、必要な情報を設定することができる。
【０１０７】
Ｓ１６１〜Ｓ１６７と略同様の処理が行われる（Ｓ１８１〜Ｓ１８７）。その際、ＬＵ制御権の移行と違って、対象ＬＵの通知や、対象ＬＵのデステージ及びオフライン化は行う必要は無い。
【０１０８】
Ｓ１８８では、コントローラ１２０Ｂが、構成情報１７２Ａを読み出すためのリードコマンドを第一のドライブ部コントローラ３０３Ａを経由してＨＤＤ１２Ａに送信し、それにより、構成情報１７２Ａを取得する。
【０１０９】
コントローラ１２０Ｂは、既存ＲＡＩＤグループ（ＲＧ）にＬＵを作成する場合には、Ｓ１９０にすすみ、新規ＲＡＩＤグループを作成してＬＵを作成する場合には、Ｓ１９１にすすむ。
【０１１０】
Ｓ１９０では、構成情報１７２Ａ及び１７２Ｂを更新することで、第一のストレージシステム９２０Ａ内の既存ＲＡＩＤグループにＬＵを作成し、該ＬＵの制御権を第二のストレージシステム９２０Ｂに設定する。具体的には、図１２Ａに示すように、ＲＡＩＤグループ２を選択し、該ＲＡＩＤグループ２に内部ＬＵＮ０のＬＵを作成し、該ＬＵに関する情報を、ＬＵ構成管理テーブル１１００Ｂに追加する。なお、ＲＡＩＤグループ２を選択したのは、例えば、上記新規ＬＵ作成指示で指定されたＲＡＩＤレベルであり、且つ、該新規ＬＵ作成指示で指定された容量以上の空き容量があるためである。各ＲＡＩＤグループの空き容量は、ＬＵ割り当て済み領域を参照することにより特定することができる。また、この処理に伴い、構成情報１７２Ａの必要箇所が更新される。具体的には、例えば、ＲＡＩＤグループ管理テーブル１３００ＡのＲＡＩＤグループＩＤ２に対応したＬＵ割当て済み領域が更新される。
【０１１１】
Ｓ１９１では、構成情報１７２Ａ及び１７２Ｂを更新することで、第一のストレージシステム９２０Ａに新規ＲＡＩＤグループ及びＬＵを作成し、該ＬＵの制御権を第二のストレージシステム９２０Ｂに設定する。具体的には、図１２Ｂに示すように、ＲＡＩＤグループ５を新規に作成し、該ＲＡＩＤグループ５に内部ＬＵＮ０のＬＵを作成し、該ＬＵに関する情報を、ＬＵ構成管理テーブル１１００Ｂに追加する。なお、ＲＡＩＤグループ５は、例えば、指定されたＲＡＩＤレベルに対応した台数の未使用ＨＤＤ１２Ａがある場合に作成可能である。未使用ＨＤＤ１２Ａは、例えば、ＲＡＩＤグループ管理テーブル１３００ＡのＨＤＤ構成から特定することができる。例えば、所定のＨＤＤ番号範囲において抜けのＨＤＤ番号があった場合にはそのＨＤＤ番号を未使用と判断することができる。このＳ１９１では、更に、構成情報１７２Ａの必要箇所が更新される。具体的には、例えば、ＲＡＩＤグループ管理テーブル１３００Ａに、ＲＡＩＤグループＩＤ５に対応した新たな行が追加される。
【０１１２】
Ｓ１９０やＳ１９１の終了後、図１０のＳ１７１及びＳ１７２と同様の処理が行われる（Ｓ１９２及びＳ１９３）。
【０１１３】
図１３は、第一のストレージシステム９２０Ａ内の全データを第二のストレージシステム９２０Ｂに移行する場合に実行される処理のフローチャートである。
【０１１４】
この処理は、例えば、バックエンドでの第一のドライブ部コントローラ３０３Ａ及び３０３Ｂ間の接続後自動的に行われても良いし、管理端末１９８からの指示により行われても良い。管理端末１９８は、コントローラ１２０Ａ及び１２０Ｂの両方に全データ移行指示を送ることができる。
【０１１５】
Ｓ２０１では、コントローラ１２０Ａが、ユーザからデータ移行許可あるか否かを判断する。許可ありの場合、Ｓ２０４に進む。なお、「ユーザのデータ移行許可」は、管理端末１９８から行うことができる。このステップを行う目的は、例えば、セキュリティ対策の一つとして、不正なデータ移行による情報漏洩を防止することにある。もし、セキュリティが問題にならない場合は、このステップは無くても良い。
【０１１６】
Ｓ２０４では、コントローラ１２０Ａは、データ移行許可を通知するメッセージ（以下、移行許可メッセージ）を、通信用領域３０７Ａに書く。その後、全ＬＵ引継ぎ要求の待ちとなる（Ｓ２０５）。
【０１１７】
以上のＳ２０１及びＳ２０４は、コントローラ１２０Ａが正常ではない場合には実行されなくて良い。
【０１１８】
Ｓ２０２では、コントローラ１２０Ｂは、コントローラ９２０Ａの状態を判断する。具体的には、例えば、コントローラ１２０Ｂが、コントローラ１２０Ａの状態を問い合わせるメッセージを通信用領域３０７Ａに書き、その後、通信用領域３０７Ａをポーリングする（状態メッセージを待つ）。状態メッセージを取得した場合、該状態メッセージからコントローラ１２０Ａの状態を判別する。正常と判断した場合は（Ｓ２０２でｙｅｓ）、Ｓ２０３（移行許可メッセージを待つためのポーリングの実行）に進み、Ｓ２０３で、移行許可メッセージを取得したならば、Ｓ２０６に進む。正常ではないと判断した場合、或いはタイムアウトとなった場合は（Ｓ２０２でｎｏ）、Ｓ２０６に進む。
【０１１９】
Ｓ２０６では、コントローラ１２０Ｂは、データ移行に必要なＨＤＤ容量があるか否かを判断する。具体的には、例えば、コントローラ１２０Ｂは、構成情報１７２Ａを取得し、該構成情報１７２Ａから、第一のストレージシステム９２０Ａに存在する全ＬＵのトータル容量以上の記憶容量が、第二のストレージシステム９２０Ｂの未使用記憶容量（構成情報１７２Ｂから特定することができる記憶容量）以上あるかどうかを判断する。なければ、Ｓ２０７に進んでデータ移行中止となり、あれば、Ｓ２０６Ａにすすむ。
【０１２０】
Ｓ２０６Ａでは、コントローラ１２０Ｂは、コントローラ１２０Ａが正常か否かを判断する。ここでは、再度Ｓ２０２と同様の処理が行われても良いし、Ｓ２０２の判断結果が引き継がれても良い。Ｓ２０６Ａでｙｅｓとなれば、Ｓ２０８にすすみ、Ｓ２０６Ａでｎｏとなれば、Ｓ２１２にすすむ。
【０１２１】
Ｓ２０８では、コントローラ１２０Ｂは、全ＬＵ引継ぎ要求のメッセージを通信用領域３０７Ａに書く。そして、通知受信待ち（例えば通信用領域３０７Ａのポーリング実行状態）となる（Ｓ２０９）。
【０１２２】
Ｓ２１０では、コントローラ１２０Ａが、例えばＳ２０５でポーリングを行っていることにより、全ＬＵ引継ぎ要求のメッセージを通信用領域３０７Ａから取得する。これに応答して、コントローラ１２０Ａは、全ホストＩ／Ｆ１１４Ａをオフライン化（例えば切断）し、全ＬＵのデステージ・オフライン化（例えば全ＬＵを非公開にする）し、構成情報１７２ＡのＨＤＤ１２Ａへの書き出しを実行し、その処理の完了を表すメッセージ（以下、Ｓ２１０完了メッセージ）を通信用領域３０７Ａに書く。
【０１２３】
Ｓ２１１では、Ｓ２１０の後自動的に、或いは、Ｓ２１２での後述する停止処理により、コントローラ１２０Ａの稼動が停止となる。
【０１２４】
Ｓ２１２では、コントローラ１２０Ｂが、例えばＳ２０９でのポーリングによりＳ２１０完了メッセージを取得したことを契機に、或いは、Ｓ２０６Ａでｎｏとなったことを契機に、以下の処理が実行される。すなわち、構成情報１７２Ａ中のポート管理テーブル１２００Ａから、各ホストＩ／Ｆ１１４ＡのＩＰアドレスを特定し、各ＩＰアドレスを、ホストＩ／Ｆ１１４Ｂに設定する。つまり、各ホストＩ／Ｆ１１４ＡのＩＰアドレスを各ホストＩ／Ｆ１１４Ｂに引き継ぐ。なお、このＳ２１２では、例えば、Ｓ２０６Ａでｎｏの場合、コントローラ１２０Ａを完全に停止させるための処理（停止処理）を実行して良い。例えば、コントローラ１２０Ｂが、コントローラ１２０Ａを停止させるための停止コマンドを第一のドライブ部コントローラ３０３Ａに送信し、第一のドライブ部コントローラ３０３Ａのプロセッサ３０１Ａが、割り込みで、コントローラ１２０Ａのプロセッサ１１２Ａを停止させてよい。
【０１２５】
Ｓ２１３では、コントローラ１２０Ｂが、各ホストＩ／Ｆ１１４ＢのＩＰアドレスをホスト計算機１９２に通知する。
【０１２６】
Ｓ２１４では、コントローラ１２０Ｂが、第一のストレージシステム９２０Ａにある全移行元ＬＵに対するホスト計算機１９２からの入出力要求の受け付けを開始する。その後、Ｓ２２０でデータコピーが実行される。
【０１２７】
図１４は、図１３のＳ２２０のデータコピーのフローチャートである。
【０１２８】
Ｓ２２１では、コントローラ１２０Ｂが、構成情報１７２Ａに基づいて、第一のストレージシステム９２０Ａのユーザボリューム領域５０１Ａと同じ構成のユーザボリューム領域５０１Ｂを作成する。
【０１２９】
具体的には、例えば、図１５に例示するように、ＬＵ構成管理テーブル１１００Ａを構成する全行をＬＵ構成管理テーブル１１００Ｂにコピーする。これにより、内部ＬＵＮ０〜４（移行元ＬＵ０〜４）のＬＵ制御権が、第二のストレージシステム９２０Ｂに移る。このため、移行元ＬＵ０〜４に対する入出力要求を、コントローラ１２０Ｂが受け、処理することができる。
【０１３０】
更に、コントローラ１２０Ｂは、コピーした各行に対応する各行を、ＬＵ構成管理テーブル１１００Ｂに追加する。より具体的には、内部ＬＵＮ０〜４にそれぞれ対応した内部ＬＵＮ５〜９（移行先ＬＵ０〜９）をそれぞれ含んだ行が追加される。追加された各行では、容量、ＲＡＩＤグループＩＤが、それぞれコピーされている。これにより、第一のストレージシステム９２０Ａに存在する全移行元ＬＵ０〜４にそれぞれ対応した移行先ＬＵ５〜９が、第二のストレージシステム９２０Ｂに作成される。なお、データ移行の際のＬＵ構成管理テーブル１１００Ｂには、移行元ＬＵＮ及び移行状態というカラムが追加される（予め用意されていても良い）。移行元ＬＵＮとは、移行元ＬＵの内部ＬＵＮである。内部ＬＵＮ５〜９にそれぞれ対応した移行元ＬＵＮが０〜４になっていることにより、移行先ＬＵＮ５〜９にそれぞれ対応した移行元ＬＵは０〜４であることがわかる。また、移行状態とは、移行に関する状態を表す。該状態としては、"未完"（移行が未だ行われていない）、"移行中"（データコピー中である）、"完"（データコピーが済んでいる）の３種類がある。
【０１３１】
再び図１４を参照する。Ｓ２２２では、コントローラ１２０Ｂは、全ＬＵのコピーが完了したか否かを判断する。これは、例えば、ＬＵ構成管理テーブル１１００Ｂの移行状態が全て"完"になっているか否かの判断とすることができる。完了していれば、Ｓ２２３にすすみ、完了していなければ、Ｓ２２４にすすむ。
【０１３２】
Ｓ２２３では、コントローラ１２０Ｂが、第一のストレージシステム９２０Ａの全ＬＵ（移行元ＬＵ０〜４）のデータを破棄する。これにより、全データ移行の完了となる。すなわち、本実施例では、ＬＵ間のデータ移行（マイグレーション）は、ＬＵ間のデータコピーを行った後、移行元（コピー元）ＬＵ内のデータを破棄することで、データ移行を完了することができる。
【０１３３】
Ｓ２２４では、コントローラ１２０Ｂが、コピー未完の移行元ＬＵ群から一つの移行元ＬＵを選択し、該選択した移行元ＬＵに対応する移行先ＬＵへのコピーを開始する。具体的には、例えば、コントローラ１２０Ｂは、図１６に例示するように、移行元ＬＵ２を選択し、該移行元ＬＵ２に対応した移行状態を"未完"から"移行中"に変更して、移行元ＬＵ２から移行先ＬＵ７へのデータコピーを実行する。該データコピーが終了したならば、該移行状態を"移行中"から"完"に変更する。
【０１３４】
Ｓ２２５では、コントローラ１２０Ｂが、該コピーの完了後、ホストのアクセス先を、移行先ＬＵに変更する。具体的には、例えば、図１７に例示するように、移行元ＬＵ２に対応した割当てホストＩＤ及びホストＬＵＮを、移行先ＬＵ７に対応付け、且つ、移行元ＬＵ２の行から、該割当てホストＩＤ及びホストＬＵＮを削除する。また、移行先ＬＵ７に対応する移行元ＬＵＮ２も削除する。ただし、ホストのアクセス先の移行先ＬＵへの変更は、全ＬＵのデータコピーの完了後（Ｓ２２２の後）としても良い。この場合、コピーが完了したＬＵへのホストからのライトは、全ＬＵのデータコピーの完了前には、移行元・移行先の両方のＬＵに反映されるようにする。後者の方式とすることで、性能面では前者の方式より不利になるが、ストレージシステム９２０Ａに最新のデータを残すことができ、移行中の障害等により移行が継続できなくなったときにストレージシステム９２０Ａにアクセスパスを戻すことで、業務を継続することができる。
【０１３５】
Ｓ２２４及びＳ２２５の繰返しにより、全移行元ＬＵから全移行先ＬＵへのデータコピーが完了し、ＬＵ構成管理テーブル１１００Ｂが、図１７に例示するようになる。
【０１３６】
以上が、全データ移行処理についての説明である。なお、Ｓ２２４でのデータコピーは、例えば以下のような流れで行うことができる。例えば、データ移行プログラム１３６Ｂが、選択した移行元ＬＵからデータを読出し、該データを、キャッシュ領域１５０Ｂに一時書込み、そして、キャッシュ領域１５０Ｂから該データを読出し、該データを移行先ＬＵに書きこむ。この方法に代えて、例えば、データ移行プログラム１３６Ｂが、第一のドライブ部コントローラ３０３Ａに移行元ＬＵのデータが存在する物理的な移行元場所（例えばＨＤＤ番号及びアドレス範囲）を設定し、第一のドライブ部コントローラ３０３Ａに移行先ＬＵに対応した物理的な場所（例えばＨＤＤ番号及びアドレス範囲）し、第一のドライブ部コントローラ３０３Ａが、移行元場所からデータを読み出してドライブ部コントローラ３０３Ｂに転送し、ドライブ部コントローラ３０３Ｂが、転送されて来たデータを移行先場所に格納することで、データコピーが行われても良い。つまり、データ移行では、移行対象のデータがコントローラ１２０Ｂのキャッシュ領域１５０に一旦書かれた後で移行先ＬＵに書かれても良いし、そのキャッシュ領域１５０に書かれることなくデータ移行が行われても良い。
【０１３７】
以上が、第一実施例についての説明である。なお、図１３及び図１４を参照して説明したコントローラ１２０Ｂの動作は、データ移行プログラム１３６Ｂによって行われる。また、上述した全データ移行処理では、コントローラ１２０Ｂによって、ロックが獲得された後に、データコピーが開始されても良い。また、バックエンド接続（データ移行用ポート６０１Ａ及び６０１間の接続）、バックエンドでのデータ移行、ホストアクセスパス切替などは、例えば、特願２００６−２７８２３７号（本願出願時点では未公開）に記載の処理を適宜に援用することができる。
【０１３８】
この第一実施例によれば、第一のドライブ部コントローラ３０３Ａ及び３０３Ｂに、それぞれ、データ移行用ポート６０１Ａ及び６０１Ｂが接続され、該データ移行用ポート６０１Ａ及び６０１Ｂ間が、データ移行用ケーブル９３０で接続される。データ移行では、移行元のストレージシステム９２０Ａのコントローラ１２０Ａを経由することなく、移行元ＬＵ、第一のドライブ部コントローラ３０３Ａ、データ移行用ポート６０１Ａ、データ移行用ケーブル９３０、データ移行用ポート６０１Ｂ、ドライブ部コントローラ３０３Ｂ及び移行先ＬＵへのデータが流れる。これにより、コントローラ１２０Ａが壊れていても、データの移行が可能である。
【０１３９】
また、この第一実施例では、データ移行においてデータが経由することになるドライブ部コントローラ３０３に、共有記憶域である通信用領域３０７が用意され、ドライブ部コントローラ３０３にストレージ間通信プログラム３０５が搭載される。該ストレージ間通信プログラム３０５は、コントローラ１２０Ａ及び１２０Ｂから該通信用領域３０７を参照及び更新するためのコマンドを受け付け処理することができるように構成されている。これにより、バックエンドにあるドライブ部コントローラ３０３の記憶資源を利用したコントローラ１２０Ａ及び１２０Ｂ間のメッセージ送受信が可能となる。
【０１４０】
また、この第一実施例では、通信用領域３０７Ａに、排他制御ためのロック情報が記録され、ロックが獲得された場合には、第一のストレージシステム９２０Ａ内の所定の資源（例えば構成情報１７２ＡやＬＵ）の更新が禁止される。これにより、例えばオンライン（ホスト計算機１９２から入出力要求を受け付けながら）で、データ移行及び／又はＬＵ制御権移行を実行する場合に、移行元の構成を破壊することなく安全に実行することが可能となる。この仕組みは、特に、コントローラ１２０Ａが正常の場合に有効である。
【０１４１】
また、この第一実施例では、各コントローラ１２０は、相手のコントローラ１２０が異常であっても、相手のストレージシステムにあるドライブ部コントローラ３０３と通信することが可能であるため、相手のストレージシステム９２０にある構成情報１７２を参照及び更新することができる。これにより、相手のコントローラ１２０が壊れていても、相手のストレージシステム９２０のＬＵ制御権を獲得することができる。
【実施例２】
【０１４２】
以下、本発明の第二実施例について説明する。その際、第一実施例との相違点を主に説明し、第一実施例との共通点については、説明を省略或いは簡略する。
【０１４３】
第一実施例では、データ移行中、ホストからのアクセスが移行先ＬＵに切り替えられるまでは、コントローラ１２０Ｂが、入出力要求を受信し、該入出力要求に従うデータが、データ移行用ケーブル９３０を経由する。データ移行でも該ケーブル９３０をデータが経由するので、ケーブル９３０の帯域を圧迫することになる。
【０１４４】
そこで、この第二実施例では、入出力要求は、コントローラ１２０Ａが受けて処理するようにする。これにより、入出力要求に従うデータが、データ移行用ケーブル９３０を経由しないので、ケーブル９３０の通信負荷を緩和することができる。
【０１４５】
具体的には、コントローラ１２０Ａが正常であると判断された場合には、図１３に代えて、図１８の全データ移行処理が実行される。以下、詳述する。なお、第一実施例でもそうであるが、データ移行に関わるコントローラ１２０が実行する動作は、データ移行プログラム１３６が実行することができる。
【０１４６】
コントローラ１２０Ｂが、要求受信待ち、例えば、通信用領域３０７Ａをポーリングしている（Ｓ２３１）。
【０１４７】
コントローラ１２０Ａは、ユーザからデータ移行許可がある場合（Ｓ２３２でｙｅｓ）、全空きＨＤＤの制御権を要求するメッセージを通信用領域３０７Ａに書く（Ｓ２３３）。そして、通知受信待ち、例えば、通信用領域３０７Ａをポーリングする（Ｓ２３４）。
【０１４８】
コントローラ１２０Ｂが、そのメッセージを取得した場合、該メッセージに応答して、構成情報１７２Ｂをシステム領域１９０Ｂ（ＨＤＤ１２Ｂ）に書き、それの完了を表すメッセージを、通信用領域３０７Ａに書く（Ｓ２３５）。そして、通信受信待ちとなる（Ｓ２３６）。
【０１４９】
コントローラ１２０Ａは、Ｓ２３４での待ちによりそのメッセージを取得した場合、データコピーを実行する（Ｓ２２０）。Ｓ２２０の処理の詳細は、図１４に示した通りである。この処理では、コントローラ１２０Ａ及び１２０Ｂのいずれがデータ移行を行っても良い。
【０１５０】
Ｓ２２０の終了後、図１３のＳ２１０〜Ｓ２１４と同様の処理が実行される（Ｓ２３７〜Ｓ２４１）。
【０１５１】
以上が、第二実施例についての説明である。
【実施例３】
【０１５２】
図１９に、本発明の第三実施例にかかる計算機システムの構成例を示す。
【０１５３】
各ストレージシステム９２０Ａ及び９２０Ｂでは、コントローラ１２０Ａ及び１２０Ｂが冗長化されていない。このため、コントローラ１２０Ａに障害が発生すると、代わって動作する要素がないが、それであっても、第一のドライブ部コントローラ３０３Ａ及び３０３Ｂやコントローラ１２０Ｂが正常であれば、前述したデータ移行が可能であるので、利便性は高い。
【０１５４】
なお、この第三実施例では、データ移行用ケーブル９３０及びデータ移行用ポート６０１Ａ及び６０１Ｂはそれぞれ冗長化されていないが、それらは冗長化されていても良い。これにより、一方のケーブル９３０、データ移行用ポート６０１Ａ又は６０１Ｂに障害が発生しても、他方のケーブル９３０、データ移行用ポート６０１Ａ又は６０１Ｂを介してデータ移行することが可能である。
【０１５５】
以上、本発明の実施形態及び幾つかの実施例を説明したが、これらの実施形態及び実施例は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施形態及び実施例にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【０１５６】
例えば、ＬＵ単位でデータコピーとＬＵ制御権移行とが交互に実行されても良い。
【０１５７】
また、どちらのストレージシステムを移行元としどちらを移行先とするかは、ユーザによって手動で決定されても良いし、自動で決定されても良い。自動で決定する方法としては、例えば以下の通りである。すなわち、ストレージシステム９２０Ａは、初め、単独で稼動しているため、データ移行用ポート６０１Ａの先には何も接続されておらず、故に、コントローラ１２０Ａが、ドライブ部コントローラ３０３Ａを検出できても、データ移行用ポート６０１Ａの先のデバイスは何も検出されない。このように、一方のドライブ部コントローラ３０３Ａしか検出できない場合には、コントローラ１２０Ａは、このストレージシステム９２０Ａを移行元のストレージシステムとして判断することができる。一方、ストレージシステム９２０Ｂが、データ移行用ポート６０１Ｂにデータ移行用ケーブルを介してドライブ部コントローラ３０３Ａを接続した状態で、起動されるとする。すると、コントローラ１２０Ｂは、ドライブ部コントローラ３０３Ｂに加えて、ドライブ部コントローラ３０３Ａを検出することができる。このように、両方のドライブ部コントローラ３０３Ａ及び３０３Ｂを検出した場合、コントローラ１２０Ｂは、このストレージシステム９２０Ｂを、移行先のストレージシステムとして判断することができ、相手を、移行元のストレージシステムとして判断することができる。このように、ストレージシステム９２０Ａ、９２０Ｂの起動時刻に差がある場合には、上記の流れで自動判断することが可能である。なお、起動時刻に差が無い場合には、管理端末から、それぞれのコントローラ１２０Ａ、１２０Ｂに対し、移行元と移行先を指定してもよい。
【０１５８】
また、例えば、通信に使用するドライブ部コントローラが自動的に切り替えられても良い。具体的には、例えば、"移行元のストレージシステム９２０Ａのコントローラ（１）１２０Ａが接続されているドライブ部コントローラＡの３０３Ａを使用する"という前もって決められた設定を、各コントローラ１２０Ａ、１２０Ｂに対して行っておく。もし、予め決めておいたドライブ部コントローラＡの３０３Ａが障害を起こしている場合は、予め決めておいた探索候補順（例えば、移行元サブシステムのドライブ部コントローラＡ→移行先サブシステムのドライブ部コントローラＡ→移行元サブシステムのドライブ部コントローラＢ→移行先サブシステムのドライブ部コントローラＢ）に基づいて、次の候補となるドライブ部コントローラを用いて通信を試み、通信可能なドライブ部コントローラを検出したときに、そのドライブ部コントローラを介してコントローラ１２０Ａ、１２０Ｂ間の通信を継続することが可能である。
【図面の簡単な説明】
【０１５９】
【図１】図１は、本発明の第一実施例に係る計算機システムの構成例を示す。
【図２】図２は、第一のドライブ部コントローラ３０３Ａの構成例を示す。
【図３】図３は、複数のＨＤＤの記憶空間の領域割当ての一例の説明図である。
【図４】図４は、通信用領域３０７Ａの構成例を示す。
【図５】図５Ａは、第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂにメッセージを送信する場合のコントローラ１２０Ａ（プロセッサ１１２Ａ）の処理のフローチャートを示す。図５Ｂは、その場合のコントローラ１２０Ｂ（プロセッサ１１２Ｂ）の処理のフローチャートを示す。図５Ｃは、その場合のドライブ部コントローラ３０３（プロセッサ３０１）の処理のフローチャートを示す。
【図６】図６Ａは、第一のドライブ部コントローラ３０３Ａ（プロセッサ３０１Ａ）がロック獲得コマンドを受信した場合に図５ＣのＳ１２３で実行する処理のフローチャートを示す。図６Ｂは、第一のドライブ部コントローラ３０３Ａ（プロセッサ３０１Ａ）がロック解放コマンドを受信した場合に図５ＣのＳ１２３で実行する処理のフローチャートを示す。
【図７】図７Ａは、ＬＵ構成管理テーブル１１００Ａの構成例を示す。図７Ｂは、ポート管理テーブル１２００Ａの構成例を示す。図７Ｃは、ＲＡＩＤグループ管理テーブル１３００Ａの構成例を示す。
【図８】図８は、第一のドライブ部コントローラ３０３Ａ及び３０３Ｂがデータ移行用ケーブル９３０を介して接続された場合に実行される処理のフローチャートを示す。
【図９】図９は、ＬＵの制御権を第一のストレージシステム９２０Ａから第二のストレージシステム９２０Ｂに移すための処理のフローチャートである。
【図１０】図１０Ａは、ＬＵ制御権移行後のＬＵ構成管理テーブル１１００Ａの一例を示す。図１０Ｂは、ＬＵ制御権移行後のＬＵ構成管理テーブル１１００Ｂの一例を示す。
【図１１】図１１は、第二のストレージシステム９２０Ｂが第一のストレージシステム９２０Ａのユーザボリューム領域５０１Ａの空き部分に自分の配下のＬＵを設定するための処理のフローチャートである。
【図１２】図１２Ａは、図１１のＳ１９０が実行された場合のＬＵ構成管理テーブル１１００Ｂの一例を示す。図１２Ｂは、図１１のＳ１９１が実行された場合のＬＵ構成管理テーブル１１００Ｂの一例を示す。
【図１３】図１３は、第一のストレージシステム９２０Ａ内の全データを第二のストレージシステム９２０Ｂに移行する場合に実行される処理のフローチャートである。
【図１４】図１４は、図１３のＳ２２０のデータコピーのフローチャートである。
【図１５】図１５は、図１４のＳ２２１でのＬＵ構成管理テーブル１１００Ｂの一例を示す。
【図１６】図１６は、図１４のＳ２２４及びＳ２２５でのＬＵ構成管理テーブル１１００Ｂの一例を示す。
【図１７】図１７は、図１４のＳ２２３でのＬＵ構成管理テーブル１１００Ｂの一例を示す。
【図１８】図１８は、本発明の第二実施例で行われる全ＬＵデータ移行処理の一例を示す。
【図１９】図１９は、本発明の第三実施例にかかる計算機システムの構成例を示す。
【図２０】図２０Ａは、本発明の実施形態の概念の一例を示す。図２０Ｂは、その実施形態の更なる工夫の概念の一例を示す。
【符号の説明】
【０１６０】
９２０Ａ…第一のストレージシステム、９２０Ｂ…第二のストレージシステム、１２０Ａ、１２０Ｂ…コントローラ、３０３Ａ、３０３Ｂ…ドライブ部コントローラ、１３６Ａ、１３６Ｂ…データ移行プログラム
【図１】
2008097331.tif 000003
【図２】
2008097331.tif 000004
【図３】
2008097331.tif 000005
【図４】
2008097331.tif 000006
【図５】
2008097331.tif 000007
【図６】
2008097331.tif 000008
【図７】
2008097331.tif 000009
【図８】
2008097331.tif 000010
【図９】
2008097331.tif 000011
【図１０】
2008097331.tif 000012
【図１１】
2008097331.tif 000013
【図１２】
2008097331.tif 000014
【図１３】
2008097331.tif 000015
【図１４】
2008097331.tif 000016
【図１５】
2008097331.tif 000017
【図１６】
2008097331.tif 000018
【図１７】
2008097331.tif 000019
【図１８】
2008097331.tif 000020
【図１９】
2008097331.tif 000021
【図２０】
2008097331.tif 000022