(57)【要約】【課題】　記憶システム内にデータを記憶する改良されたシステムを提供する。【解決手段】　仮想記憶システムは、複数の仮想記憶位置を含む仮想記憶空間と、データを記憶するように構成された複数の物理記憶位置を含む物理記憶空間と、前記複数の仮想記憶位置を前記複数の物理記憶位置に関連付ける複数のアクティブ化されたポインタを記憶するように構成されたメモリと、前記アクティブ化されたポインタの少なくとも一部を非アクティブ化し、前記非アクティブ化されたポインタの少なくとも１つに関連する選択データに関する要求にアクセスし、前記非アクティブ化されたポインタを前記メモリに提供して前記ポインタを再アクティブ化することを含め、前記非アクティブ化されたポインタをアクティブ化し、前記要求に応答して、前記再アクティブ化されたポインタの少なくとも１つを変更するように構成された、コントローラと、を備える。　 【選択図】図１
2004127294.tif 000002
【特許請求の範囲】
【請求項１】
　複数の仮想記憶位置を含む仮想記憶空間と、
　データを記憶するように構成された複数の物理記憶位置を含む物理記憶空間と、
　前記複数の仮想記憶位置を前記複数の物理記憶位置に関連付ける複数のアクティブ化されたポインタを記憶するように構成されたメモリと、
　前記メモリから前記非アクティブ化されたポインタを抽出することを含め、前記アクティブ化されたポインタの少なくとも一部を非アクティブ化し、前記非アクティブ化されたポインタの少なくとも１つに関連する選択データに関する要求にアクセスし、前記非アクティブ化されたポインタを前記メモリに提供して前記ポインタを再アクティブ化することを含め、前記非アクティブ化されたポインタをアクティブ化し、前記要求に応答して、前記再アクティブ化されたポインタの少なくとも１つを変更するように構成された、コントローラと、
　を備える仮想記憶システム。
【請求項２】
　前記コントローラは、前記要求に関連する識別子を記憶し、前記識別子を使用して前記少なくとも１つの再アクティブ化されたポインタを変更するように構成された、請求項１に記載の仮想記憶システム。
【請求項３】
　前記コントローラは、前記選択データの元のアドレスを含む前記識別子を記憶し、前記元のアドレスを使用して前記少なくとも１つの再アクティブ化されたポインタを変更するように構成された、請求項２に記載の仮想記憶システム。
【請求項４】
　前記コントローラは、前記選択データの変更後アドレスを含む前記識別子を記憶し、前記変更後アドレスを使用して前記少なくとも１つの再アクティブ化されたポインタを変更するように構成された、請求項２に記載の仮想記憶システム。
【請求項５】
　前記コントローラは、前記メモリ内に前記識別子を記憶するように構成された、請求項１乃至４のいずれか一項に記載の仮想記憶システム。
【請求項６】
　複数の仮想記憶位置を含む仮想記憶空間を設けることと、
　データを記憶するように構成された複数の物理記憶位置を含む物理記憶空間を設けることと、
　前記仮想記憶位置のそれぞれを前記物理記憶位置のそれぞれに関連付けるマッピングシステムを含むメモリを設けることと、
　前記マッピングシステムの少なくとも一部を前記メモリから抽出することと、
　前記マッピングシステムの前記抽出部分に対応する選択データに影響を及ぼす要求を提供することと、
　前記要求に関連する識別子を記憶することと、
　前記マッピングシステムの前記抽出部分の一部を更新して、前記記憶された識別子を使用して前記選択データを識別することと、
　を含む仮想記憶システムの動作方法。
【請求項７】
　前記要求を提供することに応答して、前記更新前に、前記選択データをある物理記憶位置から別の物理記憶位置に移動することをさらに含み、
　前記更新することは、前記抽出部分の前記部分のポインタを変更して前記別の物理記憶位置を指すようにすることを含む、請求項６に記載の仮想記憶システムの動作方法。
【請求項８】
　状態を検出することをさらに含み、前記更新することは前記検出に応答して行われる、請求項６または７に記載の仮想記憶システムの動作方法。
【請求項９】
　前記検出することは、所定の期間ホストからの命令がないことを検出することを含む、請求項８に記載の仮想記憶システムの動作方法。
【請求項１０】
　前記要求を提供することは、複数の要求を提供することを含み、
　前記記憶することは、前記要求に関連する複数の識別子を記憶することを含み、
　前記検出することは、所定数の識別子が記憶されていることを検出することを含む、請求項８に記載の仮想記憶システムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、仮想記憶システムおよび仮想記憶システムの動作方法に関する。
【背景技術】
【０００２】
　近年、ハードウェア、ソフトウェア、ファームウェア等を含むコンピュータシステムは、爆発的に成長・高度化し続けてきた。コンピュータシステムとインタフェースするように構成された周辺機器および他のコンポーネントもまた爆発的に成長し、向上してきた。
【０００３】
　さらに、コンピュータシステムは一般に、特に、遠方にあるコンピュータ間での通信を可能にするネットワーキングソリューションの発展に伴い、ますます多くのアプリケーションに使用されるようになっている。例えば、コンピュータシステムは、クライアントアプリケーション、サーバアプリケーション、ならびにスタンドアロン型パーソナルコンピューティングアプリケーションに利用される場合がある。
【０００４】
　コンピュータシステムの処理速度の向上および新しく多種多様なアプリケーションでのコンピュータシステムの使用が増えるに伴い、コンピュータシステムにより処理・使用されるデータの記憶および高速アクセスを援助する装置が望まれている。コンピュータシステムが利用する大量のデジタルデータを取り扱うために、大容量記憶装置が開発された。コンピュータシステムのコンポーネントまたは周辺機器に故障または他の障害がある間、継続して正常に動作するために、冗長記憶システムが開発された。より具体的には、大容量記憶装置を開発する際には、コスト（データ記憶装置ユニットあたりのコストが低いこと）、高入出力性能、および可用性（いくつかのコンポーネントが故障した場合でもデータが復元され、継続した動作を保証する能力）を含む３つの主な設計基準が通常考慮される。比較的大量のデータを冗長的に記憶するには、独立ディスク冗長アレイ（ＲＡＩＤ）システムが利用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
　以下に述べるように、本発明の各種態様は、記憶システム内にデータを記憶する改良されたシステムおよび方法を提供する。
【課題を解決するための手段】
【０００６】
　以下の同じ譲受人に譲渡された出願に注目する。
【０００７】
　発明者David Umberger、Guillermo NavarroおよびRodger Danielsにより２００２年１０月３日に出願された「A system for Managing a Data Storage Array, a Method of Managing a Data Storage System, and a RAID Controller」と題する米国特許出願第１０／２６４，９１５号、発明者David UmbergerおよびGuillermo Navarroにより２００２年１０月３日に出願された「Method of Managing a Data Storage Array, and a Computer System Including a RAID Controller」と題する米国特許出願第１０／２６４，５７３号、発明者Michael B. JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Computer Systems, Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，９５７号、発明者Michael B. JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Virtual Storage Systems, Virtual Storage Methods and Methods of Over Committing a Virtual RAID Storage System」と題する米国特許出願第１０／２６４，６５９号、ならびに発明者Lee L. NelsonおよびRodger Danielsにより２００２年１０月３日に出願された「Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，５２５号。
【０００８】
　一態様によれば、仮想記憶システムは、複数の仮想記憶位置を含む仮想記憶空間と、データを記憶するように構成された複数の物理記憶位置を含む物理記憶空間と、複数の仮想記憶位置を複数の物理記憶位置に関連付ける複数のアクティブ化されたポインタを記憶するように構成されたメモリと、コントローラと、を備え、コントローラは、メモリから非アクティブ化されたポインタを抽出することを含め、アクティブ化されたポインタの少なくともいくつかを非アクティブ化することと、非アクティブ化されたポインタの少なくとも１つに関連する選択データに関する要求にアクセスすることと、非アクティブ化ポインタをメモリに提供してポインタを再アクティブ化することを含め、非アクティブ化ポインタをアクティブ化することと、要求に応答して、再アクティブ化されたポインタの少なくとも１つを変更することと、を実行するように構成されている。
【０００９】
　別の態様によれば、仮想記憶システムは、複数の物理記憶位置にデータを記憶するように構成された物理記憶手段と、複数の仮想記憶位置を用いて物理記憶手段の表現をホストに提供するように適合された仮想記憶手段と、複数の仮想記憶位置を複数の物理記憶位置に関連付けるように構成されたマッピング手段と、マッピング手段を利用して物理記憶位置にアクセスし、最初の時点においてマッピング手段の一部を非アクティブ化し、次の時点においてマッピング手段の上記一部をアクティブ化するように構成されたコントローラ手段と、を備え、マッピング手段の非アクティブ化された部分は物理記憶位置へのアクセスに利用されず、コントローラ手段は、マッピング手段の上記部分に対応する選択データに関する要求にアクセスし、要求に関連する識別子の記憶を制御し、記憶した後に識別子を使用してマッピング手段の上記部分を更新し、更新後に、マッピング手段の上記部分を利用して物理記憶位置にアクセスするようにさらに構成されている。
【００１０】
　さらに別の態様によれば、仮想記憶システムの動作方法は、複数の仮想記憶位置を含む仮想記憶空間を設けることと、データを記憶するように構成された複数の物理記憶位置を含む物理記憶空間を設けることと、仮想記憶位置のそれぞれを物理記憶位置のそれぞれに関連付けるマッピングシステムを含むメモリを設けることと、マッピングシステムの少なくとも一部をメモリから抽出することと、マッピングシステムの抽出部分に対応する選択データに影響を及ぼす要求を提供することと、要求に関連する識別子を記憶することと、記憶された識別子を使用して選択データを識別するように、マッピングシステムの抽出部分の一部を更新することと、を含む。
【発明を実施するための最良の形態】
【００１１】
　図１を参照して、データ記憶システムの例示的な構成を参照番号１０で示す。本発明の態様によれば、記憶システム１０は仮想記憶システムとして具現される。一構成では、記憶システム１０は、さらに詳細に後述するように、仮想記憶空間と物理記憶空間との間に抽象的なアドレス指定またはマッピングを有する仮想アレイ（ＲＡＩＤ）記憶システムである。仮想記憶システム構成は、数学的関数を利用し、物理記憶空間のブロックに固定されたリニアアドレス指定（リニアアドレッシング）を提供して所与のアドレスが既知の物理ブロックに対応する従来のディスクアレイ構造とは異なる。仮想記憶システムは、適応型の動的で任意のアドレス指定を実施し、従来の構成と比較して柔軟性を高めることができる。例えば、仮想記憶空間の複数の仮想記憶アドレスを利用して、物理記憶空間の単一の物理記憶位置をアドレス指定することができる。このような仮想記憶システム構成では、スナップショットボリュームデータとも呼ばれる、データのある時点でのコピー（ポイントインタイムコピー、point in time copies）を作成することができ、データの分岐（divergence）が行われると、仮想記憶システムの過大割り当てを行うことができる。仮想記憶システム構成では、従来の構造と比較して見掛けの容量および柔軟性が増大する。
【００１２】
　仮想記憶として構成された記憶システム１０は、例示的な一構成では、ＳＣＳＩ（Small Computer System Interface）コマンドセットに従うリニアアドレス指定空間を利用する。ホスト２０への記憶システム１０の提示は、時点が違っても一貫していることが可能であるが、仮想記憶システム構成のマッピングシステムは、記憶システムの要求または要件に適合するように変更可能である。仮想記憶システムについての例示的な詳細は、Jacobson他への米国特許第５，３９２，２４４号に記載されている。仮想アレイ技術のさらなる詳細および態様については、HP Virtual Array Technology, 2001およびExecutive Summary: Virtualization、Simplification and Storage, November 2001に述べられており、これらは両方ともwww. hp. comから入手することができる。
【００１３】
　引き続き図１を参照すると、例示的に述べられる構成での記憶システム１０は、コントローラ１２およびデータを記憶するように構成された記憶空間１４を含む。図示のアプリケーションにおける記憶システム１０は、ホスト２０とインタフェースするように構成されている。記憶システム１０は、ホスト２０から受け取ったデータを記憶するとともに、要求されたデータをホスト２０に提供するように構成されている。ホスト２０は、ワークステーション、パーソナルコンピュータ、サーバ、コンピュータ装置のネットワーク、または別個のデータ記憶システムを利用する他の適切なコンピュータ構造として実施することができる。
【００１４】
　図示の構成では、コントローラ１２は、入出力（Ｉ／Ｏ）要求の取り扱いを含め、ホスト２０に関するインタフェース動作を実施するように構成されている。さらに、コントローラ１２は、記憶空間１４のアドレス指定および記憶空間１４でのデータの記憶の実施を含め、記憶空間１４の管理を行う。例示的な一構成において以下に述べるように、コントローラ１２は、物理記憶空間の仮想記憶空間表現およびマッピングシステムを作成し、また物理記憶空間と仮想記憶空間との間のアドレス指定を提供するように構成されている。
【００１５】
　図示の例示的な構成では、コントローラ１２は中央処理装置（ＣＰＵ）１６およびメモリ１８を備える。例示的な中央処理装置は、Motorola, Inc.から市販されているＰｏｗｅｒＰＣ（登録商標）４４０または８２４０である。
【００１６】
　記憶システム１０のコントローラ１２は、上に述べた‘２４４号特許に記載のＡｕｔｏＲＡＩＤ動作を実施するように構成することができる。ＡｕｔｏＲＡＩＤ動作を実施するコントローラ１２は、システム１０内に記憶されているデータの使用を監視し、そのデータに最適のＲＡＩＤレベルを決定することができる。例えば、書き込みがあまり頻繁に行われないデータはＲＡＩＤ　５ＤＰに記憶されて、それによって記憶効率が提供され、書き込みが頻繁に行われるデータはＲＡＩＤ１＋０に記憶することができ、それによって最適なパフォーマンスが提供される。データは、データの年齢、そのデータにアクセスする頻度、物理ディスクの破損、および他の要因に応じてＲＡＩＤレベル間を移動することができる。例えば、コントローラ１２は、ＲＡＩＤ１にバックアップされているデータをＲＡＩＤ６領域に移動することによってより多くの記憶空間を作り出すことができる。ディスクが誤作動または消失した場合、可能な限り大きな冗長性でもって復元するために、コントローラ１２はデータを新しい位置に移動することができる。古いデータをＲＡＩＤ１領域からＲＡＩＤ６領域に移動することもできる。さらに、他の理由によりデータを移動してもよい。
【００１７】
　メモリ１８は、さらに後述する、記憶空間１４をアドレス指定する際に使用するマップの記憶、コントローラ１２が使用可能な実行可能コードの記憶、およびデータを一時的に記憶するキャッシュの提供に利用することができる。メモリ１８は、ランダムアクセスメモリ（ＲＡＭ）として実施することができ、一実施形態では、実行可能コード、マップ、およびキャッシュを記憶する複数の別個のメモリエリアを含むことができる。
【００１８】
　図２を参照して、システム１０の記憶空間１４の説明図を示す。記憶空間１４は、上記システム１０の例示的な仮想記憶アーキテクチャに従って仮想記憶空間２２および物理記憶空間２４を含む。仮想記憶空間２２は複数の仮想記憶ボリューム２６を含み、物理記憶空間２４は複数の物理記憶ボリューム２８を含む。図示しているボリューム２６、２８の数は例示的なものであり、図示する数よりも多くの、または少ないボリューム２６またはボリューム２８を所与のアプリケーションに利用することができる。
【００１９】
　仮想記憶ボリューム２６は、論理装置番号（ＬＵＮ）、論理ボリューム、または論理ドライブと呼ばれることもある。仮想記憶ボリューム２６を含む仮想記憶空間２２は、ホスト２０に都合のよい記憶容量表現を提供する。ホスト２０は、ＳＣＳＩコマンドセットを利用して、仮想記憶ボリューム２６を含む記憶空間１４のアドレス指定を実施することができる。ホスト２０は、ＨＰ−ＵＸ（登録商標）オペレーティングシステムに使用され、ヒューレット・パッカード社から市販されているＬＶＭソフトウェア等の論理ボリュームマネージャを実施して、記憶システム１０の集中管理を提供することができる。例えば、論理ボリュームマネージャは、記憶システム１０をホストアプリケーションとインタフェースする際に使用される、ホスト２０内の記憶システム１０のデータ記憶の仮想化を提供することができる。システム１０の管理機構は、複数のソフトウェア管理インタフェース：ＳＣＳＩコマンドセット、仮想フロントパネル（ＶＦＰ）、グラフィカルユーザインタフェース（ＧＵＩ）、コマンドラインユーザインタフェース（ＣＬＵＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）等に見られ、各種ソリューション統合に使用することができる。
【００２０】
　物理記憶ボリューム２８は、実際の記憶デジタルデータを提供するように個々に構成されたディスクアレイを含むことができる（すなわち、上記の構成では仮想記憶空間を使用してデータは記憶されない）。一態様では、コントローラ１２は、ボリューム２８を使用してのデータの記憶を、所望のＲＡＩＤレベルに従って制御する。ボリューム２８の数は、システム１０の特定の実施態様に合わせて可変である。
【００２１】
　仮想記憶空間２２は、物理記憶空間２４の抽象表現をホスト２０に提供する。仮想記憶空間２２は、コントローラ１２またはホスト２０により所望のように変更することが可能である。例えば、仮想記憶空間２２は、ホスト２０が都合よくアクセスすることができるフォーマットで物理記憶空間２４を表すように適合可能である。そして、ホスト２０の論理ボリュームマネージャは、ホストアプリケーションが都合よく利用することができるフォーマットで、仮想記憶空間２２（図示せず）のさらに別の仮想抽象を提供することができる。
【００２２】
　システム１０の仮想記憶空間２２は、複数のアドレスまたは記憶位置３０を含む。図示の例示的な物理記憶空間２４は、複数のアドレスまたは記憶位置３６を含む。仮想記憶空間２２のアドレス３０は、データが記憶されている物理記憶空間２４のアドレス３６のアドレス指定を提供するために利用される。
【００２３】
　例えば、一実施形態では、コントローラ１２は、物理記憶位置３６にアクセスするために複数のポインタ３４を含むマッピングシステム３２を作成し実施するように動作する。マッピングシステム３２のポインタ３４は、メモリ１８内に記憶され、仮想記憶空間２２の複数のアドレス３０それぞれを物理記憶空間２４の各アドレス３６に関連付けることができる。
【００２４】
　ホスト２０は、要求を提出することによって、システム１０に対してデータの読み出しまたは書き込みを行うことができる。このような要求は、仮想記憶ボリューム２６の記憶位置３０をアドレス指定することができる。ホスト２０から受け取った、仮想記憶位置３０を特定する要求は関連するポインタ３４を有し、このポインタ３４は、仮想記憶位置３０を特定する要求に示されるように、ホスト２０が読み出すべき、またはホスト２０が書き込みを行うべき実際のデータを含む各物理記憶位置３６を特定する。
【００２５】
　個々の仮想記憶位置３０は、上記の実施態様の物理記憶位置３６において予め定義された共通のデータ量を表すことができる。例えば、仮想記憶位置３０は、例示的な一構成では、５１２バイトのデータを個々に含む５１２個のブロックを含むクラスタを指すことができる。従って、仮想記憶位置３０は、一実施形態では物理記憶アドレスまたは位置３６につき、５１２バイトのデータを個々に含む５１２個のブロックを含み、総計で２５６Ｋバイトのデータを提供する各物理記憶位置３６のデータのクラスタサイズを指す。
【００２６】
　仮想記憶アーキテクチャに従って構成された記憶システム１０は、従来のＲＡＩＤシステムでは不可能な動作を実施することができる。例えば、コントローラ１２は、データ自体を複製するのではなく、コピー中の元のボリューム２６のポインタを複製することによって記憶ボリューム２６の仮想コピーを作成することができる。ポインタのこのような複製は、仮想記憶ボリューム２６のある時点でのコピーすなわちスナップショットを提供するものと呼ぶことができる。
【００２７】
　図３を参照して、例示的なある時点でのコピーすなわちスナップショット動作についてさらに詳細に述べる。複数の仮想記憶ボリューム２６および物理記憶ボリューム２８が図３に示されている。第１の仮想記憶ボリューム４０は親または元のボリュームと呼ぶことができ、第２の仮想記憶ボリューム４２はスナップショットボリューム４２と呼ぶことができる。スナップショット動作を行って、新しいスナップショットボリュームを作成するか、または既存のスナップショットボリュームをリフレッシュして元のボリュームのスナップショットを提供することができる。
【００２８】
　図示の例では、元のボリューム４０は、仮想記憶位置３０を物理記憶位置３６にマッピングする、所与の時点における複数のポインタ３４それぞれを含む。スナップショット動作中、コントローラ１２は、元のボリューム４０のもう一つの仮想記憶ボリューム４２を作成する（スナップショットボリュームとも呼ばれる）。一実施形態では、コントローラ１２は、ボリューム４０の関連ポインタ３４をコピーし、ボリューム４０をスナップした時点で元のボリューム４０と同じ物理記憶位置３６を指す、同じポインタ３４を含むボリューム４２を作成する。以下に述べる別の構成では、スナップショットボリューム４２は、ボリューム４０のポインタ３４に対応するが、物理記憶空間２４のダミーアドレスを有し、ボリューム４０のポインタ３４からのアドレス３６に頼ってデータのアドレス指定をする、ポインタ３４を含むことができる。
【００２９】
　スナップショットボリューム４２は、最初に作成されたときには、関連する物理記憶空間２８のすべてを元のボリューム４０と共有している。その後、スナップショットボリューム４２あるいは元のボリューム４０のいずれかのデータが、ホスト２０からの動作またはコントローラ１２の内部動作に応答して更新されることができる。更新が行われると、新しい／修正されたデータを保持するために、新しい物理記憶空間が割り当てられる。スナップショットボリューム４２あるいは元のボリューム４０のいずれか（すなわち、新しい／変更されたデータを受け取ったボリューム）の新しい／変更されたデータに対応するポインタ３４が、新しいデータを記憶している新しいまたは変更された物理記憶アドレス３６を指すように変更される一方で、変更されていないデータに対応する各ポインタ３４は、同じまたは元のアドレス３６を指し、スナップされたデータを保存する。新しい／変更されたデータプロセスに新しいポインタを提供することは、分岐(divergence)と呼ばれている。分岐した空間は、スナップショットボリューム４２と元のボリューム４０との間でもはや共有されない。
【００３０】
　例えば、図３に示すように、仮想記憶位置４４は最初、物理記憶位置４６をアドレス指定している。従って、元のボリューム４０のスナップショット動作４７の後、スナップショットボリューム４２の各仮想記憶位置４８も、物理記憶位置４６をアドレス指定している。その後、第１の書き込み動作４８が仮想記憶位置４４に行われたものと仮定する。データが物理記憶位置４６から検索され、第１の書き込み動作によって変更され、分岐データとして新しい物理記憶位置５０に記憶される。仮想記憶位置４４に関連するポインタ３４は、第１の書き込み動作４９の後に物理記憶位置５０をアドレス指定する分岐ポインタになる。しかし、スナップショットボリューム４２の仮想記憶位置４８のポインタ３４は依然として物理記憶位置４６をアドレス指定し、スナップされた未変更の元データへのアクセスを提供する。
【００３１】
　スナップショットボリューム４２のデータの更新も、スナップショットボリューム４２の仮想記憶位置５４に対する例示的な第２の書き込み動作５２によって示すように生じる場合がある。それまでは仮想記憶位置５４および対応する物理記憶位置５５に関連していたポインタ３４は、ここで、第２の書き込み動作後の、物理記憶位置５５としてそれまでは記憶されていた変更データを含む、新しい物理記憶位置５６を参照するように変更される。元のボリューム４０の仮想記憶位置５８に関連するポインタ３４は、第２の書き込み動作後でも依然として物理記憶位置５５をアドレス指定している。
【００３２】
　スナップショットボリュームは、親ボリュームがスナップされた時点でさらに物理記憶空間を消費することはないため、記憶システム１０の利用可能な物理記憶空間が、分岐発生時に枯渇するようにスナップショットボリュームが構成される可能性がある。システム１０がデータ変更の結果生じるスナップショットボリュームの分岐への適合に十分な物理記憶空間を有していない場合であっても、システム１０ではスナップショット動作が可能である。記憶システム１０のこの状態は、過大割り当てと呼ぶことができる。システム１０の１つまたは複数のスナップショットボリュームが、それぞれの使用サイクルにおいて完全な分岐が行われない場合があるため、記憶システム１０が過大割り当て状態になることが可能であることが有利である。このような場合において、過大割り当て状態の場合、記憶システム１０は、利用可能な物理記憶空間よりも多くの記憶空間（仮想記憶空間で表される）を有しているように見える可能性がある。
【００３３】
　図４を参照して、記憶システム１０の例示的な動作についてさらに説明する。特に、図４は、物理記憶空間２４内でデータを操作する例示的なデータ移行動作を示している。データ移行とは、物理記憶空間２４に記憶されているデータをある物理記憶位置３６から別の物理記憶位置３６に移動することである。上に述べたように、例示的な構成では、データ移行を利用して、データの年齢、データのアクセス頻度、物理ディスクの破損、または他の理由に応じて異なるＲＡＩＤレベル間でデータを移動することができる。
【００３４】
　図４は、仮想記憶ボリューム４０および複数の時点における仮想記憶ボリューム４０のスナップショットボリューム４２を示す。例えば、仮想記憶位置６０、６２に関連するポインタ３４は、物理記憶位置６４に最初は関連付けられている。次の時点において、コントローラ１２は、例えばデータ移行動作中、データを物理記憶位置６４から別の物理記憶位置６８に移動した。位置６４から位置６８への図示するデータの移動は、考えられるデータ移行動作を示した例示的なものである。他のデータ移行動作では、データを同じ物理記憶ボリューム２８上の他の位置３６に、または複数のボリューム２８に移動することができる。
【００３５】
　移動したデータに関連するポインタ３４は、新しい物理記憶位置６８におけるデータの正しいアドレス指定を実施するように更新される。例えば、例示的な構成では、位置６４に関連するポインタ３４は、最初は位置６４内のデータをアドレス指定するために利用される。その後、ポインタ３４は、位置６４から位置６８にデータを移動した後に、位置６８に関連するように変更され、位置６８内のデータをアドレス指定するようになる。
【００３６】
　同時係属中の特許出願第１０／２６４，５２５号に述べたように、追加のポインタ３４の収容、追加のキャッシュ空間の提供、他の記憶空間の提供、または他の理由のために、メモリ１８の一部（マッピング空間とも呼ばれる場合がある、ポインタ３４の記憶専用のメモリ１８の部分）を解放することが望ましい場合がある。
【００３７】
本発明の態様は、後述するように、追加のポインタを収容するためまたは他の理由のために、メモリ１８または他のマッピング空間の記憶能力を向上させる、構造的態様および方法を提供する。
【００３８】
　一動作態様によれば、コントローラ１２は、マッピングシステム３２の一部およびそのポインタ３４を、マッピング空間（例えばメモリ１８）から抽出し、新しいポインタ３４または他の目的のために記憶容量を提供するように構成される。その後、マッピングシステム３２の抽出部分およびポインタ３４を再びメモリ１８に提供して、仮想記憶空間２２と物理記憶空間２４との間のアドレス指定を実施する際に使用することができる。
【００３９】
　一実施形態では、マッピングシステム３２中の適切なポインタ３４を含む部分が識別され、これをメモリ１８から抽出することができ、マッピングシステム３２の一部の抽出によりシステム１０のパフォーマンスに対する悪影響は最小限に抑えられる。例えば、一態様では、システム１０の動作中およびホスト２０からのＩ／Ｏ要求処理中の遅延が最小になるマッピングシステム３２の部分を抽出することが望ましい。
【００４０】
　例示的な動作では、動作の復元またはデータのテープ記憶媒体へのストリーミングに、上に述べたスナップショットボリュームが一般に利用される。あるいは、スナップショットボリュームのデータに対して、比較的長い時間期間、アクセス、変更、または利用が行われない場合もある。しかし、スナップショットボリュームの生成は、スナップショットボリュームのポインタ３４の記憶にメモリ１８の資源を消費する。従って、スナップショットボリュームが物理記憶空間をさらに消費し得ない場合であっても、一実施形態では、メモリ１８は、スナップショットボリュームのポインタ３４を記憶するために利用される。
【００４１】
　本発明の態様によれば、コントローラ１２は、例えば、仮想記憶ボリューム２６のタイプを含む基準を利用して、非アクティブ化する候補としてマッピングシステム３２の一部を識別することができる。コントローラ１２は、例えば、スナップショットボリュームである、または通常のボリュームではないボリュームの識別を含むマッピング空間３２の部分を非アクティブ化する部分として識別する基準を利用することができる。例示的な一構成によれば、コントローラ１２は、マッピングシステム３２中のスナップショットまたは他のボリュームのポインタ３４を含む部分をメモリ１８から抽出するように構成される。仮想記憶ボリュームのマッピングシステム３２の各部分の抽出は、仮想記憶ボリュームの非アクティブ化と呼ぶことができる。例示的な本態様によれば、コントローラ１２は、非アクティブ化する候補として１つまたは複数の仮想記憶ボリュームを識別し、その後、識別されたボリューム２６に対応するマッピングシステム３２およびポインタ３４をそれぞれメモリ１８から抽出する。
【００４２】
　本発明の他の態様によれば、コントローラ１２は、非アクティブ化に適切な仮想記憶ボリューム２６またはマッピングシステム３２の部分を識別する追加または他の基準を利用することができる。例えば、コントローラ１２は、所与の仮想記憶ボリューム２６の、所定の時間期間、ボリューム２６に関してホスト２０からの入出力要求がない不活動状態期間について監視することができる。コントローラ１２は、このような基準または他の基準を使用して仮想記憶ボリューム２６の非アクティブ化を指定することができる。
【００４３】
　一実施形態では、コントローラ１２は、識別されたスナップショットボリュームまたは他の仮想記憶ボリューム２６に対応するマッピングシステム３２のポインタ３４をメモリ１８から抽出して、追加のポインタ３４の記憶を含む他のことに使用可能なメモリ１８の量を増大する。コントローラ１２は、ポインタ３４またはマッピングシステム３４の部分をコピーまたは除去して、上に述べた抽出を実行することができる。マッピングシステム３２の抽出された部分は、マッピングシステム３２の非アクティブ化部分と呼ぶことができる。本発明の態様によれば、マッピングシステム３２の非アクティブ化部分および非アクティブ化仮想記憶ボリューム２６は、非アクティブ化状態にある間は物理記憶位置のアクセスに利用されない。仮想記憶空間２２と物理記憶空間２４の間のアドレス指定は、マッピングシステム３２のアクティブ化部分を利用して実施される。
【００４４】
　例示的な１つの抽出動作では、コントローラ１２は、非アクティブ化すると識別されたスナップショットまたは他のボリュームに対応する記憶オブジェクトを識別するテーブルにアクセスする。個々の記憶オブジェクトは、識別されたボリュームの複数のポインタ３４のページを識別する。個々のページはセグメントとも呼ばれ、６４ＫＢのサイズを有し、１６３８４個のポインタ３４を含む。個々のポインタ３４は、上に述べたように、各物理記憶位置３６に２５６ＫＢサイズの物理記憶空間を有するクラスタを指す。従って、例示的な本実施形態では、個々のページまたはセグメントは、物理記憶空間２４内の４ＧＢのデータをアドレス指定する。ポインタ３４は、適切なボリュームならびに各記憶オブジェクト、ページ、およびポインタ３４の識別後、メモリ１８からページアウト、または抽出される。従って、一実施形態では、ポインタ３４は、非アクティブ化すると識別されたボリュームの１つまたは複数のページに従って抽出することができる。
【００４５】
　例示的な本実施態様によれば、抽出されたポインタ３４は、最初の記憶位置（例えば、メモリ１８）とは異なる他の記憶位置内にコピーまたは提供される。例えば、抽出されたポインタ３４は、物理記憶空間２４の物理記憶ボリューム２８にコピーされる。抽出後、抽出されたポインタ３４を記憶していたメモリ１８の部分が別のポインタ３４（例えば、新しい、または既存の別の仮想記憶ボリューム２６）の記憶に利用可能になる。従って、識別されたポインタ３４をメモリ１８から抽出すると、メモリ１８のマッピング空間の、新しいポインタ３４の記憶に適合するのに利用可能な容量が増大する。このような実施形態では、コントローラ１２は、所望であれば、新しいポインタ３４をポインタ３４が抽出されたメモリ１８中の位置に書き込むように構成される。
【００４６】
　非アクティブ化した後の時点で、コントローラ１２は、非アクティブ化ポインタ３４またはマッピングシステム３２の非アクティブ化部分（例えば、非アクティブ化仮想記憶ボリューム２６に対応する）を再アクティブ化して、再アクティブ化したポインタ３２を使用して物理記憶位置３６のアドレス指定を再び提供することができる。例えば、コントローラ１２は、非アクティブ化仮想記憶ボリューム２６のポインタ３４を物理記憶空間２４から抽出し、このポインタ３４をメモリ１８に提供して、仮想記憶ボリューム２６および各ポインタ３４を再アクティブ化することができる。
【００４７】
　コントローラ１２は、異なる構成で複数の基準に応答して再アクティブ化手順を開始することが可能である。例示的な基準としては、非アクティブ化された仮想記憶ボリューム２６のデータの復元動作要求、ボリューム２６のデータをテープに書き込む要求、または他の理由が挙げられる。所与の仮想記憶ボリューム２６の再アクティブ化に適合するとともに、メモリ１８内に適切なマッピング空間を提供するために、別の仮想記憶ボリューム２６を非アクティブ化することができる。
【００４８】
　本発明の態様は、マッピングシステム３２およびマッピングポインタ３４の改良された非アクティブ化動作を提供するシステムおよび方法を含む。以下に述べるように、本発明は、例示的な構成でジャーナルを利用して、対応するポインタ３４が非アクティブ化されている選択データに提供された要求（トランザクションとも呼ばれる）に適応する。例えば、図３に関して説明した分岐(divergence)動作の要求および図４に関して上に述べたデータ移行動作の要求をマッピングシステム３２に収容して適用させて、非アクティブ化されている対応するポインタ３４を有する物理記憶空間２４内での選択されたデータへのアクセス可能性を確保する。
【００４９】
　本発明の例示的な動作について、関連するポインタ３４が前もって非アクティブ化されている選択されたデータの分岐を参照して以下に述べる。別の手順を利用して、例えば、図３を参照して述べた例示的なスナップショット動作４７を使用して、スナップショットボリューム４２を作成してもよい。考えられる１つのスナップショット動作４７では、スナップショットボリューム４２の作成時に、元のボリューム４０のポインタ３４がスナップショットボリューム４２にコピーされ、スナップショットボリューム４２内で利用される。
【００５０】
　考えられる別のスナップショット動作４７では、スナップショットボリューム４２に関連するポインタ３４が元のボリューム４０のポインタ３４に対応して作成されるが、スナップショットボリューム４２のポインタ３４には、最初は適切な元の物理記憶位置３６をアドレス指定しないダミー（例えば、ヌル）アドレス値が、作成時に割り当てられる。
【００５１】
分岐が生じると、影響を受けたポインタ３４が、適切な元の物理記憶アドレス３６それぞれを用いて更新され、後に分岐した元のスナップデータへのアクセスを提供することができる。
【００５２】
　本発明の態様は、各ポインタ３４が非アクティブ化されている選択データに関するホスト要求、内部生成要求、または他の要求に適応するシステムおよび方法を含む。非アクティブ化の後、非アクティブ化されたポインタ３４はもはやメモリ１８内にはなく、一実施形態では、物理記憶ボリューム２８内に提供される。受け取った要求に応答して物理記憶ボリューム２８においてリアルタイムで非アクティブ化されたポインタ３４を更新すると、要求に応答してリアルタイムで更新を実施するために、物理記憶ボリューム２８を探索する必要があり、この探索が比較的低速であるため、性能および速度の劣化に繋がる場合がある。
【００５３】
本発明の態様は、システム１０の性能を実質的に維持しながら、要求提供／受け取り時にポインタ３４が非アクティブ化されている選択データにアドレス指定を提供するという要求に応える。
【００５４】
　すぐ後に述べる本発明の態様は、複数の物理記憶アドレス３６を含むマッピングシステム３２のポインタ３４が、スナップショットボリューム４２の作成時にコピーされる構成に関してのものである。１つまたは複数の非アクティブ化ポインタ３４に関連するデータに影響を及ぼす、非アクティブ化されているスナップショットボリューム４２の各元ボリューム４０への要求を受け取ることができる。
【００５５】
　例示的な１つの要求は、各非アクティブ化スナップショットボリューム４２の非アクティブ化ポインタ３４によってもアドレス指定される物理記憶位置３６の選択データへの書き込みであってよい。受け取った書き込み要求により、データの分岐が生じる。スナップショットボリューム４２のポインタ３４は選択データの物理記憶位置３６のアドレスを含むため、スナップされた元データのアドレス指定を提供するために、各ポインタ３４に対して変更を行う必要はない。
【００５６】
　別の例示的な要求は、非アクティブ化されたスナップショットボリューム４２の非アクティブ化ポインタ３４によってアドレス指定される選択データのデータ移行の要求であることができる。このような場合、第１のすなわち元の物理記憶位置３６のストレージから、第２のすなわち次の物理記憶位置３６のストレージに選択データが変更されることになるであろう。本発明の態様によれば、データ移行要求を記憶しておき、後の時点で（例えば、再アクティブ化するときに）、この要求を適切な非アクティブ化ポインタ３４に適用することができる。
【００５７】
　例えば、一実施形態では、コントローラ１２はデータ移行要求を生成するか、または要求が別のエンティティ（例えば、ホスト２０）から受け取られることができる。コントローラ１２は、データ移行要求が非アクティブ化ポインタ３４の１つまたは複数に関連する選択データに関わるものか否かを判断する。本発明の態様によれば、コントローラ１２は、後述するように選択データが１つまたは複数の非アクティブ化ポインタ３４に関連する場合、移行要求を記憶しておくことができる。
【００５８】
　一構成では、コントローラ１２は、データ移行要求に関連し、かつ／または対応する識別子をメモリ１８内に記憶することができる。例示的な識別子は、後の時点で変更すべき特定のポインタ３４を識別し、指示されたデータ移行後に各選択データを見つけることができる新しい物理記憶アドレス３６（変更済アドレスとも呼ばれる）も含む。その後（例えば、関連する非アクティブ化仮想記憶ボリューム２６をアクティブ化するとき）、コントローラ１２は、
識別子の新しい物理記憶アドレス３６を使用して、識別された各ポインタ３４を変更して、
各ポインタ３４が変更後アドレス３６において移行されたデータを新しくアドレス指定するようにして、再アクティブ化されたポインタ３４を介して、選択データにアクセスできるようにする。
【００５９】
　すぐ後に述べる本発明の態様は、システム１０のスナップショット構成に関してのものである。この構成では、物理記憶アドレス３６を含むマッピングシステム３２のポインタ３４がスナップショットボリューム４２の作成時にコピーされず、必要に応じて元のボリューム４０からポインタ３４にアクセスされる。上に述べたように、１つまたは複数の非アクティブ化ポインタ３４に関連するデータに影響を及ぼす、非アクティブ化されているスナップショットボリューム４２の元のボリューム４０それぞれへの要求を受け取る場合がある。
【００６０】
　例えば、要求に関連する選択データの分岐につながる書き込み要求または他の要求が提供される場合、スナップショットボリューム４２の各非アクティブ化ポインタ３４が、後の時点で、変更前の選択データ（例えば、元データ）の元アドレス３６を含むように変更される。このような状況では、コントローラ１２は、スナップデータの元の物理記憶アドレス３６を含む、要求の識別子を提供して記憶し、スナップショットボリューム４２のスナップデータへのアクセスを保持する。コントローラ１２は、分岐前にスナップショットボリューム４２の作成に利用された元ボリューム４０の元のポインタ３４からの元アドレス３６にアクセスすることができる。
【００６１】
　その後、非アクティブ化スナップショットボリュームを再アクティブ化することができ、
コントローラ１２により、記憶されている識別子および元のボリューム４０からの元アドレス３６を使用して、スナップショットボリュームが作成された時点での選択データにアクセスするために、適切なポインタ３４を変更することができる。
【００６２】
一例では、再アクティブ化されたポインタ３４のダミー値を識別子の選択データの元アドレス３６で置き換えるか、または、選択データの元アドレス３４を収容するように変更して、
データ変更要求およびデータ変更後に、元のポインタ３４の元のスナップデータになおアクセス可能となるようにすることができる。
【００６３】
　複数の物理記憶アドレス３６を含むマッピングシステム３２のポインタ３４が、スナップショットボリューム４２の作成時にコピーされない構成に関してのデータ移行要求の場合、非アクティブ化ポインタ３４の変更は、分岐が発生しない場合には必要ないはずである。これは、分岐が発生するまで、上に述べた例示的な一構成においては収容することのできる、移動されたデータの元アドレス３６をスナップショットボリューム４２の必要なポインタ３４として、更新に利用可能なためである。
【００６４】
　本発明のさらなる態様によれば、コントローラ１２は、１つまたは複数の識別子をメモリ１８内に記憶することができる。所与のスナップショットボリューム４２の場合、コントローラ１２は、後の時点（例えば、アクティブ化するとき）に変更または更新すべきすべての非アクティブ化ポインタ３４を識別するジャーナルを作成することができる。適当な時間に、コントローラ１２はメモリ１８からジャーナルにアクセスし、１つまたは複数の変更を各ポインタ３４に適用して、要求によって影響を受ける選択データへのアクセスを保証することができる。
【００６５】
　本発明の他の態様によれば、コントローラ１２は、追加または他の記憶位置に識別子を記憶することができる。例えば、コントローラ１２は、識別子をメモリ１８内にまず記憶し、その後、その識別子を物理記憶空間２４内に記憶することができる。代替的に、コントローラ１２は、メモリ１８内に記憶することなく、物理記憶空間２４または他の適切な位置内に識別子を直接記憶するよう進んでもよい。
【００６６】
　識別子がメモリ１８内に記憶される構成の場合、後の時点で識別子を物理記憶空間２４にコピーまたは移動することが望ましいことがある。例えば、所定数の識別子がメモリ１８内に記憶されているものとして検出された場合、コントローラ１２は、識別子を物理記憶空間２４に移動して、メモリ１８の資源を解放することができる。その後は、識別子は物理記憶空間２４からアクセスされ、適切なポインタ３４の更新に利用することができる。
【００６７】
　本発明のさらなる態様によれば、非アクティブ化ポインタへの更新または変更は、上に述べたように再アクティブ化されるときに、または他の都合のよい時点で行うことが可能である。例えば、コントローラ１２は、ある状態を検出し、その検出に応答してポインタ３４をアクティブ化し、検出に応答して変更を行うように構成されることができる。代替的に、コントローラ１２は、なお非アクティブ化状態にあるポインタ３４に更新を行ってもよい。監視可能な考えられる状態としては、システム１０が比較的休止している期間（例えば、所定の期間、ホスト２０からの命令がない）が挙げられる。考えられる別の状態としては、スナップショットボリューム４２の選択データに関して所定数の要求および／または識別子の記憶の発生の監視が挙げられる。説明したこのような態様では、システム１０の需要を低減することができる期間の変更および更新を調整することが可能である。
【００６８】
　図５は、コントローラ１２により実行可能な、本発明の例示的な態様を実施する例示的な動作方法を示す。本方法は、メモリ１８内の実行可能コードとして具現され、コントローラ１２によって実行することができる。より多くの、またはより少ないステップ、または代替のステップを含む他の方法も可能である。
【００６９】
　まず、ステップＳ１０において、コントローラがマッピングシステムのポインタを識別し、非アクティブ化する。
【００７０】
　ステップＳ１２において、コントローラは、ステップＳ１０において非アクティブ化したポインタに対応する選択データに影響を及ぼす要求の存在について監視する。ステップＳ１２の条件が否定される場合、コントローラはステップＳ１６に進む。
【００７１】
　ステップＳ１２の条件が肯定される場合、コントローラはステップＳ１４に進み、要求の識別子を生成してジャーナル内に記憶する。
【００７２】
　ステップＳ１６において、非アクティブ化されているポインタを再アクティブ化すべきか否かが判断される。ステップＳ１６の条件が否定される場合、コントローラはステップＳ１２に戻る。
【００７３】
　ステップＳ１６の条件が肯定される場合、コントローラはステップＳ１８に進み、非アクティブ化されているポインタをメモリにコピーしてそのポインタを再アクティブ化する。
【００７４】
　ステップＳ２０で、コントローラは、記憶されている１つまたは複数の識別子を含むジャーナルにアクセスし、記憶されている１つまたは複数の識別子に応答して１つまたは複数のアクティブ化されているポインタを変更する。
【００７５】
　本明細書に述べたスナップショットボリュームには、元のボリュームのバックアップの提供を含む多くの用法がある。元のボリュームの多くのスナップショットボリュームが仮想記憶システム１０内に同時に存在することが可能である。スナップショットボリュームは、ある時間期間にわたる規定の間隔に従って作成することができ、個々のスナップショットボリュームが、異なる時点または瞬間時点における元のボリュームのバックアップを表すことができる。
【００７６】
　スナップショットボリュームは、スナップショットボリュームからの元ボリュームの復元が通常、テープバックアップからの復元よりもはるかに高速であり、中断の度合いが低いため、従来のテープバックアップに改良を提供する。さらに、スナップショットボリュームの作成は、元のボリュームをテープにコピーする場合と比較して高速であり、中断の度合いが低い。
【００７７】
　本発明の態様では、大量のマッピングメモリが利用される（すなわち、個々のスナップショットボリュームが元のボリュームと同量のマッピングメモリを含み得るため）という、複数のスナップショットボリューム（例えば、元ボリュームのスナップショットボリューム）の作成に伴う問題が軽減される。本明細書に述べたように、本発明の態様では、スナップショットボリュームを収容するマッピングメモリの消費が低減するとともに、スナップショットボリュームの作成における制限要因としてのマッピングメモリの影響が少なくなる。
【００７８】
　本発明の態様では、スナップショットまたは他のボリューム内のデータが破損する機会がなくなるか、または低減される。例えば、本発明の態様によっては、ジャーナルを利用してトランザクションまたは変更とも呼ばれる要求を記憶する。例示的な動作によれば、スナップショットボリュームが再アクティブ化されメモリに提供された後に、ジャーナルエントリをスナップショットボリュームに適用することができる。
【００７９】
　本発明はは、例としてのみ与えられた開示の実施形態に限定されず、特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００８０】
【図１】例示的な記憶システムの機能ブロック図である。
【図２】例示的な仮想記憶システムとして実施される図１の記憶システムの説明図である。
【図３】例示的な仮想記憶システムのスナップショット動作の説明図である。
【図４】例示的な仮想記憶システムのデータ移行についての説明図である。
【図５】仮想記憶システムのマッピングシステムの例示的な管理方法を示すフローチャートである。
【図１】
2004127294.tif 000003
【図２】
2004127294.tif 000004
【図３】
2004127294.tif 000005
【図４】
2004127294.tif 000006
【図５】
2004127294.tif 000007