(57)【要約】【課題】　記憶システム内にデータを記憶する改良されたシステムを提供する。【解決手段】　仮想記憶システム１０は、データを記憶するように構成された物理記憶空間２４と、物理記憶空間２４内に記憶されたデータの表現をホスト２０に提供するように適合された仮想記憶空間２２と、物理記憶空間２４と仮想記憶空間２２の間のアドレス指定を実装するために利用される複数のポインタ３４を記憶するように構成されたメモリ１８と、メモリ１８から前記ポインタ３４のうち選択されたものを抽出し、第１の時点において前記選択されたポインタをメモリ１８とは異なる別の記憶位置に提供し、前記別の記憶位置から前記選択されたポインタ３４を抽出し、前記第１の時点後の第２の時点において前記選択されたポインタ３４を前記メモリ１８に提供するように構成されたコントローラと、を備える。　 【選択図】図１
2004127295.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)と呼ばれている。分岐した空間は、スナップショットボリューム４２と元のボリューム４０との間でもはや共有されない。
【００３０】
　例えば、図３に示すように、仮想記憶位置４４は最初、物理記憶位置４６をアドレス指定している。従って、元のボリューム４０のスナップショット動作４７の後、スナップショットボリューム４２の各仮想記憶位置４８も、物理記憶位置４６をアドレス指定している。その後、第１の書き込み動作４９が仮想記憶位置４４に行われたものと仮定する。データが物理記憶位置４６から検索され、第１の書き込み動作によって修正され、分岐データとして新しい物理記憶位置５０に記憶される。仮想記憶位置４４に関連するポインタ３４は、第１の書き込み動作４８の後に物理記憶位置５０をアドレス指定する分岐ポインタになる。しかし、スナップショットボリューム４２の仮想記憶位置４８のポインタ３４は依然として物理記憶位置４６をアドレス指定し、スナップされた未変更の元データへのアクセスを提供する。
【００３１】
　スナップショットボリューム４２のデータの更新も、スナップショットボリューム４２の仮想記憶位置５４に対する例示的な第２の書き込み動作５２によって示すように行われ得る。それまでは仮想記憶位置５４および対応する物理記憶位置５５に関連していたポインタ３４は、第２の書き込み動作後の、物理記憶位置５５としてそれまでは記憶されていた変更済データを含む新しい物理記憶位置５６を参照するように調整される。元のボリューム４０の仮想記憶位置５８に関連するポインタ３４は、第２の書き込み動作後でも依然として物理記憶位置５５をアドレス指定している。
【００３２】
　スナップショットボリュームは、親ボリュームがスナップされた時点でさらに物理記憶空間を消費することはないため、記憶システム１０の利用可能な物理記憶空間が、分岐発生時に枯渇するようにスナップショットボリュームが構成される可能性がある。システム１０がデータの修正の結果生じるスナップショットボリュームの分岐への適合に十分な物理記憶空間を有していない場合であっても、システム１０ではスナップショット動作が可能である。記憶システム１０のこの状態は、過大割り当て（over committed）と呼ぶことができる。システム１０の１つまたは複数のスナップショットボリュームが、それぞれの使用サイクルにおいて完全な分岐が行われない場合があるため、記憶システム１０が過大割り当て状態になることが可能であることが有利である。このような場合において、過大割り当て状態の場合、記憶システム１０は、利用可能な物理記憶空間よりも多くの記憶空間（仮想記憶空間で表される）を有しているように見える可能性がある。
【００３３】
　上に述べたように、複数のポインタ３４を含むマッピングシステム３２はメモリ１８内に記憶することができる。追加のポインタ３４の収容、追加のキャッシュ空間の提供、他の記憶空間の提供、または他の理由によりメモリ１８の一部（マッピング空間とも呼ばれる場合がある、ポインタ３４の記憶専用のメモリ１８の部分）を解放することが望ましい場合がある。本発明の態様は、メモリ１８または他のマッピング空間を使用して、ポインタ追加または他の理由によりマッピングシステム３２の記憶能力を向上する構造的実施形態および方法を提供する。
【００３４】
　一動作態様によれば、コントローラ１２は、マッピングシステム３２の一部およびそのポインタ３４を抽出し、新しいポインタ３４または他の目的のために記憶容量を提供するように構成される。その後、マッピングシステム３２の抽出部分およびポインタ３４を再びメモリ１８に提供して、仮想記憶空間２２と物理記憶空間２４との間のアドレス指定を実施する際に使用することができる。
【００３５】
　一実施形態では、マッピングシステム３２中の適切なポインタ３４を含む部分が識別され、これをメモリ１８から抽出することができ、マッピングシステム３２の一部の抽出により生じるシステム１０のパフォーマンスに対する悪影響は最小限に抑えられる。例えば、一態様では、システム１０の動作中およびホスト２０からのＩ／Ｏ要求処理中の遅延が最小になるマッピングシステム３２の部分を抽出することが望ましい。
【００３６】
　例示的な動作では、動作の復元またはデータのテープ記憶媒体へのストリーミングに、上に述べたスナップショットボリュームが一般に利用される。あるいは、スナップショットボリュームのデータに対して、比較的長い時間期間、アクセス、修正、または利用が行われない場合もある。しかし、スナップショットボリュームの生成は、スナップショットボリュームのポインタ３４の記憶にメモリ１８の資源を消費する。従って、スナップショットボリュームが物理記憶空間をさらに消費し得ない場合であっても、一実施形態では、メモリ１８は、スナップショットボリュームのポインタ３４を記憶するために利用される。
【００３７】
　本発明の態様によれば、コントローラ１２は、例えば、仮想記憶ボリューム２６のタイプを含む基準を利用して、非アクティブ化する候補としてマッピングシステム３２の一部を識別することができる。コントローラ１２は、例えば、スナップショットボリュームである、または通常のボリュームではないボリュームの識別を含むマッピング空間３２の部分を非アクティブ化する部分として識別する基準を利用することができる。
【００３８】
例示的な一構成によれば、コントローラ１２は、スナップショットまたは他のボリュームについてのポインタ３４を含む、マッピングシステム３２の部分をメモリ１８から抽出するように構成される。
【００３９】
仮想記憶ボリューム用のマッピングシステム３２の各部分の抽出は、仮想記憶ボリュームの非アクティブ化と呼ぶことができる。
【００４０】
上述の例示的な態様によれば、コントローラ１２は、非アクティブ化する候補として１つまたは複数の仮想記憶ボリュームを識別し、その後、識別されたボリューム２６に対応するマッピングシステム３２の各部分およびポインタ３４をメモリ１８から抽出する。
【００４１】
　本発明の他の態様によれば、コントローラ１２は、非アクティブ化すべき適切な仮想記憶ボリューム２６またはマッピングシステム３２の部分を識別するための追加のまたは他の基準を利用することができる。例えば、コントローラ１２は、所与の仮想記憶ボリューム２６の、所定の時間期間、ボリューム２６に関してホスト２０からの入出力要求がない不活動状態期間について監視することができる。コントローラ１２は、このような基準または他の基準を使用して仮想記憶ボリューム２６の非アクティブ化を指定することができる。
【００４２】
　一実施形態では、コントローラ１２は、識別されたスナップショットボリュームまたは他の仮想記憶ボリューム２６に対応するマッピングシステム３２のポインタ３４をメモリ１８から抽出して、追加のポインタ３４の記憶を含む他のことに使用可能なメモリ１８の量を増大する。コントローラ１２は、ポインタ３４またはマッピングシステム３２の部分をコピーまたは除去して、上に述べた抽出を実行することができる。マッピングシステム３２の抽出された部分は、マッピングシステム３２の非アクティブ化部分と呼ぶことができる。本発明の態様によれば、マッピングシステム３２の非アクティブ化部分および非アクティブ化仮想記憶ボリューム２６は、非アクティブ化状態にある間は物理記憶位置のアクセスに利用されない。仮想記憶空間２２と物理記憶空間２４の間のアドレス指定は、マッピングシステム３２のアクティブ化部分を利用して実施される。
【００４３】
　例示的な１つの抽出動作では、コントローラ１２は、非アクティブ化のために識別されたスナップショットまたは他のボリュームに対応する記憶オブジェクトを識別するテーブルにアクセスする。個々の記憶オブジェクトは、識別されたボリュームのポインタ３４の複数のページを識別する。個々のページはセグメントとも呼ばれ、６４ＫＢのサイズを有し、１６３８４個のポインタ３４を含む。個々のポインタ３４は、上に述べたように、各物理記憶位置３６に２５６ＫＢサイズの物理記憶空間を有するクラスタを指す。従って、上述の例示的な実施形態では、個々のページまたはセグメントは、物理記憶空間２４内の４ＧＢのデータをアドレス指定する。ポインタ３４は、適切なボリュームならびに各記憶オブジェクト、ページ、およびポインタ３４の識別の後に、メモリ１８からページアウト、または抽出される。従って、一実施形態では、ポインタ３４を、非アクティブ化されるべき識別されたボリュームの１つまたは複数のページに従って、抽出することができる。
【００４４】
　上述の例示的な実施態様によれば、抽出されたポインタ３４は、最初の記憶位置（例えば、メモリ１８）とは異なる他の記憶位置内にコピーまたは提供される。例えば、抽出されたポインタ３４は、物理記憶空間２４の物理記憶ボリューム２８にコピーされる。抽出後、抽出されたポインタ３４を記憶していたメモリ１８の部分が別のポインタ３４（例えば、新しい、または既存の別の仮想記憶ボリューム２６）の記憶に利用可能になる。従って、識別されたポインタ３４をメモリ１８から抽出すると、メモリ１８のマッピング空間の、新しいポインタ３４の記憶に適合するのに利用可能な容量が増大する。このような実施形態では、コントローラ１２は、所望であれば、新しいポインタ３４をポインタ３４が抽出された位置でメモリ１８に書き込むように構成される。
【００４５】
　非アクティブ化した後の時点で、非アクティブ化ポインタ３４またはマッピングシステム３２の非アクティブ化部分（例えば、非アクティブ化された仮想記憶ボリューム２６に対応する）は、コントローラ１２により再アクティブ化されて、再アクティブ化されたポインタ３２を使用して物理記憶位置３６のアドレス指定を再び提供することができる。例えば、コントローラ１２は、非アクティブ化された仮想記憶ボリューム２６のポインタ３４を物理記憶空間２４から抽出し、このポインタ３４をメモリ１８に提供して、仮想記憶ボリューム２６および各ポインタ３４を再アクティブ化することができる。
【００４６】
　コントローラ１２は、異なる構成で複数の基準に応答して再アクティブ化手順を開始することが可能である。例示的な基準としては、非アクティブ化された仮想記憶ボリューム２６のデータの復元動作要求、ボリューム２６のデータをテープに書き込む要求、または他の理由が挙げられる。米国特許出願１０／２６４，６６１号に述べられているように、非アクティブ化中に生じた更新をジャーナル内に記憶し、再アクティブ化された仮想記憶ボリューム２６に適用することができる。所与の仮想記憶ボリューム２６の再アクティブ化に適合するとともに、メモリ１８内に適切なマッピング空間を提供するために、別の仮想記憶ボリューム２６を非アクティブ化することができる。
【００４７】
　図４は、コントローラ１２により実行可能な、本発明の例示的な態様を実施する例示的な動作方法を示す。本方法は、メモリ１８内の実行可能コードとして実現され、コントローラ１２によって実行することができる。より多くの、またはより少ないステップ、または代替のステップを含む他の方法も可能である。
【００４８】
　まず、ステップＳ１０において、スナップショットボリューム等、仮想記憶ボリュームをさらに作成することが望ましいか否かを判断する。望ましくない場合、図示の方法はステップＳ１４に進む。
【００４９】
　ステップＳ１０の条件が肯定される場合、コントローラはステップＳ１２に進み、作成されたボリュームのポインタをメモリに記憶する。
【００５０】
　ステップＳ１４において、メモリ容量の追加が望ましいが否かを判断する。ステップＳ１４の条件が否定される場合、図示の方法はステップＳ２０に進むことができる。
【００５１】
　ステップＳ１４の条件が肯定される場合、コントローラはステップＳ１６に進み、非アクティブ化する１つまたは複数の仮想記憶ボリュームを識別することができる。
【００５２】
　ステップＳ１８において、コントローラは、識別された１つまたは複数の仮想記憶ボリュームのポインタを最初の記憶位置（例えば、メモリ）から抽出し、そのポインタを、物理記憶空間等、適切な宛先記憶位置に提供する。
【００５３】
　ステップＳ２０において、１つまたは複数の仮想記憶ボリュームの再アクティブ化が望ましいか否かを判断する。ステップＳ２０の条件が否定される場合、コントローラはステップＳ１０に戻ることができる。
【００５４】
　ステップＳ２０の条件が肯定される場合、コントローラはステップＳ２２に進み、非アクティブ化された仮想記憶ボリュームの非アクティブ化ポインタを、物理記憶空間等の各記憶位置から抽出し、このポインタをメモリに提供することができる。
【００５５】
　本明細書に述べたように、本発明の態様は、スナップショット動作を実行する動作を含む仮想記憶システム１０の動作に対する、メモリ１８等の限られた資源の影響を低減するシステムおよび方法を提供する。
【００５６】
本発明の態様を用いずボリュームのすべてのポインタがメモリ１８内に存在するシステムで提供されるよりも、本発明の態様では多くの仮想記憶ボリューム２６を収容することが可能である。本発明の態様はまた、マップが、最低使用頻度アルゴリズムに従ってメモリにページイン／アウトするいくつかのシステムに対する改良を提供する。
【００５７】
　本発明のいくつかの構成によれば、スナップショットボリューム等の仮想記憶ボリュームの非アクティブ化は、メモリ１８等の固定資源によって課される制限を軽減する。上に述べたように、非アクティブ化するために、特定の仮想記憶ボリュームを識別し選択して、システム１０のパフォーマンスおよび速度を維持することができる。
【００５８】
例えば、ボリュームは通常、速度があまり重要ではない旧データの復元またはデータのテープへのストリーミングが所望されるまで積極的に使用されないため、スナップショットボリュームの非アクティブ化により、システム１０の性能および速度が大きく低下するとは考えられない。
【００５９】
復元またはデータのテープへのストリーミングの後に、仮想記憶ボリュームを再び非アクティブ化することが望ましい場合がある。従って、システム１０の最適な性能を保証するために、厳しい性能要件を有するポインタ３４の提供は、メモリ１８においてアクティブ状態に維持しながら、他のポインタ３４を識別し非アクティブ化することができる。
【００６０】
　本発明の態様では、速度または性能についての要件がまったくないか、最小の要件を有する仮想記憶ボリュームに利用されるメモリ１８の資源を最小化しながら、システム１０を過大割り当てすることが可能である。本発明の構造および方法では、従来の記憶構成と比較してスナップショットボリューム等の追加の仮想記憶ボリュームをサポートすることが可能である。
【００６１】
　本発明は、例としてのみ与えられた開示の実施形態に限定されず、特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００６２】
【図１】例示的な記憶システムの機能ブロック図である。
【図２】例示的な仮想記憶システムとして実施される図１の記憶システムの説明図である。
【図３】例示的な仮想記憶システムのスナップショット動作の説明図である。
【図４】仮想記憶システムのマッピングシステムの例示的な管理方法を示すフローチャートである。
【図１】
2004127295.tif 000003
【図２】
2004127295.tif 000004
【図３】
2004127295.tif 000005
【図４】
2004127295.tif 000006