JP7140688B2 - データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法 - Google Patents
データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法 Download PDFInfo
- Publication number
- JP7140688B2 JP7140688B2 JP2019007690A JP2019007690A JP7140688B2 JP 7140688 B2 JP7140688 B2 JP 7140688B2 JP 2019007690 A JP2019007690 A JP 2019007690A JP 2019007690 A JP2019007690 A JP 2019007690A JP 7140688 B2 JP7140688 B2 JP 7140688B2
- Authority
- JP
- Japan
- Prior art keywords
- data storage
- chunks
- storage devices
- data
- size
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
Description
消去コーディングは、高レベルのフェイルを容認できる強力なデータ保護及び回復を提供する複雑なアルゴリズムを使用してパリティ(parity)に類似した一連(bunch)のブロックを追加する。例えば、消去コーディングは、物理的ドライブを仮想化して複数の物理的ドライブに亘り分散されて速い復元を達成できる仮想ドライブを生成できる。 RAIDを使用したデータの複製は、大型オブジェクトを複製するためには余りにも高価につき、消去コーディングは、小型オブジェクトに対してはストレージ空間の浪費を招きかねない。
特許文献2:米国登録特許第9594633B2号公報
特許文献3:米国登録特許第9639268B2号公報
全てのバリューの範囲、又は、エンティティ(entity)のグループの指称(表示、indication)は、本来の開示目的のために、同時に、請求される構成要件(Subject_matter)を制限する目的のために、全ての可能な中間値又は中間オブジェクトを開示している、ことをここに明記する。図面に示された構成要素の形状及び寸法(dimension)は、単に本発明が具現される方式の理解を助けるために設計されており、実施例で図示された寸法及び形状に本発明を含む限定する意図はない、こともここに明記する。
消去コーディング(erasure coding)に対し、データストレージデバイスの全体の個数は、P個のフェイルを容認するためには、データデバイス(D)とパリティデバイス(P)の合計であり得る。
複製(replication)に対し、P個のフェイルを容認するデータストレージデバイスの全体の個数は、P+1であり得る。データストレージデバイスのストレージ容量は、消去コーディング又は複製においてほぼ類似になる可能性がある。仮想ストレージのストレージ容量は、グループ内の全データストレージデバイスのデータストレージ空間の合計によって決定されることができる。
しかし、複数のデータストレージデバイスから複数のチャンクを必要とするので、消去コーディングは、一般的に、重い計算を伴って、小型のオブジェクトを復元するのに多くの時間が消費されることができる。これは、データの消去コーディングを遂行した後に、データを複製する非階層的な方式である。代わりに、本発明のシステム及び方法は、オブジェクトのサイズに基づいて、データの複製と消去コーディングとの間の選択について柔軟な決定を提供する。言い換えると、本発明のシステム及び方法は、データの信頼性判断、つまり、オブジェクトのサイズだけでなく、オブジェクトを格納するための全体空間のオーバヘッドに基づいて、ランタイムでのデータ複製又は消去コーディングの何れを適用するべきかを決定できる。
対照的に、本発明のシステム及び方法は、オブジェクト及びその特性、例えば、サイズに基づく信頼性を提供できる。オブジェクトがアップデートされる場合、リード・モディファイ・ライトのオーバヘッドが発生することなしに、アップデートされたオブジェクトだけがオーバライト(上書き、over-write)を必要とする。
スプリットサイズ(つまり、1つのデータデバイスに格納されたチャンクの個数)及びバンドサイズ(つまり、1つ又はそれ以上のデータストレージデバイスに格納された、1つのオブジェクトに含まれるデータチャンク及びパリティチャンクの個数の合計)は、原本のオブジェクト及びチャンクのサイズに応じて可変されることができる。例えば、スプリットサイズは、データの複製に対しては原本のサイズであり得るが、スプリットサイズは、消去コーディングに対してはバンド当たりチャンク個数で全チャンク個数を除算して得られるサイズである。
スプリット第1方式では、仮想ストレージレイヤは、仮想ストレージ120において、チャンク(Chunk_1、Chunk_2、Chunk_3)を第1データストレージデバイス(Disk_1)に格納し、チャンク(Chunk_4、 Chunk_5、Chunk_6)を第2データストレージデバイス(Disk_2)に格納し、同様にチャンク(Chunk_3D-2、Chunk_3D-1、Chunk_3D)を、第Dデータストエージデバイス(Disk_D)に格納する。バンド150は、チャンク(Chunk_1、Chunk_4、...、Chunk_3D-2)及びパリティチャンク(Parity_1~Parity_P)を含む。
バンド優先方式では、仮想ストレージレイヤは、仮想ストレージ121において、チャンク(Chunk_1~Chunk_D)をデータストレージデバイス(Disk_1~Disk_D)に各々格納し、チャンク(Chunk_D+1~Chunk_2D)をデータストレージデバイス(Disk_1~Disk_D)に各々格納し、同様にチャンク(Chunk_2D+1~Chunk_3D)をデータストレージデバイス(Disk_1~Disk_D)に各々格納する。スプリット151は、データのチャンク(Chunk_1、Chunk_D+1、Chunk_2D+1)を含む。パリティチャンク(Parity_1~Parity_P)はパリティディスク(Disk_D+1~Disk_D+P)に格納される。
本実施形態では、説明の便宜のために、仮想ストレージ120及び仮想ストレージ121の両方が、バンド優先方式でパリティチャンクを格納する場合が示されるが、パリティチャンクの格納は、本発明の思想から逸脱せずにスプリット優先方式で遂行されうることが理解されるであろう。
オブジェクトを格納するのに複数のバンドが使用される場合、オブジェクトが巨大であるものに分類される。オブジェクトを格納するのに1つのバンドがほぼ全体的に使用される場合、オブジェクトが大型であるものに分類される。オブジェクトを格納するのにバンドの小さな部分(small fraction)が使用される場合、オブジェクトが小型であるものに分類される。最後に、オブジェクトが小型又は大型に分類できる場合、オブジェクトが中型であるものに分類される。従って、相異なるサイズを有するチャンクが同じ仮想ストレージだけでなく、仮想ストレージを形成する個々のデータストレージデバイスに共存できる。
一実施例によると、仮想ストレージレイヤは、チャンクを分配する内部使用のために、デバイスによりサポートされたキー空間(device-supported key space)中の数バイトを保留し、キー空間の残りの部分をユーザに開放する。この場合、ユーザ特定のオブジェクトキーは、オブジェクトの1つ又はそれ以上の分割されたチャンクのための内部キーのグループを代表する。
バンドIDが「do_not_care」である場合、バンドIDフィールドは無視される。データストレージデバイスがグループの特徴を効率的に具現することが仮定されることができる。例えば、トライ木構造(trie structure)は、ユーザキー201の与えられた所定の接頭部(prefix)を有するオブジェクトを容易に識別できる一方で、ハッシュテーブルは、メタデータフィールドが固定されている場合にのみ、ユーザキーを使用してハッシュバケットからオブジェクトを発見できる。仮想ストレージレイヤは、デバイスごとにバンドID202に基づいて、返されたオブジェクトチャンクを昇順(ascending order)に整列させて、バンド及びオブジェクトを再構成して、ユーザキー201と共にオブジェクトを返す。
その後で、仮想ストレージレイヤは、残りのチャンクを収集し、残りのスライスを順番に再構成する。全てのスライスが構成された場合、仮想ストレージレイヤは、スライスからのデータのチャンク(Chunk_1~3D)を含むオブジェクト310を再構成する。消去コーディングの場合で、仮想ストレージレイヤは、パリティチャンク(parity chunk 1~P)からパリティブロックをさらに再構成する。現在の実施例で、チャンクを分割することについてバンド優先方式を示しているが、本発明の思想から逸脱せずに、スプリット優先方式がチャンク分割及びオブジェクト回収に適用できることが理解されるであろう。
仮想ストレージレイヤは、バンドID402を使用して1つずつスライスを構成できる。まず、仮想ストレージレイヤは、バンドIDが0(BID = 0)であるバンド0と共にユーザキー401を、全てのデータストレージデバイスに放送する。仮想ストレージレイヤは、全てのデータストレージデバイスからバンド0(Band_0)に対するチャンクを受信し、受信されたチャンクの中のバンド0(Band_0)に属するチャンクからバンド情報を回収する。受信されたバンドの情報をベースに、仮想ストレージレイヤは、バンドの数を認知して、オブジェクトを回収する。オブジェクトが大型の場合は、1つのバンドのみが存在できるので、仮想ストレージレイヤは、そのバンド内のチャンクからオブジェクト全体を再構成できる。
巨大オブジェクトに対しては1つより多くのチャンクが存在するので、仮想ストレージレイヤは、複数のバンド(例えば、Band_1とBand_2)を1つずつ回収することを必要とする。この場合で、仮想ストレージレイヤは、全てのチャンクが回収されるまで、バンドIDを調節する(例えば、BID = 1又はBID = 2)ことにより、回収要請を放送する。仮想ストレージレイヤが、全てのスライスを構成した場合、仮想ストレージレイヤは、オブジェクト410を再構成できる。小型オブジェクトは、デバイスがグループの特徴をサポートしているか否かに無関係に、メタデータを有していない可能性がある。チャンクサイズをチェックすることで、仮想ストレージレイヤは、数学式7及び数学式10を使用して、オブジェクト410が小型であるか否かを決定できる。
主データストレージデバイスは、データストレージデバイス上でバンドIDなしでユーザキーのハッシュバリュー(以下、「Hash(user_key)」(ハッシュ(ユーザキー))と称される)を使用して選択されることができる。(D+P)個のデバイスの全部又は一部は、図5の実施例で選択されることができ、D個のデバイスは、図6の実施例で選択されることができる。スタートデバイスは、専用のパリティデバイスがない場合、Hash(user_key)%(D+P)によって決定でき、又は、専用のパリティデバイスが存在する場合、Hash(user key)%Dによって決定できる。
後続のチャンクは、次のデバイス(例えば、(Hash(user_key)+ 1)%(D+P)、(Hash(user key)+2)%(D+P)、...、(Hash(user key)+ D + P-1)%(D+P)、又は、(Hash(user_key)+ 1)%D、(Hash(user_key)+2)%D、...、(Hash(user_key)+ D- 1)%D)の順に順次的に書込みされることができる。このようなオペレーションは、バンド当たり動作であり、仮想ストレージレイヤは、オブジェクトのチャンクを書込むために、全てのNCOi個のバンドに対して、このような手順を繰り返す。ユーザキーのハッシュバリューは、各オブジェクト当たり一度計算されることを必要とする。
図9を参照すると、まず、仮想ストレージレイヤは、書込みのためのスライスが存在するかを判別する(820)。書込みのためのスライスが存在しない場合、仮想ストレージレイヤは、エラーログを格納し、オペレーションを終了し、オブジェクトを書込むための要請を放送したホストコンピュータ上で動作するユーザアプリケーション及び/又はホストコンピュータのオペレーティングシステムに知らせる。書込みのためのスライスが存在する場合、仮想ストレージレイヤは、オブジェクトのスライスを作成し、スライスのチャンクに対する内部キーを生成する(821)。
仮想ストレージレイヤは、これが書込みのための最後のスライスであるかをチェックする(822)。最後のスライスに対し、仮想ストレージレイヤは、スライスがバンドを一杯埋めることができない場合、データのチャンクにパディング(paddings)を追加し、消去コーディングアルゴリズムを使用して、バンドに対するP個のパリティチャンクを計算する(824)。最後のスライス以外の他のスライスに対して、仮想ストレージレイヤはパディング手順823を省略している。仮想ストレージレイヤは、分散ポリシーに基づいて、データ及びパリティチャンクに対するデバイスをさらに決定する(825)。例えば、分散ポリシーは、スプリット優先又はバンド優先ポリシーの何れか1つであり得る。仮想ストレージレイヤは、821で生成された内部キーと共にバンド内のデータ及びパリティチャンクを1つ又はそれ以上のストレージデバイスに書込む(826)。
仮想ストレージレイヤが各バンド当たり同一サイズのD個のチャンクを受信している限り、仮想ストレージレイヤは、バンドを再構成できる。バンドに対して受信されたチャンクの全体の個数が、データストレージデバイスの個数(D)よりも小さいか、又はチャンクのサイズが同じでない場合は、エラーが発生する。このエラーは、全てのデータストレージデバイスが「NOT_EXIST」(不存在)エラーを返す場合という不在オブジェクトのリード(a read of non-existing object)、又は復旧できないエラー(unrecoverable error)によって発生されることができる。仮想ストレージレイヤは、バンドを1つずつ再構成し、その後に、バンドからオブジェクトを再構成する。
仮想ストレージレイヤが同一サイズのD個のチャンクを受信している限り、仮想ストレージレイヤは、バンド、即ちオブジェクトを再構成できる。バンドに対して受信されたチャンクの全体の個数が、データチャンクの数(D)よりも小さいか、又はチャンクのサイズが同じでない場合は、エラーが発生する。このエラーは、全てのデータストレージデバイスが「NOT-EXIST」(不存在)エラーを返す場合という不在オブジェクト(non-existing object)のリード、又は復旧できないエラー(unrecoverable error)によって発生されることができる。
図11を参照すると、仮想ストレージレイヤは、受信されたチャンクが小型であるかを、まずチェックする(921)。仮想ストレージレイヤは、小型オブジェクトに対する小型チャンクを予想するが、大きなチャンクを受信した場合、仮想ストレージレイヤは、エラーを発生する(924)。仮想ストレージレイヤが、受信されたチャンクが有効であると判断した場合(922)、仮想ストレージレイヤは、受信されたチャンクを使用して、小型のオブジェクトを再構成し(923)、そうでない場合には、仮想ストレージレイヤは、他のデータストレージデバイスからチャンクを受信する(925)。
図12を参照すると、仮想ストレージレイヤは、スライスを再構成するD個のチャンクが全て受信されたかをチェックする(931)。もしそうなら、仮想ストレージレイヤには、D個のチャンクと共に消去コーディングアルゴリズムを使用してスライスを再構成する(935)。もしそうでない場合、仮想ストレージレイヤは、現在のバンドの全てのチャンクが受信されたかをチェックする(932)。バンドの全てのチャンクが受信された場合、受信されたチャンクのうち少なくとも1つが有効でないことが有り得るので、仮想ストレージレイヤは、エラーを生成する(936)。受信されるチャンクがさらに存在する場合、仮想ストレージレイヤは、他のデータストレージデバイスからのそれらを受信し続けて(933)、スライスを再構成する全てのD個のチャンクを受信するまで手順を繰り返す。受信されたチャンクが大型オブジェクトのものでも、巨大オブジェクトのものでもない場合(たとえば、チャンクが小型オブジェクトのものである場合)、仮想ストレージレイヤは、エラーを発生する(936)。
前記仮想ストレージレイヤは、前記第1オブジェクトを小型オブジェクトとして分類して前記データ複製方式を適用し、前記小型オブジェクトを前記複数のデータストレージデバイスの何れか1つ又はそれ以上に亘って格納する。
前記仮想ストレージレイヤは、前記第2オブジェクトを巨大オブジェクトとして分類して前記巨大オブジェクトを同一サイズの1つ又はそれ以上のチャンクに分割し、前記消去コーディング方式を適用して前記1つ又はそれ以上のチャンクを前記複数のデータストレージデバイスに亘って分散して格納する。
120、121,321 仮想ストレージ
151 スプリット
200 内部キー
201,301,401 ユーザキー
202,402 バンド識別子
302 バンド識別子(=‘do_not_care’の場合)
350 バンド
Claims (18)
- データストレージシステムであって、
キーバリューペアの複数のオブジェクトを格納する複数のデータストレージデバイスと、
前記複数のデータストレージデバイスを制御するためのデバイスドライバを管理し、前記複数のオブジェクトの各々のオブジェクトのサイズに基づいて、データ複製方式及び消去コーディング方式を含む相異なるデータ信頼性方式を適用する仮想ストレージレイヤと、を包含し、
前記複数のオブジェクトは、第1サイズを有する第1オブジェクト及び前記第1サイズよりも大きい第2サイズを有する第2オブジェクトを包含し、
前記仮想ストレージレイヤは、前記第1オブジェクトを小型オブジェクトとして分類して前記データ複製方式を適用し、前記小型オブジェクトを前記複数のデータストレージデバイスの何れか1つ又はそれ以上に亘って格納し、
前記仮想ストレージレイヤは、前記第2オブジェクトを巨大オブジェクトとして分類して前記巨大オブジェクトを同一サイズの1つ又はそれ以上のチャンクに分割し、前記消去コーディング方式を適用して前記複数のデータストレージデバイスに亘って前記1つ又はそれ以上のチャンクを分散して格納し、
前記仮想ストレージレイヤは、前記複数のオブジェクトの各々のオブジェクトのサイズによる分類に基づいて前記複数のデータストレージデバイスの間で1つ又は複数のデータストレージデバイスをグループ化することにより、ホストコンピュータ上で実行されるアプリケーションに仮想記憶ユニットを提供し、
前記複数のオブジェクトの各々は、ユーザキーを使用して識別され、
前記仮想ストレージレイヤは、前記巨大オブジェクトに対するバンド識別子及び前記ユーザキーを含む内部キーを生成し、
前記バンド識別子は、複数のバンドの中で各々のバンドを識別するために使用され、前記複数のバンドのうち、前記バンドの各々は、前記複数のデータストレージデバイスに亘って分散された前記1つ又はそれ以上のチャンクのうちの何れか1つのチャンクを包含することを特徴とするデータストレージシステム。 - 前記分散の方式は、前記仮想ストレージレイヤが、前記巨大オブジェクトの前記1つ又はそれ以上のチャンクを分割し、前記複数のデータストレージデバイスに亘って順次データストレージデバイス単位で格納するスプリット優先分散の方式であることを特徴とする請求項1に記載のデータストレージシステム。
- 前記分散の方式は、前記仮想ストレージレイヤが、前記複数のデータストレージデバイスに前記巨大オブジェクトの前記1つ又はそれ以上のチャンクが全て格納されるまで、前記複数のデータストレージデバイスのそれぞれに、前記巨大オブジェクトの前記1つ又はそれ以上のチャンクの中の1つのチャンクを順次格納するバンド優先分散の方式であることを特徴とする請求項1に記載のデータストレージシステム。
- 前記仮想ストレージレイヤは、第3サイズを有する第3オブジェクトを大型オブジェクトとして更に分類し、前記大型オブジェクトを同一サイズの1つ又はそれ以上のチャンクに分割し、前記消去コーディング方式を適用し、前記分割した1つ又はそれ以上のチャンクを前記複数のデータストレージデバイスに亘って分散して格納し、
前記第3サイズは、前記第1サイズよりも大きく、前記第2サイズよりも小さく、前記大型オブジェクトは、1つのバンドのみ、即ち、1つのスプリット内には1つのチャンクのみを包含する、ことを特徴とする請求項1に記載のデータストレージシステム。 - 前記仮想ストレージレイヤは、第4サイズを有する第4オブジェクトを中型オブジェクトとしてさらに分類し、
前記第4サイズは、前記第1サイズよりも大きく、前記第3サイズよりも小さく、
前記仮想ストレージレイヤは、前記データ複製方式及び前記消去コーディング方式の何れか1つを適用する、ことを特徴とする請求項4に記載のデータストレージシステム。 - 前記仮想ストレージレイヤは、前記1つ又はそれ以上のチャンクのうち1番目のチャンクをリード又はライトするために前記ユーザキーのハッシュバリューを使用して前記複数のデータストレージデバイスの中でスタートデータストレージデバイスを識別する、ことを特徴とする請求項1に記載のデータストレージシステム。
- 前記複数のデータストレージデバイスは、前記巨大オブジェクトに関連されたパリティチャンクを格納する、1つ又はそれ以上の専用パリティデータストレージデバイスを包含する、ことを特徴とする請求項1に記載のデータストレージシステム。
- 前記複数のデータストレージデバイスは、グループの特徴をサポートし、前記仮想ストレージレイヤは、前記巨大オブジェクトをリードするとき、前記複数のデータストレージデバイスに向かって前記バンド識別子を任意データのビットに設定して放送する、ことを特徴とする請求項1に記載のデータストレージシステム。
- 前記複数のデータストレージデバイスをグループの特徴をサポートせずに、前記仮想ストレージレイヤは、前記巨大オブジェクトをリードするとき、前記複数のデータストレージデバイスに向かって前記バンド識別子をユニークなバンド識別子に設定して放送する、ことを特徴とする請求項1に記載のデータストレージシステム。
- 前記複数のデータストレージデバイスの各々は、キーバリュー・ソリッドステートドライブ(KV_SSD: key-value solid-state drive)である、ことを特徴とする請求項1に記載のデータストレージシステム。
- キーバリューペアのオブジェクトにアクセスする方法であって、
キーバリューペアの複数のオブジェクトを受信するステップと、
ここで、前記複数のオブジェクトは、第1サイズを有する第1オブジェクト及び前記第1サイズよりも大きい第2サイズを有する第2オブジェクトを包含し、
前記第1オブジェクトを小型オブジェクトとして分類するステップと、
前記小型オブジェクトにデータ複製方式を適用するステップと、
前記小型オブジェクトを複数のデータストレージデバイスの何れか1つ又はそれ以上に亘って格納するステップと、
前記第2オブジェクトを巨大オブジェクトとして分類するステップと、
前記巨大オブジェクトを同一サイズの1つ又はそれ以上のチャンクに分割するステップと、
前記巨大オブジェクトに消去コーディング方式を適用するステップと、
前記1つ又はそれ以上のチャンクを前記複数のデータストレージデバイスに亘って分散して格納するステップと、を包含し、
前記複数のオブジェクトの各々は、ユーザキーを使用して識別され、
前記オブジェクトに対するライト(書込み)要請を受信するステップと、
前記オブジェクトが前記巨大オブジェクトであるか否かを判別するステップと、
前記巨大オブジェクトに対するチャンクサイズ及びチャンクの個数を判別するステップと、
前記チャンクサイズ及び前記チャンクの個数をベースに、前記巨大オブジェクトの前記1つ又はそれ以上のチャンクを前記複数のデータストレージデバイスにライトするステップを、さらに包含する、ことを特徴とする方法。 - 前記1つ又はそれ以上のチャンクのうちで前記複数のデータストレージデバイスの各々に対して1つのチャンクを含むスライスを生成し、前記スライスに含まれた前記1つ又はそれ以上のチャンクの各々に対して、バンド識別子が添付された前記ユーザキーを使用して内部キーを生成するステップと、
消去コーディングを使用して、前記スライスに対応する前記1つ又はそれ以上のチャンク、及び1つ又はそれ以上のパリティチャンクを含むバンドを生成するステップと、
スプリット優先方式及びバンド優先方式を含む分散方式の何れかに基づいて、前記バンドを格納するべき複数のデータストレージデバイスを決定するステップと、
前記内部キーを有する前記バンドに、前記1つ又はそれ以上のチャンクをライトするステップと、をさらに包含する、ことを特徴とする請求項11に記載の方法。 - 前記オブジェクトが前記小型オブジェクトであるか否かを判別するステップと、
スプリット優先方式及びバンド優先方式を含む分散方式の何れかに基づいて、前記小型オブジェクトの前記1つ又はそれ以上のチャンクを格納するべき前記複数のデータストレージデバイスの部分集合を決定するステップと、
前記小型オブジェクトの前記1つ又はそれ以上のチャンクを前記複数のデータストレージデバイスのうちの前記部分集合にライトするステップと、をさらに包含する、ことを特徴とする請求項11に記載の方法。 - 前記ユーザキーを含む前記オブジェクトに対するリード(読出し)要請を受信するステップと、
前記複数のデータストレージデバイスがグループの特徴をサポートしているかを判別するステップと、
前記複数のデータストレージデバイスに向かって前記内部キーと共に前記リード要請を放送するステップと、をさらに包含する、ことを特徴とする請求項12に記載の方法。 - 前記グループの特徴がサポートされている場合、前記内部キーの前記バンド識別子は、任意データのビットに設定される、ことを特徴とする請求項14に記載の方法。
- 前記グループの特徴がサポートされない場合、前記の内部キーの前記バンド識別子はユニークなバンド識別子に設定される、ことを特徴とする請求項14に記載の方法。
- 前記複数のデータストレージデバイスの各々から少なくとも1つのチャンクを受信するステップと、
前記消去コーディング方式を使用して、前記複数のデータストレージデバイスから受信された少なくとも1つのチャンクからスライスを再構成するステップと、をさらに包含する、ことを特徴とする請求項14に記載の方法。 - 前記複数のデータストレージデバイスの各々は、キーバリュー・ソリッドステートドライブ(KV_SSD: key-value solid-state drive)である、ことを特徴とする請求項11に記載の方法。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/876,028 US10795760B2 (en) | 2017-03-20 | 2018-01-19 | Key value SSD |
US15/876028 | 2018-01-19 | ||
US201862635311P | 2018-02-26 | 2018-02-26 | |
US62/635311 | 2018-02-26 | ||
US15/967302 | 2018-04-30 | ||
US15/967,302 US10552062B2 (en) | 2017-03-20 | 2018-04-30 | System and method for storing very large key value objects |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2019128960A JP2019128960A (ja) | 2019-08-01 |
JP2019128960A5 JP2019128960A5 (ja) | 2022-01-25 |
JP7140688B2 true JP7140688B2 (ja) | 2022-09-21 |
Family
ID=67315834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019007690A Active JP7140688B2 (ja) | 2018-01-19 | 2019-01-21 | データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP7140688B2 (ja) |
KR (1) | KR102460568B1 (ja) |
CN (1) | CN110058804A (ja) |
TW (1) | TWI750425B (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400290A (zh) * | 2020-02-24 | 2020-07-10 | 拉扎斯网络科技(上海)有限公司 | 数据结构异常检测方法及装置、存储介质、计算机设备 |
CN112685334A (zh) * | 2020-12-21 | 2021-04-20 | 联想(北京)有限公司 | 一种分块缓存数据的方法、装置及存储介质 |
CN113296697B (zh) * | 2021-03-17 | 2024-04-19 | 阿里巴巴创新公司 | 数据处理***、数据处理方法以及装置 |
CN116737612A (zh) * | 2022-03-02 | 2023-09-12 | 华为技术有限公司 | 一种地址管理方法及存储装置 |
CN114895856B (zh) * | 2022-07-12 | 2022-09-16 | 创云融达信息技术(天津)股份有限公司 | 一种基于高密度存储硬件的分布式存储*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149870A1 (en) | 2012-06-08 | 2015-05-28 | Ntt Docomo, Inc. | Method and apparatus for low delay access to key-value based storage systems using fec techniques |
JP2015519674A (ja) | 2012-06-13 | 2015-07-09 | カリンゴ・インコーポレーテッドCaringo Incorporated | ストレージクラスタにおける消失符号付加および複製 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4805660B2 (ja) * | 2005-02-08 | 2011-11-02 | 富士通株式会社 | ディスクライト抜け検出装置 |
US8504535B1 (en) * | 2010-12-20 | 2013-08-06 | Amazon Technologies, Inc. | Erasure coding and redundant replication |
CN103631539B (zh) * | 2013-12-13 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 基于擦除编码机制的分布式存储***及其存储方法 |
CN103646111B (zh) * | 2013-12-25 | 2017-02-15 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的***及方法 |
CN104902009B (zh) * | 2015-04-27 | 2018-02-02 | 浙江大学 | 一种基于可擦除编码和链式备份的分布式存储*** |
JP2019514146A (ja) * | 2016-04-04 | 2019-05-30 | フォーミュルス ブラック コーポレーション | 高速システム状態クローニング |
-
2018
- 2018-11-14 TW TW107140309A patent/TWI750425B/zh active
- 2018-11-16 KR KR1020180142144A patent/KR102460568B1/ko active IP Right Grant
- 2018-12-21 CN CN201811572699.3A patent/CN110058804A/zh active Pending
-
2019
- 2019-01-21 JP JP2019007690A patent/JP7140688B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149870A1 (en) | 2012-06-08 | 2015-05-28 | Ntt Docomo, Inc. | Method and apparatus for low delay access to key-value based storage systems using fec techniques |
JP2015519674A (ja) | 2012-06-13 | 2015-07-09 | カリンゴ・インコーポレーテッドCaringo Incorporated | ストレージクラスタにおける消失符号付加および複製 |
Also Published As
Publication number | Publication date |
---|---|
TWI750425B (zh) | 2021-12-21 |
KR20190088873A (ko) | 2019-07-29 |
CN110058804A (zh) | 2019-07-26 |
TW201933121A (zh) | 2019-08-16 |
KR102460568B1 (ko) | 2022-10-31 |
JP2019128960A (ja) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7140688B2 (ja) | データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法 | |
US11386042B2 (en) | Snapshot-enabled storage system implementing algorithm for efficient reading of data from stored snapshots | |
JP7312251B2 (ja) | 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること | |
US11379142B2 (en) | Snapshot-enabled storage system implementing algorithm for efficient reclamation of snapshot storage space | |
CN110023896B (zh) | 直接映射的闪存存储***中的块合并 | |
JP5291456B2 (ja) | ストレージシステム・アーキテクチャ内のデータ・アロケーション | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US10372537B2 (en) | Elastic metadata and multiple tray allocation | |
US8904230B2 (en) | Dynamically resizing a parity declustered group | |
US8171253B2 (en) | Virtual disk mapping | |
US10552062B2 (en) | System and method for storing very large key value objects | |
KR100490723B1 (ko) | 파일 레벨 스트라이핑 장치 및 방법 | |
US8555029B2 (en) | Virtualized storage system and method of operating thereof | |
US20010018729A1 (en) | System and method for storage media group parity protection | |
CN112889034A (zh) | 对数据块的内容驱动的分布进行擦除编码 | |
KR20180106867A (ko) | 키 밸류 솔리드 스테이트 드라이브 | |
US11449237B2 (en) | Targetless snapshot system replication data pointer table | |
US11256428B2 (en) | Scaling raid-based storage by redistributing splits | |
US11544005B2 (en) | Storage system and processing method | |
Chandrashekhara et al. | Cider: A Case for Block Level Variable Redundancy on a Distributed Flash Array | |
JP2019128959A (ja) | キーバリューデータ信頼性システム、そのデータ格納方法、及び、その方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220117 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220117 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20220117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220405 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220705 |
|
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: 20220830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220908 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7140688 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |