(57)【要約】【課題】  ＳＣＳＩ環境における論理ユニット（ＬＵ）のようなボリュームに対する現在のデータ移動技術はブロック内のデータに関係なくブロックごとをベースにオペレーションを実行する。もしも少量配備の技術に対して現在の移動技術が使用されるならば、従来の移動技術はソースボリューム内の全部のブロックをターゲットボリュームにコピーするので、少量配備の利点は失われるであろう。【解決手段】  データ移動は通常ボリュームと少量配備ボリュームの間のコピー処理を含む。通常ボリューム内のデータは少量配備ボリュームにコピーされることが可能である。代わりに、データ構造は、データの実際のコピー処理無しに、通常ボリュームを少量配備ボリュームに変換することを促進するように提供されることが可能である。少量配備ボリュームから通常ボリュームへのコピー処理も開示される。【選択図】  図１
2006277723.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステム内のデータ移動の方法において、
前記データ移動が実行されるデータを含むソースボリュームの指定を受け取るステップと、
ディスク装置から割り当てられた一つ以上のストレージセグメントを含むターゲットボリュームの指定を受け取るステップと、
前記ソースボリューム内の各論理ブロックアドレスに対して、もしも前記論理ブロックアドレスが生成データを有する前記ソースボリューム上に領域を指定する場合には、前記ターゲットボリュームに前記生成データをコピーするステップと、
から成り、
前記コピーするステップが、
もしも前記論理ブロックアドレスが前記ターゲットボリュームに割り当てられたストレージセグメントを指定しないなら、前記ディスク装置から前記ターゲットボリュームに自由ストレージセグメントを割り当てるステップと、
前記論理ブロックアドレスを前記割り当てられた自由ストレージセグメントに関連させ、これにより前記論理ブロックアドレスは前記割り当てられた自由ストレージセグメントを指定するステップと、
から成り、
前記割り当てるステップと関連させるステップがユーザの介入無しに自動的に実行される
ことを特徴とする方法。
【請求項２】
前記データがホスト装置上で実行するアプリケーションによって生成され、前記ソースボリューム上に保存されるデータであることを特徴とする請求項１に記載の方法。
【請求項３】
前記データがファイルシステムを管理するためにホスト装置上で実行するオペレーティングシステムによって生成され、前記ソースボリューム上に保存されるデータであることを特徴とする請求項１に記載の方法。
【請求項４】
前記ソースボリュームは一つ以上の物理装置上に配置されたデータブロックを含み、前記方法は、書き込み要求が前記ソースボリュームをターゲットにする時に、
前記書き込み要求に関連した前記論理ブロックアドレスを取得するステップと、
前記論理ブロックアドレスによって特定されたストレージ領域を含む一つ以上のデータブロックにデータを保存するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記論理ブロックアドレスが生成データを有する前記ソースボリューム上に領域を指定するかを決定するために、前記データブロックが生成データを有するかまたは有しないかに関して前記データブロックのそれぞれに対して特定する情報をアクセスするステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記情報がビットマップの形式であり、前記ビットマップ内の各ビットが論理ブロックアドレスに対応し、前記ビットの値が、前記対応する論理ブロックアドレスによって指定される前記ソースボリューム上の前記領域が生成データを有するかまたは有しないかを示すことを特徴とする請求項５に記載の方法。
【請求項７】
前記情報を生成するために前記ソースボリュームを調べるステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記情報がビットマップの形式であり、各ビットが論理ブロックアドレスに対応し、前記ビットの値が、前記対応する論理ブロックアドレスによって指定される前記ソースボリューム上の前記領域が生成データを有するかまたは有しないかを示すことを特徴とする請求項７に記載の方法。
【請求項９】
前記ソースボリュームは、前記ディスク装置から割り当てられ、論理ブロックアドレスによって参照される一つ以上のストレージセグメントを含み、前記方法は、書き込み要求が前記ソースボリュームをターゲットにする時に、もしも前記ターゲット論理ブロックアドレスが前記ソースボリュームを含むストレージセグメントを参照しないならば、前記ディスク装置から自由ストレージセグメントを割り当てるステップをさらに含み、前記割り当てはユーザの介入無しに自動的に実行されることを特徴とする請求項１に記載の方法。
【請求項１０】
前記ターゲット論理ブロックアドレスを前記割り当てステップから取得される前記ストレージセグメントに関連させるステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
複数の物理ストレージ装置を備え、
請求項１の方法のステップを実行するために動作可能なコントローラを有し、
前記物理ストレージ装置が前記ソースボリュームと前記ターゲットボリュームを構成することを特徴とするストレージシステム。
【請求項１２】
ストレージシステム内のデータ移動方法において、
それぞれが関連した論理ブロックアドレスを有し、いくつかが前記データ移動が実行されるデータを保存する、複数のデータブロックを含むソースボリュームの指定を受け取るステップと、
ターゲットボリュームの指定を受け取るステップと、
それぞれが一つ以上の前記データブロックを含む、前記ソースボリューム上の複数のセグメントを定義するステップと、
もしも前記セグメントがデータを有するデータブロックを含むならば、その関連したデータブロックの一つの前記論理ブロックアドレスに前記セグメントを関連させ、および前記ターゲットボリュームに前記セグメントを関連させ、それによって前記ターゲットボリュームが、それぞれが論理ブロックアドレスに関連しデータを含む一つ以上のセグメントを備えるステップと、
もしもセグメントがデータを有するデータブロックを含まないならば、前記セグメントを自由セグメントのリストに関連させるステップと、
から成ることを特徴とする方法。
【請求項１３】
前記データが、ホスト装置上で実行するアプリケーションによって生成され前記ソースボリューム上に保存されるデータ、またはファイルシステムを管理するために前記ホスト装置上で実行するオペレーティングシステムによって生成され前記ソースボリューム上に保存されるデータの一つを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
ターゲット論理ブロックアドレスに関連し、前記ターゲットボリュームに向けられた書き込み要求を受け取るステップと、
もしも前記ターゲット論理ブロックアドレスが前記ターゲットボリュームを含むセグメントを特定しないならば、自由セグメントの前記リストから自由セグメントを割り当てるステップと、
前記割り当てられた自由セグメントに前記論理ブロックアドレスを関連させるステップと、
をさらに含み、
前記書き込み要求に関連したデータが前記割り当てられた自由セグメントに書き込まれることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記割り当てるステップがユーザの介入無しに自動的に実行されることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記データブロックがデータを有するかまたは有しないかに関して、前記ソースボリュームの前記データブロックのそれぞれに対して特定し、データブロックがデータを有するかまたは有しないかを決定するために使用される使用状況情報を生成するステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記使用状況情報は、前記ソースボリュームをターゲットにする書き込みオペレーションが処理されるのと同じ時点にまたはその付近で生成されることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記使用状況情報はビットマップの形式であり、各ビットは論理ブロックアドレスに対応し、前記ビットの値はデータブロックがデータを有するかどうかを示すことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記使用状況情報は、ユーザによって送られるコマンドに応答して生成されることを特徴とする請求項１６に記載の方法。
【請求項２０】
各セグメントはちょうど一つのデータブロックを含むことを特徴とする請求項１２に記載の方法。
【請求項２１】
各セグメントはＮ個のデータブロックを含み、Ｎは４以上であることを特徴とする請求項１２に記載の方法。
【請求項２２】
複数の物理装置とコントローラを含むストレージシステムにおいて実行され、前記コントローラはデータ処理ユニットとプログラムコードを含み、前記データ処理ユニットは前記方法を実行するために前記プログラムコードを実行することを特徴とする請求項１２に記載の方法。
【請求項２３】
ストレージシステムに対する方法において、
第一のボリュームに向けられた書き込み要求をホストシステムから受け取るステップと、
もしも前記書き込み要求に関連した前記論理ブロックアドレスによって指定されるストレージセグメントが前記第一のボリュームに存在しないなら物理ストレージ装置から前記ストレージセグメントを割り当てることと前記決定することのステップが、ユーザの介入無しに自動的に実行されるステップと、
前記割り当てられたストレージセグメントに前記論理ブロックアドレスを関連させ、前記書き込み要求に関連したデータを前記割り当てられたストレージセグメントに書き込むステップと、
前記第一のボリュームに保存されたデータの移動オペレーションの行き先であるターゲットボリュームの指定を前記ホストシステムから受け取るステップと、
前記第一のボリューム内の各ストレージセグメントに対して、前記ストレージセグメントから、前記ストレージセグメントに関連する前記論理ブロックアドレスによって特定される前記ターゲット装置上の場所にデータをコピーするステップと、
から成ることを特徴とする方法。
【請求項２４】
前記第一のボリューム内のいかなるストレージセグメントにも対応しない、前記ターゲット装置上の場所をＮＵＬＬ文字で埋め込むステップをさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２５】
前記コピーするステップは前記ターゲットボリュームのちょうど一つのデータブロックに前記ストレージセグメント内のデータをコピーするステップを含むことを特徴とする請求項２３に記載の方法。
【請求項２６】
前記コピーするステップは前記ターゲットボリュームのＮ個のデータブロックに前記ストレージセグメント内のデータをコピーするステップを含み、Ｎは１より大であることを特徴とする請求項２３に記載の方法。
【請求項２７】
前記ターゲットボリュームは前記ストレージシステムとは別に外部ストレージシステム内に含まれた物理ストレージ装置を含み、前記ターゲットボリュームは第一の識別子で前記のホストシステムによって特定され、前記ターゲットボリュームは第二の識別子で前記外部ストレージシステム内において特定され、前記方法は前記第一の識別子を第二の識別子にマッピングするマッピング情報を参照するステップをさらに含み、前記コピーするステップは前記ターゲットボリュームをアクセスするために前記第二の識別子を使用することを特徴とする請求項２３に記載の方法。
【請求項２８】
複数の物理ストレージ装置と、請求項２３の方法を実行するために構成されるコントローラを備えることを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
０２    本発明はストレージシステム、具体的には必要時割り当て（すなわち、少量配備（ｔｈｉｎ  ｐｒｏｖｉｓｉｏｎｅｄ））ストレージシステムにおける移動（マイグレーション）に関係する。
【背景技術】
【０００２】
０５    会社、団体などで使用されるコンピュータシステムにおいて扱われる情報の量は劇的に増加しているので、データ保存のためのディスクのようなストレージ装置の容量は近年確実に増加してきた。例えば、テラバイトのオーダの容量を有する磁気ディスクストレージシステムは非常に一般的である。
【０００３】
【特許文献１】米国特許Ｎｏ．５，９５６，７５０
【特許文献２】米国特許Ｎｏ．６，７２５，３２８
【発明の開示】
【発明が解決しようとする課題】
【０００４】
０３    使用時割り当て（必要時割り当て、“少量配備”とも呼ばれる）技術は、仮想ボリュームに対する効率的なストレージスペース管理を提供し、これはスペースが必要時をベースとして割り当てられるからである。ストレージの従来の“人手配備（ｍａｎｕａｌ  ｐｒｏｖｉｓｉｏｎｉｎｇ）”は必要とされる実際の物理的なストレージを設置することを意味する。例えば、もしも１０テラバイト（ＴＢ）のストレージが必要である場合、人手配備の方法においては、１０ＴＢのストレージが購入されて設置される。人手配備されたボリュームはここでは“通常ボリューム”と呼ばれる。少量配備は、ユーザ（例えば管理者）が全部の量のディスクストレージを実際に購入または設置することなく任意のサイズのボリュームを生成することを可能にする。少量配備ボリュームはここでは“少量配備ボリューム”と呼ばれる。少量配備の共通的な使用方法は仮想ストレージシステムにあり、ここでは仮想ストレージの“仮想ボリューム”は少量配備ボリュームとして提供される。同一出願人の米国特許Ｎｏ．６，７２５，３２８は、ここでは使用時割り当てと呼ばれ、少量配備の例を示している。
【０００５】
０４    ＳＣＳＩ環境における論理ユニット（ＬＵ）のようなボリュームに対する現在のデータ移動技術はブロック内のデータに関係なくブロックごとをベースにオペレーションを実行する。もしも少量配備の技術に対して現在の移動技術が使用されるならば、従来の移動技術はソースボリューム内の全部のブロックをターゲットボリュームにコピーするので、少量配備の利点は失われるであろう。結果として、少量配備のシステムにおいてさえも、全部のブロックが割り当てられることになる。ストレージ技術のこの領域において改善することが可能である。
【０００６】
０５    会社、団体などで使用されるコンピュータシステムにおいて扱われる情報の量は劇的に増加しているので、データ保存のためのディスクのようなストレージ装置の容量は近年確実に増加してきた。例えば、テラバイトのオーダの容量を有する磁気ディスクストレージシステムは非常に一般的である。このようなディスクストレージシステムに関して、例えば、参照によりここに組み込まれる米国特許Ｎｏ．５，９５６，７５０に開示されているように、単一のストレージ装置サブシステムが複数のタイプの論理ディスク（これは時々単にディスクと呼ばれる）で構成される技術がある。より具体的には、ホストコンピュータによってアクセスされる装置（論理ディスク）としてＲＡＩＤ５とＲＡＩＤ１のような異なるＲＡＩＤレベルを有するディスクで構成されるか、または論理ディスクの実際の磁気ディスク（物理的なディスク）として異なるアクセス速度を有するディスクで構成されるディスクサブシステムが開示資料に開示されている。ユーザはそれぞれの装置のアクセス速度に応じて装置を選択的に使用することができる。
【課題を解決するための手段】
【０００７】
０６    本発明は、少量配備の利点を保持しながら、“通常ボリューム”と“仮想ボリューム”の間を移動する方法を提供する。通常ボリュームからの移動はデータブロックが生成データを有するかを決定することを含む。生成データを有するデータブロックは少量配備ボリューム内のセグメントとして識別される。生成データを持たないデータブロックは自由セグメントリストに割り当てられる。その後、データアクセスは少量配備ボリュームで行われることができる。
【０００８】
０７    本発明のさらなる概念は少量配備ボリュームから通常ボリュームへのデータの移動である。少量配備ボリュームに割り当てられた各セグメントは、セグメントに関連する論理ブロックアドレスに従って通常ボリュームの対応する位置にコピーされる。
【０００９】
０８    本発明のさらなる概念はボリューム内のブロックの修正を理解するためのビットマップを有する通常ボリュームの生成である。ボリュームは通常ボリュームから仮想ボリュームへの移動において使用される。
【発明を実施するための最良の形態】
【００１０】
１０    第一の実施例は、使用時割り当ての技術を使用したホストの初期書き込みにおいて、一つ以上の物理装置上のデータのブロックを含むボリュームである論理装置（ＬＤＥＶ）から要求時割り当てセグメントを含む仮想装置（ＶＤＥＶ）へ、またはＶＤＥＶからＬＤＥＶへの移動を示す。
【００１１】
１１    図１はハードウエア構成要素と構成要素間の相互接続を示す図である。一つ以上のホストシステム２のそれぞれはオペレーティングシステム（ＯＳ）と従来のコンピュータシステムのハードウエア構成；例えば、ＰＣ、ワークステーション、ミニコンピュータまたはメインフレームを有する。ホストシステムはＣＰＵ１１、メモリ１２、および内部ディスク１３を含む。ホストシステムはさらにファイバチャネル（ＦＣ）スイッチ４００（またはイーサネットスイッチ等）(イーサネットは登録商標)への接続のためのホストバスアダプタ（ＨＢＡ）１４を含む。各ホストシステムはストレージサブシステム３０によって提供される論理ユニット（ＬＵ）上にそのデータ（例えば、データベースのようなアプリケーションによって生成され使用される生成データ）を保存することができる。
【００１２】
１２    コンソール４０２はホストシステム２と同様に構成されるが、しかしＨＢＡは割り当てられないであろう。コンソール４０２は適合したコミュニケーションチャネルでストレージサブシステム３０とコミュニケーションを行う。例えば、図１はコンソール４０２がスイッチ４０１に接続されて、これは順にストレージサブシステム３０に接続されることを示す。コンソールはストレージサブシステムに遠隔の管理的なアクセスを行い、システム管理者がサブシステムを保持しそうでなければ管理することを可能にする。
【００１３】
１３    ストレージサブシステム３０はそのＬＵ上でＳＣＳＩ−２、３のコマンドセットを使用してストレージを提供するように構成される。ストレージサブシステムはいくつかのＲＡＩＤコントローラ（ＣＴＬ）２０といくつかの物理ストレージ装置３２を含む。コントローラ２０はプロセッサ、メモリ、イーサネットカードまたはＦＣポートのようなネットワークインタフェースカード（ＮＩＣ）のような構成要素を有する。コントローラはＳＡＮ（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）の能力を備え、すなわちＲＡＩＤベースのアクセスを物理ストレージ装置３２に与えるためのＳＣＳＩ  Ｉ／Ｏ要求を処理できる。本発明の最初の実施例はＳＣＳＩを使用したオープンシステムをベースにしている。しかし、本発明は他のシステム、例えば、ＣＫＤ（Ｃｏｕｎｔ  Ｋｅｙ  Ｄａｔａ）フォーマットを使用したメインフレームに適用できることは明確である。
【００１４】
１４    コントローラ２０は典型的には不揮発性のランダムアクセスメモリ（ＮＶＲＡＭ）を含み、ＮＶＲＡＭにデータを保存できる。ＮＶＲＡＭはメモリに対するバッテリ保護を使用して電源障害から保護されるデータキャッシュとして働くことができる。電源障害の場合に、例えば、ＮＶＲＡＭ上のデータは電源ソースとしてバックアップバッテリを使用して物理的ストレージ装置３２上のストレージ構成領域に移されることができる。コントローラはＳＣＳＩの世界としてターゲットＩＤを特定するためにＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）を有するＦＣポートを備えることができ、ＦＣポート上にＬＵＮを有することができる。
【００１５】
１５    管理コンソール３９０は典型的には顧客のエンジニアのために備えられている。これは内部的にストレージサブシステムに接続できる。コンソール３９０は物理装置３２の間のパリティグループの生成または削除に対するＧＵＩベースのインタフェース、および論理装置の、論理装置とＬＵの間のパスの、およびＬＵとＦＣポートの間のパスの生成または削除のようなユーザ管理者の機能に関係するインタフェースを備える。
【００１６】
１６    図２は図１に示されるシステムのソフトウエア構成要素およびそれらの間の相互作用の論理的展開を示す図である。ＳＡＮ４００は、ＦＣとイーサネットのようなスイッチまたはハブを使用した、与えられたホスト１０とストレージサブシステム３０の間の論理接続である。この能力はファイバチャネルスイッチ、ハブ、イーサネットスイッチまたはハブ等によって基本的に提供される。ＬＡＮ／ＷＡＮ４０１は、イーサネット、ＦＤＤＩ、トークンリング等のようなスイッチを使用した、コンソール４０２とストレージサブシステム３０の間の論理接続である。ストレージサブシステムはＬＡＮ／ＷＡＮ４０１に接続されて、ストレージサブシステムを管理するために他のホストからアクセスする。
【００１７】
１７    ストレージサブシステム３０は多様なソフトウエア構成要素またはモジュールを含む。ソフトウエアによって提供される機能は、コントローラ２０の中で実行するマイクロコードにおいて可能となる。プログラムコードはＣＤ−ＲＯＭのような光メディア上に保存された設定から提供されることができ、またはＦＤまたはマイクロコードを設定するためのインタネット接続のような他の遠隔装置から取得されることができる。マイクロコードは従来のパリティグループマネジャ（示されてない）、物理的ディスクからの論理ストレージをＩＯ処理２１に提供するために論理装置を生成する論理装置マネジャ（ＬＤＥＶＭｇｒ）２３、仮想装置マネジャ（ＶＤＥＶＭｇｒ）２２、およびマイグレータ２４を含む。これらの処理の詳細はさらに以下で説明される。
【００１８】
１８    パリティグループマネジャは公知であり、従って図２に示されていない。このモジュールはコントローラ２０のマイクロコードの部分である。パリティグループマネジャは、ＲＡＩＤ０／１／２／３／４／５／６技術を使用して、物理ストレージ装置３２に対してパリティグループ情報を定義し保持する。ＲＡＩＤ６は、ＲＡＩＤ５の技術をベースに、デュアルパリティ保護を提供する。生成されたパリティグループはＬＤＥＶ構成テーブル２９（図３）に載せられる。このテーブル内の情報はストレージサブシステム内のパリティグループを識別するためのパリティグループ番号５１、ＲＡＩＤ技術から生成される使用可能容量サイズ５２、ＲＡＩＤ構成５３、および構成する物理的ストレージ装置５４を含む。テーブル内の追加の情報は以下で説明される。
【００１９】
１９    ＬＤＥＶマネジャ２３は各ＬＤＥＶの構造とＬＵからのＩＯの行動内容を管理する。ＬＤＥＶはＬＵがホストからのデータを保存しおよびホストにデータを提供するための論理ストレージ領域を提供する。ＬＤＥＶはパリティグループの部分である。管理者は、ＬＤＥＶの番号を付加して、ＬＤＥＶの領域を定義しおよび初期フォーマッティングを行う。ＬＤＥＶとパリティグループの間のマッピングはＬＤＥＶ構成テーブル２９（図３）に保存される。各パリティグループ（ＬＤＥＶ構成テーブル２９のフィールド５１）に対して、記録はこのパリティグループ内のＬＤＥＶ毎に保持される。記録はＬＤＥＶを識別するＬＤＥＶ番号５５、パリティグループ内のＬＤＥＶ開始アドレスを表す開始論理ブロックアドレス（ＬＢＡ）５６、およびパリティグループ内のＬＤＥＶ終了アドレスを表す終了ＬＢＡ５７を含む。
【００２０】
２０    初期化されたボリュームを表すために使用されるデータはＡＳＣＩＩの“０”（ゼロ）であることが可能である。しかし、“０”はまたＶＤＥＶ（後で説明する）内の未割り当てセグメントを示すために読み出し機能コールにおいて戻り値として時々使用され、これはあいまいさを作ることになりうる。従って、初期化されたディスクのＮＵＬＬ埋め込み値として、他のデータ表現方法が選択される場合がありえて、例えば、ＮＵＬＬ（＼０）である。この選択はコンソール４０２を経由して提供されることができる。ＬＤＥＶが初期化された後に、初期化の状態は図３のＦＭＴフィールド５８に保存される。初期化の場合に、マイクロコードはフォーマットビットをオン（“１”）にして、ＬＤＥＶが初期化されてまだ書き込みはされていないことを示す。ＬＤＥＶは“初期化状態”と言われる。もしもビットがオフ（“０”）であるなら、これはＬＤＥＶが書き込まれていて、従ってもはや初期化状態ではないことを示す。
【００２１】
２１    各ＬＤＥＶはビットマップ２６と関連している。ビットマップ２６内の各ビットはＬＤＥＶのブロックに対応し、初期的にオフ（例えば、論理的“０”）に設定される。データがブロックに書き込まれる時に、対応するビットがオン（例えば、論理的“１”）に設定される。より一般的に、ホスト上のアプリケーションに対するデータを保存するために割り当てられた、またはファイルシステムを管理するためにホスト上のオペレーティングシステムによって使用されるブロックは生成データと呼ばれる。これらのブロックは割り当てブロックと呼ばれる。アプリケーションデータに対して割り当てられない、およびオペレーティングシステムによって使用されないブロックに含まれるデータは非生成データと呼ばれる。これらのブロックは未割り当てブロックと呼ばれる。
【００２２】
２２    ＬＤＥＶが多数のブロックを含む時に、ブロックはより少数のブロックグループにグループ化されることができる。これはより小さくより便利なサイズでビットマップを保持するために役立つ。例えば、ＬＤＥＶが２５６ｘ２１０ブロックを含む場合には、２５６キロビットのビットマップを必要とするであろう。代わりに、もしも各ビットが２５６ブロックに対応するなら、ビットマップはサイズとして１キロビットだけを必要とする。
【００２３】
２３    もしもＬＤＥＶがそれに対して定義された対応するビットマップを有していないと、システム管理者がビットマップを生成することを可能にする適切な処理が提供されることができる。これはコンソール４０２を経由して要求されることができる。ＬＤＥＶマネジャ２３はＬＤＥＶから各ブロック（またはブロックのグループ）を読み出し、もしもブロック（またはブロックのグループ）が書き込まれていない（すなわち、データブロックがＮＵＬＬで満たされている）なら対応するビットをオフに設定し、もしもブロック（またはブロックのグループの少なくとも一つ）が書き込まれているなら対応するビットをオンに設定する。本発明のこの点は本発明によるデータ移動処理に対して初期的には構成されていない現在のストレージシステム（いわゆるレガシーシステム）に対して適切である。
【００２４】
２４    ビットマップに適応するために、ＳＣＳＩ書き込みコマンドを実行する手順は図４に示されるように修正される。従って、ステップ１３１において、データは書き込みコマンドに応じて、開始ＬＢＡおよびサイズによって特定されたＬＵを経由してＬＤＥＶに書き込まれる。ステップ１３２において、ＬＤＥＶに対応するビットマップ内の対応するビットがＯＮに設定される。初期化されたＬＤＥＶへの最初の書き込みコマンドにおいて、マイクロコードはＬＤＥＶがもはや初期化された状態ではないという事実を示す必要がある。従って、ＬＤＥＶに対する最初のＳＣＳＩ書き込みコマンドの場合に、マイクロコードはこの出来事を記録する。図３に戻って、ＦＭＴフィールド５８はＬＤＥＶが初期化された状態である（“１”）かまたはそうではない（“０”）かを示す。最初の書き込みオペレーションがＬＤＥＶ上で実行された後で、ＦＭＴフィールド５８は“０”に変更されて、ボリュームが書き込まれたかさもなければ修正されて、従ってもはや初期化された状態ではないことを示す。以下に説明されるように、このＦＭＴフィールド５８はＶＤＥＶからＬＤＥＶへの空データに対する移動に使用される。
【００２５】
２５    仮想装置（ＶＤＥＶ）マネジャ２２は仮想装置をベースにするＬＵを備えるために仮想装置として少量配備ボリュームを生成し管理する。仮想装置ベースのＬＵへの書き込みオペレーションが他のブロックの割り当てを要求する時に、ＶＤＥＶマネジャ２２はセグメントプール２７−１（図６参照）からストレージセグメントを割り当てる。セグメントマネジャ２７はセグメントプール２７−１を管理する。
【００２６】
２６    ストレージセグメントは“割り当てられた”または“未割り当ての”のどちらかである。図２は“割り当てられた”セグメント３７と“未割り当ての”セグメント３８を示す。割り当てられたセグメントはデータを有する。ＶＤＥＶマネジャ２２は割り当てテーブル２７−０（図５）を保持し、少量配備ボリュームによって定義される仮想装置に対する仮想ＬＢＡ（ＶＬＢＡ）スペースを管理する。割り当てテーブル２７−０は仮想装置を識別するＶＤＥＶ番号フィールド１４１を含む。ホストから見えるサイズフィールド１４２はＳＣＳＩのＲＥＡＤ  Ｃａｐａｃｉｔｙコマンドを使用して初期化されることができる。割り当てテーブル２７−０はまた仮想装置に割り当てられる各ストレージセグメントに対する記録を保存する。各記録はストレージセグメントが表す仮想装置内の開始アドレスを示す開始ＶＬＢＡフィールド１４３、各セグメントのサイズを示すセグメントサイズフィールド１４４、およびセグメントプール２７−１内のストレージセグメントを識別するセグメント番号フィールド１４５を含む。もしもセグメントがデータを有していない（すなわち書き込まれていない）なら、セグメント番号フィールドはセグメントが書き込まれていない、従って未だ割り当てられていないことを示すなんらかの未定義の値、例えばー１、である。
【００２７】
２７    “未割り当て”セグメント（または“自由”セグメント）は一つ以上のＬＤＥＶから生成される。各ＬＤＥＶは複数のセグメントに分割されて自由セグメントプール２７−１に追加される。自由セグメントプールは全てのセグメントの中のセグメントをユニークに識別するセグメント番号フィールド１４６を含む。これは典型的にはＬＤＥＶを含むセグメントの単に連続的な番号付けである。ＬＤＥＶフィールド１４７は特定のセグメントが始まるＬＤＥＶを特定する。ＬＢＡフィールド１４８とセグメントサイズフィールド１４９はＬＤＥＶ内のセグメントの位置を特定する。
【００２８】
２８    図７は仮想装置ベースのＬＵ上において書き込みオペレーションを実行する処理動作を示す。ステップ１１１において、書き込みオペレーションのターゲットがストレージセグメントを割り当てられているか、または割り当てられていないかを決定する。もしも割り当てられていないなら、処理はステップ１１２に続き、割り当てられているなら処理はステップ１１３に進む。ステップ１１２において、ストレージセグメントは自由セグメントプール２７−１から割り当てられる。次にステップ１１３において書き込みオペレーションが実行される。
【００２９】
２９    ステップ１１１は割り当てテーブル２７−０（図５）の検査を含む。ＬＵに対応する仮想装置（ＶＤＥＶ）に対するエントリが調べられる。書き込みオペレーションのターゲットアドレスはＶＬＢＡフィールド１４３を検索するために使用される。もしもセグメント番号フィールド１４５が埋められていない（例えば、”−１“に設定されている）なら、ストレージセグメントは未だに割り当てられていない。
【００３０】
３０    本発明のこの少量配備の概念の重要な点は、少量配備ボリュームはストレージが必要とされるときに動的に拡大されて、またこの拡大はユーザの係わりなく自動的に発生することである。
【００３１】
３１    図８は図７のフローチャートの処理動作を示す。例えば、書き込みオペレーションは、ＶＤＥＶ内のＬＢＡ２２５２０をターゲットにして、ＶＤＥＶ１１５に対して起こる。ターゲットアドレス２２５２０に対応するストレージセグメント１１６は未だに割り当てられていないと仮定して、ＶＤＥＶマネジャ２２は自由セグメントプール１１７からセグメント（＃３０１）を割り当てる。図８はまた自由セグメントプールを実現するために構成される基礎のＬＤＥＶ２０１を示す。ＬＤＥＶ２０１は適切なサイズのセグメントに分割される。セグメントの各々は番号付けされてテーブル２７−１（図６）に載せられ、こうして自由セグメントプール１１７をまとめて構成する。
【００３２】
３２    図９は読み出しオペレーションに対して実行される動作を示す。図１０は図９の処理動作を示す。従って、ステップ１０１において、読み出しオペレーションのターゲットのＬＢＡに対応するストレージセグメントが割り当てられているか、または割り当てられていないかを決定する。もしも割り当てられていないなら、次にステップ１０３において、適切なＮＵＬＬ応答がターゲットのＬＢＡはストレージ内の未書き込み領域であることを示して戻される。典型的には、応答は読み出しデータの量を含み、このケースではゼロである。ＬＤＥＶが初期化される時に値はコンソール４０２において定義される。一方で、もしもターゲットのＬＢＡが割り当てられたストレージセグメントのアドレス範囲内であるなら、ストレージセグメント内のデータが読み出されて戻される。ステップ１０２。
【００３３】
３３    ステップ１０１で行われる決定は割り当てテーブル２７−０を調べることによって行われる。最初に、アクセスされるＬＵに対応するＶＤＥＶが決定されて、従ってＶＤＥＶフィールド１４１内の正しいエントリを特定する。ターゲットのＬＢＡは対応するストレージセグメントを特定するために対応するＶＤＥＶの開始ＶＬＢＡフィールドと比較される。セグメント番号フィールド１４５は次にセグメントが割り当てられているかまたは割り当てられていないかを決定するために調べられ、処理は次にステップ１０２またはステップ１０３に進む。
【００３４】
３４    図１０はターゲットのＬＢＡが以前に割り当てられたストレージセグメントをアクセスする状況を示す。読み出し要求が、（割り当てテーブル２７−０を経由して）セグメント１０６にマッピングするＬＢＡ２２５２０をターゲットにするところを示されている。セグメント１０６がブロック位置１０７においてＬＤＥＶ２０１上に存在するところを示されている。読み出しオペレーションに対する実際のデータは次にＬＤＥＶ２０１から読み出される。
【００３５】
３５    ＩＯ処理２１はホストからのＬＵに対して行われるＩＯ要求を処理する。ＩＯ処理２１はＳＣＳＩ  Ｉ／Ｏオペレーションを扱うための構成要素（示していない）を含む。ＩＯ処理はストレージサブシステム３０内のポートにＬＵをマッピングするテーブル２５（図１２）を含む。テーブル２５はポートとＬＵ間の情報を調整するためにコントローラ２０によって使用される。テーブルは、物理ＦＣポートを特定するポート番号フィールド８１、ポートにワールドワイドネーム（ＷＷＮ）を関連付けるＷＷＮフィールド８２、論理ユニット番号（ＬＵＮ）フィールド８３、および装置名フィールド８４を含む。
【００３６】
３６    マイグレータ２４は本発明によってＬＤＥＶとＶＤＥＶの間でデータを移す移動オペレーションを実行する。移動オペレーションは複数のＬＤＥＶ間でデータを移すこと、ＬＤＥＶからＶＤＥＶにデータを移すこと、ＶＤＥＶからＬＤＥＶにデータを移すこと、および複数のＶＤＥＶ間でデータを移すことを含む。
【００３７】
３７    第一のＬＤＥＶから第二のＬＤＥＶへのデータの移動において、管理者はソースＬＤＥＶとしてＬＵを特定し、ターゲットＬＤＥＶを選択する。ターゲットＬＤＥＶはコンソール３９０またはコンソール４０２上に備えられた適切なインタフェースを経由して自由ＬＤＥＶプール１７３（図１１）から選択される。自由ＬＤＥＶプール１７３は各ＬＤＥＶに対する状態の変化を示す。三つの状態がある。一つの状態は、ＬＵにまたは自由セグメントプール２７−１に割り当てられたＬＤＥＶを示す“使用されたＬＤＥＶ”１７２である（上記に説明し、および以下にさらに説明するように）。他の状態は、ＬＵにまたは自由セグメントプール２７−１に割り当てられていないＬＤＥＶを示す“自由ＬＤＥＶ”１７３である。最後の状態は、オペレーションの中間状態にあるＬＤＥＶを示す“確保されたＬＤＥＶ”１７４である。さらに具体的には、これらのＬＤＥＶはまだ進行中にある移動オペレーションに対して割り当てられたものである。
【００３８】
３８    マイグレータ２４はターゲットＬＤＥＶを確保しおよび移動オペレーションを実行するタスクをスケジューリングすることができる。移動タスクが実行する時に、マイグレータ２４はソースＬＤＥＶとターゲットＬＤＥＶの間にペアのミラーを生成する。ミラーリングの間に、ホストの書き込みＩＯはソースＬＤＥＶにおよびターゲットＬＤＥＶに送られて、ターゲットＬＤＥＶ上に書き込まれたブロックに対応する関連のビットマップ内にビットを設定し、さらにホストによって既に書き込まれたホスト書き込みブロックに対するコピーのブロックは省略される。もしも移動が“オンライン”の方法で実行されると、マイグレータ２４はミラーリングオペレーションの完了後にソースＬＤＥＶに向けられたホストＩＯを停止して、ミラーのペアを分離する。マイグレータ２４は次にホストによって使用されるＬＵの指定をターゲットＬＤＥＶに向くように変更する。ソースＬＤＥＶは次に自由ＬＤＥＶになる。もしも移動が“オフライン”の方法で実行されると、マイグレータ２４はデータ移動の完了後、ソースＬＤＥＶに対するＩＯを単に処理し続ける。“オフライン”移動を実行することは管理者がターゲットＬＤＥＶを再使用することを可能にする。例えば、それを他のＬＵ、またはＬＵが既に割り当てられている場合にはミラーリングオペレーションの前のＬＤＥＶに接続する。
【００３９】
３９    図１３は移動の場合の変更状態のオペレーションを示す。ステップ１において、マイグレータ２４はターゲットＬＤＥＶ１８７を確保して、スケジューラに移動タスクを入力する。次にステップ２において、スケジューラはタスクを取り込んで使用されたＬＤＥＶ１８６からデータを移動することを開始する。これはソースＬＤＥＶからターゲットＬＤＥＶ１８７である確保されたＬＤＥＶにデータをミラーリングすることを含む。もちろん、ミラーリングの間に、ホストの書き込みＩＯはソースＬＤＥＶにおよびターゲットＬＤＥＶに送られる。もしも移動がオンラインであるなら、ソースＩＯは停止されてパスはターゲットＬＤＥＶに変更される。ミラーリングの後で、ステップ３においてターゲットＬＤＥＶは使用されたＬＤＥＶ状態に変更されて、ソースＬＤＥＶは自由ＬＤＥＶ状態に変更される。
【００４０】
４０    一つのＶＤＥＶから他のＶＤＥＶにデータを移動するために、管理者はコンソール上でターゲットＬＵを特定する。データ移動が適切に起きることを確実にするために、ＶＤＥＶ番号のアイディアがある。コントローラ２０はプール化ＶＤＥＶ２８−１のテーブル（図１４）を有してＶＤＥＶの状態を管理する。テーブルは、ＬＵに既に割り当てられたＶＤＥＶを示す“使用された”ＶＤＥＶ番号フィールド４７５、移動オペレーションに対して確保されているターゲットＶＤＥＶのＶＤＥＶ番号を示す“確保された”ＶＤＥＶフィールド４７６、およびＬＵに割り当てられていないＶＤＥＶを示す“自由”ＶＤＥＶフィールド４７７を含む。
【００４１】
４１    移動オペレーションの間に、ストレージサブシステム３０上のマイグレータ２４はＶＤＥＶプール２８−１内の自由ＶＤＥＶフィールド４７７から自由ＶＤＥＶを選択して、選択されたＶＤＥＶのＶＤＥＶ番号を確保されたＶＤＥＶフィールド４７６に移す。次に移動タスクは生成され、スケジューリングされる。移動タスクは図１５のステップ１に示すように実行される。
【００４２】
４２    タスクが実行される時に、マイグレータ２４は新しいストレージセグメントを割り当てて（図１５のステップ２．１）、ソースＶＤＥＶ上のセグメントからターゲットＶＤＥＶ上の新しいセグメントにセグメントごとにデータをコピーする（図１５のステップ２．２）。もちろんコピーの間に、ホストの書き込みＩＯはソースＶＤＥＶにおよびまたターゲットＶＤＥＶ上にデータを書き込むためにターゲットＶＤＥＶに送られる。もしも移動が“オンライン”の方法で実行されるなら、ホストは移動の完了でターゲットＶＤＥＶに“接続”される。マイグレータ２４はソースＶＤＥＶからターゲットＶＤＥＶに全てのセグメントのコピーを完了した後でホストのＩＯを停止する。ボリュームをアクセスするためにホストによって使用されるＬＵの指定はターゲットＶＤＥＶに向くように変更される（図１５のステップ３．１）。ターゲットのＶＤＥＶ番号は確保されたＶＤＥＶフィールド４７６（図１４）から使用されたＶＤＥＶフィールド４７５に移される。ソースＶＤＥＶ内のセグメントは自由セグメントプール１１７に置かれて、ソースＶＤＥＶ番号は自由ＶＤＥＶフィールド４７７に移される（図１５のステップ３．２）。もしも移動が“オフライン”のモードで実行されると、マイグレータ２４はソースＶＤＥＶを使用してＩＯを処理し続ける。管理者はペアの分離の後にターゲットＶＤＥＶを再使用することが可能で、ＬＵをＶＤＥＶに割り当てるか、またはＬＵはＯＦＦＬＩＮＥオペレーションのケースにおいてコピーの前にＶＤＥＶに割り当てられている場合がある。図１５のステップ１。
【００４３】
４３    移動タスクをスケジューリングするために使用されるスケジューラは典型的にはＯＳによって提供される。例えば、“ｃｒｏｎ”ユーティリティはＵＮＩＸ(ＵＮＩＸは登録商標)ベースのＯＳ上に提供される。マイクロソフトのＷｉｎｄｏｗｓ（Ｒ）オペレーティングシステムもまたタスクスケジューリングに対して備えている。説明したように、移動タスクをスケジューリングするかそうでなければモニタリングするためのユーザアクセスは、ストレージサブシステム３０内のコンソール３９０またはコンソール４０２を経由して遠隔的に提供されることが可能である。
【００４４】
４４    本発明の典型的なオペレーションは、物理ストレージ装置３２の中からパリティグループを生成するユーザ（例えば、カスタマサービスエンジニア）を含む。次に、システム管理者はパリティグループから複数のＬＤＥＶを生成する。管理者は自由セグメントプールに少なくとも一つのＬＤＥＶを割り当てる。次にストレージサブシステム３０は、予め決められたセグメントサイズ基準に従って、自由セグメントプールを構成する複数のセグメントにＬＤＥＶを分割する。ＶＤＥＶを生成するために、管理者は図１４のＶＤＥＶ番号プール４７７からＶＤＥＶ番号およびＶＤＥＶに対するサイズを選択する。ホストからＬＵをアクセスするために、管理者はＶＤＥＶまたはＬＤＥＶとＬＵの間のパスを定義する。
【００４５】
４５    ＬＤＥＶからＶＤＥＶへのデータの移動オペレーションは少なくとも一つのＬＤＥＶがＬＵに関連していることを要求する。自由セグメントプールは割り当てのために自由セグメントを有しなければならない。割り当てのためにＶＤＥＶプール（図１４）内に利用可能なＶＤＥＶ４７７がなければならない。同様に、ＶＤＥＶからＬＤＥＶへのデータの移動オペレーションはＬＵに関連しているＶＤＥＶを要求する。ＬＤＥＶプール（図１１）からの自由ＬＤＥＶ１７３は割り当てに対して利用可能でなければならない。
【００４６】
４６    移動が開始する前に、管理者はどちらのＬＤＥＶまたはＶＤＥＶが使用するために最良かを知る必要があり、移動処理を起動するためにスケジューラ内のタスクを生成しなければならない。基本的な論理は、ストレージサブシステムがストレージサブシステム上でＶＤＥＶを含むＬＵにまたはＬＤＥＶを含むＬＵにデータを書き込む比率のスケジューリングされた、例えば、月ベース、四半期ごと等に、チェックを実行することである。ストレージサブシステムはＶＤＥＶ内のセグメントの中で割り当てられたセグメントの比率をチェックして、ＬＤＥＶに対してビットマップ内のオンに設定されたビットをチェックする（ＬＤＥＶに対する対応するセグメントがＬＤＥＶの初期フォーマットから修正されたことを示す）。
【００４７】
４７    図１６は移動処理を活性化するためのスレッシュホールド２３１（より一般的には基準）を設定するために使用されることが可能であるグラフィカルインタフェースを示す。示された例において、フィールド２３１に入力される値は移動を起動するＬＵの使用パーセントを表す。例えば値が５０％であると仮定し、またＬＵは初期にはＬＤＥＶに関連すると仮定する。もしもＬＤＥＶ上で使用されるストレージの量が５０％より落ちると、これはＬＤＥＶからＶＤＥＶへのデータの移動を起動し、ここで次にＬＵは移動の後でＶＤＥＶに関連付けられる。もしも後でＬＵ（今ではＶＤＥＶに関連付けられている）の使用が５０％より上昇したら、これはデータをＬＤＥＶに戻す移動を起動し、この時次にＬＵはＬＤＥＶと関連付けられる。図１６に示されるＧＵＩは、ＬＵが現在関連付けられているＬＤＥＶまたはＶＤＥＶの使用レベルのチェックを実行する頻度を特定するフィールド（示されていない）を含むことができる。
【００４８】
４８    データ移動は大きな作業なので、移動オペレーションがＬＵに対して指示されることをシステム管理者に単に推奨することが、自立的に移動を実行するよりも実際的である場合がある。システム管理者は推奨をベースに最終的な決定をすることができる。
【００４９】
４９    図１７は移動が起動される処理を示す。この処理は予め決められた比率で、またはスケジュールに従って、どちらもユーザが特定できるが、定期的に実行されることが可能である。ステップ２０１において、ＬＤＥＶからＶＤＥＶにデータを移動する基準が満たされているかをチェックする。これは図１８においてより詳細に説明される。ステップ２０２において、ＶＤＥＶからＬＤＥＶにデータを移動する基準が満たされているかをチェックする。これは図１９においてより詳細に説明される。もしも警告リストがある場合には（ステップ２０３）、警告リストの各ユーザはステップ２０４において通知される。通知は多くの方法、例えば、イーメール、ファックス、ポケットベル、ＳＮＭＰトラップ等、のどれかで行われることが可能である。従って、図１６に示される例は移動を実行する時点を決定する、すなわち使用レベルを監視する、簡単な基準を示す。説明の目的で、この簡単な基準が説明の例として使用される。しかし他の基準が直ぐに使用可能であることを認識することが可能である。
【００５０】
５０    図１８はどのＬＤＥＶが移動されるかを決定する処理を示す。ステップ２０６において、各ＬＤＥＶが移動に対して調べられたかをチェックする。もしも全てのＬＤＥＶが調べられていれば、処理は終了する。ステップ２０７と２０８は、移動を起動するかまたは移動を実行することを推奨するための基準の例を構成する（点線で示されている）。ステップ２０７は調べられているＬＤＥＶに対応するビットマップ内のオンに設定されているビットの数をチェックする。これはＬＤＥＶの使用レベルを示す。例えば、使用比率は次のように計算される。
【００５１】
使用比率（ＬＤＥＶ）＝オンに設定されたビットの数／ビットの総数×１００
ステップ２０８において、もしも使用レベルがスレッシュホールドパーセンテージ（例えば、図１６において設定されるように、スレッシュホールドはＸから独立したＹのようなＶＤＥＶに対する専用のスレッシュホールドを使用するであろう。このケースにおいて、ＸとＹスレッシュホールド間には移動のなんらの提示もない）より落ちると、このＬＤＥＶに関連するＬＵはＶＤＥＶへのデータ移動に対してスケジューリングされるかまたは推奨される。処理は次のＬＤＥＶを調べるためにステップ２０６に続く。
【００５２】
５１    図１９はどのＶＤＥＶが移動されるかを決定する処理を示す。ステップ２１１において、各ＶＤＥＶが移動に対して調べられたかをチェックする。もしも全てのＶＤＥＶが調べられていれば、処理は終了する。ステップ２１２と２１３は、移動を起動するかまたは移動を実行することを推奨するための基準の例を構成する（点線で示されている）。ステップ２１２は調べられているＶＤＥＶに割り当てられているセグメントの数をチェックする。これはＶＤＥＶの使用レベルを示す。ステップ２１３において、もしも使用レベルがスレッシュホールドパーセンテージ（例えば、図１６において設定されているような）より上昇すると、このＶＤＥＶに関連するＬＵはデータに対してスケジューリングされるかまたは推奨される。例えば、使用比率は次のように計算される。
【００５３】
使用比率（ＶＤＥＶ）＝割り当てられたセグメント／セグメントの総数×１００
これはＶＤＥＶの使用レベルを示す。ステップ２１３において、もしも使用レベルがスレッシュホールドパーセンテージ（例えば、図１６において設定されているような）より上昇すると、このＶＤＥＶに関連するＬＵはＬＤＥＶへのデータ移動に対してスケジューリングされるかまたは推奨される。処理は次のＶＤＥＶを調べるためにステップ２１１に続く。
【００５４】
５２    ステップ２０７／２１２およびステップ２０８／２１３に対する他の基準として、ＬＤＥＶまたはＶＤＥＶにおける活動性を決定するためにＬＤＥＶまたはＶＤＥＶに対する読み出し／書き込みアクセスの数を使用する場合がある。もしもＬＤＥＶへの読み出し／書き込みアクセスが非常に少ないなら、ＬＤＥＶからＶＤＥＶへのデータの移動が実行されることが可能である。ＶＤＥＶからＬＤＥＶへのデータのケースでは、もしも多くの読み出しおよび書き込みアクセスがあると、移動が実行されることが可能である。このオペレーションにおいて、管理者はＬＤＥＶの移動タイミングに対するカウンタのスレッシュホールドＸを定義し、スレッシュホールドはＶＤＥＶがＬＤＥＶへ移動することを示す。管理者はまたＶＤＥＶに対するカウンタのスレッシュホールドＹを定義し、スレッシュホールドはＬＤＥＶがＶＤＥＶへ移動することを示す。各ＶＤＥＶおよびＬＤＥＶは、週、月、四半期、または年のような期間内に定期的に監視するためにアクセスされたＩ／Ｏ数のカウンタを有する。カウンタは各読み出しおよび書き込みＩＯアクセスを観察し、マイクロコードが各推奨の後にステップ２０８／２１３のような推奨をチェックするまでカウントを増やし、カウンタはリセットされる。
【００５５】
５３    ステップ２０８と同じく、マイクロコードは定義されたスレッシュホールドでカウンタに対する使用レベルをチェックする。もしもカウンタがスレッシュホールドパーセンテージＸより大きいと、マイクロコードはデータをＬＤＥＶに移動することを推奨する。またステップ２１３と同じく、マイクロコードは定義されたスレッシュホールドでカウンタに対する使用レベルをチェックする。もしもカウンタがスレッシュホールドパーセンテージＹより下がると、マイクロコードはデータをＶＤＥＶに移動することを推奨する。
【００５６】
５４    図２０は移動に対する推奨を載せるＧＵＩの例を示す。インタフェースは、可能な移動オペレーションの目的であるデータを有するＬＵを特定するソースＬＵフィールド２２１を示す。ターゲット装置フィールド２２２はデータ移動のターゲットを特定する。構成フィールド２２３は、ＬＤＥＶフィールド２２２に特定されている装置がＬＤＥＶとして構成されるかまたはＶＤＥＶとして構成されるかを示す。これらのフィールドは図１２に示されるテーブル２５から取得される。推奨フィールド２２４は図１７〜図１９に概説された処理の結果を示す。使用フィールド２２５はＬＤＥＶ上の使用されたスペースの量、またはＶＤＥＶのケースでは割り当てられたセグメントの量を示す。数値において、使用内容は利用可能なスペースまたはセグメントの総計のパーセンテージとして表される。要求移動フィールド２２６はユーザが移動のためにＬＵを選択することを許可するか、またはしないかの入力フィールドである。
【００５７】
５５    図２０に示されるＧＵＩは、フィールド２２２内のターゲットにＬＤＥＶ番号を特定することによって、ユーザがターゲットＬＤＥＶまたはＶＤＥＶを選択することを許可するように強化されることが可能である。ＧＵＩは“オンライン”移動を特定するフィールドで強化されることが可能であり、これは、ＬＵがデータをターゲットに移動した時に、ＬＵは続きのＩＯに対してそのターゲットに割り当てられることを意味する。
【００５８】
５６    適用（Ａｐｐｌｙ）ボタンがマウスクリックを経由してユーザによって“活性化”される時に、例えば、任意の選択された移動オペレーションが次にスケジューリングされる。図２１はスケジューラによって実行される処理を示す。これはスケジューリングされるタスクを捜す標準的な待ちのループである。
【００５９】
５７    図２２は移動オペレーション１５０に対する処理を示し、以下の内容を含む。
【００６０】
・ステップ１５１：マイグレータ２４はソース装置とターゲット装置のペアを生成する。
【００６１】
・ステップ１５２：移動の方向がチェックされる。もしも移動がＬＤＥＶからＶＤＥＶであれば、処理はステップ１５３に続く。もしも移動がＶＤＥＶからＬＤＥＶであれば、処理はステップ１５４に続く。
【００６２】
・ステップ１５３：マイグレータ２４は、対応するビットマップをベースに、ソースＬＤＥＶからターゲットＶＤＥＶにデータをコピーする。移動はソース装置とＶＤＥＶ間のデータが同期化されるまで続く。もしもホストがコピーの間にソースに書き込みＩＯを送ると、書き込みＩＯに対するデータはまたセグメントの割り当ての後にデータを書き込むためにターゲットに送られる。
【００６３】
・ステップ１５４：マイグレータ２４はセグメントを割り当て、割り当てセグメントテーブル２７−０（図５）をベースにソースＶＤＥＶからターゲットＬＤＥＶにデータをコピーする。もしもホストがコピーの間にソースに書き込みＩＯを送ると、書き込みＩＯに対するデータはまたデータを書き込むためにターゲットに送られ、書き込まれたセグメントに対応するＬＤＥＶのビットマップ内のビットをオンに設定する。また、マイグレータは埋め込み文字でＬＤＥＶ内の空セグメントを埋め込む（図５のセグメントフィールド１４５の“−１”として示されるように）。典型的には、ＡＳＣＩＩの“０”（ゼロ）またはＮＵＬＬ（＼０）であるＮＵＬＬ埋め込み値は空ブロックを示すＬＤＥＶのフォーマッティングされた値と同じである。マイグレータがＬＤＥＶ内の空セグメントを埋め込むことに関して、ビットマップ内のビットのいくつかが“１”である時に、ボリュームはＮＵＬＬによって未初期化ではないと仮定する。ビットマップ内のビットの全てが“０”である時に、もしもボリュームがＮＵＬＬによって初期化されていると、埋め込みオペレーションは省略される。このチェックはステップ１５４の前に行われる。図３はＦＭＴフィールド５８を含み、ＬＤＥＶが初期化状態（“１”）であるかまたはそうでない（“０”）ことを示す。
【００６４】
・ステップ１５５：マイグレータ２４はターゲット装置に対するビットマップを生成する。
【００６５】
・ステップ１５６：マイグレータ２４は移動タスクがオンラインオペレーションかまたはオフラインオペレーションかを確認する。もしもタスクがオンライン移動であるなら、この処理手順はステップ１５７に進む。もしもタスクがオフライン移動であるなら、この処理手順はステップ１５９に進む。
【００６６】
・ステップ１５７：マイグレータ２４はソースとターゲットを停止する。もしもホストがＩＯオペレーションを発行すると、これはステップ１５８が実行されるまで待ち状態に置かれる。
【００６７】
・ステップ１５８：マイグレータ２４はソース装置からターゲット装置にパスを変更する。ホストは次にそのＩＯオペレーションを再開することができる。
【００６８】
・ステップ１５９：マイグレータ２４はペアを捨てる。
【００６９】
５８    図２３は、上記のステップ１５５で実行された、移動オペレーションのターゲットであったＬＤＥＶに対するビッットマップの再生成を示す。データがソースＶＤＥＶからターゲットＬＤＥＶにコピーされた後に（ステップ１６１）、ＬＤＥＶに対するビッットマップが生成されなければならない。ステップ１６２において、マイグレータ２４は割り当てられたセグメントから次のセグメントを取得して、ＬＤＥＶに関連するビットマップ内の対応するビットをオンに設定する。
【００７０】
５９    図２４は図２２の移動処理からの結果であるＬＤＥＶからＶＤＥＶへのデータの移動に対するデータフローを示す。マイグレータ２４はＶＤＥＶとＬＤＥＶ間のペア関係を生成する。データは次にソースＬＤＥＶに対応するビットマップテーブル２６をベースにソースＬＤＥＶ内のブロックからコピーされる。ＬＤＥＶからのデータの１ブロックのコピーオペレーションの前に、マイグレータは自由セグメントプールからセグメントを割り当て、ＶＤＥＶに関連する割り当てセグメントテーブル２７−０内にエントリセグメントを生成する。ＬＤＥＶからのデータの１ブロックは次にＶＤＥＶ内の割り当てられたセグメントにコピーされる。移動が完了すると、ＬＤＥＶは他のＬＵに再割り当てされることができる。ＶＤＥＶはＯＮＬＩＮＥのケースにおいてはＬＤＥＶにもともと関連したＬＵに関連するか、またはＯＦＦＬＩＮＥオペレーションのケースにおいては他のＬＵに関連する。
【００７１】
６０    図２５はデータのコピー動作を避ける実施例を示す。ソースＬＤＥＶはＬＤＥＶに関連するＬＵの指定の方法で特定される。利用可能なＶＤＥＶ番号はテーブル２８−１（図１４）から選択されて、従ってターゲットＶＤＥＶを特定する。基本的に、ソースＬＤＥＶに対応するビットマップはテーブル２７−０（図５）とターゲットＶＤＥＶの自由セグメントプールに変換される。マイグレータ２４はターゲットＬＤＥＶに関連するビットマップに沿って進む。ＶＤＥＶ番号はテーブル２７−０（図５）の対応するＶＤＥＶエントリ（フィールド１４１）に導く。設定される（すなわち、ＯＮに）各ビットに対して、これは対応するブロック内にデータがあることを示すが、テーブル２７−０へのキーとして対応するブロックのＬＢＡアドレスを使用して、対応するブロックのシーケンス番号はテーブル２７−０のセグメントフィールド１４５内の適切なエントリに入力される。そのビットが設定されていないＬＤＥＶ内のブロックのシーケンス番号は自由セグメントプール１１７に入力される。この方法で、ソースＬＤＥＶからターゲットＶＤＥＶへのデータの実際のコピー動作はない。
【００７２】
６１    図２６は、図２２の処理フローに示されるように、ＶＤＥＶからＬＤＥＶへの移動の間のデータの動きとターゲットＬＤＥＶに対するビットマップの生成を示す。コピーのペアはソースＶＤＥＶとターゲットＬＤＥＶを含んで生成される。ソースＶＤＥＶに対応するテーブル２７−０（図５）内のエントリを使用して、ＶＤＥＶ内の各セグメントはＶＬＢＡフィールド１４３に示されたアドレスにおいてＬＤＥＶにコピーされる。およびもしもＬＤＥＶがフォーマッティングされていないと、図３内のＦＭＴフィールド５８の状態は“０”である。マイクロコードが図５のセグメントフィールド１４５内の“−１”の値を見つける時に、図３内の開始ＬＢＡフィールド５６と終了ＬＢＡフィールド５７によって示されるセグメントのアドレス付けされた領域に対してマイクロコードはデータを埋め込む。
【００７３】
６２    本発明の第二の実施例に従うと、ストレージサブシステム３２（図１）は外部ストレージシステムである。この構成の利点は外部ストレージリソースを使用することの追加の柔軟性である。図２７はこの実施例によるシステム構成を示す。一つ以上のホストシステム２のそれぞれは従来のコンピュータシステムのオペレーティングシステム（ＯＳ）とハードウエア構成を有する。ホストシステムはＣＰＵ１１、メモリ１２、および内部ディスク１３を含む。ホストシステムはさらにファイバチャネル（ＦＣ）スイッチ３５（またはイーサネットスイッチ、等）への接続のためにホストバスアダプタ（ＨＢＡ）１４を含む。各ホストシステムはストレージサブシステム４０によって提供される論理ユニット（ＬＵ）上にそのデータ（例えば、データベースのようなアプリケーションによって生成され使用される生成データ）を保存できる。
【００７４】
６３    ストレージサブシステム４０はそのＬＵ上でＳＣＳＩ−２、３のコマンドセットを使用してストレージを提供するように構成される。ストレージサブシステムはいくつかのＲＡＩＤコントローラ（ＣＴＬ）４５といくつかの物理ストレージ装置４９を含む。コントローラ４５はプロセッサ、メモリ、およびイーサネットカードまたはＦＣポートのようなネットワークインタフェースカード（ＮＩＣ）のような構成要素（示されていない）を含む。コントローラはＳＡＮ（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）の能力を備え、すなわち物理ストレージ装置４９にＲＡＩＤベースのアクセスを提供するＳＣＳＩ  Ｉ／Ｏ要求を処理できる。
【００７５】
６４    コントローラ４５は典型的には不揮発性のランダムアクセスメモリ（ＮＶＲＡＭ）を含み、ＮＶＲＡＭにデータを保存できる。ＮＶＲＡＭは電源障害に対して保護されるデータキャッシュとして動作できる。電源障害のケースにおいて、例えば、ＮＶＲＡＭ上のデータは、電源としてバックアップバッテリを使用して、物理ストレージ装置４９上のストレージ構成領域に移されることが可能である。コントローラはＳＣＳＩの世界としてターゲットＩＤを特定するためにＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）を有するＦＣポート（例えば、ポート４６）を備えることが可能であり、ＦＣポート上にＬＵＮを含むことが可能である。追加のポート４７はスイッチ９１を経由して外部ストレージサブシステム３０への接続のために備えられる。外部ストレージサブシステム３０は外部ストレージ装置３２を含む。
【００７６】
６５    図２８は図２７のシステムの機能図を示す。外部ストレージサブシステム３０は論理ユニット（ＬＵ）を定義する。マッピングテーブル２４０（図３０）はストレージサブシステム４０からストレージサブシステム３０によって定義される内部ＬＵへのアクセスを提供する。マッピングテーブルは、ストレージサブシステム３０のＬＵをアクセスするためにストレージサブシステム４０によって使用されるＬＵ番号（ＬＵＮ）を有する外部ＬＵＮフィールド２４１を含む。サイズフィールド２４２はＬＵのサイズを示す。ＷＷＮフィールド２４３はＬＵをアクセスするためのＷＷＮを保存する。内部ＬＵＮフィールド２４４はストレージサブシステム３０によって内部的に使用されるＬＵ番号を表す。
【００７７】
６６    ストレージサブシステム４０は、ストレージサブシステム３０上において定義される外部ＬＵを参照するためのマッピング能力を備えるディスク−外部ＬＵマッピングテーブル２３０（図２９）を含む。マッピングテーブル２３０は図３に示されるテーブルと同じである。ディスク番号フィールド２３４はマッピングテーブル２４０の外部ＬＵ番号フィールド２４１を指し示す。
【００７８】
６７    これらのマッピングが使用可能である方法の例として、図３１に示される例を考える。１テラバイト（ＴＢ）の論理ユニットはストレージサブシステム３０内に論理ユニットを含むストレージサブシステム４０内に定義されることが可能である。マッピングテーブル２３０内のパリティグループ３はこのような構成を示す。１ＴＢのＬＵＮはストレージサブシステム３０のＬＵＮ  Ｅｘ１とＥｘ２を含む。マッピングテーブル２４０から理解できるように、ＬＵＮ  Ｅｘ１は５００ギガバイト（ＧＢ）のＬＵＮであり、ＬＵＮ  Ｅｘ２も同じである。
【００７９】
６８    ヘッダ情報５１１、５１４はＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）のオフセットを有し、これはＬＵのアドレススペースであり、ＬＵに対するユニットと他の機能情報は５ＭＢである。５ＭＢはヘッダファイルの例である。サイズは新しい情報をベースに拡張しても良い。ヘッダは、パリティグループ番号、属するパリティグループ、サイズ、含まれるＬＵ（ポートとポート上のＬＵＮ）、論理ディスクの数、構成（連鎖、ＲＡＩＤ０／１／２／３／４／５／６、等）、構成に対するＬＵのシーケンス、およびそのサイズが「ＬＵサイズの合計」−（マイナス）「ＬＤＥＶのヘッダ」であるデータスペースに関するデータスペースのために使用される。
【００８０】
６９    本発明のこの実施例に対する移動オペレーションは上記で説明されたのと同じである。外部ストレージサブシステムが存在する事実はマッピングテーブル２４０とマッピングテーブル２３０の間で提供される外部ＬＵＮマッピングの使用によって隠される。
【００８１】
７０    少量配備ボリュームに対する処理に関するより詳細な内容は、全ての目的に対してそのままで参照によりここに組み込まれる同一出願人の米国特許Ｎｏ．６，７２５，３２８に開示される。
【図面の簡単な説明】
【００８２】
【図１】図１は本発明の第一の実施例が適用されているコンピュータシステムの構成を示すブロック図である。
【図２】図２は図１のシステム構成の機能的表現を示す。
【図３】図３は定義されたパリティグループに対する情報を示す。
【図４】図４はＳＣＳＩ書き込みオペレーションに対する処理を示す。
【図５】図５は少量配備ボリュームに対する構成情報を示す。
【図６】図６は少量配備ボリュームに対する自由セグメントプールの情報を示す。
【図７】図７は少量配備ボリューム上の書き込みオペレーションに対する処理を示す。
【図８】図８はＬＤＥＶ内の書き込みオペレーションの間のデータフローを示す。
【図９】図９は少量配備ボリューム上の読み出しオペレーションに対する処理を示す。
【図１０】図１０は少量配備ボリューム上の読み出しオペレーションのデータフローを示す。
【図１１】図１１は自由ＬＤＥＶのテーブルを示す。
【図１２】図１２は定義されたＬＤＥＶに対する構成情報を示す。
【図１３】図１３はＬＤＥＶからＬＤＥＶへの移動の間の状態変更を示す。
【図１４】図１４はプールされたＶＤＥＶのテーブルを示す。
【図１５】図１５は二つのＶＤＥＶの間の移動オペレーションに対するフローを示す。
【図１６】図１６は移動スレッシュホールドを設定するためのユーザインタフェースを示す。
【図１７】図１７は移動の起動を示す。
【図１８】図１８はＬＤＥＶからＶＤＥＶへの移動に対する起動を示す。
【図１９】図１９はＶＤＥＶからＬＤＥＶへの移動に対する起動を示す。
【図２０】図２０は移動を推奨するためのインタフェースの例を示す。
【図２１】図２１はスケジューラによって実行される処理を示す。
【図２２】図２２はＬＤＥＶとＶＤＥＶの間の移動オペレーションに対する処理を示す。
【図２３】図２３はＶＤＥＶからＬＤＥＶへのデータの移動の間のＬＤＥＶに対するビットマップの再生成を示す。
【図２４】図２４はＬＤＥＶからＶＤＥＶへの移動の間のデータのフローを示す。
【図２５】図２５はデータをコピーすることを含まないＬＤＥＶからＶＤＥＶへの移動の間のデータのフローを示す
【図２６】図２６はＶＤＥＶからＬＤＥＶへの移動の間のデータのフローを示す
【図２７】図２７は本発明の他の実施例によるシステム構成を示す。
【図２８】図２８は図２７に示される構成の機能図を示す。
【図２９】図２９は外部で定義されたＬＵＮに対する外部のマッピングテーブルを示す。
【図３０】図３０は外部のＬＵＮ指定から内部のＬＵＮ指定へのマッピングを示す。
【図３１】図３１は外部のＬＵＮによって定義されたパリティグループの例を示す。
【図１】
2006277723.tif 000003
【図２】
2006277723.tif 000004
【図３】
2006277723.tif 000005
【図４】
2006277723.tif 000006
【図５】
2006277723.tif 000007
【図６】
2006277723.tif 000008
【図７】
2006277723.tif 000009
【図８】
2006277723.tif 000010
【図９】
2006277723.tif 000011
【図１０】
2006277723.tif 000012
【図１１】
2006277723.tif 000013
【図１２】
2006277723.tif 000014
【図１３】
2006277723.tif 000015
【図１４】
2006277723.tif 000016
【図１５】
2006277723.tif 000017
【図１６】
2006277723.tif 000018
【図１７】
2006277723.tif 000019
【図１８】
2006277723.tif 000020
【図１９】
2006277723.tif 000021
【図２０】
2006277723.tif 000022
【図２１】
2006277723.tif 000023
【図２２】
2006277723.tif 000024
【図２３】
2006277723.tif 000025
【図２４】
2006277723.tif 000026
【図２５】
2006277723.tif 000027
【図２６】
2006277723.tif 000028
【図２７】
2006277723.tif 000029
【図２８】
2006277723.tif 000030
【図２９】
2006277723.tif 000031
【図３０】
2006277723.tif 000032
【図３１】
2006277723.tif 000033
【外国語明細書】
2006277723000001.pdf