JP2022552804A - データ・ストレージ・システムにおけるガベージ・コレクション - Google Patents

データ・ストレージ・システムにおけるガベージ・コレクション Download PDF

Info

Publication number
JP2022552804A
JP2022552804A JP2022520642A JP2022520642A JP2022552804A JP 2022552804 A JP2022552804 A JP 2022552804A JP 2022520642 A JP2022520642 A JP 2022520642A JP 2022520642 A JP2022520642 A JP 2022520642A JP 2022552804 A JP2022552804 A JP 2022552804A
Authority
JP
Japan
Prior art keywords
extent
destination
sequence number
current
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022520642A
Other languages
English (en)
Inventor
ムーア,ロデリック,ガイ,チャールズ
マルホランド,マイルス
パッシングハム,ウィリアム,ジョン
ボードリ,リチャード,アラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022552804A publication Critical patent/JP2022552804A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

ガベージ・コレクションが、その仮想アドレス空間がエクステントでアドレスされる仮想化されたストレージ・システムのために実行される。送信元エクステントにおける有効データが、キャッシュを介して、宛先エクステントにコピーされる。一度送信元エクステントにおけるすべての有効データが1または複数の宛先エクステントにコピーされると、送信元エクステントが再利用される。送信元エクステントは、送信元エクステントからコピーされた有効データを受信した1または複数の宛先エクステントが一杯であると判定され、また、送信元エクステントから宛先エクステントへキャッシュを介してコピーされた有効データが、キャッシュの中からフラッシュされた後のみ、再利用のために解放される。

Description

本発明は、データ・ストレージ・システムにおけるガベージ・コレクションに関する。
データ・ストレージ・システムへの書込みを実行するための一般的な戦略は、常にデータドメイン内の新しいデータ範囲に書込むことである。この戦略は、ディスクからの読み出しを必要とせずにRAID(Redundant Array of Independent Disk)アレイを更新することが可能であるという利点を有する。
典型的な「書き込み」は、次のように実行されるであろう:アドレス、サイズおよびいくつかのデータとともに、所与のボリュームに対する入力-出力(IO)が受信される。ストレージ・アロケータは、そのボリュームを物理ドメイン上のストレージ位置に割り当てる。IOパスが、次いで、物理ドメイン上のその位置に書き込む。一度書き込みが完了すると、順方向および逆方向のルックアップ構造が更新され、IOが完了する。順方向ルックアップの更新の一部として、ジャーナルもまた更新される。
典型的な「読み取り」は、順方向ルックアップ構造を確認し、データドメイン上のどこにデータが位置しているかを識別するであろう。データドメインは、次いで、読み取られ、データがユーザに戻される。
種々の実施形態は、仮想アドレス空間が物理アドレス空間にマッピングされるストレージ・システムにおけるガベージ・コレクションの方法を対象としており、ここで、仮想アドレス空間は、エクステントでアドレスされ、ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有する。本方法は、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして第1の宛先エクステントを選択するステップと、ガベージ・コレクションの対象となる現在の送信元エクステントとして第1の送信元エクステントを選択するステップであって、現在の送信元エクステントは、有効データの1または複数の部分を含む、選択するステップとを含む。本方法は、また、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして選択された宛先エクステントが一杯であるか否かを判定するステップを含む。本方法は、ガベージ・コレクションの対象となる現在の送信元エクステントとして選択された送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むか否かを判定するステップを含む。加えて、本方法は、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントが一杯ではないと判定され、かつ、ガベージ・コレクションの対象となる現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むと判定されたことに応答して、宛先エクステントにコピーされていない有効データの部分の1つを、キャッシュ・メモリを介して、現在の送信元エクステントから現在の宛先エクステントへコピーするステップを含む。さらに、本方法は、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントが一杯であると判断したことに応答して、キャッシュ・メモリの中から、キャッシュ・メモリを介して、現在の宛先エクステントにコピーされる有効データをフラッシュするステップを含む。加えて、キャッシュ・メモリの中から現在の宛先エクステントに移動した有効データをフラッシュするステップに後続して、本方法は、キャッシュ・メモリを介して現在の宛先エクステントにすべての有効データがコピーされた1または複数の送信元エクステントの仮想アドレス空間にマップされた物理アドレス空間への書き込みに利用可能なように解放するステップを含む。
ガベージ・コレクションの方法の種々の実施形態は、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントが一杯であると判断したことに応答して、ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして第2の宛先エクステントを選択するステップを含んでもよい。
ガベージ・コレクションの方法の種々の実施形態は、ガベージ・コレクションされたデータを受信するための第2の宛先エクステントが一杯であると判定したことに応答して、キャッシュ・メモリの中から、キャッシュ・メモリを介して、現在の宛先エクステントにコピーされた有効データをフラッシングするステップをさらに含み、ここで、キャッシュ・メモリの中から、キャッシュ・メモリを介して現在の宛先エクステントにコピーされた有効データをフラッシングするステップは、宛先エクステントが一杯であると判定された順序と同一の順序でフラッシュされる。
ガベージ・コレクションの方法の種々の実施形態は、ガベージ・コレクションの対象となる現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの部分を含まないと判定することに応答して、ガベージ・コレクションの対象となる現在の送信元エクステントとして第2の送信元エクステントを選択するステップをさらに含んでもよい。
ガベージ・コレクションの方法の種々の実施形態は、連続番号を各宛先エクステントに割り当てることを用いて、宛先エクステントのキャッシュのフラッシング後、物理アドレス空間の解放を制御するステップを含み、各連続番号は、その宛先エクステントへデータをコピーすることによってそのガベージ・コレクションが完了した送信元エクステントをルックアップすることを可能とし、それについてフラッシングが行われていない最も古い宛先エクステントの連続番号が、低水位の連続番号(low watermark sequence number)として格納され、送信元エクステントからのガベージ・コレクションのために割り当てられた現在の宛先エクステントの連続番号が、高水位の連続番号(high watermark sequence number)として格納され、低水位の連続番号が、キャッシュ・メモリの中から最も古い宛先エクステントのフラッシングが完了すると増分されと、高水位の連続番号が、ガベージ・コレクションのためにさらに宛先エクステントが選択されると増分される。
ガベージ・コレクションの方法の種々の実施形態は、利用可能な仮想アドレス空間が閾値未満であると判定されたことに応答して、送信元エクステントから宛先エクステントへの有効データのコピーを一時停止するステップと、低水位の連続番号と高水位の連続番号との値の間の連続番号を有する少なくとも1つの宛先エクステントの仮想アドレス空間にマップされた物理アドレス空間への書き込みに利用可能なように解放するステップとを含む。
ガベージ・コレクションの方法の種々の実施形態は、低水位の連続番号と高水位の連続番号との値の間の連続番号を有する宛先エクステントのための回復情報を格納するジャーナルを維持するステップを含んでもよく、回復情報は、その有効データがガベージ・コレクションの対象であった送信元エクステントと対応する宛先エクステントとの間のマッピングを含む。
ガベージ・コレクションの方法の種々の実施形態は、ガベージ・コレクション中のキャッシュ内容の損失を決定することに応答して、回復情報を使用して、回復情報で識別される送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造を再構築するステップをさらに含んでもよい。
種々の実施形態は、仮想アドレス空間が物理アドレス空間にマッピングされるストレージ・システムにおけるガベージ・コレクションのためのコンピュータ・プログラム製品を対象とし、ここで、仮想アドレス空間は、エクステントでアドレスされ、ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有する。
種々の実施形態は、物理アドレス空間にマッピングされる仮想アドレス空間を有するストレージ・システムであって、仮想アドレス空間は、エクステントでアドレスされ、ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有し、ストレージ・システムは、ストレージ・アロケータと、ガベージ・コレクタとを含む。
種々の実施形態は、キャッシュ障害時に進行中であったガベージ・コレクションに関するデータ損失に対抗してデータ・ストレージ・システムを保護することができる。種々の実施形態は、ガベージ・コレクションされたデータに関連するキャッシュ・フラッシュ動作と協調されるガベージ・コレクション・アルゴリズムを提供する。ガベージ・コレクションは、ストレージ・アロケータが、ガベージ・コレクションされたブロックから移動されているライブデータ(live data)が、キャッシュを介してその新しい物理メモリ位置に成功裏にフラッシュされ、よって、ガベージ・コレクションされたライブデータのための宛先ブロックに安全に到着し、また、格納されたことを確信するまで、古いデータ(つまり、キャッシュ・フラッシュされたブロック内のライブデータ)が破棄されないように実行される。
種々の実施形態は、圧縮を使用するストレージ・システムにおいて成功裏に動作するように設計されているが、実施形態は、圧縮を使用しないストレージ・システムにおいても使用されてもよいことに留意されたい。本実施形態の実装は、新しいデータを新しい場所に書き込み、ガベージ・コレクションに依存する、任意のデータ削減のために使用されてもよい。例えば、同じ場所への上書きがうまく行くであろう場合でも、非圧縮データが提案されているように書き込まれてもよい。
宛先エクステントのキャッシュのフラッシング後の物理アドレス空間の解放は、所定の実施形態において、連続番号を各宛先エクステントに割り当てることを用いて、制御されてもよく、各連続番号は、その宛先エクステントへデータをコピーすることによってそのガベージ・コレクションが完了した送信元エクステントをルックアップすることを可能とし、それについてフラッシングが完了していない最も古い宛先エクステントの連続番号が、低水位の連続番号として格納され、送信元エクステントからのガベージ・コレクションのために割り当てられた現在の宛先エクステントの連続番号が、高水位の連続番号として格納され、ここで、低水位の連続番号が、キャッシュ・メモリの中から最も古い宛先エクステントのフラッシングが完了すると増分され、高水位の連続番号が、ガベージ・コレクションのためにさらに宛先エクステントが選択されると増分される。利用可能な仮想アドレス空間が不足したと判定される場合、これは、送信元エクステントから宛先エクステントへの有効データのコピーを一時停止することと、低水位の連続番号と高水位の連続番号との間の連続番号を有する少なくとも1つの宛先エクステントの仮想アドレス空間にマップされた物理アドレス空間への書き込みに利用可能なように解放することによって管理されてもよい。
偶発的に生じるキャッシュの内容の損失または破損からの回復のために、低水位の連続番号と高水位の連続番号との間の各連続番号について回復情報を格納するジャーナルを維持することが有利であり、回復情報は、各連続番号について、そのガベージ・コレクションが、データを前記連続番号に関連付けられた宛先エクステントに移動することによって完了する送信元エクステントへのマッピングを含む。ガベージ・コレクション中、キャッシュの内容が失われた場合、回復情報は、回復情報で識別される送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造を再構築するために使用されてもよい。
方法およびストレージ・システムは、各書込みが新しいエクステントに対して実行されるオペレーティング・システムに関連した使用に特に適しているが、特に限定されるものではない。本方法およびストレージ・システムは、データが圧縮された形で格納されるオペレーティング・システムとともに使用するのに適しているが、特に限定されない。
要約すると、種々の実施形態は、仮想アドレス空間が、エクステントと参照されるブロックでアドレスされる、仮想化されたストレージ・システムのためのガベージ・コレクション方法が提供される。古いエクステントは、それらのまだ有効なデータを、宛先エクステントと参照される新しいエクステントに転送することによって、ガベージ・コレクションされる。その後、ガベージ・コレクションされたエクステントは、新たな書込みに再使用するために解放されてもよい。ガベージ・コレクションされたデータが物理メモリに書き込まれているプロセス中のキャッシュ・ロスの可能性を考慮するために、ガベージ・コレクションされるエクステントは、最初は、これらのガベージ・コレクションの後に解放されることが差し控えられる。一度、ガベージ・コレクションされたデータを受信する宛先エクステントが一杯になると、その宛先エクステントのキャッシュ・フラッシュが開始される。その宛先エクステントに関連付けられるガベージ・コレクションされたエクステントのメモリ空間が、ついで、キャッシュ・フラッシュの完了を条件として解放される。
以下、図面に示した例示的な実施形態を参照しながら、単なる例として、本発明をさらに説明する。
大容量ストレージ・デバイスを備えたコンピュータ・システム環境を示す図である。 データ・ストレージ・システムのハードウェア構造を示すブロック図である。 本開示による方法におけるステップを示すフロー図である。 本開示による方法におけるステップを示すフロー図である。 (A)~(D)本開示による方法によるガベージ・コレクションの進行を例示する概略ブロック図である。 本開示の実施形態によるクラウド・コンピューティング環境を示す図である。 本開示の実施形態による抽象化モデルレイヤを示す図である。 本開示の実施形態によるストレージ・システムに接続されるサーバの概略図である。
以下の詳細な説明では、説明の目的のためであり、限定の目的ではなく、本開示のより良い理解を提供するべく、具体的な詳細が示されている。本開示は、これらの具体的な詳細から離れた他の実施形態において実践されてもよいことが当業者にとって明らかであろう。
上述したように、データ・ストレージ・システムへの書込みを実行するための一般的な戦略は、常にデータドメイン内の新しいデータ範囲に書込むことである。この戦略は、ディスクからの読み出しを必要とせずにRAID(Redundant Array of Independent Disk)アレイを更新することが可能であるという利点を有する。しかしながら、常に新しいデータ範囲に書き込みを実行することの結果として、多くのメモリ空間が割り振られ、これはガベージ・コレクションによってリクレーム(reclaim)される必要がある。実際、データ圧縮が使用されている場合、これはIBM(登録商標)z/OS(登録商標)など一部のオペレーティング・システムではオプションであるが、書き込みのサイズは、そのサイズがデータの圧縮性に依存するため、必然的に変動することになる。例えば、一度の書き込みで、8Kの空間に値する可能性があり、一方で他の書き込みでは1Kのみである可能性がある。それは、したがって、圧縮が使用される場合に上書きデータが古いメモリ位置に収まることを保証できないため、一貫してデータを適切な位置に上書きですることは困難であり、そのため、書き込みは、常に新しいデータ範囲に対して実行する必要がある。
ガベージ・コレクションは、上書きの結果として、陳腐化されたデータが主要となり、まばらなライブデータのみが含まれるようになった古いデータ範囲をリクレーム(reclaim)する。ガベージ・コレクションは、残りのライブデータをサルベージし、それを連続ブロックで新しいデータ範囲に書き込むことによって進行する。データが上書きされる場合、無効化されるといわれる。ガベージ・コレクションは、データドメイン上の無効化されたデータを有する領域を取得し、ライブデータをその中から移動させ、データドメイン上の新しい位置にそれを書き込み、プロセスにおいて、順方向ルックアップ・メタデータを更新する。順方向ルックアップ・メタデータ構造は、ツリー、最も一般的にはbツリーとして実装されてもよい。順方向bツリー構造は、仮想ストレージ・システムにおいて、物理メモリアドレスに仮想メモリアドレスをマッピングする。逆方向ルックアップ・メタデータは、どのボリュームが、物理ドメインの特定の範囲を参照するかを記述し、したがって、いずれのデータサブレンジが、物理ドメイン上で割り当てられ、また割り当てられていないかを文書化する。逆方向ルックアップ・メタデータは、次いで、ガベージ・コレクション・アルゴリズムによって必要とされる。
ジャーナルが維持され、これはキャッシュ障害の場合に順方向ルックアップ・メタデータ構造を再構築するために使用することができる。キャッシュ障害は、概して、多数のギガバイトのライブデータの損失を引き起こす。ジャーナリングは、順方向ルックアップ・メタデータに対する全ての更新が順次ログに記録されることを保証する。このログは、順方向ルックアップ・メタデータを再構築するために再生されてもよい。順方向ルックアップ・メタデータの周期的なコピー(時には「スナップショット」と参照される。)をこのスキームに統合することにより、ジャーナルが最後のスナップショットから順方向のルックアップ更新を追跡することを必要とするだけなので、潜在的に絶えず成長するジャーナルサイズの必要性が除かれる。順方向ルックアップ・メタデータがbツリーのようなツリー構造を有する場合、周期的にコピーすることは、ツリー・スナップショットと参照される場合がある。ジャーナルが参照しているデータ自体は、そうすることの書込み帯域幅の高いコストに起因して、典型的には、ジャーナル処理(journaled)されないことに留意されたい。順方向ルックアップ・メタデータをジャーナル処理(例えば、bツリー更新)するアプローチは、はるかに少ない帯域幅を必要とする。ジャーナル処理およびルックアップ構造の更新は、異なる実施形態において、種々のモジュールまたはコンポーネントによって実行されてもよい。種々の実施形態においては、ジャーナル処理およびルックアップ構造の更新は、ストレージ・アロケータによって、またはガベージ・コレクタによって実行されてもよい。
典型的な「書き込み」は、次のように実行される。アドレス、サイズおよびいくつかのデータとともに所与のボリュームに対して入力-出力(IO)が受信される。ストレージ・アロケータは、そのボリュームを物理ドメイン上のストレージ位置に割り当てるであろう。IOパスは、次いで、物理ドメイン上のその位置に書き込む。一度書き込みが完了すると、順方向ルックアップ構造および逆方向ルックアップ構造が更新され、IOが完了する。順方向ルックアップの更新の一部としてジャーナルもまた更新される。
典型的な「読み取り」は、順方向ルックアップ構造を確認し、データドメイン上のどこにデータが位置しているかを識別するであろう。データドメインが、次いで、読み取られ、データがユーザに戻される。
システム障害の場合、キャッシュの内容が失われる可能性がある:データ削減技術を実装するコンポーネントの下位にキャッシュが存在する場合は、インフライトのデータ(in-flight data)(インフライトのデータ(data in flight)は、未だ完全にメディアに書き込まれておらず、そのためキャッシュが破棄された場合に潜在的に失われる任意のデータである。)が失われる可能性がある。これは、ストレージ・システムにおける共通の故障パターンであり、ある程度は許容されるか、あるいは少なくとも予期される可能性がある。これは、このようなキャッシュを用いた場合に生じる性能のトレードオフである。
更新のための固定された物理ドメイン位置またはシック・ボリュームを有するストレージ・システムでは、更新が障害の時点でキャッシュに保留されていた場合に、結果として古いデータが返されるだけなので、キャッシュの損失は許容される可能性がある。しかしながら、データ削減されたボリュームでは、上書き中に同一の場所に一貫して書き込むことが困難であり、これは、障害の時点でガベージ・コレクションされていたデータもまた失われ、古いデータのこの一部が返されない可能性があることを意味する。ファイルシステムにおいては、多くの場合、陳腐化したデータを返すことは、メディア・エラーを返す(データの損失)を返すことよりも好ましい。
図1は、例示的なコンピュータ・システム10を示す。コンピュータ・システム10は、中央処理ユニット(CPU)12を含み、CPU12は、大容量ストレージ・デバイス14およびメモリ・デバイス16に接続される。大容量ストレージ・デバイスは、ハードディスクドライブ(HDD)デバイスを含んでもよく、HDDデバイスは、独立ディスク冗長アレイ(RAID,Redundant Array of Independent Disks)で構成されてもよい。ガベージ・コレクション動作は、システム10または他の場所に配置されたデバイス(複数可)14上で実行されてもよい。メモリ・デバイス16は、電気的消去可能なプログラマブル・リード・オンリー・メモリ(EEPROM)または、関連するデバイスのホスト、例えば、RAM、ROM、FLASH(登録商標)などのメモリを含んでもよい。メモリ・デバイス16および大容量ストレージ・デバイス14は、信号伝送媒体を介してCPU12に接続される。加えて、CPU12は、通信ポート18を介して、取り付けられた追加的な複数のコンピュータ・システム22および24を有する通信ネットワーク20に接続される。コンピュータ・システム10は、1または複数のプロセッサデバイス(例えば、CPU12)と、コンピュータ・システム10の個々のコンポーネント毎の追加のメモリ・デバイス16とを含み、本明細書で説明されるようなガベージ・コレクションおよび他の動作を実行および実施してもよい。
図2は、本発明の実施形態を実装するためのコンピュータ・システムにおけるデータ・ストレージ・システムのハードウェア構造を示す例示的なブロック図200である。ホストコンピュータ210,220,225は、それぞれ、データ・ストレージ・システム200の一部としてのデータ処理を行う中央処理ユニットとして機能する。ホスト(物理または仮想デバイス)210,220,225は、データ・ストレージ・システム200において本発明の目的を達成するための1または複数の新しい物理デバイスまたは論理デバイスであってもよい。一実施形態においては、単なる例であるが、データ・ストレージ・システム200は、IBM(登録商標)System Storage(登録商標)V9000(登録商標)として実装されてもよい。ネットワーク接続260は、ファイバ・チャネル・ファブリック、ファイバ・チャネル・ポイント・ツー・ポイント・リンク、ファイバ・チャネル・オーバ・イーサネット・ファブリックまたはポイント・ツー・ポイント・リンク、FICONまたはESCON I/Oインタフェース、任意の他のI/Oインタフェース・タイプ、無線ネットワーク、有線ネットワーク、LAN、WAN、異種または同種、パブリック(つまりインターネット)またはプライベート、またはこれらの任意の組み合わせであってもよい。ホスト210、220、225は、ローカルであってもよく、1以上の位置の間で分散されていてもよく、ファイバ・チャネルやFICON、ESCON、イーサネット、ファイバ・オプティクス、無線、または同軸アダプタといった、ストレージ・コントローラ240への任意のタイプのファブリック(またはファブリック・チャネル)またはネットワーク・アダプタ260を備えてもよい。データ・ストレージ・システム200は、したがって、通信するための適切なファブリックまたはネットワーク・アダプタ260を備える。データ・ストレージ・システム200は、ストレージ・コントローラ240およびストレージ230を含んで、図2に図示されている。
ストレージ・コントローラ240は、マイクロプロセッサ242、システムメモリ243および不揮発性ストレージ(NVS)216を含む単一の処理ユニットとして図2に図示されている。ストレージ・コントローラ240は、しかしながら、複数の処理ユニットを含んでいてもよく、複数の処理ユニットは、それぞれ自身のプロセッサ複合体およびシステムメモリを備え、データ・ストレージ・システム200内の専用ネットワークによって相互接続される。ストレージ230は、ストレージ・アレイのような、1または複数のストレージ・デバイスから構成されてもよく、この1または複数のストレージ・デバイスは、ストレージネットワークによってストレージ・コントローラ240に接続される。
いくつかの実施形態においては、ストレージ230に含まれるデバイスは、ループ・アーキテクチャにて接続されてもよい。ストレージ・コントローラ240は、ストレージ230を管理し、ストレージ230に対して意図された書き込み要求および読み出し要求の処理を容易にする。ストレージ・コントローラ240のシステムメモリ243は、オペレーションソフトウェア250、プログラム命令およびデータを格納し、これらには、プロセッサ242が、ガベージ・コレクションを含む、ストレージ230を管理することに関連付けられた機能および方法ステップを実行するためにアクセスすることができる。図2に示すように、システムメモリ243は、ストレージ230に対するキャッシュである内部メモリキャッシュ245を含む(あるいは、外部キャッシュと通信する)。キャッシュ・メモリは、書き込み要求および読み出し要求それぞれの書き込みデータおよび読み出しデータをバッファリングするために使用される。一実施形態においては、キャッシュ245は、システムメモリ243外部のデバイスに割り当てられているが、マイクロプロセッサ242によってアクセス可能に維持され、データ損失に対する追加のセキュリティを提供するように機能することができる。
いくつかの実施形態においては、キャッシュ245は、揮発性メモリおよび不揮発性メモリで実装され、データ・ストレージ・システム200の性能を向上させるためにローカルバス(図2には示されていない)を介してマイクロプロセッサ242に結合される。データ・ストレージ・コントローラ240に含まれるNVS216は、マイクロプロセッサ242によってアクセス可能であり、ガベージ・コレクションを含む動作のための追加のサポートを提供する。NVS216は、データを保持するために電力を必要としない不揮発性メモリで実現され得るため、永続性キャッシュと参照される場合がある。NVS216は、キャッシュ245に統合されてもよい。いくつかの実施形態においては、バッテリのようなバックアップ電源(図2には示されていない)が、データ・ストレージ・システム200への電力が失われる場合に、そこに格納されるデータを保持するのに十分な電力をNVS216に供給する。特定の実施形態においては、NVS216の容量は、キャッシュ245の総容量以下である。
ストレージ230は、ストレージ・アレイのような、1以上のストレージ・デバイスから物理的に構成されてもよい。ストレージ・アレイは、ハード・ディスクのような個々のストレージ・デバイスの論理グループである。ある実施形態においては、ストレージ230は、JBOD(Just a Bunch of Disk)アレイまたはRAIDアレイで構成される。物理ストレージ・アレイの集合をさらに組み合わせて、ランクを形成してもよく、ランクは、物理ストレージを論理構成から分離する。ランク内のストレージ空間は、論理ボリュームに割り当てられてもよく、論理ボリュームは、書き込み/読み出し要求において指定されるストレージ位置を定義する。
図2に示すように、ストレージ・システムは、論理ボリュームあるいは単に「ボリューム」を含んでもよく、異なる種類の割り当てを有していてもよい。ストレージ230a,230bおよび230nは、データ・ストレージ・システム200におけるランクとして示され、本明細書では、ランク230a,230bおよび230nと参照される。ランクは、データ・ストレージ・システム200にローカルであってもよいし、物理的に離間した位置に位置してもよい。言い換えると、ローカル・ストレージ・コントローラは、リモート・ストレージ・コントローラと接続してもよく、離間した位置でのストレージを管理してもよい。ランク230aは、2つの全体ボリューム234,236と、1つの部分ボリューム232aとともに構成されて示されている。ランク230bは、別の部分ボリューム232bとともに示されている。したがって、ボリューム232は、ランク230aおよび230bを横断して割り当てられる。ランク230nは、ボリューム238に対し全体で割り当てられるよう、つまり、ランク230nは、ボリューム238に対する全物理ストレージを参照するように示されている。上記の例から、ランクが、1または複数の部分的ボリュームもしくは全体的なボリュームまたはその両方を含むように構成されてもよいことが理解されるであろう。
ストレージ・コントローラ240は、ジャーナル・ファイルシステムにおいてガベージ・コレクションを補助するガベージ・コレクション・モジュール255を含む。ガベージ・コレクション・モジュール255は、ストレージ・コントローラ240のコンポーネント、ホスト210,220,225およびストレージ・デバイス230と連携して動作する。ガベージ・コレクション・モジュール255は、キャッシュ245またはストレージ・コントローラ240の他のコンポーネント内に位置してもよい。
ストレージ・コントローラ240は、ホストコンピュータ210、220、225へのファイバ・チャネル・プロトコルを制御する制御スイッチ241と、全ストレージ・コントローラ240を制御するマイクロプロセッサ242と、ストレージ・コントローラ240の動作を制御するためのマイクロプログラム(オペレーションソフトウェア)250を格納する不揮発性制御メモリ243と、データを一時的に格納(バッファリング)するキャッシュ245と、データを読み出しおよび書き込みするためにキャッシュ245を補助するバッファ244と、ストレージ・デバイス230へのまたはストレージ・デバイス230からのデータ転送を制御するプロトコルを制御する制御スイッチ241と、情報が設定され得るガベージ・コレクション・モジュール255とを含む。ジャーナル・ファイルシステムにおいてガベージ・コレクションを支援するために複数のバッファ244が実装されてもよい。
ホストコンピュータまたは1または複数の物理または仮想デバイス210,220および255並びにストレージ・コントローラ240は、インタフェースとしてネットワーク・アダプタ(これは、ファイバ・チャネルであってもよい)260を通じて、すなわち「ファブリック」と参照されるスイッチを経由して、接続される。マイクロプロセッサ242は、メモリ243を制御し、ホストデバイス(物理または仮想)210からのコマンド情報と、ホストデバイス(物理または仮想)210を識別するための情報とを格納することができる、制御スイッチ241、バッファ244、キャッシュ245、オペレーションソフトウェア250、マイクロプロセッサ242、メモリ243、NVS216およびガベージ・コレクション・モジュール255は、相互に通信する。オペレーションソフトウェア245のようなコンポーネントの一部または全部は、ジャーナル・ファイルシステムにおいてガベージ・コレクションを実行するためにメモリ243に組み込まれてもよい。図示されるデバイス内の各コンポーネントは、一緒に結合されていてもよく、互いに通信してもよい。
図7は、本発明の原理が種々の実施形態で実装され得るストレージ・システム712に接続されたサーバ710を示す。サーバ710は、インタフェース、例えばSCSI(Small Computer system interface)などの規格を用いたインタフェースを介して、ストレージ・システム712に対して読み出しおよび書き込みの動作を実行する。ストレージ・システム712は、処理およびストレージ機能を提供する複数の接続された物理コンポーネントを有する。一次長期ストレージ機能は、物理ストレージ・デバイス714のセット(好ましくは、ディスクのセットから構成される)によって提供され、物理ストレージ・デバイス714のセットは、論理割り当て領域716に分割される。追加のメモリが、また、書き込みキャッシュ718によってストレージ・システム712内に提供され、書き込みキャッシュ718は、ストレージ・システム712の処理コンポーネントによってローカルで使用される。
外部サーバ710の視点からは、ストレージ・システム712は、外部サーバ710に、格納されたデータを論理的に提示している1または複数の仮想ディスク720(vdisk)を提示する。サーバ710に対して単一のvdisk720上に存在するものとして表現されたデータは、実際には、物理ストレージ領域714内の異なるディスク714に格納されてもよい。vdisk720と物理ディスク714との間のマッピングは、ストレージ・システム712内の2つのコンポーネント、順方向ルックアップ構造722および逆方向ルックアップ構造724によって管理される。順方向ルックアップ構造722は、vdisk720内の1または複数のアドレスを、データが格納されるディスク714内の実際の物理位置(複数可)にマッピングする。逆方向ルックアップ構造724は、ディスク714内の物理位置(複数可)を、1または複数のvDisk720内のアドレス(複数可)にマッピングし戻す。
サーバ710からvdisk720に読み出しが到着すると、vdisk720は、順方向ルックアップ構造722と通信し、データの物理アドレスを取得し、物理ドメイン714内のアドレスから必要なデータを読み出す。読み出しの場合、順方向ルックアップ構造722または逆方向ルックアップ構造724のいずれに対する変更も必要ではない。
サーバ710からvdisk720に書き込みが到達した場合の挙動は、より複雑になる。新しいデータがディスク714に書き込まれる場合、順方向ルックアップ構造722が更新されて、vdisk720内の新しいデータのアドレスを、ディスク714内に実際に格納されるとしたデータの物理位置に接続するようにしなければならない。この場合、順方向ルックアップ構造722および逆方向ルックアップ構造724の両方は、vdisk720によってサーバ710に対して提示されたデータと、データが格納されるディスク714における実際の物理位置との間の接続を反映するために更新されなければならない。
ストレージ・システム712は、また、2つのさらなるコンポーネント、ストレージ・アロケータ726およびガベージ・コレクタ728を含む。ストレージ・アロケータ726は、複数の機能を実行し、第1に、vdisk720に伝達される、物理ドメイン714内のライブ領域716からライブ・ブロックを割り当て、以下詳細に説明される、割り当てられたデータに対する自由リストを維持する。新しいデータがストレージ・システム712内に書き込まれる場合、順方向ルックアップ構造722は、割り当てられたブロック位置によって決定される位置に書き込む。最上位のストレージ・アロケータ726は、任意の所与の時間に追跡される「アクティブ」領域716のセットを有する。これらの有限数の領域716が追跡されてもよい。例えば、(例えば)1ギガバイトの領域サイズを有するエクサバイトの物理ドメイン714においては、これは、10億の領域にわたる追跡をもたらすであろう。ストレージ・アロケータ726内の領域エントリがコスト4B(つまり、領域716内のどれだけブロックが利用可能であったかを追跡する)のみである場合でさえ、これは、キャッシュとしてより良好に使用されるメモリである4ギガバイト分のメモリを費やすであろう。したがって、アクティブ領域716のセットは、N個の領域716の大きさ(Nはキャッシュ718によって処理可能な最大数)まで維持される。アクティブ領域716内の全てのストレージが使い果たされると、この全領域716は、アクティブ領域716のセットを出て、領域716を追跡するために使用されるメモリがリクレームされてもよく、適用可能であれば、ガベージ・コレクタ728によってガベージ・コレクションが実行される。全てのN個の領域716がアクティブである場合、さらなる領域716は、割り当てることができず、これは、自由リスト(メモリの未割り当てブロックのリスト)が追加のホストブロックを受信できないことを意味する。ガベージ・コレクタ728は、残りのライブデータを新しい領域716に再書き込みすることによって、存在する限定されたライブデータで領域716を本質的にリクレームし、これにより、これらのリクレームされた領域716をストレージ・アロケータ726に解放する。ガベージ・コレクタ728(またはガベージ・コレクション・モジュール)は、ガベージ・コレクションを行うために使用される逆方向ルックアップ構造724に接続する。
ストレージ・システム712は、シン・プロビジョンされる(空間効率としても知られている)としてサーバ710に提示され、ここでは、基礎となるストレージは、ホスト(サーバ710)に提示されるものよりもはるかに小さくなる可能性がある。これは、仮想ドメイン書き込みを物理ドメインにマッピングするメタデータ構造によって、また、圧縮および重複排除によって達成される。圧縮を利用する実装は、ガベージ・コレクションとして知られる、空間リカバリーのためのメカニズムを実装しなければならず、これは、同じ仮想アドレスへの任意の2つの書込みが同じ量の物理ストレージを使用することの保証がないためである。長い間、ディスク714は、フリーの空間の多数の小領域を有して残されており、物理ドメインにおける書き込みを移動することによって(および仮想ドメイン内のそれらのマッピングを更新することによって)これらを合体させることが望ましい。
次に、ジャーナルの役割が説明される。ジャーナルは、bツリー内への更新を追跡する。bツリーは、仮想アドレスおよび物理アドレス間のマッピングを格納する。ジャーナルの役割は、更新中にエラーが発生した場合に、これらのマッピングに対する変化を追跡することである。bツリーは、その後、ジャーナルの回復情報を参照して復元されてもよい。キャッシュの内容の消失や他のエラーの結果としての仮想ドメインおよび物理ドメイン間のマッピングの破壊は、回避される。
この上書き動作のコンテキストにおいては、ジャーナルにログするために関連するステップは、新しいデータを新しい位置に書き込むステップ、新しい位置の物理アドレスをログするようにbツリーを更新するステップ、および古い物理データを無効である(陳腐化される)としてマーキングするステップである。ガベージ・コレクションは、次いで、実行されて、無効データと入り混じる非無効データ(すなわち、まだ有効なデータ)を移動する必要がある。典型的には、特定の仮想メモリブロック内の有効データは、合計のうち非常に小さな部分、例えば10%以下しか構成しないであろう。ガベージ・コレクションは、最もコールド(すなわち、メイン・メモリ、物理ストレージ上で、もはやキャッシュ・メモリ内にはない)である可能性がある未だ有効なデータを移動させるであろうし、ガベージ・コレクションの働きは、このコールドデータをホット、つまり、キャッシュ・メモリにおいてインフライトになるようにし、したがって、クラッシュ時の損失を受けるリスクがある。
種々の実施形態は、仮想アドレス空間が物理アドレス空間にマッピングされる仮想化ストレージ・システムのためのガベージ・コレクションの方法を提供する。本方法は、システムのストレージ・アロケータを修正することによって実装されてもよい。本方法は、IBM(登録商標)z/OSのような、圧縮形式でデータを格納するストレージ・システムにおいて使用することができ、また、圧縮されていないストレージ・システムにも使用することができる。本方法は、読み出しを削減するために、新しい仮想メモリ空間に常に書き込みを行い、従って多くの仮想メモリ空間を消費し、進行中のガベージ・コレクションを必要とするストレージ・システムを特に想定している。ストレージ・アロケータは、種々の実施形態によれば、ブロックごとに書き込みに使用される仮想メモリを追跡し、ここで、各ブロックは、仮想メモリアドレスの範囲である。これらのブロックは、「エクステント」と呼ばれる。
種々の実施形態においては、ガベージ・コレクションの方法は、次のように進行する。ストレージ・アロケータは、ガベージ・コレクションされたデータを受信するためのエクステントを選択し、これは、宛先エクステントまたはターゲット・エクステントとして参照される。
ストレージ・アロケータは、送信元エクステントと参照される、ガベージ・コレクションの対象となるエクステントを選択し、送信元エクステントの仮想アドレスは、有効データまたは無効データのいずれかを含むものとしてタグ付けされる。上述したように、有効データの量は、送信元エクステントのサイズに関して非常に小さい、つまり、無効データの量よりもかなり小さい可能性が高い。言い換えれば、各宛先エクステントは、おそらく5~10が典型的な数であり得るいくつかの送信元エクステントからの全ての有効データを受信するのに十分な空間を有する可能性が高い。
ストレージ・アロケータ、あるいはいくつかの実施形態においてはガベージ・コレクタ728(またはガベージ・コレクション・モジュール255)は、送信元エクステント内の有効データを、キャッシュ・メモリを介して、宛先エクステントに移動またはコピーし、次いで、第2の、第3の送信元エクステントなどのように、順番に、繰り返して、ガベージ・コレクションの対象として選択し、その都度、キャッシュ・メモリを介して宛先エクステントに有効データを移動する。これは、宛先エクステントが一杯になるまで進行する。ガベージ・コレクタ728(またはガベージ・コレクション・モジュール255)は、宛先エクステントが一杯でとなった時点を判定してもよい。宛先エクステントが一杯になると、ガベージ・コレクションされている送信元エクステントから未だ移動またはコピーされるべき残りのデータがロールされ得る、つまり、次に割り当てられる宛先エクステントにコピーされ得る。所与の送信元エクステントからの送信元エクステント・データの全体は、1つの宛先エクステントに入る必要はない。これが2つに横断して分割されてもよく、種々の実施形態においては順番にフラッシングを行うため、最後のものに依存するものとしてタグを付けする必要があるだけであり、その結果、両方の宛先エクステントがフラッシュされることを保証することができる。
ガベージ・コレクションに現在使用されている宛先エクステントが一杯となるポイントに到達すると、ストレージ・アロケータまたはガベージ・コレクタは、次の宛先エクステントとなる別のエクステントを選択し、これによって、継続的なガベージ・コレクションを可能にする。プロセスは、次いで、次の宛先エクステントをガベージ・コレクションされた有効データで充填するなどによって繰り返す。
進行中の宛先エクステントの連続を充填すること、および、かなり多数の送信元エクステントのうちの未だ有効なデータを空にすることとは非同期に、各一杯の宛先エクステントは、順に、キャッシュの中から、フラッシュされる。キャッシュ・メモリの中からの各宛先エクステントのこのフラッシングは、このような各宛先エクステントが一杯になって初めて、それらが割り当てられて充填された順序で開始される。フラッシングおよびガベージ・コレクション転送は、独立して制御され、そのため、各宛先エクステントがフラッシュされるのにかかる時間の量は、ガベージ・コレクションの速度に関連してより遅く、またはより速い可能性がある。フラッシングおよび送信元エクステントと宛先エクステントとの間のガベージ・コレクション転送との間の非同期性を理由として、ガベージ・コレクションされた送信元エクステントの仮想アドレス空間は、新たな書き込みのために即時に利用可能となされず、一時的に保持される。解放は、各宛先エクステントのフラッシングが完了した後に最初に行われ、ここで、「解放すること」は、その特定の宛先エクステントのフラッシングによってキャッシュ・メモリの中から完全にその有効データがフラッシュされた送信元エクステントの仮想アドレス空間にマップされる物理アドレス空間を書き込みのために利用可能にすることを意味する。したがって、キャッシュ・フラッシングおよび後続する古いアドレスの解放が、送信元エクステントから宛先エクステントへのガベージ・コレクションとは同期して実行されないものの、これらの活動は協調される。
図3Aは、ガベージ・コレクションの活動の処理フローを示す。ステップS1では、ガベージ・コレクションされたデータを受信するために宛先エクステントが選択される。ステップS2では、ガベージ・コレクションのための送信元エクステントが選択される。ステップS1およびステップS2は、ストレージ・アロケータによって実行されてもよい。ステップS3では、送信元エクステント内の有効データが識別され、ステップS4において、この有効データが、宛先エクステントに移動またはコピーされる。ステップS4およびステップS5は、ストレージ・アロケータまたはガベージ・コレクタによって実行されてもよい。ステップS5では、(ストレージ・アロケータまたはガベージ・コレクタにより決定されるように)宛先エクステントが一杯であれば、プロセス・フローは、ステップS1に戻って、ガベージ・コレクションの継続のために新しい宛先エクステントを選択し、既存の送信元エクステントからの残りのデータまたは新しい送信元エクステントが、ステップS2で選択される。今一杯の宛先エクステントは、図3Bに示すようなキャッシュ・フラッシングの候補である。
図3Bは、キャッシュ・フラッシングおよびガベージ・コレクションされたエクステント、つまり、送信元エクステントの解放のプロセス・フローを示す。ステップF1においては、キャッシュ・フラッシングのために一杯の宛先エクステントが選択される。ガベージ・コレクタによって、キャッシュ・フラッシングのために、一杯の宛先エクステントが選択される。ステップF2において、ガベージ・コレクタによってキャッシュ・フラッシングが開始されてもよい。ステップF3において、ガベージ・コレクタによってステップF3で決定されるように一度キャッシュ・フラッシングが完了すると、ステップF4において、ストレージ・アロケータによって、まさにフラッシュされた宛先エクステントにガベージ・コレクションされた送信元エクステントにマッピングされたメモリ空間が、新しい書き込みのために解放されてもよい。
より詳細には、本方法は、ディスクへのあらゆる書き込みが、どのボリュームおよび順方向ルックアップ論理ブロックアドレス(LBA)にそれが元々属していたかを文書化するメタデータヘッダを有するように実装されてもよい。全てのメタデータ更新が完了すると、特定のエクステントに関連したbツリーのような逆方向ルックアップ構造が更新され、キャッシュ・メモリを介してメイン・メモリ(キャッシュからディスク)にフラッシュされる。ガベージ・コレクションが完了すると、ガベージ・コレクションされたエクステントは、それがガベージ・コレクションされたことを文書化するように更新されたその逆方向ルックアップ・メタデータを有しているが、ガベージ・コレクションされたエクステントは、即時には処分されない、すなわち、即時に新たな書き込みのために利用可能となされず、むしろ、一時的に保持され、キャッシュの内容が失われた場合でも利用可能に維持される。ガベージ・コレクションされたエクステントについての逆方向ルックアップ・メタデータは、そのエクステントがその後に再使用または廃棄される場合にだけ廃棄される。
エクステントは、一度に複数の例えばbツリーのような順方向ルックアップ構造を実装することよって使用されてもよい。1つのエクステントについて全てのメタデータ更新が完了すると、キャッシュ・フラッシュがトリガされる。書き込みが常に「新しい位置」に(新たに割り当てられたストレージ、または以前にガベージ・コレクションされたエクステントのいずれかに)書き込まれるので、キャッシュは、フルストライドの書き込み(full-stride write)のための一時的なバッファとしてのみ効果的に機能する。
ストレージ・アロケータは、システムにインバウンドする新たな書き込みを受信するために使用されている現在のエクステントと、他のエクステントからのガベージ・コレクションされたデータを受信するために内部で使用されている現在のエクステントとを区別する。ストレージ・アロケータは、連続番号のペアの使用を通じて、ガベージ・コレクションにおいて現在アクティブであるエクステントのセットを追跡する(複数のストレージノードをサポートするシステムにおいては、ノードごとに別個の連続番号を用いることができる)。
エクステント上でガベージ・コレクションが行われた場合、古いエクステントをガベージ・コレクションされた後すぐに再利用できるようにするではなく、この古いエクステントを一時的に保持する、つまり、書き込みのための新しいエクステントとして利用可能とするのを時間的に遅延させる。ガベージ・コレクションされたエクステントからのライブデータが、複数の宛先エクステントに移動されるように割り当てられる可能性があり、これらの各々を追跡することが高価であるため、種々の実施形態は、本明細書で低水位の連続番号および高水位の連続番号と参照される連続番号のペアを通じて書き込みのために現在使用されているエクステントを追跡する。低水位の連続番号および高水位の連続番号の使用により、宛先エクステントのキャッシュ・フラッシング後の物理アドレス空間の解放の制御が簡略化される。ストレージ・コントローラは、各宛先エクステントに固有の連続番号を割り当てる。各連続番号は、データをその宛先エクステントに移動することによってそのガベージ・コレクションが完了した送信元エクステントをルックアップすることを可能とする。フラッシングが完了していない最も古い宛先エクステントの連続番号が、低水位の連続番号として格納される。送信元エクステントからのガベージ・コレクションに現在割り当てられている宛先エクステントの連続番号が高水位の連続番号として格納される。低水位の連続番号の値は、キャッシュ・メモリの中から最も古い宛先エクステントをフラッシングすることが完了すると、増分され、高水位の連続番号の値は、さらなる宛先エクステントがガベージ・コレクションのために選択されると、増分される。フラッシングの速度は、可変であり、ある期間にわたって宛先エクステントが充てんされるよりも遅くなる可能性があり、別の期間ではより速くなる可能性があるので、低水位の連続番号および高水位の連続番号の値の間の差分は、経時的に増大し、また減少するであろう。
連続番号を増加させる順序で宛先エクステントがフラッシュされるので、低水位の連続番号は、常に、フラッシングが完了していない最も古い宛先エクステントに対応する。低水位の連続番号および高水位の連続番号の間のインデックスを有するエクステントの範囲は、キャッシュの内容の損失または他のキャッシュ・エラーからの潜在的なリスクがあるそれらの宛先エクステント(およびひいては、そこからガベージ・コレクションされたデータを受信した、ガベージ・コレクションされたエクステント)を示す。宛先エクステントがディスクにフラッシュされたことが確かに知られている場合のみ、その宛先エクステントに依存するガベージ・コレクションされたエクステントを、新たな書き込みのために解放しても安全である。
また、低水位の連続番号および高水位の連続番号の存在により、キャッシュ・エラーに対抗する保護のためにジャーナルに格納する必要のあるものが簡略化される。ストレージ・コントローラは、ジャーナルに格納される回復情報を、低水位および高水位値間の連続番号に関連付けられたものにリンクされたメモリアドレスに制限することができる。このような各連続番号についての回復情報は、連続番号に関連付けられる宛先エクステントにデータを移動することによってそのガベージ・コレクションが完了した送信元エクステントへのマッピングを含む。ガベージ・コレクション中にキャッシュの内容が失われた場合、回復情報を使用して、回復情報において識別される送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造を再構築する。つまり、ジャーナルは、再生アプローチを通して、順方向ルックアップ構造を回復させることを試みることができる。この再生アプローチは、宛先エクステントの物理アドレスを示すジャーナル・エントリを読み出し、その後、物理ドメインにおける宛先エクステントを読み出し、ジャーナル・エントリが参照している位置が、回復しようと試みているボリュームに属する正しいメタデータヘッダを有するか否かを判定する。ジャーナルおよびデータドメイン間で不一致が見つかった場合、ジャーナル再生は、後のジャーナル・エントリを継続し、回復されているアドレスは、メディア・エラーとして残され、より有効なデータを発見する後のジャーナル・エントリの対象となる。この再生アプローチは、上書きされていない最後の参照を発見することを試みる。この再生アプローチの更なる詳細は、2019年8月22日に出願され、「ログ構造化アレイ・ストレージ・システムにおけるデータリカバリー中のデータ有効性検証」と題された、共同所有、同時係属中の米国特許出願第16/548,474に開示されており、この出願は、全体として、参照により組み込まれる。ガベージ・コレクションされたエクステントへの参照が回復されたことが識別された場合、問題のエクステントが、ガベージ・コレクションが成功せず、したがって、二巡目のガベージ・コレクションを必要とするかのように取り扱う必要がある。逆方向ルックアップ・メタデータが、復元された参照を無効化されたとしてマークし得るため、エクステントを、逆方向ルックアップ構造を用いることなしに、ガベージ・コレクションの対象としてマークする必要がある。これは、各書き込みに関連付けられるヘッダデータを利用することによって実現可能である。ガベージ・コレクションは、全てのボリューム書き込みをインジェクトするであろうし、ヘッダからIOパスへ識別することを可能とする。IOパスは、元は順方向ルックアップ構造と一致しない位置から入ってくる書き込みを拒否するであろう。これは、逆方向ルックアップ構造を使用したガベージ・コレクションおよび逆方向ルックアップ構造なしのガベージ・コレクションについて、それが、逆方向ルックアップ構造が順方向ルックアップ構造に完全に一致する要件を除去するように行われる。フラッシングが完了する前に、ガベージ・コレクションされたエクステントに属するエクステントの再使用を識別し、防止するので、この再生アプローチは、常に、キャッシュが失われた場合において、ガベージ・コレクションされたエクステントに属するデータを発見するであろう。
ガベージ・コレクションされたエクステントを即時に再使用するアプローチよりも長くエクステント上に保持するので、提案された方法の結果、従来方法より多くのメモリ空間を消費するであろう。したがって、特定のユーザ、企業体またはアプリケーションが典型的には仮想メモリ空間の固定量のみを割り当てるであろうことを念頭において、提案された方法を使用することにより、仮想メモリ空間の欠乏を招く可能性がある。特に、何らかの理由でフラッシングが遅くなった場合、低水位および高水位値間の差分が大きくなる可能性があり、これは、大量のメモリ空間がガベージ・コレクションに紐付けられる可能性があることを意味する。その結果として、フリーの仮想メモリの量がある閾値未満に低下した場合、例えば、利用可能な全仮想メモリの10%または5%未満に低下した場合、提案された方法にしたがうガベージ・コレクションの活動を停止することが有益であり、これにより、それについての送信元エクステントがまだ解放されていないこれらの宛先エクステントのためのガベージ・コレクションの宛先エクステントに割り当てられた仮想メモリ空間が、新たな書き込みに利用可能なように解放されることを可能とするであろう。利用可能な仮想アドレス空間が不足していると判定された場合、ストレージ・アロケータは、送信元エクステントから宛先エクステントへの有効データの移動を中断することによって、ガベージ・コレクションを中断する。それは、次いで、低水位および高水位値間の連続番号を有する宛先エクステントの仮想アドレス空間にマップされる物理アドレス空間を、書き込みに利用可能となるように解放することができる。この解放は、それが、まずストレージ・アロケータのすべての部分にこれらの宛先エクステントを用いることを止めるよう通知するため、実際には、即時的ではない。一度、これらの宛先エクステントに関連付けられるすべてのストレージが完全に使用されたとしてまたは破棄されたとして報告すると、これらの宛先エクステントは、新たな書き込みのために解放されることができる。同一の問題を取り扱う他の選択肢は、低水位および高水位値間の差分をキャップし、ガベージ・コレクションに紐付けられ得る宛先エクステントの最大数を設けることである。このキャップがヒットした場合、低水位の連続番号が増分されるまで、つまり、現在のキャッシュ・フラッシュが完了するまで、ガベージ・コレクションを引き留める。
図4(A)~図4(D)は、提案された方法によるガベージ・コレクションの進行の例を示す概略ブロック図である。図4(A)から図4(D)へ時系列が概略的に示される。最初に、仮想メモリは、3つの例示的なエクステントExt1,Ext2,Ext3を使用して、物理ストレージへの転送がキャッシュを介して起こっている。エクステント1(Ext1)は、コールドデータと、ガベージ・コレクションされるべき陳腐化した(未だ有効な)データの混合を含む。エクステント2(Ext2)は、静的なコールドデータを含む。エクステント3(Ext3)は、新たな書き込みに現在使用されているエクステントである。エクステント1は、次いで、未だ有効なデータの相対的に小さな割合に基づいてガベージ・コレクションの候補として識別される。ガベージ・コレクションの処理は、エクステントを読み取り、維持すべきデータを選択する(401)。図4(B)に模式的に示すように、エクステント1からの陳腐化したデータは、破棄されるものとして識別され、エクステント1からの依然として有効な「ライブ」データは、エクステント3に書き込まれる。図4(C)は、エクステント1からエクステント3へのガベージ・コレクションが完了した後であっても、ガベージ・コレクションされたデータが潜在的にキャッシュを介して物理ストレージに移行する可能性がある間、エクステント1にデータが保持されることを示している。図4(D)は、エクステント3に関し、一度キャッシュが物理ストレージ・デバイスにフラッシュされると、エクステント1をどのように廃棄されるかを示す。
好ましい実施形態の論理処理ステップの全部または一部は、本方法の論理処理ステップを実行するように構成される論理要素を含んでいる、論理装置または複数の論理装置において、代替的に具体化されてもよく、そのような論理要素は、ハードウェア・コンポーネント、ファームウェア・コンポーネントまたはそれらの組み合わせを含んでもよいことが、当業者にとって明らかであろう。
好ましい実施形態の論理コンポーネントの全部または一部が、本方法のステップを実行するために論理要素で構成される論理装置において代替的に具体化されてもよく、そのような論路要素は、例えばプログラマブル論理アレイまたは特定用途向け集積回路内の論理ゲートのようなコンポーネントを含んでもよいことが、当業者にとって同様に明らかであろう。このような論理配置は、例えば仮想ハードウェア記述言語を使用して、アレイまたは回路において、論理構造を一時的または永続的に確立することを要素に可能とする際にさらに具体化され、これらは、格納されるか、または、固定のまたは伝送可能キャリア媒体を使用して送信されてもよい。
さらに別の実施形態においては、本発明は、コンピュータ・オンフラストラクチャにデプロイされ、その上で実行された場合に、コンピューティング・デバイスに本方法のすべてのステップを実行させるように動作可能なコンピュータ・プログラムをデプロイするステップを含む、サービスをデプロイするコンピュータ実装方法の形態で実現されてもよい。
好ましい実施形態の方法およびコンポーネントが、代替的に、並列ソフトウェアを実行するための2以上のプロセッサを含む並列計算システムにおいて、全体でまたは部分的に具現化されてもよいことが理解されるであろう。
本開示のさらなる実施形態は、システムおよび方法に関して定義されたコンピュータ・プログラム製品である。コンピュータ・プログラム製品は、本発明の側面をプロセッサに実現させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(複数可)を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持し、記憶することができる有形のデバイスであってもよい。
本発明は、任意の統合の可能な技術的な詳細のレベルでのシステム、方法もしくはコンピュータ・プログラム製品またはこれらの組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例示の非網羅的リストとしては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリースティック、フロッピーディスク(登録商標)、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
本明細書で説明されるコンピュータ可読プログラム命令は、それぞれのコンピュータ/処理デバイスに、コンピュータ可読ストレージ媒体から、または、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソース・コードあるいはオブジェクト・コードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの手続型言語を含む。コンピュータ可読プログラム命令は、スタンド・アローンのソフトウェア・パッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む。
本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本開示の側面が説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置を介して実行される命令が、フローチャート図もしくはブロック図またはその両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。
これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置もしくは他のデバイスまたはこれらの組み合わせに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャート図もしくはブロック図またはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに読み込まれ、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で実行される命令が、フローチャートもしくはブロックまたはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
図面におけるフローチャート図およびブロック図は、本発明の種々の実施形態に従ったシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャート図またはブロック図の各ブロックは、特定の論理機能(複数可)を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたは命令の部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性がある。例えば、連続して示される2つのブロックが、実際には、1つのステップで実現され、同時に、実質的に同時に、一部または全部が時間的に重なる態様で、実行されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその両方の各ブロックおよびブロック図もしくはフローチャート図またはその両方の複数のブロックの組み合わせが、特定の機能または作用を実行し、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実行する、特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
この開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で詳述される教示の実装は、クラウド・コンピューティング環境に限定されないことに理解されたい。むしろ、本発明の実施形態は、現時点で知られた、またはこれから開発される他の任意のタイプのコンピューティング環境と併せて実装可能である。
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能とする、サービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデルおよび少なくとも4つのデプロイメント・モデルを含む可能性がある。
特性は、以下の通りである。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービス・プロバイダとの人的な対話を必要とせずに自動的に必要なだけ、サーバ時間およびネットワーク・ストレージなどのコンピュータ能力を一方的にプロビジョニングすることができる。
広帯域ネットワーク・アクセス:能力は、ネットワーク越しに利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム(例えば、モバイルフォン、ラップトップ、PDA)による使用を促進する標準的なメカニズムを介して、アクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて複数のコンシューマに提供するためにプールされ、種々の物理的および仮想的リソースが需要に従って動的に割り当てられ、また、再割り当てられる。コンシューマは、一般的に、提供されるリソースの正確な場所を管理したり、知識を有したりせず、しかし、より高度な抽象レベル(例えば国、州、またはデータセンタ)にて場所を指定することが可能であるという意味で、場所の独立感がある。
迅速な弾力性:能力は、迅速かつ柔軟に、いくつかの場合では自動的に、プロビジョニングされて素早くスケール・アウトすることができ、また、迅速にリリースされて素早くスケール・インすることができる。コンシューマにとって、プロビジョニング利用可能な能力は、しばしば外面的には無制限のように見え、任意の時間に任意の量を購入することができる。
測量されたサービス:クラウドシステムは、サービスのタイプにとって適切なある抽象レベル(例えば、ストレージ、処理、帯域幅、アクティブ・ユーザ)での計量能力を利用することによって、自動的にリソース使用を制御し、また最適化する。リソース使用量は、監視され、制御されおよび報告されて、利用サービスのプロバイダおよびコンシューマの双方に対する透明性を提供する。
サービス・モデルは、以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えばウェブベースの電子メール)などのシン・クライアント・インタフェースを介して種々のクライアント・デバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または、限定されたユーザ固有のアプリケーション構成設定の潜在的な例外を除いて個々のアプリケーション能力すらも含む規則となるインフラストラクチャを管理または制御しない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、コンシューマ作成または獲得のアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境の構成への制御を有する。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、コンシューマが、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアをデプロイし、稼働させることができる他の基本的なコンピューティング・リソースを提供することである。コンシューマは、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションに対する制御、および、場合によっては、選択したネットワーキング・コンポーネント(例えば、ホストファイアウォール)の限定された制御を有する。
デプロイメント・モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のためだけに使用される。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織により共有され、共通の懸念(例えば、ミッション、セキュリティ要件、ポリシーおよびコンプライアンスに関する考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆、または、大きな業界団体が利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2以上のクラウド(プライベート、コミュニティまたはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、しかし、データおよびアプリケーションのポータビリティを可能とする標準化されたまたは独自の技術(例えばクラウド間の負荷分散のためのクラウド・バースティング)によって結合される。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的な相互運用性に重点を置いたサービス指向である。クラウド・コンピューティングの核心は、相互接続された複数のノードのネットワークを含むインフラストラクチャである。
ここで、図5を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示するように、クラウド・コンピューティング環境50は、1以上のクラウド・コンピューティング・ノード10を含み、これと、例えば、パーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cもしくは自動車コンピュータ・システム54Nまたはこれらの組み合わせなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信してもよい。ノード10は、互いに通信してもよい。これらは、プライベート、コミュニティ、パブリックもしくはハイブリッド・クラウドなど上述したような、またはこれらの組み合わせなどの1以上のネットワークにおいて、物理的にまたは仮想的にグループ化(図示しない)されてもよい。これは、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせをサービスとして提供することを可能とし、これらについては、クラウド・コンシューマは、リソースをローカル・コンピューティング・デバイス上で維持する必要がない。図5に示されるコンピューティング・デバイス54A~54Nのタイプは、説明する目的のみであり、コンピューティング・ノード10およびクラウド・コンピューティング環境50が、任意のタイプのネットワーク、ネットワークアドレス可能な接続(例えば、ウェブ・ブラウザを使用して)またはこれらの両方を介して、任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
本開示の実施形態によるアドオンは、以下のように図5の環境においてウェブ・ブラウザにインストールされてもよい。クラウド・コンピューティング・ノード10のうちの1つは、ウェブサイトをホストしてもよく、このウェブサイトから、アドオンが、要求に応じて、コンピューティング・デバイス54A、54Bおよび54Cのうちの任意のもののような第三者のコンピューティング・デバイスにダウンロードされてもよい。要求は、ネットワーク接続を介してノード10からコンピューティング・デバイス54A/54B/54Cにアドオンが送信されるようにし、ここでは、アドオンは、コンピューティング・デバイス上に既に存在するウェブ・ブラウザに統合するためのインストーラと一緒に送信される。
ここで、図6を参照すると、クラウド・コンピューティング環境50(図5)によって提供される機能抽象レイヤのセットが示される。図6に示すコンポーネント、レイヤおよび機能が、説明する目的のみであり、本開示の実施形態は、これらに限定されないことが事前に理解されるであろう。示すように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮約命令セットコンピュータ)アーキテクチャに基づくサーバ62、サーバ63,ブレードサーバ64、ストレージ・デバイス65およびネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態においては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、抽象化レイヤを提供し、そこから仮想化サーバ71、仮想化ストレージ72、バーチャル・プライベート・ネットワークを含む仮想化ネットワーク73、仮想化アプリケーションおよびオペレーティング・システム74、および仮想クライアント75などの仮想化エンティティの例が提供される。
一例においては、管理レイヤ80は、以下に説明する機能を提供してもよい。リソース・プロビショニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。メータリングおよびプライシング82は、リソースがクラウド・コンピューティング環境内で利用されるコストの追跡およびこれらのソースの消費に対する請求またはインボイスの送付を提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含んでもよい。セキュリティは、クラウド・コンシューマおよびタスクについての本人確認、並びに、データおよび他のリソースに対する保護を提供する。ユーザポータル83は、コンシューマおよびシステム管理者に対しクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル・マネジメント84は、要求されるサービス・レベルを満たすようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)の計画と履行85は、SLAに従って、将来の要求が予期されるクラウド・コンピューティグ・リソースの事前配置および調達を提供する。
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用される機能性の例を提供する。ワークロードおよびこのレイヤから提供される機能の例には、マッピングおよびナビゲーション91、ソフトウェア・ライフサイクル管理92、仮想クラスルーム教育配信93、データ・アナリティクス処理94、トランザクション処理95、および、本開示の実施形態による上述したとおりのガベージ・コレクション管理を有するストレージ・アロケータ96が含まれる。
当業者にとって、本開示の範囲から逸脱することなく、多くの改良および変更が、前述した例示的な実施形態に対してなされ得ることが明白であろう。

Claims (24)

  1. 仮想アドレス空間が物理アドレス空間にマッピングされるストレージ・システムにおけるガベージ・コレクションの方法であって、前記仮想アドレス空間は、エクステントでアドレスされ、前記ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有し、前記方法は、
    ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして第1の宛先エクステントを選択するステップと、
    ガベージ・コレクションの対象となる現在の送信元エクステントとして第1の送信元エクステントを選択するステップであって、前記現在の送信元エクステントは、有効データの1または複数の部分を含む、選択するステップと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして選択された宛先エクステントが一杯であるか否かを判定するステップと、
    ガベージ・コレクションの対象となる前記現在の送信元エクステントとして選択された送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むか否かを判定するステップと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯ではないと判定され、かつ、ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むと判定されたことに応答して、宛先エクステントにコピーされていない有効データの部分の1つを、前記キャッシュ・メモリを介して、前記現在の送信元エクステントから前記現在の宛先エクステントへコピーするステップと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して、前記現在の宛先エクステントにコピーされる前記有効データをフラッシュするステップと、
    前記キャッシュ・メモリの中から、前記現在の宛先エクステントに移動した前記有効データを前記フラッシュするステップに後続して、前記キャッシュ・メモリを介して前記現在の宛先エクステントにすべての有効データがコピーされた1または複数の送信元エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放するステップと
    を含む、方法。
  2. ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして第2の宛先エクステントを選択するステップ
    をさらに含む、請求項1に記載の方法。
  3. ガベージ・コレクションされたデータを受信するための前記第2の宛先エクステントが一杯であると判定したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して前記現在の宛先エクステントにコピーされた前記有効データをフラッシングするステップ
    をさらに含み、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して前記現在の宛先エクステントにコピーされた前記有効データをフラッシングするステップは、前記宛先エクステントが一杯であると判定された順序と同一の順序でフラッシュされる、請求項2に記載の方法。
  4. ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの部分を含まないと判定することに応答して、ガベージ・コレクションの対象となる前記現在の送信元エクステントとして第2の送信元エクステントを選択するステップ
    をさらに含む、請求項1に記載の方法。
  5. 連続番号を各宛先エクステントに割り当てることを用いて、前記宛先エクステントのキャッシュのフラッシング後、前記物理アドレス空間の解放を制御するステップであって、各連続番号は、その宛先エクステントへデータをコピーすることによってそのガベージ・コレクションが完了した前記送信元エクステントをルックアップすることを可能とする、制御するステップと、
    それについてフラッシングが行われていない最も古い宛先エクステントの前記連続番号が、低水位の連続番号として格納されるステップと、
    送信元エクステントからのガベージ・コレクションのために割り当てられた前記現在の宛先エクステントの前記連続番号が、高水位の連続番号として格納されるステップと、
    前記低水位の連続番号が、前記キャッシュ・メモリの中から最も古い宛先エクステントのフラッシングが完了すると増分されるステップと、
    前記高水位の連続番号が、ガベージ・コレクションのためにさらに宛先エクステントが選択されると増分されるステップと
    を含む、請求項1に記載の方法。
  6. 利用可能な前記仮想アドレス空間が閾値未満であると判定されたことに応答して、
    送信元エクステントから宛先エクステントへの有効データのコピーを一時停止するステップと、
    前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する少なくとも1つの宛先エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放するステップと
    を含む、請求項5に記載の方法。
  7. 前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する宛先エクステントのための回復情報を格納するジャーナルを維持するステップであって、前記回復情報は、その有効データがガベージ・コレクションの対象であった送信元エクステントと対応する宛先エクステントとの間のマッピングを含む、維持するステップ
    をさらに含む、請求項1に記載の方法。
  8. ガベージ・コレクション中のキャッシュ内容の損失を決定することに応答して、前記回復情報を使用して、前記回復情報で識別される前記送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造を再構築するステップ
    をさらに含む、請求項7に記載の方法。
  9. 仮想アドレス空間が物理アドレス空間にマッピングされるストレージ・システムにおけるガベージ・コレクションのためのコンピュータ・プログラム製品であって、前記仮想アドレス空間は、エクステントでアドレスされ、前記ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有し、前記コンピュータ・プログラム製品は、それとともに具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、前記プログラム命令は、プロセッサによって、
    ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして第1の宛先エクステントを選択することと、
    ガベージ・コレクションの対象となる現在の送信元エクステントとして第1の送信元エクステントを選択することであって、前記現在の送信元エクステントは、有効データの1または複数の部分を含む、選択することと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして選択された宛先エクステントが一杯であるか否かを判定することと、
    ガベージ・コレクションの対象となる前記現在の送信元エクステントとして選択された送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むか否かを判定することと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯ではないと判定され、かつ、ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むと判定されたことに応答して、宛先エクステントにコピーされていない有効データの部分の1つを、前記キャッシュ・メモリを介して、前記現在の送信元エクステントから前記現在の宛先エクステントへコピーすることと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して、前記現在の宛先エクステントにコピーされる前記有効データをフラッシュすることと、
    前記キャッシュ・メモリの中から、前記現在の宛先エクステントに移動した前記有効データを前記フラッシュするステップに後続して、前記キャッシュ・メモリを介して前記現在の宛先エクステントにすべての有効データがコピーされた1または複数の送信元エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放することと
    を行うように前記プロセッサに実行可能である、コンピュータ・プログラム製品。
  10. ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして第2の宛先エクステントが選択される、請求項9に記載のコンピュータ・プログラム製品。
  11. ガベージ・コレクションされたデータを受信するための前記第2の宛先エクステントが一杯であると判定したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して、前記現在の宛先エクステントにコピーされた前記有効データがフラッシングされ、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して前記現在の宛先エクステントにコピーされた前記有効データをフラッシングすることは、前記宛先エクステントが一杯であると判定された順序と同一の順序でフラッシュされる、請求項10に記載のコンピュータ・プログラム製品。
  12. ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの部分を含まないと判定することに応答して、ガベージ・コレクションの対象となる前記現在の送信元エクステントとして第2の送信元エクステントが選択される、請求項9に記載のコンピュータ・プログラム製品。
  13. 連続番号を各宛先エクステントに割り当てることを用いて、前記宛先エクステントのキャッシュのフラッシング後、前記物理アドレス空間の解放が制御され、各連続番号は、その宛先エクステントへデータをコピーすることによってそのガベージ・コレクションが完了した前記送信元エクステントをルックアップすることを可能とし、
    それについてフラッシングが行われていない最も古い宛先エクステントの前記連続番号が、低水位の連続番号として格納され、
    送信元エクステントからのガベージ・コレクションのために割り当てられた前記現在の宛先エクステントの前記連続番号が、高水位の連続番号として格納され、
    前記低水位の連続番号が、前記キャッシュ・メモリの中から最も古い宛先エクステントのフラッシングが完了すると増分され、
    前記高水位の連続番号が、ガベージ・コレクションのためにさらに宛先エクステントが選択されると増分される、請求項9に記載のコンピュータ・プログラム製品。
  14. 利用可能な前記仮想アドレス空間が閾値未満であると判定されたことに応答して、
    送信元エクステントから宛先エクステントへの有効データのコピーが一時停止され、
    前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する少なくとも1つの宛先エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放する、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する宛先エクステントのための回復情報を格納するジャーナルが維持され、前記回復情報は、その有効データがガベージ・コレクションの対象であった送信元エクステントと対応する宛先エクステントとの間のマッピングを含む、請求項9に記載のコンピュータ・プログラム製品。
  16. ガベージ・コレクション中のキャッシュ内容の損失を決定することに応答して、前記回復情報が使用されて、前記回復情報で識別される前記送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造が再構築される、請求項9に記載のコンピュータ・プログラム製品。
  17. 物理アドレス空間にマッピングされる仮想アドレス空間を有するストレージ・システムであって、前記仮想アドレス空間は、エクステントでアドレスされ、前記ストレージ・システムは、1または複数のプロセッサと、複数のストレージ・デバイスと、キャッシュ・メモリとを有し、前記ストレージ・システムは、
    ガベージ・コレクションされたデータを受信するための現在の宛先エクステントとして第1の宛先エクステントを選択するためのストレージ・アロケータと、
    ガベージ・コレクションの対象となる現在の送信元エクステントとして第1の送信元エクステントを選択するための前記ストレージ・アロケータであって、前記現在の送信元エクステントは、有効データの1または複数の部分を含む、前記ストレージ・アロケータと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして選択された宛先エクステントが一杯であるか否かを判定するガベージ・コレクタと、
    ガベージ・コレクションの対象となる前記現在の送信元エクステントとして選択された送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むか否かを判定する前記ガベージ・コレクタと、
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯ではないと判定され、かつ、ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの1または複数の部分を含むと判定されたことに応答して、宛先エクステントにコピーされていない有効データの部分の1つを、前記キャッシュ・メモリを介して、前記現在の送信元エクステントから前記現在の宛先エクステントへコピーするための前記ガベージ・コレクタと
    ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して、前記現在の宛先エクステントにコピーされる前記有効データをフラッシュするための前記ガベージ・コレクタと、
    前記キャッシュ・メモリの中から、前記現在の宛先エクステントに移動した前記有効データを前記フラッシュするステップに後続して、前記キャッシュ・メモリを介して前記現在の宛先エクステントにすべての有効データがコピーされた1または複数の送信元エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放するための前記ストレージ・アロケータと
    を含む、ストレージ・システム。
  18. ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントが一杯であると判断したことに応答して、ガベージ・コレクションされたデータを受信するための前記現在の宛先エクステントとして第2の宛先エクステントを選択する前記ストレージ・アロケータ
    を含む、請求項17に記載のストレージ・システム。
  19. ガベージ・コレクションされたデータを受信するための前記第2の宛先エクステントが一杯であると判定したことに応答して、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して、前記現在の宛先エクステントにコピーされた前記有効データをフラッシングする前記ガベージ・コレクタ
    をさらに含み、前記キャッシュ・メモリの中から、前記キャッシュ・メモリを介して前記現在の宛先エクステントにコピーされた前記有効データをフラッシングすることは、前記宛先エクステントが一杯であると判定された順序と同一の順序でフラッシュされる、請求項18に記載のストレージ・システム。
  20. ガベージ・コレクションの対象となる前記現在の送信元エクステントが、宛先エクステントにコピーされていない有効データの部分を含まないと判定することに応答して、ガベージ・コレクションの対象となる前記現在の送信元エクステントとして第2の送信元エクステントを選択するストレージ・アロケータ
    を含む、請求項17に記載のストレージ・システム。
  21. 連続番号を各宛先エクステントに割り当てることを用いて、前記宛先エクステントのキャッシュのフラッシング後、前記物理アドレス空間の解放を制御する前記ストレージ・アロケータを含み、各連続番号は、その宛先エクステントへデータをコピーすることによってそのガベージ・コレクションが完了した前記送信元エクステントをルックアップすることを可能とし
    それについてフラッシングが行われていない最も古い宛先エクステントの前記連続番号が、低水位の連続番号として格納され、
    送信元エクステントからのガベージ・コレクションのために割り当てられた前記現在の宛先エクステントの前記連続番号が、高水位の連続番号として格納され、
    前記低水位の連続番号が、前記キャッシュ・メモリの中から最も古い宛先エクステントのフラッシングが完了すると増分され、
    前記高水位の連続番号が、ガベージ・コレクションのためにさらに宛先エクステントが選択されると増分される、請求項17に記載のストレージ・システム。
  22. 利用可能な前記仮想アドレス空間が閾値未満であると判定されたことに応答して、
    送信元エクステントから宛先エクステントへの有効データのコピーを一時停止する前記ストレージ・アロケータと、
    前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する少なくとも1つの宛先エクステントの前記仮想アドレス空間にマップされた前記物理アドレス空間への書き込みに利用可能なように解放する前記ストレージ・アロケータと
    を含む、請求項21に記載のストレージ・システム。
  23. 前記低水位の連続番号と前記高水位の連続番号との値の間の連続番号を有する宛先エクステントのための回復情報を格納するジャーナルを維持する前記ガベージ・コレクタを含み、前記回復情報は、その有効データがガベージ・コレクションの対象であった送信元エクステントと対応する宛先エクステントとの間のマッピングを含む、請求項17に記載のストレージ・システム。
  24. ガベージ・コレクション中のキャッシュ内容の損失を決定することに応答して、前記回復情報を使用して、前記回復情報で識別される前記送信元エクステントについて仮想アドレス空間を物理アドレス空間にリンクする順方向ルックアップ・メタデータ構造を再構築する前記ガベージ・コレクタを含む、請求項23に記載のストレージ・システム。
JP2022520642A 2019-10-08 2020-09-30 データ・ストレージ・システムにおけるガベージ・コレクション Pending JP2022552804A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/595,840 US10929288B1 (en) 2019-10-08 2019-10-08 Protecting against data loss during garbage collection
US16/595,840 2019-10-08
PCT/IB2020/059142 WO2021070014A1 (en) 2019-10-08 2020-09-30 Garbage collection in data storage systems

Publications (1)

Publication Number Publication Date
JP2022552804A true JP2022552804A (ja) 2022-12-20

Family

ID=74659379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022520642A Pending JP2022552804A (ja) 2019-10-08 2020-09-30 データ・ストレージ・システムにおけるガベージ・コレクション

Country Status (6)

Country Link
US (2) US10929288B1 (ja)
JP (1) JP2022552804A (ja)
CN (1) CN114556310A (ja)
DE (1) DE112020004840B4 (ja)
GB (1) GB2606635B (ja)
WO (1) WO2021070014A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220086934A (ko) * 2020-12-17 2022-06-24 에스케이하이닉스 주식회사 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법
US11875193B2 (en) 2021-03-25 2024-01-16 Oracle International Corporation Tracking frame states of call stack frames including colorless roots
US11507503B1 (en) * 2021-05-19 2022-11-22 Oracle International Corporation Write barrier for remembered set maintenance in generational Z garbage collector
US11797208B2 (en) 2021-09-17 2023-10-24 International Business Machines Corporation Backend deduplication awareness

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
JP6044181B2 (ja) * 2012-08-24 2016-12-14 富士通株式会社 ガーベジコレクションのための情報処理方法、プログラム及び装置
US9501393B2 (en) * 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
US10789223B2 (en) * 2016-03-24 2020-09-29 Microsoft Technology Licensing, Llc Hybrid garbage collection in a distributed storage system
US20170293554A1 (en) * 2016-04-12 2017-10-12 Google Inc. Hardware-assisted garbage collection
US10402108B2 (en) * 2017-01-20 2019-09-03 Fujitsu Limited Efficient control of data storage areas based on a size of compressed data to be written
US10754556B2 (en) 2017-06-27 2020-08-25 International Business Machines Corporation Prioritization of virtual volumes to take offline in a thin provisioning system
US11176047B2 (en) 2017-08-07 2021-11-16 International Business Machines Corporation Data storage system with physical storage and cache memory
US10565125B2 (en) * 2018-02-27 2020-02-18 Hewlett Packard Enterprise Development Lp Virtual block addresses
US10802726B2 (en) * 2018-10-29 2020-10-13 Microsoft Technology Licensing, Llc Optimized placement of data contained in a garbage collected storage system

Also Published As

Publication number Publication date
US20210103521A1 (en) 2021-04-08
WO2021070014A1 (en) 2021-04-15
US10929288B1 (en) 2021-02-23
CN114556310A (zh) 2022-05-27
GB2606635A (en) 2022-11-16
GB2606635B (en) 2023-03-15
DE112020004840B4 (de) 2024-05-02
DE112020004840T5 (de) 2022-06-15
GB202205501D0 (en) 2022-05-25
US11314639B2 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US11960777B2 (en) Utilizing multiple redundancy schemes within a unified storage element
US11593036B2 (en) Staging data within a unified storage element
US10235066B1 (en) Journal destage relay for online system checkpoint creation
US9910777B2 (en) Enhanced integrity through atomic writes in cache
WO2018040591A1 (zh) 一种远程数据复制方法及系统
US10002048B2 (en) Point-in-time snap copy management in a deduplication environment
US10170151B2 (en) Method and system for handling random access write requests for a shingled magnetic recording hard disk drive
US8924664B2 (en) Logical object deletion
US9135123B1 (en) Managing global data caches for file system
US8943282B1 (en) Managing snapshots in cache-based storage systems
US8806154B1 (en) Thin provisioning row snapshot with reference count map
US20210294499A1 (en) Enhanced data compression in distributed datastores
US11314639B2 (en) Protecting against data loss during garbage collection
US9842117B1 (en) Managing replication of file systems
US20170177224A1 (en) Dynamic storage transitions employing tiered range volumes
WO2015200528A1 (en) Systems and methods for storage service automation
US11321007B2 (en) Deletion of volumes in data storage systems
US11340829B1 (en) Techniques for log space management involving storing a plurality of page descriptor (PDESC) page block (PB) pairs in the log
US11003559B2 (en) Underperforming drive handling in redundant arrays
US20230229363A1 (en) Tiering Valid Data after a Disaster Recovery Operation
US11175999B2 (en) Management of backup volume extents via a tiered storage mechanism
US11797214B2 (en) Micro-batching metadata updates to reduce transaction journal overhead during snapshot deletion
US20230177069A1 (en) Efficient journal log record for copy-on-write b+ tree operation
US11640339B2 (en) Creating a backup data set

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220411

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20220425

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240523