(57)【要約】【課題】単一の論理ユニットとして信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ（但し、Ｎは整数）個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法を提供する。【解決手段】本発明の実施形態によれば、単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ（Ｎは整数）個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法は、データが該データを格納する信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、閾値をデータが満足した場合、信頼性メカニズムを選択する段階、及び選択された信頼性メカニズムに応じてデータを格納する段階を含む。【選択図】図１
2019128959.tif 000002
【特許請求の範囲】
【請求項１】
単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ（但し、Ｎは整数）個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法において、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階と、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階と、
前記選択された信頼性メカニズムに応じて前記データを格納する段階と、を含むことを特徴とする方法。
【請求項２】
前記閾値は、前記データの客体サイズ、前記データの処理能力考慮（ｔｈｒｏｕｇｈｐｕｔ  ｃｏｎｓｉｄｅｒａｔｉｏｎ）、前記データの読出し／書込み温度（ｒｅａｄ／ｗｒｉｔｅ  ｔｅｍｐｅｒａｔｕｒｅ）（即ち、読出し／書込み頻度）、及び前記Ｎ個のストレージ装置の基本（ｕｎｄｅｒｌｙｉｎｇ）消去コーディング能力の中で１つ又はそれ以上に基づく、ことを特徴とする請求項１に記載の方法。
【請求項３】
１つ又はそれ以上のブルームフィルタ又はキャッシュを使用して前記信頼性メカニズムに対する前記データをテストする段階をさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記選択された信頼性メカニズム、前記データを格納する前記Ｎ個のストレージ装置の各々に対する１つ又はそれ以上のチェックサム、前記データを格納する前記Ｎ個のストレージ装置の各々に格納された前記データのバリュー客体のサイズ、及び前記Ｎ個のストレージ装置の中でどこに前記データが格納されているのかを示す前記Ｎ個のストレージ装置のパリティグループメンバーの位置を記録するためのメタデータを前記データに対応するキーと共に挿入する段階をさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記選択された信頼性メカニズムは、客体複製を含み、
前記データを格納する段階は、
ＫＶバリューを選択する段階と、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で、前記決定されたストレージ装置の部分集合内の各々に前記ＫＶバリューに対応するアップデートされたバリューを書込む段階と、を含む、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記選択された信頼性メカニズムは、パッキング（ｐａｃｋｉｎｇ）を含み、
前記データを格納する段階は、
前記グループ化されてなる信頼性グループの前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択する段階と、
前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収する段階と、
前記ｋ個のバリュー客体全部の仮想サイズが同一になるように、前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階と、
前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込む段階と、
前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込む段階と、を含み、
前記ｒ個のストレージ装置の各々は、前記ｋ個のストレージ装置と峻別され（ｄｉｓｔｉｎｃｔ）、但し、ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１に記載の方法。
【請求項７】
前記選択された信頼性メカニズムは、伝統的な（ｔｒａｄｉｔｉｏｎａｌ）消去コーディングを使用するパッキングを含み、
前記Ｎ個のストレージ装置は、伝統的な（ｋ、ｒ）ＭＤＳ（ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消去コーディングで構成される、ことを特徴とする請求項６に記載の方法。
【請求項８】
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するパッキングを含み、
前記Ｎ個のストレージ装置は（ｋ、ｒ、ｄ）再生成消去コーディングで構成される、ことを特徴とする請求項６に記載の方法。
【請求項９】
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記データを格納する段階は、
ＫＶバリューを選択する段階と、
前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズのバリュー客体に分割する段階と、
前記ｋ個の同一サイズのバリュー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階と、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ハッシュに基づいて前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を決定する段階と、
前記主要ストレージ装置から始めて連続する順序に前記ｋ個の同一サイズのバリュー客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込む段階と、を含み、但し、ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記選択された信頼性メカニズムは、伝統的な消去コーディングを使用するスプリッティングを含み、
前記Ｎ個のストレージ装置は伝統的な（ｋ、ｒ）ＭＤＳ（ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消去コーディングで構成される、ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するパッキングを含み、
前記Ｎ個のストレージ装置は、（ｋ、ｒ、ｄ）再生成消去コーディングで構成され、
前記データを格納する段階は、
前記再生成消去コーディングを使用して前記ｋ個の同一サイズのバリュー客体の各々をｍ（但し、ｍは整数）個のサブパケットに分割する段階と、
前記ｒ個のパリティ客体の各々をｍ個のパリティサブパケットに分割する段階と、をさらに含む、ことを特徴とする請求項９に記載の方法。
【請求項１２】
選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムにおいて、
ステートレスデータ保護を使用して仮想装置として構成されるＮ（但し、Ｎは整数）個のストレージ装置と、
前記選択された信頼性メカニズムに応じて、前記Ｎ個のストレージ装置を前記仮想装置として管理して前記Ｎ個のストレージ装置の中で選択されたストレージ装置にデータを格納するように構成された仮想装置管理レイヤと、を含み、
前記仮想装置管理レイヤは、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定し、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択し、
前記選択された信頼性メカニズムに応じて前記データを格納するように構成された、ことを特徴とするデータ信頼性システム。
【請求項１３】
前記選択された信頼性メカニズムは、客体複製を含み、
前記仮想装置管理レイヤは、
ＫＶバリューを選択し、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算し、
前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を決定し、
同一の使用者キー名の下で前記決定されたストレージ装置の部分集合内の各々に前記ＫＶバリューに対応するアップデートされたバリューを書込むことによって、前記データを格納するように構成された、ことを特徴とする請求項１２に記載のデータ信頼性システム。
【請求項１４】
前記選択された信頼性メカニズムは、パッキングを含み、
前記仮想装置管理レイヤは、
前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択し、
前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収し、
前記ｋ個のバリュー客体の全ての仮想バリューサイズが同一になるように、前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングし、
前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成し、
前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込み、
前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込むことによって、前記データを格納するように構成され、
前記ｒ個のストレージ装置の各々は、前記ｋ個のストレージ装置の各々と峻別され、但し、ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１２に記載のデータ信頼性システム。
【請求項１５】
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記仮想装置管理レイヤは、
ＫＶバリューを選択し、
前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズのバリュー客体に分割し、
前記ｋ個の同一サイズのバリュー客体からｒ（但し、ｒは整数）個のパリティ客体を生成し、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算し、
前記ハッシュに基づいて前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を決定し、
前記主要ストレージ装置から始めて連続する順序に前記ｋ個の同一サイズのバリュー客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込むことによって、前記データを格納するように構成され、
但し、ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１２に記載のデータ信頼性システム。
【請求項１６】
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するスプリッティングを含み、
前記Ｎ個のストレージ装置は、（ｋ、ｒ、ｄ）再生成消去コーディングで構成され、
前記仮想装置管理レイヤは、前記再生成消去コーディングを使用して前記ｋ個の同一サイズのバリュー客体をｍ（但し、ｍは整数）個のサブパケットに分割し、前記ｒ個のパリティ客体の各々をｍ個のパリティサブパケットに分割することによって、前記データを格納するようにさらに構成される、ことを特徴とする請求項１５に記載のデータ信頼性システム。
【請求項１７】
プロセッサ上で実行される場合、単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ個のストレージ装置を含むキーバリュー信頼性システムにおいてデータを格納する方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体において、
前記方法は、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階と、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階と、
前記選択された信頼性メカニズムに応じてデータを格納する段階と、を含む、ことを特徴とする非一時的なコンピュータ読出し可能な媒体。
【請求項１８】
前記選択された信頼性メカニズムは、客体複製を含み、
前記データを格納する段階は、
ＫＶバリューを選択する段階と、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で、前記ＫＶバリューに対応するアップデートされたバリューを前記決定されたストレージ装置の部分集合内の各々に書込む段階と、を含む、ことを特徴とする請求項１７に記載の非一時的なコンピュータ読出し可能な媒体。
【請求項１９】
前記選択された信頼性メカニズムは、パッキングを含み、
前記データを格納する段階は、
前記信頼性グループの前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択する段階と、
前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収する段階と、
前記ｋ個のバリュー客体全ての仮想バリューサイズが同一になるように、前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階と、
前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込む段階と、
前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込む段階と、を含み、
前記ｒ個のストレージ装置の各々は、前記ｋ個のストレージ装置と峻別され、ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１７に記載の非一時的なコンピュータ読出し可能な媒体。
【請求項２０】
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記データを格納する段階は、
ＫＶバリューを選択する段階と、
前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズのバリュー客体に分割する段階と、
前記ｋ個の同一サイズのバリュー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階と、
前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ハッシュに基づいて、前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を選択する段階と、
前記主要ストレージ装置から始めて連続した順序に、前記ｋ個の同一サイズのバリュー客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込む段階と、を含み、
ｋ＋ｒ＝Ｎである、ことを特徴とする請求項１７に記載の非一時的なコンピュータ読出し可能である媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係る開示（以下、単に本発明ともいう）は、一般的にデータストレージシステムに係り、さらに詳細には複数のキーバリューストレージ装置を含むキーバリュー信頼性システムにキーバリューデータを高信頼度の格納ができる信頼性メカニズムを選択する方法に係る。
【背景技術】
【０００２】
消去コーディング（ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）のようなデータ信頼性メカニズム（ｄａｔａ  ｒｅｌｉａｂｉｌｉｔｙ  ｍｅｃｈａｎｉｓｍｓ）は、複数のストレージ装置を含む多様な設備でストレージ装置の故障及び‘データ汚染’（ｄａｔａ  ｃｏｒｒｕｐｔｉｏｎｓ）によるデータ損失を解決するのに使用できる。
【０００３】
従来のソリッドステートドライブ（ＳＳＤ；ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｓ）は一般的にブロックインタフェイス（ｂｌｏｃｋ  ｉｎｔｅｒｆａｃｅ）のみを使用し、ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）方式を通じ、消去コーディング（ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）又は複製（ｒｅｐｌｉｃａｔｉｏｎ）を用いてデータ信頼性を提供できる。
客体フォーマットのサイズが多様になり、且つ構造化されない（ｕｎｓｔｒｕｃｔｕｒｅｄ）ので、客体とブロック間レベルのインタフェイスにおいて効率的なデータ変換（ｄａｔａ  ｃｏｎｖｅｒｓｉｏｎ）が要求されている。さらに、スペース効率性及び高速アクセス時間特性を維持しながら、データ信頼性を確保する必要がある。
【０００４】
ＲＡＩＤのような技法は従来のブロックストレージ装置に対して広く研究されている。しかし、比較的新しいキーバリューストレージ装置は従来のブロック装置と異なるインタフェイス及び異なるストレージセマンティクス（ｓｔｏｒａｇｅ  ｓｅｍａｎｔｉｃｓ）を有する。従って、多様な新しいキーバリューストレージ装置（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）にとり、キーバリューデータ及びキーバリューストレージ装置向けに特注されるか、又は特別に採用された新しいデータ信頼性技法が役立つ潜在的な可能性がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９，５９４，６３３号公報
【特許文献２】米国特許第９，６３９，２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ（但し、Ｎは整数）個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る実施形態は、その信頼性メカニズムが、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、本文で記載された実施形態はメモリストレージ分野における改善に貢献できる。
【０００８】
（１）  本発明の実施形態によれば、単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ（但し、Ｎは整数）個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法が提供される。
前記方法は前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階、及び前記選択された信頼性メカニズムに応じて前記データを格納する段階を含む。
【０００９】
（２）  前記閾値は前記データの客体サイズ、前記データの処理能力考慮（ｔｈｒｏｕｇｈｐｕｔ  ｃｏｎｓｉｄｅｒａｔｉｏｎ）、前記データの読出し／書込み温度（ｒｅａｄ／ｗｒｉｔｅ  ｔｅｍｐｅｒａｔｕｒｅ）（即ち、読出し／書込み頻度）、及び前記Ｎ個のストレージ装置の基本（ｕｎｄｅｒｌｙｉｎｇ）消去コーディング能力の中で１つ又はそれ以上に基づく。
（３）  前記方法は１つ又はそれ以上のブルームフィルタ又はキャッシュを使用して前記信頼性メカニズムに対する前記データをテストする段階をさらに含む。
（４）  前記選択された信頼性メカニズム、前記データを格納する前記Ｎ個のストレージ装置の各々に対する１つ又はそれ以上のチェックサム、前記データを格納する前記Ｎ個のストレージ装置の各々に格納された前記データのバリュー客体のサイズ、及び前記Ｎ個のストレージ装置の中でどこに前記データが格納されているのかを示す前記Ｎ個のストレージ装置のパリティグループメンバーの位置を記録するためのメタデータを前記データに対応するキーと共に挿入する段階をさらに含む。
（５）  前記選択された信頼性メカニズムは客体複製を含み、前記データを格納する段階はＫＶバリューを選択する段階、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を決定する段階、及び同一の使用者キー名の下で、前記決定されたストレージ装置の部分集合内の各々に前記ＫＶバリューに対応するアップデートされたバリューを書込む段階を含む。
【００１０】
（６）  前記選択された信頼性メカニズムはパッキング（ｐａｃｋｉｎｇ）を含み、前記データを格納する段階は前記グループ化されてなる信頼性グループの前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択する段階、前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収する段階、前記ｋ個のバリュー客体全部の仮想サイズが同一になるように、前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階、前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階、前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込む段階、及び前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込む段階を含み、前記ｒ個のストレージ装置の各々は前記ｋ個のストレージ装置と峻別され（ｄｉｓｔｉｎｃｔ）、但し、ｋ＋ｒ＝Ｎである。
【００１１】
（７）  前記選択された信頼性メカニズムは伝統的な（ｔｒａｄｉｔｉｏｎａｌ）消去コーディングを使用するパッキングを含み、前記Ｎ個のストレージ装置は伝統的な（ｋ、ｒ）ＭＤＳ（ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消去コーディングで構成される。
（８）  前記選択された信頼性メカニズムは再生成消去コーディングを使用するパッキングを含み、前記Ｎ個のストレージ装置は（ｋ、ｒ、ｄ）再生成消去コーディングで構成される。
【００１２】
（９）  前記選択された信頼性メカニズムはスプリッティングを含み、前記データを格納する段階はＫＶバリューを選択する段階、前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズの客体に分割する段階、前記ｋ個の同一サイズの客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ハッシュに基づいて前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を決定する段階、及び前記主要ストレージ装置から始めて連続する順序に前記ｋ個の同一サイズの客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込む段階を含み、但し、ｋ＋ｒ＝Ｎである。
【００１３】
（１０）  前記選択された信頼性メカニズムは伝統的な消去コーディングを使用するスプリッティングを含み、前記Ｎ個のストレージ装置は伝統的な（ｋ、ｒ）ＭＤＳ（ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消去コーディングで構成される。
（１１）  前記選択された信頼性メカニズムは再生成消去コーディングを使用するパッキングを含み、前記Ｎ個のストレージ装置は（ｋ、ｒ、ｄ）再生成消去コーディングで構成され、前記データを格納する段階は前記再生成消去コーディングを使用して前記ｋ個の同一サイズのバリュー客体をｍ（但し、ｍは整数）個のサブパケットに分割する段階、及び前記ｒ個のパリティ客体の各々をｍ個のパリティサブパケットに分割する段階をさらに含む。
【００１４】
（１２）  本発明の他の実施形態によれば、選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムが提供される。前記データ信頼性システムは選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムにおいて、テートレスデータ保護を使用して仮想装置として構成されるＮ（但し、Ｎは整数）個のストレージ装置、及び前記選択された信頼性メカニズムに応じて、前記Ｎ個のストレージ装置を前記仮想装置として管理して前記Ｎ個のストレージ装置の中で選択されたストレージ装置にデータを格納するように構成された仮想装置管理レイヤを含み、前記仮想装置管理レイヤは前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定し、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択し、前記選択された信頼性メカニズムに応じて前記データを格納するように構成される。
【００１５】
（１３）  前記選択された信頼性メカニズムは客体複製を含み、前記仮想装置管理レイヤはＫＶバリューを選択し、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算し、前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を決定し、同一の使用者キー名の下で前記決定されたストレージ装置の部分集合内の各々に前記ＫＶバリューに対応するアップデートされたバリューを書込むことによって、前記データを格納するように構成される。
（１４）  前記選択された信頼性メカニズムはパッキングを含み、前記仮想装置管理レイヤは前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択し、前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収し、前記ｋ個のバリュー客体全ての仮想バリューサイズが同一になるように、前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングし、前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成し、前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込み、前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込むことによって、前記データを格納するように構成され、前記ｒ個のストレージ装置の各々は前記ｋ個のストレージ装置の各々と峻別され、但し、ｋ＋ｒ＝Ｎである。
【００１６】
（１５）  前記選択された信頼性メカニズムはスプリッティングを含み、前記仮想装置管理レイヤはＫＶバリューを選択し、前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズのバリュー客体に分割し、前記ｋ個の同一サイズのバリュー客体からｒ個のパリティ客体を生成し、但し、ｒは整数、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算し、前記ハッシュに基づいて前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を決定し、前記主要ストレージ装置から始めて連続する順序に前記ｋ個の同一サイズのバリュー客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込むことによって、前記データを格納するように構成され、但し、ｋ＋ｒ＝Ｎである。
（１６）  前記選択された信頼性メカニズムは再生成消去コーディングを使用するスプリッティングを含み、前記Ｎ個のストレージ装置は（ｋ、ｒ、ｄ）再生成消去コーディングで構成され、前記仮想装置管理レイヤは前記再生成消去コーディングを使用して前記ｋ個の同一サイズの客体をｍ（但し、ｍは整数）個のサブパケットに分割し、前記ｒ個のパリティ客体の各々をｍ個のパリティサブパケットに分割することによって、前記データを格納するようにさらに構成される。
【００１７】
（１７）  本発明のその他の実施形態によれば、プロセッサ上で実行される場合、単一の論理ユニットとして１つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるＮ個のストレージ装置を含むキーバリュー信頼性システムにおいてデータを格納する方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能である媒体が提供される。前記方法は前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階、及び前記選択された信頼性メカニズムに応じてデータを格納する段階を含む。
【００１８】
（１８）  前記選択された信頼性メカニズムは客体複製を含み、前記データを格納する段階はＫＶバリューを選択する段階、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ＫＶバリューに対応するキー客体のレプリカを格納するために前記Ｎ個のストレージ装置の中でストレージ装置の部分集合を選択する段階、及び同一の使用者キー名の下で、前記ＫＶバリューに対応するアップデートされたバリューを前記決定されたストレージ装置の部分集合内の各々に書込む段階を含む。
（１９）  前記選択された信頼性メカニズムはパッキングを含み、前記データを格納する段階は前記信頼性グループの前記Ｎ個のストレージ装置の中でｋ（但し、ｋは整数）個のストレージ装置に格納されたｋ個のキー客体を選択する段階、前記ｋ個のキー客体に対応するｋ個のバリュー客体を回収する段階、前記ｋ個のバリュー客体全ての仮想バリューサイズが同一になるように前記ｋ個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階、前記ｋ個のキー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階、前記ｋ個のキー客体を前記ｋ個のストレージ装置に書込む段階、及び前記ｒ個のパリティ客体を前記Ｎ個のストレージ装置の中でｒ個のストレージ装置に書込む段階を含み、前記ｒ個のストレージ装置の各々は前記ｋ個のストレージ装置と峻別され、ｋ＋ｒ＝Ｎである。
（２０）  前記選択された信頼性メカニズムはスプリッティングを含み、前記データを格納する段階はＫＶバリューを選択する段階、前記ＫＶバリューをｋ（但し、ｋは整数）個の同一サイズのバリュー客体に分割する段階、前記ｋ個の同一サイズのバリュー客体からｒ（但し、ｒは整数）個のパリティ客体を生成する段階、前記選択されたＫＶバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ハッシュに基づいて、前記Ｎ個のストレージ装置の中で前記ＫＶバリューが位置する主要ストレージ装置を選択する段階、及び前記主要ストレージ装置から始めて連続した順序に、前記ｋ個の同一サイズのバリュー客体及び前記ｒ個のパリティ客体の各々を前記Ｎ個のストレージ装置に書込む段階を含み、ｋ＋ｒ＝Ｎである。
【発明の効果】
【００１９】
本発明の実施形態に係る信頼性メカニズムによれば、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、メモリストレージの信頼性を向上させることができる。
【図面の簡単な説明】
【００２０】
上述された思想及び／又はその他の思想は、添付された図面と組み合わせた以下の実施形態の詳細な記述からさらに明確になり且つ真価が分かるであろう。
【図１】本発明の実施形態に係る、選択された信頼性メカニズムに基づいてキーバリューデータを格納するキーバリュー信頼性システムを示すブロック図である。
【図２】本発明の実施形態に係る、キーバリューペアのデータのサイズに対応するサイズ閾値に基づいてキーバリュー信頼性システムによって使用される信頼性メカニズムの選択を示す順序図である。
【図３】本発明の実施形態に係る、伝統的な消去コーディングを使用するＫ−客体（ｋ、ｒ）消去コーディング、即ち多重客体“パッキング”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【図４】本発明の実施形態に係る、伝統的な消去コーディングを使用するＫ−客体（ｋ、ｒ）消去コーディング、即ち多重客体“パッキング”の信頼性メカニズムに応じるバリュー客体及びパリティ客体の格納を示すブロック図である。
【図５】本発明の実施形態に係る、伝統的な消去コーディングを使用する、“単一客体（Ｓｉｎｇｌｅ＿Ｏｂｊｅｃｔ）（ｋ、ｒ）消去コーディング”、即ち“スプリッティング（Ｓｐｌｉｔｔｉｎｇ）”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【図６】本発明の実施形態に係る、再生成消去コーディングを使用する、“単一客体（Ｓｉｎｇｌｅ＿Ｏｂｊｅｃｔ）（ｋ、ｒ、ｄ）消去コーディング”、即ち“スプリッティング（Ｓｐｌｉｔｔｉｎｇ）”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【発明を実施するための形態】
【００２１】
本発明の多様な特徴及び本発明を達成する方法は添付された図面及び実施形態に対する以下の詳細な記述を参照してさらに詳細に理解されることができる。以下で、実施形態は添付された図面を参照してさらに詳細に記述する。類似な参照番号は全体で類似な構成要素を指す。しかし、本発明が多様な他の形態に具現されることができ、ここに図解した実施形態に制限されることと理解されてはならない。むしろ、このような実施形態は本発明の全般的な理解を助けるための例示として提供され、当業者に本発明の技術的特徴及び様相を十分に伝達できるものである。従って、当業者が本発明の特徴及び様相を完全に理解するのに不必要なプロセス、要素、及び技法は記述しないことがある。異なりに言及されない限り、添付された図面及び記載された詳細な記述の全般に掛けて、類似な参照番号は類似な要素を指称し、それらの記述は繰り返さない。図面で、要素、階層、及び領域の相対的なサイズは明確性のために誇張されることができる。
【００２２】
多様な実施形態が実施形態及び／又は中間構造の概略図である断面図を参照して本文で記述する。このように、例えば製造技術及び／又は許容誤差の結果として図解された形態からの変形が予想されなければならない。さらに、本文で記載された特定な構造的又は機能的な記述は本発明の思想に係る実施形態を記述するための単純な図解である。即ち、本文に記載された実施形態は領域の特定に図解された形態に制限されることと解釈されてはならなく、例えば製造の結果である形状の偏差を含むべきである。例えば、長方形に図解されたインプラント領域は、伝統的に、インプラントから非インプラント領域への二進変化ではなく、それらのエッジでラウンドされたか、又は曲線の特徴及び／又はインプラント濃度の勾配を有するごとができる。同様に、インプラントによって形成された埋め込み領域は埋め込み領域とインプラントが発生する表面との間の領域で一部のインプラントを惹起することができる。即ち、図面に図解された領域は本質的に概略であり、それらの形状が装置の領域の実際形状を図解することを意図しなく、これを制限することではない。追加的に、当業者が認識することができるように、記載された実施形態は本発明の思想又は範囲から逸脱しなく、多様な他の方式に変形されることができる。
【００２３】
以下の詳細な記述で、説明の便宜及び多様な実施形態の理解を助けるために、多数の特定記述が提供される。しかし、多様な実施形態が詳細な記述無しで又は１つ又はそれ以上の均等な代替物と共に具現されることができる。他の例で、広く公知された構造及び装置は多様な実施形態を不必要に曖昧にしないようにブロック図の形態に図示される。
【００２４】
“第１（ｆｉｒｓｔ）”、“第２（ｓｅｃｏｎｄ）”、“第３（ｔｈｉｒｄ）”等のような用語は多様な要素、構成、領域、階層、及び／又は区域を記述するために本文で使用されるが、このような要素、構成、領域、階層、及び／又は区域はこのような用語に限定されないことがよく理解されるべきである。このような用語は１つの要素、構成、領域、階層、又は区域を他の１つの要素、構成、領域、階層、又は区域から区分するためのみに使用される。即ち、以下で記載される第１要素、構成、領域、階層、又は区域は本発明の思想及び範囲から逸脱しなく、第２要素、構成、領域、階層、又は区域と称されることができる。
【００２５】
“〜の下（ｂｅｎｅａｔｈ、ｂｅｌｏｗ、ｌｏｗｅｒ、ｕｎｄｅｒ）”、“〜の上（ａｂｏｖｅ、ｕｐｐｅｒ）”等のような空間的に相対的な用語（ｓｐａｔｉａｌｌｙ  ｒｅｌａｔｉｖｅ  ｔｅｒｍｓ）は図面で図解された他の１つの要素又は特徴と１つの要素又は特徴との関連性を容易に説明するために本文で使用されることができる。空間的に相対的な用語は図面に図示された指向性に追加的に動作又は使用で装置の他の指向性（ｏｒｉｅｎｔａｔｉｏｎｓ）を含むことと意図されることがよく理解される。例えば、図面で装置が裏返されている場合、他の要素又は特徴の“下（ｂｅｌｏｗ  ｏｒ  ｂｅｎｅａｔｈ  ｏｒ  ｕｎｄｅｒ）”として記述した要素は他の要素又は特徴の“上（ａｂｏｖｅ）”に向かうことになる。即ち、“下（ｂｅｌｏｗ、ｕｎｄｅｒ）”の例示的な用語は上及び下の方向を全て含むことができる。装置が他の方向（例えば、９０°回転するか、又は他の方向）を指向することができ、本文で使用される空間的に相対的な記述はこれによって解釈されなければならない。類似に、第１部分が第２部分“上（ｏｎ）”に整列されたことと記述した場合、これは重力方向に基づいてその上部面に対する限定無しで、第１部分が第２部分の上部面又は下部面に整列されたことを示す。
【００２６】
要素、階層、領域、又は構成が他の要素、階層、領域、又は構成と“連結された（ｏｎ、ｃｏｎｎｅｃｔｅｄ  ｔｏ、又はｃｏｕｐｌｅｄ  ｔｏ）”ことと指称される場合、他の要素、階層、領域、又は構成と直接的に（ｄｉｒｅｃｔｌｙ）連結させるか、又は１つ又はそれ以上の中間要素、階層、領域、又は構成が存在することができる。しかし、“直接的に連結された”の用語は１つの構成要素が中間構成無しで他の構成要素と直接的に連結されることを指す。一方、“〜間（ｂｅｔｗｅｅｎ、ｉｍｍｅｄｉａｔｅｌｙ  ｂｅｔｗｅｅｎ）”又は“隣接（ａｄｊａｃｅｎｔ  ｔｏ又はｄｉｒｅｃｔｌｙ  ａｄｊａｃｅｎｔ  ｔｏ）のように構成の間の関係を記述する他の表現は類似に解釈されることができる。追加的に、要素又は階層が２つの要素又は階層の間（ｂｅｔｗｅｅｎ）であることと指称される場合、要素又は構成の間にただ要素又は階層のみが存在するか、又は１つ又はそれ以上の中間要素又は階層がさらに存在することができることと理解されることができる。
【００２７】
本文で使用される用語はただ特定な実施形態を記述するための例示的なものであり、本発明がこれに限定されることではない。本文で使用されるように、脈絡で明確に異なりに指称されない限り、単数用語は複数の形態を含むことと意図される。“含む”の用語が詳細な記述で使用される場合、列挙された特徴、整数、段階、動作、要素、及び／又は構成の存在を定義するが、１つ又はそれ以上の他の特徴、整数、段階、動作、要素、構成、及び／又はそれらのグループの存在又は追加を排除しない。本文で使用されるように、“及び／又は”の用語は関連されて列挙された目録の１つ又はそれ以上の全ての組合又は一部を含む。
【００２８】
本文で使用されるように、“実質的な（ｓｕｂｓｔａｎｔｉａｌ）”、“約（ａｂｏｕｔ、ａｐｐｒｏｘｉｍａｔｅｌｙ）”の用語及び類似な用語は近似の用語として使用され、程度の用語（ｔｅｒｍｓ  ｏｆ  ｄｅｇｒｅｅ）として使用されなく、当業者によって認識されることができる測定されるか、又は計算された値で固有な偏差を記述することと意図される。本文で使用される“約（ａｂｏｕｔ、ａｐｐｒｏｘｉｍａｔｅｌｙ）”の用語は言及された値を含み、特定な量の測定と連関された誤差及び問題の測定値（例えば、測定システムの限界）を考慮した、当業者によって決定された特定な値に対する許容可能な偏差内であることを意味する。例えば、“約（ａｂｏｕｔ）“は１つ又はそれ以上の標準偏差内であることを、又は言及された値の±３０％、２０％、１０％、５％内であることを意味することができる。本文で使用されるように、“使用（ｕｓｅ、ｕｓｉｎｇ、及びｕｓｅｄ）”の用語は“活用（ｕｔｉｌｉｚｅ、ｕｔｉｌｉｚｉｎｇ、及びｕｔｉｌｉｚｅｄ）”と同意語として看做されることができる。また“例示的な（ｅｘｅｍｐｌａｒｙ）”の用語は“例（ｅｘａｍｐｌｅ）又は図解（ｉｌｌｕｓｔｒａｔｉｏｎ）”を指称することと意図される。
【００２９】
特定な実施形態が異なりに具現される場合、特定なプロセス順序が記載された順序と異なりに遂行されることができる。例えば、２つの連続して記述されたプロセスは実質的に同時に遂行されるか、又は記載された順序と反対の順序に遂行されることができる。
【００３０】
本文に記載された本発明の実施形態に係る電気又は電子装置及び／又は他の連関された装置又は構成は適切なハードウェア、ファームウェア（例えば、アプリケーション−特定集積回路（ＡＳＩＣ；ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組合を使用して具現されることができる。例えば、このような装置の多様な構成は１つの集積回路（ＩＣ；ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）チップ又は別のＩＣチップに形成されることができる。さらに、このような装置の多様な構成は軟性印刷回路フィルム（ｆｌｅｘｉｂｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｆｉｌｍ）、テープキャリヤーパッケージ（ＴＣＰ；ｔａｐｅ  ｃａｒｒｉｅｒ  ｐａｃｋａｇｅ）、印刷回路基板（ＰＣＢ；ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）に具現できるか、又は１つの基板（ｓｕｂｓｔｒａｔｅ）上に形成されることができる。さらに、このような装置の多様な構成は本文で記述した多様な機能を遂行するために他のシステム構成と通信し、コンピュータプログラム命令語を実行する、１つ又はそれ以上のコンピューティング装置での、１つ又はそれ以上のプロセッサで駆動するプロセス又はスレッドである。コンピュータプログラム命令語はＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のような標準メモリ装置を使用するコンピューティング装置に具現されることができるメモリに格納される。コンピュータプログラム命令語は、例えばＣＤ−ＲＯＭ、フラッシュドライブ等のような他の非一時的なコンピュータ読出し可能な媒体に格納されることができる。また、当業者は本発明の例示的な実施形態の思想及び様相からの逸脱しなく、多様なコンピューティング装置の機能が単一コンピューティング装置に組合又は集積されることができるか、又は特定コンピューティング装置の機能が１つ又はそれ以上の他のコンピューティング装置に分散されることを理解することができる。
【００３１】
異なりに定義されない限り、本文で使用される技術的／科学的用語を含む全ての用語は本発明が属する技術分野での当業者によって共通的に理解されることと同一の意味を有する。共用辞書に定義されたことのような用語は連関された技術の脈絡及び／又は本発明の詳細な記述でそれらの意味と一貫された意味を有することと解釈されるべきであり、本文に明示的に定義されない限り、理想的であるか，又はあまりにも形式的な意味に解釈されてはならない。
【００３２】
以下で記述するように、本開示発明の実施形態は単一の論理ユニットにグループ化された複数のキーバリュー（ＫＶ；ｋｅｙ−ｖａｌｕｅ）ストレージ装置で構成されたキーバリュー信頼性システム（ｋｅｙ−ｖａｌｕｅ  ｒｅｌｉａｂｉｌｉｔｙ  ｓｙｓｔｅｍ）にキーバリューデータを信頼できるように格納する方法を提供する。さらに、本発明の実施形態はドライブを管理し、キーバリュー（ＫＶ；ｋｅｙ−ｖａｌｕｅ）ペアの格納を制御するステートレスハイブリッド信頼性管理者（ｓｔａｔｅｌｅｓｓ  ｈｙｂｒｉｄ  ｒｅｌｉａｂｉｌｉｔｙ  ｍａｎａｇｅｒ）を提供する。ステートレスハイブリッド信頼性管理者は、客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）；Ｋ−客体（ｋ、ｒ）消去コーディング−パッキング（Ｋ−Ｏｂｊｅｃｔ（ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ−Ｐａｃｋｉｎｇ）；単一客体（ｋ、ｒ）消去コーディング−スプリッティング（Ｓｉｎｇｌｅ  Ｏｂｊｅｃｔ（ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ−Ｓｐｌｉｔｔｉｎｇ）；Ｋ−客体（ｋ、ｒ、ｄ）再生成コーディング−パッキング（Ｋ−Ｏｂｊｅｃｔ（ｋ、ｒ、ｄ）  ｒｅｇｅｎｅｒａｔｉｏｎ  ｃｏｄｉｎｇ−Ｐａｃｋｉｎｇ）；単一客体（ｋ、ｒ、ｄ）再生成コーディング−スプリッティング（Ｓｉｎｇｌｅ  Ｏｂｊｅｃｔ（ｋ、ｒ、ｄ）  ｒｅｇｅｎｅｒａｔｉｏｎ  ｃｏｄｉｎｇ−Ｓｐｌｉｔｔｉｎｇ）を含む複数のプラグ可能な（ｐｌｕｇｇａｂｌｅ）信頼性メカニズム／技法／具現に依存する。
【００３３】
複数のプラグ可能な信頼性メカニズムに依存したステートレスハイブリッド信頼性管理者が装置を管理でき、ＫＶペアの格納を制御でき、信頼性メカニズムの選択に対して開示された方法が異なるサイズのＫＶペアの効率的な格納、回収、及び復旧を確保できるので、記載された実施形態はメモリストレージ（例えば、キーバリューストレージ装置内にキーバリューデータの格納）の性能を向上できる。
【００３４】
図１は本発明の実施形態に係る、選択された信頼性メカニズムに基づいてキーバリューデータを格納するキーバリュー信頼性システムを示すブロック図である。
【００３５】
図１を参照すれば、上述されたように、多様な新しいキーバリュー（ＫＶ）「ストレージ装置」｛別名、「メモリ装置」「ドライブ」「ＫＶ−ＳＳＤ」｝（１３０）にとり、キーバリューデータ及びＫＶストレージ装置１３０向けに特注される（ｔａｉｌｏｒｅｄ）か、又は特別に採用された新しいデータ信頼性メカニズムが役立つ潛在的な可能性がある。従って、このようなＫＶストレージ装置１３０のためのハイブリッドキーバリュー信頼性システムは１つ又はそれ以上のプラグ可能信頼性メカニズム（ｐｌｕｇｇａｂｌｅ  ｒｅｌｉａｂｉｌｉｔｙ  ｍｅｃｈａｎｉｓｍｓ）に応じてハイブリッド信頼性メカニズムを使用してＫＶストレージ装置１３０を管理し、それらにＫＶペアの格納を制御するステートレスハイブリッド信頼性管理者／仮想装置管理者レイヤ／仮想装置管理レイヤ１２０を含む。
たとえ、本文に記述されたＫＶストレージ装置を指すためにＳＳＤ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅｓ）が一般的に使用されるが、他のストレージ装置が本発明の実施形態に係って使用され得る。本発明の実施形態に係る仮想装置管理レイヤ１２０のデザイン及び動作は以下で記述される。
【００３６】
現在の実施形態で、仮想装置管理レイヤ１２０はキーバリュー信頼性システムにキーバリューデータ／ＫＶペア１７０を信頼性があるように格納する方法を可能にできる。キーバリュー信頼性システムは単一の論理ユニット（ｓｉｎｇｌｅ  ｌｏｇｉｃａｌ  ｕｎｉｔ）にグループ化された複数のＫＶストレージ装置１３０を含む。単一の論理ユニットは信頼性グループ１４０と称される。
【００３７】
信頼性グループ１４０のＫＶストレージ装置１３０はキーバリューデータ１７０に対応する、消去コーディングされたデータ及び／又は複製されたデータの各々のチャンクを格納する。信頼性グループ１４０のＫＶストレージ装置１３０は、キーバリュー動作が仮想装置管理レイヤ１２０を通じて指向される（ｂｅ  ｄｉｒｅｃｔｅｄ  ｔｏ）、見かけ上は単一仮想装置１１０として露出される。
【００３８】
仮想装置１１０は仮想装置管理レイヤ１２０としてステートレスハイブリッド信頼性管理者（ｓｔａｔｅｌｅｓｓ  ｈｙｂｒｉｄ  ｒｅｌｉａｂｉｌｉｔｙ  ｍａｎａｇｅｒ）を含む。即ち、仮想装置管理レイヤ１２０はステートレス方式（即ち、キーバリューと装置との間のマッピングを維持することを必要としない）により動作する。
【００３９】
従って、仮想装置１１０はＮ個のＫＶストレージ装置１３０（但し、Ｎは整数）（例えば、ＫＶ−ＳＳＤ１３０−１、１３０−２、１３０−３、１３０−４、…、１３０−Ｎ）を通じてキーバリューデータ１７０を格納し、仮想装置管理レイヤ１２０を通じてＫＶストレージ装置１３０にキーバリューデータ１７０を格納する。即ち、仮想装置管理レイヤ１２０はＫＶストレージ装置１３０を管理し、それにＫＶペアを格納することを制御する。
【００４０】
他の実施形態で、キーバリュー信頼性システムはキーバリューデータ１７０のキーと連関されたメタデータ及び／又はデータを選択的に格納して動作速度を向上させるキャッシュをさらに含み得る。信頼性メカニズムはＫＶペアに対応するメタデータを含むようにＫＶペアのバリューを添付できる。即ち、キー及びバリューの両方はメタデータ識別子“ＭｅｔａＩＤ”に対応する情報を添付されて、そのＫＶペアに特有の追加的なメタデータを格納できる。メタデータはチェックサム（ｃｈｅｃｋｓｕｍ）、データを格納するのに使用される信頼性メカニズムを識別するための信頼性メカニズム識別子、消去コード識別子、客体サイズ、パリティグループ番号の位置等を含む。
【００４１】
他の実施形態で、キーバリュー信頼性システムは以下で記述する信頼性メカニズムに対応するブルームフィルタ（ｂｌｏｏｍ  ｆｉｌｔｅｒｓ）をさらに含み得る。ブルームフィルタは対応する信頼性メカニズムを使用して格納されたキーを格納でき、それによって、キーバリュー信頼性システムを読出し動作において支援できる。従って、キーバリュー信頼性システムの１つ又はそれ以上のブルームフィルタ又はキャッシュは、現存する信頼性メカニズムに対してキーの速やかなテストを可能にできる。
【００４２】
本文で記述する信頼性メカニズムの各々は、ＫＶストレージ装置１３０の中で対応する１つの数字のキーモジュロ（ｋｅｙ  ｍｏｄｕｌｏ）に対する同一のハッシュ関数を使用してキーバリューデータ１７０に対応するＫＶペアの第１のコピー又はチャンクを先ず格納できる。即ち、プラグ可能な信頼性メカニズムの各々に対して、信頼性メカニズムは使用者キーと同一のキーを使用して少なくとも第１のコピー／チャンクを格納できる。
【００４３】
上述されたように、本発明の実施形態は複数のＫＶストレージ装置１３０にキーバリューデータ１７０の信頼性ある格納を保障する複数のプラグ可能な信頼性メカニズム（ｍｕｌｔｉｐｌｅ  ｐｌｕｇｇａｂｌｅ  ｒｅｌｉａｂｉｌｉｔｙ  ｍｅｃｈａｎｉｓｍｓ）を提供する。従って、仮想装置管理レイヤ１２０は信頼性メカニズムを必要とし、信頼性メカニズムの中で何れが使用されるかを決定できる。
【００４４】
信頼性メカニズムは仮想装置１１０のセットアップ中に設定されるバリューサイズ閾値（ｖａｌｕｅ−ｓｉｚｅ  ｔｈｒｅｓｈｏｌｄｓ）、及び／又は、客体読出し／書込み頻度（ｏｂｊｅｃｔ  ｒｅａｄ／ｗｒｉｔｅ  ｆｒｅｑｕｅｎｃｙ）などの政策に基づき得る。従って、仮想装置管理レイヤ１２０はシステムの指定された政策に基づいて適切な信頼性メカニズムを選択することができる。
【００４５】
本発明の実施形態の５つの信頼性メカニズムに対して、仮想装置管理レイヤ１２０によって信頼性メカニズムがどのように動作するか、そして信頼性メカニズムが何時適切に使用され、選択されるかを以下で記述する。この５つの信頼性メカニズムは、客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）、Ｋ客体（ｋ、ｒ）消去コーディング−パッキング（Ｋ−Ｏｂｊｅｃｔ（ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ−Ｐａｃｋｉｎｇ）、単一客体（ｋ、ｒ）消去コーディング−スプリッティング（Ｓｉｎｇｌｅ  Ｏｂｊｅｃｔ（ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ−Ｓｐｌｉｔｔｉｎｇ）、Ｋ客体（ｋ、ｒ、ｄ）再生成コーディング−パッキング（Ｋ−Ｏｂｊｅｃｔ（ｋ、ｒ、ｄ）  ｒｅｇｅｎｅｒａｔｉｏｎ  ｃｏｄｉｎｇ−Ｐａｃｋｉｎｇ）、及び単一客体（ｋ、ｒ、ｄ）再生成コーディング−スプリッティング（Ｓｉｎｇｌｅ  Ｏｂｊｅｃｔ（ｋ、ｒ、ｄ）  ｒｅｇｅｎｅｒａｔｉｏｎ  ｃｏｄｉｎｇ−Ｓｐｌｉｔｔｉｎｇ）と称され得る。
【００４６】
図２は本発明の実施形態に係る、ＫＶペアのデータのサイズに対応するサイズ閾値に基づいたキーバリュー信頼性システムによって使用される信頼性メカニズムの選択を示す順序図（２００）である。
【００４７】
図２を参照すれば、サイズ閾値に基づいた支援される信頼性メカニズムの全体（例えば、５つの上述された信頼性メカニズム）に対して、仮想装置管理レイヤ１２０はデータ（例えば、キーバリューデータ１７０）のバリューサイズを決定でき、バリューサイズが各々の信頼性メカニズムに対応する与えられた閾値（ｔｉ）より小さいか否かを決定でき、バリューサイズ閾値の要求を満足する第１信頼性メカニズムを選択できる。
【００４８】
例えば、Ｓ２１０で、仮想装置管理レイヤ１２０はサイズ閾値基盤の支援されている“ｎ”（ｎは整数）個の信頼性メカニズムを受信する。Ｓ２２０で、仮想装置管理レイヤ１２０は１からｎの順に１回に１つずつ、信頼性メカニズムの各々を単純に検討する。Ｓ２３０で、支援されるべき信頼性メカニズムの各々の検討で、仮想装置管理レイヤ１２０はデータのバリューサイズが各々の信頼性メカニズムに対応する閾値ｔｉより小さいか否かを決定する。
【００４９】
Ｓ２４０で、データのバリューサイズより大きいか、或いは同一である閾値ｔｉを有する信頼性メカニズムが発見された場合、仮想装置管理レイヤ１２０はその信頼性メカニズムの使用を選択する。Ｓ２５０で、Ｓ２４０で使用される信頼性メカニズムが決定されたか、又はＳ２２０の最終反複でバリューサイズを満足する適切な閾値ｔｉを有する信頼性メカニズムがＮ個の信頼性メカニズムの中で無いと決定された場合、仮想装置管理レイヤ１２０は使用されるべき信頼性メカニズムの決定を終了する。
【００５０】
現在の実施形態で、“ｎ”は本文に記載された実施形態の５つの異なる信頼性メカニズムに応じて５に等しい。比較的に非常に小さいキーバリュー（即ち、バリューサイズが比較的小さい場合）に対して、仮想装置管理レイヤ１２０は客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムの使用を選択する。若干大きいキーバリューに対して、仮想装置管理レイヤ１２０はパッキング、そしてその次に、スプリッティング（Ｓｐｌｉｔｔｉｎｇ）（例えば、順に）の信頼性メカニズムを選択する一方、各々に対して伝統的な消去コーディングを使用する。しかし、さらに大きいキーバリューに対して、仮想装置管理レイヤ１２０はパッキング、その次にスプリッティング（Ｓｐｌｉｔｔｉｎｇ）を選択する一方、伝統的な消去コーディングの代わりに再生成消去コーディング（ｒｅｇｅｎｅｒａｔｉｏｎ  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）を使用する。
【００５１】
本発明の実施形態で、使用のための信頼性メカニズムの選択は、客体の客体サイズ、客体に対する処理能力要求条件、対応するキーバリューペアの読出し／書込み温度（ｒｅａｄ／ｗｒｉｔｅ  ｔｅｍｐｅｒａｔｕｒｅ）、即ち読出し／書込み頻度、複数のＫＶストレージ装置の基本８ｕｎｄｅｒｌｙｉｎｇ）コーディング能力、及び／又はキーがホットであるか、又はコールドであるかに対する検出の中で１つ又はそれ以上に基づき得る。例えば、“ホット（ｈｏｔ）”キーは、それらのバリューサイズに拘わらず、客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムを使用する反面に、“コールド（ｃｏｌｄ）”キーはそれらのバリューサイズに応じて消去コーディング方式の信頼性メカニズムの中で１つに適用される。他の実施形態として、客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムを使用するか否かに対する決定はサイズ及び読出し／書込み温度の両方に基づき得る。従って、客体読出し／書込み温度、即ち客体読出し／書込み頻度に対応する閾値が、図２の順序図２００でサイズに対応する閾値の代わりに、信頼性メカニズムを決定するのに使用され得る。
【００５２】
５つの信頼性メカニズムの各々の動作は以下で記述する。
【００５３】
図１を再び参照すれば、以前に言及されたように、ＫＶペアのバリューサイズが比較的小さい場合、“客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）”の信頼性メカニズムが仮想装置管理レイヤ１２０による選択として適切である。客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）は客体毎（例えば、キーバリューデータ／ＫＶペア１７０毎）に適用される。客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムは、高いストレージオーバヘッド（ｓｔｏｒａｇｅ  ｏｖｅｒｈｅａｄ）を有するが、読出し及び復旧費用が低いので、非常に小さいバリューサイズに対して適切である。
【００５４】
客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムは頻繁なアップデートを有するキーバリュー（例えば、キーバリューデータ１７０）に対しても適切であり、従って読出し及び書込み頻度に基づいて選択される。
【００５５】
客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の間に、書込みが発生する毎に、キーバリューデータ１７０は１つ又はそれ以上の追加的なＫＶストレージ装置１３０に複製される。キーバリューデータ１７０の主要コピー（ｐｒｉｍａｒｙ  ｃｏｐｙ）はキーモジュロ（Ｎ）のハッシュによって指定されたＫＶストレージ装置１３０の中の１つに配置される。キーバリューデータ１７０の主要コピーのレプリカ（複製、ｒｅｐｌｉｃａｓ）は循環的な方式により、順次連続したＫＶストレージ装置１３０、又は直接隣接する（ｉｍｍｅｄｉａｔｅｌｙ  ａｄｊａｃｅｎｔ）ＫＶストレージ装置１３０に配置される。
【００５６】
仮想装置管理レイヤ１２０又は使用者はキーバリューデータ１７０のコピーをどのぐらい多く生成するかを決定する。例えば、仮想装置管理レイヤ１２０を使用する分散されたシステムは３ウェイ複製（３−ｗａｙ  ｒｅｐｌｉｃａｔｉｏｎ）を選択し、３ウェイ複製を既定方式に（ｄｅｆａｕｌｔ）設定できる。しかし、システムの使用者は客体のレプリカの数を選択された規定値（ｄｅｆａｕｌｔ）より多く或いは少なく構成することができる。
【００５７】
従って、例えば、３ウェイ複製が使用され、主要（ｐｒｉｍａｒｙ）ＫＶストレージ装置１３０−２がデータ（例えば、キーバリューデータ１７０）の主要コピーを含む場合、仮想装置管理レイヤ１２０はデータの主要コピーのレプリカを後続複製ＫＶストレージ装置１３０−３、１３０−４に格納し、データの全てのコピーは同一である。即ち、データのコピーはデータの主要コピーを含むＫＶストレージ装置１３０−２に後続する２つの（又はそれ以上の）直接後続するＫＶストレージ装置１３０−３、１３０−４（例えば、循環的方式により）に格納される。
【００５８】
データのコピーは複製ＫＶストレージ装置１３０−３、１３０−４において、主要ＫＶストレージ装置１３０−２と同一のキー名（ｋｅｙｎａｍｅ）／同一の使用者キー（ｕｓｅｒ  ｋｅｙ）下で格納される。データの全てのコピーは複製されたキーバリューデータ１７０を識別するための識別子及びチェックサムを含む。
【００５９】
従って、特定のＫＶストレージ装置１３０が故障している場合（例えば、ＫＶストレージ装置１３０−３が故障している場合）、故障しているＫＶストレージ装置１３０−３の直接前後のＫＶストレージ装置１３０（例えば、ＫＶストレージ装置１３０−３の直接前後のＫＶストレージ装置１３０−２、１３０−４）に対してキー名に関して復旧メカニズム（ｒｅｃｏｖｅｒｙ  ｍｅｃｈａｎｉｓｍ）を使用してバリューを復旧することによって、複製されたキーが復旧されることを保障する。
【００６０】
客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムを要約すれば、仮想装置管理レイヤ１２０はキーバリューデータ１７０を受信し、キー客体をハッシングしてキー客体のレプリカを格納するのに使用されるＫＶストレージ装置１３０を決定する。仮想装置管理レイヤ１２０は、以後に、同一の使用者キー名（例えば、適切なＭｅｔａＩＤフィールド）の下で、アップデートされたバリューを選択されたＫＶストレージ装置１３０（例えば、選択されたＫＶストレージ装置１３０−２、１３０−３、１３０−４）に書込む。
【００６１】
図３は本発明の実施形態に係る、伝統的な消去コーディング（ｔｒａｄｉｔｉｏｎａｌ  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）を使用するＫ−客体（ｋ、ｒ）消去コーディング（Ｋ−Ｏｂｊｅｃｔ（ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）又は多重客体“パッキング”（ｍｕｌｔｉｐｌｅ  ｏｂｊｅｃｔ  “Ｐａｃｋｉｎｇ”）の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【００６２】
図３を参照すれば、伝統的な消去コーディングを使用するパッキングの信頼性メカニズムは、チャンクに分割されることが（例えば、より良いデータ処理能力（ｔｈｒｏｕｇｈｐｕｔ）を得るために）適切ではない小さいバリューサイズを有するデータに対して選択される。例えば、伝統的な消去コーディングを使用するパッキングの信頼性メカニズムは、以前に記述された客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムの選択に帰着したバリューサイズよりは大きいバリューサイズ（しかし、依然として比較的小さい）を有するデータに対して仮想装置管理レイヤ１２０によって選択される。
【００６３】
伝統的な消去コーディングを使用するパッキングは伝統的な（ｋ、ｒ）ＭＤＳ（ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消去コーディングでもって構成され、体系的なＭＤＳコード（ｓｙｓｔｅｍｉｃ  ＭＤＳ  ｃｏｄｅ）と共に使用される。例として、該消去コードは基本的に（ｂｙ＿ｄｅｆａｕｌｔ）、（４、２）リードソロモンコード（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  Ｃｏｄｅ）であり、その理由は、（４、２）リードソロモンコードが比較的広く研究されており、それに対応する高速具現ライブラリが容易に利用可能であるからである。
【００６４】
伝統的な消去コーディングを使用するパッキングの信頼性メカニズムを使用することで、同一のパリティグループ／消去コードグループ３４０を形成するＮ個の相異なるＫＶストレージ装置３３０−１、・・・、３３０−Ｎの一部であるｋ個の相異なるＫＶストレージ装置３３０のキューからのｋ個のキー／キー客体３５０が選択され、消去コーディングされてパッキングされる（ｋは整数である）。
【００６５】
例えば、仮想装置管理レイヤ１２０は各ＫＶストレージ装置３３０（例えば、図１の信頼性グループ１４０の各ＫＶストレージ装置１３０）に対して最近に書込まれたキー客体３５０のバッファを維持して、仮想装置管理レイヤ１２０がｋ個の相異なるＫＶストレージ装置からｋ個のキー客体３５０を選択して消去コーディングの実行を可能にし、これによってＫＶペアに対応するｋ個のキー客体３５０をパッキングする。
【００６６】
現在の実施形態で、仮想装置管理レイヤ１２０は４つの異なるＫＶストレージ装置３３０−１、３３０−３、３３０−４、３３０−Ｎから各々４つのキー客体３５０ｘ、３５０ｙ、３５０ｂ、３５０ｃを選択する（現在の実施形態で、ｋ＝４）。
【００６７】
図４は本発明の実施形態に係る、伝統的な消去コーディングを使用するＫ−客体（ｋ、ｒ）消去コーディング、又は多重客体“パッキング”の信頼性メカニズムに応じるバリュー客体及びパリティ客体の格納を示すブロック図である。
【００６８】
図３及び図４を参照すれば、キー客体３５０は「キーモジュロｎのハッシュ」番目のＫＶストレージ装置３３０に位置される。即ち、各キー客体３５０に対してキーモジュロｎの各々のハッシュが遂行されて、その特定のＫＶストレージ装置３３０のキューに伝送される。現在の実施形態で、第ｉキー（Ｋｅｙｉ）３５０−ｉはハッシュされ、ＫＶ−ＳＳＤ１（３３０−１）に位置され、第ｊキー（Ｋｅｙｊ）３５０−ｊはハッシュされ、ＫＶ−ＳＳＤ２（３３０−２）に位置され、第ｋキー（Ｋｅｙｋ）３５０−ｋはハッシュされ、ＫＶ−ＳＳＤ４（３３０−４）に位置される。
【００６９】
格納された各々のバリュー客体４５０の使用者バリュー長さ／バリューサイズ４６２は、書込まれた使用者バリュー長さ／バリューサイズと同一である。しかし、消去コーディングを可能にする一貫性のために、使用者バリュー／バリュー客体４５０はそれらに添付された“０”充填（ｆｉｌｌｉｎｇ）／仮想ゼロ／仮想ゼロパディング４６４を有することによって全て同一のサイズを有すると看做される。
即ち、相異なるバリュー客体４５０の各々の使用者バリューサイズ４６２が変化する可能性がある（即ち、バリュー客体４５０は可変する長さを有するか、又は可変長さキーバリューである）ので、仮想ゼロパディング４６４の方法を具現することによって（即ち、コーディングのために仮想ゼロパディング４６４のゼロをバリュー客体４５０にパディングする一方、パディングされたゼロを含むバリュー客体４５０を示すデータを実際に再書込むことを避けることによって）、パリティ客体４６０はパリティグループ３４０内で最大サイズのバリュー客体４７０と同一のサイズを有する。
従って、現在の実施形態で、バリュー客体４５０“Ｖａｌ  ｘ”、“Ｖａｌ  ｙ”、及び“Ｖａｌ  ｂ”はＫＶストレージ装置に実際に格納されない仮想ゼロでもってパディングされ、それによって最大サイズのバリュー客体４７０“Ｖａｌ  ｃ”と同一のサイズを有することと看做される。従って、パリティ客体４６０が計算される。
【００７０】
ｋ個のキー客体３５０のコーディングの後に、仮想装置管理レイヤ１２０はｋ個のキー客体３５０に対応するｋ個のバリュー／ｋ個のバリュー客体４５０からｒ個のパリティ客体４６０を計算する。この時、ｒは整数であり、ｋ＋ｒ＝Ｎであり、Ｎはパリティグループ３４０内のＫＶストレージ装置３３０（例えば、図１の信頼性グループ１４０のＮ個のＫＶストレージ装置１３０）の数である。
【００７１】
仮想装置管理レイヤ１２０はｒ個のパリティ客体４６０をパリティグループ３４０内の残るｒ個の相異なるＫＶストレージ装置３３０（即ち、ｋ個のキー客体３５０が選択され、消去コーディングされるｋ個のＫＶストレージ装置３３０を含むキューからｒ個のＫＶストレージ装置が区分される）に格納する。従って、ｋ個のキー客体３５０及びｒ個のパリティ客体４６０の各々はＮ個のストレージ装置３３０の中で相異なる各々に格納され、それに対応するデータはパリティグループ３４０のＮ個のＫＶストレージ装置３３０の各々に均等に分散される。
【００７２】
伝統的な消去コーディングを使用するパッキングの信頼性メカニズムに対して、読出し及び書込みは比較的簡単であるが、パリティの再計算及び復旧はそれほど簡単ではない。パリティの復旧及び再計算に対して（例えば、アップデートの場合）、どのキー客体３５０が同一のパリティグループ３４０に一緒にグループ化されているかを知り、それによってパリティの計算を可能にするために、キー客体３５０のグループに関する情報は、各バリュー客体４５０の実際のバリューサイズ４６２（即ち、仮想ゼロパディング４６４を除いたバリューサイズ４６２）と共に、ＫＶストレージ装置３３０（例えば、図１のＫＶストレージ装置１３０）の各々にメタデータ客体として格納され得る。従って、現在の実施形態で、追加的なメタデータがキー客体３５０（例えば、図１の信頼性グループ１４０に位置されたキー客体３５０）、キー客体３５０に対応するバリュー客体４５０の各々の元の長さ、及びキー客体３５０のコーディング順序にＫＶストレージ装置１３０を格納するのに使用され得る。
【００７３】
例えば、メタデータ客体バリューは信頼性グループ１４０のキー客体３５０の全体を表示し（ｉｎｄｉｃａｔｅ）、またバリュー客体４５０のバリューサイズ４６２を表示するフィールドを含み、パリティ客体キー（即ち、仮想ゼロパディング４６４のゼロを含むバリュー客体４５０）、パリティ客体４６０のバリューサイズ４６２、及びｒ個のパリティ客体４６０が格納された対応するｒ個のＫＶストレージ装置３３０の識別のための装置ＩＤを示す相異なるフィールドを含み得る。
【００７４】
データは使用者キーを使用して格納される。メタデータは使用者キー及び“Ｍｅｔａｄａｔａ”と称するＭｅｔａＩＤインジケータ（表示部、ｉｎｄｉｃａｔｏｒ）を使用して形成された内部キーに格納される。さらに、バリュー客体４５０がどこで終了されたか、仮想ゼロパディング４６４のゼロがどこで開始するかを決定することによって、バリュー客体４５０が再生成される場合に正確な再構成のためにバリューサイズ４６２はメタデータに格納されて仮想ゼロパディング４６４の位置（即ち、ゼロが何処に追加されたか）の認識を可能にする。
【００７５】
ＫＶストレージ装置３３０の中で１つが故障であれば、データ及びメタデータの全てが同一のＫＶストレージ装置３３０に格納される可能性があるので、データ及びメタデータが消失する可能性が潛在的にあり、それによって、復旧が不可能になる可能性である。しかし、このような状況を防止するために、メタデータ客体バリューは、以前に言及された客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）の信頼性メカニズムをメタデータ客体バリューに対して具現できる仮想装置管理レイヤ１２０の“客体複製エンジン（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ  Ｅｎｇｉｎｅ）”を使用して複製され得る。
【００７６】
追加的に、メタデータ客体バリューは信頼性グループ１４０の全ての客体に対して同一であるので、ＫＶストレージ装置３３０が客体連結（ｏｂｊｅｃｔ  ｌｉｎｋｉｎｇ）を支援する場合、同一のメタデータ客体バリューは同一のＫＶストレージ装置３３０に共通に位置する多重のキー名（ｋｅｙｎａｍｅｓ）に連結されることができる。さらに、集団書込み（ｂａｔｃｈ  ｗｒｉｔｉｎｇ）が支援される場合、客体バリューはさらに良い処理能力のために共にバッチ処理（ｂａｔｃｈｅｄ）され得る。
【００７７】
現在の実施形態に係る伝統的な消去コーディングを使用するパッキングの信頼性メカニズムを要約すれば、仮想装置管理レイヤ１２０はバッファを介してｋ個の異なるＫＶストレージ装置３３０からｋ個の最近に格納されたキー客体３５０を選択できる。
仮想装置管理レイヤ１２０は、以後に、各々のキー客体３５０に対応するバリュー客体４５０（パリティグループ４４０の最大サイズのバリュー客体４７０を除く）を回収し、仮想ゼロパディング３５０でもってパディングしてバリュー客体４５０を同一のサイズ（例えば、最大サイズのバリュー客体４７０のサイズ）に生成できる。
仮想装置管理レイヤ１２０は、以後に、ＭＤＳコードプロセスを使用してｋ個のキー客体３５０からｒ個のパリティ客体を生成できる。
仮想装置管理レイヤ１２０は、以後に、ｒ個のパリティ客体４６０をＮ個のＫＶストレージ装置３３０の中でキー客体３５０が選択されたｋ個のＫＶストレージ装置３３０と相異なるｒ個のＫＶストレージ装置３３０に書込みできる。この時、ｋ＋ｒはＮと同一である。
仮想装置管理レイヤ１２０は、以後に、上述された情報を示すメタデータ客体を生成できる。
最後に、仮想装置管理レイヤ１２０は使用者キー及びメタデータ識別子から形成されたキーと共にキー客体３５０及びパリティ客体４６０をＮ個のＫＶストレージ装置３３０（例えば、複製エンジンと類似である）に書込みできる。
【００７８】
図５は本発明の実施形態に係る、伝統的な消去コーディングを使用する単一客体（ｋ、ｒ）消去コーディング（Ｓｉｎｇｌｅ  Ｏｂｊｅｃｔ  （ｋ、ｒ）  ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）、又は“スプリッティング（Ｓｐｌｉｔｔｉｎｇ）”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【００７９】
図５を参照すれば、以前に言及された客体複製（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ）及び伝統的な消去コーディングを使用するパッキングの信頼性メカニズムに適合するバリューサイズより大きいバリューサイズを有するバリューに対して、仮想装置管理レイヤ１２０は、伝統的な消去コーディングを使用する“単一客体（Ｓｉｎｇｌｅ＿Ｏｂｊｅｃｔ）（ｋ、ｒ）消去コーディング”、即ち“スプリッティング（ｓｐｌｉｔｔｉｎｇ）”の信頼性メカニズムを選択できる。
伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムは、比較的大きいバリューサイズを有し、ｋ個の同一サイズのバリュー客体５５０に分割された場合、良い被処理能力を有するＫＶバリュー（キーバリューデータ／ＫＶペア）５７０に適合するＫＶバリュー（キーバリューデータ／ＫＶペア）単位の信頼性メカニズムである。
【００８０】
ＫＶバリュー５７０を分割した後に、実施形態によれば、仮想装置管理レイヤ１２０はｋ個のバリュー客体５５０の各々に対してチェックサムを計算する。その後に、仮想装置管理レイヤ１２０はｋ個のバリュー客体５５０の各々の前にメタデータを挿入する。
【００８１】
伝統的な消去コーディングを使用するスプリッティングはＫＶバリュー５７０を複数のさらに小さいバリュー客体５５０に分割すること、その後にＫＶバリュー５７０を分割して得られた複数のさらに小さいバリュー客体５５０をｋ個の連続したＫＶストレージ装置５３０に亘って分散することを含む。従って、ｋ個の同一サイズのバリュー客体５５０のサイズは基本（ｕｎｄｅｒｌｙｉｎｇ）ＫＶストレージ装置５３０の各々によって支援され得る。
【００８２】
伝統的な消去コーディングを使用するスプリッティングを使用する場合、仮想装置管理レイヤ１２０は体系的なＭＤＳコード（例えば、仮想装置レイヤ１２０が、基本（ｄｅ＿ｆａｕｌｔ）コードとして、（４、２）リードソロモンコードなどの伝統的な（ｋ、ｒ）ＭＤＳ消去コーディングを前提として構成される場合）を使用して生成されたｒ個のパリティバリュー／客体５６０をまた追加できる。以後に、上述された伝統的な消去コーディングを使用するパッキングの信頼性メカニズムと類似な方式により、仮想装置管理レイヤ１２０はｋ個のバリュー客体５５０及びｒ個のパリティ客体５６０をＮ個のＫＶストレージ装置５３０に書込みできる（ｋ＋ｒ＝Ｎ）。
【００８３】
従って、仮想装置管理レイヤ１２０は比較的大きいＫＶバリュー５７０をｋ個のバリュー客体５５０に分割でき、ｒ個のパリティ客体５６０を計算し、追加でき、ｋ個のバリュー客体５５０及びｒ個のパリティ客体５６０を（ｋ＋ｒ）個のＫＶストレージ装置５３０に格納できる。
【００８４】
伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムを使用する場合、ＫＶバリュー５７０のバリューに対応するキー５８０をハッシングした後に、仮想装置管理レイヤ１２０は対応するバリュー客体を格納する（例えば、ｋ個のバリュー客体５５０の中で第１のバリュー客体、図５の実施形態におけるＤ１をハッシュマークゼロに格納する）ために、主要ＫＶストレージ装置５３０ａ（例えば、図５に図示された実施形態における、ＫＶ−ＳＳＤ２）を決定できる。ｋ＋ｒ個のバリュー客体５５０、５６０は同一の使用者キー名の下で、主要ＫＶストレージ装置５３０ａ及び（Ｎ−１）個の連続的なＫＶストレージ装置５３０の各々に書込まれ得る。
即ち、図５に図示された実施形態で、ｋ個のバリュー客体５５０の中で第１のバリュー客体は主要ＫＶストレージ装置５３０ａ“ＫＶ−ＳＳＤ２”に書込まれ、ｋ個のバリュー客体５５０の中で残りはｒ個のパリティ客体５６０と共にＫＶストレージ装置５３０“ＫＶ−ＳＳＤ３”乃至“ＫＶ−ＳＳＤＮ”及び“ＫＶ−ＳＳＤ１”に循環方式の順に書込まれる（例えば、上述された客体複製の信頼性メカニズムに対して記述されたことと類似な方式である）。
【００８５】
伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムを要約すれば、仮想装置管理レイヤ１２０は比較的大きいＫＶバリュー５７０をｋ個の同一サイズのバリュー客体５５０に分割できる。仮想装置管理レイヤ１２０は、以後に、ＭＤＳコードプロセスを使用してｋ個のバリュー客体５５０に対するｒ個のパリティ客体５６０を生成できる。仮想装置管理レイヤ１２０は、以後に、ＫＶバリュー５７０のバリューに対応するキーをハッシングして第１のバリュー客体が位置するべき主要ＫＶストレージ装置５３０ａを決定できる。仮想装置管理レイヤ１２０は、以後に、仮想装置管理レイヤ１２０によって生成され、循環方式の順に主要ＫＶストレージ装置５３０ａ及び（Ｎ−１）個の連続したＫＶストレージ装置５３０に対応する適切なＭｅｔａＩＤフィールドを含む同一の使用者キー名の下で、（ｋ＋ｒ）個のバリュー客体５５０とパリティ客体５６０を書込みできる。
【００８６】
図３及び図４を再び参照すれば、他の実施形態によれば、仮想装置管理レイヤ１２０は再生成消去コーディングを使用する、Ｋ−客体（ｋ、ｒ、ｄ）消去コーディング、即ち多重客体（ｍｕｌｔｉｐｌｅ＿ｏｂｊｅｃｔ“パッキング”の信頼性メカニズムを選択できる（例えば、図２の順序図２００に従って）。現在の信頼性メカニズムは仮想装置管理レイヤ１２０がｋ個の客体をｋ個のＫＶストレージ装置にパッキングする点で、以前に記述された伝統的な消去コーディングを使用するパッキングの信頼性メカニズムと類似である。しかし、再生成消去コーディングを使用するパッキングは伝統的な（ｋ、ｒ）消去コードを使用する代わりに、（ｋ、ｒ、ｄ）再生成コードを使用する。従って、図３及び図４は現在の実施形態に対しては、一般的実施形態として参照され得る。
【００８７】
従って、再生成コードが適切であるけれども、客体を分割することが適切ではなく、若しくは、客体を分割などせずにそのまま維持する（ｉｎｔａｃｔ）ことがさらに適切である場合に、再生成消去コーディングを使用するパッキングが使用され得る。再生成消去コーディングを使用するパッキングは以前に言及された客体複製、並びに伝統的な消去コーディングを使用するスプリッティング及びパッキングの信頼性メカニズムのために使用されるバリューサイズより大きいバリューサイズに対して適切であり得る。
再生成消去コーディングを使用するパッキングは、客体の複数のサブパケットの読出しが全体客体の読出しよりも低い性能に帰着しない場合に使用され得る。再生成消去コーディングを使用するパッキングは、基本（ｕｎｄｅｒｌｙｉｎｇ）ＫＶストレージ装置（例えば、図１のＫＶストレージ装置１３０、又は図３のＫＶストレージ装置３３０）が復旧／再構成の間に補助できて、再生成コードを認識可能な（ａｗａｒｅ）ＫＶストレージ装置である場合に、適切であり得る。
【００８８】
図６は本発明の実施形態に係る、再生成消去コーディングを使用する“単一客体（Ｓｉｎｇｌｅ＿Ｏｂｊｅｃｔ）（ｋ、ｒ、ｄ）消去コーディング”、即ち、“スプリッティング（Ｓｐｌｉｔｔｉｎｇ）”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたＫＶストレージ装置のグループを示すブロック図である。
【００８９】
図６を参照すれば、現在の信頼性メカニズムは、伝統的な（ｋ、ｒ）ＭＤＳ消去コーディングの代わりに（ｋ、ｒ、ｄ）再生成コードを使用する点のみを除外すれば、仮想装置管理レイヤが、図５に図示されたように、伝統的な消去コーディングを使用するスプリッティングと類似な方式による動作を可能になし得る。再生成消去コーディングを使用するパッキングと同様に、現在の信頼性メカニズムは基本（ｕｎｄｅｒｌｙｉｎｇ）ＫＶストレージ装置６３０が復旧／再構成の間に補助できて、再生成コードを認識可能なＫＶストレージ装置である場合に適切であり得る。
【００９０】
ＫＶバリュー客体６７０が以前に記載された信頼性メカニズムと対応するＫＶバリュー客体よりさらに大きいバリューサイズを有し、ＫＶバリュー客体６７０のｋ個のスプリット（バリュー客体）６５０の複数のサブパケット６９０の読出しが、スプリット（バリュー客体）６５０全体の読出し（例えば、伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムで遂行される）よりも低い性能に帰着しない場合に、再生成消去コーディングを使用するスプリッティングが適切であり得る。
【００９１】
再生成消去コーディングを使用するスプリッティングの信頼性メカニズムは、ＫＶバリュー客体６７０がｋ個の同一サイズのバリュー客体（スプリット）６５０に分割（ｓｐｌｉｔ）され、各スプリット６５０が複数のサブパケット６９０（例えば、現在の実施形態では、スプリット６５０が１個当たり４つのサブパケット６９０に分割される）に仮想的にさらに分割（ｓｐｌｉｔ）され、ＫＶバリュー客体６７０からの複数のサブパケット６９０の読出しがＫＶバリュー客体６７０の全体の読出しよりも良い処理能力を有する場合に適切な処理量を有し得る程の非常に大きいバリューサイズを有するＫＶバリュー客体に適合し得るＫＶバリュー客体（ＫＶペア）単位のメカニズムである。バリューサイズは全ての基本（ｕｎｄｅｒｌｙｉｎｇ）ＫＶストレージ装置６３０によって支援される。
【００９２】
伝統的な消去コーディングを使用するスプリッティングと類似に、図５に図示されたように、現在信頼性メカニズムの仮想装置管理レイヤ１２０は体系的な再生成コードを使用してｒ個のパリティ客体６６０を追加して、ｋ個のスプリット（バリュー客体）６５０及びｒ個のパリティ客体６６０をＮ個のＫＶストレージ装置６３０に書込み得る（ここで、（ｋ＋ｒ）＝Ｎ）。しかし、ｒ個のパリティ客体６６０の各々は複数個のパリティサブパケット６９２（該複数個の個数は、例えば、スプリット（バリュー客体）６５０当たりのサブパケット６９０の個数に対応する）に分割され得る。伝統的な消去コーディングを使用するスプリッティングと異なり、現在の実施形態では、基本（ｄｅｆａｕｌｔ）コードが（４、２、５）ジグザグコード（ｚｉｇｚａｇ  ｃｏｄｅ）であり得る。
【００９３】
再生成消去コーディングを使用するスプリッティングの信頼性メカニズムを要約すれば、仮想装置レイヤ１２０は大きいＫＶバリュー客体６７０をｋ個の同一サイズのスプリット（バリュー客体）６５０に分割できる。仮想装置管理レイヤ１２０は、以後に、ｋ個の客体６５０の各々をｍ個の同一サイズのサブパケット６９０に分割できる（ｋ、ｍは整数である）。仮想装置管理レイヤ１２０は、以後に、再生成コーディングプロセスを使用してｋ個の客体６５０に対するｒ個のパリティ客体６６０を生成して、ｒ個のパリティ客体６６０の各々は、ｍ個の同一サイズのパリティサブパケット６９２に分割され得る。
仮想装置管理レイヤ１２０は、以後に、ＫＶバリュー客体６７０に対応するキーをハッシングして第１スプリット（バリュー客体）Ｄ１が位置する主要ＫＶストレージ装置６３０ａ（この場合、ＫＶ−ＳＳＤ＿２）を決定できる。仮想装置管理レイヤ１２０は、以後に、仮想装置管理レイヤ１２０によって生成され、循環方式により主要ＫＶストレージ装置６３０ａ（この場合、ＫＶ−ＳＳＤ＿２）及び（Ｎ−１）個の連続したＫＶストレージ装置６３０（この場合、ＫＶ−ＳＳＤ＿３〜ＫＶ−ＳＳＤ＿ｋ＋ｒ、ＫＶ−ＳＳＤ＿１）に対応する適切なＭｅｔａＩＤフィールドを含み得る同一の使用者キー名の下で、各々がｍ個のサブパケット６９０を含むｋ個のスプリット（バリュー客体）６５０（Ｄ１〜Ｄｋ）、及び各々がｍ個のパリティサブパケット６９２を含むｒ個のパリティ客体６６０（Ｄｋ＋１〜Ｄｋ＋ｒ）を書込み得る。
【００９４】
上述されたことによれば、仮想装置管理レイヤは、キーバリューデータの１つ又はそれ以上の属性に基づいてキーバリューデータの格納に対して信頼性メカニズムのグループから適切な信頼性メカニズムを選択できる。従って、本文に記載された実施形態は、記載された信頼性メカニズムが各々何れも単一キー復旧手続を遂行できるので、メモリストレージの分野における性能改善に貢献する。
メモリ装置の全体が故障した場合、本発明の実施形態の仮想装置管理レイヤは故障したメモリ装置に存在するキーの全てを復旧し、新しいメモリ装置にコピーできる。仮想装置管理レイヤは、信頼性グループ内の故障したメモリ装置に隣接するメモリ装置に存在するキーの全体に対する反複動作を遂行し、信頼性メカニズムが故障であるメモリ装置に存在することと判断したキーに対してキー単位複数動作を遂行することによって、キー全体の復旧及びコピーを達成できる。
【００９５】
基本信頼性メカニズム（例えば、基本（ｕｎｄｅｒｌｙｉｎｇ）ストレージ装置のサイズ制約に従う）によって支援されるバリューサイズより大きいバリューサイズを有する非常に大きいＫＶペア（＝ＫＶバリュー）が信頼性管理者によって複数のＫＶペアに明示的に分割され、信頼性メカニズムが複数のスプリット及びスプリット数の情報をＫＶバリューに格納されたメタデータと共に格納するので、記載された実施形態はメモリストレージ分野における改善にさらに貢献する。
【００９６】
本文に記載された実施形態は、特定の用語を採用した場合でも、その用語は一般的、且つ記述的な意味にのみ使用され、且つ解釈されるべきであり、これに制限する意図はない。一部の実施形態で、本発明が属する技術分野における通常の技術者には明らかなように、特定の実施形態において明瞭に相異なって言及されない限り、特定実施形態と連関されて記述された特徴、属性、及び／又は要素は他の実施形態と連関されて記述された特徴、属性、及び／又は要素と組合わされて又は独立的に使用され得る。従って、当業者は形態又は詳細な記述の多様な変形が、今回の開示に含まれた機能的な均等物と合わせて以下の特許請求の範囲に表明された今回の開示の思想及び範囲から逸脱せずに、具現され得ることが理解されよう。
【符号の説明】
【００９７】
１１０      単一仮想装置
１２０      仮想装置管理レイヤ
１３０      ＫＶストレージ装置
１４０      信頼性グループ
１７０      キーバリューデータ、キーバリューデータ／ＫＶペア
３３０、３３０−１、・・・、３３０−Ｎ      ＫＶストレージ装置
３４０      パリティグループ／消去コードグループ
３５０、３５０−ｉ、３５０−ｊ、３５０−ｙ、３５０−ｂ、３５０−ｋ、３５０−ｃ      キー／キー客体
４５０      バリュー客体
４６０      パリティ客体
４６２      使用者バリュー長さ／バリューサイズ
４６４      “０”充填／仮想ゼロ／仮想ゼロパディング
４７０      最大サイズのバリュー客体
５３０      ストレージ装置
５３０ａ      主要ＫＶストレージ装置
５５０      バリュー客体
５６０      パリティ客体
５７０      ＫＶバリュー／キーバリューデータ／ＫＶペア
５８０      キー
６３０      ＫＶストレージ装置
６３０ａ      主要ＫＶストレージ装置
６５０      スプリット（バリュー客体）
６６０      パリティ客体
６７０      ＫＶバリュー客体
６９０      サブパケット
６９２      パリティサブパケット
【図１】
2019128959.tif 000003
【図２】
2019128959.tif 000004
【図３】
2019128959.tif 000005
【図４】
2019128959.tif 000006
【図５】
2019128959.tif 000007
【図６】
2019128959.tif 000008