ストレージのプールにおいてデータを動的に割り当てる能力を有するディスクドライブシステムであって、データストレージサブシステムと、前記データストレージサブシステムからのストレージ空間からなる複数のユーザボリュームと、少なくとも1つのディスクストレージシステムコントローラを有するディスクマネージャとを含み、前記ディスクマネージャは、前記データストレージサブシステムの仮想ボリュームのマトリックスを含むストレージのプールを維持するように構成され、前記仮想ボリュームのそれぞれは、複数の物理的ストレージデバイスの抽象化されたものであり、予め定められたサイズを有するものであり、自由な仮想ボリュームを、前記仮想ボリュームのマトリックスから前記複数のユーザボリュームへ動的に割り当てるように構成され、割り当てられた前記仮想ボリュームへデータを書き込むように構成されるものである、システム。請求項1に記載のシステムであって、前記データストレージサブシステムおよび前記ディスクマネージャは、更に別のディスクドライブが必要であるかを判定し、前記更に別のディスクドライブが必要である場合には通知が送られる、システム。請求項1または2に記載のシステムであって、前記ディスクマネージャは複数のディスクストレージシステムコントローラを管理する、システム。請求項1ないし3の何れかに記載のシステムであって、動作されるディスクストレージシステムコントローラの障害をカバーするために複数の冗長なディスクストレージシステムコントローラを更に備える、システム。請求項1ないし4の何れかに記載のシステムであって、前記データストレージサブシステムは、RAID-0、RAID-1、RAID-5、RAID-10などのようなRAIDタイプのうちの少なくとも1つを含む組合せを更に備える、システム。請求項5に記載のシステムであって、前記データストレージサブシステムは、RAID-3、RAID-4、RAID-6、およびRAID-7を含むRAIDタイプを更に備える、システム。請求項1ないし6の何れかに記載のシステムであって、前記仮想ボリュームは、複数のRAIDデバイスを抽象化したものである、システム。請求項1ないし7の何れかに記載のシステムであって、前記少なくとも1つのディスクストレージシステムコントローラは、自動的に、所定の時間間隔で前記仮想ボリュームのそれぞれに対するスナップショットを生成し、それぞれのスナップショットのアドレスインデックスを関連する仮想ボリュームに記憶し、記憶したアドレスインデックスを介して前記仮想ボリュームの前記スナップショットの位置が即座に見つかるようにするものであり、前記スナップショットは、以前の時間間隔でとられた以前のスナップショット以降になされた、関連する仮想ボリュームにおけるデータに対する変更を含むものである、システム。請求項1ないし7の何れかに記載のシステムであって、前記少なくとも1つのディスクストレージシステムコントローラは、自動的に、前記仮想ボリュームのそれぞれに対するスナップショットを生成し、それぞれのスナップショットのアドレスインデックスを記憶し、記憶した前記アドレスインデックスを介して少なくとも1つの前記スナップショットにアクセスし、第1の時点での関連する仮想ボリュームのコンテンツのビューを提供する少なくとも1つの前記スナップショットに基づいて少なくとも1つの前記スナップショットのそれぞれから一時的なボリュームを生成するものであり、前記スナップショットは、以前の時点である第2の時点でとられた以前のスナップショット以降になされた、関連する仮想ボリュームにおけるデータに対する変更を含むものである、システム。データストレージサブシステムのデータを動的に割り当てる方法であって、前記データストレージサブシステムの複数のデータストレージデバイスからのストレージ空間の複数のユーザボリュームを生成するステップと、前記データストレージサブシステムの仮想ボリュームのマトリックスを含むストレージのプールを管理するステップであって、前記仮想ボリュームのそれぞれは、複数の物理的ストレージデバイスの抽象化されたものであり、予め定められたサイズを有するものである、ステップと、ストレージのプールを用いて、自由な仮想ボリュームを、前記仮想ボリュームのマトリックスから前記複数のユーザボリュームへ動的に割り当てるステップと、割り当てられた前記仮想ボリュームへデータを書き込むステップとを備える方法。請求項10に記載の方法であって、前記データストレージサブシステムのディスク空間の占有率を、前記データストレージサブシステムの前記ディスク空間の占有率の履歴に基づいて決定するステップと、前記占有率に基づいて、前記データストレージサブシステムに追加のディスクドライブが必要であるかを判定するステップと、前記追加のディスクドライブが必要である場合には、通知を前記データストレージサブシステムへ送るステップと更に備える方法。請求項11に記載の方法であって、前記通知を電子メールによって送ることを更に含む、方法。請求項10ないし12の何れかに記載の方法であって、仮想ボリュームの前記予め定められたサイズは、デフォルトのサイズであり、ユーザによって変更可能である、方法。請求項10ないし13の何れかに記載の方法であって、前記複数のユーザボリュームは、RAID-0、RAID-1、RAID-5、RAID-10の、複数のRAIDタイプのうちの少なくとも1つからのディスク空間ブロックを備える、方法。請求項10ないし14の何れかに記載の方法であって、所定の時間間隔で前記仮想ボリュームのそれぞれに対するスナップショットを自動的に生成するステップであって、それぞれのスナップショットは、以前の時間間隔でとられた以前のスナップショット以降になされた、関連する仮想ボリュームにおけるデータに対する変更を含むものである、ステップと、それぞれのスナップショットのアドレスインデックスを記憶するステップであって、記憶したアドレスインデックスを介して前記仮想ボリュームの前記スナップショットの位置が即座に見つかるようにするものである、ステップとを更に備える方法。請求項15に記載の方法であって、それぞれのスナップショットは、関連する仮想ボリュームへの書き込み動作の記録を含む、方法。請求項15または16に記載の方法であって、前記所定の時間間隔はユーザにより定められたものである、方法。請求項15ないし17の何れかに記載の方法であって、前記時間間隔は、数秒毎から数時間毎の範囲である、方法。請求項15ないし18の何れかに記載の方法であって、前記スナップショットは、主とするシステムが壊れた場合にデータのインテグリティに影響がなく且つデータを即座にリカバリできるように、リモートのデータストレージサブシステムで記憶される、方法。請求項15ないし19の何れかに記載の方法であって、ユーザのリクエストに応じて少なくとも1つの仮想ボリュームに対するスナップショットを生成するステップを更に備える方法。請求項15ないし20の何れかに記載の方法であって、少なくとも2つのスナップショットを、関連する仮想ボリュームについて、合体させるステップを更に備える方法。請求項10ないし14の何れかに記載の方法であって、前記仮想ボリュームに対して複数のスナップショットを生成するステップと、前記スナップショットのアドレスインデックスを記憶するステップと、記憶された前記アドレスインデックスを介して複数の前記スナップショットの少なくとも1つのスナップショットにアクセスするステップと、アクセスされた前記少なくとも1つのスナップショットから一時的なボリュームを生成するステップであって、前記一時的なボリュームは、特定の時点での関連する仮想ボリュームのコンテンツのビューを提供するものである、ステップとを更に備える方法。請求項22に記載の方法であって、前記スナップショットは所定の時間間隔で生成される、方法。請求項22または23に記載の方法であって、前記仮想ボリュームの基礎となるデータを変えることなく前記一時的なボリュームを変更するステップを更に備える方法。請求項22ないし24の何れかに記載の方法であって、前記一時的なボリュームは検査に使用され、前記検査は、前記仮想ボリュームの基礎となるデータを変えることなく、前記時点にあったときのデータに対して行われる、方法。請求項22ないし25の何れかに記載の方法であって、前記一時的なボリュームは訓練に使用され、前記訓練は、前記仮想ボリュームの基礎となるデータを変えることなく、前記時点にあったときのデータに対して行われる、方法。請求項22ないし26の何れかに記載の方法であって、前記一時的なボリュームは前記データのバックアップに使用される、方法。請求項22ないし27の何れかに記載の方法であって、前記一時的なボリュームは前記データのリカバリに使用される、方法。本発明は、動的にデータを割り当てる能力を有する改善されたディスクドライブのシステムおよび方法を提供する。このディスクドライブシステムは、RAIDの空きリストフリーリスト、freelistを維持するストレージのページプール、または代替例としてはディスクストレージブロックのマトリックスを有するRAIDサブシステムと、少なくとも1つのディスクストレージシステムコントローラを有するディスクマネージャとを含むことができる。RAIDサブシステムおよびディスクマネージャは、データを、ストレージのページプールまたはディスクストレージブロックのマトリックスおよび複数のディスクドライブにわたって、RAID-ツー-ディスクマッピングに基づいて、動的に割り当てる。RAIDサブシステムおよびディスクマネージャは、更に別のディスクドライブが必要かどうかを判定し、更に別のディスクドライブが必要である場合には通知を送る。動的なデータ割り当てにより、ユーザは、ディスクドライブを、後にそれが必要となったときに得ることができる。また、動的なデータ割り当てにより、ディスクストレージブロックの仮想ボリュームのマトリックスまたはプールのスナップショット/ポイントインタイムコピーの効率のよいデータストレージや、データバックアップやリカバリなどのためのインスタントデータリプレイおよびデータインスタントフュージョンfusionや、リモートデータストレージや、データプログレッションなどが可能になる。また、データプログレッションにより、より安価なディスクドライブは後の時間に購入されるため、その延期が可能になる。図1に、本発明の諸原理に従った、コンピュータ環境102におけるディスクドライブシステム100の一実施形態を示す。図1に示すように、ディスクドライブシステム100は、RAIDサブシステム104と、少なくとも1つのディスクストレージシステムコントローラ図16を有するディスクマネージャ106とを含む。RAIDサブシステム104およびディスクマネージャ106は、データを、複数のディスクドライブ108のディスク空間にわたって、RAID-ツー-ディスクマッピングに基づいて、動的に割り当てる。更に、RAIDサブシステム104およびディスクマネージャ106は、更に別のディスクドライブが必要かどうかの判定を、ディスク空間全体にわたるデータ割り当てに基づいて行う能力がある。更に別のディスクドライブが必要である場合にはその通知がユーザへ送られて、希望される場合には更に別のディスク空間を追加できる。本発明の諸原理に従った、動的なデータ割り当てまたはディスクドライブ仮想化と呼ばれるを有するディスクストレージシステム100を、図2に一つの実施形態の形で示し、図14のAおよび図14のBに別の実施形態の形で示している。図2に示すように、ディスクストレージシステム110は、ストレージのページプール112、即ち、自由にデータを保存できるデータストレージ空間のリストを含むデータストレージのプールを含む。ページプール112は、RAID装置114のフリーリストを維持し、読み出し/書き込みの割り当ての管理を、ユーザの要求に基づいて行う。ユーザの要求したデータストレージボリューム116は、ストレージ空間を得るために、ページプール112へと送られる。それぞれのボリュームは、同じまたは異なるRAIDレベル、例えば、RAID10、RAID5、RAID0などで、同じまたは異なるクラスのストレージ装置を要求することができる。本発明の動的なデータ割り当ての別の実施形態を、図14のAおよび図14のBに示しており、この例では、複数のディスクストレージシステムコントローラ1402と、複数のディスクストレージシステムコントローラ1402により制御されるディスクストレージブロックのマトリックス1404とを有するディスクストレージシステム1400は、そのシステムにおいて本発明の諸原理に従ってデータを動的に割り当てる。仮想ボリュームまたはブロックのマトリックス1404は、物理ディスクと関連づけるように提供される。仮想ボリュームまたはブロックのマトリックス1404は、複数のディスクストレージシステムコントローラ1402によって動的に監視/制御される。一実施形態では、それぞれの仮想ボリューム1404のサイズは、例えば2メガバイトのように、予め定めることができ、それぞれの仮想ボリューム1404の場所はデフォルトでnullとなっている。仮想ボリューム1404のそれぞれは、データが割り当てられるまでnullである。データは、そのマトリックスまたはプールの任意のグリッドに割り当てることができる例えば、データがそのグリッドに割り当てられた後は、そのグリッド内のドットになる。そのデータが削除された後は、その仮想ボリューム1404は再び使用可能になり、nullと示される。このため、余分な、時には高価なデータストレージ装置、例えばRAID装置を、後に必要となったときに得ることができる。従って、RAIDサブシステムは、仮想的な数のディスクにわたってRAID技法を使用することができる。残りのストレージ空間は自由に使用可能である。RAIDサブシステムのストレージ空間を監視し、そのストレージ空間の占有率を決定することにより、ユーザは、高価であるのに購入時点では用途のない大量のドライブを得なくても済む。このように、ドライブの追加を、ストレージ空間の増大する需要を満たすために実際に必要であるときに行うことにより、ディスクドライブの全体のコストが著しく低減される。一方、ドライブの使用の効率も著しく改善される。また、本発明のディスクドライブシステムの動的なデータ割り当てにより、ストレージの仮想ボリュームページプール、または、ディスクストレージブロックの仮想ボリュームマトリックスの、スナップショット/ポイントインタイムコピーの効率のよいデータストレージや、データリカバリおよびリモートデータストレージのためのインスタントデータリプレイおよびデータインスタントフュージョンや、データプログレッションが可能になる。ディスクドライブシステム100における動的データ割り当てのシステムおよび方法ならびにその実装形態の結果として得られる上述の特徴および利点を、以下で詳細に論じる。動的なデータ割り当て図2Aに、ディスクドライブシステムのRAIDサブシステムにおける従来のデータ割り当てを示し、ここでは、空けられたデータストレージ空間は専属captiveであり、データストレージ用に割り当てることができない。図2Bには、本発明の諸原理に従ったディスクドライブシステムのRAIDサブシステムにおけるデータ割り当てを示し、ここでは、データストレージ用に使用可能である空けられたデータストレージは、一緒にまとめられて、ページプール、例えば、本発明の一実施形態では1つのページプール、を形成する。図2Cに、本発明の諸原理に従った動的なデータ割り当ての方法200を示す。動的なデータの割り当ての方法200は、論理ブロックまたはディスクストレージブロックのデフォルトのサイズを定義して、RAIDサブシステムのディスク空間がディスクストレージブロックのマトリックスを形成するようにするステップ202と、データを書き込み、そのデータを、マトリックスの、nullを示すディスクストレージブロックに割り当てるステップ204とを含む。この方法は、更に、RAIDサブシステムのディスク空間の占有率を、そのRAIDサブシステムのディスク空間の占有率履歴に基づいて決定するステップ206と、更に別のディスクドライブが必要かどうかを判定し、必要な場合に、RAIDサブシステムへ通知を送るステップ208とを含む。一実施形態では、通知は電子メールによって送られる。更に、ディスクストレージブロックのサイズはデフォルトに設定し、ユーザにより変更可能とすることができる。一実施形態では、動的なデータ割り当ては、時には仮想化またはディスク空間仮想化と呼ばれるものであり、数多くの読み出しおよび書き込みの要求を秒単位で効率よく取り扱う。このアーキテクチャでは、キャッシュサブシステムを直接に呼び出す割り込みハンドラが必要であることもある。動的なデータの割り当てでは、要求リクエストをキューに入れないので要求の最適化はなされないが、一度に数多くの未解決pendingの要求を有し得る。また、動的なデータの割り当てでは、データのインテグリティを維持し、データの内容をどのようなコントローラの障害に対しても保護することができる。そうするために、動的なデータの割り当てでは、状態情報を信頼性をもって記憶するためにRAID装置へ書き込む。動的なデータの割り当てでは、更に、読み出しおよび書き込みの要求の順序を維持し、読み出しまたは書き込みの要求を、要求を受け取った順序で完了させることができる。動的なデータの割り当ては、最大のシステム可用性availabilityを提供し、異なる地理的場所へのデータのリモートの複製をサポートする。更に、動的なデータの割り当ては、データ破壊からのリカバリ機能を提供する。スナップショットにより、ユーザは、過去におけるディスクの状態を閲覧することができる。動的なデータの割り当てでは、RAID装置を管理し、大規模な装置を作成し拡張するためのストレージ抽象化を提供する。動的なデータの割り当てでは、サーバに対して仮想ディスク装置を提示するものであり、この装置がボリュームvolumeと呼ばれる。サーバに対して、ボリュームは同じ働きをする。ボリュームは、シリアル番号に関して異なる情報を返し得るが、本質的にはディスクドライブのような働きをする。ボリュームは、より大きい動的なボリューム装置を作成するために、複数のRAID装置のストレージ抽象化を提供する。ボリュームは複数のRAID装置を含み、ディスク空間の効率的な使用を可能にする。図21に、従来の既存のボリューム論理ブロックマッピングを示す。図14のCには、本発明の諸原理に従った、ストレージの仮想ボリュームのページプールの一実施形態のボリューム-RAIDページ再マッピングを示す。それぞれのボリュームは1組のページ、例えば、1、2、3などへと分割され、それぞれのRAIDは1組のページへと分割される。ボリュームのページサイズと、RAIDのページサイズとは、一実施形態では同じとすることができる。従って、本発明のボリューム-RAIDページ再マッピングの一例では、RAID-2を使用するページ1がRAIDページ1へとマッピングされる。動的なデータの割り当てでは、ボリュームのデータインテグリティを維持する。データは、ボリュームへと書き込まれ、サーバへの確認が行われる。データインテグリティは、コントローラの障害を通して、スタンドアロンや冗長なものを含めての様々なコントローラのコンフィギュレーションに適用される。コントローラの障害としては、電源障害、パワーサイクルpowercycle、ソフトウェア例外、およびハードリセットがある。動的なデータの割り当てでは、一般には、RAIDでカバーされるディスクドライブ障害を取り扱わない。動的なデータの割り当ては、コントローラに対する最も高レベルのデータ抽象化を提供する。動的なデータの割り当ては、フロントエンドから要求を受理し、最終的にはRAID装置を使用してデータをディスクへ書き込む。動的なデータの割り当ては、幾つもの内部サブシステムを含む。キャッシュ-ボリュームへの読み出しおよび書き込みの動作を、サーバへの迅速な応答時間を提供し、データプラグインに対して書き込みをまとめることによって、スムーズにする。コンフィギュレーション-データ割り当てオブジェクトの作成、削除、取り出し、および変更の方法を含む。より高レベルのシステムアプリケーションに対するツールボックスを作成するためのコンポーネントを提供する。データプラグイン-ボリュームの読み出しおよび書き込みの要求を、ボリュームコンフィギュレーションに応じて、様々なサブシステムへ配布する。RAIDインターフェース-より大きいボリュームを作成するためのRAID装置抽象化を、ユーザおよび他の動的なデータの割り当てサブシステムに提供する。コピー/ミラー/スワップ-ボリュームのデータを、ローカルおよびリモートのボリュームへと複製する。一実施形態では、サーバの書き込まれたブロックのコピーのみを行うことができる。スナップショット-データの増分的incrementalボリュームリカバリを提供する。過去のボリューム状態の閲覧ボリュームViewVolumeを即座に作成する。プロキシボリューム-リモートの宛先ボリュームへの要求の通信を行えるようにして、リモート複製RemoteReplicationをサポートする。請求billing-割り当てたストレージ、活動、パフォーマンス、およびデータのリカバリに対してユーザに料金請求する機能。また、動的なデータの割り当てでは、エラーおよびコンフィギュレーションにおける顕著な変更のログ記録も行う。図21に、サブシステムにおける外部データフローの一実施形態を示す。外部要求はフロントエンドから来る。要求には、ボリューム情報取得getvolumeinformation、読み出しread、および書き込みwriteがある。すべての要求はボリュームIDをもつ。ボリューム情報は、ボリュームコンフィギュレーションサブシステムによって取り扱われる。読み出しおよび書き込みの要求はLBAを含む。また、書き込み要求はデータを含む。動的なデータの割り当ては、ボリュームコンフィギュレーションに応じて、要求を幾つもの外部レイヤへ渡す。リモート複製は、要求をフロントエンドへ渡すが、あて先はリモートの宛先ボリュームである。RAIDインターフェースは要求をRAIDへ渡す。コピー/ミラー/スワップは、要求を、宛先ボリュームに対する動的データ割り当てへと戻す。図22に、サブシステムにおける内部データフローの一実施形態を示す。内部データフローはキャッシュを行うことから始まる。キャッシュを行うと、書き込み要求がキャッシュに入れられるか、または、その要求が直接にデータプラグインへ渡される。キャッシュは、フロントエンドのHBA装置からの直接DMAをサポートする。要求は迅速に完了され、応答がサーバに返される。データプラグインマネージャが、キャッシュより下の要求フローの中心である。それぞれのボリュームに対して、データプラグインマネージャは、要求ごとに、登録されたサブシステムオブジェクトを呼び出す。データインテグリティに影響を及ぼす動的データ割り当てサブシステムでは、コントローラの一貫性コヒーレンシに対するサポートが必要となることがある。図23に示すように、それぞれのサブシステムは、独立してコヒーレンシを維持する。コヒーレンシの更新により、コヒーレンシリンクを通じてのデータブロックのコピーを回避する。キャッシュのコヒーレンシでは、データをピアpeerコントローラにコピーする必要があり得る。ディスクストレージシステムコントローラ図14のAに、本発明の諸原理に従った、システムにおいて動的にデータを割り当てるための、複数のディスクストレージシステムコントローラ1402と、複数のディスクストレージシステムコントローラ1402により制御されるディスクストレージブロックまたは仮想ボリュームのマトリックス1404とを有するディスクストレージシステム1400を示す。図14のBには、ディスクストレージブロックまたは仮想ボリュームの仮想ボリュームマトリックス1404における動的なデータの割り当ての一実施形態を示す。ある動作では、ディスクストレージシステム1400は、ディスクストレージブロックまたは仮想ボリュームのマトリックス1404のスナップショットを、所定の時間間隔で時間的に生成し、スナップショットまたはデルタのアドレスインデックスを、ディスクストレージブロックまたは仮想ボリュームのマトリックス1404に保存して、ディスクストレージブロックまたは仮想ボリュームのマトリックス1404のスナップショットまたはデルタが、保存したアドレスインデックスによって直ちに見つけ出せるようにする。更にある動作では、ディスクストレージシステムコントローラ1402は、ディスクストレージブロックのマトリックス1404のスナップショットからデータ使用の頻度を監視し、そして、使用またはアクセスの頻度の低いデータほど、より安価なRAIDサブシステムへと移動させるようなエージング規則を適用する。同様に、より安価なRAIDサブシステム中のデータがより頻繁に使用され始めると、コントローラは、そのデータを、より高価なRAIDサブシステムへと移動させる。従って、ユーザは、ユーザ自身のストレージの必要性を満たすように所望のRAIDサブシステムポートフォリオを選ぶことができる。従って、ディスクドライブシステムのコストを著しく低減させ、また、ユーザによる動的な制御を可能とする。RAID-ツー-ディスクマッピングRAIDtoDiskMappingRAIDサブシステムおよびディスクマネージャは、データを、複数のディスクドライブのディスク空間にわたって、RAID-ツー-ディスクマッピングに基づいて、動的に割り当てる。一実施形態では、RAIDサブシステムおよびディスクマネージャは、更に別のディスクドライブが必要かどうかを判定し、更に別のディスクドライブが必要である場合には通知を送る。図15に、本発明の諸原理に従った、RAID-5サブシステム1500内の複数のディスクストレージブロック1502~1512へとマッピングされる3つのディスクドライブ108図1の例を示す。図16は、図15に示す3つのディスクドライブ108にディスクドライブ1602を追加した後の、ディスクドライブストレージブロックの再マッピング1600の例を示す。ディスクマネージャ図1に示すディスクマネージャ106は、一般には、ディスクおよびディスクアレイの管理を行うものであり、それには、グループ化/資源プーリング、ディスク属性の抽象化、フォーマット、ディスクの追加addition/削減subtraction、およびディスクサービス時間およびエラー率の追跡を含む。ディスクマネージャ106は、ディスクの様々なモデルの間の違いを区別せず、RAIDコンポーネントについて包括的なストレージ装置を提示する。また、ディスクマネージャ106はグループ化機能を提供し、これは、例えば10000RPMのディスクなどのような特定の特徴をもつRAIDグループの構築を容易にする。本発明の一実施形態では、ディスクマネージャ106は、少なくとも3重のものとなっている。その3重のものとは、抽象化、コンフィギュレーション、およびI/O最適化である。ディスクマネージャ106は、ディスクを上位レイヤに提示し、上位レイヤは、例えば、ローカルまたはリモートに取り付けられた物理ディスクドライブや、リモートに取り付けられたディスクシステムなどとすることができる。共通の基礎にある特徴は、こうした装置の何れもがI/O動作のターゲットであり得ることである。抽象化サービスは、特にRAIDサブシステムのような上位レイヤに対して、一様なデータパスインターフェースを提供し、そして、管理者に対して、ターゲット装置の管理のための包括的な機構を提供する。また、本発明のディスクマネージャ106は、ディスクのグループ化機能を提供して管理およびコンフィギュレーションを簡素化する。ディスクには名前を付け、グループに入れることができ、グループにも名前を付けることができる。グループ化は強力な機能であり、これにより、ボリュームを或るディスクのグループから別のグループへと移行させるタスクや、或るグループのディスクを特定の機能専用にするタスクや、或るグループのディスクをスペアに指定するタスクなどのタスクを簡単にする。また、ディスクマネージャは、外部装置の存在を検出する役目をもつSCSI装置サブシステムなどのような装置とインターフェースを行う。SCSI装置サブシステムは、少なくともファイバチャネル/SCSIタイプの装置については、ブロック型のターゲット装置である装置のサブセットを判定する能力をもつ。ディスクマネージャが管理および抽象化を行うのはこうした装置である。更に、ディスクマネージャは、SCSI装置レイヤからのフロー制御に応答する役目をもつ。ディスクマネージャは、キューイング機能を有し、これにより、ディスクドライブシステムのスループットを最適化する一方法として、I/O要求を集合させる機会が与えられる。更に、本発明のディスクマネージャは、複数のディスクストレージシステムコントローラを管理する。また、複数の冗長ディスクストレージシステムコントローラを実装して、動作させられるディスクストレージシステムコントローラの障害をカバーすることができる。この冗長ディスクストレージシステムコントローラもディスクマネージャによって管理される。ディスクマネージャと他のサブシステムとの関係ディスクマネージャは、他の幾つかのサブシステムとやり取りを行う。RAIDサブシステムは、データパス活動に関してディスクマネージャが提供するサービスの重要なクライアントである。RAIDサブシステムは、ディスクマネージャを、I/Oのためのディスクへの独占的なパスとして使用する。また、RAIDシステムでも、ディスクマネージャからのイベントについて聴取を行い、ディスクの存在および動作状態の判定を行う。また、RAIDサブシステムはディスクマネージャと協働して、RAID装置の構築のための範囲extentを割り当てる。管理コントロールは、ディスクの存在の情報を得るため、また動作状態の変化について情報を得るために、ディスクイベントについて聴取を行う。本発明の一実施形態では、RAIDサブシステム104は、RAID-0、RAID-1、RAID-5、RAID-10などのRAIDタイプのうちの少なくとも1つからなる組合せを含むことができる。代替のRAIDサブシステムでは、RAID-3、RAID-4、RAID-6、RAID-7などのような他のRAIDタイプを使用できることも理解されよう。本発明の一実施形態では、ディスクマネージャは、コンフィギュレーションアクセスのサービスを使用して、持続的なコンフィギュレーションを保存し、また、統計などのような過渡的な読み出し専用情報をプレゼンテーションレイヤへ提示する。ディスクマネージャは、こうしたパラメータへのアクセスのためにコンフィギュレーションアクセスへのハンドラの登録を行う。また、ディスクマネージャは、ブロックデバイスの存在および動作状態についての情報を得るためにSCSI装置レイヤのサービスを使用するものであり、また、こうしたブロックデバイスへのI/Oパスをもつ。ディスクマネージャは、ディスクを一意に識別するための補助的な方法として、装置についてSCSI装置サブシステムに問い合わせを行う。データインスタントリプレイおよびデータインスタントフュージョンまた、本発明は、データインスタントリプレイdatainstantreplayおよびデータインスタントフュージョンdatainstantfusionの方法を提供する。図3のAおよびBに、本発明の諸原理に従った、複数の時間間隔でのRAIDサブシステムのディスクストレージブロックのスナップショットの概略図を示す。図3Cには、データインスタントリプレイの方法300を示し、この方法は、論理ブロックまたはディスクストレージブロックのデフォルトのサイズを定義して、RAIDサブシステムのディスク空間がストレージのページプールまたはディスクストレージブロックのマトリックスを形成するようにするステップ302と、ページプールのボリュームのスナップショットまたはディスクストレージブロックのマトリックスのスナップショットを所定の時間間隔で時間的に生成するステップ304と、スナップショットまたはデルタdeltaのアドレスインデックスを、ストレージのページプールまたはディスクストレージブロックのマトリックスに保存して、ディスクストレージブロックのマトリックスのスナップショットまたはデルタをその保存したアドレスインデックスによって直ちに見つけ出せるようにするステップとを含む。図3Bに示すように、所定の各時間間隔、例えば、T1午後12:00、T2午後12:05、T3午後12:10、T4午後12:15などのような5分毎に、ストレージのページプールまたはディスクストレージブロックのマトリックスのスナップショットが自動的に生成される。ストレージのページプールまたはディスクストレージブロックのマトリックスの中のスナップショットまたはデルタのアドレスインデックスは、ストレージのページプールまたはディスクストレージブロックのマトリックスに保存されて、ストレージのページプールまたはディスクストレージブロックのマトリックスのスナップショットまたはデルタを、その保存したアドレスインデックスによって直ちに見つけ出せるようにされる。従って、このデータインスタントリプレイの方法では、RAIDサブシステムのスナップショットを、ユーザの定義する時間間隔や、ユーザのコンフィギュレーションする例えば数分や数時間ごとなどのような動的なタイムスタンプや、サーバの指示する時刻に、時間的に生成する。システム障害やウイルス攻撃にあった場合、こうしたタイムスタンプを有する仮想スナップショットにより、データインスタントリプレイおよびデータインスンタントリカバリが、約数分または数時間などで可能になる。この技法は、インスタントリプレイフュージョンとも呼ばれる。即ち、クラッシュまたは攻撃のすぐ前のデータのフュージョンが遅れずに行われ、クラッシュまたは攻撃の前に保存したスナップショットを直ちにそれ以降の動作で使用することができる。図4に、本発明の諸原理に従った、RAIDサブシステムのディスクストレージブロックの複数のスナップショットを使用することによるデータインスタントフュージョン機能400の概略図を更に示している。T3で、スナップショットの並列チェインT3’~T5’が生成され、それにより、フュージョンされたデータT3’によってフュージョンおよび/またはリカバリされたデータを、T4でフュージョンされるデータと置き換えるために使用することができる。同様に、スナップショットの複数の並列チェインT3’’、T4’’’を生成して、T4’~T5’およびT4’’~T5’’でフュージョンされるデータと置き換えることができる。一代替実施形態では、T4、T4’~T5’、T5’’でのスナップショットは、なおもページプールまたはマトリックスに保存することができる。スナップショットをローカルのRAIDサブシステムまたはリモートのRAIDサブシステムに保存することができ、それにより、重大なシステムクラッシュが、例えば、テロリスト攻撃などが原因で生じた場合にも、データインテグリティについて影響を受けず、データを直ちにリカバリできる。図5に、本発明の諸原理に従った、RAIDサブシステムのディスクストレージブロックのスナップショットを使用することによる、ローカル-リモートのデータ複製およびインスタントリプレイ機能500の概略図を示す。リモート複製replicationは、リモートシステムに対してボリュームデータを複製するサービスを行う。リモート複製では、ローカルとリモートとのボリュームを、可能な限り同期させた状態に保つことを試みる。一実施形態では、リモートのボリュームのデータが、ローカルのボリュームのデータの完全なコピーをミラーリングしていないこともあり得る。ネットワークの接続性コネクティビティおよびパフォーマンスに起因して、リモートのボリュームがローカルのボリュームと同期しない状態が引き起こされる場合もあり得る。データインスタントリプレイおよびデータインスタントフュージョンの方法の別の特徴は、スナップショットを、システムが動作している状態で検査のために使用できることである。生のデータlivedataをリアルタイムの検査に使用することができる。スナップショットおよびポイントインタイムコピーPITCデータインスタントリプレイの一例は、本発明の諸原理に従った、RAIDサブシステムのディスクストレージブロックのスナップショットを使用することである。スナップショットは、ボリュームへの書き込み動作を記録して、過去のボリュームの内容を見るためにビューを作成できるようにする。また、スナップショットは、ボリュームのそれまでのポイントインタイムコピーPointinTimeCopy特定の時にとられたコピー、PITCに対するビューを作成することによって、データリカバリのサポートを行う。スナップショットのコアは、スナップショットの作成、合体coalesce、管理、およびI/O動作を実現する。スナップショットは、ボリュームへの書き込みを監視し、ボリュームのビューを通してアクセスのためにポイントインタイムコピーPITCを作成する。スナップショットは、論理ブロックアドレスlogicalblockaddress、LBA再マッピングレイヤを、仮想化レイヤ内のデータパスへ追加する。これは、I/Oパス内の仮想LBAマッピングの別レイヤである。PITCは、すべてのボリューム情報をコピーしない場合もあり得、単に再マッピングで使用されるテーブルを変更するだけであり得る。スナップショットは、ボリュームデータについての変更を追跡し、それまでのポイントインタイムからのボリュームデータを見る機能を提供する。スナップショットは、この機能を、それぞれのPICTに対するデルタ書き込みのリストを維持することによって、行う。スナップショットは、PITCプロファイルのための複数の方法を提供するが、これは、アプリケーションにより開始されるもの、および時間により開始されるものを含む。スナップショットは、アプリケーションがPITCを作成するようにする機能を提供する。アプリケーションは、作成を、サーバ上のAPIを通して制御し、これはスナップショットAPIへと送られる。また、スナップショットは、時間プロファイルを作成する機能を提供する。スナップショットは、ジャーナル用システムの実装や、ボリュームへの書き込みのすべてのリカバリを行わない場合もあり得る。スナップショットは、PITCウィンドウ内の一つのアドレスへの最後の書き込みを保持するのみであり得る。スナップショットにより、ユーザは、例えば分や時間などの定められた短期間をカバーするPITCを作成することが可能とされる。スナップショットは、障害を取り扱うために、すべての情報をディスクに書き込む。スナップショットは、デルタ書き込みdeltawritesを含むボリュームデータページポインタを維持する。テーブルはマップをボリュームデータへ提供するものであり、これがなければボリュームデータへはアクセス不能であるため、テーブル情報はコントローラ障害の場合を取り扱わなければならない。ビューボリューム機能ボリュームを見る機能により、PITCへのアクセスが提供される。ビューボリューム機能は、アクティブなPITCを除き、そのボリューム内の任意のPITCに付加させることができる。PITCへの付加は、比較的迅速な動作である。ビューボリューム機能の用途は、検査、訓練、バックアップ、およびリカバリを含む。ビューボリューム機能は、書き込み動作を可能にし、その基礎とされている基礎的PITCの変更は行わない。一実施形態では、スナップショットは、ディスク空間を使用して、パフォーマンスを最適化し、使用を容易にするように設計されおり、それは下記のようである。スナップショットにより、ユーザ要求に対する応答時間が速くなる。ユーザ要求には、I/O、PITCの作成、ビューボリュームの作成/削除が含まれる。これを達成するために、スナップショットは、必要最小量よりも多くのディスク空間を使用してテーブル情報を保存する。I/Oについては、スナップショットは、ボリュームの現在の状態を要約して一つのテーブルにして、読み出しおよび書き込みの要求をすべて一つのテーブルで満たすことができるようにする。スナップショットは、通常のI/O動作に対する影響をできる限り低減する。第2に、ビューボリューム動作については、スナップショットは、メインボリュームのデータパスと同じテーブル機構を使用する。スナップショットは、コピーされるデータの量を最小化する。このためには、スナップショットは、それぞれのPITCについてのポインタのテーブルを維持する。スナップショットはポインタのコピーおよび移動を行うが、ボリューム上のデータの移動は行わない。スナップショットは、固定サイズのデータページを用いてボリュームの管理を行う。個々のセクタを追跡するには、一つの手頃なサイズのボリュームでも膨大な量のメモリが必要になる。セクタよりも大きなデータページを使用することにより、ある種のページは、別のページから直接に複製された情報の一部を含むことができる。スナップショットは、ボリューム上のデータ空間を使用して、データページテーブルを保存する。ルックアップテーブルは、コントローラ障害の後に複製される。ルックアップテーブルは、ページを割り当て、それをさらに分割する。スナップショットがコントローラ障害を取り扱うが、その際、一実施形態では、スナップショットを用いるボリュームが一つのコントローラ上で動作することが必要とされる。この実施形態ではコヒーレンシは必要ない。ボリュームへのすべての変更は、代替のコントローラによるリカバリのために、ディスクまたは信頼できるキャッシュへ記録される。コントローラ障害からのリカバリの際には、一実施形態では、スナップショット情報をディスクから読み取ることが必要である。スナップショットは、仮想RAIDインターフェースを使用して、ストレージへのアクセスを行う。スナップショットは、複数のRAID装置を単一のデータ空間として使用することができる。スナップショットは、ボリュームあたりn個のPITCおよびボリュームあたりm個のビューをサポートする。nおよびmに対する制限は、ディスク空間およびコントローラのメモリの関数となる。ボリュームおよびボリュームの割り当て/レイアウトスナップショットは、LBA再マッピングレイヤをボリュームに追加する。再マッピングは、I/O要求LBAおよびルックアップテーブルを使用して、アドレスをデータページへと変換する。図6に示すように、スナップショットを用いた提示されるボリュームは、スナップショットのないボリュームと同じふるまいをする。それは、線形LBA空間を有し、I/O要求を取り扱う。スナップショットは、RAIDインターフェースを使用してI/Oを行うものであり、複数のRAID装置を1つのボリュームに含める。一実施形態では、スナップショットボリュームに対するRAID装置のサイズは、提示されるボリュームのサイズではない。RAID装置により、スナップショットは、ボリューム内でデータページ用の空間を拡張することを可能とされる。新しいボリュームは、初めにスナップショットをイネーブルにしてあると、新しいデータページ用の空間を含めればよいだけである。スナップショットは、ボトムレベルのPITCに置くページのリストを作成しない。ボトムレベルPITCは、この場合には空である。割り当て時に、すべてのPITCページはフリーリスト上にある。初めにスナップショットをイネーブルにしたボリュームを作することにより、ボリュームが提示するよりも少ない物理空間を割り当て得る。スナップショットは、ボリュームへの書き込みを追跡する。本発明の一実施形態では、ヌルNULLボリュームは、ページプールまたはマトリックスへコピーおよび/または保存されず、これにより、ストレージ空間の使用の効率が高まる。一実施形態では、どちらの割り当て方式でも、PITCが、仮想NULLボリュームをリストの底部に置く。NULLボリュームに対する読み出しは、ゼロのブロックを返す。NULLボリュームは、サーバがそれまで書き込んでいないセクタを取り扱う。NULLボリュームへの書き込みは起こり得ない。ボリュームは、NULLボリュームを、書き込まれていないセクタに対する読み出しのために使用する。空きページの数は、ボリュームのサイズ、PITCの数、および予測されるデータ変化レートに依存する。システムは、所与のボリュームに対しての割り当てるページの数を決定する。データページの数は、時間が経つにつれて拡張される可能性がある。拡張により、予測されるよりも急速なデータの変化、より多くのPITC、またはより大きなボリュームを、サポートすることができる。新しいページはフリーリストへ追加される。フリーリストへのページの追加は自動的に行ってもよい。スナップショットは、ボリューム空間の管理のためにデータページを使用する。それぞれのデータページは数メガバイトのデータを含み得る。オペレーティングシステムを使用すると、ボリュームの同じ領域へ多くのセクタが書き込まれる傾向がある。メモリ要件からも、スナップショットがボリュームの管理のためにページを使用することが要求される。1テラバイトのボリュームの各セクタについて一つの32ビットポインタを維持すると、8ギガバイトのRAMが必要となり得る。異なるボリュームは異なるページサイズを有し得る。図7に、スナップショット構造の一実施形態を示す。スナップショットは、多くのオブジェクトをボリューム構造に付加する。付加されるオブジェクトとしては、PITC、アクティブなPITCへのポインタ、データページフリーリスト、子のビューボリューム、およびPITC合体オブジェクトがある。アクティブPITCAPポインタはボリュームにより維持される。APは、ボリュームに対する読み出しおよび書き込みの要求のマッピングを取り扱う。APは、ボリューム内のすべてのデータの現在の場所の要約一覧、summaryを含む。データページフリーリストは、ボリューム上の使用可能なページの追跡を行う。オプションの子ビューボリュームchildviewvolumeは、ボリュームPITCへのアクセスを提供する。ビューボリュームは、PITCへの書き込みを記録するためにそれ自体のAPを含むが、基礎となるデータの変更は行わない。1つのボリュームが複数の子ビューボリュームをサポートしてもよい。スナップショット合体オブジェクトは、以前のPITCを取り除く目的で2つのPITCを一時的にリンクする。PITCの合体は、データページの所有権を移動し、データページを解放することを含む。PITCは、そのPITCがアクティブであった間に書き込まれたページに対するテーブルおよびデータページを含む。PITCは、PITCが書き込み要求の受理を停止した時点の凍結タイムスタンプを含む。また、PITCは、何れの時間にPITCが合体することになるかを決めるTime-to-Liveタイムツーライブ、生きる時間値を含む。また、スナップショットは、ボリューム全体に対するデータページポインタの要約を、PITCが取られた時点で行って、読み出しおよび書き込みの予測可能なパフォーマンスを提供する。他の解決策は、最新のポインタを見つけるために複数のPITCを検査するために、読み出しを必要とし得る。こうした解決策では、テーブルキャッシングアルゴリズムが必要であるが、パフォーマンスは最低となる場合がある。また、本発明におけるスナップショットを要約することにより、テーブルの最悪のメモリ使用が低減される。その場合、テーブル全体をメモリへロードすることを必要とされ得るが、単一のテーブルだけをロードすることを必要とされ得る。要約一覧は、現在のPITCの所有するページを含むが、それまでのすべてのPITCからのページを含むことができる。PITCがどのページに書き込みを行うかを決定するために、それぞれのデータページについてのページ所有権を追跡する。また、一覧は、合体プロセスに対する所有権の追跡も行う。これを取り扱うために、データページポインタはページインデックスを含む。図8に、PITCのライフサイクルの一実施形態を示す。それぞれのPITCは、読み出し専用として記憶コミットされる前に、多数の下記の状態を経過する。1.テーブル作成-作成を行うと、テーブルが作成される。2.ディスクへのコミット記憶、commit-これは、PITCに対してディスク上にストレージを生成する。この時点でテーブルを書き込むことにより、テーブル情報の保存に必要な空間が、PITCが取られる前に割り当てられることが保証される。同時に、PITCオブジェクトもディスクへ記憶コミットされる。3.I/Oの受け入れ-これはPITCはアクティブPITCAPになっている。-ここでは、PITCは、ボリュームに対する読み出しおよび書き込みの要求を取り扱う。これは、テーブルへの書き込み要求を受理する唯一の状態である。PITCは、いまアクティブであるというイベントを生成する。4.ディスクへのテーブルの記憶-PITCはもはやAPではなく、もはやそれ以上のページを受理しない。新しいAPによる引き継ぎが行われている。この時点より後では、テーブルは、合体動作中に取り除かれない限り、変更されない。これは読み出し専用である。PITCは、この時点で、凍結され記憶されているというイベントを生成する。何れのサービスもそのイベントを聴取することができる。5.テーブルのメモリの解放リリース-テーブルが必要とするメモリを解放する。また、このステップは、変更がすべてディスクへと書き込まれていることを示すために、ログをクリアする。ボリュームまたはビューボリュームのためのトップレベルPITCは、アクティブPITCAPと呼ばれる。APは、ボリュームへのすべての読み出しおよび書き込みの要求を満たす。APは、そのボリュームに対しての唯一の、書き込み要求を受理できるPITCである。APは、ボリューム全体に対するデータページポインタの一覧を含む。APは、合体プロセスに関して、宛先destinationとなることはできるが、ソースsourceとなることはできない。宛先である場合、APは、所有するページの数を増加するが、データのビューは変更しない。ボリュームの拡張に関しては、APはボリュームとともに直ちに大きくなる。新しいページは、NULLボリュームを指す。APではないPITCは、ボリュームの拡張のために変更は必要ではない。それぞれのPITCは、入ってくるLBAを、基礎となるボリュームへのデータページポインタへとマッピングするテーブルを維持する。テーブルは、データページへのポインタを含む。テーブルは、提示される論理空間よりも多くの物理ディスク空間をアドレスする必要がある。図9に、マルチレベルインデックスを有するテーブル構造の一実施形態を示す。この構造は、ボリュームLBAを復号化してデータページポインタにする。各レベルでは、図9に示すように、アドレスの増加していくLSBlesssignificantbitを復号化する。このテーブルの構造により、高速のルックアップおよびボリュームの拡張の機能が提供される。高速ルックアップのために、マルチレベルインデックス構造は、テーブルを浅い状態に維持し、各レベルで複数のエントリをもつようにしている。このインデックスは、各レベルでアレイのルックアップを行う。ボリュームの拡張をサポートするため、マルチレベルインデックス構造により、拡張をサポートするための別のレイヤを追加することが可能になっている。この場合のボリュームの拡張は、上位レイヤへ提示されるLBAカウント計数の拡張であり、そのボリュームへ割り当てられるストレージ空間の実際の量ではない。マルチレベルインデックスは、ボリューム全体のデータページ再マッピングの一覧要約を含む。それぞれのPITCは、記憶されたポイントインタイム時特定の時の、このボリュームに対する完全な再マッピングリストを含む。マルチレベルインデックス構造は、テーブルのレベルに対して異なるエントリタイプを使用する。異なるエントリタイプは、情報をディスクから読み出す必要性や、情報をメモリに格納する必要性をサポートする。ボトムレベルのエントリは、データページポインタのみを含み得る。トップおよび中間のレベルのエントリは2つのアレイを含み、1つは次のレベルのテーブルエントリのLBAであり、そして、テーブルへのメモリポインタを含む。提示されるボリュームサイズが拡張する際に、以前のPITCテーブルのサイズは増やす必要はなく、また、テーブルを変更する必要もない。テーブルの中の情報は、読み出し専用であるので、変わらず、そして、拡張プロセスは、テーブルを、NULLページポインタを末尾に追加することによって、変更する。スナップショットは、以前のPITCからのテーブルを直接にユーザに提示しない。I/O動作があると、テーブルには、LBAをデータページポインタへマッピングすることが求められる。その場合、I/Oでは、データページポインタにデータページサイズを乗算して、基礎となるRAIDのLBAを得る。一実施形態では、データページサイズは、2のべき乗である。テーブルは、LBAの再マッピング、ページの追加、およびテーブルの合体のためのAPIを提供する。スナップショットは、PITCオブジェクトおよびLBAマッピングテーブルを保存するためにデータページを使用する。テーブルは、そのテーブルエントリに対するI/OのためにRAIDインターフェースへ直接にアクセスする。テーブルは、RAID装置に対してそのテーブルの読み出しおよび書き込みを行うときの変更を最小にする。変更がない場合には、テーブルの情報の読み出しおよび書き込みを、テーブルエントリ構造に対して直接に行うことが可能になる。これにより、I/Oのために必要となるコピーが低減される。スナップショットは、ディスク上のホットスポットの発生を防ぐために、変化ログを使用することができる。ホットスポットとは、ボリュームへの更新を追跡するために繰り返し使用される場所のことである。変化ログは、PITCテーブルへの更新、およびボリュームに関するフリーリストを記録する。リカバリ中には、スナップショットは変化ログを使用して、メモリ内APinmemoryAPおよびフリーリストfreelistの再作成を行う。図10にテーブルのリカバリの一実施形態を示し、これにより、メモリ内APと、ディスク上APondiskAPと、変化ログとの間の関係を示している。この図は、フリーリストに関しても同じ関係を示している。メモリ内APテーブルは、ディスク上APテーブルおよびログから再構築することができる。どのようなコントローラ障害の場合でも、APは、ディスク上APを読み出してそれにログ変化を適用することによって、再構築される。変化ログは、システムコンフィギュレーションに応じて、異なる物理資源を使用する。多重コントローラのシステムでは、変化ログは、ストレージのためにバッテリ-バックアップされたキャッシュメモリを頼りにしている。キャッシュメモリを使用することにより、スナップショットは、ディスクへのテーブル書き込みの数を減らし且つデータインテグリティを維持することができる。変化ログは、リカバリのためにバックアップコントローラに対しての複製を行う。単一コントローラのシステムでは、変化ログは、すべての情報をディスクへ書き込む。これには、ディスク上のログの場所にホットスポットを発生させるという副作用がある。これにより、幾つもの変化を単一のデバイスブロックへ書き込むことが可能とされる。スナップショットは、定期的に、PITCテーブルおよびフリーリストをディスクへ書き込んで、ログにおけるチェックポイントの作成およびそのクリアを行う。この期間は、PITCへの更新の数に応じて変わり得る。合体プロセスは変化ログを使用しない。スナップショットのデータページI/Oは、要求がデータページ境界内に収まることを必要とし得る。スナップショットは、ページ境界にまたがるI/O要求にであった場合に、その要求を分割する。次いで、スナップショットは、その要求を要求ハンドラへと渡す。書き込みおよび読み出しのセクションは、I/Oがページ境界内に収まることを仮定している。APは、LBA再マッピングを提供してI/O要求を満たす。APはすべての書き込み要求を満たす。スナップショットは、所有ページと非所有ページに対する2つの異なる書き込みシーケンスをサポートする。異なるシーケンスにより、テーブルへのページの追加が可能になる。図11に、所有ページシーケンスおよび非所有ページシーケンスがある書き込みプロセスの一実施形態を示す。所有ページシーケンスでは、プロセスは以下のものを含む。1テーブルマッピングを見つける。2所有の書き込みをページングするPageOwnedWrite-LBAを再マッピングし、データをRAIDインターフェースへ書き込む。以前に書き込まれたページは、純粋な書き込み要求である。スナップショットは、データをそのページに書き込んで、現在の内容を上書きする。APの所有するデータページだけが書き込まれる。他のPITCの所有するページは、読み出し専用である。非所有ページシーケンスでは、プロセスは以下のものを含む。1テーブルマッピングを見つける。2以前のページを読み出す-そのデータページに対する読み出しを行い、書き込み要求と読み取ったデータとでページ全部が出来上がるようにする。これが、コピーオンライトcopyonwriteプロセスの開始となる。3データを組み合わせる-データページの読み出しおよび書き込みの要求のペイロードを、単一の連続するブロックに入れる。4リスト割り当てを自由にする-新しいデータページポインタを、フリーリストから得る。5組み合わせたデータを、新しいデータページへ書き込む。6新しいページ情報をログへ記憶する。7テーブルを更新する-テーブル内のLBA再マッピングを変更して、新しいデータページポインタを反映させる。これでデータページはPITCにより所有される。ページを追加するには、そのページがテーブルに追加されるまで、読み出しおよび書き込みの要求を妨げることが必要であり得る。スナップショットは、テーブルの更新をディスクへ書き込み、ログの複数のキャッシュ記憶されたコピーを維持することにより、コントローラのコヒーレンシを達成する。読み出し要求に関して、APはすべての読み出し要求を満たす。読み出し要求は、APテーブルを用いて、LBAを、そのデータページのLBAへ再マッピングする。再マッピングされたLBAはRAIDインターフェースへと渡されて、その要求が満たされる。ボリュームは、それまでにそのボリュームへ書き込まれていないデータページに対する読み出し要求を満たすことができる。こうしたページは、PITCテーブルにおいてNULLアドレスすべて1でマークされている。このアドレスに対する要求は、NULLボリュームにより満たされ、一定のデータパターンを返す。異なるPITCテーブルの所有するページは、ページ境界にまたがる読み出し要求を満たすことができる。スナップショットは、NULLボリュームを使用して、以前に書き込まれていないデータページに対する読み出し要求を満たす。これは、それぞれのセクタ読み出しに対して、すべてゼロを返す。これは、RAID装置も、割り当てられた空間もない。NULLボリュームに対する読み出しについてのデータ要件を満たすために、すべてゼロであるブロックをメモリ内に置いておくことが予期される。すべてのボリュームは、読み出し要求を満たすためにNULLボリュームを共用する。一実施形態では、合体プロセスが、PITCと、その所有ページの一部とをボリュームから取り除く。PITCを取り除くと、新しい差異を追跡するために使用可能な空間がより多く作成される。合体では、2つの隣接するテーブルを差異があるかどうか比較し、新しい差異だけを維持する。合体は、ユーザによるコンフィギュレーションに従って、定期的にまたは手動で起きる。このプロセスは、2つのPITC、即ち、ソースと宛先とを含む。一実施形態での、適格なオブジェクトについての規則は、次のようなものである。1ソースは、宛先に対して、以前のPITCでなければならない-ソースは宛先より前に作成されなければならない。2宛先は、同時にソースであってはならない。3ソースは、複数のPITCにより参照されてはならない。複数の参照は、ビューボリュームがPITCから作成されたときに、起きる。4宛先は、複数の参照をサポートし得る。5APは宛先であり得るが、ソースではない。合体プロセスは、すべての変更をディスクへ書き込むものであり、コヒーレンシを必要としない。コントローラが故障した場合に、ボリュームがPITC情報をディスクからリカバリし、合体プロセスを再開する。このプロセスは、2つのPITCを合体のためにマークするものであり、以下の諸ステップを含む。1ソースの状態が合体のソースに設定される-この状態は、コントローラ障害のリカバリのために、ディスクへ記憶される。この時点で、ソースはもはやアクセスされないが、それは、そのデータページが無効であるからである。データページがフリーリストへ返されるか、または所有権が宛先へ移される。2宛先の状態が合体の宛先へ設定される-この状態は、コントローラ障害のリカバリのためにディスクへ記憶される。3テーブルのロードおよび比較を行う-このプロセスは、データページポインタを移動させる。解放されたデータページは、直ちにフリーリストに追加される。4宛先の状態が正常に設定される-プロセスが完了する。5リストを調整する-ソースのnext次ポインタのprevious以前を、宛先へと変更する。これにより、ソースがリストから効率よく取り除かれる。6ソースを解放する-制御の情報に使用された何れのデータページをも、フリーリストへ戻す。上述のプロセスは、2つのPITCの組合せをサポートしている。合体を、単一のパスにおいて複数のPITCの削除と複数のソースの作成とを行うように設計できることが、当業者には理解されている。図2に示すように、ページプールは、そのページプールに関連するすべてのボリュームが使用するように、データページフリーリストを維持する。フリーリストマネージャは、ページプールからのデータページを使用して、フリーリストを永久的ストレージへ記憶する。フリーリストの更新を引き起こすものは幾つもあり、書き込みプロセスはページを割り当て、制御ページマネージャはページを割り当て、合体用プロセスはページを返す。フリーリストは、それ自体をある閾値のところで自動的に拡張するためのトリガを維持することができる。このトリガは、ページをページプールへ追加するためのページプール拡張方法を使用する。自動的な拡張は、ボリュームポリシの一機能とすることもできる。重要度の高いデータボリュームには拡張を可能にし、重要度の低いボリュームは強制的に合体させる。ビューボリュームは、以前のポイントインタイムへのアクセスを提供し、正常のボリュームI/O動作をサポートする。PITCは、PITC間の差異を追跡し、ビューボリュームは、PITC内に含まれる情報へユーザがアクセスできるようにする。ビューボリュームはPITCから分岐する。ビューボリュームは、リカバリ、検査、バックアップ動作などをサポートする。ビューボリュームの作成は、データコピーを必要としないので、ほぼ瞬間的に生じる。ビューボリュームは、ビューボリュームへの書き込みをサポートするために、それ自体のAPが必要になり得る。ボリュームの現在の状態から取られたビューでは、APを現在のボリュームのAPからコピーすることができる。APを用い、ビューボリュームは、ビューボリュームのへの書き込み動作を、基礎となるデータを変更せずに行うことを可能にする。OSは、データを使用するために、ファイルシステムまたはファイルの再構築を必要とし得る。ビューボリュームは、APおよび書き込まれたデータページに対して親ボリュームから空間を割り当てる。ビューボリュームは、関連するRAID装置情報を有さない。ビューボリュームを削除すると、空間が解放され親ボリュームへ戻される。図12に、スナップショットを用いてのあるボリュームに関する推移を示す例示的なスナップショット動作を示す。図12は、10ページをもつボリュームを示す。それぞれの状態ステートは、ボリュームに対する読み出し要求遂行ReadRequestFulfillmentリストを含む。影を付けたブロックは、所有データページポインタを示す。図の左側即ち、初期状態から図の中央への推移は、ページ3および8への書き込みを示している。ページ3への書き込みには、PITCIAPへの変更が必要である。PITCIは、新ページ書き込み処理に従い、ページ3をテーブルへ追加する。PITCは、変更されていない情報をページJから読み出し、ドライブページBを使用してそのページを保存する。このPITCのページ3へのこれ以降のすべての書き込みは、ページを移動させずに取り扱われる。ページ8への書き込みでは、ページへの書き込みに関する第2の場合を示す。PITCIはすでにページ8を含んでいるため、PITCIは、ページ8のそのデータのその部分へ書き込む。この場合、それはドライブページCに存在する。図の中央から図の右側即ち、最終状態への推移は、PITCIIとIIIとの合体を示す。スナップショットの合体は、それぞれ、古いページを削除すること、および両方のPITCにおけるすべての変更を維持することを含む。両方のPITCがページ3および8を含む。プロセスは、PITCIIからのの新しい方のページを保ち、PITCIIIからのページを解放し、ページAおよびDをフリーリストへ返す。スナップショットは、フリーリストおよびPITCテーブル情報を保存するために、ページプールからデータページの割り当てを行う。制御ページの割り当ては、データページを、オブジェクトに必要とされるサイズに合うように、更に細かく割り当てるsuballocate。ボリュームは、制御ページ情報の先頭に対するページポインタを含む。このページから、他のすべての情報を読み出すことができる。スナップショットは、特定の時間間隔で、使用中のページの数を追跡する。これにより、スナップショットは、いつユーザがシステムに更なる物理ディスク空間を追加する必要があるかを予測して、スナップショットが不足するのを防ぐ。データプログレッション本発明の一実施形態では、データプログレッションDP、dataprogressionを使用して、データを、徐々に、適切なコストのストレージ空間へと移動させる。本発明により、ユーザは、ドライブが実際に必要であるときにドライブの追加を行える。これにより、ディスクドライブのコスト全体が著しく低減される。データプログレッションでは、最近アクセスされていないデータおよび履歴のスナップショットデータを、より安価なストレージへ移動させる。最近アクセスされていないデータについては、最近アクセスされていないページがに対してのストレージのコストを徐々に低減する。データは、コストが最も低いストレージへ直ちに移動させない。履歴のスナップショットデータについては、読み出し専用ページを、例えばRAID5などのようなより効率のよいストレージ空間へ移動させ、また、そのページにもはやボリュームからアクセス可能でない場合には、最も安価なストレージへ移動される。本発明のデータプログレッションの他の利点は、現在アクセス中のデータへの高速のI/Oアクセスを維持すること、および高速であるが高価なディスクドライブを購入する必要性を減らすことを含む。データプログレッションでは、動作時に、ストレージのコストを、物理メディアのコストおよびデータ保護に使用されるRAID装置の効率を用いて、判定する。また、データプログレッションでは、ストレージ効率を判定し、それに従ってデータの移動を行う。例えば、データプログレッションは、物理ディスク空間をより効率よく使用するために、RAID10装置をRAID5装置へと変換することができる。データプログレッションでは、アクセス可能なデータを、サーバが現在読み出しまたは書き込みできるデータと定義している。データプログレッションでは、アクセス可能性accessibilityを使用して、ページが使用すべきストレージのクラスを決定する。ページは、履歴PITCに属する場合には、読み出し専用である。サーバが、一番最近のPITCにおいてそのページを更新していない場合には、そのページはまだアクセス可能である。図17に、データプログレッション動作におけるアクセス可能なデータページの一実施形態を示す。アクセス可能なデータページは、以下のカテゴリに分かれる。アクセス可能な、最近アクセスされたもの-これらは、ボリュームが最もよく使用しているアクティブページである。アクセス可能な、最近アクセスされていないもの-最近使用されていない読み出し/書き込みページ。履歴のアクセス可能なもの-ボリュームによる読み出しが行える読み出し専用ページ--スナップショットボリュームに当てはまる。履歴のアクセス不能なもの-ボリュームによって現在アクセスされていない読み出し専用データページ--スナップショットボリュームに当てはまる。スナップショットは、こうしたページをリカバリ目的で維持し、ページは、一般に、可能な限り低コストのストレージに置かれる。図17に、スナップショットボリューム用の様々な所有ページを有する3つのPITCを示している。動的容量のボリュームは、PITCCだけで代表させてある。すべてのページは、アクセス可能であり読み出し/書き込みである。ページは異なるアクセス時間を有し得る。下記のテーブルは、様々なストレージ装置を、効率の高くなる順または金銭的な支出の減る順に示す。ストレージ装置のリストは、より遅い書き込みI/Oアクセスの一般的な順序にも従い得る。データプログレッションでは、論理保護空間の効率をRAID装置の総物理空間で割ったものを計算する。RAID5の効率は、ストライプのドライブ数が増えると高くなる。ストライプのディスク数が増えると、フォールトドメインが増大する。ストライプのドライブ数の増加により、RAID装置の作成に必要なディスクの最小数も増える。一実施形態では、データプログレッションは、9ドライブを超えるRAID5ストライプサイズを使用しない。なぜなら、フォールトドメインサイズが増え、効率の増加が限られるからである。データプログレッションは、スナップショットページサイズの整数倍であるRAID5ストライプサイズを使用する。これにより、データプログレッションは、ページをRAID5へと移動させるときにフルストライプ書き込みを行えるようになり、移動の効率を高める。すべてのRAID5コンフィギュレーションは、データプログレッションの目的で、同じ書き込みI/O特性を有する。例えば、2.5インチ6.5cmFCディスク上のRAID5は、そうしたディスクの性能を効率よく使用しない可能性がある。この組合せを防ぐために、データプログレッションは、あるRAIDタイプが特定のディスクタイプ上で動作しないようにする機能をサポートする必要がある。また、データプログレッションのコンフィギュレーションは、システムがRAID10またはRAID5の空間を使用しないようにすることもできる。ディスクのタイプを次のテーブルに示す。データプログレッションは、システム内のドライブに相対的なディスクドライブの分類を自動的に行う機能を含む。システムは、ディスクを検査して、そのパフォーマンスをシステム内の他のディスクと比較して決定する。より速いディスクは高評価区分へと分類され、より遅いディスクは低評価区分へと分類される。ディスクがシステムへ追加されると、システムは、ディスクの評価分類のバランスを自動的にとり直す。このアプローチでは、決して変化することのないシステムと、新しいディスクが追加されると頻繁に変化するシステムとの双方を取り扱う。この自動分類は、複数のドライブタイプを同じ評価区分内に入れることがある。ドライブの評価がかなり近接しているものと判定された場合には、その評価は同じになる。一実施形態では、システムは次のドライブを含む。即ち、高-10KFCドライブ低-SATAドライブ15KFCドライブを追加すると、データプログレッションは、ディスクを自動的に再分類し、10KFCドライブを降格させる。この結果として次の分類となる。高-15KFCドライブ中-10KFCドライブ低-SATAドライブ別の実施形態では、システムには次のドライブタイプを有し得る。高-25KFCドライブ低-15KFCドライブ従って、15KFCドライブは評価の低い区分として分類され、これに対して15KFCドライブは評価の高い区分として分類される。SATAドライブがシステムに追加された場合、データプログレッションは、ディスクを時間的に再分類する。その結果として次の分類となる。高-25KFCドライブ中-15KFCドライブ低-SATAドライブデータプログレッションは、ウォーターフォールwaterfallプログレッションを含むことができる。典型的に、ウォーターフォールプログレッションはデータをより安価な資源へ移動させるが、その移動は、その資源が完全に使用されたときにのみ行う。ウォーターフォールプログレッションは、最も高価なシステム資源の使用を効率的に最大化する。システムのコストの最小化も行う。安いディスクを最も低いプールに追加すると、ボトム底部において、より大きなプールが作成される。典型的なウォーターフォールプログレッションは、RAID10空間を使用し、次いで、RAID5空間などのような、RAID空間の次のものを使用する。このことにより、ウォーターフォールが次のクラスのディスクのうちのRAID10へ直接向かうように強制される。代替例として、データプログレッションは、図24に示すような混合RAIDウォーターフォールプログレッションを含んでもよい。この代替のデータプログレッション方法により、ディスク空間およびパフォーマンスを最大化する問題が解決され、ストレージは同じディスククラスにおいて更に効率のよい形式へと変形できる。また、この代替方法では、RAID10およびRAID5が或るディスククラスの資源全体を共用するという要件をサポートする。これには、あるRAIDレベルがあるクラスのディスク用に使用する、ディスク空間の一定の割合をコンフィギュレーションすることが必要であることがある。従って、この代替のデータプログレッション方法では、高価なストレージの使用が最大化され、かつ、別のRAIDクラスが共存する余地を残す。また、混合RAIDウォーターフォールでは、ストレージが限られているときのみ、ページをより安価なストレージへと移動させる。ディスク空間全体のうちの或るパーセンテージなどのような閾値により、特定のRAIDタイプのストレージの量が制限される。これにより、システムにおける最も高価なストレージの使用が最大化される。ストレージがその限度に近づくと、データプログレッションは、ページを、コストのより低いストレージへと自動的に移動させる。データプログレッションは、書き込みスパイクに対するバッファを提供することができる。上述のウォーターフォール方法では、一部の場合のように、ページをコストが最も低いストレージへと直ちに移動させ得るということが理解され、履歴およびアクセス不能のページをより安価なストレージ上へ適時に移動させる必要性があり得る。また、履歴ページをより安価なストレージへ直ちに移動させることもできる。図18に、データプログレッションのプロセス1800の流れ図を示す。データプログレッションは、システムのそれぞれのページを、そのアクセスのパターンおよびストレージのコストに関して絶えず検査して、移動させるべきデータページがあるかどうか判定する。また、データプログレッションは、ストレージがその最大割り当て量に達しているかどうかを判定することもできる。データプログレッションのプロセスは、そのページがどのボリュームからもアクセス可能かどうかを判定する。プロセスは、履歴に付加されている各ボリュームについてのPITCを検査して、そのページが参照されているかどうかを判定する。そのページがアクティブに使用中である場合には、そのページは昇格させるに又は降格を遅くするに望ましい。そのページがどのボリュームからもアクセス可能でない場合には、使用可能な最も低コストのストレージへ移動させられる。また、データプログレッションは、PITCが期限切れになる前に時間を計算に入れる。スナップショットで、PITCがまもなく期限切れになるようにスケジュールしている場合には、ページのプログレッションは行わない。ページプールがアグレッシブモードで動作中の場合には、ページのプログレションが行われ得る。データプログレッションの最近アクセス検出recentaccessdetection、最近されたアクセスの検出では、ページの昇格動作から一塊の活動を取り除く必要がある。データプログレッションでは、読み出しと書き込みのアクセス追跡を分離している。これにより、データプログレッションは、アクセス可能であるRAID5装置上のデータを保持することが可能とされる。ウイルスのスキャンや報告などのような動作は、データを読み出すのみである。データプログレッションは、ストレージが残り少なくなっているときに、最近アクセスrecentaccessの資格を変更する。これにより、データプログレッションは、ページの降格をよりアグレッシブに行えるようになる。また、これは、ストレージが残り少なくなっているときに、システムをボトム底の方から詰めていくのに役立つ。データプログレッションは、システム資源が少なくなるとデータページをアグレッシブ積極的に移動させることができる。より多くのディスクまたはコンフィギュレーションの変更は、こうした場合のすべてでやはり必要である。データプログレッションは、時間のない状況においてシステムが動作し得る時間の量を延ばす。データプログレッションは、システムをできるだけ長く動作可能に保つように試みる。その時間とは、そのすべてのストレージクラスの空間がなくなるときである。RAID10空間が残り少なくなっており、使用可能なディスク空間全体が残り少なくなっている場合には、データプログレッションは、RAID10ディスク空間を取り上げて、より効率のよいRAID5へと移動させることができる。これにより、システムの全体容量が、書き込み性能を犠牲にして、増加する。より多くのディスクはやはり必要である。特定のストレージクラスが完全に使用された場合、データプログレッションは、受け入れ可能でないページを借りてシステムを動作させ続けることができる。例えば、あるボリュームが、RAID10―FCを、そのアクセス可能情報用に使用するようにコンフィギュレーションされている場合に、より多くのRAID10-FC空間が使用可能になるまで、RAID5-FCまたはRAID10-SATAからページを割り当てる。また、データプログレッションは、システムの知覚される容量を増加させるための圧縮をサポートする。圧縮が使用されるのは、アクセスされていない履歴ページに対して、またはリカバリ情報の記憶のためにである。圧縮は、ストレージコストの最下部近くの別のクラスのストレージとして現れる。図25に示すように、ページプールは、本質的に、フリーリストおよび装置情報を含む。ページプールは、複数のフリーリスト、強化されたページ割り当て方式、およびフリーリストの分類をサポートする必要がある。ページプールは、ストレージのクラスごとに別々のフリーリストを維持する。この割り当て方式により、ページを多くのプールのうちの1つから割り当て、且つ、許可される最小または最大のクラスを設定する。フリーリストの分類は、装置のコンフィギュレーションに由来する。それぞれのフリーリストは、統計の収集および表示のためにそれ自体のカウンタを提供する。また、それぞれのフリーリストは、ストレージ効率の統計の収集のためのRAID装置効率情報を提供する。一実施形態では、装置リストには、ストレージクラスのコストを追跡する更なる機能が必要であり得る。組合せにより、ストレージのクラスが決定される。これが起きるのは、ユーザが、コンフィギュレーションしたクラスの粒度がより荒いまたは細かいものであることを希望する場合である。図26に、高性能のデータベースの一実施形態を示しており、ここでは、すべてのアクセス可能なデータは、最近アクセスされていない場合でも、2.5FCドライブ上にある。アクセス不能な履歴データは、RAID5ファイバチャネルへ移動される。図27は、MRI画像ボリュームの一実施形態を示しており、ここでは、アクセス可能なストレージは、この動的なボリューム用のSATARAID10およびRAID5である。画像が最近アクセスされていない場合、画像はRAID5へ移動される。その場合、新しい書き込みは、初めはRAID10へ向かう。図19は、圧縮されたページレイアウトの一実施形態を示す。データプログレッションは、圧縮を、固定サイズのデータページを更に細かく割り当てることによって、実装する。更に細かい割り当てsuballocation、サブアロケーションの情報は、ページの空きの部分、およびページの割り当て済みの部分の場所を追跡する。データプログレッションは、圧縮の効率を予測することはできないが、そのサブアロケーション範囲内で可変サイズのページを取り扱うことができる。圧縮されたページは、CPUの性能に著しく影響することがある。書き込みアクセスの場合、圧縮されたページは、ページ全体の圧縮解除および再圧縮が必要となるはずである。従って、アクティブにアクセスされているページは、圧縮されず、非圧縮の状態に戻される。書き込みは、ストレージが極度に限られた状況で必要となり得る。PITC再マッピングテーブルは、サブアロケーション情報を指し、圧縮されているページを示すようにマークされる。圧縮されたページにアクセスするには、非圧縮のページよりも高いI/Oカウントが必要になり得る。アクセスには、実際のデータの場所を取り出すために、サブアロケーション情報の読み出しが必要になる。圧縮されたデータは、ディスクから読み出し、プロセッサで圧縮解除することができる。データプログレッションでは、圧縮は、ページ全体のうちの一部を圧縮解除できるようにすることが必要とされ得る。これにより、データプログレッションの読み出しアクセスは、そのページの小さな部分のみの圧縮解除を行える。読み出しキャッシュの先読み機能は、圧縮の遅延に対して役立ち得る。一つの圧縮解除で、幾つものサーバI/Oを取り扱うことができる。データプログレッションは、圧縮の候補として適さないページにマークし、それによって、或るページの圧縮を続けて試みないようにする。図20に、本発明の諸原理に従った、高レベルのディスクドライブシステムにおけるデータプログレッションの一実施形態を示す。データプログレッションは、ボリュームの外面的な振る舞いやデータパスの動作を変更しない。データプログレッションは、ページプールへの変更を必要とし得る。ページプールは、本質的に、フリーリストおよび装置情報を含む。ページプールは、複数のフリーリスト、強化されたページ割り当て方式、およびフリーリストの分類をサポートする必要がある。ページプールは、ストレージのそれぞれのクラスに対して個々のフリーリストを維持する。割り当て方式は、許可される最小および最大のクラスを設定しつつ、ページが多くのプールのうちの1つから割り当てられるようにする。フリーリストの分類は、装置のコンフィギュレーションに由来することができる。それぞれのフリーリストは、統計の収集および表示のためにそれ自体のカウンタを提供する。また、それぞれのフリーリストは、ストレージの効率の統計の収集のためにRAID装置効率情報を提供する。PITCは、移動の候補を識別し、その移動のときには、アクセス可能なページへのI/Oを妨げる。データプログレッションは、候補に関してPITCを継続的に検査する。ページのアクセス可能性は、サーバI/O、新しいスナップショットページ更新、およびビューボリュームの作成/削除に起因して、継続的に変化する。また、データプログレッションは、ボリュームのコンフィギュレーションの変更を継続的に検査し、ページのクラスおよびカウントの現在のリストをまとめあげる。これにより、データプログレッションは、そのまとめ一覧を評価し、移動するページがあるかを判定できる。それぞれのPITCは、ストレージの各クラスに使用されるページの数に関するカウンタを提示する。データプログレッションは、この情報を使用して、閾値に達したときにページを移動させるための良い候補になるPITCを識別する。RAIDは、ディスクのコストに基づいて、1組のディスクから装置を割り当てる。また、RAIDは、装置または潜在的な装置の効率を取り出すAPIを提供する。また、これは、書き込み動作に必要なI/Oの数についての情報を返す必要がある。また、データプログレッションは、また、サードパーティのRAIDコントローラをデータプログレッションの一部として使用するために、RAIDNULLを必要とし得る。RAIDNULLは、ディスク全体を消費し得、単にパススルーレイヤとして働き得る。また、ディスクマネージャは、ディスク分類を自動的に決定し保存することができる。ディスク分類を自動的に決定するには、SCSIイニシエータへの変更が必要となり得る。上述の説明および図面から、ここに示し説明した特定の諸実施形態は、もっぱら例示を目的としており、本発明の範囲を限定するものではないことが当業者には理解されよう。本発明を他の特定の形式で実施することは、その趣旨または本質的な諸特徴から逸脱することなく行えることが当業者には理解されよう。特定の諸実施形態の詳細への言及は、本発明の範囲を限定するものではない。