(57)【要約】  記憶領域を割り付けるリクエストを受け取った時点で、記憶装置は、記憶装置内のコンテンツを０などのデフォルト値に初期化することによって、記憶領域内のロケーションにおいて未知のデータが格納されることによる問題の発生を回避する（例えば、ミラーリング関係に関係しているロケーションに対してデータセットを書き込む際に、対応するミラーリング・ロケーションにおける初期化されていないデータは書き込まれたデータと整合しない）。しかしながら、記憶装置を初期化することは時間を浪費し、非効率的である。そこで、記憶領域内のそれぞれのロケーション集合に関して使用状態ビットマップを生成し、当該ロケーション内に値が存在するか否かを表示する。当該使用状態ビットマップを検査して指定されたロケーション内に値が存在するか否かを判定することにより、読み出し要求が達成され、そうでなければ、実際に記憶装置にアクセスすることなく、デフォルト値が返される。使用状態ビットマップを使用することにより、その他の効率化を図ることが可能である。【選択図】図３
2014528127.tif 000002
【特許請求の範囲】
【請求項１】
使用状態ビットマップを含む記憶領域に関する記憶装置セット内の少なくとも２つのロケーションを含むロケーション集合内に格納された値を示す方法であって、プロセッサーを有するコンピューター上で実行されると、一のロケーションにおいて値に関する読み込み要求を受け取った際に、
前記ロケーションを含むロケーション集合に関して値が存在することを使用状態ビットマップが示す場合には、前記ロケーションに格納された値を戻り値として返すステップ；および、
前記ロケーションを含むロケーション集合に関して値が存在しないことを使用状態ビットマップが示す場合には、デフォルト値を戻り値として返すステップ；
を含む処理動作を実行するように構成されたプロセッサ実行可能な命令コードを実行する動作を具備する、方法。
【請求項２】
前記記憶装置セットは、少なくとも２つの記憶領域、および記憶領域内のそれぞれのロケーションにおいて値が存在することを示す表示をそれぞれ格納する使用状態ビットマップを含む使用状態ビットマップ配列を具備する、
請求項１記載の方法。
【請求項３】
前記記憶領域を生成するための割付けリクエストを受け取った時点で、前記記憶領域の初期化動作を抑制するように前記命令コードが構成される、
請求項１記載の方法。
【請求項４】
少なくとも一つのロケーション集合が：
それぞれ一のデータ値を格納している少なくとも２つのデータ・ロケーション；および、
前記データ・ロケーションにおける前記データ値に関するパリティ値をそれぞれ格納している少なくとも２つのパリティ・ロケーション；
を具備している、請求項１記載の方法。
【請求項５】
ロケーション集合内の該当するロケーションに対して少なくとも一つのデータ値を書き込むことを求める書き込み要求を受信した時点で、
前記データ・ロケーションに対して前記データ値を書き込み、
前記ロケーション集合に関してパリティ値を計算し、
前記ロケーション集合に関する前記パリティ・ロケーションにおいて、前記パリティ値を格納し、
前記ロケーション集合内の前記ロケーションにおいて値が存在する旨を示すために、前記使用状態ビットマップを更新する
ように前記命令コードが構成される、請求項１記載の方法。
【請求項６】
パリティ値を前記計算する動作は：
前記ロケーション集合内の前記ロケーションにおいて値が存在する旨を前記使用状態ビットマップが示すならば、前記ロケーション集合内の他のデータ・ロケーションに格納された格納済みのデータ値を読み出し、前記格納済みのデータ値と前記書き込み要求のデータ値を使用してパリティ値を計算し、
前記ロケーション集合内の前記ロケーションにおいて値が存在しない旨を前記使用状態ビットマップが示すならば、前記書き込み要求のデータ値と前記ロケーション集合内の他のデータ・ロケーションに関するデフォルト値を使用してパリティ値を計算する、
ことを具備する、請求項５記載の方法。
【請求項７】
前記ロケーション集合内において少なくとも一つの書き込まれていないロケーションが、前記書き込み要求において指定されたデータ値を有しておらず、
前記ロケーション集合内において値が存在する旨を前記使用状態ビットマップが示していないならば、前記ロケーション集合内における該当する書き込まれていないロケーションにおいてデフォルト値を書き込むように前記命令コードが構成される、
請求項５記載の方法。
【請求項８】
前記書き込み要求は、前記ロケーション集合内の全てのデータ・ロケーションに関してデータ値を指定し、
前記パリティ値を前記計算することは、前記書き込み要求のデータ値を使用してパリティ値を計算することを具備する、請求項５記載の方法。
【請求項９】
前記ロケーション集合内の値を破棄することを求める要求を受け取った時点で、前記ロケーション集合内の前記ロケーションにおいて値が存在しない旨を示すために、前記使用状態ビットマップを更新するように前記命令コードが構成される、
請求項１記載の方法。
【請求項１０】
それぞれのロケーション集合は、少なくとも２つの弾力性のある値を具備しており、
前記ロケーション集合内の一のロケーションにおける失敗が起きた時点で、
前記ロケーション集合に関して値が存在することを前記使用状態ビットマップが示すならば、前記ロケーション集合内の他の弾力性のある値を使用して、前記ロケーション集合における前記値を復元し、
前記ロケーション集合に関して値が存在しないことを前記使用状態ビットマップが示すならば、前記ロケーション集合内の他の弾力性のある値を使用して、前記ロケーション集合における前記値を復元する動作を抑制するように前記命令コードが構成される、
請求項１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置への効率的なアクセスを実現する記憶装置管理方法と関係する。
【背景技術】
【０００２】
当該技術分野においては、多くのシナリオが、ハードディスク・ドライブのコレクションあるいはＲＡＩＤ（低価格ディスク冗長アレイ）のような少なくとも1つの記憶装置を含む記憶装置セットに値を記憶させることを含んでいる。記憶装置が最初に提供される場合、あるいは記憶装置上の記憶容量が解放され、次に、再び割り付けられる場合、記憶装置の物理的な媒体が初期化されるかもしれない。例えば、記憶装置のロケーションはデフォルト値によってワイプされるかもしれない。この初期化処理は、記憶装置のロケーションにアクセスする手順を可能にすることが可能であり、ここにおいては、特定の値を受け取るための値はまだ書き込まれておらず、これは解放されたエリアの以前に書かれた値を含む任意の値ではない。
【０００３】
記憶装置の初期化処理は、さらに少なくとも２つの関連するロケーションを含むロケーション集合に関する記憶シナリオにおいて重要である場合があり、そこに格納された値には特別の関係がある。最初の例として、ミラーリング弾力性プランにおいては、記憶セットの同一のコピーは（しばしば異なる記憶装置上の）２つ以上のロケーションに格納される、その結果、１つの位置に格納された値は、ミラーリング関係に含まれる１つ以上の他の位置に格納された値と一致すると予想される。第２の例として、パリティー弾力性プランにおいては、一組のデータ値がロケーション集合のデータ・ロケーションに書き込まれている場合、書き込まれた値のパリティーが計算され、パリティ値のために予約されているロケーション集合のパリティー位置に格納されることが可能であり、それにより、ロケーション集合の値を格納する記憶装置のうちの幾つかが失敗した場合にはエラー検出、エラー訂正およびデータ値の再構成を可能にする場合がある。これらのシナリオでは、ロケーションの初期化に失敗することは、関連するデータセットの有効性についての確信に重大な影響を与える可能性がある。例えば、データが最初のミラーリング位置に書かれていたが、関連する位置に同じデータを書くことができるようになる前に失敗が生じる場合、最初のミラーリング位置および場合によっては記憶装置セットの残りの部分に格納された値の正当性についての確信を低下させるミスマッチが発生するかもしれない。
【発明の概要】
【０００４】
発明の概要は単純化された形式の複数の概念から選択された一部を紹介するために提供され、当該概念は、以下の「発明の詳細な説明」欄においてさらに詳細に後述される。この「発明の概要」は、要求された主題の主要因あるいは基本的な特徴を識別するようには意図されず、特許請求された主題の技術的範囲を制限するために使用されることも意図していない。
【０００５】
記憶装置の値を初期化している間、いくつかの技術的不利益を回避してもよく、初期化のプロセスは、非能率正のいくつかの形式を示すかもしれない。最初の例として、記憶領域において容量を割り付けることを求める要求は、初期化値（例えば、ゼロ値）を有する全てのロケーションにコンテンツ全体を書き込むことに関係することが場合があり、その場合、特に大容量および／または遅い処理能力の記憶領域のために、延長されたプロセスを含むかもしれない。第２の例として、書き込みリクエストを含む最初のアクセスは、ロケーションの初期化に続いて実行されることが可能である；したがって、この場合の初期化処理は、如何なる値も達成しないので、回避可能だったかもしれない。第３の例として、デフォルト値を備えた記憶領域を初期化し、次に、記憶領域のまだ書き込まれていないのロケーションを読み出すことは、予想されるとおりにデフォルト値を返す場合があり、当該ロケーションが値をまだ書き込まれていないと判定されていた場合、回避されたかもしれない。
【０００６】
本明細書は、記憶領域を単に初期化しない（例えば、記憶領域のロケーションにデフォルト値を書かない）ことによって、記憶領域の初期化によって引き起こされた非能率を縮小するための技術を開示する。代わりに、コンピューターあるいは他の装置は、記憶領域のそれぞれのロケーション集合のために、記録する使用法のビットマップを生成することが可能であり、一つのビットは、記憶領域が割り付けられているので、ロケーション集合が書き込まれたかれたかどうかを示す。ロケーションを指定する読み込み要求を受け取る際、コンピューターは、データ値が当該ロケーションを含むロケーション集合に書き込まれたかどうかを判断するために使用法のビットマップをチェックすることが可能である。値がロケーション集合の中のロケーションに存在することを使用法のビットマップが示す場合、記憶装置上に位置に格納された値を読み出し、戻り値として返すことによって、読み込み要求が満たされることが可能である。しかしながら、値がロケーション集合の中のロケーションに存在しないことを使用法のビットマップが示す場合、コンピューターは記憶装置へのアクセスを差し控え、単にデフォルト値を返すことが可能である。本明細書に示されるように生成された使用法のビットマップの上述した用途およびその他の用途は、記憶セットの効率を改善することが可能である。
【０００７】
上述した観点及び関連する観点を達成するために、以下の記述および添付された図面は、特定の例示的な技術的側面および実装に言及する。これらは、１つ以上の技術的側面が使用されることが可能な様々な方法の幾つかを表している。添付された図面を参照しながら理解された際、本明細書の開示内容のその他の技術的側面、利点および新しい特徴は以下の詳細な記述から明白になるだろう。
【図面の簡単な説明】
【０００８】
【図１】図１は、記憶セットから値を読み出す典型的な方法を説明するフローチャートである。
【図２】図２は、本明細書において述べられた条件の１つ以上を具体化するように構成されたプロセッサー実行可能な命令コードを含む典型的なコンピュータ読み取り可能媒体の実例である。
【図３】図３は、本明細書において述べられた条件の１つ以上が実行可能な典型的なコンピューティング環境を説明する図である。
【発明を実施するための形態】
【０００９】
以下、特許請求された発明の主題は、図面に関して記述され、そこでは、同様の参照数字は、同様の構成要素を参照するために使用される。以下の記述では、説明の目的のために、多数の特定の詳細は特許請求された発明の主題についての完全な理解を提供するために述べられる。しかし、特許請求された発明の主題はこれらの特定の詳細なしで実施可能であることは自明であろう。他の実例では、構造と装置は特許請求された発明の主題について記述することを促進するためにブロック図の形で示される。
【００１０】
＜Ａ．背景＞
コンピューティングの技術分野においては、多くのシナリオが、記憶装置セットの中の不揮発性記憶デバイスへのアクセスを含んでいる。そのような記憶装置は多くのタイプ（例えば、ハードディスク・ドライブ;  半導体メモリ記憶装置;  そして磁気ディスクまたは光ディスク）を含み得るし、多くのタイプのデータ（例えばファイル、電子メール・メッセージ、データベース・レコード、メディア・オブジェクト、それらの組み合わせ）を格納するために利用され得る。記憶装置は特定のコンピューターか装置に付けられるかもしれないし、あるいはネットワークに接続されるかもしれないし、ネットワークを介してアクセスされるかもしれない。また、記憶装置は独立して（例えば記憶装置セットの他の記憶装置の相互通信を行わずに、あるいは、それどころか相互の存在を意識することなしに）作動することが可能であり、記憶装置のそのような作動は、緩い協調動作（例えばステータス通知のコミュニケーションおよび交換において）を伴う場合、あるいは緊密な相互連携動作（例えば、（低価格ディスク冗長アレイ(RAID)装置のような）記憶コントローラー内に積載された一組のハードディスク・ドライブなど）を伴う場合がある。さらに、複数の記憶装置の相互連携動作および／または使用は、それら記憶装置の間において保存されたデータ間の論理的または実際的なパーティション分割に帰着するかもしれないし、あるいはデータの集約に帰着するかもしれない。例えば、２つ以上の記憶装置の利用可能な記憶容量は、単一の統合ボリュームとしてコンピューターに提示される記憶プールへ集約されるかもしれない。
【００１１】
記憶装置は、（例えば、記憶装置の記憶容量を論理上連結するような）スパニング；（例えば、複数の記憶装置に跨って、連続する論理的なアドレスをインターリービングするような）ストライピング；（例えば、記憶装置セットのそれぞれの記憶装置上にデータセットの同一のコピーを格納しており、コピーのすべてに自動的に同時にデータセットへの変更を適用することにより、コピーの同一性を維持するような）ミラーリング；および（例えば、記憶装置の失敗からの回復を可能にすることを目的として、データが１つ以上の記憶装置上で保存される場合、保存されたデータのチェックサムは自動的に計算され、異なる記憶装置上に格納されるような）パリティー計算等のような様々なレイアウト・プランを実装可能である。さらに、記憶装置の記憶容量は、様々なプロビジョニング・プランに従って供給可能である。第１の例として、固定されたプロビジョニング・プランにおいては、記憶領域を割り付けるリクエストが受け取られる場合、１つ以上の記憶装置がプロビジョニング・リクエストで要求された記憶容量をすべて速やかに割り付けることが可能であり、そして、そのような記憶容量が利用可能である旨を、要求元のユーザあるいはプロセスに通知してもよく、そしてデフォルト値を備えた記憶容量を任意付加的に初期化してもよい。第２の例として、遅延されたプロビジョニング・プランにおいては、記憶領域を割り付けるリクエストが受け取られた場合には、記憶装置は、記憶領域が書き込みに利用可能であることを示すことが可能である一方、記憶領域のための記憶容量を速やかには割り付けない場合があり得る。むしろ、記憶装置は、記憶領域内のロケーションへのアクセス・リクエストを待って待機することが可能であり、そしてアクセス・リクエストを受け取った時点で、速やかに物理的な記憶領域（例えば、記憶装置の範囲）を割り付けてもよく、またそれを当該ロケーションの論理的なアドレスに結び付ける。この「ジャスト・イン・タイム」式の遅延されたプロビジョニング・プランは幾らかの性能改善を示す可能性がある。（例えば、記憶装置を生成するリクエストを速やかに達成する、および／または未使用のままである記憶領域のための記憶容量を割り付けることに比べて、記憶装置セットの利用可能な記憶容量の割り付けをもっと効率的にする）。追加的な変形例として、「薄い」プロビジョニング・プランにおいては、記憶装置セットは、記憶装置セットの利用可能な記憶容量を超過するような記憶容量の割り付けリクエストを認可する場合があり得る。代わりに、記憶装置セットは使用される分だけの記憶容量を割り付けるかもしれないし、利用可能な記憶容量よりも低く実行されている際に、補足的な記憶容量を提供する記憶装置を加えるべき旨を運用管理者に通知することが可能である。これらのタイプおよびその他のタイプのレイアウトおよび／またはプロビジョニング・プランは、記憶装置に適用されることが可能である。
【００１２】
記憶装置の記憶領域を割り付ける際、以前に解放された記憶領域のコンテンツのような初期化されていない値を記憶領域から取り除くために、記憶装置はデフォルト値（例えばゼロ値）を備えた記憶領域のロケーションを初期化するように構成可能である。いくつかの理由により、初期化は重要な意義を持つかもしれない。最初の例として、プロセスは、記憶領域のロケーションに値を書く前に、記憶領域の当該ロケーションからの読み取りを要求する可能性がある。初期化が行われない場合、その場所に格納された値は予測不能かもしれない。また、プロセスの振る舞いは予測不能の値を読んだ後において、非決定論的または予期しないものとなるかもしれない。第２の例として、いくつかの記憶領域は、相互に関連性を持った２つ以上のロケーションをそれぞれ含むロケーション集合を格納する可能性がある。値がロケーション集合の中の最初のロケーションに格納される一方で、任意のデータがロケーション集合の中の関連するロケーションに保存される場合、当該関係性に関して妥協が必要となるだろう。最初の例として、ミラーリングされた記憶セットは、２つ以上の同一のコピーとして異なるロケーションに格納されるデータセットであって、１つのロケーションへの書き込みを適用することにより、対応するミラーリングされたロケーションとの同期状態が維持されるデータセットを含んでいるかもしれない。値が最初のそのようなロケーションに書き込まれているが、ミラーリングされたロケーションが初期化されない場合、最初のロケーションに書き込まれた値が有効であるという確信を危険にさらすミスマッチが検知されるかもしれない。第２の例として、ロケーション集合は２つ以上のデータ値を含んでいるかもしれず、その場合には、ロケーション集合へと格納された際、ロケーション集合のパリティー位置に格納されるデータ値用のパリティ値の計算に帰着する。パリティ値は、エラーの検知および／または修正を可能にすることができる。また、パリティ値は、失敗した記憶装置上に格納されたロケーション集合のデータの再構築を可能にすることができる。例えば、パリティ値と共にロケーション集合の中の他のロケーションに格納されたそれらの値は、失敗した記憶装置に格納された値および置き換えられた記憶領域内における値の置換を推測するために使用されてもよい。しかしながら、ロケーション集合の中の如何なるロケーションにおいても初期化されていない値が存在するならば、置き換えられた記憶領域の中への正しくないデータの再構築に帰着するかもしれない。新しく割り付けられた記憶装置中の値の初期化処理は、様々なコンピューティング・シナリオ中において、これらの問題およびその他の問題を回避することが可能である。
【００１３】
しかしながら、記憶領域の値の初期化は、さらに非能率性の幾つかの形式を示す可能性がある。最初の例として、記憶領域を割り付けることを求めるリクエストに応答して、記憶セット全体にデフォルト値を書き込む過程は、長い時間を要するかもしれないし、割付けリクエストに応じた履行を遅らせるかもしれない。第２の例として、多くの場合では、ロケーションへのデフォルト値の書き込みは値をほとんどあるいは全く提供しないかもしれない。最初のそのような例として、ロケーションへのデータ値の書き込みが（そこに格納された値を最初に読み出すことなく）、当該ロケーションの初期化処理に続いて実行される場合、デフォルト値を備えたロケーションの初期化は値を全く提供しなかった可能性がある。ロケーションからのデータ値の読み出しが（そこに格納された値を最初に書き込むことなく）、当該ロケーションの初期化処理に続いて実行される場合、当該読み出しの結果は、記憶装置の当該ロケーションから値を実際に読み出すことなく、デフォルト値として予測されるかもしれない。これらの理由およびその他の理由により、記憶領域のロケーションの初期化処理は、値や利点を提供することなしに、時間とコンピューターおよび記憶装置のリソースとを無意味に浪費するかもしれない。
【００１４】
＜Ｂ．本明細書が開示する技術＞
本明細書に開示されるのは、比較的永続的な方法により、記憶装置の記憶領域の中のロケーションに格納された値を提示するための技術である。これらの技術に従うならば、新しく割り付けられた記憶セットは、デフォルト値で初期化されない場合があり得る。むしろ、使用法のビットマップは生成されることが可能であり、そこでは、各ビットは、記憶領域のそれぞれのロケーション集合に関して、値が格納されているかどうか、および値がロケーション集合内に存在するかどうかを示す。したがって、読み込み要求は、使用法のビットマップに関して部分的に満たされ得る。
【００１５】
＜Ｃ．例示的な実施例＞
図１は、これらの技術の最初の実施例を示しており、使用法のビットマップを含む記憶領域の記憶セットの中の少なくとも２つのロケーションを含むロケーション集合に格納された値を提示する例示的な方法100として示す。例示的な方法は、例えば、コンピューター内において、（メモリ回路、ハードディスク・ドライブのプラッタ、ソリッド・ステート記憶装置あるいは磁気／光ディスクなど）のメモリ・コンポーネントに格納された命令コードの一組として実施されることが可能であり、当該命令コードがコンピューターのプロセッサーによって実行された時、本実施例において示された技術に従ってロケーション集合に格納された値をコンピューターに提示させる。例示的な方法100はステップ102で始まり、本実施例に示された技術に従ってコンピューターを作動させるように構成されたプロセッサー命令によってステップ104を実行することを含んでいる。特に、ロケーションにおける値を読み込むことを求める要求を受け取った際に、当該命令コードは、当該ロケーションを含むロケーション集合に関してその値が存在することを使用法のビットマップが示しているか否かを判定するように構成される。値が当該ロケーションを含むロケーション集合に関して存在することを使用法のビットマップが示す場合、当該命令コードはその場所に格納された値を戻り値として返す（ステップ106）ように構成される。しかしながら、値がロケーションを含むロケーション集合に関して存在しないことを使用法のビットマップが示す場合、当該命令コードは戻り値としてデフォルト値を返す（ステップ110）ように構成される。このようにして、上述した例示的なシナリオは、本実施例において示された技術に従って記憶装置セットの中の値の提示を達成し、ステップ112において処理を終了する。[0020]  さらに別の実施例は、ここに示された技術を適用するように構成されたプロセッサー実行可能な命令コードを含むコンピュータ読み取り可能媒体を含んでいる。そのようなコンピュータ読み取り可能媒体は、例えばメモリ用半導体（例えばスタティック・ランダムアクセス・メモリ（SRAM）、ダイナミック・ランダムアクセス・メモリ（DRAM）および／または同期型DRAM(SDRAM)技術を利用する半導体）およびハードディスク・ドライブのプラッタ、フラッシュ・メモリー装置あるいは磁気／光ディスク（CD-R、DVD-Rあるいはフロッピー（登録商標）ディスクなど）などのような有形的な装置に関するコンピュータ読み取り可能媒体などを含み、これらの媒体は、装置のプロセッサーによって実行された時、本実施例に開示された技術内容を当該装置に実施させる、一組のコンピュータ可読命令コードの符号化している。そのようなコンピュータ読み取り可能媒体は、（コンピュータ読み取り可能な記憶媒体とは異なる技術の類型として）様々なタイプの通信媒体をさらに含むことが可能であり、当該通信媒体は、様々な物理的な現象（例えば電磁気的な信号、音波信号あるいは光信号）によって、および様々な有線通信のシナリオ（例えばイーサネット（登録商標）または光ファイバケーブルによるもの）および／または無線通信のシナリオ（例えばWiFiのような無線ローカル・エリア・ネットワーク（WLAN）、Bluetooth（登録商標）のようなパーソナ���・エリア・ネットワーク（PAN）あるいはセルまたは無線網において伝送され得る信号などを含み、これらの通信媒体は、装置のプロセッサーによって実行された時、本実施例に開示された技術内容を当該装置に実施させる、一組のコンピュータ可読命令コードの符号化している。
【００１６】
上述した方法で考案されるかもしれない例示的なコンピュータ読み取り可能媒体は図２において示され、そこでは、実装形態200は、コンピュータ読み取り可能媒体202（例えばCD-R、DVD-Rあるいはハードディスク・ドライブのプラッタ）を含み、当該媒体の上にエンコードされたコンピュータ可読データ204を含む。このコンピュータ可読データ204は、ここに述べられた動作原理に従って作動するように構成された一組のコンピューター命令コード206をさらに含む。１つのそのような実施例では、プロセッサー実行可能な命令206は、図１の例示的な方法100のような記憶装置セットから値を読み出す方法を行なうように構成される得る。このコンピュータ読み取り可能媒体のいくつかの実施例は、非一時的なコンピュータ可読記憶媒体（例えば、ハードディスク・ドライブ、光ディスクあるいはフラッシュ・メモリー装置）を含むことが可能であり、当該媒体は、このような方法で構成されたプロセッサ実行可能な命令コードを格納するように構成される。多くのそのようなコンピュータ読み取り可能媒体が、ここに示された技術に従って作動するように構成され、当業者によって考案されることが可能である。
【００１７】
＜Ｄ．変形実施例＞
ここにおいて議論された技術内容は、多くの技術的側面における変形例と共に考案されることが可能であり、また、いくつかの変形例は追加の利点を与え、および／またはこれらの技術およびその他の技術の他の変形例に関して技術的な問題点を緩和することができる。さらに、いくつかの変形例は一緒に実施可能であり、また、これらの幾つかの組み合わせは、相乗効果を伴う協働を通じて追加の利点および／または緩和された技術的問題点を特色とすることが可能である。そのような変形例は様々な実施例に組み入れられることが可能であり、それにより、個々の利点および／または相乗効果の利点を与える。
【００１８】
＜Ｄ１．複数のシナリオ＞
これらの技術の複数の実施例においてそれぞれ変形して実施されるかもしれない最初の技術的側面は、そのような技術が利用されるかもしれないシナリオと関係がある。この最初の技術的側面の最初の変形例として、これらの技術は、ハードディスク・ドライブ、半導体記憶装置、不揮発性メモリー回路、テープ・ベースの記憶装置、および磁気／光ディスクを含む多くのタイプの記憶装置と共に使用されてもよい。そのような記憶装置も、これらの技術を実施する装置類（コンピューターのような装置）に直接接続されることが可能であり、有線または無線のローカルエリア・ネットワーク（例えば、IEEE802.11のWiFiネットワーク、アドホック型の接続、赤外線接続）によってアクセス可能であり得る;または、有線または無線の広域ネットワーク（例えば、セルラー・ネットワーク、インターネットなど）によってアクセス可能であり得る。さらに、これらの技術は、（例えば、ソフトウェア・プロセスを通じて独立してアクセスされる記憶装置）を独立して操作する２つ以上の記憶装置と共に使用されてもよく;緩い相互連携動作（例えば独立して作動するが、一つの記憶装置が、同じ記憶装置セットを共有する他の記憶装置の存在を知らされ、これと通信する）で作動する２つ以上の記憶装置と共に使用されてもよく、あるいは緊密な相互連携動作（例えば、記憶システムのコンポーネントとしていくつかの記憶装置を管理するＲＡＩＤ（低価格ディスクの冗長的な配列）コントローラーで作動する２つ以上の記憶装置と共に使用されてもよい。
【００１９】
この最初の技術的側面の第２の変形例として、これらの技術は、様々なタイプのバイナリ形式オブジェクトを格納するバイナリ形式の記憶システムを含む様々なタイプのデータセットを含む、多くのタイプの記憶装置セットと共に使用されてもよく;ファイルを格納するファイルシステム;メディア・オブジェクトを格納するメディア・ライブラリー;多くのタイプのオブジェクトを格納するオブジェクト・システム;レコードを格納するデータベース;また電子メール・メッセージを格納する電子メール・システムと共に使用されてもよい。
【００２０】
この最初の技術的側面の３番めの変形例として、これらの技術の一部あるいは全ては、記憶装置（例えばRAIDコントローラー）と接続するように構成された記憶システムによって、コンピューティング環境内の１つ以上のコンポーネント内において、あるいは記憶セットのそれぞれの記憶装置の中で実装されることが可能であり、例えば、揮発性または不揮発性の記憶装置にアクセス可能なコンピューターまたは装置の中に格納される一組のソフトウェア命令として実装可能である（例えばオペレーティング・システムのプロセスあるいはハードウェア機器のドライバなどとして）。
【００２１】
この最初の技術的側面の４番めの変形例として、ここに示された技術によって生成され使用される揮発性メモリ表現は、多くの構造を示すことが可能である。１つのそのような具体例として、揮発性メモリ表現は一組の相互関係があるレコードあるいはオブジェクトとして構造化されることが可能である（例えば、一連のスラブの系列としてそれぞれ表わされる論理的なディスクを含む論理的なディスク・セットとして構造化され、その場合、スラブ・セットは、エクステントの集合体としてそれぞれ表わされるスラブを含み、エクステント・セットは、記憶装置、物理アドレスおよびエクステント長としてそれぞれ表わされる複数のエクステントを含む）。さらに、相互関係があったレコードあるいはオブジェクトのこの収集は特別の組織構造を表わすことが可能であり、例えば、論理的なディスクを表わす第１の階層的レベルを含む階層的構造;スラブを表わす第２の階層的レベル;およびエクステントを表わす第３の階層的レベルなどを表す。したがって、記憶装置セットによって明示された論理的なディスク内のロケーションは、論理的なディスクのロケーションを含むスラブを最初に識別し、続いて、当該ロケーションを含むスラブ内の少なくとも１つのエクステントを識別することにより位置決めされることが可能である。
【００２２】
この最初の技術的側面の５番めの変形例として、ここに示された技術に従って記憶装置セットにアクセスすることは、記憶装置セット中の特定タイプの柔軟性を可能にすることができる。最初の例として、第１のスラブは、第１のレイアウト・プランを指定する論理的なディスクに割り付けられ、第２のスラブは、第１のレイアウト・プランとは異なる第２のレイアウト・プランを指定する論理的なディスクに割り付けられることが可能である。第２の例として、スラブ使用法を指定するアプリケーションから少なくとも１つの記憶容量リクエストを受け取り、プロビジョニング・コンポーネントは、スラブのスラブ使用法によってレイアウト・プランを選択するように構成される。特に、第１のスラブは、第１のスラブ容量を有する論理的なディスクに割り付けられ、第２のスラブは、第１のスラブ容量とは異なる第２のスラブ容量を有する論理的なディスクに割り付けられる。
【００２３】
この最初の技術的側面の６番めの変形例として、多くのタイプのレイアウト・プランは記憶装置セットによって表わされ得る。例示的な配置図セットは、例えば１つの記憶装置に関するエクステントの割付けを指定する単一体のレイアウト・プランを含み得る。スラブ割付けリクエストの記憶容量をともに提供しながら少なくとも２つの記憶装置に関するエクステントの割付けを指定するストライピング式のレイアウト・プラン;スラブ割付けリクエストの記憶容量をそれぞれ提供し、ミラーリングされたスラブの割付けを指定するミラーリング式のレイアウト・プラン;そして、スラブ割付けリクエストの記憶容量をともに提供しながら、少なくとも１つの記憶装置に関する少なくとも１つのデータ・エクステントの割付けを指定する、検証型のレイアウト・プラン、またデータ・エクステントのためにベリファイヤ（検証用情報）を格納する少なくとも1つの他の記憶装置に関する少なくとも１つのベリファイヤ・エクステント。当業者は、ここに示された技術に関するシナリオ、組織構造、および使用態様についての多くの変形実施例を考案することが可能である。
【００２４】
＜Ｄ２．本発明に係る技術内容の変形例＞
複数の実施例において変形して実施可能な第２の技術的側面は、ここに開示された技術の応用例を含んでいる。
【００２５】
最初の例として、記憶領域を生成する割付けリクエストを受け取る際、実施例は記憶領域の初期化を差し控えることが可能である。第２の例として、（少なくとも1つのロケーション集合は、データ値をそれぞれ格納する少なくとも２つのデータ・ロケーションを含み、パリティー位置は、当該データ・ロケーションにおけるデータ値のパリティ値を格納する。そのようなシナリオでは、ロケーション集合のそれぞれのロケーションにおいて少なくとも１つのデータ値を書き込むための書き込みリクエストを受け取る際、本実施例は、データ・ロケーションにデータ値を書き込み；ロケーション集合用のパリティ値を計算し;ロケーション集合に関してパリティー位置にパリティ値を格納し;そして、ロケーション集合の中のロケーションにおいて既存の値を示すために使用法のビットマップを更新することが可能である。使用法のビットマップが、ロケーション集合内に存在するデータ値を示している場合、本実施例は、パリティ値を計算することが可能であり、ロケーション集合の中の他のデータ・ロケーションに格納される格納済みのデータ値を読み出し、格納済みのデータ値および書き込みリクエストのデータ値を使用してパリティ値を計算し;使用法のビットマップがロケーション集合内に値が存在することを示さない場合には、ロケーション集合内の他のデータ・ロケーションに関して、書き込みリクエストのデータ値およびデフォルト値を使用して、パリティ値を計算しする。さらに、書き込みがデータ値がないロケーション集合の中の少なくとも１つの書き込まれていないロケーションを含む場合、使用法のビットマップがロケーション集合内に値が存在することをを示さないならば、本実施例はロケーション集合のそれぞれの書き込まれていないロケーションにおいて、デフォルト値を書き込むことが可能である。代替的に、書き込みリクエストが、ロケーション集合内のの全てのデータ・ロケーションに関してデータ値を指定している場合には、本実施例は、書き込みリクエストのデータ値を使用して、パリティ値を計算することが可能である。
【００２６】
別の具体例として、ロケーション集合内の値を廃棄するリクエストを受け取った時点で、本実施例は、値がロケーション集合の中のロケーションにおいて存在しないことを示すために使用法のビットマップを更新することが可能である。
【００２７】
別の具体例として、それぞれのロケーション集合が少なくとも２つの弾力性のある値を含んでいる場合には、ロケーション集合の中の一つのロケーションの失敗を検知した時点で、本実施例は、値がロケーション集合に関して存在することを使用法のビットマップが示すかどうか判断することが可能である。
もしそうならば、本実施例は、ロケーション集合内のその他の弾力性のある値を使用することが可能であり、ロケーション集合においてその値を復元する。しかしながら、そうでなければ、具体化はロケーション集合内において値を復元することを差し控えることが可能である。
【００２８】
別の具体例として、本実施例は記憶装置セットに使用法のビットマップを格納することが可能である。特に、記憶装置セットへの書き込みリクエストをステージするように構成されたジャーナルを含む記憶装置セットについては、本実施例は、使用状態ビットマップを更新することが可能であり、これは、記憶装置セット内のロケーションへの書き込みリクエストをデステージする際に、使用状態ビットマップを更新する動作を含む。例えば、記憶装置セットのジャーナルは、ヘッド・ポインターおよび後部ポインターを備えたログ情報を含むことが可能であり、記憶装置セットへの書き込みは、それらが記憶領域へ結果的に書き込まれるまで最初にジャーナル（例えばヘッド・ポインターと後部ポインターの間において）に格納されることが可能である。そのような実施例においては、記憶装置に使用状態ビットマップを頻繁に書き込むのではなく、ちょうど書き込みがジャーナルから退避させられる前に、当該実施例は、記憶装置上の使用状態ビットマップを書き込むことが可能である（例えば、ジャーナル中の値を通り過ぎた後部ポインターをインクリメントすることにより）。例えば、記憶装置がジャーナルから値を退避させる前に失敗する場合、書き込まれた値が物理的な媒体上のジャーナルに依然として格納されており、また、当該装置はジャーナル中の書き込みを再び行うことにより失敗から回復するかもしれないので、この選択肢は実現可能かもしれない。別の具体例として、記憶装置セットは少なくとも２つの記憶領域、および当該記憶領域の中のそれぞれのロケーションにおいて値が存在する旨の表示をそれぞれ格納する使用状態ビットマップを含む使用状態ビットマップ配列を含み得る。
【００２９】
別の具体例として、使用状態ビットマップを格納する一つの態様として、使用状態ビットマップを圧縮して圧縮した使用状態ビットマップを生成し、記憶装置上に当該圧縮した使用状態ビットマップを格納することが可能である。さらに、使用状態ビットマップをランレングス符号化することによって、使用状態ビットマップを圧縮することは技術的に有利かもしない。さらに、本実施例は、圧縮比が圧縮比に関する閾値未満である場合には、圧縮した使用状態ビットマップの圧縮比を計算し、記憶装置セットに圧縮した使用状態ビットマップを格納し、圧縮比が圧縮比に関する閾値値未満でない場合、記憶装置セットに圧縮されていない使用状態ビットマップを格納することが可能である。別の具体例として、本実施例は、記憶装置セットの中の少なくとも２つのロケーションにおいて、少なくとも２つの使用状態ビットマップを格納するように構成され、使用状態ビットマップを読み込むために使用状態ビットマップ読み込みリクエストを受け取ることで、一連の使用状態ビットマップの系列内に含まれる最新の使用状態ビットマップを読み出す。
例えば、連続番号を備えるそれぞれの使用状態ビットマップ、および記憶装置ビットマップ内の連続する記憶区画の各々は、記憶装置セットに格納されたその他の使用状態ビットマップより高い連続番号（例えば、連続的にインクリメントする論理的な連続番号）と共に格納されることが可能である。あるいは、記憶装置セットは、最新の使用状態ビットマップへのポインターと少なくとも２つの使用状態ビットマップのスロットを含むログ情報であって、使用状態ビットマップに関するログ情報に格納されることが可能である。したがって、最新の使用状態ビットマップへのポインターをインクリメントし、最新の使用状態ビットマップへのポインターによって示される使用状態ビットマップ・スロット中の使用状態ビットマップを格納し、最新の使用状態ビットマップへのポインターによって示された使用状態ビットマップ・スロットにおける使用状態ビットマップによって読み出されることにより、使用状態ビットマップは格納される。当業者は、これ以外にも多種多様な変形実施例を工夫すｒことが出来るだろう。
【００３０】
＜Ｅ．コンピューティング環境＞
図３は、本明細書中が開示する一つ以上の技術内容を実装する基盤となる例示的なコンピューティング環境を図示する。そのような例示的なコンピューティング環境は、本発明の実施にとって適切である例示的な動作環境を単に例示するだけであり、いかなる形であれ、本発明に係る動作環境の範囲を限定することを示唆することを意図ものではない。そのような例示的なコンピューティング環境は、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド型またはラップトップ型のデバイス、モバイル型のデバイス（携帯電話、ＰＤＡ（Personal  Digital  Assistant）、メディア再生装置など）、マルチプロセッサ・システム、コンシューマ向け電子機器、ミニ・コンピュータ、メインフレーム型コンピュータおよび上述した任意のシステム類や装置類から構成される分散型コンピューティング環境などを含んでいるが上記したものだけに限定はされない。
【００３１】
図３は、本明細書中で上述した一つ以上の実施例を実装するように構成されるコンピュータ装置３０２を具備する例示的なシステム５００を図示する。一つの構成においては、コンピュータ装置３０２は、少なくとも一つのプロセッサ３０６と少なくとも一つのメモリ部品３０８とを含んでいる。コンピュータ装置の厳密な構成や設定内容と装置の機種に依存して、メモリ部品３０８は、揮発性メモリ（例えば、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭやフラッシュ・メモリなど）または中間のタイプやハイブリッド型のメモリ部品などとすることが可能である。この装置構成は、図３において、破線３０４によって示されている。
【００３２】
本発明に係る幾つかの実施例においては、装置３０２は、追加の特徴や機能を含むことが可能である。例えば、図３において、装置３０２は、一つ以上の追加的なストレージ部品３１０（揮発性又は不揮発性のストレージ部品）を含むことが可能であり、そのようなストレージ部品３１０は、ハード・ディスク・ドライブ、半導体ストレージ・デバイスおよび／またはその他の取り外し可能な又は内蔵型の磁気記録メディアや光学記録メディアを含むがこれらだけに限定はされない。一実施例においては、本明細書に開示された一つ以上の実施例を実装するためのコンピュータ読み出し可能かつプロセッサ実行可能な命令コードが、ストレージ部品３１０の中に記憶されている。コンピュータ読み取り可能な命令コードは、プロセッサ３０６による実行のために、メモリ部品１３０８の上にロードされることが可能である。
【００３３】
コンピュータ装置３０２はさらに、コンピュータ装置３０２が他の装置と通信することを可能にする一つ以上の通信用コンポーネント３１６を含むことも可能である。当該一つ以上の通信用コンポーネント３１６は、モデム装置、ネットワーク・インターフェース・カード（ＮＩＣ）、無線周波数送受信機、赤外線通信ポート、ＵＳＢ接続などを具備することが可能である。そのような通信用コンポーネント１３１６は、（物理的なコードやケーブルや配線を介した）有線接続や（可視光や赤外線や一つ以上の無線周波数などを介してネットワーク装置と無線により通信する）無線接続を具備することが可能である。
【００３４】
コンピュータ装置３０２は、一つ以上の入力デバイス３１４（例えば、キーボード、マウス、ペン、音声入力装置、タッチ式入力装置、赤外線カメラ、ビデオ入力装置など）を具備し、一つ以上の出力デバイス３１２（一つ以上のディスプレイ装置、スピーカー、プリンタ装置等）を含むことが可能である。一つ以上の入力デバイス３１４と一つ以上の出力デバイス３１４とは、有線接続、無線接続または両者の組み合わせを介してコンピュータ装置３０２に接続されることが可能である。一実施例においては、別のコンピュータ装置からの入力デバイス３１４または出力デバイス３１２がコンピュータ装置３０２の入力デバイス３１２または出力デバイス３１４として使用される場合もある。
【００３５】
コンピュータ装置１３０２の複数のコンポーネントは、様々な相互接続手段（例えば、バスのような）によって互いに接続されることが可能である。そのような相互接続手段には、ＰＣＩ  ＥｘｐｒｅｓｓのようなＰＣＩ（Peripheral  Component  Interconnect）、ＵＳＢ（Universal  Serial  Interface）、Ｆｉｒｅｗｉｒｅ（ＩＥＥＥ１３９４）、光学的なバス構造などが含まれ得る。さらに別の実施例においては、コンピュータ装置１３０２の複数のコンポーネントは、通信ネットワークによって相互接続され得る。例えば、メモリ部品１３０８は、異なる物理的な場所に置かれ、通信ネットワークを介して相互接続される複数の物理的な記憶装置によって構成されることが可能である。
【００３６】
当該技術分野における当業者であれば、コンピュータ読み取り可能な命令コードを記憶するのに利用されるストレージ装置は、ネットワーク内に分散配置されることが可能であることを理解するだろう。例えば、ネットワーク３１８を介してアクセス可能なコンピュータ装置３２０は、本明細書中で上述した一つ以上の実施例を実装するためのコンピュータ読み取り可能な命令コードを記憶することが可能である。コンピュータ装置３０２は、コンピュータ装置３２０をアクセスして実行のためのコンピュータ読み取り可能な命令コードの一部または全てをダウンロードすることが可能である。代替的に、コンピュータ装置３０２は、必要に応じて、コンピュータ読み取り可能な命令コードの一塊をダウンロードすることが可能であり、命令コードの幾つかは、コンピュータ装置３０２で実行され、それ以外の命令コードは、コンピュータ装置３２０で実行され得る。
【００３７】
＜用語の使用＞
本特許出願において使用されている通り、用語「コンポーネント」、「モジュール」、「システム」、「インターフェース」などは一般に、コンピュータと関連したハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアの何れか一つであるエンティティを意味するように意図されている。例えば、用語「コンポーネント」は、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト形式ファイル、実行可能ファイル、実行中のスレッド、プログラムおよび／またはコンピュータ装置であっても良いがこれらだけに限定はされない。例示目的のために、コントローラの上で実行中のアプリケーションとコントローラ自体の両者は、一つの「コンポーネント」とすることが可能である。一つ以上の「コンポーネント」は、実行中のプロセスやスレッドの内部に存在することが可能であり、また、「コンポーネント」は、一つのコンピュータ上に局所化されたり、２つ以上のコンピュータ間に分散配置されたりすることが可能である。
【００３８】
複数の実施例の多種多様な処理動作が本明細書中で開示された。一実施例においては、上述した一つ以上の処理動作は、一つ以上のコンピュータ読み取り可能媒体上に記録され、コンピュータ装置によって実行された際に、上述した処理動作をコンピュータ装置に実行させるための一つ以上のコンピュータ読み取り可能な命令コードによって構成されている。上述した処理動作の全て又は一部が本明細書中で説明されている順番は、これらの処理動作が特定の実行順序に制約されて実行される必要があると考えるべきではない。本明細書において教示された内容の利益を享受するために、当業者によって代替的な実行順序が考えられても良い。さらに、本明細書中の実施例において説明された全ての処理動作が必須ものというわけではない。
【００３９】
加えて、用語「例示的な」は、本明細書中において、具体例、事例、または例示を意味する役割を果たしている。本明細書中で「例示的である」として上述された任意の技術的側面や設計は、その他の技術的側面や設計と比較して技術的に優れていると解釈すべきではない。むしろ、、用語「例示的な」は、本発明に関する発明概念を具体的な形で提示することを意図して使われている。本明細書中で使用されている用語「または」は、包含的な意味での「または」であり、排他的な意味での「または」ではない。すなわち、そうではないとの特段の明示が無い限り、または文脈から明らかでない限り、「ＸはＡまたはＢを採用する」は、本来の意味で包含的な任意の置換を意味するように意図され、「ＸがＡを採用する」「ＸがＢを採用する」「ＸがＡとＢの両者を採用する」の何れもが「ＸはＡまたはＢを採用する」の意味する条件を充足する。加えて、そうではないとの特段の明示が無い限り、または単数形を意味することが文脈から明らかでない限り、本明細書中で使われている冠詞「ａ」「ａｎ」は、「一つ以上のもの」を意味すると解釈することが可能である。
【００４０】
本明細書中の開示は、一つ以上の実装形態に関して記述され図示されてきたが、本明細書の記述内容と添付図面を読んで理解することにより他の当業者は、これらの実装形態と均等な代替物および変形例を考え付くことが可能である。本明細書の開示内容はそのような均等な代替物および変形例の全てを網羅している訳ではなく、本発明の技術的範囲は、本明細書に添付した特許請求の範囲の記載によって定められる。特に、上述したコンポーネント類によって実行される様々な機能に関連して、そのようなコンポーネント類を記述するために使用された用語は、そうではないと明記された場合を除いて、本明細書中で上述された実施態様における機能を実行するための開示された構造と構造的に均等でなかったとしても、記述されたコンポーネントの特定の機能を実行可能な任意のコンポーネントに対応する（すなわち、機能的な意味で均等である）ものである。本開示の特定の技術的特徴は、幾つかある実装形態の中と一つだけとの関連で説明されてきたけれども、本発明を応用すべき任意の特定用途にとって望ましい又は技術的利点があるならば、そのような技術的特徴は、他の技術的特徴や他の実装形態の一つ以上を組み合わせて実施することが可能である。さらに、本明細書の全体および特許請求の範囲の記載において使われている「含む」、「有する」、「伴う」などの用語が意味する範囲は、用語「具備する」と同様に包含的な意味合いを有する。
【図１】
2014528127.tif 000003
【図２】
2014528127.tif 000004
【図３】
2014528127.tif 000005
【国際調査報告】
2014528127.tif 000006
2014528127.tif 000007
2014528127.tif 000008