(57)【要約】【課題】システムユーザのデータアクセス要求と協調して、ＲＡＩＤ記憶システム内のスナップデータの分岐を管理する改良されたＲＡＩＤコントローラを提供する。【解決手段】データを記憶するように構成されたメモリ（１２０）と、ＲＡＩＤコントローラ（１１６）に連結されたデータ記憶ディスクアレイ（１２４）にＲＡＩＤコントローラを使用してアクセスするレートを測定するように構成された監視電子回路（１１８）と、メモリおよび監視電子回路に連結され、コンピュータからの対応する命令に応答して、アレイ内の異なるＲＡＩＤレベルにおけるデータにアクセスするように構成された回路と、を備える。【選択図】図１
2004127274.tif 000002
【特許請求の範囲】
【請求項１】
　ＲＡＩＤコントローラであって、
　データを記憶するように構成されたメモリと、
　前記コントローラを使用して、前記コントローラに連結されたデータ記憶ディスクのアレイにアクセスするレートを測定するように構成された監視電子回路と、
　前記メモリおよび前記監視電子回路に連結され、コンピュータからの対応する命令に応答して、前記アレイ内の異なるＲＡＩＤレベルにおけるデータにアクセスするように構成された回路と、を備え、該データにアクセスするように構成された回路は、前記コンピュータからの対応する命令に応答して前記アレイ中の前記データに関連するポインタを選択的に構成するようにさらに構成され、また、前記測定に応答してデータ変更動作を予測するようにさらに構成され、また、前記予測に応答して、前記メモリを使用して、前記アレイ内のあるＲＡＩＤレベル中の前記データの一部を前記アレイ内の別のＲＡＩＤレベルにバックグラウンド動作として選択的にコピーするようにさらに構成された、ＲＡＩＤコントローラ。
【請求項２】
　前記データにアクセスするように構成された回路は、前記コピーされたデータに対応する新しいポインタを選択的に作成するようにさらに構成された請求項１記載のＲＡＩＤコントローラ。
【請求項３】
　前記監視電子回路は、前記アレイ中の空き領域の量を特定するようにさらに構成され、前記データにアクセスするように構成された回路は、前記予測および前記特定に応答して前記コピーを行うようにさらに構成された請求項１記載のＲＡＩＤコントローラ。
【請求項４】
　前記データにアクセスするように構成された回路は、前記アレイのあるＲＡＩＤレベル中の前記データに対する保護状態を選択的に呼び出し、前記予測および前記保護状態に応答して前記選択的なコピー動作を行うようにさらに構成された請求項１記載のＲＡＩＤコントローラ。
【請求項５】
　前記データにアクセスするように構成された回路は、前記コンピュータからの対応する命令に応答して前記コピーデータを変更するようにさらに構成された請求項１記載のＲＡＩＤコントローラ。
【請求項６】
　データ記憶ディスクのアレイを管理するシステムであって、データ記憶ディスクのアレイに連結されて連携する請求項１記載のＲＡＩＤコントローラを備えたシステム。
【請求項７】
　データ記憶システムを管理する方法であって、
　データを記憶するように構成されたデータディスクのアレイを設けることと、
　前記アレイに連結されたＲＡＩＤコントローラを設けることと、
　該ＲＡＩＤコントローラに連結されたユーザインタフェースコンピュータを設けることと、
　該ユーザインタフェースコンピュータを使用してアプリケーションプログラムを実行することと、
　前記アプリケーションプログラムおよび前記ＲＡＩＤコントローラを使用して前記アレイ内に記憶されているデータを読み出すことと、
　前記ＲＡＩＤコントローラを使用して、前記読み出されたデータに対応するポインタを作成(assemble)して記憶することと、
　前記アプリケーションプログラムおよび前記ＲＡＩＤコントローラを使用して、前記対応するポインタにより前記アレイ内の前記データにアクセスすることと、
　前記ＲＡＩＤコントローラを使用して前記アクセスのレートを測定することと、
　前記ＲＡＩＤコントローラを使用して、前記測定に応答して前記アレイ内のあるＲＡＩＤレベル中の特定のデータに対するデータ変更動作を予測することと、
　前記ＲＡＩＤコントローラを使用して、前記予測に応答して前記アレイ内の別のＲＡＩＤレベルに前記特定のデータを選択的にコピーすることと、
　前記ＲＡＩＤコントローラを使用して前記アレイ内の前記コピーデータに対して前記データ変更動作を行うことと、を含み、前記コピー動作は前記ＲＡＩＤコントローラを使用してバックグラウンド動作として行われる方法。
【請求項８】
　前記ＲＡＩＤコントローラを使用して前記コピーデータに対応する別のポインタを選択的に作成することをさらに含む請求項７記載の方法。
【請求項９】
　前記特定のデータに保護状態を選択的に呼び出すことと、前記予測および前記保護状態に応答して前記コピー動作および前記データ変更を選択的に行うことと、をさらに含む請求項７記載の方法。
【請求項１０】
　前記ＲＡＩＤコントローラを使用して、前記ユーザインタフェースコンピュータで実行されている前記アプリケーションからの命令に応答して、前記特定のデータまたは前記コピーデータを選択的に読み出すことをさらに含む請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、データ記憶システムおよび方法に関する。特に、本発明は、コンピュータアクセス可能記憶アレイ内のデータを管理するシステムおよび方法に関する。
【背景技術】
【０００２】
　コンピュータベースのデータ記憶にディスクアレイが使用されることが知られている。ディスクアレイの１つのカテゴリが、ドライブ冗長アレイ（ＲＡＩＤ）である。ＲＡＩＤシステム内では、様々なレベルのデータ記憶冗長性を利用して、データ破損時またはディスク故障時に記憶されていたデータを再構築することができる。こういった様々なタイプの冗長記憶戦略はＲＡＩＤレベルと呼ばれる。
【０００３】
　たとえば、ＲＡＩＤレベル１は「ミラーリング法」とも呼ばれ、完全な冗長性を持たせて記憶されたデータを定義し、通常、すべてのデータセットのコピーに独立して同時にアクセスすることが可能である。ＲＡＩＤレベル６は、「パリティ法」とも呼ばれ、排他的論理和演算によって生成されるビットパリティ情報を利用してパリティデータセットを作成するデータ記憶を定義する。パリティデータセットは、別の排他的論理和演算を利用して元データ（すなわち、今は破損している）を再構築することができる。対比すると、ＲＡＩＤレベル１が同じデータセットの複数のコピーに相対的に高速な同時アクセスを提供する一方で、ＲＡＩＤレベル６はＲＡＩＤレベル１よりも高い記憶媒体効率を提供する。このため、ＲＡＩＤレベル１は、レベル６と比較して「高パフォーマンス」または「高い」ＲＡＩＤレベルとみなされる。
【０００４】
　ＲＡＩＤレベル１記憶装置のパフォーマンスのほうが高いため、物理的な記憶資源が許す限り、最も頻繁にアクセスされるデータをＲＡＩＤレベル１に保持することが望ましい。この目標に向けて、ＲＡＩＤ管理システムによっては、頻繁にアクセスされるデータをＲＡＩＤレベル１記憶装置に移動させ、あまり頻繁にアクセスされないデータをＲＡＩＤレベル６（または他のＲＡＩＤレベル）にシフトする技法を使用するものがある。ＲＡＩＤデータ記憶については、米国特許第５，３９２，２４４号および同第５，６６４，１８７号に詳細に考察されている。
【０００５】
　多くのコンピュータシステムに記憶される膨大な量のデータ、ならびにそのデータへの増える一方のアクセス要求により、システム開発者は、データへの高速マルチユーザアクセスを提供する方法を追求するように迫られている。一技法では、ポインタ（すなわち、マッピング）システムを利用して、記憶媒体内のデータをポイントする。ソフトウェアアプリケーションは、ポインタを利用して記憶システム内の関連データにアクセスする。ポインタシステムは、様々なＲＡＩＤレベル記憶と併せて使用することができる。
【０００６】
　ＲＡＩＤデータ記憶では、最近書き込みが行われたデータブロックを追跡することができる。この最も新しく書き込みが行われたブロックセットは、「書き込みワーキングセット」と呼ばれる。これらデータブロックへのポインタはメモリに保持される。書き込みワーキングセットを構成するデータブロックは、物理的な記憶装置に保持される。書き込みワーキングセットは、物理的な記憶装置に最も新しく書き込みが行われたブロックのマッピングを行う。このセットを構成するデータブロックは、両方のＲＡＩＤレベルにあることができる。すなわち、書き込みワーキングセットの一部であるブロックによっては、ＲＡＩＤレベル６にあるものもあり、またＲＡＩＤレベル１にあるものもある。もちろん、すべてのデータブロックがＲＡＩＤレベル６またはＲＡＩＤレベル１のいずれか一方にある場合もあり得る。どんな場合でも、書き込みワーキングセットを保持する目的は、最も新しく書き込みが行われたデータブロックへのポインタのリストを実現して、将来、こういったデータブロックをＲＡＩＤレベル１記憶装置に移行する作業を容易にすることにある。これにより、これらデータブロックに再びアクセスするとき、ユーザに対する応答時間が短くなる。書き込みワーキングセットはすでに使用されている概念であり、本明細書において述べる新規なものではない。
【０００７】
　ＲＡＩＤデータ記憶の特徴の１つは、過去のある時点のデータを保存することが可能なことである。この特徴は「スナップショット」と呼ばれ、本明細書では以下、スナップショットなる語はこの特徴を表すものとして使用される。保存されるデータを「スナップされる」と言う。データは、スナップされた後、将来の変更から保護されるものと考えることができる。これにより、ユーザは、保存すべきあるデータの「スナップショット」をとることができる。将来、データが更新される（データに書き込みが行われる）場合、スナップデータが保存され、データ更新された新しいコピーもシステムに記憶される。この方法では、ユーザはスナップ（すなわち、元）データおよび更新データを両方ともＲＡＩＤデータ記憶装置に保持することができる。データのスナップは、データが存在しているＲＡＩＤレベルから独立している。あるデータはスナップされると、そのデータが存在しているＲＡＩＤレベルに関係なく保存される。スナップデータブロックへのポインタシステムは、「スナップショットマップ」として知られている。この概念は、上記書き込みワーキングセットと同様に新規な概念ではなく、本開示に述べる概念ではない。
【０００８】
　しかし、スナップデータを更新する（書き込みを行う）システムユーザ動作が必要な場合には、一連のステップに従って、確実にスナップデータが保存され、更新データが書き込まれるようにする必要がある。元データを保存し、更新データを別個に物理的な記憶装置に記憶するために使用される手順は、「分岐（divergence）」と呼ばれる。スナップデータおよび更新データは両方ともＲＡＩＤデータ記憶装置に保持される。分岐において行われるステップは、以下である。すなわち、１）書き込みを行うべきデータをメモリに記憶するステップ、２）スナップデータが、通常は書き込みが行われるデータよりも大きなデータブロックとして読み出されるステップ、３）スナップデータを有するデータブロックをメモリ中の新データと組み合わせ、次いで組み合わせられたデータを更新データとみなすステップ、４）更新データへの新しいポインタを、すべてのＲＡＩＤレベル１およびＲＡＩＤレベル６データのマップを保持する汎用テーブル中に作成するステップであって、スナップ（すなわち、元）データへのポインタがスナップショットマップに保持されるステップ、５）更新データを物理的な記憶装置に書き込むステップ。これら最初の４つのステップが終わった時点では、スナップデータは、新しい更新データと同様にまだ物理的なＲＡＩＤデータ記憶装置中にある。スナップデータおよび新しいデータが物理的な記憶装置に確実に保持されるようにするために、この手順（分岐）はユーザがデータに書き込みを行うときにフォアグラウンドで行われるため、システムユーザの観点から望ましくない遅延が発生する。
【０００９】
　以下の同じ譲受人に譲渡された出願に注目する。
【００１０】
　発明者David UmbergerおよびGuillermo Navarroにより２００２年１０月３日に出願された「Method of Managing a Data Storage Array,and a Computer System Including a Raid Controller」と題する米国特許出願第１０／２６４，５７３号、発明者Michael Brent JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Computer Systems, Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，９５７号、発明者Michael Brent JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Virtual Storage Systems, Virtual Storage Methods and Methods of Over Committing a Virtual RAID Storage System」と題する米国特許出願第１０／２６４，６５９号、発明者Rodger DanielsおよびLee L. Nelsonにより２００２年１０月３日に出願された「Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，５２５号、および発明者Lee L. NelsonおよびRodger Danielsにより２００２年１０月３日に出願された「Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，６６１号。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
　したがって、スナップデータの更新が、システム内に記憶されているデータへのユーザアクセスに対する影響が少ない状態で行われるデータ管理システムを提供することが望ましい。
【課題を解決するための手段】
【００１２】
　本発明は、システムユーザのデータアクセス要求と協調して、ＲＡＩＤ記憶システム内のスナップデータの分岐を管理する改良されたシステムおよび方法を提供する。本発明の好ましい実施形態は、スナップされ、かつ(AND)書き込みワーキングセット内にあるデータブロックのバックグラウンドでの分岐（すなわち、最も新しく書き込みが行われたデータ空間へのマップ）を提供する。したがって、本発明の好ましい実施形態は、書き込みワーキングセットを使用することによってスナップデータブロックの分岐を予測することを含む。
【００１３】
　本発明の一実施形態は、データ記憶アレイを管理するシステムであって、アレイとして構成された複数のデータ記憶ディスクと、アレイ内のデータ記憶ディスクそれぞれに連結され、アレイ内のデータにアクセスし、ユーザアプリケーションがアレイ内のデータにアクセスしているレートを測定するように構成されたＲＡＩＤコントローラと、を備えたシステムを提供し、ＲＡＩＤコントローラは、メモリおよびＲＡＩＤコントローラに連結されたユーザインタフェースをさらに備え、また、ＲＡＩＤコントローラはメモリ内にポインタセットを記憶するようにさらに構成され、ポインタはそれぞれアレイ内のデータブロックに対応し、各ポインタはユーザアプリケーションによりアクセス可能であり、ＲＡＩＤコントローラは、測定に応答して、アレイ中の特定のデータブロックに対するデータ変更動作を予測し、予測に応答して、特定のデータブロックを、アレイ内の別のＲＡＩＤレベル記憶ロケーション内の別のデータブロックに選択的にコピーするようにさらに構成されている。
【００１４】
　本発明の別の実施形態は、データ記憶システムを管理する方法であって、データを記憶するように構成されたデータディスクのアレイを設けることと、アレイに連結されたＲＡＩＤコントローラを設けることと、ＲＡＩＤコントローラに連結されたユーザインタフェースコンピュータを設けることと、ユーザインタフェースコンピュータを使用してアプリケーションプログラムを実行することと、アプリケーションプログラムおよびＲＡＩＤコントローラを使用してアレイ内に記憶されているデータを読み出すことと、ＲＡＩＤコントローラを使用して、読み出されたデータに対応するポインタを作成して記憶することと、アプリケーションプログラムおよびＲＡＩＤコントローラを使用して、ポインタによりアレイ内のデータにアクセスすることと、ＲＡＩＤコントローラを使用してアクセスレートを測定することと、ＲＡＩＤコントローラを使用して、測定に応答してアレイ内のあるＲＡＩＤレベル中の特定のデータに対するデータ変更動作を予測することと、ＲＡＩＤコントローラを使用して、予測に応答してアレイ内の別のＲＡＩＤレベルに特定のデータを選択的にコピーすることと、ＲＡＩＤコントローラを使用してアレイ内のコピーデータに対してデータ変更動作を行うことと、を含み、コピー動作はＲＡＩＤコントローラを使用してバックグラウンド動作として行われる方法を提供する。
【００１５】
　本発明の別の実施形態は、ＲＡＩＤコントローラであって、データを記憶するように構成されたメモリと、コントローラに連結されたデータ記憶ディスクアレイにコントローラを使用してアクセスするレートを測定するように構成された監視電子回路と、メモリおよび監視電子回路に連結され、コンピュータからの対応する命令に応答して、アレイ内の異なるＲＡＩＤレベルにおけるデータにアクセスするように構成された回路と、を備えたＲＡＩＤコントローラを提供し、データにアクセスするように構成された回路は、コンピュータからの対応する命令に応答してアレイ中のデータに関連するポインタを選択的に構成するようにさらに構成され、また、測定に応答してデータ変更動作を予測するようにさらに構成され、また、予測に応答して、メモリを使用して、アレイ内のあるＲＡＩＤレベル中のデータの一部をアレイ内の別のＲＡＩＤレベルにバックグラウンド動作として選択的にコピーするようにさらに構成されている。
【００１６】
　本発明の別の実施形態は、ＲＡＩＤコントローラに以下を実行させるように構成されたコンピュータ可読コードを含むコンピュータ可読媒体を提供する。すなわち、コンピュータからの対応する命令に応答して、ＲＡＩＤコントローラに連結されたデータ記憶ディスクアレイ内のデータを読み出すことと、読み出されたデータに関連するポインタを選択的に構成することと、コンピュータからの対応する命令に応答して、ポインタを使用してアレイ内のデータにアクセスすることと、アレイ内のデータへのアクセスレートの測定に応答して、データ変更動作を予測することと、予測に応答して、アレイ内のあるＲＡＩＤレベル中のデータの一部をアレイ内の別のＲＡＩＤレベルにバックグラウンド動作として選択的にコピーすること。
【００１７】
　本発明のさらに別の実施形態は、ＲＡＩＤコントローラであって、データを記憶するように構成されたメモリと、ＲＡＩＤコントローラを使用して、ＲＡＩＤコントローラに連結されたデータ記憶ディスクアレイにアクセスするレートを測定するように構成された監視電子回路と、コンピュータ可読コードを含むファームウェアと、を備えたＲＡＩＤコントローラを提供し、コンピュータ可読コードは、ＲＡＩＤコントローラに以下を実行させるように構成されている。すなわち、コンピュータからの対応する命令に応答して、アレイ内のデータを読み出すことと、読み出されたデータに関連するポインタを選択的に構成することと、コンピュータからの対応する命令に応答して、ポインタを使用してアレイ内のデータにアクセスすることと、監視電子回路を使用してのレート測定に応答して、データ変更動作を予測することと、予測に応答して、メモリを使用してアレイ内のあるＲＡＩＤレベル中のデータの一部をアレイ内の別のＲＡＩＤレベルにバックグラウンド動作として選択的にコピーすること。
【００１８】
　本発明の別の実施形態は、コンピュータ可読コードを含むコンピュータ可読媒体を提供し、コンピュータ可読コードは、コンピュータに以下を実行させるように構成されている。すなわち、コンピュータからＲＡＩＤコントローラに送られた、対応する命令に応答して、コンピュータに連結されたデータ記憶ディスクアレイ内の異なるＲＡＩＤレベル内のデータを読み出すことと、読み出されたデータに関連する複数のポインタを選択的に構成し、コンピュータのメモリ内に記憶することと、コンピュータからＲＡＩＤコントローラに送られた、対応する命令に応答して、ポインタを使用してアレイ内の異なるＲＡＩＤレベルにおけるデータにアクセスすることと、コンピュータがアレイ内のデータにアクセスしているレートを測定することと、測定に応答してデータ変更動作を予測することと、予測に応答して、アレイ内のあるＲＡＩＤレベル中のデータの一部をアレイ内の別のＲＡＩＤレベルにバックグラウンド動作としてコピーするようにＲＡＩＤコントローラに選択的に命令すること。
【００１９】
　本発明の別の実施形態は、データ記憶システムを管理する方法であって、データを記憶するように構成されたデータディスクアレイを設けることと、アレイに連結されたＲＡＩＤコントローラを設けることと、ＲＡＩＤコントローラに連結されたコンピュータを設けることと、コンピュータと連携するコンピュータ可読コードを有するコンピュータ可読媒体を設けることと、コンピュータを使用してコンピュータ可読コードを実行することと、コンピュータ可読コード、コンピュータ、およびＲＡＩＤコントローラを使用してアレイ内に記憶されているデータを読み出すことと、コンピュータ可読コードおよびコンピュータを使用して、読み出されたデータに対応するポインタを作成し、コンピュータのメモリ内に記憶することと、コンピュータ可読コード、コンピュータ、およびＲＡＩＤコントローラを使用して、ポインタによりアレイ内のデータにアクセスすることと、コンピュータ可読コードおよびコンピュータを使用して、データにアクセスしているレートを測定することと、測定に応答して、コンピュータ可読コードおよびコンピュータを使用して、アレイ内のあるＲＡＩＤレベル中の特定のデータに対するデータ変更動作を予測することと、予測に応答して、コンピュータ可読コード、コンピュータ、およびＲＡＩＤコントローラを使用して、あるＲＡＩＤレベル中の特定のデータをアレイ内の別のＲＡＩＤレベルに選択的にコピーすることと、コンピュータ可読コード、コンピュータ、およびＲＡＩＤコントローラを使用して、アレイ内のコピーデータに対してデータ変更動作を行うことと、を含み、コピー動作およびデータ変更はバックグラウンド動作として行われる方法を提供する。
【発明を実施するための最良の形態】
【００２０】
　図１は、本発明の一態様によるＲＡＩＤベースのシステム１１０の考えられる一実施形態を示す。システム１１０は、ネットワーク１１４を経由してＲＡＩＤコントローラ１１６にデータ通信可能にそれぞれ連結されたユーザインタフェースコンピュータ１１２を備える。ＲＡＩＤコントローラ１１６は、入出力監視（Ｉ／Ｏモニタ）回路１１８と、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）等のメモリ１２０と、を備える。
【００２１】
　入出力監視回路１１８は、ユーザインタフェースコンピュータ１１２によりデータが物理的な記憶装置１２８に書き込まれている／物理的な記憶装置１２８から読み出されている瞬間レートを監視するように構成されている。メモリ１２０は、コントローラ１１６によりいくつかのタスクのために使用され、そのタスクとしては、たとえば、データのコピー、書き込み、または読み出し動作中にバッファとして機能すること、特定のデータをポイントするポインタを物理的な記憶装置１２８に記憶すること等が挙げられる。メモリ１２０を他の目的で使用することも可能である。本明細書にて用いる移行(migration)なる語は、記憶システム１２８内のＲＡＩＤレベル間のあらゆるデータコピーまたは移動動作に適用され、コピーまたは移動されたデータに対して行われる次のデータ書き込みおよび／または削除動作を含む。
【００２２】
　システム１１０には、カップリング１２２によりコントローラ１１６にデータ通信可能に連結されたＲＡＩＤディスクアレイ１２４もさらに含まれる。ディスクアレイ１２４は複数のデータ記憶ディスク１２６を含み、コントローラ１１６はこの複数のデータ記憶ディスク１２６それぞれに独立してアクセスすることができる。アレイ１２４のディスク１２６は、システム１１０の物理データ記憶装置１２８を構成する。
【００２３】
　図２は、システム１１０をブロック線図の形態で示す。物理的な記憶装置１２８は、空き空間（すなわち、使用されていない記憶領域）１５０と、データ空間１５２と、データ空間１５４と、を含む。データ空間１５２および１５４は、ＲＡＩＤレベル１およびレベル６それぞれにあるデータを記憶するために利用され、コントローラ１１６によって定義・管理される。ユーザインタフェースコンピュータ１１２は、コマンドをコントローラ１１６に送ることによって空間１５２および１５４内のデータにアクセスする。コントローラ１１６は、データ空間１５２および１５４内のデータの書き込みおよび削除に適応するように、必要に応じて空き空間１５０をデータ空間１５２および１５４に再割り当てする。図示のように、コントローラ１１６は、コントローラ１１６内のメモリ１２０を使用して、ブロック１５６内にあったデータをデータブロック１５８にコピーし、そしておそらく変更した（すなわち、ブロック１５６内にデータを書き込んだ、またはブロック１５６内のデータを削除した）。かかるデータコピーおよび／または変更動作は一般に、システム１１０によって実行される。図２には、書き込みワーキングセット（すなわち、仮想マッピング）１７０も示されている。書き込みワーキングセット１７０は、最も新しく書き込みが行われたデータ空間へのポインタを保持する。図２には、上に述べたように実質的に機能するスナップショットマップ１６０も示されている。
【００２４】
　図３は、本発明の一態様によるシステム１１０の物理的な記憶装置１２８と、書き込みワーキングセット１７０と、ユーザインタフェースコンピュータ１１２との間の関係を示す。アプリケーションプログラム（図示せず）が、ユーザインタフェースコンピュータ１１２内で動作する（すなわち、実行される）。上に述べたように、書き込みワーキングセットは基本的に、最も新しく書き込みが行われたブロックへのポインタのリストである。書き込みワーキングセットにデータは保持されず、最も新しく書き込みが行われたブロックへのポインタのみが保持される。図３では、書き込みワーキングセット１７０は、最も新しく書き込みが行われたデータブロック、本例ではブロック１８０、１８２、および１８４へのポインタを含む。ポインタは１７２、１７４、および１７６という番号が付いている。ポインタ１７２、１７４、および１７６は、物理的な記憶装置１２８内のデータブロック１８０、１８２、および１８４それぞれに関連付けられている。書き込みワーキングセット１７０は、ブロックへのポインタ１７２、１７４、および１７６とともに、ＲＡＩＤコントローラ１１６のメモリ１２０（または他の特定のメモリ資源（図示せず））に存在する。
【００２５】
　書き込みワーキングセット１７０を使用すると、システム１１０の動作速度は、インタフェースコンピュータ１１２で実行されているアプリケーションプログラムが、資源として書き込みワーキングセット１７０を有していない場合よりも速くなる（すなわち、遅延が低減する）。遅延の低減は、システムが、書き込みワーキングセットがポイントしているデータブロックをすべて、ＲＡＩＤレベル６データ空間１５４よりも高いパフォーマンスを提供するＲＡＩＤレベル１データ空間１５２に移行させることによる。もちろん、書き込みワーキングセットが、ＲＡＩＤレベル１データ空間１５２にすでに存在するデータブロックをポイントしている場合、それらデータブロックは移行されない。そういったデータブロックはＲＡＩＤレベル１データ空間１５２にそのまま残されるため、ユーザはより高い動作速度でデータにアクセスすることができる。書き込みワーキングセットがポイントしている、ＲＡＩＤレベル６データ空間１５４中のデータブロックは、バックグラウンドで（すなわち、ユーザアクセスと一緒に実行されるプロセスとして）ＲＡＩＤレベル１データ空間１５２に移行されるため、ある時点で、書き込みワーキングセットがポイントしているすべてのデータブロックがＲＡＩＤレベル１データ空間１５２に存在することになる。上に説明したように、書き込みワーキングセット中のデータブロックは、最も新しく書き込みが行われたデータブロックである。これらのデータブロックがＲＡＩＤレベル１データ空間１５２に移行される理由は、大半の場合に、ユーザがあるアプリケーションプログラムを介してあるデータブロックに書き込みを行う場合、そのコンテンツを読み出すあるいは書き換えることによりそのブロックにアクセスする確率が非常に高いことが観察されているためである。したがって、書き込みワーキングセットは、ユーザがアクセスする確率の最も高いデータをＲＡＩＤレベル１に保持することにより、高速（レベル１とレベル６の中でより高速の）ＲＡＩＤレベル１データ空間１５２の使用を最適化する。
【００２６】
　スナップショットマップ１６０は、ブロック１８４、１８６、および１８８に示すスナップデータブロックへのポインタを含む。物理的な記憶装置１２８内のブロック１８４、１８６、および１８８に関連するポインタは、１６４、１６２、および１６６とそれぞれ番号が付けられている。スナップショットマップ１６０は、ポインタ１６２、１６４、および１６６とともに、ＲＡＩＤコントローラ１１６のメモリ１２０（または他の特定のメモリ資源（図示せず））に存在する。
【００２７】
　図４は、本発明の一態様によるシステム１１０内の分岐予測の結果を示す。データブロック１８４は、書き込みワーキングセットマップおよびスナップショットマップの両方によってポイントされている。本特許出願に記載の本発明は、本質的に、データブロック１８４に生じ得る分岐の予測である。データブロック１８４は、記憶装置のＲＡＩＤレベル６データ空間１５４にあり、書き込みワーキングセット１７０によりポイントされているため、さらなるブロックに割り当てるに足るＲＡＩＤレベル１データ空間１５２がある場合には、最終的にＲＡＩＤレベル１データ空間１５２に移されることになる。現行の書き込みワーキングセットおよびスナップショット機能の実施態様と比較して、本発明の新規性の１つは、データブロック１８４を単に記憶装置のＲＡＩＤレベル１データ空間１５２に移行させるのではなく、分岐が行われ、データブロック１８４のコピーがＲＡＩＤレベル１データ空間１５２に移行され、スナップ（すなわち元）データが、記憶装置１２８内の元の物理的なロケーションにそのまま残されることである。
【００２８】
　図４から、スナップ（すなわち元）データブロック１８４がここでは、スナップショットマップ中のポインタ１６４によってポイントされていることがわかる。スナップデータブロックはＲＡＩＤレベル６データ空間１５４に残される。本発明の別の態様では、スナップデータブロック１８４、１８６、および１８８は、再び更新されない（書き込みが行われない）ものと想定され、そのためにＲＡＩＤレベル６データ空間１５４に移行される。これは、データブロック１８４、１８６、および１８８がなぜスナップされたかの背後にある目的が、ブロック１８４、１８６、および１８８中のデータを保存するためであったことから明らかである。本例では、スナップされたブロック１８４は記憶装置１２８のＲＡＩＤレベル６データ空間１５４にすでに存在したため、ブロック１８４を移行させる必要はない。このスナップデータブロック１８４が元々はＲＡＩＤレベル１データ空間１５２にあった場合には、データブロック１８４は分岐され、分岐されたコピーがＲＡＩＤレベル１データ空間１５２に残され、スナップ（すなわち元）データブロックがＲＡＩＤレベル６データ空間１５４に移行される。本例では、スナップデータブロック１８４が、スナップショットマップ中のポインタ１６４によってポイントされるＲＡＩＤレベル６データ空間１５４に残され、分岐したコピーが、書き込みワーキングセットマップ中のポインタ１７６によってポイントされるデータブロック１９０として、記憶装置のＲＡＩＤレベル１データ空間１５２に移行することがわかる。ユーザインタフェース１１２内で実行中のアプリケーションがデータブロック１８４を更新すると、アレイコントローラ１１６は、書き込みワーキングセットマップ中のポインタ１７６によってポイントされるデータブロック１９０を実際に更新する。この方法では、更新が、普通ならデータブロックが未分岐であった場合に発生するであろう、分岐に関連する遅延を受けない。この時点以降の更新はすべて、データブロック１９０に対して行われる。
【００２９】
　本発明の別の態様によれば、データブロック１８４の分岐は、続くデータ書き込み（または削除）動作に先立ってバックグラウンド動作として行われた。この方法では、アプリケーションプログラムによるデータブロック１８４へのアクセス時間（すなわち、インタフェース１１２のユーザから見た遅延）が短くなった。また、後続するデータ書き込みおよび／または削除動作はいずれも、結局は、書き込みワーキングセットマップのポインタ１７６によってポイントされる新しいデータブロック１９０に対して行われる。この分岐はバックグラウンドで行われたため、ユーザに対して、データブロック１８４を更新する（書き込みを行う）ときに見られた遅延が短くなるとともに、物理的な記憶装置１２８内の他のデータへのアクセスに関連するあらゆる遅延が短くなる。
【００３０】
　データ移行により、この時点で書き込みワーキングセット１７０は、データブロック１９０をポイントするポインタ１７６を有し、スナップショットマップはデータブロック１８４をポイントするポインタ１６４を有し、これによってユーザインタフェース１１２内で実行中のアプリケーションは、ブロック１８４に元々は記憶されていたデータを変更したもの（データブロック１９０）および変更していないもの（すなわち、スナップされたもの）を両方とも利用することができる。
【００３１】
　上に述べたように、データ移行および分岐プロセスは、必要に応じてメモリ１２０を使用して、ＲＡＩＤコントローラ１１６によって実行される。代替の実施形態では、ユーザインタフェース１１２が、メモリおよびユーザインタフェース１１２に固有の他の資源を利用して、書き込みワーキングセットおよびスナップショットマップを生成してユーザインタフェース１１２内に保持するソフトウェアを実行する。この代替の実施形態では、適切なソフトウェアの制御下にあるユーザインタフェース１１２が、ネットワーク１１４を経由して対応する命令をＲＡＩＤコントローラ１１６に提供して、実質的に上に述べたようにＲＡＩＤディスクアレイ１２４内でのデータ移行および／または分岐が実行される。
【００３２】
　図５は、本発明の考えられる一実施形態において使用されるロジックシーケンス２００を示す。上に述べた図１乃至図４も参照する。
【００３３】
　ステップ２０２において、ＲＡＩＤコントローラ１１６が、スナップショットマップ１６０において未分岐のスナップデータブロックを探す。上に述べたように、本発明の図示の実施形態は、スナップデータブロック１８４、１８６、および１８８の分岐を、書き込みワーキングセット１７０中のそれぞれの存在に基づいて予測する。上に述べたように、このプロセスはバックグラウンドで実行されるため、ＲＡＩＤコントローラ１１６において構成されるある時間間隔で定期的にアクティブ化することができる。例として、スナップされた未分岐のデータブロック１８４は、スナップショットマップ１６０中に関連ポインタ１６４および書き込みワーキングセット１７０中に関連ポインタ１７６を有する。
【００３４】
　ステップ２０４において、ＲＡＩＤコントローラ１１６が、未分岐のスナップデータブロックを見つけた場合、ロジック２００はステップ２０６に進む。その他の場合、ロジック２００はステップ２２０に進み、ＲＡＩＤコントローラ１１６が、バックグラウンドである時間間隔の間待機してから、ロジックシーケンス２００を再度開始する。
【００３５】
　ステップ２０６において、ＲＡＩＤコントローラ１１６は、スナップされた未分岐のデータブロックを調べて、これが書き込みワーキングセット１７０によってもポイントされているかどうかを調べる。
【００３６】
　ステップ２０８において、ＲＡＩＤコントローラ１１６は、スナップデータブロックが書き込みワーキングセットマップ１７０にも存在するかどうかを判定する。存在している場合、このスナップデータブロックに、分岐を要する再書き込みが行われる可能性は非常に高い。この可能性に基づいて、ＲＡＩＤコントローラ１１６は、このスナップデータブロックに分岐が将来必要になるであろうと予測することができ、ロジック２００はステップ２１０に進む。スナップデータブロックが書き込みワーキングセット１７０にない場合、このスナップデータブロックが分岐するかどうかを予測することはできないため、処理は完了するが、ある時間後に再度開始され、ロジック２００はステップ２２０に進む。
【００３７】
　ステップ２１０において、ＲＡＩＤコントローラ１１６は、スナップデータブロックが存在するＲＡＩＤレベルを求める。図２に示すように、スナップデータブロックが存在することができるのは、データ空間１５２（すなわち、ＲＡＩＤレベル１）またはデータ空間１５４（すなわち、ＲＡＩＤレベル６）のみである。スナップデータブロックがデータ空間１５２に存在する場合、ロジック２００はステップ２１４に進む。スナップデータブロックがデータ空間１５４に存在する場合、ロジック２００はステップ２１２に進む。
【００３８】
　ステップ２１２において、ＲＡＩＤコントローラ１１６は、データ空間１５２（すなわち、ＲＡＩＤレベル１）において利用可能な空間を求め、さらに１つのデータブロックを記憶することが可能かどうかを判定する。可能な場合、ロジック２００はステップ２１４に進む。可能ではない場合、ロジック２００はステップ２１８に進む。
【００３９】
　ステップ２１４において、スナップデータブロックがデータ空間１５２（ＲＡＩＤレベル１）にある場合、ＲＡＩＤコントローラ１１６は、スナップデータブロックの分岐を実行し、分岐されたデータブロックを物理的な記憶装置１２８のデータ空間１５２（ＲＡＩＤレベル１）に記憶する。本例ではさらに、データブロック１８４の分岐によりデータブロック１９０が生成される。
【００４０】
　ステップ２１４の続きであるステップ２１６において、ＲＡＩＤコントローラ１１６は、スナップ（元）データブロックが物理的な記憶装置１２８のデータ空間１５４（ＲＡＩＤレベル６）にまだない場合、スナップデータブロックをこのデータ空間１５４に記憶する。すでに存在する場合、このスナップデータブロックはＲＡＩＤレベル６データ空間１５４に残すことができる。これは、このデータブロック中のデータがスナップされて保存されたことから、このデータブロックには書き込みが行われないためである。ユーザがこのデータブロックを削除すると決定した場合には削除することができるが、説明のために、このスナップデータブロックから今後読み出しが行われるものと想定することができる。このステップ２１６が完了した後、ロジック１１６はステップ２２０に進み、ＲＡＩＤコントローラ１１６は、設定されたある時間待機してからこのプロセスを再度開始する。
【００４１】
　ステップ２１８において、データ空間１５２（ＲＡＩＤレベル１）にそれ以上データのために空間がない場合、ＲＡＩＤコントローラ１１６は、スナップ（すなわち元）データブロックおよび分岐したデータブロックの両方を、物理的な記憶装置１２８のデータ空間１５４（ＲＡＩＤレベル６）に記憶するものと決定する。この動作が完了した後、ＲＡＩＤコントローラ１１６はステップ２２０に進み、設定されたある時間待機してからこのロジック２００プロセスを再度開始する。
【００４２】
　上に述べたように、すべての動作はバックグラウンドで完了する。未分岐であったスナップデータブロックに分岐がすでに行われたため、元データをより高いＲＡＩＤレベルにコピーするのと同時に行われる同様の（図示しない）書き込み動作と比較して、インタフェースコンピュータ１１２のユーザに対するアクセス遅延が短くなる。
【００４３】
　図５に示すように、ロジックシーケンス２００は反復ループ様式で行われる。本発明の（図示しない）別の実施形態では、シーケンス２００は単一パス動作として実行される。他の実施形態も可能である。一実施形態では、ロジックシーケンス２００は、ＲＡＩＤコントローラ１１６内の、コンピュータ可読コードを有するファームウェアを使用して実施される。ロジックシーケンス２００を実行するように構成されたＲＡＩＤコントローラの他の実施形態も可能である。
【００４４】
　法律に準拠して、構造的特徴および方法的特徴に関して多少具体的な言葉で本発明を説明した。しかし、本明細書に開示した手段は本発明を実施する形態を含むため、本発明は図示し説明した特定の特徴に限定されないことが認められる。したがって、本発明は、均等論に従って適宜解釈される特許請求の範囲の適切な範囲内のあらゆる形態または変更で請求される。
【図面の簡単な説明】
【００４５】
【図１】本発明の考えられる一実施形態の相互に関連する要素の図である。
【図２】本発明の考えられる一実施形態のブロック線図である。
【図３】本発明の考えられる一実施形態の別のブロック線図である。
【図４】本発明の考えられる一実施形態の別のブロック図である。
【図５】本発明の考えられる一実施形態により行われるロジックのフローチャートである。
【図１】
2004127274.tif 000003
【図２】
2004127274.tif 000004
【図３】
2004127274.tif 000005
【図４】
2004127274.tif 000006
【図５】
2004127274.tif 000007