JP2018509695A - ストレージ中のデータを管理するためのコンピュータ・プログラム、システム、および方法 - Google Patents

ストレージ中のデータを管理するためのコンピュータ・プログラム、システム、および方法 Download PDF

Info

Publication number
JP2018509695A
JP2018509695A JP2017541259A JP2017541259A JP2018509695A JP 2018509695 A JP2018509695 A JP 2018509695A JP 2017541259 A JP2017541259 A JP 2017541259A JP 2017541259 A JP2017541259 A JP 2017541259A JP 2018509695 A JP2018509695 A JP 2018509695A
Authority
JP
Japan
Prior art keywords
log
address
record
index
log address
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.)
Granted
Application number
JP2017541259A
Other languages
English (en)
Other versions
JP6704207B2 (ja
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 JP2018509695A publication Critical patent/JP2018509695A/ja
Application granted granted Critical
Publication of JP6704207B2 publication Critical patent/JP6704207B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ログ構造に従ったストレージ中のデータを管理するための方法を提供する。【解決手段】索引中の各索引エントリは、レコードのうちの1つの、ログ中のログ・アドレスを識別する。ログ中の各レコードは、キーおよび値を含み、ログ・アドレスは、ストレージ中の物理アドレスにマッピングされる。ログ中の複数の処理対象ログ・アドレスが処理されるが、これは、処理対象ログ・アドレスがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することと、処理対象ログ・アドレスがレコードの現バージョンを含むことを索引が示すと決定されるのに応答して、処理対象ログ・アドレスにおけるレコードをログ中の選択されたログ・アドレスに追加することと、処理対象ログ・アドレスがマッピングされるストレージ中の物理アドレスにおけるレコードを削除することと、によって行われる。【選択図】図1

Description

本発明は、ログ構造に従ったストレージ中のデータを管理するための、コンピュータ・プログラム、システム、および方法に関する。
ログ構造化ストレージ・システム中では、データに対する更新は、本来の場所には書かれず、選択された論理および物理アドレスに書かれる。データは、キー−値ストアに記憶されてよく、この場合、データは、そのレコードに関連するキーおよび値からなる、非構造化レコードに記憶される。ログ中のレコードに対するキーおよびログ・アドレスを有する索引を使用して、レコードについてのログ中でのログ・アドレスをルックアップすることができる。各索引エントリは、名前空間中でまたはデータのセット中で特有の索引付きキーと、ログ中でのデータのアドレスとを有する。
ログ構造化ストレージ中では、更新はログの末尾に書かれ、ログ中のレコードの前バージョンは残る。ログ中のログ・アドレスにおけるエントリが、ログ・アドレスを識別する対応する索引エントリをもはや有しないときは、ログ中のエントリは未使用と見なされ、ガベージ・コレクトされることが可能である。しかし、ガベージ・コレクションの粒度(「領域/スロット」)は、データ(キー−値レコード)の粒度よりもずっと大きい(粗い)ので、スロット全体をガベージ・コレクトするためには、スロット中の潜在的に有効ないくつかのエントリが再配置されなければならないことがある。索引が古い場所をまだ指している再配置されたエントリをルックアップするために、ストレージ層は、古いエントリを新しいエントリにマッピングする間接参照テーブルを維持することができる。レコードについての現アドレスを提供するために索引が利用可能でないとき、間接参照テーブルを使用して、レコードを求める要求を古いアドレスから新しいアドレスにリダイレクトする。間接参照の結果、ルックアップ時間はより長くなり、古いアドレスから新しいアドレスにマッピングするための性能ペナルティが生じ、この新しいアドレスは、次いで、レコードにアクセスするために物理アドレスにマッピングされなければならない。
ガベージ・コレクションを実施するための別の技法は、すべてのデータを読み取って再利用空間に書き直す、圧縮プロセスである。この技法は、ライブ・データと古いデータの両方を移動させて、後で受け取られるデータに利用可能にするための空間を解放することを必要とする。圧縮は、ライブ・データと削除されるデータの両方が読み取られて新しい空間に書き込まれる必要があるので、入出力集約的である。
古くなったレコードを示すトゥームストーン(tombstone)レコードをストレージ層がログ中に配置する実施形態では、ガベージ・コレクションは、削除すべきレコードを決定するために、ログを走査してトゥームストーン・レコードを処理しなければならない。
ストレージ・システムのガベージ・コレクションを、特にログ構造化ストレージ・システム中で実施するための改善された技法が、当技術分野で必要とされている。
第1の態様によれば、ストレージ中のデータを管理するためのコンピュータ・プログラムが提供される。コンピュータ・プログラムは、動作を実施するために実行されるコンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体を含む。動作は、ログ中のレコードに対する索引を提供することであって、索引中の各索引エントリが、レコードのうちの1つの、ログ中のログ・アドレスを識別し、ログ中の各レコードがキーおよび値を含み、ログ・アドレスがストレージ中の物理アドレスにマッピングされる、提供することと、ログ中の複数の処理対象ログ・アドレスを処理することとを含み、処理することは、ログ・アドレスのそれぞれにつき、処理対象ログ・アドレスがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することと、処理対象ログ・アドレスがレコードの現バージョンを含むことを索引が示すと決定されるのに応答して、処理対象ログ・アドレスにおけるレコードをログ中の選択されたログ・アドレスに追加することと、処理対象ログ・アドレスがマッピングされるストレージ中の物理アドレスにおけるレコードを削除することと、を実施することによって行う。
第2の態様によれば、ストレージ中のデータを管理するためのシステムが提供される。システムは、プロセッサと、実行されたときに動作を実施するコンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体とを備える。動作は、ログ中のレコードに対する索引を提供することであって、索引中の各索引エントリが、レコードのうちの1つの、ログ中のログ・アドレスを識別し、ログ中の各レコードがキーおよび値を含み、ログ・アドレスがストレージ中の物理アドレスにマッピングされる、提供することと、ログ中の複数の処理対象ログ・アドレスを処理することとを含み、処理することは、ログ・アドレスのそれぞれにつき、処理対象ログ・アドレスがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することと、処理対象ログ・アドレスがレコードの現バージョンを含むことを索引が示すと決定されるのに応答して、処理対象ログ・アドレスにおけるレコードをログ中の選択されたログ・アドレスに追加することと、処理対象ログ・アドレスがマッピングされるストレージ中の物理アドレスにおけるレコードを削除することと、を実施することによって行う。
第3の態様によれば、ストレージ中のデータを管理するための方法が提供される。方法は、ログ中のレコードに対する索引を提供することであって、索引中の各索引エントリが、レコードのうちの1つの、ログ中のログ・アドレスを識別し、ログ中の各レコードがキーおよび値を含み、ログ・アドレスがストレージ中の物理アドレスにマッピングされる、提供することと、ログ中の複数の処理対象ログ・アドレスを処理することとを含み、処理することは、ログ・アドレスのそれぞれにつき、処理対象ログ・アドレスがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することと、処理対象ログ・アドレスがレコードの現バージョンを含むことを索引が示すと決定されるのに応答して、処理対象ログ・アドレスにおけるレコードをログ中の選択されたログ・アドレスに追加することと、処理対象ログ・アドレスがマッピングされるストレージ中の物理アドレスにおけるレコードを削除することと、を実施することによって行う。
好ましい一実施形態によれば、ログ構造に従ったストレージ中のデータを管理するための、コンピュータ・プログラム、システム、および方法が提供される。この好ましい実施形態によれば、ログ中のレコードに対する索引はエントリを有し、索引中の各索引エントリは、レコードのうちの1つの、ログ中のログ・アドレスを識別する。ログ中の各レコードは、キーおよび値を含むことが好ましく、ログ・アドレスは、ストレージ中の物理アドレスにマッピングされることが好ましい。ログ中の複数の処理対象ログ・アドレスが処理されるが、これは、各ログ・アドレスにつき、処理対象ログ・アドレスがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することと、処理対象ログ・アドレスがレコードの現バージョンを含むことを索引が示すと決定されるのに応答して、処理対象ログ・アドレスにおけるレコードをログ中の選択されたログ・アドレスに追加することと、処理対象ログ・アドレスがマッピングされるストレージ中の物理アドレスにおけるレコードを削除することと、を実施することによって行う。
次に、本発明の好ましい実施形態について、後続の図面を参照しながら単なる例として述べる。
ストレージ環境の実施形態を示す図である。 索引エントリの実施形態を示す図である。 ログ・ストレージ中のレコードの実施形態を示す図である。 論理−物理マッピングの実施形態を示す図である。 moveコマンドの実施形態を示す図である。 PUTコマンドの実施形態を示す図である。 ログ構造化ストレージのガベージ・コレクションを実施するための動作の実施形態を示す図である。 ログ構造化ストレージのガベージ・コレクションを実施するための動作の実施形態を示す図である。 述べる実施形態と共に使用されるコンピュータ・アーキテクチャの実施形態を示す図である。
述べる実施形態は、ログ構造化ストレージのガベージ・コレクションを実施するための技法を提供し、この場合、ログは、ログ構造に従って、1つまたは複数のストレージ・デバイス中の物理アドレスにマッピングするログ・アドレスにおけるレコードを有する。ログの索引は、キーとログ・アドレスとを有する索引エントリを有する。ログ中の各レコードは、そのレコードに対する索引エントリ中で識別される、キー−値を含む。ログ・アドレスは、ストレージ中の物理アドレスにマッピングするログ・オフセットを記述することができる。ログ中の複数のレコードは、処理対象レコードがログ中のレコードの現バージョンを含むことを索引が示すかどうかを決定することによって、処理される。レコードが現バージョンである場合は、レコードは、ログ中の選択されたログ・アドレスに書き込まれる。処理対象レコードはログ中で削除されて、削除された処理対象レコードのログ・アドレスにマッピングするストレージ中のストレージ空間が再利用される。さらに、選択されたログ・アドレスに移動させるデータの現バージョンである処理されたレコードに対する索引エントリは、ログ中の新しい選択されたログ・アドレスを示すように更新される。
いくつかの実施形態は、間接参照テーブルを使用する必要をなくすことができる。というのは、ガベージ・コレクション・プロセスの一部として、索引がレコードの新しいアドレスで更新され、したがって、ログ中のレコードについて古いアドレスと新しいアドレスとの間で変換する必要がないからである。さらに、述べる実施形態によれば、ログ中の、ライブ・データすなわち有効なデータを有するレコードのみが、ログ中の新しい場所に書き込まれ、それにより、すべてのデータ・レコードを読み取って移動させる必要がなくなる。その代り、述べる実施形態では、索引を使用して、ログの末尾に移動させる必要のあるライブ・レコードを決定する。ライブ・データを有するすべてのレコードをログの末尾に移動させた後、処理されたログ・エントリ中のすべてのレコードは削除されてよく、したがって、圧縮ガベージ・コレクション動作に必要とされる集約的な入出力動作が回避される。
図1に、1つまたは複数のストレージ・デバイス102上のデータのストレージを管理するストレージ・マネージャ100を有するストレージ環境を示す。ホスト・システム(図示せず)が、入出力(I/O)要求をストレージ・マネージャ100に通信して、ストレージ・デバイス102中のデータにアクセスすることができる。ストレージ・マネージャ100は、1つまたは複数のプロセッサ・デバイスを含むプロセッサ104と、メモリ106とを備え、メモリ106には、プロセッサ104によって実行されるようにオペレーティング・システム108がロードされる。オペレーティング・システム108は、ログ112を管理するためのストレージ・サービス110を備え、ログ112は、ストレージ・デバイス102中の場所に記憶されたデータを識別するレコードを有する。ストレージ・サービス110は、論理−物理マッピング400を維持し、論理−物理マッピング400は、ログ112中のレコードのログ・アドレスを、ストレージ・デバイス102中の物理アドレスにマッピングする。索引サービス116が、索引200を維持し、ログ112中のレコードの、キー−ログ・アドレス・ルックアップを可能にする。索引サービス116は、ログ・アドレスに対する示されたキーを有するレコードの現バージョンを有するログ・アドレスを示す。ログ112は連続的なログを含むことができ、ログ構造化アレイ・データ構造などのように、新しいレコードはログの末尾に、すなわち一番最近使用された末尾に追加される。ストレージ・サービス110は、索引200を使用して、ログ112中のレコードをルックアップし、ログ112中のログ・アドレスにおけるレコードがレコードの現バージョンまたはライブ・バージョンを有するかどうかを決定する。ストレージ・マネージャ100は、複数のホスト・システムからのI/O要求を管理するサーバ中で実装されてもよく、または、システム中のストレージ・コントローラ・ファームウェアもしくは他のコンポーネント中で実装されてもよい。
提供されたキーおよび値を有するレコードに関連するデータを求める要求が受け取られると、ストレージ・サービス110は、索引サービス116を呼び出して、その指定されたキーを有する索引200中のレコードのログ・アドレスをルックアップすることができる。索引から返されたログ・アドレスから、ストレージ・サービス110は、要求されたレコードのキーおよび値を有するログ・アドレス・レコードを決定することができる。ログ112中のログ・アドレスから、ストレージ・サービス110は、論理−物理マッピング400を使用して、ストレージ・デバイス102のうちの1つにおける、ログ・アドレスにおけるレコードについてのデータが記憶された物理アドレスを決定することができる。
ストレージ・マネージャ100は、接続120を介してストレージ・デバイス102と通信する。接続120は、ローカル・エリア・ネットワーク(LAN)、ストレージ・エリア・ネットワーク(SAN)、ワイド・エリア・ネットワーク(WAN)、ピアツーピア・ネットワーク、ワイヤレス・ネットワーク、インターネット、イントラネットなど、1つまたは複数のネットワークを含むことができる。別法として、接続120は、PCI(Peripheral Component Interconnect)バスやシリアル・インタフェースなど、バス・インタフェースを含むこともできる。
ストレージ・デバイス102は、固体電子回路からなる固体ストレージ・デバイス(SSD)、EEPROM(電気的に消去可能プログラム可能な読取専用メモリ)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM)ドライブ、ストレージクラス・メモリ(SCM)、相変化メモリ(PCM)、抵抗変化型メモリ(RRAM)、スピン・トランスファ・トルク・メモリ(STM−RAM)、導電性ブリッジングRAM(CBRAM)、磁気ハード・ディスク・ドライブ、光学ディスク、テープなど、様々なタイプまたは種類のストレージ・デバイスを含むことができる。ストレージ・デバイス102はさらに、JBOD(Just a Bunch of Disks)、直接アクセス・ストレージ・デバイス(DASD)、RAID(Redundant Array of Independent Disks)アレイ、仮想化デバイスなど、デバイスのアレイに構成されてもよい。さらに、ストレージ・デバイス102は、異なるベンダまたは同じベンダからの異種ストレージ・デバイスを含むこともできる。
図1では、ストレージ・サービス110と索引サービス116とを、同じオペレーティング・システム108中のコンポーネントとして示す。別法として、ストレージ・サービス110または索引サービス116あるいはその両方は、オペレーティング・システム108のカーネル空間ではなく、ユーザ空間で実行されるアプリケーション・プログラムを含むこともできる。さらに、ストレージ・サービス110と索引サービス116とは、異なるコンピュータもしくは異なるコンピュータ・ノード中で実装して、ネットワークを介して通信するようにしてもよく、または、ストレージ・コントローラ以外のシステム中で実装してもよい。別法として、ストレージ・サービス110と索引サービス116とは、特定用途向け集積回路(ASIC)などのハードウェア・ロジックを用いて実装してもよく、または、コンピュータ可読ストレージ媒体中のコードを実行するプログラム可能プロセッサとして実装してもよい。ストレージ・サービス110と索引サービス116とはまた、仮想マシン中で実装してもよい。
図2は、索引200中の索引エントリ200のインスタンスの一実施形態を示し、キー202とログ・アドレス204とのペアを含む。ログ・アドレス204は、索引エントリ200によって識別されるレコードの、ログ112中の場所を識別する。ログ112中には、レコードの、すなわち一意のキー−値ペアの、複数のバージョンがある場合があるが、索引200は、レコードの現バージョンを有するログ・アドレスを提供するために、キーおよびログ・アドレスに対して、1つの索引エントリ200のみを含むことになる。ログ112中の、ログ・アドレスが索引200に含まれないキー−値ペアについての他のレコードは、レコードによって識別されるデータの最新バージョンを有しないストレージ・デバイス102中の物理アドレスにマッピングする、レコードの非アクティブなまたは前のバージョンを含む。
図3は、ログ112に含まれるレコード300のインスタンスの一実施形態を示し、キー302と値304とのペアを含む。レコード300はさらに、ログ112中の、レコードの前バージョンを有するログ・アドレスへのポインタを含むこともできる。ログ112は、レコードを連続的な順序で記憶することができ、したがって、新しいレコードは、図1に示されるエントリ112など、ログの末尾に追加される。レコード300はさらに、キー・サイズおよび値サイズを示すこともできる。
図4は、論理−物理マッピング400中のエントリ400の一実施形態を示し、ログ・アドレス402と、ストレージ・デバイス102のうちの1つにおける対応するデバイス物理アドレス404とを含む。デバイス物理アドレス404は、ネットワーク・アドレス(例えば、インターネット・プロトコル・アドレス、MACアドレス)と、一意のデバイスIDと、ストレージ・デバイス102中の物理的場所とを含むことができる。このようにして、マッピング400は、場合に応じて複数のストレージ・デバイス102にわたってまたは単一のストレージ・デバイス102中で、ログ112中のログ112のアドレスまたはエントリを物理アドレスにマッピングする。例えば、2つのストレージ・デバイスがある場合、ログ112は、第1のストレージ・デバイス中の連続的なアドレスにデータを記憶し、次いで第2のストレージ・デバイス中のアドレスにデータを記憶することを可能にする、抽象化を含むことができる。代替実施形態では、論理−物理マッピング400は、ストレージ・デバイス間で交互配置するように連続的なログ・アドレスのマッピングを提供することができ、それにより、データの記憶は、論理−物理マッピング400中で実装される事前定義済みのシーケンスに従って、ストレージ・デバイスのうちの異なるストレージ・デバイス中で交互に行われる。
図5に、ガベージ・コレクションまたは他の動作の一部として、レコードをログの末尾112の新しいログ・アドレスに移動させることを索引サービス116に行わせるために、ストレージ・サービス110が発行できるmoveコマンド500の一実施形態を示す。moveコマンド500は、moveコマンドを識別するmoveコマンド・コード502と、キー504と、キー値506と、ログの末尾112に移動すべき、キー504と値506とのペアを有するレコードのログ・アドレス508とを含む。
図6に、ログの末尾112に、またはどのような場所であろうとログ112の一番最近使用された末尾に、新しいレコードを追加するために、索引サービス116によって使用されるPUTコマンド600の一実施形態を示す。PUTコマンド600は、PUTコマンド・コード602と、キー604と、キー値606と、キー604および値606によって更新されているレコードのログ・アドレス608とを含み、追加されるレコードは、ログの一番最近使用された末尾112に追加される。ストレージ・サービス110は、コマンド600のキー604および値606を有するレコードが追加された、ログ中の場所112のログ・アドレスを返すことができる。
図5および6の情報を含めるのに使用されるコマンドは、MOVEコマンドおよびPUTコマンド以外のコマンド・タイプも含み得る。
図7に、ガベージ・コレクションを実施してログ112およびストレージ102中または他のコンポーネント中の空間を再利用するために、ストレージ・サービス110や索引サービス116などのストレージ・マネージャ100のコンポーネントによって実施される動作の一実施形態を示す。ガベージ・コレクション動作を開始すると(ブロック700で)、ログ112中のログ・アドレスのサブセットの複数の処理対象ログ・アドレスのそれぞれにつき、動作のループがブロック702〜716で実施される。各サブセットは、ログ112中の固定範囲の連続的なログ・アドレス・レコードを含むことができる。サブセットの処理対象ログ・アドレスiについて、処理対象ログ・アドレスiがレコードの現バージョンを含むことを索引200が示すかどうかが決定される(ブロック704で)。いくつかの実施形態では、ログ・アドレスがレコードの現バージョンを有するかどうかの決定は、ログ112中のレコードのログ・アドレスが、処理対象ログ・アドレスiにおけるレコードのキーを有する、索引200のエントリ中で示されるかどうかを決定することを含むことができる。このような実施形態では、索引200は、示されたキーを有するレコードの現バージョンを有するログ・アドレスを示すエントリを含む。このようにして、処理対象ログ・アドレスiは、ログ112中のこのログ・アドレスiが、処理対象ログ・アドレスiについてのレコード300中のキー202を有する索引エントリ200のログ・アドレス204中で示されるとき、レコードの現バージョンを有する。
処理対象ログ・アドレスiがこのレコード(キー−値ペア)の現バージョンを有する(ブロック704で)場合は、ログの一番最近に使用された(MRU)末尾112におけるログ・アドレスなど、ログ112中の選択されたログ・アドレスに、このレコードiが書き込まれる(ブロック706で)。選択されたログ・アドレスにマッピングする、ストレージ・デバイス102のうちの1つにおける物理アドレスの決定が、論理−物理マッピング400から行われる(ブロック708で)。次いで、ストレージ・サービス110は、ストレージ・デバイス102中のレコードiの現バージョンについてのデータを、ストレージ・デバイス102中の決定された物理アドレスに書き込むことができる(ブロック710で)。次いで、索引サービス116は、処理対象ログ・アドレスiにおけるレコードをコピーまたは移動させた先である、ログ112中の選択されたログ・アドレス206を示すように、キー202と処理対象ログ・アドレスiとを有する索引エントリ200を更新することができる(ブロック712で)。次いで、処理対象ログ・アドレスiがマッピングされるストレージ・デバイス102中の空間を再利用するために、処理対象ログ・アドレスiに対する論理−物理マッピング・エントリ400に従って処理対象ログ・アドレスiがマッピングされるストレージ・デバイス102中の物理アドレスにおけるレコードは、ログ112から削除されてよい(ブロック714で)。さらに、レコードiがレコードの現バージョンでない(すなわち、そのログ・アドレスがレコードiに対する索引エントリ中で示されない)(ブロック704で)場合は、制御はブロック714に進み、レコードのサブセット中でレコードiが処理されたログ・アドレスから、レコードiが削除される。このようにして、非アクティブなデータを有するログ・アドレスにマッピングするストレージ・デバイス102中のデータは削除される。ブロック714から、制御はブロック716に進み、サブセット中のまだ処理されていないログ・アドレスが他にあればそれらが処理される。
述べた図7の動作により、ログ112中のログ・アドレスのサブセットが処理されて、現レコードまたはアクティブなレコードがあればそれらはログの一番最近使用された末尾112にコピーされ、処理対象ログ・アドレスにおけるレコードのより古いバージョンについてのデータは除去される。ログ・アドレスのサブセットの処理の終わりには、アクティブなレコードがあればそれらはログの末尾112に移動させており、ストレージ・デバイス102中のデータのより古いバージョンは削除され、他のレコードについては、ストレージ・デバイス102中のデータは、選択された新しいログ・アドレスに対応する物理アドレスにコピーされる。次いで、ストレージ・デバイス102中の、サブセット中の処理対象ログ・アドレスにマッピングする物理アドレスにおけるデータを削除することによって、サブセット中のレコードは再利用することができる。これにより、レコードおよびデータのより古いバージョンを除去して、新しい書込みのためにストレージ・デバイス102中の空間を解放することができる。さらに、処理対象ログ・アドレスは、さらに他のアクティブなデータに利用可能になるように無効化されてよい。
図8に、ログ112中のログ・アドレスのサブセットに対してガベージ・コレクション動作を実施するために、ストレージ・サービス110および索引サービス116によって実施される動作の一実施形態を示す。制御は、ストレージ・サービス110がガベージ・コレクション動作を開始する(ブロック800で)ことで開始し、これは、ログ112中のログ・アドレスのサブセットからの複数のログ・アドレスの各処理対象ログ・アドレスiにつき、動作のループをブロック802〜826で実施することによって行う。ブロック804で、ストレージ・サービス110は、処理対象ログ・アドレスiがレコードの現バージョンを有するかどうかを索引サービス116に決定させるために、ログ・アドレスiと処理対象ログ・アドレスiに対するキーとを含むliveコマンドを送る。liveコマンドに応答して、索引サービス116は、liveコマンド中で示されるキーおよび処理対象ログ・アドレスiに対するエントリ200を索引200が有するかどうかを決定する(ブロック808で)。エントリ200が存在することは、処理対象ログ・アドレスiがレコードの現バージョンを有することを示す。
処理対象ログ・アドレスiおよびキーに対するエントリを索引200が有しない(ブロック808で)場合は、索引サービス116は、処理対象ログ・アドレスiがレコードの現バージョンを有しないことを示す応答をliveコマンドに対して返す(ブロック812で)。そうではなく、liveコマンドからの処理対象ログ・アドレス・レコードiおよびキーを有するエントリ200を索引200が含む(ブロック808で)場合は、索引サービス116は、処理対象ログ・アドレスiが現バージョンであることを示す応答をliveコマンドに対して返す(ブロック810で)。
ブロック810または812からの応答が受け取られると、処理対象ログ・アドレスiがレコード300の現バージョンを有することを応答が示す(ブロック814で)場合は、ストレージ・サービス110は、キー302、値304、および処理対象ログ・アドレスiをフィールド504、506、および508中で示すMOVEコマンド500を、索引サービス116に送る(ブロック816で)。moveコマンド500が受け取られると(ブロック818で)、索引サービス116は、moveコマンド500からのキー504および値506と処理対象ログ・アドレスiとをPUTコマンド600のフィールド604、606、および608にそれぞれ含むPUTコマンド600を、ストレージ・サービス110に送る(ブロック820で)。PUTコマンド600に応答して、ストレージ・サービス110は、ログ・アドレス608におけるキー604および値606を有するレコードを、ログの末尾または一番最近使用された末尾112におけるログ・アドレスなど、選択されたログ・アドレスに書き込む(ブロック822で)。レコードが書き込まれる選択されたログ・アドレス112は、PUTコマンド600に応答して、索引サービス116に返される(ブロック824で)。選択されたログ・アドレス112へのポインタは、ログに追加すべき次のレコードに使用するために、ログ112中の次のエントリにインクリメントしてよい。
レコードに対する選択された新しいログ・アドレスを返した後、ストレージ・サービス110は、ブロック802に戻って(ブロック826で)、ログ112中の一連の連続的なレコードなど、処理されているログ112中のレコードのサブセット中の、次のレコードを処理することができる。
PUTコマンド600に対する、新しいログ・アドレスを有する応答を受け取るのに応答して、索引サービス116は、ログ・アドレスiに対する索引エントリ200を、レコードの現バージョンを今や有するログ中の選択されたログ・アドレス112を示すように更新する(ブロック828で)。
述べる実施形態では、索引サービス116は、キー値を、PUTコマンド600に含めることによって使用するが、MOVEコマンド500中のキー値506を索引200に記憶することはしない。代替の一実施形態では、MOVEコマンド500は、キー値506を含まずキー504およびログ・アドレス508のみを提供することができ、次いで索引サービス116は、PUTコマンド600に含めるためにキー値をストレージ・サービス110から取り出すことができる。
一実施形態では、索引サービス116は、選択されたログ・アドレスにレコードが移動した古いログ・アドレスiを有する削除コマンドを、ストレージ・サービス110に送って(ブロック830で)、ストレージ・サービス110に、古いログ・アドレスについてのストレージ・デバイス102中のデータを削除させることができる。さらに、liveコマンドに対する返された応答が、レコードが現バージョンでないことを示した(ブロック814で)場合は、ストレージ・サービス110は、古いログ・アドレスiについて論理−物理マッピング400i中で示される処理対象ログ・アドレスiにマッピングする物理アドレスにおける、ストレージ・デバイス102中のデータを削除することができる(ブロック832で)。このようにして、索引サービス116およびストレージ・サービス110は、協働して、索引200を更新し、ログ112およびストレージ・デバイス102からのレコードおよびストレージ空間を再利用する。
代替の一実施形態では、ステップ830および834は行わなくてよく、その代り、ストレージ・サービス110は、ブロック832で、レコードの現バージョンを有しないログ中のログ・アドレスを処理するときに、レコードを削除することになる。
さらに他の実施形態では、索引サービス116はまた、PUT動作の一部として、選択されたログ・アドレスにレコードが移動する場合の古いログ・アドレスiを含めることもでき、レコードの前ログ・アドレスを指すバック・チェーンをストレージ・マネージャが維持できるようにすることができる。
本発明は、システム、方法、またはコンピュータ・プログラム、あるいはそれらの組合せとすることができる。コンピュータ・プログラムは、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有する(1つまたは複数の)コンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、以下のものに限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取専用メモリ(CD−ROM)、ディジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にエンコードされるデバイス(命令が記録される、パンチカード、または溝の中の隆起構造)、およびこれらの任意の適切な組合せを含む。本明細書におけるコンピュータ可読ストレージ媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、あるいは、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング/処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶されるように転送する。
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Java(R)やSmalltalk(R)やC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)行われてもよい。いくつかの実施形態では、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)、を例えば含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラムの、フローチャート説明またはブロック図あるいはその両方に関して記述される。フローチャート説明またはブロック図あるいはその両方の各ブロック、および、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実装できることは理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装する手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを生み出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為の態様を実装する命令を含む製造品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに、特定の方式で機能するよう指示するものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラムの可能な実装形態の、アーキテクチャ、機能性、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、指定される論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関連する機能性に応じて、連続して示される2つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令との組合せを遂行する、専用ハードウェアベースのシステムによって実装できることにも留意されるであろう。
ストレージ・マネージャ100、および、索引サービス116やストレージ・サービス110など、その中のコンポーネントは、図9に示されるコンピュータ・システム902など、1つまたは複数のコンピュータ・システム中で実装されてよい。コンピュータ・システム/サーバ902は、プログラム・モジュールなど、コンピュータ・システムによって実行されるコンピュータ・システム実行可能命令の一般的なコンテキストで記述することができる。一般に、プログラム・モジュールは、特定のリソースを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む場合がある。コンピュータ・システム/サーバ902は、分散クラウド・コンピューティング環境で実践されてよく、その場合、リソースは、通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含めたローカルとリモートの両方のコンピュータ・システム・ストレージ媒体中に位置する場合がある。
図9に示されるように、コンピュータ・システム/サーバ902は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ902のコンポーネントは、以下のものに限定されないが、1つまたは複数のプロセッサまたは処理ユニット904と、システム・メモリ906と、システム・メモリ906を含めた様々なシステム・コンポーネントをプロセッサ904に結合するバス908と、を含むことができる。バス908は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたはローカル・バスを含めた、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(MicroChannel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含む。
コンピュータ・システム/サーバ902は通常、様々なコンピュータ・システム可読媒体を備える。このような媒体は、コンピュータ・システム/サーバ902からアクセス可能な任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と取外し不能の媒体の両方を含む。
システム・メモリ906は、ランダム・アクセス・メモリ(RAM)910またはキャッシュ・メモリ912あるいはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ902はさらに、他の取外し可能/取外し不能、揮発性/不揮発性コンピュータ・システム・ストレージ媒体を備えることもできる。例に過ぎないが、取外し不能な不揮発性の磁気媒体(図示せず。典型的には「ハード・ドライブ」と呼ばれる)に対して読取りおよび書込みを行うために、ストレージ・システム913が設けられてよい。図示されていないが、取外し可能な不揮発性の磁気ディスク(例えば「フロッピー(R)・ディスク」)に対して読取りおよび書込みを行うための磁気ディスク・ドライブと、CD−ROM、DVD−ROM、または他の光学媒体など、取外し可能な不揮発性の光学ディスクに対して読取りまたは書込みを行うための光学ディスク・ドライブとが設けられてよい。このような事例では、各ドライブは、1つまたは複数のデータ媒体インタフェースによってバス908に接続されてよい。後でさらに図示および記述されるように、メモリ906は、本発明の実施形態の機能を遂行するように構成された1組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラムを含むことができる。
1組の(少なくとも1つの)プログラム・モジュール916を有するプログラム/ユーティリティ914が、限定ではなく例としてメモリ906に記憶されてよく、また、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも記憶されてよい。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せはそれぞれ、ネットワーキング環境の一実装形態を含むことができる。コンピュータ・システム/サーバ902のコンポーネントは、プログラム・モジュール916として実装されてよく、プログラム・モジュール916は一般に、本明細書に記載の本発明の実施形態の、機能または方法あるいはその両方を遂行する。
コンピュータ・システム/サーバ902はまた、1つまたは複数の外部デバイス918と通信することができる。外部デバイス918は、キーボード、ポインティング・デバイス、ディスプレイ920など、ユーザがコンピュータ・システム/サーバ902と対話できるようにする1つもしくは複数のデバイス、または、コンピュータ・システム/サーバ902が1つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組合せ、などである。このような通信は、入出力(I/O)インタフェース922を介して行うことができる。さらに、コンピュータ・システム/サーバ902は、ネットワーク・アダプタ924を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えばインターネット)、あるいはそれらの組合せなど、1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ924は、バス908を介して、コンピュータ・システム/サーバ902の他のコンポーネントと通信する。図示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバ902と共に使用されてもよいことを理解されたい。例としては、以下のものに限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが挙げられる。本発明の様々な実施形態についての以上の記述は、例証および記述の目的で提示したものである。これは、網羅的なもの、または開示される正確な形に本発明を限定するものとはしない。上記の教示に鑑みて、多くの変更および変形が可能である。本発明の範囲は、この詳細な記述によって限定されるのではなく、本明細書に添付された特許請求の範囲によって限定されるものとする。上記の明細、例、およびデータは、本発明の構成の製作および使用に関する完全な記述を提供する。本発明の思想および範囲を逸脱することなく本発明の多くの実施形態をなすことができるので、本発明は、本明細書の後に添付される特許請求の範囲にある。

Claims (30)

  1. ストレージ中のデータを管理するためのコンピュータ・プログラムであって、動作を実施するために実行されるコンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体を含み、前記動作が、
    ログ中のレコードに対する索引を提供することであって、前記索引中の各索引エントリが、前記レコードのうちの1つの、前記ログ中のログ・アドレスを識別し、前記ログ中の各レコードがキーおよび値を含み、前記ログ・アドレスが前記ストレージ中の物理アドレスにマッピングされる、前記提供することと、
    前記ログ中の複数の処理対象ログ・アドレスを処理することとを含み、前記処理することは、前記ログ・アドレスのそれぞれにつき、
    前記処理対象ログ・アドレスが前記ログ中の前記レコードの現バージョンを含むことを前記索引が示すかどうかを決定することと、
    前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引が示すと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードを前記ログ中の選択されたログ・アドレスに追加することと、
    前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおけるレコードを削除することと
    を実施することによって行う、
    コンピュータ・プログラム。
  2. 前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有することを前記索引が示すかどうかを決定することが、
    前記処理対象ログ・アドレスにおける前記レコードの前記キーに対して前記処理対象ログ・アドレスを前記索引が示すかどうかを決定することを含み、前記処理対象ログ・アドレスにおける前記レコードの前記キーを有する前記索引エントリ中で前記処理対象ログ・アドレスが示されることに応答して、前記処理対象ログ・アドレス・レコードが前記レコードの前記現バージョンを含むことを前記索引が示す、請求項1に記載のコンピュータ・プログラム。
  3. 前記ログ・アドレスを処理することがさらに、
    前記ログ中の前記選択されたログ・アドレスを示し、前記処理対象ログ・アドレスを示さないように、前記索引を更新することを含む、請求項1に記載のコンピュータ・プログラム。
  4. 前記ログ・アドレスを処理することがガベージ・コレクション・プロセスによって実施され、処理される前記複数のログ・アドレスが前記ログ中のログ・アドレスのサブセットを含み、前記ログ中の前記ログ・アドレスが、前記処理対象ログ・アドレスを有する前記サブセットを含む複数のサブセットにグループ化される、請求項1に記載のコンピュータ・プログラム。
  5. 前記ストレージが複数のストレージ・デバイスを含み、前記ログ・アドレスが前記複数のストレージ・デバイス中の物理アドレスにマッピングされ、前記ログ中の前記レコードについてのデータが、前記レコードを識別する前記ログ・アドレスにマッピングする前記ストレージ・デバイス中の前記物理アドレスに記憶される、請求項1に記載のコンピュータ・プログラム。
  6. 前記ストレージ・デバイスが固体ドライブとハード・ディスク・ドライブとのうちの少なくとも一方を含み、前記コンピュータ・プログラム、索引、およびログが、前記ストレージ・デバイスの外部の、前記ストレージ・デバイスが結合されたシステム中で実装される、請求項5に記載のコンピュータ・プログラム。
  7. 前記処理対象ログ・アドレスと、前記処理対象ログ・アドレスにおける前記レコードのキーとのエントリを前記索引が含まないと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードが、選択されたログ・アドレスに書き込まれない、請求項1に記載のコンピュータ・プログラム。
  8. 前記動作がさらに、
    前記処理対象ログ・アドレスと前記処理対象ログ・アドレスのキーとを含むliveコマンドをストレージ・サービスによって索引サービスに送ることであって、前記索引サービスが、前記liveコマンドに応答して、前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有するかどうかの決定を実施する、前記送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むことを実施するために、putコマンドを前記索引サービスによって前記ストレージ・サービスに送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むのに応答して、前記レコードの前記選択されたログ・アドレスを前記ストレージ・サービスによって前記索引サービスに送ることと、
    前記選択されたログ・アドレスを前記ストレージ・サービスから受け取るのに応答して、前記索引サービスによって、前記putコマンド中の前記処理対象ログ・アドレスと前記キーとを有する前記索引エントリを、前記選択されたログ・アドレスを示すように更新することと
    を含む、請求項1に記載のコンピュータ・プログラム。
  9. 前記動作がさらに、
    前記liveコマンドに応答して前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引サービスが示すのに応答して、前記キーと前記処理対象ログ・アドレスとを含むmoveコマンドを前記ストレージ・サービスによって送ることと、
    前記moveコマンドを前記索引サービスによって受け取ることであって、前記索引サービスが、前記moveコマンドに応答して、前記処理対象レコードを前記選択されたログ・アドレスに書き込むために前記putコマンドを前記ストレージ・サービスに送ることを実施し、前記putコマンドが前記キーに対する前記値を含む、前記受け取ることと
    を含む、請求項8に記載のコンピュータ・プログラム。
  10. 前記ストレージ・サービスが、前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおける前記レコードの削除を実施する、請求項8に記載のコンピュータ・プログラム。
  11. ストレージ中のデータを管理するためのシステムであって、
    プロセッサと、
    実行されたときに動作を実施するコンピュータ可読プログラム・コードが組み入れられたコンピュータ可読ストレージ媒体とを備え、前記動作が、
    ログ中のレコードに対する索引を提供することであって、前記索引中の各索引エントリが、前記レコードのうちの1つの、前記ログ中のログ・アドレスを識別し、前記ログ中の各レコードがキーおよび値を含み、前記ログ・アドレスが前記ストレージ中の物理アドレスにマッピングされる、前記提供することと、
    前記ログ中の複数の処理対象ログ・アドレスを処理することとを含み、前記処理することは、前記ログ・アドレスのそれぞれにつき、
    前記処理対象ログ・アドレスが前記ログ中の前記レコードの現バージョンを含むことを前記索引が示すかどうかを決定することと、
    前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引が示すと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードを前記ログ中の選択されたログ・アドレスに追加することと、
    前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおけるレコードを削除することと
    を実施することによって行う、
    システム。
  12. 前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有することを前記索引が示すかどうかを決定することが、
    前記処理対象ログ・アドレスにおける前記レコードの前記キーに対して前記処理対象ログ・アドレスを前記索引が示すかどうかを決定することを含み、前記処理対象ログ・アドレスにおける前記レコードの前記キーを有する前記索引エントリ中で前記処理対象ログ・アドレスが示されることに応答して、前記処理対象ログ・アドレス・レコードが前記レコードの前記現バージョンを含むことを前記索引が示す、請求項11に記載のシステム。
  13. 前記ログ・アドレスを処理することがさらに、
    前記ログ中の前記選択されたログ・アドレスを示し、前記処理対象ログ・アドレスを示さないように、前記索引を更新することを含む、請求項11に記載のシステム。
  14. 前記ログ・アドレスを処理することがガベージ・コレクション・プロセスによって実施され、処理される前記複数のログ・アドレスが前記ログ中のログ・アドレスのサブセットを含み、前記ログ中の前記ログ・アドレスが、前記処理対象ログ・アドレスを有する前記サブセットを含む複数のサブセットにグループ化される、請求項11に記載のシステム。
  15. 前記ストレージが複数のストレージ・デバイスを含み、前記ログ・アドレスが前記複数のストレージ・デバイス中の物理アドレスにマッピングされ、前記ログ中の前記レコードについてのデータが、前記レコードを識別する前記ログ・アドレスにマッピングする前記ストレージ・デバイス中の前記物理アドレスに記憶される、請求項11に記載のシステム。
  16. 前記ストレージ・デバイスが固体ドライブとハード・ディスク・ドライブとのうちの少なくとも一方を含み、前記コンピュータ可読ストレージ媒体、索引、およびログが、前記ストレージ・デバイスの外部の、前記ストレージ・デバイスが結合されたシステム中で実装される、請求項15に記載のシステム。
  17. 前記処理対象ログ・アドレスと、前記処理対象ログ・アドレスにおける前記レコードのキーとのエントリを前記索引が含まないと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードが、選択されたログ・アドレスに書き込まれない、請求項11に記載のシステム。
  18. 前記動作がさらに、
    前記処理対象ログ・アドレスと前記処理対象ログ・アドレスのキーとを含むliveコマンドをストレージ・サービスによって索引サービスに送ることであって、前記索引サービスが、前記liveコマンドに応答して、前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有するかどうかの決定を実施する、前記送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むことを実施するために、putコマンドを前記索引サービスによって前記ストレージ・サービスに送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むのに応答して、前記レコードの前記選択されたログ・アドレスを前記ストレージ・サービスによって前記索引サービスに送ることと、
    前記選択されたログ・アドレスを前記ストレージ・サービスから受け取るのに応答して、前記索引サービスによって、前記putコマンド中の前記処理対象ログ・アドレスと前記キーとを有する前記索引エントリを、前記選択されたログ・アドレスを示すように更新することと
    を含む、請求項11に記載のシステム。
  19. 前記動作がさらに、
    前記liveコマンドに応答して前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引サービスが示すのに応答して、前記キーと前記処理対象ログ・アドレスとを含むmoveコマンドを前記ストレージ・サービスによって送ることと、
    前記moveコマンドを前記索引サービスによって受け取ることであって、前記索引サービスが、前記moveコマンドに応答して、前記処理対象レコードを前記選択されたログ・アドレスに書き込むために前記putコマンドを前記ストレージ・サービスに送ることを実施し、前記putコマンドが前記キーに対する前記値を含む、前記受け取ることと
    を含む、請求項18に記載のシステム。
  20. 前記ストレージ・サービスが、前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおける前記レコードの削除を実施する、請求項18に記載のシステム。
  21. ストレージ中のデータを管理するための方法であって、
    ログ中のレコードに対する索引を提供することであって、前記索引中の各索引エントリが、前記レコードのうちの1つの、前記ログ中のログ・アドレスを識別し、前記ログ中の各レコードがキーおよび値を含み、前記ログ・アドレスが前記ストレージ中の物理アドレスにマッピングされる、前記提供することと、
    前記ログ中の複数の処理対象ログ・アドレスを処理することとを含み、前記処理することは、前記ログ・アドレスのそれぞれにつき、
    前記処理対象ログ・アドレスが前記ログ中の前記レコードの現バージョンを含むことを前記索引が示すかどうかを決定することと、
    前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引が示すと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードを前記ログ中の選択されたログ・アドレスに追加することと、
    前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおけるレコードを削除することと
    を実施することによって行う、
    方法。
  22. 前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有することを前記索引が示すかどうかを決定することが、
    前記処理対象ログ・アドレスにおける前記レコードの前記キーに対して前記処理対象ログ・アドレスを前記索引が示すかどうかを決定することを含み、前記処理対象ログ・アドレスにおける前記レコードの前記キーを有する前記索引エントリ中で前記処理対象ログ・アドレスが示されることに応答して、前記処理対象ログ・アドレス・レコードが前記レコードの前記現バージョンを含むことを前記索引が示す、請求項21に記載の方法。
  23. 前記ログ・アドレスを処理することがさらに、
    前記ログ中の前記選択されたログ・アドレスを示し、前記処理対象ログ・アドレスを示さないように、前記索引を更新することを含む、請求項21に記載の方法。
  24. 前記ログ・アドレスを処理することがガベージ・コレクション・プロセスによって実施され、処理される前記複数のログ・アドレスが前記ログ中のログ・アドレスのサブセットを含み、前記ログ中の前記ログ・アドレスが、前記処理対象ログ・アドレスを有する前記サブセットを含む複数のサブセットにグループ化される、請求項21に記載の方法。
  25. 前記ストレージが複数のストレージ・デバイスを含み、前記ログ・アドレスが前記複数のストレージ・デバイス中の物理アドレスにマッピングされ、前記ログ中の前記レコードについてのデータが、前記レコードを識別する前記ログ・アドレスにマッピングする前記ストレージ・デバイス中の前記物理アドレスに記憶される、請求項21に記載の方法。
  26. 前記ストレージ・デバイスが固体ドライブとハード・ディスク・ドライブとのうちの少なくとも一方を含み、前記方法、索引、およびログが、前記ストレージ・デバイスの外部の、前記ストレージ・デバイスが結合されたシステム中で実装される、請求項25に記載の方法。
  27. 前記処理対象ログ・アドレスと、前記処理対象ログ・アドレスにおける前記レコードのキーとのエントリを前記索引が含まないと決定されるのに応答して、前記処理対象ログ・アドレスにおける前記レコードが、選択されたログ・アドレスに書き込まれない、請求項21に記載の方法。
  28. 前記処理対象ログ・アドレスと前記処理対象ログ・アドレスのキーとを含むliveコマンドをストレージ・サービスによって索引サービスに送ることであって、前記索引サービスが、前記liveコマンドに応答して、前記処理対象ログ・アドレスが前記レコードの前記現バージョンを有するかどうかの決定を実施する、前記送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むことを実施するために、putコマンドを前記索引サービスによって前記ストレージ・サービスに送ることと、
    前記処理対象ログ・アドレスにおける前記レコードを前記選択されたログ・アドレスに書き込むのに応答して、前記レコードの前記選択されたログ・アドレスを前記ストレージ・サービスによって前記索引サービスに送ることと、
    前記選択されたログ・アドレスを前記ストレージ・サービスから受け取るのに応答して、前記索引サービスによって、前記putコマンド中の前記処理対象ログ・アドレスと前記キーとを有する前記索引エントリを、前記選択されたログ・アドレスを示すように更新することと
    をさらに含む、請求項21に記載の方法。
  29. 前記liveコマンドに応答して前記処理対象ログ・アドレスが前記レコードの前記現バージョンを含むことを前記索引サービスが示すのに応答して、前記キーと前記処理対象ログ・アドレスとを含むmoveコマンドを前記ストレージ・サービスによって送ることと、
    前記moveコマンドを前記索引サービスによって受け取ることであって、前記索引サービスが、前記moveコマンドに応答して、前記処理対象レコードを前記選択されたログ・アドレスに書き込むために前記putコマンドを前記ストレージ・サービスに送ることを実施し、前記putコマンドが前記キーに対する前記値を含む、前記受け取ることと
    をさらに含む、請求項28に記載の方法。
  30. 前記ストレージ・サービスが、前記処理対象ログ・アドレスがマッピングされる前記ストレージ中の前記物理アドレスにおける前記レコードの削除を実施する、請求項21に記載の方法。
JP2017541259A 2015-02-23 2016-02-12 ストレージ中のデータを管理するためのコンピュータ・プログラム、システム、および方法 Active JP6704207B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/629,041 2015-02-23
US14/629,041 US10210168B2 (en) 2015-02-23 2015-02-23 Managing data in storage according to a log structure
PCT/IB2016/050749 WO2016135578A1 (en) 2015-02-23 2016-02-12 Managing data in storage according to a log structure

Publications (2)

Publication Number Publication Date
JP2018509695A true JP2018509695A (ja) 2018-04-05
JP6704207B2 JP6704207B2 (ja) 2020-06-03

Family

ID=56689914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017541259A Active JP6704207B2 (ja) 2015-02-23 2016-02-12 ストレージ中のデータを管理するためのコンピュータ・プログラム、システム、および方法

Country Status (5)

Country Link
US (2) US10210168B2 (ja)
JP (1) JP6704207B2 (ja)
CN (1) CN107533507B (ja)
GB (1) GB2550800B (ja)
WO (1) WO2016135578A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021515301A (ja) * 2018-02-23 2021-06-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation システムにおけるガベージ・コレクション処理中の障害からのリカバリのための方法、システムにおけるガベージ・コレクション処理中の障害からのリカバリのためのコンピュータ・プログラム、および装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594674B1 (en) * 2014-09-30 2017-03-14 EMC IP Holding Company LLC Method and system for garbage collection of data storage systems using live segment records
US10210168B2 (en) 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure
US9792066B2 (en) 2015-02-23 2017-10-17 International Business Machines Corporation Handling failure of a command to add a record to a log
US20180089074A1 (en) * 2016-09-28 2018-03-29 Intel Corporation Techniques to Manage Key-Value Storage at a Memory or Storage Device
US10783073B2 (en) * 2018-02-23 2020-09-22 International Business Machines Corporation Chronologically ordered out-of-place update key-value storage system
US10642737B2 (en) * 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10635523B2 (en) * 2018-02-23 2020-04-28 International Business Machines Corporation Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US10831734B2 (en) 2018-05-07 2020-11-10 Intel Corporation Update-insert for key-value storage interface
US11042464B2 (en) * 2018-07-16 2021-06-22 Red Hat Israel, Ltd. Log record analysis based on reverse engineering of log record formats
US11099771B2 (en) * 2018-09-24 2021-08-24 Salesforce.Com, Inc. System and method for early removal of tombstone records in database
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
US10852978B2 (en) * 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
TWI695322B (zh) * 2019-01-18 2020-06-01 旺宏電子股份有限公司 記憶體及記憶體操作方法
CN109992475B (zh) * 2019-03-20 2023-09-01 网宿科技股份有限公司 一种日志的处理方法、服务器及存储介质
CN110377531B (zh) * 2019-07-19 2021-08-10 清华大学 基于日志结构的持久性内存存储引擎装置及控制方法
US11347619B2 (en) 2019-08-01 2022-05-31 Red Hat, Inc. Log record analysis based on log record templates
CN112486403A (zh) * 2019-09-12 2021-03-12 伊姆西Ip控股有限责任公司 管理存储对象的元数据的方法、装置和计算机程序产品
CN110543463A (zh) * 2019-09-16 2019-12-06 南方电网科学研究院有限责任公司 一种日志存储方法、装置、设备及可读存储介质
US11221925B2 (en) * 2019-11-08 2022-01-11 International Business Machines Corporation Continuous storage of data in a system with limited storage capacity
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
EP3851950A1 (en) 2020-01-15 2021-07-21 Samsung Electronics Co., Ltd. Storage device and operation method thereof
CN114116367B (zh) * 2020-08-25 2022-11-01 荣耀终端有限公司 一种生成日志的方法及电子设备
CN113378199A (zh) * 2021-06-28 2021-09-10 展讯通信(天津)有限公司 一种智能终端系统日志保存方法及设备
CN114785677B (zh) * 2022-04-22 2023-12-22 武汉联影医疗科技有限公司 日志管理方法、装置、计算机设备、存储介质和程序产品
CN115168921B (zh) * 2022-09-08 2022-11-18 中国电子科技集团公司第十五研究所 一种适用于多固态硬盘系统的无损删除管理装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1011337A (ja) * 1996-06-24 1998-01-16 Hitachi Ltd 記憶装置におけるデータ制御方法
JP2007133487A (ja) * 2005-11-08 2007-05-31 Nec Corp ファイル管理方法、装置、およびプログラム
US20110202578A1 (en) * 2010-02-16 2011-08-18 Kabushiki Kaisha Toshiba Semiconductor memory device
CN103098034A (zh) * 2010-07-28 2013-05-08 Fusion-Io股份有限公司 用于条件和原子存储操作的装置、系统和方法
JP2014529126A (ja) * 2011-08-11 2014-10-30 ピュア・ストレージ・インコーポレイテッド フラッシュストレージアレイにおける論理セクタマッピング

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530850A (en) * 1993-10-25 1996-06-25 International Business Machines Corporation Data storage library array with log-structured file system which allows simultaneous write and garbage collection
JP3785586B2 (ja) 1997-06-20 2006-06-14 カヤバ工業株式会社 油圧式パワーステアリングにおける制御バルブのコントローラ
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8572040B2 (en) * 2006-04-28 2013-10-29 International Business Machines Corporation Methods and infrastructure for performing repetitive data protection and a corresponding restore of data
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US8745012B2 (en) * 2007-08-10 2014-06-03 Sybase, Inc. Log-structured store for streaming data
US8495036B2 (en) 2008-10-24 2013-07-23 Microsoft Corporation Blob manipulation in an integrated structured storage system
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US20120159098A1 (en) 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
US9645758B2 (en) * 2011-07-22 2017-05-09 Sandisk Technologies Llc Apparatus, system, and method for indexing data of an append-only, log-based structure
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US9026717B2 (en) 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store
US9027006B2 (en) 2012-08-09 2015-05-05 Apple Inc. Value profiling for code optimization
US10509776B2 (en) * 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9489297B2 (en) 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9460008B1 (en) * 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US9792066B2 (en) * 2015-02-23 2017-10-17 International Business Machines Corporation Handling failure of a command to add a record to a log
US10210168B2 (en) 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1011337A (ja) * 1996-06-24 1998-01-16 Hitachi Ltd 記憶装置におけるデータ制御方法
JP2007133487A (ja) * 2005-11-08 2007-05-31 Nec Corp ファイル管理方法、装置、およびプログラム
US20110202578A1 (en) * 2010-02-16 2011-08-18 Kabushiki Kaisha Toshiba Semiconductor memory device
CN103098034A (zh) * 2010-07-28 2013-05-08 Fusion-Io股份有限公司 用于条件和原子存储操作的装置、系统和方法
JP2014529126A (ja) * 2011-08-11 2014-10-30 ピュア・ストレージ・インコーポレイテッド フラッシュストレージアレイにおける論理セクタマッピング

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021515301A (ja) * 2018-02-23 2021-06-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation システムにおけるガベージ・コレクション処理中の障害からのリカバリのための方法、システムにおけるガベージ・コレクション処理中の障害からのリカバリのためのコンピュータ・プログラム、および装置

Also Published As

Publication number Publication date
US20190146952A1 (en) 2019-05-16
US11157449B2 (en) 2021-10-26
US10210168B2 (en) 2019-02-19
GB2550800A (en) 2017-11-29
GB201713659D0 (en) 2017-10-11
JP6704207B2 (ja) 2020-06-03
CN107533507B (zh) 2020-09-11
US20160246830A1 (en) 2016-08-25
CN107533507A (zh) 2018-01-02
GB2550800B (en) 2018-10-17
WO2016135578A1 (en) 2016-09-01

Similar Documents

Publication Publication Date Title
US11157449B2 (en) Managing data in storage according to a log structure
US10140050B2 (en) Providing access information to a storage controller to determine a storage tier for storing data
US10380035B2 (en) Using an access increment number to control a duration during which tracks remain in cache
US10223021B2 (en) Handling failure of a command to add a record to a log
US10156989B2 (en) Preallocating storage space for an application operation in a space efficient volume
US20180373638A1 (en) Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9251152B1 (en) Efficient method for relocating shared memory
US9436720B2 (en) Safety for volume operations
US8510499B1 (en) Solid state drive caching using memory structures to determine a storage space replacement candidate
US10545690B2 (en) Using a cascade flag to process a copy relationship having a backward cascade copy relationship
US11520818B2 (en) Method, apparatus and computer program product for managing metadata of storage object
US10168925B2 (en) Generating point-in-time copy commands for extents of data
US10705765B2 (en) Managing point-in-time copies for extents of data
US11977483B2 (en) Maintaining data in a first level memory and buckets representing regions of memory devices to extend data cache

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170907

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191220

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20191220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20200501

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200430

R150 Certificate of patent or registration of utility model

Ref document number: 6704207

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150