(57)【要約】  本発明の一実施形態に係る情報システムは、仮想化機能を備えたＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）である第１の計算機と、ＳＤＳである第２の計算機とを含んでいる。第１の計算機は仮想化機能により、第２の計算機が有するボリュームを記憶領域として用いる論理ボリュームを提供できる。情報システムは、第２の計算機へのストレージ制御プログラムのインストール指示を受け付けると、第１の計算機が有する論理ボリュームのうち第２の計算機が有するボリュームを記憶領域とする論理ボリュームを特定し、特定された論理ボリュームが記憶領域として使用している、第２の計算機が有するボリュームに格納されたデータを、第１の計算機の有する記憶装置に移動する。その後第２の計算機にストレージ制御プログラムをインストールする。
2018158808.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムであって、
前記複数の計算機には、
第１ストレージ制御プログラムと管理プログラムとを実行する第１の計算機と、
第２ストレージ制御プログラムを実行する第２の計算機と、
が含まれており、
前記第２ストレージ制御プログラムは前記第２の計算機のプロセッサに、前記第２の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
前記第１ストレージ制御プログラムは前記第１の計算機のプロセッサに、前記第１の計算機の有する記憶装置または前記第１の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
前記第２の計算機に定義された前記ボリュームは、前記第１の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
前記管理プログラムは、前記第１の計算機のプロセッサに、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける第１の工程と、
前記第１の計算機が有する前記論理ボリュームのうち、前記第２の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第２の工程と、
前記第２の工程で特定された論理ボリュームである第１論理ボリュームが記憶領域として使用している、前記第２の計算機に定義された第１ボリュームに格納されたデータを、前記第１の計算機の有する記憶装置に移動する第３の工程と、
前記第３の工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールさせる第４の工程と、
を実行させることを特徴とする、情報システム。
【請求項２】
前記第１論理ボリュームは、前記第３の工程の実行前にライトデータの書き込み要求を受け付けると、前記第１ボリュームに前記ライトデータが書き込まれるよう、構成されており、
前記第３の工程は、前記第１ボリュームに格納されたデータが前記第１の計算機の有する記憶装置へ移動された後、前記第１の計算機の有する記憶装置を前記第１論理ボリュームの記憶領域とするよう、前記第１論理ボリュームの構成を変更する工程を含み、
前記第３の工程はまた、前記第１論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
ことを特徴とする、請求項１に記載の情報システム。
【請求項３】
前記複数の計算機の中にはさらに第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータを、前記第３の計算機の有する前記第３ボリュームに移動し、前記第３ボリュームを前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項２に記載の情報システム。
【請求項４】
前記複数の計算機の中にはさらに、第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータのうち、一部のデータを前記第３の計算機の有する前記第３ボリュームの領域に移動し、残りのデータを前記第１の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第３ボリュームの領域及び前記第１の計算機の有する記憶装置の領域を前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項２に記載の情報システム。
【請求項５】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項１に記載の情報システム。
【請求項６】
プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムにおけるプログラム交換方法であって、
前記複数の計算機には、
第１ストレージ制御プログラムを実行する第１の計算機と、
第２ストレージ制御プログラムを実行する第２の計算機と、
が含まれており、
前記第２ストレージ制御プログラムは前記第２の計算機のプロセッサに、前記第２の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
前記第１ストレージ制御プログラムは前記第１の計算機のプロセッサに、前記第１の計算機の有する記憶装置または前記第１の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
前記第２の計算機に定義された前記ボリュームは、前記第１の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
前記プログラム交換方法は、前記情報システムが、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける第１の工程と、
前記第１の計算機が有する前記論理ボリュームのうち、前記第２の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第２の工程と、
前記第２の工程で特定された論理ボリュームである第１論理ボリュームが記憶領域として使用している、前記第２の計算機に定義された第１ボリュームに格納されたデータを、前記第１の計算機の有する記憶装置に移動する第３の工程と、
前記第３の工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールする第４の工程と、
を実行することを特徴とする、プログラム交換方法。
【請求項７】
前記第１論理ボリュームは、前記第３の工程の実行前にライトデータの書き込み要求を受け付けると、前記第１ボリュームに前記ライトデータが書き込まれるよう、構成されており、
前記第３の工程は、前記第１ボリュームに格納されたデータが前記第１の計算機の有する記憶装置へ移動された後、前記第１の計算機の有する記憶装置を前記第１論理ボリュームの記憶領域とするよう、前記第１論理ボリュームの構成を変更する工程を含み、
前記第３の工程はまた、前記第１論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
ことを特徴とする、請求項６に記載のプログラム交換方法。
【請求項８】
前記複数の計算機の中にはさらに第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータを、前記第３の計算機の有する前記第３ボリュームに移動し、前記第３ボリュームを前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項７に記載のプログラム交換方法。
【請求項９】
前記複数の計算機の中にはさらに第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータのうち、一部のデータを前記第３の計算機の有する前記第３ボリュームの領域に移動し、残りのデータを前記第１の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第３ボリュームの領域及び前記第１の計算機の有する記憶装置の領域を前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項７に記載のプログラム交換方法。
【請求項１０】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項６に記載のプログラム交換方法。
【請求項１１】
プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムで実行される管理プログラムであって、
前記複数の計算機には、
第１ストレージ制御プログラムを実行する第１の計算機と、
第２ストレージ制御プログラムを実行する第２の計算機と、
が含まれており、
前記第２ストレージ制御プログラムは前記第２の計算機のプロセッサに、前記第２の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
前記第１ストレージ制御プログラムは前記第１の計算機のプロセッサに、前記第１の計算機の有する記憶装置または前記第１の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
前記第２の計算機に定義された前記ボリュームは、前記第１の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
前記管理プログラムは前記情報システムに、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける第１の工程と、
前記第１の計算機が有する前記論理ボリュームのうち、前記第２の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第２の工程と、
前記第２の工程で特定された論理ボリュームである第１論理ボリュームが記憶領域として使用している、前記第２の計算機に定義された第１ボリュームに格納されたデータを、前記第１の計算機の有する記憶装置に移動する第３の工程と、
前記第３の工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールさせる第４の工程と、
を実行させることを特徴とする、管理プログラム。
【請求項１２】
前記第１論理ボリュームは、前記第３の工程の実行前にライトデータの書き込み要求を受け付けると、前記第１ボリュームに前記ライトデータが書き込まれるよう、構成されており、
前記第３の工程は、前記第１ボリュームに格納されたデータが前記第１の計算機の有する記憶装置へ移動された後、前記第１の計算機の有する記憶装置を前記第１論理ボリュームの記憶領域とするよう、前記第１論理ボリュームの構成を変更する工程を含み、
前記第３の工程はまた、前記第１論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
ことを特徴とする、請求項１１に記載の管理プログラム。
【請求項１３】
前記複数の計算機の中にはさらに第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータを、前記第３の計算機の有する前記第３ボリュームに移動し、前記第３ボリュームを前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項１２に記載の管理プログラム。
【請求項１４】
前記複数の計算機の中にはさらに、第３の計算機が含まれており、前記第３の計算機は、前記第３の計算機の有する記憶装置を記憶領域とする第３ボリュームを有しており、
前記第１の計算機はさらに、前記第２の計算機が定義した第２ボリュームを記憶領域とする第２論理ボリュームを有し、
前記第３の工程はさらに、
前記第２論理ボリュームが記憶領域として使用している前記第２ボリュームに格納されたデータのうち、一部のデータを前記第３の計算機の有する前記第３ボリュームの領域に移動し、残りのデータを前記第１の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第３ボリュームの領域及び前記第１の計算機の有する記憶装置の領域を前記第２論理ボリュームの記憶領域とするよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項１２に記載の管理プログラム。
【請求項１５】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項１１に記載の管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、特にＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）として動作する計算機を含む情報システムに関する。
【背景技術】
【０００２】
ストレージシステム（ストレージ装置）の管理コストを削減するための技術として、ストレージシステムの仮想化技術がある。この技術は、管理方法が異なる多岐に渡るストレージシステムを、仮想化技術によって、統一的な管理を実現することで、管理コストを削減し、またストレージシステムの使い勝手を向上させる。【０００３】
特許文献１は、ストレージシステムの仮想化技術に関する。本文献では、ホスト計算機に接続された第１のストレージシステムに、第２のストレージシステムが接続された計算機システムが開示されている。この計算機システムは、ホスト計算機に対して、第２のストレージシステムのボリュームを第１のストレージシステムのボリュームとして提供する。この構成では、ホスト計算機からは、第２のストレージシステムは隠蔽されており、ホスト計算機の読み書き要求はすべて、第１ストレージシステムに発行される。ホスト計算機から受領した読み書き要求が、第２のストレージシステムのボリュームに対するものであれば、第１のストレージシステムはその要求を、第２のストレージシステムに発行して、読み書き要求を実行させる。これにより、ストレージの管理者は実質的に第１のストレージシステムだけを管理すれば良くなり、ストレージシステムの管理工数を大幅に削減できる。【０００４】
一方、近年、ＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）という技術が注目されている。この技術は、汎用用途のサーバで動作可能なソフトウェアによって、ストレージシステムの機能を実現する技術である。従来は、ベンダが、ストレージを専用装置（ソフトウエア＋ハードウエア）として提供していたが、ＳＤＳを提供する場合、ベンダはＳＤＳ用のソフトウェア（本明細書ではこれを、ストレージ制御プログラムと呼ぶ）のみをユーザに提供して、ユーザは自身で用意したハードウェア（汎用用途のサーバ）にこのソフトウェアをインストールすることで、ストレージシステムを構築することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２８３２７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＤＳの仕様（機能等）は、汎用用途のサーバにインストールされるストレージ制御プログラムに依存して異なり得る。そのため、多種多様のＳＤＳが混在する環境では、従来の専用装置で構成されるストレージシステムと同様に、管理の煩雑さという問題は起こり得る。【０００７】
しかしＳＤＳの場合、ユーザがＳＤＳにインストールするストレージ制御プログラムを自由に選択する（交換する）ことも可能である。そのため、ユーザのシステム環境において多種多様のＳＤＳが混在している場合、ＳＤＳのプログラムをユーザの用途にあったものに交換することで、管理の煩雑さを解消できることもある。【０００８】
ただし、異なる種類のＳＤＳでは、ＳＤＳ内に格納されるデータのフォーマットが異なることがあるので、ＳＤＳにインストールされているストレージ制御プログラムを新しいものに入れ替えた場合、既にＳＤＳ内に格納されているデータにアクセスすることができず、データが実質的に消失した状態になることもあり得る。そのため、既存のデータを失うことなくプログラムを入れ替えることができる技術が求められる。
【課題を解決するための手段】
【０００９】
本発明の一実施形態に係る情報システムは、仮想化機能を備えたＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）である第１の計算機と、ＳＤＳである第２の計算機とを含んでいる。第１の計算機は仮想化機能により、第２の計算機が有するボリュームを記憶領域として用いる論理ボリュームを提供できる。情報システムは、第２の計算機へのストレージ制御プログラムのインストール指示を受け付けると、第１の計算機が有する論理ボリュームのうち第２の計算機が有するボリュームを記憶領域とする論理ボリュームを特定し、特定された論理ボリュームが記憶領域として使用している、第２の計算機が有するボリュームに格納されたデータを、第１の計算機の有する記憶装置に移動する。その後第２の計算機にストレージ制御プログラムをインストールする。
【発明の効果】
【００１０】
本発明によれば、データを維持しつつ、ＳＤＳのプログラムの交換が可能になる。
【図面の簡単な説明】
【００１１】
【図１】本実施例における情報システムの構成を示す図である。
【図２】本実施例におけるＳＤＳの構成を示す図である。
【図３】仮想化機能の概念を説明する図である。
【図４】本実施例におけるＩ／Ｏ要求のフォーマットの例を示す図である。
【図５】本実施例におけるＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能の概念を説明する図である。
【図６】管理情報に含まれる情報を示す図である。
【図７】論理ボリューム情報の形式を示す図である。
【図８】実ページ情報の形式を示す図である。
【図９】記憶装置情報の形式を示す図である。
【図１０】記憶装置グループ情報の形式を示す図である。
【図１１】空きページ管理情報キューの構造を表した図である。
【図１２】ストレージ制御プログラムに含まれるプログラムモジュールを示す図である。
【図１３】リード処理実行部の処理フロー（１）を示す図である。
【図１４】リード処理実行部の処理フロー（２）を示す図である。
【図１５】ライト処理実行部の処理フロー（１）を示す図である。
【図１６】ライト処理実行部の処理フロー（２）を示す図である。
【図１７】プログラム交換処理の手順を示す図である。
【図１８】コピー処理スケジュール部の処理フローを示す図である。
【図１９】コピー処理実行部の処理フローを示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
実施例の説明に入る前に、実施例で用いられる各種用語について説明する。
【００１４】
以下で説明する実施例においては、ＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）は、従来からあるストレージ装置の対義語として用いられる語である。従来からあるストレージ装置の多くは、専用のハードウェアで構成されていた。以下で説明する実施例においては特に断りのない限り、従来からあるストレージ装置（つまり専用のハードウェアで構成されたストレージ装置）を、「在来型ストレージ装置」と呼ぶ。
【００１５】
逆に、専用のハードウェアを用いずに構成されたストレージ装置、具体的にはパーソナルコンピュータ（ＰＣ）等の汎用的な計算機に、ストレージ装置の機能を実現するためのソフトウェア（コンピュータプログラム）を実装した装置を「ＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）」と呼ぶ。
【００１６】
以下で説明する実施例においては、「ストレージ装置」は、在来型ストレージ装置とＳＤＳの両方を意味する語として用いられる。たとえば在来型ストレージ装置とＳＤＳが共通に備える機能や特徴を説明する場合、「ストレージ装置」の語が用いられる。
【００１７】
「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホスト計算機等のイニシエータに提供する記憶空間のことを意味する。イニシエータがボリューム上の領域に対するアクセス要求、たとえばデータリード要求を発行すると、ボリュームを提供しているターゲットデバイスは、その領域に対応付けられているターゲットデバイス上の領域（物理領域と呼ばれる）からデータを読み出して、イニシエータに返送する。
【００１８】
ストレージ装置の中には、ボリュームとして、いわゆるＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ技術により形成される仮想的なボリュームを、イニシエータに提供できるものがある。以下で説明する実施例では、仮想的なボリュームをイニシエータに提供する機能を「Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能」と呼ぶ。
【００１９】
仮想的なボリュームは、その初期状態（定義された直後）では、記憶空間上の領域に記憶デバイスが対応付けられていない。イニシエータが記憶空間上の領域にデータ書き込み要求を発行した時点で、ストレージ装置はその領域に対応付けられる記憶デバイスを動的に決定する。以下で説明される実施例におけるＳＤＳは、仮想的なボリュームをイニシエータに提供できる。
【００２０】
「ボリュームの仮想化機能」（または単に「仮想化機能」と呼ばれることもある）とは、他のストレージ装置が有するボリュームを、自己の論理ボリュームとしてイニシエータデバイスに提供する機能である。ボリュームの仮想化機能は、たとえば専用の装置（仮想化アプライアンスと呼ばれる）に実装されて提供される。あるいはストレージ装置がボリュームの仮想化機能を備えていることもある。以下に述べる実施例においては、ＳＤＳがボリュームの仮想化機能を備えている例を説明する。
【実施例】
【００２１】
図１は、本実施例における情報システムの構成を示す。情報システムは、複数のサーバコンピュータ（１００，１０５，１４０）を有し、これらのサーバコンピュータ（１００，１０５，１４０）がネットワーク１２０で相互接続されて構成される。サーバコンピュータ（１００，１０５，１４０）はいずれも、パーソナルコンピュータ等の汎用的な計算機であり、基本的なハードウェア構成はいずれも同じである。ただしそれぞれのサーバコンピュータ（１００，１０５，１４０）のハードウェア構成は、必ずしも完全に同一でなくてもよい。たとえばサーバコンピュータ（１００，１０５，１４０）の有するプロセッサ（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））の数やメモリ容量等が異なっていてもよい。【００２２】
複数のサーバコンピュータ（１００，１０５，１４０）のうち、サーバコンピュータ１０５は、ユーザが使用するアプリケーションプログラム（ＡＰ）が実行される計算機で、以下ではこれを「ＡＰサーバ１０５」と呼ぶ。アプリケーションプログラムはたとえば、データベース管理システム（ＤＢＭＳ）あるいは表計算ソフトウェアやワードプロセッサ等のプログラムである。【００２３】
一方サーバコンピュータ１００は、ＡＰサーバ１０５が使用するデータを格納するためのストレージ装置として動作する計算機である。サーバコンピュータ１００はいわゆるＳｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ  （ＳＤＳ）であり、サーバコンピュータ１００のプロセッサで、サーバコンピュータ１００はストレージ装置として機能させるためのプログラム（後述するストレージ制御プログラム１３０）が実行されることにより、サーバコンピュータ１００はストレージ装置としての動作を行う。そのため、以下ではサーバコンピュータ１００のことを、「ＳＤＳ１００」と呼ぶ。【００２４】
ＳＤＳ１００は、１以上のボリュームを定義することができ、定義されたボリュームはＡＰサーバ１０５等のイニシエータに提供される。ＡＰサーバ１０５は、ボリューム（を提供しているＳＤＳ１００）に対してライトコマンドを発行することで、アプリケーションプログラムによって生成されたデータ（たとえばデータベーステーブルなど）を、ボリュームに格納し、またボリューム（を提供しているＳＤＳ１００）に対してリードコマンドを発行することで、データをボリュームから読み出す。【００２５】
本実施例では、ＡＰサーバ１０５とＳＤＳ１００との間でやり取りされるＩ／Ｏ要求（コマンド）は、ＡＮＳＩ  Ｔ１０で規格化されているＳＣＳＩの規格に従ったコマンド（以下、「ＳＣＳＩコマンド」と呼ぶ）とする。ただし、ＳＣＳＩコマンド以外の種類のＩ／Ｏ要求が用いられてもよい。【００２６】
サーバコンピュータ１４０は、情報システムの使用者または管理者（以下では単に、「ユーザ」と呼ぶ）が情報システムの管理操作を行うために使用する計算機であり、以下ではこれを「管理サーバ１４０」と呼ぶ。管理サーバ１４０は、ユーザが情報システムの管理操作を行う時に使用する、キーボードやマウスなどの入力デバイス、ディスプレイ等の出力デバイスを有する。もちろん管理サーバ１４０以外のサーバコンピュータ（ＳＤＳ１００、ＡＰサーバ１０５）も入力デバイスと出力デバイスを備えていてもよい。【００２７】
ＳＤＳ１００、ＡＰサーバ１０５、管理サーバ１４０はそれぞれ、情報システム内に複数存在していてもよい。ただし本実施例では、ＡＰサーバ１０５、管理サーバ１４０はそれぞれ情報システム内に１台存在し、ＳＤＳ１００は２台以上情報システム内に存在する例を説明する。また、それぞれのＳＤＳ１００で実行されるプログラム（ストレージ制御プログラム１３０）は、必ずしも同一のプログラムでなくてもよい。【００２８】
ネットワーク１２０にはたとえば、イーサネットやファイバチャネル等の伝送媒体が用いられる。ネットワーク１２０は、ＡＰサーバ１０５がＳＤＳ１００に対してデータを読み書きする際に用いられるとともに、管理サーバ１４０とＳＤＳ１００（またはＡＰサーバ１０５）との間での管理操作コマンド（または各種管理情報）のやり取りにも用いられる。ただし別の実施形態として、ＡＰサーバ１０５とＳＤＳ１００との間で読み書きされるデータを送受信するためのネットワークと、管理サーバ１４０が管理操作コマンド等を送受信するためのネットワークの、２種類が設けられていてもよい。【００２９】
図２は、ＳＤＳ１００の構成を示している。ＳＤＳ１００は、一つ以上のプロセッサ（ＣＰＵ）２００、主記憶（メモリ）２１０、記憶装置２２０、ネットワークインタフェースコントローラ（ＮＩＣ）１９０、ディスクインタフェース（ＤＩＳＫ  Ｉ／Ｆ）１８０を含む。プロセッサ２００、記憶装置２２０、ＮＩＣ１９０、ＤＩＳＫ  Ｉ／Ｆ１８０の数は、１つでも複数でも良い。【００３０】
プロセッサ２００は、主記憶２１０にロードされた各プログラムを実行する。主記憶２１０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性メモリであり、主記憶２１０には、ストレージ制御プログラム１３０、管理プログラム１５０、インストールプログラム２５０、そしてストレージ制御プログラム１３０が利用する管理情報２３０が格納される。【００３１】
一方、記憶装置２２０は、磁気ディスクまたはフラッシュメモリ等の、不揮発性記憶媒体を有する記憶デバイスで、ＡＰサーバ１０５から書き込まれたデータを格納するために用いられる。なお、上で述べたストレージ制御プログラム１３０や管理情報２３０などは、ＳＤＳ１００が稼働していない時（電源ＯＦＦの状態の時）には記憶装置２２０に格納されており、ＳＤＳ１００が起動された時に、記憶装置２２０から主記憶２１０にロードされるとよい。【００３２】
ディスクインタフェース１８０は、プロセッサ２００と記憶装置２２０との間に設けられるインタフェースデバイスである。一方ＮＩＣ１９０は、ＳＤＳ１００をネットワーク１２０に接続するためのインタフェースデバイスで、ＳＤＳ１００とネットワーク１２０間に設けられる伝送線（ネットワークケーブル）を接続するためのポートも有する。そのため以下では、ＮＩＣ１９０を「ポート１９０」と表記することもある。【００３３】
続いて主記憶２１０上に格納されているプログラムの役割を概説する。なお、以後の説明では、サーバコンピュータ（ＳＤＳ１００，ＡＰサーバ１０５、管理サーバ１４０等）で実行される処理について、「プログラム」を主語として説明を行う場合があるが、実際には、サーバコンピュータのプロセッサがプログラムを実行することによって、プログラムに記述された処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語にして処理の内容を説明することがある。そしてプログラムを主語にして説明されている処理の主体は、実際にはプログラムを実行しているプロセッサであることを意味する。【００３４】
ストレージ制御プログラム１３０は、ＳＤＳ１００（つまりサーバコンピュータ）をストレージ装置として機能させるためのプログラムである。具体的には、ＳＤＳ１００はストレージ制御プログラム１３０の働きにより、ＡＰサーバ１０５等のイニシエータに１以上のボリュームを提供する、イニシエータからＩ／Ｏ要求（リード要求やライト要求）を受け付けて、リード要求で指定されたアドレスのデータをイニシエータに返送する、またはライト要求で指定されたライトデータをボリュームに格納する等の処理を行う。なお、良く知られているように、在来型ストレージ装置はボリュームを提供する以外の機能（たとえばボリュームのミラーコピーを作成する等）を有する。ストレージ制御プログラム１３０も同様に、ＳＤＳ１００にボリュームを提供する以外の機能を実現するプログラムであってもよい。【００３５】
またストレージ制御プログラム１３０は、ＡＰサーバ１０５から頻繁にアクセスされるデータを保持しておくための領域を、主記憶２１０上に確保する。ＡＰサーバ１０５から頻繁にアクセスされるデータを保持するための領域をキャッシュ領域２４０と呼ぶ。ただしＳＤＳ１００は必ずしもキャッシュ領域２４０を有していなくてもよい。【００３６】
またＳＤＳ１００は、主記憶２１０に保持されているデータが停電等の障害時に消失することを防ぐ手段を有していてもよい。たとえばＳＤＳ１００がバッテリーを有し、停電時にバッテリーから供給される電力を用いて、主記憶２１０上のデータを維持するとよい。ただしＳＤＳ１００は必ずしもバッテリー等のデータ維持手段を有していなくてもよい。【００３７】
管理プログラム１５０（あるいはストレージ管理プログラム１５０）は、情報システム内のストレージ装置（ＳＤＳ）を管理するためのプログラムである。具体的には管理プログラム１５０で行われる管理とは、ボリュームの定義、削除等の操作、ＳＤＳ１００の状態の監視などである。本実施例では、管理プログラム１５０は情報システム内の特定の１台のＳＤＳ１００（後述するＳＤＳ＃ｘ）にインストールされている例を説明する。管理プログラム１５０は情報システム内の全てのＳＤＳの管理を行うことができる。また管理サーバ１４０では、ＳＤＳ１００で実行される管理プログラム１５０と通信を行う、クライアントプログラム（非図示）が実行されており、ユーザはクライアントプログラムを用いて、管理サーバ１４０にボリュームの定義等の指示を行う。【００３８】
インストールプログラム２５０は、プログラムをインストールするためのプログラムである。インストールプログラム２５０は情報システム内の各ＳＤＳ１００が有している。例えば、ストレージ制御プログラム１３０は、インストールプログラム２５０によってＳＤＳ１００にインストールされる。ユーザがプログラムのインストールを行う時、ユーザは管理サーバ１４０を用いて、ＳＤＳ１００で実行される管理プログラム１５０に対してインストールの指示を出す。インストールの指示を受領した管理プログラム１５０は、プログラムのインストール先のＳＤＳ１００が有するインストールプログラム２５０にプログラムのインストールを行わせる。【００３９】
なお、ＳＤＳ１００では上で述べたプログラム以外のプログラムも実行されていてよい。たとえばＳＤＳ１００（のプロセッサ２００）では、汎用的な計算機で実行されるオペレーティングシステムが実行されていても良く、その場合ストレージ制御プログラム１３０等は、オペレーティングシステムの提供する機能を用いながら動作してもよい。あるいはＳＤＳ１００上で、いわゆる仮想計算機を定義するためのプログラム（たとえばハイパーバイザと呼ばれる）が実行されても良く、その場合ストレージ制御プログラム１３０等は、定義された仮想計算機上で実行されるとよい。【００４０】
本実施例に係る情報システムには、複数のＳＤＳ１００が混在している。それぞれのＳＤＳ１００で実行されるストレージ制御プログラム１３０は必ずしも同一種類のプログラムでなくてもよい。情報システムで複数種類のストレージ制御プログラム１３０が実行される場合、それぞれのストレージ制御プログラム１３０は少なくとも、汎用的な計算機（本実施例におけるサーバコンピュータなど）で実行可能なプログラムで、且つＳＤＳ１００にストレージ装置としての最低限の機能を提供させることができるプログラムである必要があるが、サポートされる機能に差異があってもよい。なお、ストレージ装置としての最低限の機能とは、イニシエータに１以上のボリュームを提供し、イニシエータからのリードコマンド、ライトコマンドに従って、データの読み書きを行う機能である。【００４１】
本実施例では、図３に示すように、ボリュームの仮想化機能をもったＳＤＳ１００（以下ではこれを、「ＳＤＳ＃ｘ（３００）」と呼ぶ）が１台存在し、またＳＤＳ＃ｘ（３００）よりも提供できる機能が少ないＳＤＳ１００（以下ではこれを、「ＳＤＳ＃ｙ（３０１）」と呼ぶ）が１台以上、情報システム内に存在することを前提とする。たとえばＳＤＳ＃ｙ（３０１）は、ＳＤＳ＃ｘ（３００）が有する仮想化機能を有していない。あるいは別の例として、ＳＤＳ＃ｘ（３００）はボリュームの複製（ミラー）を遠隔地のストレージ装置に作成する機能（リモートミラーリング機能）や、データを圧縮して格納する機能を持っているのに対し、ＳＤＳ＃ｙ（３０１）はそれらの機能を有していない。【００４２】
情報システム内に存在するＳＤＳ＃ｘ（３００）とＳＤＳ＃ｙ（３０１）の数は、いずれも１つでも複数でも良いが、本実施例では特に断りのない限り、情報システム内にＳＤＳ＃ｘ（３００）が１つ、ＳＤＳ＃ｙ（３０１）が複数存在する例を説明する。またＳＤＳ＃ｙ（３０１）が複数存在する場合、それぞれのＳＤＳ＃ｙ（３０１）はストレージ装置としての最低限の機能を提供するが、それ以外にサポートされる機能の種類は異なっていてもよい。【００４３】
そして本実施例に係る情報システムでは、ＳＤＳ＃ｘ（３００）は仮想化機能により、その他のＳＤＳ＃ｙ（３０１）が有するボリュームを、自身の（ＳＤＳ＃ｘ（３００）の）ボリュームとしてＡＰサーバ１０５に提供する。なお、以下の説明では主にＳＤＳ＃ｘ（３００）が行う機能についての説明を行う。そこでＳＤＳ＃ｘ（３００）がＡＰサーバ１０５に提供するボリュームと、その他のＳＤＳ（ＳＤＳ＃ｙ（３０１））が有するボリュームとの混同を避けるために、ＳＤＳ＃ｘ（３００）がＡＰサーバ１０５に提供するボリュームの事は「論理ボリューム」と呼ぶ。また本実施例では、ＡＰサーバ１０５は、ＳＤＳ＃ｘ（３００）が提供する論理ボリュームに対してＩ／Ｏ要求（リードコマンドやライトコマンド）を発行するように構成されており、他のＳＤＳ１００（ＳＤＳ＃ｙ（３０１））に対して直接Ｉ／Ｏ要求を発行しないように構成されている前提とする。【００４４】
続いて、本実施例に係るＳＤＳ＃ｘにおける記憶領域の管理方法について説明する。ＳＤＳ＃ｘ（３００）は、記憶装置２２０の記憶空間を直接イニシエータ（ＡＰサーバ１０５など）に提供せず、これとは異なる記憶空間である論理ボリュームを定義する。ＳＤＳ＃ｘ（３００）は論理ボリュームを複数定義可能である。各論理ボリュームにはＳＤＳ＃ｘ（３００）内で一意な識別番号が付され、これを論理ボリューム識別子（あるいは、論理ボリュームＩＤ）と呼ぶ。【００４５】
ＳＤＳ＃ｘは、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能により定義された論理ボリュームをＡＰサーバ１０５に提供することができる。同時にＳＤＳ＃ｘはボリュームの仮想化機能を有し、他のストレージ装置の有する記憶領域を用いた論理ボリュームを定義することもできる。【００４６】
図３を用いて、仮想化機能の概要を説明する。図３において、ＳＤＳ＃ｘ（３００）は仮想化機能を有する装置で、ＬＶ０，ＬＶ１はいずれも、ＳＤＳ＃ｘ（３００）がＡＰサーバ１０５（またはその他の装置）に提供する論理ボリュームを表す。ＬＶ０はＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能により定義された論理ボリュームである。論理ボリュームＬＶ０は、ＳＤＳ＃ｘ（３００）内の記憶装置２２０の記憶領域（実ページ）を用いて形成される。【００４７】
一方、ＬＶ１は仮想化機能により定義される論理ボリュームで、ＬＶ１は、他のストレージ装置（たとえばＳＤＳ＃ｙ（３０１））が提供するボリュームを記憶領域として使用するように構成されている。図３は、論理ボリュームＬＶ１がＳＤＳ＃ｙ（３０１）が提供するボリューム（ＬＶ２）を記憶領域として使用する構成になっている状態を表した概念図である。以下ではこの状態を、「ＬＶ１にＬＶ２がマップされている」、または「ＬＶ１にＬＶ２が割り当てられている」と表現する。【００４８】
ボリュームＬＶ２がマップされている論理ボリュームＬＶ１に対してＡＰサーバ１０５がＩ／Ｏ要求（たとえばリードコマンド）を発行すると、ＳＤＳ＃ｘ（３００）はそのＩ／Ｏ要求を、論理ボリュームＬＶ１にマップされているボリューム（ボリュームＬＶ２）に対するＩ／Ｏ要求に変換する。さらにＳＤＳ＃ｘ（３００）はネットワーク１２０経由で、変換されたＩ／Ｏ要求をＳＤＳ＃ｙ（３０１）に発行する（つまりこの時ＳＤＳ＃ｘ（３００）は、ＡＰサーバ１０５に対してはターゲットデバイスとして動作し、ＳＤＳ＃ｙ（３０１）に対してイニシエータとして動作する）。【００４９】
図４に、本実施例において、イニシエータ（ＡＰサーバ１０５等）からＳＤＳ１００に対して発行されるＩ／Ｏ要求（リードコマンドやライトコマンド）のフォーマットの例を示す。Ｉ／Ｏ要求４００には少なくとも、オペレーションコード４０１、ポートＩＤ４０２、ボリューム識別子４０３、アクセスアドレス４０４、データ長４０５が含まれる。【００５０】
オペレーションコード４０１には、Ｉ／Ｏ要求の種類が格納される。たとえばＡＰサーバ１０５がリードコマンドを発行する場合、オペレーションコード４０１にリードコマンドである旨を表す情報が格納される。【００５１】
ポートＩＤ４０２は、アクセス対象のボリュームを有するＳＤＳ１００のポート１９０の識別子である。ポート１９０の識別子には、ｉＳＣＳＩ  Ｎａｍｅ（ネットワーク１２０がＴＣＰ／ＩＰプロトコルを伝送するネットワークの場合）や、ＰＯＲＴ  ＩＤ（ネットワーク１２０がファイバチャネルで構成されたネットワークの場合）などが用いられる。【００５２】
ボリューム識別子４０３は、アクセス対象のボリュームの識別子で、たとえばＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）等が用いられる。アクセスアドレス４０４とデータ長４０５は、アクセス対象ボリューム内の、アクセス対象範囲を表す情報である。アクセスアドレス４０４に“Ａ”、データ長４０５に“Ｂ”が含まれている場合、アドレスＡで始まるサイズＢの領域がアクセス対象範囲であることを表す。なお、アクセスアドレス４０４やデータ長４０５に格納される情報の単位は、特定のものには限定されない。たとえばデータ長４０５にはブロック数（１ブロックはたとえば５１２バイトの領域である）が格納され、またアクセスアドレス４０４にはＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が格納されるとよい。【００５３】
また、Ｉ／Ｏ要求４００には、上で説明した以外の情報（図４では“その他４０６”と表記する）が含まれていてもよい。たとえばＩ／Ｏ要求がライトコマンドの場合、データ長４０５の後に、ライト対象データが付加される。【００５４】
ＡＰサーバ１０５がＬＶ１に対するＩ／Ｏ要求を発行した時、ポートＩＤ４０２には、ＳＤＳ＃ｘ（３００）のポート１９０−０の識別子が含まれ、ボリューム識別子４０３にはＬＶ１の識別子（ＬＵＮなど）が含まれている。ＳＤＳ＃ｘ（３００）はこのＩ／Ｏ要求を受領すると、ポートＩＤ４０２を、ＳＤＳ＃ｙ（３０１）のポート１９０−１の識別子に変更し、ボリューム識別子４０３をＬＶ２のボリューム識別子に変更することで、Ｉ／Ｏ要求の変換を行う。そして変換されたＩ／Ｏ要求を、ネットワーク１２０経由でＳＤＳ＃ｙ（３０１）に送信する。【００５５】
なお、本実施例では特に断りのない限り、ＬＶ１のサイズは、ＬＶ１にマップされるボリューム（図３の例ではＬＶ２）のサイズと同じ前提とする。またＬＶ１上の各アドレスは、ＬＶ２の同じアドレスにマップされている前提とする。そのためＳＤＳ＃ｘ（３００）は、ＡＰサーバ１０５から発行された、ＬＶ１に対するＩ／Ｏ要求を変換する時、アクセスアドレス４０４やデータ長４０５は変更しない。【００５６】
ただし別の実施形態として、ＬＶ１に複数のボリュームがマップされる構成もあり得る。たとえば図３において、ＬＶ１の記憶空間の前半にはＬＶ２がマップされ、ＬＶ１の記憶空間の後半にはＳＤＳ＃ｙ（３０１−２）のボリュームＬＶ３がマップされるように、ＬＶ１が構成されていてもよい。ＬＶ１がこのように構成されている場合、ＳＤＳ＃ｘ（３００）はＬＶ１に対するＩ／Ｏ要求の変換を行う時、アクセスアドレス４０４の変更を行うことがある。【００５７】
さらに別の実施形態として、ＬＶ１の記憶空間の一部に、ＳＤＳ＃ｘ（３００）の有する記憶装置２２０の記憶空間がマップされるように構成されてもよい。【００５８】
続いてＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能と、ＳＤＳ＃ｘ（３００）内での記憶領域の管理方法について説明する。【００５９】
Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能により形成される論理ボリュームは、自身が（つまりＳＤＳ＃ｘ（３００）が）有する記憶装置２２０を記憶領域として使用するように構成されている。ただし最初は（この論理ボリュームが定義された直後は）、論理ボリューム上の各アドレスに対して書き込まれるデータの格納するために使用される記憶領域は定まっていない。ＡＰサーバ１０５等のイニシエータから論理ボリュームへのライト要求を受け付けたときにはじめて、ＳＤＳ＃ｘ（３００）はライト対象範囲（ライト要求で指定されている範囲）に書き込まれるデータの格納先となる、記憶装置２２０の記憶領域を決定する。以下では、ライト対象範囲（ライト要求で指定されている範囲）に書き込まれるデータの格納先を決定する処理のことを、「割り当てる」と表現する。【００６０】
Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能により論理ボリュームに割り当てられる記憶領域について説明する。ＳＤＳ＃ｘ（３００）は、複数の記憶装置２２０の中のいずれか１つが故障しても、その記憶装置２２０のデータを回復できるＲｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ／Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ／Ｄｅｖｉｃｅ  （ＲＡＩＤ）機能を有する。ＳＤＳ＃ｘ（３００）は、ＳＤＳ＃ｘ（３００）内のいくつか（たとえば４つ、８つ等）の記憶装置２２０を用いて１つのＲＡＩＤを構成する。ＲＡＩＤを構成する記憶装置２２０の集合を記憶装置グループ２８０と呼ぶ。本実施例に係るＳＤＳ＃ｘ（３００）では、１つの記憶装置グループ２８０は同一種類の記憶装置２２０から構成される。またＳＤＳ＃ｘ（３００）は、記憶装置グループ２８０の各記憶領域を、一次元のアドレスで特定可能にする記憶空間として管理する。【００６１】
図５を用いて、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能により形成される論理ボリュームと記憶装置グループ２８０の関係について説明する。ＳＤＳ＃ｘ（３００）は論理ボリューム（図中の“ＬＶ０”）に割り当てられる記憶領域の管理の為に、論理ボリュームを複数の仮想ページ（図５では、ＶＰ０、ＶＰ１、ＶＰ２）という所定サイズの領域ごとに管理している。論理ボリュームに記憶領域を割り当てる際、ＳＤＳ＃ｘ（３００）はこの仮想ページ毎に記憶領域を割り当てる。各仮想ページには論理ボリューム内で一意な識別番号が付される。この識別番号を仮想ページ番号と呼ぶ（あるいは「仮想ページ＃」と表記されることもある）。また、仮想ページ番号がｎの仮想ページは、“仮想ページ＃ｎ”と表記される。【００６２】
仮想ページは、ＳＤＳ＃ｘ（３００）内部で論理ボリュームの記憶空間の管理のためにのみ用いられる概念である。ＡＰサーバ１０５等のイニシエータは、論理ボリュームの記憶領域にアクセスする際には、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）などのアドレスを用いて、アクセス対象の記憶領域を特定する。ＡＰサーバ１０５が論理ボリュームへのアクセス要求を発行した時、ＳＤＳ＃ｘ（３００）は、ＡＰサーバ１０５が指定したＬＢＡを仮想ページ番号及び仮想ページ内の相対アドレス（仮想ページ先頭からのオフセットアドレス）に変換する。この変換は、ＬＢＡを仮想ページサイズで除算することで実現できる。仮に仮想ページのサイズがＰ（ＭＢ）とすると、論理ボリュームの先頭位置からＰ（ＭＢ）分の領域が仮想ページ＃０として管理され、その次のＰ（ＭＢ）分の領域が仮想ページ＃１として管理される。そしてそれ以降も同様に、Ｐ（ＭＢ）の領域がそれぞれ、仮想ページ＃２、＃３…として管理される。【００６３】
ＳＤＳ＃ｘ（３００）が論理ボリュームを定義した直後は、各仮想ページに物理記憶領域は割り当てられていない。ＳＤＳ＃ｘ（３００）は、ＡＰサーバ１０５から仮想ページに対するライト要求を受け付けた時点ではじめて、その仮想ページに対して物理記憶領域を割り当てる。仮想ページに割り当てられる物理記憶領域は実ページと呼ばれる。実ページは、記憶装置グループ２８０上の記憶領域である。図５では、仮想ページ＃０（ＶＰ０）に実ページＲＰ０が割り当てられている状態を表している。【００６４】
実ページは、記憶装置グループ２８０の複数の記憶装置２２０の記憶領域を用いて形成される領域である。図５において、１６０−１，１６０−２，１６０−３，１６０−４はそれぞれ、各記憶装置２２０の記憶領域を表している。また、図５で例示している記憶装置グループ２８０のＲＡＩＤレベル（ＲＡＩＤ技術における、データ冗長化方式の種類。ＲＡＩＤレベルには一般的には、ＲＡＩＤレベル１（ＲＡＩＤ  １）からＲＡＩＤレベル６（ＲＡＩＤ  ６）の種類がある）は、ＲＡＩＤ４で、またデータドライブ３台、パリティドライブ１台で構成されるＲＡＩＤである。ただし、記憶装置グループ２８０のＲＡＩＤレベルには、ＲＡＩＤ４以外のもの（たとえばＲＡＩＤ５、ＲＡＩＤ６等）が採用されてもよい。【００６５】
ＳＤＳ＃ｘ（３００）は、記憶装置グループ２８０に属する各記憶装置２２０の記憶領域を、ストライプブロックと呼ばれる複数の固定サイズの記憶領域に分割して管理する。たとえば図５において、０（Ｄ），１（Ｄ），２（Ｄ）…、またはＰ０，Ｐ１…と記載されているそれぞれの領域が、ストライプブロックを表している。【００６６】
図５で、ストライプブロックのうち、Ｐ０，Ｐ１…と記載されているストライプブロックは、ＲＡＩＤ機能により生成される冗長データ（パリティ）の格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、０（Ｄ），１（Ｄ）、２（Ｄ）…と記載されているストライプブロックは、ＡＰサーバ１０５から書き込まれるデータ（冗長データではないデータ）が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。パリティストライプには、複数のデータストライプを用いて生成される冗長データが格納される。【００６７】
以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセットのことを、「ストライプライン」と呼ぶ。図５に示された例では、たとえばパリティストライプＰ０には、データストライプ０（Ｄ），１（Ｄ），２（Ｄ）を用いて生成される冗長データ（パリティ）が格納される関係にあり、データストライプ０（Ｄ），１（Ｄ），２（Ｄ）とパリティストライプＰ０は、同一のストライプラインに属する。【００６８】
つまり１つのストライプラインに属する各ストライプブロックは、ストレージ装置（１６０−１，１６０−２，１６０−３，１６０−４）上の同じ位置（アドレス）に存在する。ただし別の実施形態として、同一ストライプラインに属する各ストライプブロックが、記憶装置２２０上の異なるアドレスに存在する構成が採用されてもよい。実ページ（たとえばＲＰ０、ＲＰ１）は図５に示されるように、１または複数のストライプラインから構成される領域である。【００６９】
またＳＤＳ＃ｘ（３００）は、記憶装置グループ２８０の各記憶領域（ブロック）を、一次元のアドレスで特定可能にする記憶空間として管理する。以下ではこの記憶空間を「記憶装置グループの記憶空間」と呼び、この記憶空間上のアドレスを「記憶装置グループのアドレス」または「記憶装置グループアドレス」と呼ぶ。記憶装置グループアドレスの例を図５に示す。記憶装置グループの記憶空間は図５に示されているように、記憶装置グループ２８０内の各ストライプが、１つずつ順に配置された記憶空間である。記憶装置グループ内の先頭のストライプブロックの記憶装置グループアドレスが０と定められ、以下各ストライプブロックに、たとえば図５に示されるようにアドレスが付される。記憶装置グループのアドレスは、実ページと記憶装置グループ２８０上の記憶領域の対応関係を管理するために用いられる。【００７０】
また実ページが仮想ページに割り当てられる場合、データストライプ（０（Ｄ），１（Ｄ）等）のみが割り当てられ、パリティストライプは割り当てられない。そのため、実ページ上のライトデータの格納される領域の合計サイズは、仮想ページのサイズと等しい関係にある。つまり、（実ページのサイズーパリティ格納領域のサイズ）＝仮想ページサイズ、の関係にある。図５ではＲＡＩＤ４の構成例についてのみ示されているが、たとえば記憶装置グループ２８０のＲＡＩＤタイプがＲＡＩＤ１の場合には、実ページサイズは、仮想ページサイズの２倍になる。【００７１】
なお、ＳＤＳ＃ｘ（３００）が必ずしもＲＡＩＤ機能をサポートしていなくてもよい。その場合、パリティストライプは定義されず、実ページのサイズと仮想ページのサイズは同じになる。【００７２】
仮想ページ内の各領域と、実ページ内の各領域との関係（マッピング）は、図５に示されている通りである。つまり、実ページの先頭ストライプからパリティを除いた領域（０（Ｄ）、１（Ｄ）、２（Ｄ））が、仮想ページの先頭領域に割り当てられている。それ以降も同様に、実ページの２番目以降の各ストライプからパリティを除いた領域（３（Ｄ）、４（Ｄ）、５（Ｄ）…）が、順番に仮想ページの領域に割り当てられる。【００７３】
このように、仮想ページ内の各領域と実ページ内の各領域とのマッピングは規則的にマッピングされているため、ＳＤＳ＃ｘは、ＡＰサーバ１０５からのアクセス要求で指定されている論理ボリューム上のアクセス位置（ＬＢＡ）から仮想ページ番号及び仮想ページ内の相対アドレス（仮想ページ先頭からのオフセットアドレス）を求めることで、当該アクセス位置に対応付けられている記憶装置２２０及びその記憶装置２２０内の領域（データストライプ）を一意に算出できる。さらにアクセス位置に対応付けられているデータストライプに加え、そのデータストライプと同一ストライプラインに属するパリティストライプも一意に定まる。ただし、仮想ページ内の各領域と実ページ内の各領域とのマッピングは、ここで説明したマッピング方法に限定されるものではない。【００７４】
なお、１つの論理ボリューム中の各仮想ページに割り当てられる実ページは、必ずしも同一記憶装置グループ２８０内の実ページに限定されない。仮想ページ＃０に割り当てられる実ページと、仮想ページ＃１に割り当てられる実ページが、それぞれ異なる記憶装置グループ２８０内の実ページであってもよい。【００７５】
また仮想ページに割り当てられる実ページは、まだ他の仮想ページに割り当てられていない実ページでなければならない。仮想ページに割り当てられていない実ページのことを、「空きページ」または「空き実ページ」と呼ぶ。【００７６】
ここでは、ＳＤＳ＃ｘ（３００）の有するＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ機能と仮想化機能について説明したが、本実施例に係る情報システム内のその他のストレージ装置（ＳＤＳ＃ｙ（３０１）など）はこれらの機能を有していなくてもよい。たとえばＳＤＳ＃ｙ（３０１）は、自身（ＳＤＳ＃ｙ（３０１））が有する記憶装置２２０の記憶空間をそのまま、ボリュームとしてＡＰサーバ１０５等のイニシエータに提供するように構成されていてもよい。【００７７】
また、本実施例では、ＡＰサーバ１０５がＳＤＳ＃ｙ（３０１）の有するボリュームを使用する際、原則としてＳＤＳ＃ｘ（３００）の仮想化機能を用いて使用する。つまりユーザがＳＤＳ＃ｙ（３０１）の有するボリュームを使用したい時には、ユーザはＳＤＳ＃ｘ（３００）に論理ボリュームを定義し、ＳＤＳ＃ｙ（３０１）のボリュームをＳＤＳ＃ｘ（３００）の論理ボリュームにマップさせる。そしてユーザ（ＡＰサーバ１０５）は、ＳＤＳ＃ｘ（３００）に定義された論理ボリュームにアクセスすることで、ＳＤＳ＃ｙ（３０１）のボリュームを使用する。【００７８】
続いて、本実施例におけるＳＤＳ＃ｘ（３０１）のストレージ制御プログラム１３０が使用する管理情報の内容を説明していく。図６は、ＳＤＳ＃ｘ（３０１）が有する管理情報２３０に含まれる主な情報を示している。管理情報２３０には、論理ボリューム情報２０００、実ページ情報２１００、空きページ管理情報ポインタ２２００、記憶装置グループ情報２３００、記憶装置情報２５００、仮想ページ容量２６００が含まれる。ただし管理情報２３０にはこれ以外の情報が含まれていてよい。【００７９】
論理ボリューム情報２０００は、論理ボリュームの構成（たとえば、仮想ページと実ページのマッピング）などの管理情報であり、ＳＤＳ＃ｘ（３００）が有する論理ボリューム毎に論理ボリューム情報２０００が定義される。そのためＳＤＳ＃ｘ（３００）内に論理ボリュームがＬ個定義された時、管理情報２３０内に論理ボリューム情報２０００はＬ個存在する。以下では、ある論理ボリューム情報２０００によって属性情報が管理される論理ボリュームのことを、「管理対象論理ボリューム」と呼ぶ。【００８０】
実ページ情報２１００は実ページを管理するための情報で、実ページ毎に実ページ情報２１００が存在する（管理情報２３０内には、ＳＤＳ＃ｘ（３００）が有する実ページの数と同数の実ページ情報２１００が存在する）。以下、ある実ページ情報２１００によって属性情報が管理される実ページのことを、「管理対象実ページ」と呼ぶ。【００８１】
記憶装置グループ情報２３００は、ＳＤＳ＃ｘ（３００）が有する記憶装置グループ２８０の構成についての情報である。記憶装置グループ情報２３００は記憶装置グループ２８０毎に存在する。以下、ある記憶装置グループ情報２３００によって属性情報が管理される記憶装置グループのことを、「管理対象記憶装置グループ」と呼ぶ。【００８２】
記憶装置情報２５００は、ＳＤＳ＃ｘ（３００）が有する記憶装置２２０についての情報で、記憶装置２２０毎に存在する。以下、ある記憶装置情報２５００によって属性情報が管理される記憶装置のことを、「管理対象記憶装置」と呼ぶ。【００８３】
空きページ管理情報ポインタ２２００は、空き実ページを管理するための情報であり、１つの記憶装置グループ２８０に対して１つの空きページ管理情報ポインタ２２００が存在する。【００８４】
仮想ページ容量２６００は、仮想ページのサイズを表す情報である。本実施例では、各論理ボリュームの仮想ページのサイズはいずれも等しい前提とする。そのため管理情報２３０内には仮想ページ容量２６００は１つだけ存在する。【００８５】
図７は、論理ボリューム情報２０００の形式を示したものである。論理ボリューム情報２０００には、論理ボリュームＩＤ２００１、論理ボリューム容量２００２、仮想化フラグ２００３、ＳＤＳ  ＩＤ２００４、ボリュームＩＤ２００５、コピー中フラグ２００６、コピーポインタ２００７、第２ＳＤＳ  ＩＤ２００８、第２ボリュームＩＤ２００９、論理ボリュームＲＡＩＤタイプ２０１０、待ちフラグ２０１１、実ページポインタ２０１２が含まれる。【００８６】
論理ボリュームＩＤ２００１は、管理対象論理ボリュームの識別子を示す。本実施例では論理ボリュームの識別子には、ＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）が用いられる例を説明する。ただし論理ボリュームの識別子は、ＳＤＳ１００内で一意な識別子であればよく、ＬＵＮ以外の識別子が用いられてもよい。なお本実施例では識別子のことを「ＩＤ」と表記することもある。【００８７】
論理ボリューム容量２００２は、管理対象論理ボリュームの容量である。【００８８】
仮想化フラグ２００３には、０（オフ）または１（オン）の何れかが格納される。管理対象論理ボリュームが他のストレージ装置（ＳＤＳ＃ｘ（３００）以外のＳＤＳ１００）のボリュームを用いて形成されている場合（つまり仮想化機能を用いて定義された論理ボリュームの場合）、仮想化フラグ２００３はオン（１）に設定される。また論理ボリューム情報２０００の仮想化フラグ２００３がオンのとき、ＳＤＳ  ＩＤ２００４、ボリュームＩＤ２００５はそれぞれ、管理対象論理ボリュームにマップされているボリュームを有するＳＤＳ１００の識別子とそのボリュームの識別子を表す。また本実施例では、ＳＤＳ１００の識別子として、ＳＤＳ１００のポート１９０の識別子が用いられる前提とする。そのため、ＳＤＳ  ＩＤ２００４そして後述する第２ＳＤＳ  ＩＤ２００８には、ＳＤＳ１００のポート１９０の識別子が格納される。ただしこれ以外の情報が、ＳＤＳ１００の識別子として用いられてもよい。【００８９】
コピー中フラグ２００６、第２ＳＤＳ  ＩＤ２００８は、論理ボリュームが仮想化機能を用いて定義された論理ボリュームの場合に用いられる。ＳＤＳ＃ｘ（３００）は、後述するコピー処理実行部４３００を実行することで、仮想化機能を用いて定義された論理ボリュームのコピー処理を行うことがある。このコピー処理では、論理ボリュームにマップされたボリュームのデータを、他の場所（ＳＤＳ＃ｘ（３００）内の記憶装置２２０あるいは別のＳＤＳ１００）にコピーする。コピー中フラグ２００６は、論理ボリュームにマップされたボリュームのデータを他の場所にコピー中か否かを表す情報である。コピー中フラグ２００６が“オン”（１）の時、コピー処理中であることを表す。コピーポインタ２００７はコピー処理で用いられる情報で、詳細は後述する。【００９０】
第２ＳＤＳ  ＩＤ２００８は、論理ボリュームにマップされたボリュームのデータの、コピー先のＳＤＳ１００の識別子を表す。コピー先のＳＤＳ１００は、自装置（つまりＳＤＳ＃ｘ（３００））であってもよい。第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）の識別子であれば、コピー処理実行部４３００は論理ボリュームにマップされたボリュームのデータを、ＳＤＳ＃ｘの有する記憶装置２２０上にコピー中であることを意味する。逆に第２ＳＤＳ  ＩＤ２００８がＳＤＳ＃ｘの識別子でなければ、論理ボリュームにマップされたボリュームのデータのコピー先は、別のＳＤＳ１００のボリュームであることを意味する。データのコピー先が別のＳＤＳ１００のボリュームである場合、第２ボリュームＩＤ２００９は、データコピー先のボリュームの識別子を示す。【００９１】
論理ボリュームＲＡＩＤタイプ２０１０には、論理ボリュームに割り当てられる実ページを有する記憶装置グループ２８０のＲＡＩＤ構成についての情報が格納される。本実施例においてＲＡＩＤ構成とは具体的には、ＲＡＩＤ（記憶装置グループ２８０）のＲＡＩＤレベルと、記憶装置グループ２８０を構成する記憶装置２２０の数を含む情報である。【００９２】
待ちフラグ２０１１は、管理対象論理ボリュームに待ち状態にあるリード・ライト処理があることを示す情報である。【００９３】
実ページポインタ２０１２は、管理対象論理ボリュームの仮想ページと実ページの対応関係（マッピング）についての情報である。実ページポインタ２０１２には、仮想ページに割り当てられた実ページのページ管理情報（後述する実ページ情報２１００）へのポインタ（主記憶２１０上のアドレス）が格納される。【００９４】
１つの論理ボリューム情報２０００の中に含まれる実ページポインタ２０１２の数は、管理対象論理ボリュームの仮想ページ数（論理ボリューム容量２００２を仮想ページ容量２６００で割った数と等しい）である。たとえば論理ボリュームの仮想ページ数がｎであれば、その論理ボリュームの論理ボリューム情報２０００内には、実ページポインタ２０１２はｎ個存在する。図７では、仮想ページ＃ｐ（ｐは０以上の整数とする）の実ページポインタ２０１２を「実ページポインタ２０１２−ｐ」と表記している。【００９５】
なお、仮想ページに実ページが割り当てられる契機は、論理ボリュームが定義された時ではなく、仮想ページに対して、ＡＰサーバ１０５からのデータ書き込みが行われる契機である。したがって、まだ書き込みが行われていない仮想ページの実ページポインタ２０１２はＮＵＬＬ（無効値。たとえば“−１”等の値）になっている。【００９６】
図８は、実ページ情報２１００の形式である。先に述べたとおり、実ページは記憶装置グループ２８０内に定義される記憶領域である。実ページ情報２１００は実ページの存在する記憶装置グループ２８０、及び記憶装置グループ２８０内の位置を特定する情報を格納した情報であり、具体的には、記憶装置グループ２１０１、実ページアドレス２１０２、空きページポインタ２１０３を含んでいる。【００９７】
記憶装置グループ２１０１は、管理対象実ページの属する記憶装置グループ２８０の識別子（記憶装置グループＩＤと呼ぶ）を表す。実ページアドレス２１０２は、管理対象実ページの存在する位置を表す情報である。実ページは記憶装置グループ２８０内に存在するので、実ページアドレス２１０２に用いられる情報は、記憶装置グループ２８０のアドレスである。具体的には実ページアドレス２１０２には、管理対象実ページの先頭領域のアドレスが格納される。図５を参照しながら説明する。図５では、たとえばストライプブロックＮが、実ページＲＰ１の先頭に位置づけられ、またストライプブロックＮのアドレス（ストレージグループアドレス）は“０ｘ０００１５０００”であるので（なお、“０ｘ”は、数値が１６進数表記であることを表す）、実ページＲＰ１の実ページ情報２１００の実ページアドレス２１０２には“０ｘ０００１５０００”が格納される。【００９８】
空きページポインタ２１０３は、管理対象実ページが仮想ページに割り当てられていない場合に用いられる。詳細は後述する。実ページが仮想ページに割り当てられている場合、その実ページの空きページポインタ２１０３にはＮＵＬＬが格納される。【００９９】
図９は、記憶装置情報２５００の形式である。記憶装置情報２５００は、記憶装置２２０の属性情報を記録した情報で、記憶装置ＩＤ２５０１、記憶容量２５０２の情報を含む。記憶装置ＩＤ２５０１は管理対象記憶装置の識別子である。記憶容量２５０２は、管理対象記憶装置の容量である。【０１００】
図１０は、記憶装置グループ情報２３００の形式を示す。記憶装置グループ情報２３００は、記憶装置グループＩＤ２３０１、記憶装置グループＲＡＩＤタイプ２３０２、実ページ数２３０３、空き実ページ数２３０４、記憶装置ポインタ２３０５の情報を有する。記憶装置ポインタ２３０５は、管理対象記憶装置グループに属する記憶装置２２０の管理情報（記憶装置情報２５００）へのポインタである。記憶装置グループ２８０がＮ個の記憶装置２２０から構成される時、その記憶装置グループ２８０の記憶装置グループ情報２３００は、Ｎ個の記憶装置ポインタ２３０５を有する。【０１０１】
記憶装置グループＩＤ２３０１は、管理対象記憶装置グループの識別子である。記憶装置グループＲＡＩＤタイプ２３０２は、管理対象記憶装置グループのＲＡＩＤタイプである。記憶装置グループＲＡＩＤタイプ２３０２に格納される情報の内容は、論理ボリュームＲＡＩＤタイプ２０１０を説明したときに述べたものと同じである。実ページ数２３０３と空き実ページ数２３０４はそれぞれ、管理対象記憶装置グループが有する総実ページ数と、空き実ページの数を示す。【０１０２】
続いて空きページ管理情報ポインタ２２００について説明する。空きページ管理情報ポインタ２２００は、記憶装置グループ２８０ごとに設けられる情報である。図１１は、空きページ管理情報ポインタ２２００によって管理される空き実ページの集合を表している。この構造を、空きページ管理情報キュー２２０１と呼ぶ。また、実ページ情報２１００のうち、空き実ページに対応した実ページ情報２１００を空き実ページ情報２１００と呼ぶ。空きページ管理情報ポインタ２２００は、先頭の空き実ページ情報２１００のアドレスをさす。次に、先頭の実ページ情報２１００の中の空きページポインタ２１０３が次の空き実ページ情報２１００を指す。図１１では、最後の空き実ページ情報２１００の空きページポインタ２１０３は、空きページ管理情報ポインタ２２００を指し示しているが、ＮＵＬＬでもよい。【０１０３】
ＳＤＳ＃ｘ（３００）は、仮想ボリューム上の領域のうち、実ページが割り当てられていない仮想ページに対する書き込み要求を受け付けると、ＲＡＩＤ構成がその仮想ボリュームの論理ボリュームＲＡＩＤタイプ２０１０と同一の記憶装置グループ２８０の中のいずれかの記憶装置グループ２８０を選択する。選択可能な記憶装置グループ２８０が複数ある場合、ＳＤＳ＃ｘ（３００）は例えば、空き実ページ数の最も多い記憶装置グループ２８０を選択し、その記憶装置グループ２８０の空きページ管理情報キュー２２０１から空き実ページを探し、仮想ページに割り当てる。【０１０４】
次に、上記に説明した管理情報を用いてＳＤＳ＃ｘ（３００）が実行する動作の説明を行う。ＳＤＳ＃ｘ（３００）の動作は、ＳＤＳ＃ｘ（３００）内のプロセッサ２００が、主記憶２１０に格納されたストレージ制御プログラム１３０を実行することで実現される。ストレージ制御プログラム１３０は複数のプログラムモジュール（以下では「モジュール」と略記する）を含んでいる。図１２は、ストレージ制御プログラム１３０が有するモジュールのうち、本実施例の説明に関係する各モジュールを示したものである。本実施例に関するモジュールは、リード処理実行部４０００、ライト処理実行部４１００、コピー処理スケジュール部４２００、コピー処理実行部４３００である【０１０５】
図１３及び図１４は、リード処理実行部４０００の処理フローである。リード処理実行部４０００は、ＳＤＳ＃ｘ（３００）がＡＰサーバ１０５からリード要求を受け付けたときに実行される。なお、本実施例では説明が複雑になることを避けるために、ＡＰサーバ１０５から受領したリード要求で指定されているリード対象領域は、１つの仮想ページ内に収まっている例を説明する。【０１０６】
ステップ５０００：リード処理実行部４０００は、リード要求で指定されている、リード対象論理ボリュームの論理ボリューム情報２０００を参照し、仮想化フラグ２００３がオンかを確認する。仮想化フラグ２００３がオンであれば、次にステップ５００８（図１４）が行われ、オフの場合にはリード処理実行部４０００は次にステップ５００１を実行する。【０１０７】
ステップ５００１：リード処理実行部４０００は、受け取ったリード要求で指定されたリード対象アドレスから、リード対象アドレスを含む仮想ページの仮想ページ＃と仮想ページ内の相対アドレスを計算する。【０１０８】
ステップ５００２：当該ステップではリード処理実行部４０００は、リード対象となった仮想ページに割り当てた実ページに対応する実ページ情報２１００を、論理ボリューム情報２０００の実ページポインタ２０１２から獲得する。【０１０９】
ステップ５００３：リード処理実行部４０００は、リード対象の実ページが存在する記憶装置グループ２８０と、その記憶装置グループ２８０のアドレスを特定する。これらは、ステップ５００２で獲得した実ページ情報２１００の記憶装置グループ２１０１、実ページアドレス２１０２を参照することで得られる。【０１１０】
ステップ５００４：リード処理実行部４０００は、ステップ５００１で得た仮想ページ内の相対アドレスと記憶装置グループＲＡＩＤタイプ２３０２から、当該要求のアクセス対象となる実ページ内の相対アドレスを計算する。そしてリード処理実行部４０００は、計算した実ページ内相対アドレス、記憶装置グループＲＡＩＤタイプ２３０２と記憶装置ポインタ２３０５とから、リード対象の記憶装置２２０を特定するとともに、その記憶装置２２０のリード先アドレスを特定する。  【０１１１】
ステップ５００５：リード処理実行部４０００は、ステップ５００４で特定した記憶装置２２０に対し、リード要求を発行する。【０１１２】
ステップ５００６：リード処理実行部４０００は、記憶装置２２０からデータが返送されてくるまで待機する。【０１１３】
ステップ５００７：リード処理実行部４０００は、記憶装置２２０から受け取ったデータを、ＡＰサーバ１０５に送り、処理を完了する。【０１１４】
ステップ５００８：リード処理実行部４０００は、コピー中フラグ２００６が、オンかをチェックする。オンであれば、次にステップ５０１０が実行される。【０１１５】
ステップ５００９：コピー中フラグ２００６がオフの場合、リード処理実行部４０００はＳＤＳ  ＩＤ２００４，ボリュームＩＤ２００５で特定される、ＳＤＳ１００のボリュームに、ＡＰサーバ１０５から受け取ったリード対象アドレスとデータ長を指定して、リード要求を、ネットワーク１２０経由で発行する。この後リード処理実行部４０００は、データが送られてくるまで待機し（ステップ５００６）、その後ステップ５００７を実行し、処理を終了する。【０１１６】
ステップ５０１０：コピー中フラグ２００６がオンの場合、リード処理実行部４０００はＡＰサーバ１０５から受領したリード要求で指定されたアドレスがコピーポインタ２００７より大きいかを判定し、大きい場合にはリード処理実行部４０００はステップ５００９を実行する。ステップ５００９が実行された後の処理は、上で説明したとおりであるため、ここでの説明は略す。【０１１７】
ステップ５０１１：ＡＰサーバ１０５から受領したリード要求で指定されたアドレスがコピーポインタ２００７と等しい場合、リード対象領域がコピー中であることを意味する。そのためリード処理実行部４０００は、リード対象論理ボリュームの待ちフラグ２０１１をオン（１）にして、コピー処理の完了を待つ。コピー処理が完了した後、リード処理実行部４０００は再びステップ５０１０を実行する。【０１１８】
ステップ５０１２：ＡＰサーバ１０５から受領したリード要求で指定されたアドレスがコピーポインタ２００７より小さい場合、リード処理実行部４０００は第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）の識別子と等しいかを判別する。等しい場合、リード処理実行部４０００はステップ５００１を実行する。【０１１９】
ステップ５０１３：第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）の識別子と等しくない場合、リード処理実行部４０００は第２ＳＤＳ  ＩＤ２００８，第２ボリュームＩＤ２００９で特定される、ＳＤＳ１００のボリュームに対して、リード要求をネットワーク１２０経由で発行する。この後リード処理実行部４０００は、ステップ５００６、ステップ５００７を実行し、処理を終了する。【０１２０】
図１５及び図１６は、ライト処理実行部４１００の処理フローである。ライト処理実行部４１００は、ＡＰサーバ１０５から、ＳＤＳ＃ｘ（３００）がライト要求を受け付けたときに実行される。なお、本実施例では説明が複雑になることを避けるために、ＡＰサーバ１０５から受領したライト要求で指定されているライト対象領域は、１つの仮想ページ内に収まっている例を説明する。【０１２１】
ステップ６０００：ライト処理実行部４１００は、ライト要求で指定されている、ライト対象論理ボリュームの論理ボリューム情報２０００を参照し、仮想化フラグ２００３がオンかを確認する。仮想化フラグ２００３がオンであれば、次にステップ６００９が行われ、オフの場合にはライト処理実行部４１００は次にステップ６００１を実行する。【０１２２】
ステップ６００１：ライト処理実行部４１００は、受け取ったライト要求で指定されたライト対象とするアドレスから、対応する仮想ページとアクセスする仮想ページ内の相対アドレスを計算する。【０１２３】
ステップ６００２:当該ステップではライト処理実行部４１００は、ライト対象となった仮想ページに、実ページが割り当てられているかをチェックする。仮想ページに実ページが割り当てられていない場合、ステップ６０１５が実行されるが、割り当てられている場合にはステップ６０１５はスキップされる。【０１２４】
ステップ６０１５：ここでは、ライト対象の仮想ページに実ページが割り当てられる。仮想ページへの実ページの割り当ては、以下のようにして行われる。ライト処理実行部４１００は論理ボリューム情報２０００の論理ボリュームＲＡＩＤタイプ２０１０、記憶装置グループ情報２３００の、記憶装置グループＲＡＩＤタイプ２３０２、空き実ページ数２３０４等を参照して、どの記憶装置グループ２８０の実ページを割り当てるか選択する。続いて、ライト処理実行部４１００は選択された記憶装置グループ２８０の空きページ管理情報キュー２２０１を参照して、ライト対象の仮想ページの実ページポインタ２０１２が、空きページ管理情報キュー２２０１の先頭に位置する空き実ページ情報２１００（空きページ管理情報ポインタ２２００で指し示されている空き実ページ情報２１００）を指し示すようにする。【０１２５】
またライト処理実行部４１００は、空きページ管理情報ポインタ２２００が空きページ管理情報キュー２２０１内の２番目の実ページ情報２１００（仮想ページに割り当てた実ページの実ページ情報２１００の中の空きページポインタ２１０３が指し示す実ページ情報２１００）を示すように、空きページ管理情報ポインタ２２００を更新し、さらに、仮想ページに割り当てた実ページの実ページ情報２１００の中の空きページポインタ２１０３をＮＵＬＬに変更する。また、当該実ページに対応する記憶装置グループ情報２３００の空き実ページ数２３０４の数を減らす。仮想ページへの実ページの割り当てが行われた後、ステップ６００３が行われる。【０１２６】
なお、本実施例では、仮想ページへの実ページの割り当てはＳＤＳ１００がライト要求を受け付けたときに実施される例を説明したが、この割り当て処理は必ずしもライト要求を受け付けた時に実施されなくてもよい。この割り当て処理は、ＳＤＳ１００が記憶装置２２０へデータを格納する時までに実行されればよい。【０１２７】
ステップ６００３：ライト処理実行部４１００はライト対象仮想ページに割り当てられている実ページの実ページ情報２１００を、論理ボリューム情報２０００の実ページポインタ２０１２を参照することにより獲得する。【０１２８】
ステップ６００４：ライト処理実行部４１００は、獲得した実ページ情報２１００の記憶装置グループ２１０１、実ページアドレス２１０２から、ライト対象の実ページが存在する記憶装置グループ２８０とその記憶装置グループ２８０上のアドレスを特定する。これはステップ５００３と同様の処理である。【０１２９】
ステップ６００５：ライト処理実行部４１００はステップ６００１で得た仮想ページ内の相対アドレスと記憶装置グループＲＡＩＤタイプ２３０２から、当該要求のアクセス対象となる実ページ内の相対アドレスを計算する。計算した実ページ内相対アドレス、記憶装置グループＲＡＩＤタイプ２３０２と記憶装置ポインタ２３０５とから、ライト先の記憶装置２２０及びその記憶装置２２０上のライト先アドレスを決定する。ライト処理実行部４１００はまた、記憶装置グループＲＡＩＤタイプ２３０２を参照して、公知の方法で、必要な冗長データを生成し、冗長データを格納する記憶装置２２０とそのアドレスを決定する。【０１３０】
ステップ６００６：ライト処理実行部４１００はステップ６００５で決定した記憶装置２２０のアドレスを用いて、データの格納を指示するライト要求を作成して記憶装置２２０に発行する。またライト処理実行部４１００は、冗長データの格納先の記憶装置２２０に対してもライト要求を発行して、冗長データの書き込みも行う。【０１３１】
ステップ６００７：ライト要求の発行後、ライト処理実行部４１００は記憶装置２２０から応答が返却されるまで待機する。【０１３２】
ステップ６００８：ライト処理実行部４１００はＡＰサーバ１０５に、完了報告を送る。【０１３３】
ステップ６００９：ライト処理実行部４１００は、コピー中フラグ２００６がオンかチェックする。オンであれば、次にステップ６０１１が行われる。【０１３４】
ステップ６０１０：コピー中フラグ２００６がオフの場合、ライト処理実行部４１００はＳＤＳ  ＩＤ２００４，ボリュームＩＤ２００５で特定される、ＳＤＳ１００のボリュームに対して、受け取った相対アドレスと長さを指定して、ライト要求を、ネットワーク１２０経由で発行する。この後ライト処理実行部４１００は、ステップ６００７、ステップ６００８を実行し、処理を終了する。【０１３５】
ステップ６０１１：コピー中フラグ２００６がオンの場合、ライト処理実行部４１００はＡＰサーバ１０５から受領したライト要求で指定されたアドレスがコピーポインタ２００７より、大きいかを判定し、大きい場合、次にステップ６０１０を実行する。ステップ６０１０の後は、上で述べたとおり、ライト処理実行部４１００は、ステップ６００７、ステップ６００８を実行し、処理を終了する。【０１３６】
ステップ６０１２：ＡＰサーバ１０５から受領したライト要求で指定されたアドレスがコピーポインタ２００７と等しい場合、ライト対象領域がコピー中であることを意味する。そのためライト処理実行部４１００は待ちフラグ２０１１をオンにして、ライト対象領域のコピー処理が完了するまで待機する。コピー処理が完了した後、ライト処理実行部４１００は再びステップ６０１１を実行する。【０１３７】
ステップ６０１３：ＡＰサーバ１０５から受領したライト要求で指定されたアドレスがコピーポインタ２００７より小さい場合、ライト処理実行部４１００は第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）の識別子と等しいか判別する。等しい場合、ライト処理実行部４１００はステップ６００１を実行する。【０１３８】
ステップ６０１４：第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）の識別子と等しくない場合、ライト処理実行部４１００は第２ＳＤＳ  ＩＤ２００８，第２ボリュームＩＤ２００９で特定されるＳＤＳ１００のボリュームに対してライト要求をネットワーク１２０経由で発行する。この後ライト処理実行部４１００は、ステップ６００７、ステップ６００８を実行し、処理を終了する。【０１３９】
本実施例では、ライト処理実行部４１００は記憶装置２２０へデータを書き込んだ後、ＡＰサーバ１０５に完了報告を返却する例を説明した。ただしライト処理実行部４１００は、キャッシュ領域２４０へデータを書き込んだ時点で、ＡＰサーバ１０５に完了報告を返し、その後記憶装置２２０へデータを書き込んでもよい。【０１４０】
続いて、本実施例に係る情報システムにおいて行われる、ＳＤＳ１００（ＳＤＳ＃ｙ（３０１））のプログラム交換処理の手順を、図１７を参照しながら説明する。【０１４１】
本実施例に係る情報システムの特徴は、無停止でのＳＤＳ１００のプログラム交換を実現する点にある。プログラム交換を行うことで、ユーザは用途に合わせて、ＳＤＳ１００でサポートされる機能を自由に変更（あるいは追加）することができる。たとえばＳＤＳ＃ｘ（３００）よりもサポートされている機能が少ないＳＤＳ＃ｙ（３０１）に、ＳＤＳ＃ｘ（３００）と同等の機能をサポート可能なストレージ制御プログラムをインストールして、ＳＤＳ＃ｙ（３０１）をＳＤＳ＃ｘ（３００）と同等の機能を持つストレージ装置して動作させることができる。これによって、ストレージ環境を、同一種類のＳＤＳで構成された環境にすることができるので、管理コストの削減やシステム性能の向上が可能になる。【０１４２】
ここでは一例として、ＳＤＳ＃ｘ（３００）はＳＤＳ＃ｙ（３０１）にない機能として、たとえばボリュームの複製（ミラーコピー）を作成する機能（以下、「ミラーリング機能」と呼ぶ）を有している例を説明する。またＳＤＳ＃ｘ（３００）は上で述べたとおり、仮想化機能も有している。【０１４３】
ミラーリング機能はボリュームのバックアップコピーを作成する時などに用いられる。ストレージ装置がミラーリング機能を有している場合、ＡＰサーバ１０５でデータ複製を作る必要がなくなり、ＡＰサーバ１０５の処理負荷を低減することができる。ミラーリング機能は、複製元のボリュームを有するストレージ装置と同じ装置内に複製を作成することもできるが、他装置に複製を作成することもできる。図３を用いて例を説明する。ＳＤＳ＃ｘ（３００）は、自身が有する論理ボリュームＬＶ０の複製を、自装置（ＳＤＳ＃ｘ（３００））内に作成することもできるし、あるいは他装置（たとえばＳＤＳ＃ｙ（３０１−２））に作成することもできる。【０１４４】
ＳＤＳ＃ｘ（３００）がミラーリング機能を有している場合、論理ボリュームＬＶ１（ＳＤＳ＃ｙ（３０１−１）のボリュームＬＶ２を記憶領域とする論理ボリューム）の複製も（自装置または他装置に）作成できる。そのため、ＳＤＳ＃ｙ（３０１）がミラーリング機能を有していない場合、たとえば図３に示す例のように、ユーザはＳＤＳ＃ｙ（３０１）のボリュームＬＶ２を記憶領域とする論理ボリュームＬＶ１をＳＤＳ＃ｘ（３００）に定義すると、ＳＤＳ＃ｘ（３００）は論理ボリュームＬＶ１の複製を（自装置または他装置に）作成できる。つまり、情報システム内に、仮想化機能とその他の各種機能を有するストレージ装置（図３の例ではＳＤＳ＃ｘ（３００））が１台存在すれば、その他のストレージ装置（図３の例ではＳＤＳ＃ｙ（３０１））はミラーリング機能などの機能を有していなくても、その他のストレージ装置のボリュームを、仮想化機能を有するＳＤＳ＃ｘ（３００）の論理ボリュームにマップすることで、ミラーリング機能によるボリュームの複製を作成することができる。【０１４５】
しかし、仮想化機能により、多くのストレージ装置のボリュームをＳＤＳ＃ｘ（３００）の論理ボリュームにマップし、さらにミラーリング機能などをＳＤＳ＃ｘ（３００）に実行させる構成は、ＳＤＳ＃ｘ（３００）に多大な負荷がかかるため、情報システムの性能が向上しなくなる。そのため、情報システム内のストレージ装置の各々が、ミラーリング機能などの各種機能を備えていることが望ましい。本実施例に係る情報システムでは、備えている機能の異なるＳＤＳ１００が存在した場合、それらのＳＤＳ１００のプログラムを交換することで、情報システム内の各ＳＤＳ１００が同じ機能を備えるようにする。これにより、特定のＳＤＳ１００に負荷が集中することを抑制でき、情報システムの性能向上が期待できる。【０１４６】
また、各ＳＤＳ１００の有する機能が異なる場合、各ＳＤＳ１００の管理方法が異なることがある。たとえば、サポートされる管理用コマンド（管理プログラム１５０とＳＤＳ１００の間でやり取りされるコマンド）の種類やフォーマットが異なることがある。この場合ユーザはＳＤＳ１００毎に、異なる管理コマンドを発行する必要が出るため、管理が煩雑になる。情報システム内の各ＳＤＳ１００が同じ機能を備えている場合、ユーザは全てのＳＤＳ１００に対して、同じ種類の管理コマンドを用いて管理操作を行えば良いため、管理が容易になる。【０１４７】
ただし、異なる種類のストレージ装置では、記憶装置２２０に格納されるデータのフォーマット（以下では、「格納データフォーマット」と呼ぶ）も異なることがある。たとえばストレージ装置がイニシエータに提供するボリュームのアドレスと、データが実際に格納される記憶装置のアドレスとは必ずしも同一ではなく、データが実際に格納される記憶領域のアドレスはストレージ装置の種類や設定により異なる。これはＳＤＳでも同様であり、ＳＤＳ＃ｘ（３００）の格納データフォーマットと、ＳＤＳ＃ｙ（３０１）の格納データフォーマットが異なっていることがある。したがって、ＳＤＳ＃ｙ（３０１）にインストールされているプログラム（ストレージ制御プログラム）を新しいプログラムに入れ替えた場合、過去にＳＤＳ＃ｙ（３０１）が自身の記憶装置２２０に格納したデータを読み出せないことがある。【０１４８】
このため本実施例に係る情報システムでは、ＳＤＳ＃ｙ（３０１）のボリュームのデータを、ＳＤＳ＃ｘ（３００）の記憶装置２２０か、あるいは別のＳＤＳ１００のボリュームに移動（コピー）してから、ＳＤＳ＃ｙ（３０１）のプログラム交換が行われる。以下では図１７を用いて、処理の流れを説明する。【０１４９】
なお、ＳＤＳ＃ｙ（３０１）のボリュームのデータの移動先は必ずしもＳＤＳに限定されない。情報システム内に、ＳＤＳ１００以外に在来型ストレージ装置が存在する場合、ＳＤＳ＃ｙ（３０１）のボリュームのデータが在来型ストレージ装置の有するボリュームに移動（コピー）されてもよい。ただし以下では、ＳＤＳ＃ｙ（３０１）のボリュームのデータを、ＳＤＳ＃ｘ（３００）の記憶装置２２０か、あるいは別のＳＤＳ１００のボリュームに移動（コピー）される例を説明する。【０１５０】
ステップ１００１０：ユーザが管理サーバ１４０を用いて、ＳＤＳ＃ｙ（３０１）のプログラム交換の指示を、ＳＤＳ＃ｘ（３００）で実行されている管理プログラム１５０に送信する。この指示には、プログラムの交換を行う対象となるストレージ装置（ここではＳＤＳ＃ｙ（３０１））の識別子が含まれる。【０１５１】
ステップ１００２０：管理プログラム１５０は、ステップ１００１０でユーザから送信されたプログラム交換の指示を受領すると、指示に含まれているＳＤＳ＃ｙ（３０１）の識別子を特定する。そして管理プログラム１５０は、ＳＤＳ＃ｘ（３００）のコピー処理スケジュール部４２００に、コピー処理の指示を発行する。コピー処理の指示には、ＳＤＳ＃ｙ（３０１）の識別子が含まれている。【０１５２】
ステップ１００３０：ＳＤＳ＃ｘ（３００）が管理プログラム１５０からコピー処理の指示を受領すると、コピー処理スケジュール部４２００が起動する。ＳＤＳ＃ｘ（３００）のコピー処理スケジュール部４２００は、コピー処理の指示に含まれているＳＤＳ＃ｙ（３０１）を特定し、ＳＤＳ＃ｙ（３０１）の有するボリュームのデータを、情報システム内の別のストレージ装置にコピーする。コピー処理スケジュール部４２００で行われる処理の詳細は後述する。コピー処理スケジュール部４２００は、処理が終了すると、処理が完了した旨を管理プログラム１５０に返送する。【０１５３】
また、プログラムの交換を行う対象となるストレージ装置（ＳＤＳ＃ｙ（３０１））のボリュームの中には、必ずしもユーザにとって必要ではないボリュームも存在することもある。その場合、ユーザにとって必要ではないボリュームのコピー処理は行われないほうが良い。そのため別の実施形態として、ユーザがＳＤＳ＃ｙ（３０１）のプログラム交換を指示する際（ステップ１００１０）に、ＳＤＳ＃ｙ（３０１）に加えて、コピー処理を行うべきボリュームの識別子（あるいはコピー処理を行わなくてもよいボリュームの識別子）も管理プログラム１５０に送信してもよい。そして管理プログラム１５０はコピー処理スケジュール部４２００に、コピー処理を行うべきボリュームの識別子を通知し、コピー処理スケジュール部４２００に、コピー処理を行うべきボリュームについてのみコピー処理を行わせてもよい。【０１５４】
ステップ１００４０：管理プログラム１５０は処理が完了した旨の応答をコピー処理スケジュール部４２００から受領すると、ステップ１００１０でユーザから指示されたＳＤＳ＃ｙ（３０１）に対し、プログラムの交換の指示を発行する。この時管理プログラム１５０は、ＳＤＳ＃ｙ（３０１）にインストールする、交換用のプログラムも送信する。ＳＤＳ＃ｙ（３０１）にインストールするプログラムは、たとえばステップ１００１０で管理サーバ１４０から管理プログラム１００２０に渡されるとよい。あるいはステップ１００４０で、管理プログラム１５０が管理サーバ１４０からプログラムを取得し、ＳＤＳ＃ｙ（３０１）に送信してもよい。【０１５５】
あるいは、もしユーザが、ＳＤＳ＃ｘ（３００）で実行されているプログラム（ストレージ制御プログラム１３０）と同じプログラムをＳＤＳ＃ｙ（３０１）にインストールしたい場合には、ユーザは（ステップ１００１０またはステップ１００４０で）管理プログラム１５０に対して、ＳＤＳ＃ｘ（３００）で実行されているプログラムをインストールする旨を指示してもよい。その場合管理プログラム１５０は、ＳＤＳ＃ｘ（３００）の記憶装置２２０（または主記憶２１０）に格納されているストレージ制御プログラム１３０を読み出して、これをＳＤＳ＃ｙ（３０１）に送信する。【０１５６】
ステップ１００５０：ＳＤＳ＃ｙ（３０１）は、ＳＤＳ＃ｘ（３００）の管理プログラム１５０からインストールの指示（及びプログラム）を受領すると、ＳＤＳ＃ｙ（３０１）のインストールプログラム２５０の実行を開始する。インストールプログラム２５０は、管理プログラム１５０から受領したプログラムをインストールし、インストール処理が終了した時点で管理プログラム１５０にインストール処理の終了を通知する。その後ＳＤＳ＃ｙ（３０１）は再起動等を実行し、管理プログラム１５０から受領したプログラムの実行を開始させるとよい。【０１５７】
管理プログラム１５０は、ＳＤＳ＃ｙ（３０１）のインストールプログラム２５０から、インストール処理終了の通知を受領すると、管理サーバ１４０に処理が終了した旨を通知し、処理を終了する。【０１５８】
上で述べたプログラム交換処理が終了した時点では、プログラム交換前にＳＤＳ＃ｙ（３００）に格納されていたデータは、別のストレージ装置（ＳＤＳ＃ｘ（３００）、またはプログラム交換が行われたＳＤＳ＃ｙ（３０１）以外のＳＤＳ）に退避（格納）されている。ユーザは退避されたデータを、プログラム交換が行われたＳＤＳ＃ｙ（３０１）に戻してもよい。その場合ユーザは、ＳＤＳ＃ｙ（３０１）にボリュームを定義して、その後、定義したボリュームに退避されたデータをコピーするとよい。【０１５９】
このような処理を行うことで、本実施例に係る情報システムは、データを失うことなく、各ＳＤＳ１００のプログラムをユーザの用途に合わせて自由に変更することができる。【０１６０】
図１８は、図１７で説明したステップ１００３０で実行される、コピー処理スケジュール部４２００の処理フローである。コピー処理スケジュール部４２００は、管理プログラム１５０から指定されたＳＤＳ１００のボリュームのデータを、別のＳＤＳ１００にコピーする処理をスケジュールする。データのコピー先は、ＳＤＳ＃ｘ（３００）の記憶装置２２０でもよいし、あるいは指定されたＳＤＳ１００以外のＳＤＳ１００に定義されたボリュームでもよい。【０１６１】
ステップ７０００：コピー処理スケジュール部４２００は、論理ボリューム情報２０００の中で、仮想化フラグ２００３がオンで、かつ、ＳＤＳ  ＩＤ２００４が指定されたＳＤＳ１００と一致するものを見つける。見つからなかった場合、すべての論理ボリュームを見つけたことになるので、コピー処理が完了するのをまつため、ステップ７００３へジャンプする。【０１６２】
ステップ７００１：ステップ７０００において条件に該当する論理ボリュームが見つかった場合、コピー処理スケジュール部４２００は見つかった論理ボリュームについてコピー処理を行うための準備を行う。具体的にはコピー処理スケジュール部４２００は、見つかった論理ボリュームのコピー中フラグ２００６をオンにする。続いてコピー処理スケジュール部４２００は、データのコピー先ＳＤＳ１００を決定する。コピー先の決定方法には任意の方法が採用されてよい。たとえば空き領域の最も多いＳＤＳ１００がコピー先に選択されるとよい。【０１６３】
ＳＤＳ＃ｘ（３００）以外のＳＤＳ１００にデータをコピー（退避）する場合には、コピー処理スケジュール部４２００は、ステップ７０００で見つけた論理ボリュームの論理ボリューム容量２００２を参照して、他のＳＤＳ１００に、論理ボリューム容量２００２と同サイズ（あるいはそれ以上のサイズ）のボリュームの定義を行う。またＳＤＳ＃ｘ（３００）内の記憶装置２２０にデータをコピーする場合、コピー処理スケジュール部４２００は見つかった論理ボリュームの論理ボリューム容量２００２より多くの空き実ページが存在するかチェックする。【０１６４】
他ＳＤＳ１００内にボリュームを定義する場合、コピー処理スケジュール部４２００は、ボリュームの定義先となるＳＤＳ１００とネットワーク１２０経由で情報を交換して、ボリュームの定義処理を実行してもよい。あるいはコピー処理スケジュール部４２００は、管理プログラム１５０にボリュームの定義を要求して、管理プログラム１５０がボリュームを定義するＳＤＳ１００を決め、そのＳＤＳ１００に指定した容量のボリュームを定義させて、そのＳＤＳ１００の識別子と論理ボリュームの識別子を、ＳＤＳ＃ｘ（３００）に返却してもよい。【０１６５】
データのコピー先が、ＳＤＳ＃ｘ（３００）の記憶装置２２０である場合、コピー処理スケジュール部４２００は第２ＳＤＳ  ＩＤ２００８に、ＳＤＳ＃ｘ（３００）の識別子を設定する。一方データのコピー先が、他ＳＤＳ１００内のボリュームである場合、コピー処理スケジュール部４２００は、コピー先ボリュームを有するＳＤＳ１００の識別子を第２ＳＤＳ  ＩＤ２００８に定義し、コピー先ボリュームの識別子を第２ボリュームＩＤ２００９に設定する。さらにコピー処理スケジュール部４２００は、コピーポインタ２００７に初期値（０）を設定する。【０１６６】
ステップ７００２：コピー処理スケジュール部４２００はコピー処理実行部４３００を起動する。この際コピー処理スケジュール部４２００は、コピー処理対象となる論理ボリュームの論理ボリューム情報２０００を指定する。この後、コピー処理スケジュール部４２００は次の論理ボリュームを探すため、再びステップ７０００を実行する。【０１６７】
なお、ここでコピー処理スケジュール部４２００は、コピー処理実行部４３００の処理が終了するまで待機する必要がなく、コピー処理実行部４３００を起動した後、すぐにステップ７０００に戻って良い。具体的にはコピー処理スケジュール部４２００はコピー処理実行部４３００を起動する際、コピー処理実行部４３００が実行されるプロセスを生成し、そのプロセスにコピー処理実行部４３００を実行させ、再びコピー処理スケジュール部４２００はステップ７０００を実行する。【０１６８】
またコピー処理実行部４３００の実行されるプロセスは複数生成されてもよく、複数プロセスが生成された時、それらのプロセスは並行に実行可能である。そのため、たとえば第１の論理ボリュームについてのコピー処理を行うプロセスと第２の論理ボリュームについてのコピー処理を行うプロセスとが並行実施されてもよい。【０１６９】
ステップ７００３：コピー処理スケジュール部４２００は、ステップ７０００〜ステップ７００２で行った、全論理ボリュームのコピー処理が完了するまで待機する。【０１７０】
ステップ７００４：コピー処理スケジュール部４２００は、指定されたＳＤＳ１００の論理ボリュームのコピー処理が完了したことを、管理プログラム１５０に報告し、処理を終了する。なお、上では、指定されたＳＤＳ１００のすべてのボリュームのコピー処理がスケジュールされる例を説明したが、先に述べたとおり、コピー処理スケジュール部４２００はユーザからコピー処理が必要なボリュームの識別子を受領して、コピー処理が必要なボリュームのコピー処理だけを行ってもよい。【０１７１】
図１９は、コピー処理実行部４３００の処理フローである。コピー処理実行部４３００は、コピー処理スケジュール部４２００から呼び出されると（ステップ７００２）、実行を開始する。コピー処理スケジュール部４２００がコピー処理実行部４３００を呼び出すとき、コピー処理対象の論理ボリュームを指定する。コピー処理実行部４３００は、この指定された論理ボリュームについてコピー処理を実行する。【０１７２】
ステップ８０００：コピー処理実行部４３００は、指定された論理ボリュームのコピーポインタ２００７、ＳＤＳ  ＩＤ２００４とボリュームＩＤ２００５を参照して、対応するＳＤＳ１００に、論理ボリューム、読み出し開始アドレス、１仮想ページ分の容量を指定して、データを読み出すリード要求を発行する。なお、本実施例では、コピー処理実行部４３００がコピー処理を行う際に、仮想ページ単位でコピーを行う例を説明するが、それ以外の単位でコピー処理が行われてもよい。【０１７３】
ステップ８００１：コピー処理実行部４３００は、ステップ８０００でリード要求を発行したＳＤＳ１００からデータが送られてくるまで待機する。【０１７４】
ステップ８００２：コピー処理実行部４３００は、第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）かをチェックし、そうでない場合、次にステップ８０１１を行う。第２ＳＤＳ  ＩＤ２００８が、ＳＤＳ＃ｘ（３００）である場合には、次にステップ８００３が行われる。【０１７５】
ステップ８００３：コピー処理実行部４３００は、コピーポインタ２００７で特定されるアドレスに対応する仮想ページに、実ページを割り当てる。この処理はステップ６０１５と同様の処理である。【０１７６】
ステップ８００４：ここで行われる処理は、ステップ６００４，６００５と同様の処理である。コピー処理実行部４３００は、記憶装置グループＲＡＩＤタイプ２３０２と記憶装置ポインタ２３０５とから、データライト先実ページが存在する記憶装置２２０のアドレスを特定する。またコピー処理実行部４３００は記憶装置グループＲＡＩＤタイプ２３０２を参照して、公知の方法で、必要な冗長データを生成し、冗長データを格納する記憶装置２２０とそのアドレスを計算する。【０１７７】
ステップ８００５：ここで行われる処理はステップ６００６と同様の処理である。コピー処理実行部４３００は、ステップ８００４で特定した、データ格納先の記憶装置２２０と冗長データ格納先の記憶装置２２０に対して、データと冗長データを格納するライト要求を発行し、データと冗長データを転送する。この後コピー処理実行部４３００はステップ８００６を行う。【０１７８】
ステップ８０１１：第２ＳＤＳ  ＩＤ２００８がＳＤＳ＃ｘ（３００）ではない場合、コピー処理実行部４３００はコピーポインタ２００７、第２ＳＤＳ  ＩＤ２００８と第２ボリュームＩＤ２００９を参照して、対応するＳＤＳ１００に、論理ボリューム、読み出し開始アドレス、１ページ分の容量を指定して、ライト要求を発行し、書き込むデータを送る。この後、この後コピー処理実行部４３００はステップ８００６を行う。【０１７９】
ステップ８００６：コピー処理実行部４３００は、記憶装置２２０（または他のＳＤＳ１００）から応答が返却されるまで待機する。【０１８０】
ステップ８００７：コピー処理実行部４３００は待ちフラグ２０１１を参照し、待ちフラグ２０１１がオンなら、待ち状態の処理の待ちを開放して、待ちフラグ２０１１をオフにする。
ステップ８００８：コピー処理実行部４３００はコピーポインタ２００７を１ページ分進める。【０１８１】
ステップ８００９：コピー処理実行部４３００はコピーポインタ２００７と論理ボリューム容量２００２を参照して、コピーポインタ２００７が論理ボリュームの終端アドレスを超過したか（つまり当該論理ボリュームのコピーが完了したか）チェックする。論理ボリュームのコピーが完了していない場合、コピー処理実行部４３００は再びステップ８０００から処理を繰り返す。【０１８２】
ステップ８０１０：論理ボリュームのコピーが完了した場合、コピー処理実行部４３００はコピー中フラグ２００６をオフにする。さらにコピー処理実行部４３００は、第２ＳＤＳ  ＩＤ２００８がＳＤＳ＃ｘ（３００）の識別子であれば、仮想化フラグ２００３をオフにする。第２ＳＤＳ  ＩＤ２００８がＳＤＳ＃ｘ（３００）の識別子でない場合、コピー処理実行部４３００は第２ＳＤＳ  ＩＤ２００８と第２ボリュームＩＤ２００９を、ＳＤＳ  ＩＤ２００４とボリュームＩＤ２００５にコピーし、処理を終了する。【０１８３】
コピー処理実行部４３００は、上に述べた処理を行うことで、１つの論理ボリュームのデータを、別の記憶領域に移動（コピー）する。なお、コピー処理実行部４３００によるコピー処理中も、リード処理実行部４０００またはライト処理実行部４１００は、論理ボリュームのデータリード処理またはライト処理を実行可能である。リード処理実行部４０００は、特に図１４に記載の処理（ステップ５００８〜ステップ５０１３）を行うように構成されているため、リード対象論理ボリュームがコピー処理実行部４３００によりコピー処理中であっても、コピー処理実行部４３００のコピー処理の実行完了を待たずに、データの読み出しが可能である。またライト処理実行部４１００も同様に、図１６に記載の処理を行うことで、コピー処理実行部４３００のコピー処理の実行完了を待たずに、データの書き込みが可能である。そのため、ユーザは業務を停止することなく（たとえばＡＰサーバ１０５からの論理ボリュームへのアクセスを停止することなく）、ＳＤＳ＃ｙ（３０１）のプログラム交換を行うことができる。【０１８４】
以上、本発明の実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。【０１８５】
上で説明した実施例では、ＳＤＳ＃ｘ（３００）が管理プログラム１５０を実行し、情報システム内の各ストレージ装置（ＳＤＳ）を管理していたが、管理プログラム１５０は必ずしもＳＤＳ＃ｘ（３００）で実行されなくてもよい。たとえば管理サーバ１４０が管理プログラム１５０を実行することで、管理サーバ１４０が情報システム内の各ＳＤＳ１００を管理するように構成されていてもよい。あるいはＡＰサーバ１０５で管理プログラム１５０が実行される構成でもよい。【０１８６】
また上で説明した実施例では、用途ごとにサーバコンピュータが存在していたが（ＳＤＳ１００、ＡＰサーバ１０５、管理サーバ１４０）、１つのサーバコンピュータが複数の用途を兼ねるように構成されていてもよい。たとえば上で述べた実施例で管理サーバ１４０が実行していたクライアントプログラムが、ＳＤＳ１００で実行されるように構成されていてもよい。この場合ユーザは、ＳＤＳ１００に備えられている入出力デバイス（キーボードやディスプレイ）を用いて、管理操作を行う。【０１８７】
あるいは情報システムは、アプリケーションプログラムとストレージ制御プログラム１３０が、同一のサーバコンピュータで実行される構成であってもよい。その場合、このサーバコンピュータは上で述べた実施例におけるＡＰサーバとＳＤＳの両方の機能を果たす。【０１８８】
またこの場合、サーバコンピュータ上に複数の仮想計算機を定義して、仮想計算機上でアプリケーションプログラムとストレージ制御プログラムが実行される構成でもよい。たとえばサーバコンピュータ上でハイパーバイザを実行することで、アプリケーションプログラムを実行する仮想計算機と、ストレージ制御プログラムを実行する仮想計算機を定義する。そしてストレージ制御プログラムを実行する仮想計算機が、アプリケーションプログラムを実行する仮想計算機（あるいはこれ以外のサーバコンピュータ等）にボリュームを提供するように構成されるとよい。ただし各プログラムが必ずしも仮想計算機上で実行されなければならないわけではない。たとえば上で説明したストレージ制御プログラムと同等の処理を行うプログラムコードをハイパーバイザに含め、サーバコンピュータはこのハイパーバイザを実行することで、アプリケーションプログラムを実行する仮想計算機にボリュームを提供するよう構成されていてもよい。【０１８９】
また、上で説明した処理の一部が人手で行われてもよい。たとえば図１７で説明した処理では、管理プログラム１５０がコピー処理スケジュール部４２００に指示して、ステップ１００３０を実行させ、その後プログラムの交換対象であるＳＤＳ１００（ＳＤＳ＃ｙ（３０１））にプログラム交換を指示していた。この処理の一部をユーザが行ってもよい。すなわち、ユーザはステップ１００３０（ＳＤＳ＃ｙ（３０１）のデータ移動）の終了が確認できた後、ＳＤＳ＃ｙ（３０１）のプログラムの交換を行ってもよい。【０１９０】
この時のプログラムの交換は、ユーザは管理サーバ１４０からＳＤＳ＃ｘ（３００）の管理プログラム１５０に、ＳＤＳ＃ｙ（３０１）へのプログラムインストールを指示することで、管理プログラム１５０からＳＤＳ＃ｙ（３０１）のインストールプログラム２５０にプログラム交換を行わせてもよいし、管理サーバ１４０から直接ＳＤＳ＃ｙ（３０１）のインストールプログラム２５０に対して、プログラムのインストールを指示してもよい。或いはＳＤＳ＃ｙ（３０１）がキーボードやディスプレイ等の入出力デバイスを備えている場合は、ユーザはそれを用いてＳＤＳ＃ｙ（３０１）にプログラムのインストールを指示してもよい。【０１９１】
また、上で説明した実施例では、ＳＤＳが受け付けるＩ／Ｏ要求（コマンド）は、いわゆるＳＣＳＩコマンドである例が説明された。つまりＳＤＳが、いわゆるブロックレベルのアクセス要求を受け付けるストレージ装置である例を説明した。しかし、ＳＤＳがそれ以外のタイプのストレージ装置であってもよい。たとえばファイルレベルやオブジェクトレベルのアクセス要求を受け付けるストレージ装置（いわゆるＮｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ  （ＮＡＳ）やＯｂｊｅｃｔ−ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ  （ＯＳＤ））などでもよい。【０１９２】
また、上で説明した実施例では、コピー処理実行部４３００によって論理ボリュームのデータがＳＤＳ＃ｙ（３０１）以外の記憶領域に移動される際、移動先の記憶領域は、ＳＤＳ＃ｘ（３００）の記憶装置か、あるいは他のＳＤＳ１００が有するボリュームの何れかである例を説明した。ただし、移動先の記憶領域に、ＳＤＳ＃ｘ（３００）の記憶装置と、他のＳＤＳ１００のボリュームの両方が用いられてもよい。【０１９３】
たとえば図３に示された、ＳＤＳ＃ｘ（３００）、ＳＤＳ＃ｙ（３０１−１）、ＳＤＳ＃ｙ（３０１−２）において、ＳＤＳ＃ｙ（３０１−１）のプログラム交換が行われる時、ＬＶ２に格納されているデータは、ＳＤＳ＃ｙ（３０１−１）以外のＳＤＳに移動される必要がある（なお、仮想化機能によりＬＶ２はＬＶ１にマップされている）。この場合ＳＤＳ＃ｘ（３００）は、ＬＶ２に格納されているデータのうち、一部のデータ、たとえばＬＶ２の先頭から半分のデータをＳＤＳ＃ｘ（３００）の記憶装置２２０に移動し、残りのデータをたとえばＳＤＳ＃ｙ（３０１−２）のボリュームＬＶ３に移動してもよい。もちろんこの場合、ＳＤＳ＃ｘ（３００）は、論理ボリュームの領域ごと（たとえば仮想ページごと）に、異なるボリュームの記憶領域（または記憶装置２２０の記憶領域）を割り当てることが可能なように構成されている必要がある。【０１９４】
また、上で説明した処理をＣＰＵに実行させる各プログラムは、計算機が読み取り可能な記憶メディアに格納された状態で提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばＩＣカード、ＳＤカード、ＤＶＤ等の不揮発性記憶媒体である。あるいは上で説明した処理をＣＰＵに実行させる各プログラムは、プログラム配布サーバからネットワーク経由で提供されてもよい。
【符号の説明】
【０１９５】
１００：  ＳＤＳ
１０５：  ＡＰサーバ
１２０：  ネットワーク
１３０：  ストレージ制御プログラム
１４０：  管理サーバ
１５０：  管理プログラム
２００：  プロセッサ
２１０：  主記憶
２２０：  記憶装置
２３０：  管理情報
２４０：  キャッシュ領域
２５０：  インストールプログラム
【図１】
2018158808.tif 000003
【図２】
2018158808.tif 000004
【図３】
2018158808.tif 000005
【図４】
2018158808.tif 000006
【図５】
2018158808.tif 000007
【図６】
2018158808.tif 000008
【図７】
2018158808.tif 000009
【図８】
2018158808.tif 000010
【図９】
2018158808.tif 000011
【図１０】
2018158808.tif 000012
【図１１】
2018158808.tif 000013
【図１２】
2018158808.tif 000014
【図１３】
2018158808.tif 000015
【図１４】
2018158808.tif 000016
【図１５】
2018158808.tif 000017
【図１６】
2018158808.tif 000018
【図１７】
2018158808.tif 000019
【図１８】
2018158808.tif 000020
【図１９】
2018158808.tif 000021
【手続補正書】
【提出日】平成31年3月1日(2019.3.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
計算機を複数備えた情報システムであって、
前記複数の計算機のそれぞれは、少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記複数の計算機には、
第１ストレージ制御プログラムと管理プログラムとを実行する第１の計算機と、
第２ストレージ制御プログラムを実行する第２の計算機と、
が含まれており、
前記第２ストレージ制御プログラムは前記第２の計算機の前記少なくとも１つのプロセッサに、前記第２の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第１ボリュームを定義させるよう構成されており、
前記第１ストレージ制御プログラムは前記第１の計算機の前記少なくとも１つのプロセッサに、前記第１の計算機の有する前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記第１ボリュームを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを定義させるよう構成されており、
前記管理プログラムは、前記第１の計算機の前記少なくとも１つのプロセッサに、
前記第２の計算機への交換用プログラムのインストール指示を受け付け、前記第１の計算機が有する前記論理ボリュームのうち、前記第２の計算機が提供する記憶領域を用いて論理ボリュームを特定する第１の工程と、
前記第１の工程で特定された論理ボリュームである前記第２論理ボリュームの前記第２記憶領域として用いられる前記第１ボリュームであって、前記第２の計算機に定義された前記第１ボリュームに格納されたデータを、前記第１の計算機の有する前記少なくとも１つの記憶装置に移動する第２の工程と、
前記第２の工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールさせる第３の工程と、
を実行させるよう構成されていることを特徴とする、情報システム。
【請求項２】
前記第１ストレージ制御プログラムは、前記第２の工程の実行前に前記第２論理ボリュームの前記第２記憶領域に対する第１Ｉ／Ｏ要求を受け付けると、前記第１の計算機の前記少なくとも１つのプロセッサに、前記第１Ｉ／Ｏ要求を、前記第２論理ボリュームの前記第２記憶領域として用いられる前記第１ボリュームに対する第２Ｉ／Ｏ要求に変換させ、前記第２の計算機へ前記第２Ｉ／Ｏ要求を発行させるよう構成される、
ことを特徴とする、請求項１に記載の情報システム。
【請求項３】
前記第２の工程は、前記第１ボリュームに格納されたデータが前記第１の計算機の有する前記少なくとも１つの記憶装置へ移動された後、前記第１の計算機の有する前記少なくとも１つの記憶装置が前記第２論理ボリュームの記憶領域として用いられるよう、前記第２論理ボリュームの構成を変更する工程を含み、
前記第２の工程はまた、前記第２論理ボリュームに対するＩ／Ｏ要求に係る処理と並行して実行可能である、
ことを特徴とする、請求項１に記載の情報システム。
【請求項４】
前記複数の計算機は、第３ストレージ制御プログラムを実行する第３の計算機を含み、
前記第３ストレージ制御プログラムは、前記第３の計算機の前記少なくとも１つのプロセッサを、前記第３の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第２ボリュームを定義されるよう構成され、
前記第２の工程はさらに、
前記第２の計算機の有する前記第１ボリュームに格納されたデータの少なくとも一部を、前記第３の計算機の有する前記第２ボリュームに移動し、前記第１ボリュームに格納されたデータのうちの残りのデータを、前記第１の計算機の有する前記少なくとも１つの記憶装置へ移動する工程と、
前記第３の計算機の有する前記第２ボリュームと、前記第１の計算機の有する少なくとも１つの記憶装置が、前記第２論理ボリュームの記憶領域として使用されるよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項１に記載の情報システム。
【請求項５】
前記第２の計算機に、前記交換用プログラムをインストールさせる指示は、前記第２の計算機の識別子を含む、
ことを特徴とする、請求項１に記載の情報システム。
【請求項６】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項１に記載の情報システム。
【請求項７】
計算機を複数備えた情報システムであって、
前記複数の計算機は、第１の計算機と第２の計算機とを含み、前記第１の計算機と前記第２の計算機のそれぞれは、ストレージ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記第２の計算機は、第２ストレージ制御プログラムを実行することにより、前記第２の計算機の前記少なくとも１つの記憶装置を記憶領域とするボリュームを定義するよう構成されており、
前記第１の計算機は、第１ストレージ制御プログラムを実行することにより、前記第１の計算機の有する前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記ボリュームの少なくとも１つを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを定義するよう構成されており、
前記複数の計算機の少なくとも１つは、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける第１の工程と、
前記第２の計算機に定義された前記ボリュームの第１ボリュームであって、前記第１の計算機の前記論理ボリュームのうち前記第２の計算機が提供する記憶領域を用いた論理ボリュームとして特定される前記第２論理ボリュームの前記第２記憶領域として用いられる、第１ボリュームに格納されたデータを、前記第２の計算機以外の前記複数の計算機の少なくとも１つの他の計算機に移動する第２の工程と、
前記第２の工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールさせる第３の工程と、
を実行させるよう構成されていることを特徴とする、情報システム。
【請求項８】
前記第１ストレージ制御プログラムは、前記第２の工程の実行前に前記第２論理ボリュームの前記第２記憶領域に対する第１Ｉ／Ｏ要求を受け付けると、前記第１の計算機の前記少なくとも１つのプロセッサに、前記第１Ｉ／Ｏ要求を、前記第２論理ボリュームの前記第２記憶領域として用いられる前記第１ボリュームに対する第２Ｉ／Ｏ要求に変換させ、前記第２の計算機へ前記第２Ｉ／Ｏ要求を発行させるよう構成される、
ことを特徴とする、請求項７に記載の情報システム。
【請求項９】
前記第２の工程は、前記第２の計算機に定義された前記第１ボリュームに格納されたデータを、前記第１の計算機の有する前記少なくとも１つの記憶装置へ移動させる工程を含む、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１０】
前記第２の工程は、前記第１ボリュームに格納されたデータが前記第１の計算機の有する前記少なくとも１つの記憶装置へ移動された後、前記第１の計算機の有する前記少なくとも１つの記憶装置が、前記第２論理ボリュームの記憶領域として使用されるよう、前記第２論理ボリュームの構成を変更する工程を含み、
前記第２の工程はまた、前記第２論理ボリュームに対するＩ／Ｏ要求に係る処理と並行して実行可能である、
ことを特徴とする、請求項９に記載の情報システム。
【請求項１１】
前記複数の計算機は、第３の計算機を含み、前記第３の計算機は、第３ストレージ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記第３ストレージ制御プログラムは、第３ストレージ制御プログラムを実行することにより、前記第３の計算機の前記少なくとも１つのプロセッサに、前記第３の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第２ボリュームを定義させるよう構成されており、
前記第２の工程は更に、
前記第２の計算機の有する前記第１ボリュームに格納されたデータの少なくとも一部を、前記第３の計算機の有する前記第２ボリュームに移動し、前記第１ボリュームに格納されたデータのうちの残りのデータを、前記第１の計算機の前記少なくとも１つの記憶装置へ移動する工程と、
前記第３の計算機の有する前記第２ボリュームと、前記第１の計算機の少なくとも１つの記憶装置が、前記第２論理ボリュームの記憶領域として使用されるよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１２】
前記複数の計算機は、第３の計算機を含み、前記第３の計算機は、第３ストレージ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記第３ストレージ制御プログラムは、第３ストレージ制御プログラムを実行することにより、前記第３の計算機の前記少なくとも１つのプロセッサに、前記第３の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第２ボリュームを定義させるよう構成されており、
前記第２の工程は更に、
前記第２の計算機の有する前記第１ボリュームに格納されたデータの少なくとも一部を、前記第３の計算機の有する前記第２ボリュームに移動する工程と、
前記第３の計算機の有する前記第２ボリュームが、前記第２論理ボリュームの記憶領域として使用されるよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１３】
前記第２の計算機に、前記交換用プログラムをインストールさせる指示は、前記第２の計算機の識別子を含む、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１４】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１５】
前記交換用プログラムは、前記第１ストレージ制御プログラムと同一の機能を有するストレージ制御プログラムである、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１６】
第１の計算機は、前記第１の工程、前記第２の工程、前記第３の工程を実施するよう構成される、
ことを特徴とする、請求項７に記載の情報システム。
【請求項１７】
計算機を複数備えた情報システムにおけるプログラム交換方法であって、
前記複数の計算機は、第１の計算機と第２の計算機とを含み、前記第１の計算機と前記第２の計算機のそれぞれは、プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記第２の計算機は、第２ストレージ制御プログラムを実行することにより、前記第２の計算機の有する前記少なくとも１つの記憶装置を記憶領域とするボリュームを定義するよう構成されており、
前記第１の計算機は、第１ストレージ制御プログラムを実行することにより、前記第１の計算機の有する前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記ボリュームの少なくとも１つを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを定義するよう構成されており、
前記複数の計算機の少なくとも１つは、
前記第２の計算機に、ストレージ制御プログラムをインストールさせる指示を受領する第１の工程と、
前記第２の計算機に定義された前記ボリュームの第１ボリュームであって、前記第１の計算機の前記論理ボリュームのうち前記第２の計算機が提供する記憶領域を用いた論理ボリュームとして特定される前記第２論理ボリュームの前記第２記憶領域として用いられる、第１ボリュームに格納されたデータを、前記第２の計算機以外の前記複数の計算機の少なくとも１つの他の計算機に移動する第２の工程と、
前記第２の工程の完了を確認した後、前記第２の計算機に、前記ストレージ制御プログラムをインストールさせる第３の工程と、
を実行させるよう構成されていることを特徴とする、方法。
【請求項１８】
前記第２の工程は、前記第２の計算機に定義される前記第１ボリュームに格納されたデータの少なくとも一部を、前記第１の計算機の有する前記少なくとも１つの記憶装置に移動する工程を含む、
ことを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記複数の計算機は、第３の計算機を含み、前記第３の計算機は、第３ストレージ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記第３ストレージ制御プログラムは、第３ストレージ制御プログラムを実行することにより、前記第３の計算機の前記少なくとも１つのプロセッサに、前記第３の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第２ボリュームを定義させるよう構成されており、
前記第２の工程は更に、前記第２の計算機の有する前記第１ボリュームに格納されたデータの少なくとも一部を、前記第３の計算機の有する前記第２ボリュームに移動する工程を含む、
ことを特徴とする、請求項１７に記載の方法。
【請求項２０】
前記第２の工程は更に、
前記第１ボリュームに格納されたデータのうちの残りのデータを、前記第１の計算機の有する前記少なくとも１つの記憶装置へ移動する工程と、
前記第３の計算機の有する前記第２ボリュームと、前記第１の計算機の有する少なくとも１つの記憶装置が、前記第２論理ボリュームの記憶領域として使用されるよう、前記第２論理ボリュームの構成を変更する工程を含む、
ことを特徴とする、請求項１９に記載の方法。
【請求項２１】
前記第２の計算機に、前記ストレージ制御プログラムをインストールさせる指示は、前記第２の計算機の識別子を含む、
ことを特徴とする、請求項１７に記載の方法。
【請求項２２】
前記ストレージ制御プログラムは、前記第１ストレージ制御プログラムと同一のプログラムである、
ことを特徴とする、請求項１７に記載の方法。
【請求項２３】
前記ストレージ制御プログラムは、前記第１ストレージ制御プログラムと同一の機能を有する、
ことを特徴とする、請求項１７に記載の方法。
【請求項２４】
計算機を複数備えた情報システムにおけるプログラム交換方法であって、
前記複数の計算機のそれぞれは、少なくとも１つのプロセッサと、少なくとも１つのメモリと、少なくとも１つの記憶装置を有し、
前記複数の計算機には、
第１ストレージ制御プログラムと管理プログラムとを実行する第１の計算機と、
第２ストレージ制御プログラムを実行する第２の計算機と、
が含まれており、
前記第２ストレージ制御プログラムは前記第２の計算機の前記少なくとも１つのプロセッサに、前記第２の計算機の有する前記少なくとも１つの記憶装置を記憶領域とする第１ボリュームを定義させるよう構成されており、
前記第１ストレージ制御プログラムは前記第１の計算機の前記少なくとも１つのプロセッサに、前記第１の計算機の有する前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記第１ボリュームを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを定義させるよう構成されており、
方法は前記第１の計算機の前記少なくとも１つのプロセッサにより実行され、
前記第２の計算機への交換用プログラムのインストール指示を受け付け、前記第１の計算機が有する前記論理ボリュームのうち、前記第２の計算機が提供する記憶領域を用いて論理ボリュームを特定する工程と、
特定された論理ボリュームである前記第２論理ボリュームの前記第２記憶領域として用いられる前記第１ボリュームであって、前記第２の計算機に定義される前記第１ボリュームに格納されたデータを、前記第１の計算機の有する前記少なくとも１つの記憶装置に移動する工程と、
前記データを移動する工程の完了を確認した後、前記第２の計算機に、前記交換用プログラムをインストールさせる工程と、
を含むことを特徴とする、方法。
【請求項２５】
複数の計算機と少なくとも１つの記憶装置を備えた情報システムであって、
前記複数の計算機は、第１の計算機と第２の計算機とを含み、前記計算機のそれぞれは、ストレ−ジ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリを有し、
前記第２の計算機は、第２ストレージ制御プログラムを実行することにより、前記少なくとも１つの記憶装置を記憶領域とするボリュームを前記第２の計算機に定義するよう構成されており、
前記第１の計算機は、第１ストレージ制御プログラムを実行することにより、前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記ボリュームの少なくとも１つを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを前記第１の計算機に定義するよう構成されており、
前記複数の計算機の少なくとも１つは、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける第１の工程と、
前記第２の計算機に定義された前記ボリュームの第１ボリュームであって、前記第１の計算機の前記論理ボリュームのうち前記第２の計算機が提供する記憶領域を用いた論理ボリュームとして特定される前記第２論理ボリュームの前記第２記憶領域として用いられる、第１ボリュームに格納されたデータを、前記第２の計算機以外の前記複数の計算機の少なくとも１つの他の計算機に移動する第２の工程と、
前記第２の計算機に、前記交換用プログラムをインストールさせる第３の工程と、
を実行させるよう構成されていることを特徴とする、情報システム。
【請求項２６】
複数の計算機と少なくとも１つの記憶装置を備えた情報システムにおいて、
前記複数の計算機は、第１の計算機と第２の計算機とを含み、前記計算機のそれぞれは、ストレ−ジ制御プログラムを実行する少なくとも１つのプロセッサと、少なくとも１つのメモリを有し、
前記第２の計算機は、第２ストレージ制御プログラムを実行することにより、前記少なくとも１つの記憶装置を記憶領域とするボリュームを前記第２の計算機に定義するよう構成されており、
前記第１の計算機は、第１ストレージ制御プログラムを実行することにより、前記少なくとも１つの記憶装置を第１記憶領域とする第１論理ボリュームと、前記第２の計算機が提供する前記ボリュームの少なくとも１つを第２記憶領域とする第２論理ボリュームとを含む、論理ボリュームを前記第１の計算機に定義するよう構成されており、
前記複数の計算機の少なくとも１つが実行する方法は、
前記第２の計算機への交換用プログラムのインストール指示を受け付ける工程と、
前記第２の計算機に定義された前記ボリュームの第１ボリュームであって、前記第１の計算機の前記論理ボリュームのうち前記第２の計算機が提供する記憶領域を用いた論理ボリュームとして特定される前記第２論理ボリュームの前記第２記憶領域として用いられる、第１ボリュームに格納されたデータを、前記第２の計算機以外の前記複数の計算機の少なくとも１つの他の計算機に移動する工程と、
前記第２の計算機に、前記交換用プログラムをインストールさせる工程と、
を含むことを特徴とする、方法。
【国際調査報告】
2018158808.tif 000022
2018158808.tif 000023