JP2015521310A - 効率的なデータオブジェクトストレージ及び検索 - Google Patents

効率的なデータオブジェクトストレージ及び検索 Download PDF

Info

Publication number
JP2015521310A
JP2015521310A JP2015509020A JP2015509020A JP2015521310A JP 2015521310 A JP2015521310 A JP 2015521310A JP 2015509020 A JP2015509020 A JP 2015509020A JP 2015509020 A JP2015509020 A JP 2015509020A JP 2015521310 A JP2015521310 A JP 2015521310A
Authority
JP
Japan
Prior art keywords
index
data
storage
range
stored
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
JP2015509020A
Other languages
English (en)
Other versions
JP2015521310A5 (ja
JP6664218B2 (ja
Inventor
ガース・アール・グッドソン
ミンロン・シャオ
Original Assignee
ネットアップ,インコーポレイテッド
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 ネットアップ,インコーポレイテッド filed Critical ネットアップ,インコーポレイテッド
Publication of JP2015521310A publication Critical patent/JP2015521310A/ja
Publication of JP2015521310A5 publication Critical patent/JP2015521310A5/ja
Application granted granted Critical
Publication of JP6664218B2 publication Critical patent/JP6664218B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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
    • 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/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データストレージシステムは、プロセッサ、システムメモリ、及び論理空間を含む。一つ以上の物理ストレージデバイス内のストレージのブロックが論理空間の各々にアロケートされる。プロセッサは、データオブジェクトに対する論理コンテナを維持し、ボリュームは一つ以上の論理空間を含む。プロセッサは、論理空間内に、オブジェクト識別子により一意的に特定されるデータオブジェクトを格納する。プロセッサはまた、システムメモリに格納されオブジェクト識別子のレンジを第2のインデクスにマップする第1のインデクスを維持する。第2のインデクスは論理空間に格納されオブジェクト識別子のレンジに関連するデータオブジェクトのストレージロケーションを示す。

Description

本願は、2012年4月27日提出の米国特許出願第13/458323号の優先権を主張するものであり、その内容は全体として参照の上、本明細書に組み込まれる。
本発明の少なくとも一つの実施形態は、データストレージシステムに関し、特に、データストレージシステム内にデータオブジェクトを効率的に格納する技術に関する。
ネットワークストレージは、データをバックアップし、大量のデータを種々のクライアントへアクセス可能とする一般的アプローチである。ネットワークストレージ環境では、ストレージサーバは、一つ以上のデータの論理コンテナをクライアントへ示す若しくはエクスポートすることにより、データをクライアントシステムに利用可能とする。ネットワーク接続{せつぞく}ストレージ(NAS)及びストレージエリアネットワーク(SAN)を含む、様々なフォームのネットワークストレージがある。NASのコンテクストでは、ストレージサーバは、クライアントからのファイルレベルのリクエストにサービスを提供する。SANのコンテクストでは、ストレージサーバは、ブロックレベルのリクエストにサービスを提供する。ファイルレベルのリクエストとブロックレベルのリクエストの両方にサービスを提供できる、ストレージサーバもある。
技術市場は、現存のネットワークストレージ技術に影響を与える多数のトレンドを経験してきた。第1に、ネットワークストレージシステムを用いて格納されるデータ量は増え続ける。第2に、ランダムにデータオブジェクトが検索されるアプリケーションの数も増えている。フォトアーカイブなどのアプリケーションは、膨大な数のデータオブジェクトのための、ランダムにアクセスされることが多いストレージを提供する。これらのデータオブジェクトは殆ど変更されないこともある。従来のファイルシステムレイアウトは、これら状況下でデータオブジェクトを格納し検索するには不十分であると示されていた。多数の従来のファイルシステムレイアウトで用いられる階層ネームスペース及びinodeストラクチャは、データオブジェクトを格納し若しくは検索するための三つ以上のディスクインプット/アウトプット(I/O)オペレーションを要求する。一つのI/Oは、通常、データオブジェクトのネームをinodeに翻訳するのに必要な情報を検索するように要求される。第2のI/Oは、inodeを検索するのに必要である。少なくとも第3のI/Oは、通常、データオブジェクトを検索するのに要求される。これらの従来のレイアウトは、通常、これらのアプリケーションで必要とされ得ないメタデータ属性のストレージも含む。
更に、ネットワークストレージシステムが様々なアプリケーション及びパフォーマンスプロファイルに高度に適応可能であることは、より重要になりつつある。従来のネットワークストレージシステムは夫々、概略単一のデータレイアウトを用いるが、このことはある用途には適切であるものの、市場が要求する多数の様々な構成にとっては概略最適ではない。結果として、ネットワークストレージシステムデザイナは、システムに関する種々の潜在的な利用がどのようにデザインを駆動するか、について種々の設計上の選択肢を作成しなければならない。ひいてはこれらの選択は、システムのパフォーマンス特性を決定する。設計が実装され生成されると、成果としてのシステムオペレーション特性を変更することは、不可能ではないにせよ、非常に困難である。
以下に記載するのは、ネットワークストレージシステム内でオブジェクトを格納するファイルシステムレイアウト、並びに関連する方法及び装置である。ファイルシステムレイアウトを実装する種々の装置及び方法は、以下の説明では、まとめて「本明細書に記載のシステム」と、又は、単に「システム」と称される。システムは、異なる利用のケースの様々な必要に適合するように変更され得る柔軟なデータレイアウトにて、システムは効率的なデータオブジェクトの格納及び検索を、提供する。とりわけ、システムは空間内にデータオブジェクトを格納し、非階層ストラクチャを用いてそれらを管理する。従来のシステムと比較して、大容量記憶装置内でデータオブジェクトを格納し若しくは検索するのに要求されるインプット/アウトプット動作(I/Os)の数を減少させ、更に、データオブジェクトを格納するのに必要とされるストレージスペースの量を減少させることにより、システムは効率性を向上させる。I/Oは、プロセッサなどの情報処理デバイスと別のデバイスとの間の通信を要求するオペレーションである。データストレージシステムでは、I/Oは通常、ストレージサーバとストレージデバイスとの間の通信のことを指す。しかしながら、他のタイプのI/Oも可能である。システムに関する利点は多数の利用例で実現され得るが、システムは、データオブジェクトの高頻度のランダムアクセスを含む利用例に特によく適合する。個々のデータオブジェクトのために必要とされるメタデータの量が少なくてよい利用例にて、特に有益である。
このシステムは、ストレージサーバの内部にある他のタイプのメモリからデータを検索するのに比べて、I/Oは比較的時間消費し非効率的である、という認識に一部基づくものである。回転格納媒体上のデータオブジェクトにランダムにアクセスすることに係る固有の待ち時間により、ディスクI/Oは特に時間消費するものである。半導体メモリは非常に速い応答時間を有するが、メガバイト単位では通常非常に高価である。その結果として、半導体メモリは、データストレージシステム内にて、ディスクベースのストレージスペースよりも利用可能性がより限定されてしまい、より用途が搾られて選択されなければならない。本明細書に記載のシステムは、データオブジェクトのロケーションが二つのインデクスを用いて管理され得るファイルシステムレイアウトを実装する。インデクスは、一つ以上の情報のストレージロケーションを特定するリストである。二つのインデクスのうちの最初のものは十分に小さく、ストレージサーバのシステムメモリの内部で維持され得る。この実装では、二つのインデクスを用いてデータオブジェクトを検索することは、更に三つのステップを要求する。第1のインデクスにアクセスするステップ、第2のインデクスにアクセスするステップ、及び、データオブジェクトを検索するステップ、である。しかしながら、第1のインデクスはI/Oを実行すること無く実行され得るメモリロケーション内に格納され得るので、データオブジェクトを検索するのに要求されるI/Oは二つに過ぎない。ディスクI/Oの数を減少させることにより、ストレージシステムの全体パフォーマンスが向上する。データオブジェクトに関して、メタデータ対データの比率を減少させることでも、キャッシュがより効率的になり得る。より多くのデータがメモリに格納され得るからである。
更に、第2のインデクスは、それが若しくはその一部がシステムメモリ内にキャッシュされ得るような、密度を有する。データオブジェクトにアクセスするのに必要とされる第2のインデクスの一部がシステムメモリ内で利用可能であるならば、データオブジェクトにアクセスするのに必要なI/Oの数は更に減少され得る。続いてアクセスされるデータオブジェクトが局所性を示す場合、キャッシュされる第2のインデクスの一部からであっても、パフォーマンス上の利点が取得され得る。
システムは、(単に「空間」とも称する)「論理空間」、「リージョン」及び「スラブ」を含む、データのための論理コンストラクトを利用する。空間は、システムに関する基本的格納管理単位である。リージョンは、データに関する一つ以上の論理空間を含む。スラブは、一つ以上の物理ストレージデバイスの物理ブロックの集合体であり、個別のリージョンに分配される物理ストレージの単位である。空間は、論理空間を含むリージョンを構成する一つ以上のスラブの少なくとも一部にアロケートされる。システムは、リージョンレイヤの上のボリュームレイヤ内で、データの論理コンテナとして多重の「ボリューム」も維持し得る。個々のボリュームは、リージョンの一つ以上からの、論理空間の一つ以上を含み得る。個々のボリュームは、所定のパフォーマンス特徴を提供するように調整され得る。
システムは、高頻度でランダムにアクセスされる多数のデータオブジェクトを含む、フォトストレージなどの利用例に十分に適合的である。システムは、データオブジェクトと連結して格納されるメタデータが更に要求されることが少ない利用例や、データオブジェクトが殆ど変更されない利用例にも、十分に適合的である。
一つの実施形態では、システムは、プロセッサ、システムメモリ、及び論理空間を含む。一つ以上の物理ストレージデバイス内のストレージのブロックは、論理空間の各々にアロケートされる。プロセッサは、データオブジェクトのために論理コンテナとしてボリュームを維持し、ボリュームは論理空間の一つ以上を含む。プロセッサは、論理空間内にて、オブジェクト識別子により一意的に識別されるデータオブジェクトを格納する。プロセッサは、システムメモリ内に格納されオブジェクト識別子のレンジを第2のインデクスにマップする、第1のインデクスも維持する。第2のインデクスも論理空間内に格納され、オブジェクト識別子のレンジに関連するデータオブジェクトのストレージロケーションを示す。
添付の図面から、及び以下の詳細な説明から、本技術の他の形態も明白である。
添付の図面の利用を介して、本発明に係る一つ以上の実施形態を記載し説明する。
図1は、本発明が実装され得るネットワークストレージ環境を示す。 図2は、本明細書に記載の技術に係る、データストレージシステム内のデータストレージの種々のレイアウトを示す。 図3は、本明細書に記載の技術に係る、論理コンテナとしてボリュームを維持するための、2つのインデクスを用いる方法を示す。 図4は、本明細書に記載の技術を実装するデータストレージシステムを示す。 図5は、本明細書に記載の技術に係る、データストレージシステムを動作する方法を示す。 図6は、本明細書に記載の技術に係るデータオブジェクトのための論理コンテナとしてボリュームを維持するための、多重範囲で格納されるインデクスを用いる方法を示す。 図7は、断片化したデータオブジェクトを含むボリュームを維持するための、インデクスを用いる方法を示す。 図8は、本明細書に記載の技術に係る、データストレージシステムを動作する方法を示す。 図9は、本明細書に記載の技術を実装するのに用いられ得るストレージサーバのブロック図である。
「実施形態」、「一つの実施形態」などの本明細書における言及は、記載する特定の特性、構造若しくは特徴が本発明の少なくとも一つの実施形態に含まれることを意味する。本明細書におけるそれらフレーズの発生は、必ずしも全て同じ実施形態に言及するものでは無い。
本明細書に記載されるシステムは、ネットワークストレージシステム内でオブジェクトを格納するためのファイルシステムレイアウトを提供する。システムは、様々な利用のケースの要求に適合して変更され得る柔軟性のあるデータレイアウト内の、十分なデータオブジェクトストレージ及び検索を提供する。システムは、論理空間内にデータオブジェクトを格納し、更にデータオブジェクトを配置するのに2つのインデクスを用いる非階層ファイルストラクチャでデータオブジェクトの配置を管理することにより、部分的にこのことを遂行して、データオブジェクトを格納するのに必要なストレージスペースの量を減少する。
システムは、データオブジェクトにアクセスするのに要求されるディスクI/Oの数を減少することにより従来のファイルレイアウトシステムに関する効率性を改良し、個々のオブジェクトに関するメタデータの量を減少する。データオブジェクトを格納するのに必要なストレージスペースの量を減少する。実際は非階層であり、且つ通常階層ファイルレイアウトシステムと関連するパス、パス名、及びディレクトリに付随するメタデータオーバヘッドにより負担を負わされない、フラットネームスペースファイルを、システムは提供する。一つの実施形態では、これらの便益は、2つのインデクスを用いてファイルレイアウトを管理することにより得られる。2つのインデクスは、多くの場合それらのうちの一方が低遅延システムメモリ(例えば、RAM)に格納されるのに十分に小さいように構成される。このように、データオブジェクトは、2つのディスクI/Oと同程度に少なくアクセスされ得る。従来、階層ファイルシステムレイアウトは、データオブジェクトにアクセスするために、通常、3以上のディスクI/Oを要求する。システムは、データオブジェクトの格納のための論理空間を使用するボリュームと連結して2つのインデクスを実装する。
図1は、本明細書に記載する技術に係る或る実施形態が利用され得る動作環境100を示す。動作環境100は、ストレージサーバシステム130、クライアント180A及び180B、並びにネットワーク190を含む。
ストレージサーバシステム130は、ストレージサーバ140、ハードディスクドライブ(HDD)150A、HDD150B,半導体ドライブ(SSD)160A、及びSSD160Bを含む。ストレージサーバシステム130は、データ若しくはデータストレージリソースを管理し、包含し、又はそれらのへのアクセスを提供するのに用いられる、様々なタイプの他のデバイス若しくはストレージコンポーネントも含み得る。ストレージサーバ140は、一つ以上のファイルシステムを実装するストレージオペレーティングシステムを含むコンピュータ装置である。ストレージサーバ140は、HDD150A、HHD150B,SSD160A、及びSSD160Bなどの、書き込み可能な持続性格納媒体上での情報の編成に関するストレージサービスを提供するサーバクラスコンピュータであってよい。
通常のストレージサーバシステムは、図1に示すよりも多くのHDD及び/又はSSDを含み得る。当然ながら、ストレージサーバシステム130は、HDD及びSSDに代わりに、若しくはそれらと組み合わせて、他のタイプの持続性ストレージデバイスを用いても実装され得る。これらの他のタイプの持続性ストレージデバイスは、例えば、フラッシュメモリ、NVRAM、微小電気機械(MEMs)ストレージデバイス、又はそれらの組み合わせを含んでもよい。ストレージサーバシステム130は、持続性ストレージデバイスにアクセスし管理するための、ストレージコントローラを含む、他のデバイスも含んでもよい。ストレージサーバシステム130は、モノリシックシステムとして示されているが、種々な地理的位置間に分散されるシステム若しくはデバイスを含み得る。ストレージサーバシステム130は、ストレージサーバシステム130は、40と同じ若しくは異なるストレージオペレーティングシステムを用いて動作する更なるストレージサーバも含んでもよい。
本明細書に記載の技術によると、ストレージサーバ140は、一つ以上の論理空間内に格納されるデータオブジェクトのための論理コンテナとしてボリュームを管理する。論理空間は夫々、HDD150A、HDD150B、SSD160A、及びSSD160Bのうちの一つ以上により提供される。ストレージサーバ140は、データオブジェクトのための第1と第2のインデクスを維持する。第1のインデクスはオブジェクト識別子の範囲を第2のインデクスにマップし、第2のインデクスはオブジェクト識別子の範囲に関連するデータオブジェクトの格納位置を示す。システムのパフォーマンスを向上させるために、第1のインデクスは、半導体メモリ、又は、従来のHDDよりも良好な読み出しパフォーマンスを示す別のタイプのメモリ内に、格納される。半導体メモリがストレージサーバ140内に配置されることもある。半導体メモリは、或る実装においてはSSD160A若しくは160Bにより設けられてもよい。
図2は、本明細書に記載の技術に従って用いられ得るデータストレージシステムの一つの例の、種々のデータストレージのレイヤ、及び、それらレイヤ間の関係を示す。データストレージは、レイド(RAID)レイヤ240の頂部に載るスラブレイヤ230、スラブレイヤ230の頂部に載るリージョンレイヤ220、及び、リージョンレイヤ220の頂部に載るボリュームレイヤ210を含む、複数の明確なデータレイヤを含む。一つの実施形態では、これらのレイヤは、ストレージサーバ140により実装される。
RAIDレイヤ240は、HDDで構成されるRAIDパリティグループを含む。RAIDレイヤ240は、図のようにSSDを含んでもよい。システムは、RAIDパリティグループをストレージブロックの2次元アレイに分割する。ストレージブロックの2次元アレイはスラブレイヤ230にて様々なスラブに割り当てられる。システムは更に、リージョンレイヤ220にて多数のリージョンを規定する。スラブレイヤ230からの一つ以上のスラブが、リージョンレイヤ22内の個々のリージョンに割り当てられる。図に示すように、個々のリージョンは、一つ以上の論理空間(例えば、E1、E2など)をサポートするためにスラブを用いることができる。結果として、論理空間を含むリージョンに割り当てられる一つ以上のスラブの少なくとも一部に、個々の論理空間が割り当てられる。個々のスラブは、リージョンの異なる空間に割り当てられる部位も含み得る。
システムは、ボリュームレイヤ210の論理コンテナとして、一つ以上のボリューム、即ちファイルシステムを維持する。ボリュームレイヤ210内の個々のボリュームは、リージョンレイヤ220内の一つ以上のリージョンからの一つ以上の論理空間を含む。リージョンレイヤ220は、ボリュームレイヤ210のボリュームから、更には、システムのクライアント及びユーザから、種々のリージョン内部の論理空間のレイアウトを隠蔽する。フラッシュメモリ、SSD、HDD、又は他のストレージデバイスについての、二つ以上の異なるタイプのスラブから、任意の所与のリージョンが延在して構築されてもよい。スラブレイヤ230から種々の特徴を伴うスラブを選択することにより、種々の仕様若しくはパフォーマンス上の要求を満たすように、論理的にリージョンが構成されてもよい。それら仕様若しくはパフォーマンスが変動すればリージョンが論理的に再構成されてもよい。
ボリュームを構成する空間は、種々の特徴を有するように構成されたリージョン内のプール間から選択され若しくは割り当てられ得る。ボリュームは、特定のタイプ若しくはクラスのものであるように構成され得、サービスレベルオブジェクティブ(SLOs)の範囲内で関連し得る。あるボリュームタイプは、従来のネットワークファイルシステム(NFS)タイプファイルサービスを実装し得、別のボリュームタイプはLUNsへのアクセスを設定でき、更に別のボリュームタイプはコンテンツリポジトリにより使用のためのオブジェクトストアを実装し得る。
リージョンは、スラブレイヤからの連続ストレージとして空間を割り当て得る場合もある。連続スペースの割り当ては、リージョンに対する読み出しパフォーマンスを向上させる。あるアプリケーションに対しては、大きい空間(即ち、数ギガバイト)の割り当ては、ストレージスペースの効率性を向上させる。個々の空間及びその内容を追跡するのにメタデータが必要であるが、少数の空間であればメタデータの空間を追跡するのに要求されるメタデータの全体量が削減されることから、効率性が向上する。
図3は、本明細書に記載の技術に係る、データオブジェクトのための論理コンテナとしてボリュームを維持するために2つのインデクスを用いる方法を示す。この例では、2つのインデクスのうちの第一のものはレンジインデクス310である。2つのインデクスのうちの第二のものはオブジェクト識別子(OID)インデクス320である。レンジインデクス310及びOIDインデクス320は、ストレージシステムマネジャにより用いられ、ボリュームに割り当てられる空間内部に格納されるデータオブジェクトを位置づける。OIDインデクス320は、ボリュームの空間の一つに格納されることもある。ボリュームは多数の空間を有し得るが、ボリュームの単一の空間のみが、図示される。
ボリューム内に格納されたデータの各々は、固有のOIDインデクス320を割り当てられる。データオブジェクトが最初にボリュームに格納されたとき、若しくはボリュームが生成されたとき、OIDは割り当てられる。一つの実施形態では、OIDは数値である。レンジインデクス310は、OIDのレンジに対するエントリを含む。レンジインデクス310は、OIDの二つのレンジに対するエントリを含む。第一のレンジは、1〜NのレンジのOIDを伴うボリューム内のデータオブジェクトに属する。第二のレンジは、N+1〜2NのレンジのOIDを伴うボリューム内のデータオブジェクトに属し、Nは任意の数でよい。図3では明確さのために2つのレンジのみが示されているが、更なるレンジに対する更に多くのエントリも可能である。エントリは、変動するサイズのレンジに属するが、サイズNに限定されるものでもなく、同じサイズに限定されるものでもない。とりわけ、レンジインデクス310は、個々のデータオブジェクトに対する個別のエントリを含まない。レンジインデクス310内の第一のエントリは、1〜NのレンジのOIDを伴うオブジェクトのグループに適用可能である。
レンジインデクス310は、OIDのレンジの各々に関連するOIDインデクスロケーションを含む。OIDインデクスロケーションは、OIDの関連するレンジに対するOIDインデクスエントリのロケーションを示し、指し示し、若しくは、参照する。レンジインデクス310内のOIDインデクスロケーションエントリは、レンジ内のOIDに関するオブジェクトの絶対位置の表示ではない。
図3の例では、OIDインデクスロケーションエントリは、空間の識別、及び、識別された空間内部でのオフセットを含む。OIDレンジに関する第二のインデクスエントリが始まるのは、この識別されたロケーションである。当然ながら、OIDのレンジに対するOIDインデクスロケーションエントリは、OIDのレンジに対してOIDインデクスエントリを指定する他の方法を用いることができる。例えば、OIDレンジ1〜Nに対して、「空間1、オフセット0」を指し示すのでは無く、レンジインデクス310は、絶対ストレージロケーション、特定メモリアドレス、若しくは、ボリューム範囲内に無いストレージロケーションを、指し示すようにしてもよい。
OID1として識別される、ボリューム内のデータオブジェクトは、以下のように配置され検索され得る。データオブジェクトのOIDは、レンジインデクス310(1〜N)内の第一のエントリのレンジに含まれるので、このOIDに対するOIDインデクスロケーションは、「空間1、オフセット0」である。続いてシステムは、空間1のオフセット1に関連する第一のストレージロケーションから読み出す。前述のように、「空間1」は特定の物理ロケーションを参照するものではなく、前述のボリューム/リージョン/スラブシステムにより規定されたように、論理ロケーションを参照する。OIDインデクス320内の指定されたストレージロケーション「空間1、オフセット0」は、レンジ1〜N内のOIDの各々と関連するデータオブジェクトの各々のストレージロケーションを特定するエントリを含む。この場合、要求されるデータオブジェクトは第一のものであり、よってストレージロケーションは、空間1、オフセット0における第一のエントリ内に含まれる。この第一のエントリは、データオブジェクトOID1は「空間4、オフセット0」に格納されることを示す。データオブジェクトは、空間4、オフセット0(図示せず)におけるストレージロケーションにアクセスし読み出しすることにより、検索され得る。
比較のために、OID3と識別されるボリューム内のデータオブジェクトは、以下のように配置され検索され得る。OIDはレンジインデクス310内の第一のエントリのレンジに含まれるので、このOIDに対するOIDインデクスロケーションは「空間1、オフセット0」である。続いてシステムは、空間1のオフセット0に関連するストレージロケーションから読み出す。留意すべきことは、この時点まで、プロセスは前述のOID1に関するものとは異ならない、ということである。これは、OID1及びOID3は両方とも1〜N(Nは3以上とする)の範囲内に含まれ、レンジインデクス310は個別のOIDに固有の情報を含まないからである。OIDインデクス320内の、指定されたストレージロケーション「空間1、オフセット0」は、レンジ1〜NのOIDの各々のストレージロケーションを特定するエントリを含む。この場合、要求されるデータオブジェクトはレンジ内の第三のものであり、よって、データオブジェクトのストレージロケーションは空間1、オフセット0から開始して第三のエントリ内にて見出される。この第三のエントリは、データオブジェクトOID3が「空間6、オフセット212」にて格納されることを示す。データオブジェクトは、空間6、オフセット212(図示せず)におけるストレージロケーションにアクセスし読み出しすることにより、検索され得る。或る例では、一つ以上のインデクスエントリは、指定されたロケーションに格納されたデータ長を示す情報を含む。
レンジN+1〜2Nに含まれるオブジェクトは、前述のオブジェクトと同様にして配置され検索される。例えば、OID N+2を伴うデータオブジェクトはレンジインデクス310内の第二の電取りに関連する。それがレンジN+1〜2Nに含まれるからである。OIDのこのレンジに対するOIDインデクスロケーションは「空間1、オフセット1000」である。データオブジェクトOID N+2のストレージロケーションを判別するために、空間1、オフセット100から開始する第二のエントリがアクセスされる。この場合、データオブジェクトに対するストレージロケーションは、空間Y、オフセット20である。
レンジインデクス310は、ボリュームの個別のOID毎に対するエントリを含むインデクス若しくはテーブルと比較して、相対的に小さい。各々のエントリはOIDのレンジに属するからである。小さいために、レンジインデクス310は、空間、若しくは他のディスクベースのストレージロケーション内に格納されるのではなく、アクセスするのにI/Oを要求しない半導体メモリ若しくはシステムの他のメモリ内に、維持され得る。このことは、前述の2つのステップインデクス検索プロセスのうちの第一のステップが、ディスクI/Oを実行すること無く、実行され得るということを意味する。従って、データオブジェクトは、二つのディスクI/Oのみで検索され得る。OIDインデクス320にアクセスするためにレンジインデクス310から検索される情報を、システムが用いるとき、第一のディスクI/Oが発生する。OIDインデクス320からの情報を用いて、システムは第二のディスクI/Oを実行して特定のロケーションからデータオブジェクトを検索する。
従来のファイルシステムのinode及びinodeストラクチャは、通常、あまりに大きく、システムの半導体メモリ内に格納できない。半導体メモリはディスクベースデバイスよりも待ち時間がずっと短いので、特にランダムアクセスに対しては、より少ないディスクI/Oによりストレージ動作を実行することで、大いなるパフォーマンス上の利点を得られる。図1及び図2のSSDはHDDにより実行される機能と同様の機能を実行するように構成されていることがあり、従来の磁気ベースのディスクストレージデバイスにおいてSSDが為しうるパフォーマンスの向上によって、SSD内の一つ以上のインデクスの格納は本明細書に記載のタイプのもののパフォーマンスの向上をもたらす。SSDにてデータにアクセスすることはI/Oとはなるが、通常、HDDのI/Oよりも迅速に実行されるI/Oである。従って、本明細書に記載の本発明に係る利点は、第一のインデクスがSSDに格納されているならば実現され得る。この構成はデータオブジェクトにアクセスするのに三つのI/Oを要求するが、第一のものは、ディスクベースのデバイスに係る固有の待ち時間を有するものでは無い、SSD I/Oである。
上記例にて言及されるオフセットは、空間内部の特定のストレージロケーションを参照する。或る場合では、オフセットは、固定されたサイズのストレージスペースのブロックを参照する。例えば、個々のオフセットは、ストレージスペースの4Kバイトブロックであればよい。この例では、空間6、オフセット212は、空間6の開始から848Kバイト(オフセット212×4K=848K)であるアドレスにおけるストレージを参照することになる。オフセットは、可変サイズを含む、他のサイズのものでもよい。可変サイズのオフセットの場合、オフセットが開始し終了するところを示すのに他のインジケータ若しくは情報が必要とされ得る。
レンジインデクス310及びOIDインデクス320に含まれる情報は、多数の様々な方法でフォーマットされ若しくはエンコードされ得る。例示のために、図3にてファーマットを示す。レンジインデクス310及びOIDインデクス320の情報がフォーマットされ若しくはエンコードされ得る可能は方法の全ての記載は、本明細書の範囲を超えるものである。本発明は、図3に示すフォーマットに、若しくは他のどの特定のフォーマットに限定されるべきものではない。
レンジインデクス310は、OIDのレンジの各々に属する他の情報も含み得る。一つの例では、OIDレンジは、SLOにより若しくはリージョンタイプにより、分離されてもよく、この情報はレンジインデクス310に格納されてもよい。OIDレンジは、様々なユーザ若しくはグループによる利用がレンジインデクス310内に示されるマルチテナントのためにも分離され得る。同様に、OIDインデクス320内のエントリは、データオブジェクトの各々に関するメタデータも含んでもよい。しかしながら、メタデータ対データの比率を下げ更に格納効率を向上させるために、個々のデータオブジェクトに関するメタデータの量を減少することが、本発明の更なる目的である。例えば、サイズなどの基本的属性はOIDインデクス320に格納され得、オーナ、作成タイム、アクセスタイムなどの他の属性は、他のどこかに(例えば、データオブジェクトそれ自身内に、若しくは、データオブジェクトに関する別のデータオブジェクト内に)格納される。
図4は、本明細書に記載される技術が実装され得るデータストレージシステム400を示す。データストレージシステムは、プロセッサ410、インタフェース480、システムメモリ420、及びボリューム450を含む。プロセッサ410は、どのタイプの、コンピュータ、マイクロプロセッサ、中央処理装置(CPU)、若しくはプログラマブルロジックでもよく、それらの組み合わせも含み得る。インタフェース480により、プロセッサ410は、他のデバイス、システム、クライアント、ネットワーク、若しくはそれらの組み合わせと通信し得る。インタフェース480は、単体のインタフェースとして示されているが、様々なデバイス若しくはシステムへの多重インタフェースを含んでもよい。
システムメモリ420は、ランダムアクセスメモリ(RAM)、不揮発メモリRAM(NVRAM)、ダイナミックRAM(DRAM)、若しくはフラッシュメモリを含む、更にはそれらの組み合わせを含む、計算目的のために用いられるどのタイプの半導体メモリであってもよい。システムメモリ420は、オペレーティングシステム422及び第1のインデクス424を含む。第1のインデクス420は、レンジインデクス310の例である。システムメモリ420は、ストレージオペレーションを実行するのに用いられる他のプログラム若しくはアプリケーションを含んでもよい。
ボリューム450は、データストレージシステム400により格納されるデータオブジェクトのための論理コンテナである。ボリューム450は、論理空間451−54を含む。ボリューム450は、他の論理空間を、若しくは、他の手段により割り当てられる他のストレージスペースを、含んでもよい。マルチプルデータオブジェクトはボリューム450に格納される。例示のために、これらのデータオブジェクトは、データオブジェクト458として集合的に参照される。データオブジェクト458を含む個別のデータオブジェクトは夫々、一つ以上の空間451−53内に格納される。空間451−53の各々は、一つ以上のスラブを含み、個々のスラブは、HDDなどの、一つ以上の物理ストレージデバイス内のブロックのセットとして定義される。或る例では、データストレージシステム400は、更なるボリュームを含み得る。
空間451は、第2のインデクス455を含む。第2のインデクス455は、OIDインデクス320の例である。空間452は第3のインデクス456を含む。第3のインデクス456は、第2のインデクス455に類似する別のOIDインデクスの例でもよく、後続の例で記載される他の目的のために用いられるインデクスであってもよい。
図5は、本明細書に記載する技術を実装するデータストレージシステムを動作する方法500を示す。方法500は、データストレージシステム400の動作に関して記載されているが、他のタイプのデータストレージシステムによる、若しくは、データストレージシステム400の他の構成による、利用に対して適用され得る。
方法500は、データストレージシステム400内のデータオブジェクト458のために論理コンテナとしてボリューム450を維持するステップを含む。データオブジェクト458は、一つ以上の論理空間451−453に格納される。データオブジェクト458は夫々、OIDにより一意的に特定される(ステップ510)。方法500は、データオブジェクト458の範囲内に個別のデータオブジェクトを配置するために第1のインデクス424と第2のインデクス455を維持するステップを、含む。第1のインデクス424は、OIDのレンジを第2のインデクス455にマップする(ステップ520)。第2のインデクス455は、OIDのレンジに関するデータオブジェクト458の個別のデータオブジェクトのストレージロケーションを示す(ステップ530)。
データストレージシステム400の一つの変形では、ボリューム450は、アペンドオンリとして定義される。このことは、データオブジェクト458、及びボリューム450に格納される他のどのデータオブジェクトも付加され得るが変更され得ないことを、意味する。変更は、新しいデータオブジェクトの生成を要求する。データオブジェクトが通常一度書き込まれしばしばランダムにアクセスされるがそれらを変更する要求が殆ど若しくは全く無い(即ち、ソーシャルメディアプラットフォームのフォトストレージ)、アプリケーションに、この構成は適切である。このアペンドオンリの実装により、レンジ及びOIDインデクスはより効率的に管理され得、更にこのアペンドオンリの実装は、利用可能なストレージスペースのより効率的な全体的利用を提供する。オーバライトサポートが現存のレンジの変更のためのサポートを要求する(例えば、オーバライトされるデータオブジェクトのためにマッピングする空間は二つのセグメントに分けられる必要があり得る)ので、この実装はより効率的である。このことは結果として、データオブジェクトが継続して書き込まれる場合に必要とされるよりも多くのメタデータに繋がる。言い換えれば、メタデータの観点から付加は上書きよりも効率的である。付加は、古いマッピングを変更するのではなく、新しいマッピングを加えることを要求するからである。
本明細書の例示は、システムのパフォーマンスを向上させるためにレンジインデクスがシステムメモリ若しくは半導体メモリに格納される実装を最初に記載する。しかしながら、レンジインデクスのバックアップコピーは、信頼性の目的のために、一つ以上の空間のストレージを含む、ディスクベースのストレージに通常格納されることになる。レンジインデクスは、システムシャットダウン、故障、若しくは予想しない出来事の後、システムリカバリを促進するために、不揮発性ストレージに格納される必要がある。最初のインスタンスが一つ以上の空間に格納される間、一つ以上のレンジインデクスのワーキングコピーがシステム若しくは半導体メモリ内に格納され得る。レンジインデクスの変更が必要であるとき、変更はシステム若しくは半導体メモリ内のコピーに対して行われ、このときそれらの変更は周期的にディスクベースのコピーにフラッシュされる。電源喪失やシステム障害の発生の際に、レンジインデクスの損失、若しくはレンジインデクスへの最近の変更の損失を回避するために、レンジインデクスはNVRAMに格納されてもよい。
上記の例に記載されるファイルシステムレイアウトは、システムメモリとディスクベースのストレージスペースの両方(即ち、両方のインデクス)にて空間効率のよいメタデータストラクチャを提供する。例えば、4Kバイトのディスクページを利用するシステムでは、個々のページは(32バイトエントリを想定する)128OIDインデクスエントリ
を含み得る。一方で、個々の4Kバイトディスクページは、(20バイトエントリを想定する)202レンジインデクスエントリを含み得る。この例では、システムは、レンジインデクスを格納する約163Mバイトと、1ビリオンデータオブジェクトエントリのためのOIDインデクスを格納する約32Gバイトとのみを必要とする。OIDは、そのような小量のディスクスペースを要求するので、システムメモリ内に格納され得る。本明細書に記載の技術は、上記の例で説明した特定のエントリ若しくはディスクページサイズに限定されない。他のエントリサイズが利用されるとき同様の結果が実現される。
図6は、本明細書に記載の技術に係る、データオブジェクトのための論理コンテナとしてボリュームを維持するため、マルチプル空間に格納されるインデクスを利用する方法を示す。図6のレンジインデクスは二つのエントリを含む。OIDが1〜Nのレンジであるデータオブジェクトのための一つのエントリと、OIDがN+1〜2Nのレンジであるデータオブジェクトのための第二のエントリ、である。OIDの第一のレンジに対するOIDインデクスロケーションは「空間2、オフセット0」である。OIDの第二のレンジに対するOIDインデクスロケーションは「空間4、オフセット0」である。結果として、システムが、OIDが1〜Nのレンジであるデータオブジェクトを検索しているときは、データオブジェクトのロケーションを見つけることは、空間2内のOIDインデクスAに向けられている。システムが、OIDがN+1〜2Nのレンジであるデータオブジェクトを検索しているときは、空間4内のOIDインデクスBに向けられている。レンジインデクスは、データオブジェクト検索プロセスの第一のステップがディスクI/Oを実行せずに実行され得るように、短い待ち時間のアクセスで、システムメモリ、半導体メモリ、若しくは別のメモリで維持される。
OIDインデクスAは、第一のレンジに関するデータオブジェクトの各々のための、オフセット0にて開始する、個別のストレージロケーションエントリを含む。OID1に関するデータオブジェクトは、空間7、オフセット0に配置される。図3の例とは対照的に、関連するデータオブジェクトは、OIDインデクスとは異なる空間に配置される。同時に、同じレンジの他のOIDに関するデータオブジェクトは、他の空間に配置され得る。例えば、OID Nに関するデータオブジェクトは、空間Xに配置される(図示せず。)。OIDインデクスAのエントリの各々は、関連するデータオブジェクトの長さも含む。長さは、ブロックで、若しくは、システムで用いられる計測に関する或る他の単位で、示され得る。
OIDレンジN+1〜2Nのためのレンジインデクスエントリは、このレンジに対するOIDインデクスが空間3に配置されることを示す。OIDインデクスAと同様に、OIDインデクスBは、関連するデータオブジェクトのストレージロケーションを示すレンジのOIDの各々に対する個別のエントリを含む。二つの異なる空間に含まれるOIDインデクスは、同じ空間に格納されるオブジェクトのストレージロケーションを示し得る。例えば、OID 1とOID 2Nとに関するOIDインデクスエントリは二つの異なるOIDインデクス内にあり、それらは、データオブジェクト1とデータオブジェクト2Nとが両方、空間7に格納されていても、二つの異なる空間に格納されている。OIDインデクスBのOIDインデクスエントリは、長さ指標を含まない。この場合、システムは、データオブジェクトそれ自身で利用可能な情報に基づいて、データオブジェクトの長さを判別し得る。OIDインデクスA及びOIDインデクスBは、夫々、空間2及び3の、オフセット0にて開始する。システム管理の理由からOIDインデクスをオフセット0に配置することは好ましいが、それらを空間内部のどのオフセットに配置することも可能である。
図7は、断片化したデータオブジェクトを含むボリュームを維持するため、インデクスを用いる方法を示す。先の例に記載したOIDインデクス情報に加えて、OIDインデクスAの個々のエントリは、「より多く」や「最後」を示すフラグも含む。「より多く」のフラグは、関連するデータオブジェクトが断片化している(即ち、それは、異なるロケーションに格納される二つ以上の部位を有する)ことを示す。このことは次のような事情から生じ得る。つまり、データオブジェクトがその初期の断片化の無い格納の後、ある時点で付加され若しくは上書きされるため、又は、利用可能なストレージスペースの境界のあるブロック(即ち、ホール)を利用するために初期の格納の時点でデータオブジェクトが断片化されたため、などである。「より多く」や「最後」は、例示のために記述上用いられるのであり、特定のOIDインデクスエントリに関して更なるOIDインデクスエントリが在るかどうかについての管理は、様々に実装され得る。
OIDインデクスAは、空間7のオフセット0にて開始して格納される。そのロケーションで格納される部位は5の長さを有する。OIDインデクスエントリ上の「より多く」のフラグは、OID1に関して更なるOIDインデクスAが在る、ということを示す。第二のエントリも、OIDインデクスAに含まれ、それは、OID1の第二の部位は空間12のオフセット5に格納されて4の長さを有することを示す。このエントリは、それがOID1に対する最後のOIDインデクスエントリであることを示す「最後」のフラグを含む。従って、OID1に対して、更なるOIDインデクスエントリを探す必要は無い。システムは、データオブジェクトOID1を検索するとき、空間7内の部位と空間12内の部位の両方を検索しなければならない。データオブジェクトは、二つ以上の部位に分かれてもよい。データオブジェクトの多重部位も、同じ空間に格納されてもよい。
一つ以上のオブジェクトに対するマルチプルOIDインデクスエントリの存在は、レンジインデクスに影響を与えない。レンジインデクスは、データオブジェクトのレンジに対するOIDインデクスの開始ロケーションを示すに過ぎない。従って、データオブジェクトが付加されても、OIDインデクスの更なるエントリは、レンジインデクスの変更若しくは拡張を必要とするものでは無い。レンジインデクスをできるだけコンパクトに維持することで、レンジインデクスは前述のシステムメモリ内に維持され得る。
しかしながら、システムが新しいデータオブジェクトを書き込んでいる際、レンジインデクスはその新しいオブジェクトに順応するように更新される必要があり得る。図8は、新しいデータオブジェクトを書き込むために、データストレージシステムを動作する方法800を示す。システムは、クライアントからデータストレージシステムに格納する新しいデータオブジェクトを受信する(ステップ810)。システムは、新しいデータオブジェクトのために、複数の論理空間のうちの一つにストレージスペースを割り当てる(ステップ820)。或る場合には、好ましくないにせよ、新しいデータオブジェクトは、図7に関して説明したように、断片化して格納されることもある。オブジェクト識別子が新しいデータオブジェクトに割り付けられ、割り当てられたストレージスペース内に書き込まれる(ステップ830)。
新しいOIDに拠って、レンジインデクスは更新される必要があり得る(ステップ840)。新しいOIDが、レンジインデクス内の現存エントリのレンジの範囲内に無いならば、新しいエントリが形成され得る。例えば、図7に関して、新しいデータオブジェクトが2N+1のOIDを有するならば、それに対するレンジインデクス内に現存のエントリは無い。従って、新しいエントリは、2N+1を含むOIDのレンジをカバーするレンジインデクス内に形成されなければならない。新しいデータオブジェクトのOIDが、レンジインデクス内の現存のレンジの範囲内にある場合、新しいエントリが形成される必要は無い。例えば、新しいデータオブジェクトが2N−1のOIDを有するならば、レンジインデクス内の現存の第二の部位によりそれは既にアドレスされている。
最後に、OIDインデクス内のエントリは、新しいデータオブジェクトのストレージロケーションを反映するように更新される(ステップ850)。更新するステップは、新しいデータオブジェクトのロケーションを、若しくは、新しいデータオブジェクトの断片のロケーションを、反映するように、一つ以上の新しいエントリを一つ以上OIDインデクスに加えることを含む。
システムは、遅延書き込みアロケーションを用いて新しいデータオブジェクトを書き込むプロセスを実行し得る。遅延書き込みアロケーションは、新しいデータオブジェクトに関連するブロックの全てが受信され更に書き込む準備がされるまで、空間内の新しいデータオブジェクトのためのストレージスペースがアロケートされない、プロセスである。アロケーション/書き込みプロセスは、データオブジェクトに関連する全てのメタデータ若しくは情報も受信されるまで、遅延される、というものであってもよい。アロケーション若しくは書き込みプロセスの前に、データオブジェクトのストレージスペース要件は知られる。遅延書き込みアロケーションは、新しいデータオブジェクトのために継続的にストレージスペースを割り当てるシステムの能力を改善させるので、データレイアウトを改善することになる。継続的なストレージスペースは、データオブジェクトのための読み出しパフォーマンスを改善する。多くの場合、システムは、より良い読み出しパフォーマンスのために、更には、関連するメタデータの量を減少させるために、単一の空間で継続してデータオブジェクトを格納するのが好ましい。しかしながら、空間は論理的に適宜されるので、二つの異なる空間のストレージスペースは、実際には物理的に連続するストレージスペースであることがある。
遅延書き込みアロケーションを促進するために、システムは、遅延書き込みアロケーションが完了するまで、若しくは、特定の期間、新たに形成されたデータオブジェクトの、受信されたブロック若しくはフラグメントを格納する、ライトキャッシュを利用してもよい。ライトキャッシュは不揮発性メモリに実装され、これにより、新しいデータオブジェクトがライトキャッシュ内に配置された後、且つ一つ以上のアロケートされた空間に書き込まれる前に、新しいデータオブジェクトのためのクライアントからの書き込み要求がクライアントに確認され得る。そのようにすることによってのみ、ディスクベースのデバイスのアクセス待ち時間がクライアント応答時間から除去され得、また、システムがクライアント応答時間に影響を与えることの無いより柔軟なやり方でディスクオペレーションを優先することができる。本明細書に記載の遅延書き込みアロケーション及びライトキャッシングプロセスは、新しいデータオブジェクトの形成にのみ適用可能ではなく、現存のデータオブジェクトを付加する際にも用いられ得る。
図9は、ストレージシステムのコンポーネントを実装するのに用いられ得るストレージサーバ900のブロック図である。例えば、図9のシステムは、クライアントシステム、コンピュータ、ネットワークデバイス、若しくはストレージサーバを実装するのに用いられ得る。他の構成及び動作も可能であるが、図1のストレージサーバ140はストレージサーバ900の例である。例示の実施形態では、ストレージサーバ900は、一つ以上のプロセッサ910、メモリ920、ネットワークアダプタ940、及びストレージアダプタ950を含み、それら全ては相互接続960により相互に接続される。
メモリ920は、本明細書に記載の技術に係るソフトウエアプログラムコード及びデータストラクチャを格納するための、プロセッサ910及びアダプタ940、950によりアクセスされ得るストレージロケーションを含む。プロセッサ910及びアダプタ940、950は、ソフトウエアコードを実行しデータストラクチャを操作するように構成された、処理要素及び/又は論理回路を含んでもよい。本明細書に記載の技術に属するプログラム命令を格納し実行するために、種々の機械読み取り可能格納媒体を含む他の処理及びメモリ実装が利用され得ることは、当業者には明白である。
ポイントツーポイントリンクに亘る一つ以上の他のシステム、ワイドエリアネットワーク、パブリックネットワークに亘って実装される仮想プライベートネットワーク、又は、共有ローカルエリアネットワークと、ストレージサーバ900を連結する、複数のポートを、ネットワークアダプタ940は含む。ネットワークアダプタ940は、ストレージサーバ900をネットワーク190などのネットワークと接続するのに必要とされる、機械コンポーネント及び電気回路を、含み得る。TCP/IPなどの予め定義されたプロトコルに従ってパケット若しくはフレームを交換することにより、一つ以上のシステムはネットワーク190に亘って他のシステムと通信できる。
ストレージアダプタ950はプロセッサ910上で稼働するオペレーティングシステムとインタフェースして、付属のストレージデバイス上の情報とアクセスする。情報は、HDD、磁気テープ、光ディスク、フラッシュメモリ、SSD、RAM、MEMs、及び/又は情報を格納するように適合された他の任意の類似の媒体などの、どのタイプの、付属の書き込み可能ストレージ媒体のアレイに格納されてもよい。ストレージアダプタ950は、I/O相互接続構成に亘ってディスク若しくは他のストレージ関連デバイスと結合するI/Oインタフェース回路を有する、複数のポートを含む。
本発明の実施形態は、前述の、種々のステップ及びオペレーションを含む。種々のこれらステップ及びオペレーションは、ハードウエアコンポーネントにより実行され得、又は、機械実行可能命令で埋め込まれ、それらは、命令がプログラムされた一つ以上の汎用若しくは専用プロセッサにステップを実行させるのに用いられる。一方で、ステップは、ハードウエア、ソフトウエア、及び/又は、ファームウエアの組み合わせにより、実行され得る。
本発明の実施形態は、本明細書に記載のオペレーションの一部若しくは全てを実行するコンピュータ若しくは他の電子デバイスをプログラムするのに用いられ得る、持続性命令を格納した機械読み取り可能媒体を含み得るコンピュータプログラムプロダクトとして、提供され得る。機械読み取り可能媒体は、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、光磁気ディスク、フロッピディスク、ROM,RAM、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、磁気若しくは光カード、フラッシュメモリ、又は、電子命令を格納するのに適した他のタイプの機械読み取り可能媒体を含み得るが、それらに限定されない。更に、本発明の実施形態は、コンピュータプログラムプロダクトとしてダウンロードすることも可能であり、プログラムは、通信リンクを介して搬送波若しくは他の伝搬媒体に埋め込まれたデータ信号により、遠隔コンピュータから要求中のコンピュータへ伝達され得る。
「或る実施形態において」「或る実施形態によると」「図示される実施形態において」「他の実施形態において」「或る例において」などのフレーズは、概略、そのフレーズに続く特定の特性、構造、若しくは特徴が、本発明の少なくとも一つの実施形態に含まれ、更に本発明の一つ以上の実施形態に含まれ得る。更に、それらフレーズは、同じ実施形態若しくは異なる実施形態に、必ずしも言及するものでは無い。
本発明の一つ以上の実施形態に関する詳細な記載を前述にて説明したが、本発明の精神から乖離すること無く、当業者には種々の代替物、修正物、及び均等物が明白である。例えば、前述の実施形態は特定の特性に言及するが、この発明の範囲は、特性についての異なる組み合わせを有する実施形態、及び、既述の特性の全てを含むものでは無い実施形態も、含む。従って、本発明の範囲は、請求項の範囲にあるようなそれら代替物、修正物、及び変形物の全て、並びにそれらの均等物の全てを含むことを意図するものである。従って、前記記載は、請求項により規定された、本発明の範囲を限定するものとして捉えられるべきではない。
130・・・ストレージサーバシステム、140・・・ストレージサーバ、150A、150B・・・HDD、160A、160B・・・SSD、180A、180B・・・クライアント、190・・・ネットワーク。

Claims (30)

  1. データストレージシステムにて、複数のデータオブジェクトのための論理コンテナを維持するステップであって、データオブジェクトがデータストレージシステムの複数の論理空間のうちの一つ以上に格納され、データオブジェクトがオブジェクト識別子により一意的に特定される、ステップと、
    データオブジェクトを配置するために第1と第2のインデクスを維持するステップと
    を含み、
    第1のインデクスはオブジェクト識別子の第1のレンジを第2のインデクスにマップし、
    第2のインデクスはオブジェクト識別子の第1のレンジに関連するデータオブジェクトのストレージロケーションを示す、
    方法。
  2. 第1のインデクスはデータストレージシステムの半導体メモリ内に格納され、第2のインデクスは複数の論理空間のうちの一つの空間に格納される
    請求項1に記載の方法。
  3. 複数の論理空間の各々は、一つ以上のスラブの少なくとも一部を含み、個々のスラブは一つ以上の物理ストレージデバイス内の、ストレージのブロックのセットとして定義される、
    請求項1に記載の方法。
  4. 第1のインデクスはオブジェクト識別子の第2のレンジを第3のインデクスにマップし、
    第3のインデクスはオブジェクト識別子の第2のレンジに関連するデータオブジェクトのストレージロケーションを示す、
    請求項1に記載の方法。
  5. 第2のインデクスと第3のインデクスは、異なる論理空間内に格納される
    請求項4に記載の方法。
  6. 第2のインデクスが格納される空間に対する識別子と、第2のインデクスが格納される空間内部でのオフセットを、提供することにより、
    第1のインデクスはオブジェクト識別子の第1のレンジを第2のインデクスにマップする、
    請求項1に記載の方法。
  7. データオブジェクトのストレージロケーションを示すことが、
    第1のレンジのデータオブジェクトの各々が格納される空間の識別子と、
    第1のレンジのデータオブジェクトの各々が格納される空間の各々内部でのオフセットと、
    第1のレンジのデータオブジェクトの各々の長さとを
    提供することを含む、
    請求項6に記載の方法。
  8. 第2のインデクス内で示されるデータオブジェクトのストレージロケーションが、関連するオブジェクト識別子に基づいて発生順に配置される、
    請求項1に記載の方法。
  9. 更に、
    データオブジェクトの一つに対するクライアント要求を受信するステップと、
    第1のレンジと第2のレンジの間から、要求されたデータオブジェクトに関連するレンジを選択するステップと、
    選択されたレンジが第1のレンジならば、第2のインデクスから要求されたデータオブジェクトのストレージロケーションを判別し、選択されたレンジが第2のレンジならば、第3のインデクスから要求されたデータオブジェクトのストレージロケーションを判別するステップと、
    判別されたストレージロケーションから要求されたデータオブジェクトを検索するステップと
    を含む、請求項4に記載の方法。
  10. 更に、
    データストレージシステムに格納するために、クライアントから新しいデータオブジェクトを受信するステップと、
    ストレージスペースを、複数の論理空間のうちの一つにアロケートするステップと、
    新しいデータオブジェクトを、アロケートされたストレージスペースに書き込むステップと、
    アロケートされたストレージスペースのロケーションに基づいて、第1と第2のインデクスを更新するステップと
    を含む、請求項1に記載の方法。
  11. 新しいデータオブジェクトが、複数のブロックとしてクライアントから受信され、ストレージスペースが、ブロックの全てが受信されるまでアロケートされない、請求項10に記載の方法。
  12. システムメモリと、
    複数の論理空間であって、一つ以上の物理ストレージデバイス内の一つ以上のストレージのブロックが複数の論理空間の各々にアロケートされる、論理空間と、
    プロセッサとを含み、
    プロセッサは、
    ボリュームを複数のデータオブジェクトに対する論理コンテナとして維持するステップであって、ボリュームは一つ以上の論理空間を含む、ステップと、
    複数の論理空間のうちの一つ以上にデータオブジェクトを格納するステップであって、データオブジェクトはオブジェクト識別子により一意的に特定される、ステップと、
    第1のインデクスを維持するステップであって、第1のインデクスはシステムメモリに格納されオブジェクト識別子の第1のレンジを第2のインデクスにマップする、ステップと、
    第2のインデクスを維持するステップであって、第2のインデクスは複数の論理空間のうちの一つの論理空間に格納されオブジェクト識別子の第1のレンジに関連するデータオブジェクトのストレージロケーションを示す、ステップと
    を行うように構成された、データストレージシステム。
  13. 第1のインデクスはオブジェクト識別子の第2のレンジを第3のインデクスにマップし、
    第3のインデクスはオブジェクト識別子の第2のレンジに関連するデータオブジェクトの各々のストレージロケーションを示す、
    請求項12に記載のデータストレージシステム。
  14. 第2のインデクスと第3のインデクスが異なる論理空間に格納される、請求項13に記載のデータストレージシステム。
  15. 第2のインデクスが格納される空間に対する識別子と、第2のインデクスが格納される空間内部でのオフセットを、提供することにより、
    第1のインデクスはオブジェクト識別子の第1のレンジを第2のインデクスにマップする、
    請求項12に記載のデータストレージシステム。
  16. データオブジェクトのストレージロケーションを示すことが、
    第1のレンジのデータオブジェクトの各々が格納される空間の識別子と、
    第1のレンジのデータオブジェクトの各々が格納される空間の各々内部でのオフセットと、
    第1のレンジのデータオブジェクトの各々の長さとを
    提供することを含む、
    請求項15に記載のデータストレージシステム。
  17. 第2のインデクス内で示されるデータオブジェクトのストレージロケーションが、関連するオブジェクト識別子に基づいて発生順に配置される、
    請求項12に記載のデータストレージシステム。
  18. データオブジェクトに対するクライアント要求に応答して、
    更に、プロセッサは、
    第1のレンジと第2のレンジの間から、要求されたデータオブジェクトに関連するレンジを選択するステップと、
    選択されたレンジが第1のレンジならば、第2のインデクスから要求されたデータオブジェクトのストレージロケーションを判別し、選択されたレンジが第2のレンジならば、第3のインデクスから要求されたデータオブジェクトのストレージロケーションを判別するステップとを
    行うように構成されている、請求項13に記載のデータストレージシステム。
  19. 更に、プロセッサは、
    データストレージシステムに格納するために、クライアントから新しいデータオブジェクトを受信するステップと、
    新しいオブジェクト識別子を新しいデータオブジェクトに割り当てるステップと、
    ストレージスペースを、複数の論理空間のうちの一つ内にアロケートするステップと、
    新しいデータオブジェクトを、アロケートされたストレージスペースに書き込むステップと、
    第1と第2のインデクスを更新するステップとを
    行うように構成されている、請求項12に記載のデータストレージシステム。
  20. 新しいデータオブジェクトが、複数のブロックとしてクライアントから受信され、ストレージスペースが、ブロックの全てが受信されるまでアロケートされない、請求項19に記載のデータストレージシステム。
  21. データオブジェクトの一つに関連する更なるメタデータがデータオブジェクトと共に格納される、請求項12に記載のデータストレージシステム。
  22. 一つ以上のプロセッサにより実行される際、一つ以上のプロセッサに対して、
    データストレージシステム内で、データオブジェクトを含む複数のリージョンを定義するステップであって、複数のリージョンは複数の論理空間を含み、前記論理空間を含むリージョンにアロケートされた一つ以上のスラブの少なくとも一部は個々の前記論理空間にアロケートされ、個々の前記スラブは一つ以上の物理ストレージデバイス内のストレージのブロックのセットとして定義される、ステップと、
    データストレージシステム内で、データの論理コンテナとして複数のボリュームを維持するステップであって、ボリュームの各々は、一つ以上のリージョンからの一つ以上の論理空間を含み、リージョン内部の論理空間のレイアウトが複数のボリュームには可視では無い、ステップと、
    データオブジェクトの第1のグループに関連する一意的なオブジェクト識別子の第1のグループが第2のインデクスにマップされ、データオブジェクトの第2のグループに関連する一意的なオブジェクト識別子の第2のグループが第3のインデクスにマップされる、第1のインデクスを維持するステップであって、
    第1のインデクスが半導体メモリ無いに格納され、
    第2のインデクスが論理空間の一つに格納され、第1のグループのデータオブジェクトのストレージロケーションを示し、
    第3のインデクスが論理空間の別の一つに格納され、第2のグループのデータオブジェクトのストレージロケーションを示す、ステップと
    を行うように指示する命令を含む、持続性機械読み取り可能媒体。
  23. 第2のインデクスが格納される空間に対する識別子と、第2のインデクスが格納される空間内部でのオフセットを、提供することにより、
    第1のインデクスはオブジェクト識別子の第1のグループを第2のインデクスにマップする、
    請求項22に記載の持続性機械読み取り可能媒体。
  24. データオブジェクトのストレージロケーションを示すことが、
    第1のグループのデータオブジェクトの各々が格納される空間の識別子と、
    第1のグループのデータオブジェクトの各々が格納される空間の各々内部でのオフセットと、
    データオブジェクトの長さとを
    提供することを含む、
    請求項23に記載の持続性機械読み取り可能媒体。
  25. 第2及び第3のインデクス内で示されるデータオブジェクトのストレージロケーションが、関連するオブジェクト識別子に基づいて発生順に配置される、
    請求項22に記載の持続性機械読み取り可能媒体。
  26. 命令は更に一つ以上のプロセッサに対して、
    ストレージクライアントからデータオブジェクトに対する要求を受信するステップと、
    第1のグループと第2のグループの間から、要求されたデータオブジェクトに関連するグループを選択するステップと、
    選択されたグループが第1のグループならば、第2のインデクスから要求されたデータオブジェクトのストレージロケーションを判別し、選択されたグループが第2のグループならば、第3のインデクスから要求されたデータオブジェクトのストレージロケーションを判別するステップと
    を行うように指示する、請求項22に記載の持続性機械読み取り可能媒体。
  27. 命令は更に一つ以上のプロセッサに対して、
    データストレージシステムに格納するために、クライアントから新しいデータオブジェクトを受信するステップであって、新しいデータオブジェクトは複数のブロックとして受信される、ステップと、
    ブロックの全てを受信した後、ストレージスペースを複数の論理空間のうちの一つにアロケートするステップと、
    新しいデータオブジェクトを、アロケートされたストレージスペースに書き込むステップと
    を行うように指示する、請求項22に記載の持続性機械読み取り可能媒体。
  28. データストレージシステムにて、論理データコンテナに格納された複数のデータオブジェクトのロケーションを追跡するためにマルチレベルインデクスを用いるステップであって、マルチレベルインデクスは第1のインデクスと第1のインデクスにマップされた第2のインデクスとを含む、ステップと、
    データストレージシステム内の半導体メモリ内で第1のインデクスを全体として維持するステップと、
    半導体メモリから分離した大容量記憶装置で第2のインデクスを維持するステップと、
    2以下のストレージI/O動作により、複数のデータオブジェクトのうちの一つを検索するために大容量記憶装置内の論理空間にアクセスするステップであって、前記アクセスすることは、複数のデータオブジェクトのうちの前記一つを特定するために第1のインデクスと第2のインデクス内に含まれる情報を利用することを含む、ステップと
    を含む方法。
  29. 複数のデータオブジェクトはオブジェクト識別子により夫々一意的に特定され、第1のインデクスはオブジェクト識別子のレンジを第2のインデクスにマップする
    請求項28に記載の方法。
  30. 第2のインデクスは、レンジに関連するデータオブジェクトのストレージロケーションを示す、
    請求項29に記載の方法。
JP2015509020A 2012-04-27 2013-04-16 効率的なデータオブジェクトストレージ及び検索 Active JP6664218B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/458,323 US8793466B2 (en) 2012-04-27 2012-04-27 Efficient data object storage and retrieval
US13/458,323 2012-04-27
PCT/US2013/036832 WO2013162954A1 (en) 2012-04-27 2013-04-16 Efficient data object storage and retrieval

Publications (3)

Publication Number Publication Date
JP2015521310A true JP2015521310A (ja) 2015-07-27
JP2015521310A5 JP2015521310A5 (ja) 2016-06-09
JP6664218B2 JP6664218B2 (ja) 2020-03-13

Family

ID=49478406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015509020A Active JP6664218B2 (ja) 2012-04-27 2013-04-16 効率的なデータオブジェクトストレージ及び検索

Country Status (5)

Country Link
US (1) US8793466B2 (ja)
EP (1) EP2847698A4 (ja)
JP (1) JP6664218B2 (ja)
CN (1) CN104395904B (ja)
WO (1) WO2013162954A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008788A (ja) * 2017-06-20 2019-01-17 三星電子株式会社Samsung Electronics Co.,Ltd. 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法

Families Citing this family (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443153B1 (en) * 2010-01-06 2013-05-14 Netapp, Inc. Dynamic balancing of performance with block sharing in a storage system
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US11275509B1 (en) 2010-09-15 2022-03-15 Pure Storage, Inc. Intelligently sizing high latency I/O requests in a storage environment
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US8856440B2 (en) * 2011-09-12 2014-10-07 Microsoft Corporation Volatile memory representation of nonvolatile storage device set
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US8745415B2 (en) 2012-09-26 2014-06-03 Pure Storage, Inc. Multi-drive cooperation to generate an encryption key
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US10146850B2 (en) 2012-10-30 2018-12-04 FHOOSH, Inc. Systems and methods for collecting, classifying, organizing and populating information on electronic forms
US8924425B1 (en) * 2012-12-06 2014-12-30 Netapp, Inc. Migrating data from legacy storage systems to object storage systems
US9589008B2 (en) 2013-01-10 2017-03-07 Pure Storage, Inc. Deduplication of volume regions
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US11768623B2 (en) 2013-01-10 2023-09-26 Pure Storage, Inc. Optimizing generalized transfers between storage systems
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US9223517B1 (en) * 2013-05-03 2015-12-29 Emc Corporation Scalable index store
US20150074116A1 (en) * 2013-09-10 2015-03-12 Cloudvolumes, Inc. Indexing attachable applications for computing systems
US11128448B1 (en) 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US9208086B1 (en) 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US10812313B2 (en) * 2014-02-24 2020-10-20 Netapp, Inc. Federated namespace of heterogeneous storage system namespaces
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
KR102310246B1 (ko) * 2014-04-23 2021-10-08 삼성전자주식회사 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US10296469B1 (en) 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9864761B1 (en) 2014-08-08 2018-01-09 Pure Storage, Inc. Read optimization operations in a storage system
JP6220323B2 (ja) * 2014-09-05 2017-10-25 株式会社東芝 オブジェクト検索装置およびその検索方法
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
US10579823B2 (en) 2014-09-23 2020-03-03 Ubiq Security, Inc. Systems and methods for secure high speed data generation and access
CA2962432C (en) 2014-09-23 2023-04-18 FHOOSH, Inc. Secure high speed data storage, access, recovery, and transmission
US9690823B2 (en) 2014-09-25 2017-06-27 Dropbox, Inc. Synchronizing copies of an extent in an append-only storage system
US9720607B2 (en) 2014-09-25 2017-08-01 Dropbox, Inc. Append-only storage system supporting open and closed extents
US10409769B1 (en) * 2014-09-29 2019-09-10 EMC IP Holding Company LLC Data archiving in data storage system environments
US9373353B2 (en) 2014-09-30 2016-06-21 International Business Machines Corporation Negative select access mechanism
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9773007B1 (en) 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9588842B1 (en) 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10165050B2 (en) 2014-12-15 2018-12-25 FHOOSH, Inc. Systems and methods for diffracted data retrieval
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US11947968B2 (en) 2015-01-21 2024-04-02 Pure Storage, Inc. Efficient use of zone in a storage device
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
CN104994135B (zh) * 2015-05-25 2018-09-21 华为技术有限公司 存储***中融合san及nas存储架构的方法及装置
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR20170028825A (ko) 2015-09-04 2017-03-14 퓨어 스토리지, 아이앤씨. 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색
US10929419B2 (en) 2015-09-25 2021-02-23 Netapp, Inc. Object storage backed file system
US11334540B2 (en) * 2015-09-25 2022-05-17 Netapp, Inc. Namespace hierarchy preservation with multiple object storage objects
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
CN105550345B (zh) * 2015-12-25 2019-03-26 百度在线网络技术(北京)有限公司 文件操作方法和装置
US10733161B1 (en) * 2015-12-30 2020-08-04 EMC IP Holding Company LLC Atomically managing data objects and assigned attributes
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US11249968B2 (en) * 2016-05-09 2022-02-15 Sap Se Large object containers with size criteria for storing mid-sized large objects
EP4336374A3 (en) * 2016-06-09 2024-06-19 Informatique Holistec Inc. Data storage system and method for performing same
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
JP6253752B1 (ja) * 2016-11-29 2017-12-27 株式会社東芝 階層化ストレージシステム
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US11093146B2 (en) 2017-01-12 2021-08-17 Pure Storage, Inc. Automatic load rebalancing of a write group
RU2017104408A (ru) * 2017-02-10 2018-08-14 СИГЕЙТ ТЕКНОЛОДЖИ ЭлЭлСи Составные топологии хранения данных для объектов данных
US10996857B1 (en) * 2017-02-28 2021-05-04 Veritas Technologies Llc Extent map performance
CN108572958B (zh) * 2017-03-07 2022-07-29 腾讯科技(深圳)有限公司 数据处理方法及装置
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11138247B2 (en) * 2017-04-07 2021-10-05 Druva, Inc. Systems and methods for a full text search engine implemented using object storage techniques
US11403019B2 (en) 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US11256667B2 (en) 2017-10-26 2022-02-22 Druva Inc. Deduplicated merged indexed object storage file system
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11144638B1 (en) 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11349656B2 (en) 2018-03-08 2022-05-31 Ubiq Security, Inc. Systems and methods for secure storage and transmission of a data stream
US11934322B1 (en) 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11281577B1 (en) 2018-06-19 2022-03-22 Pure Storage, Inc. Garbage collection tuning for low drive wear
US11869586B2 (en) 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11194759B2 (en) 2018-09-06 2021-12-07 Pure Storage, Inc. Optimizing local data relocation operations of a storage device of a storage system
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US11113409B2 (en) 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
CN111159438B (zh) * 2018-11-08 2022-06-03 杭州海康威视数字技术股份有限公司 一种数据的存储和检索方法、电子设备及存储介质
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US11588633B1 (en) 2019-03-15 2023-02-21 Pure Storage, Inc. Decommissioning keys in a decryption storage system
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11397674B1 (en) 2019-04-03 2022-07-26 Pure Storage, Inc. Optimizing garbage collection across heterogeneous flash devices
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US11086713B1 (en) 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
US10922012B1 (en) 2019-09-03 2021-02-16 Dropbox, Inc. Fair data scrubbing in a data storage system
US11963321B2 (en) 2019-09-11 2024-04-16 Pure Storage, Inc. Low profile latching mechanism
US11403043B2 (en) 2019-10-15 2022-08-02 Pure Storage, Inc. Efficient data compression by grouping similar data within a data segment
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
CN111309261A (zh) * 2020-02-16 2020-06-19 西安奥卡云数据科技有限公司 一种分布式存储***中单节点上数据物理位置映射方法
CN111274259A (zh) * 2020-02-16 2020-06-12 西安奥卡云数据科技有限公司 一种分布式存储***中存储节点的数据更新方法
CN111398838B (zh) * 2020-03-19 2022-05-17 湖北亿纬动力有限公司 一种动力电池的状态数据记录方法、装置、***及介质
US11579771B2 (en) 2020-05-12 2023-02-14 Seagate Technology Llc Data storage layouts
US11693573B2 (en) * 2020-06-18 2023-07-04 Hewlett Packard Enterprise Development Lp Relaying storage operation requests to storage systems using underlying volume identifiers
US11960773B2 (en) 2020-07-31 2024-04-16 Hewlett Packard Enterprise Development Lp Modifying virtual persistent volumes based on analysis of performance metrics
US11755373B2 (en) * 2020-10-07 2023-09-12 Oracle International Corporation Computation and storage of object identity hash values
CN113342751B (zh) * 2021-07-30 2021-11-09 联想凌拓科技有限公司 元数据处理方法、装置、设备和可读存储介质
CN113885805A (zh) * 2021-10-19 2022-01-04 上海达梦数据库有限公司 一种区块分配方法、装置、设备及存储介质
CN114489494A (zh) * 2022-01-13 2022-05-13 深圳欣锐科技股份有限公司 一种外部存储器存储配置参数的存储方法及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206615A (ja) * 2002-12-26 2004-07-22 Matsushita Electric Ind Co Ltd 記憶装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6804746B2 (en) 2001-03-01 2004-10-12 Sony Corporation Method and system for optimizing data storage and retrieval by an audio/video file system using hierarchical file allocation table
US7774325B2 (en) * 2002-10-17 2010-08-10 Intel Corporation Distributed network attached storage system
AU2003301379A1 (en) 2002-10-17 2004-05-04 Intel Corporation A distributed network attached storage system
US8321667B2 (en) 2007-02-28 2012-11-27 Microsoft Corporation Security model for common multiplexed transactional logs
US7739312B2 (en) 2007-04-27 2010-06-15 Network Appliance, Inc. Data containerization for reducing unused space in a file system
US7827201B1 (en) 2007-04-27 2010-11-02 Network Appliance, Inc. Merging containers in a multi-container system
US8612668B2 (en) * 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
US8478799B2 (en) * 2009-06-26 2013-07-02 Simplivity Corporation Namespace file system accessing an object store
US8407190B2 (en) 2009-06-30 2013-03-26 Commvault Systems, Inc. Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer
US8856440B2 (en) * 2011-09-12 2014-10-07 Microsoft Corporation Volatile memory representation of nonvolatile storage device set

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206615A (ja) * 2002-12-26 2004-07-22 Matsushita Electric Ind Co Ltd 記憶装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008788A (ja) * 2017-06-20 2019-01-17 三星電子株式会社Samsung Electronics Co.,Ltd. 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法
JP7001544B2 (ja) 2017-06-20 2022-01-19 三星電子株式会社 貯蔵装置並びに貯蔵装置を管理するためのシステム及び方法
US11809722B2 (en) 2017-06-20 2023-11-07 Samsung Electronics Co., Ltd. System and method for managing a memory device using indexes

Also Published As

Publication number Publication date
EP2847698A1 (en) 2015-03-18
EP2847698A4 (en) 2016-03-02
WO2013162954A1 (en) 2013-10-31
JP6664218B2 (ja) 2020-03-13
US8793466B2 (en) 2014-07-29
CN104395904B (zh) 2017-11-03
US20130290648A1 (en) 2013-10-31
CN104395904A (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
JP6664218B2 (ja) 効率的なデータオブジェクトストレージ及び検索
US9563654B2 (en) Dense tree volume metadata organization
US9891860B1 (en) Managing copying of data in storage systems
US9460102B1 (en) Managing data deduplication in storage systems based on I/O activities
US9798496B2 (en) Methods and systems for efficiently storing data
US9348842B2 (en) Virtualized data storage system optimizations
US9134917B2 (en) Hybrid media storage system architecture
US9135123B1 (en) Managing global data caches for file system
US10176117B2 (en) Efficient metadata in a storage system
US9760574B1 (en) Managing I/O requests in file systems
US8996490B1 (en) Managing logical views of directories
US9075754B1 (en) Managing cache backup and restore
US20200225868A1 (en) Solid state tier optmization using a content addressable caching layer
US9021222B1 (en) Managing incremental cache backup and restore
US9542401B1 (en) Using extents of indirect blocks for file mapping of large files
US10620844B2 (en) System and method to read cache data on hybrid aggregates based on physical context of the data
US9965195B2 (en) Methods and systems for efficiently storing data at a plurality of storage tiers using a transfer data structure
EP4336336A1 (en) Data compression method and apparatus
US10409687B1 (en) Managing backing up of file systems
US9519590B1 (en) Managing global caches in data storage systems
US9792043B2 (en) Methods and systems for efficiently storing data
US20210034467A1 (en) Techniques for duplicating inode state to prevent loss of inode metadata
US9934140B1 (en) Allocating blocks in storage systems
US10853257B1 (en) Zero detection within sub-track compression domains
US9606938B1 (en) Managing caches in storage systems

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20151116

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160415

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170809

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180606

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180613

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20180810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200218

R150 Certificate of patent or registration of utility model

Ref document number: 6664218

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250