JP6050316B2 - データストレージシステムにおいて使用される方法及びネットワークストレージサーバ - Google Patents

データストレージシステムにおいて使用される方法及びネットワークストレージサーバ Download PDF

Info

Publication number
JP6050316B2
JP6050316B2 JP2014505213A JP2014505213A JP6050316B2 JP 6050316 B2 JP6050316 B2 JP 6050316B2 JP 2014505213 A JP2014505213 A JP 2014505213A JP 2014505213 A JP2014505213 A JP 2014505213A JP 6050316 B2 JP6050316 B2 JP 6050316B2
Authority
JP
Japan
Prior art keywords
data
physical storage
reliability
storage
logical
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
Application number
JP2014505213A
Other languages
English (en)
Other versions
JP2014517952A5 (ja
JP2014517952A (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 JP2014517952A publication Critical patent/JP2014517952A/ja
Publication of JP2014517952A5 publication Critical patent/JP2014517952A5/ja
Application granted granted Critical
Publication of JP6050316B2 publication Critical patent/JP6050316B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明の少なくとも1つの実施形態はデータストレージシステムに関し、特に、データと関連づけられた信頼性数値に基づいたストレージシステムにおけるデータ割り当て及び復旧の技術に関する。
ネットワークに基づいたストレージ(又は簡単に「ネットワークストレージ」)は、データをバックアップするため、複数のユーザにアクセス可能な大量のデータの作成するため、及び他の複数の目的のための、一般的な手段である。ネットワークストレージ環境において、ストレージサーバは、データの1つ又は複数の論理コンテナを複数のクライアントに提供(presenting)又はエクスポート(exporting)することで、複数のクライアント(ホスト)システムでデータを利用可能にする。ネットワークアタッチトストレージ(Network Attached Storage,NAS)及びストレージエリアネットワーク(Storage Area Network,SAN)を含む、種々の形式のネットワークストレージがある。NASの文脈においては、ストレージサーバは、複数のクライアントからのファイルレベルの複数の要求を提供し、その一方、SANの文脈においては、ストレージサーバはブロックレベルの複数の要求を提供する。いくつかのストレージサーバは、ファイルレベルの複数の要求と、ブロックレベルの複数の要求の両方を提供可能である。
技術市場は、既存の複数のネットワークストレージ技術に影響を与えるいくつかのトレンドを経験してきた。例えば、磁気記録媒体の密度は、ネットワークストレージシステムにおいて成長を継続している。しかし、スピンドル(spindle)あたりの1秒毎の入出力操作(IOPS)として測定される、そのような媒体の性能は、同様の成長速度を示してはいない。すなわち、磁気媒体は、そのスピードの高速化の程度よりも速く密度が増加している。結果として、バックアップ、メンテナンス、障害がある複数のドライブの復旧などの複数のデータ操作は、完了するためにより長い時間を要し、無数の機能性及び信頼性の問題をもたらす。例えば、障害があるドライブのより長い復旧時間は、脆弱性の窓(時間帯)をもたらし、その間は新しいデータを保護する能力が損なわれる。さらに、より長い復旧時間に費やされる複数の処理サイクルはまた、ストレージシステムの全体的な性能に影響を与える。
現在、ストレージシステムの下層に位置する物理層は、格納されるデータの意味的理解を有しない。すなわち、例えば、下層の物理層は、作業空間(scratch−space)に対応するデータと、重要なビジネス情報に対応するデータとを区別しない。その結果、物理層は、区別する努力を行わないか、さもなければ、種々のデータ操作のためにデータに優先順位をつけるための努力を行っていない。意味的理解のこの欠如はさらに、種々のデータ操作と関連する機能性及び信頼性の問題を悪化させる。
ストレージシステムに対するレイアウト及びファイルシステムアーキテクチャ、関連する方法および装置について以下説明する。以下の説明において、それらは総称して「本明細書において説明するシステム」、又は単に「システム」と呼ばれる。本システムは、多数の異なるアプリケーション及び使用事例のために調整可能な、高度に柔軟な複数のデータレイアウトを提供する。数ある特徴の中でも、本システムは、後述されるような、例えば複数の信頼性サービスレベル目標(reliability service level objectives、SLOs)に基づいて、複数の論理ストレージ要素(エンティティ)と対応するデータのために複数の物理的ストレージユニットを割り当てることができる。
本システムは、少なくとも1つの実施形態において、信頼性数値を、ストレージシステムのより上位の論理層に位置するデータの論理コンテナそれぞれ(例えばボリューム)に割り振る。1つの実施形態において、信頼性数値は、複数の信頼性SLO(reliability SLOs)によって決まる複数の目標に従って割り振られる。他の複数の実施形態において、信頼性数値は、ストレージシステムの管理インタフェースを介してユーザによって割り振られてもよく、または、論理コンテナ内に格納されるデータの種類(Type)に基づいて自動的に割り振られてもよい。
信頼性数値に基づいて、本システムは、論理コンテナに対応するデータを格納するためのストレージシステムの下層の物理的ストレージ層(例えばRAID層)から特定のパリティグループを識別する。パリティグループは、1つ又は複数の共通の保護レベル属性(例えば、パリティ保護レベル、記憶媒体の種類など)を共有する1つ又は複数の物理的ストレージ装置に含まれる複数のストレージ領域の集合である。1つの例示される実施形態において、各「パリティグループ(parity group)」は、1つ又は複数の物理的ストレージ装置(例えば、異なる複数のディスクドライブからの複数のスライスの集合)から選択される、複数のストレージ領域すなわち複数のストレージスライスを示すために使用される。当該複数のストレージ領域又は複数のストレージスライスは、データ損失に対する共通のパリティに基づいた保護機構(protection scheme)を使用する。所与のデータの論理コンテナのためのパリティグループは、例えば複数の信頼性SLOによって決まる信頼性数値に基づいて選ばれる。例えば、高い信頼性要求を有する論理コンテナには、最も高い保護レベルを有するパリティグループが割り振られる。この場合、本システムは、割り振られたパリティグループから選択される複数の物理的ストレージブロック内に論理コンテナに対するデータを割り当てる(アロケートする)。複数の実施形態において、本システムは、論理コンテナの信頼性情報を、パリティグループに付加し、また、データが格納される複数の物理的ストレージ装置に付加する。例えば、信頼性レベル情報は、メタデータとしてパリティグループに付加される。
このようにして、下層の物理的ストレージ層は、複数の物理的ストレージ装置に格納されるデータの重要性の意味的理解を有する。すなわち、下層の物理層は、複数の物理的ストレージ装置に格納されるデータを区別して優先順位を付ける能力を有する。したがって、下層の物理的ストレージ層は、付加される信頼性情報の複数の値に基づいて種々のデータ操作(例えば、複数のバックアップ操作、複数のデータ復旧操作)に優先順位を付けることが可能である。1つの例は、障害がある物理的データ要素(例えば、障害があるディスクドライブ)の復旧である。物理的データ要素は、異なる複数のパリティグループに属する複数のストレージブロックすなわち複数のスライスを備えてもよい。したがって、障害がある物理的データ要素(例えば、ディスクドライブ)の復旧に先立って、本システムは、障害がある要素が参加する複数のパリティグループを識別する。それから、本システムは、複数のパリティグループのリストに優先順位をつけて、(例えば複数の信頼性SLOによって示されるような)最も高い複数の信頼性数値を有する複数のパリティグループに属する物理的ストレージ装置に対してまず復旧処理を遂行する。
このようにして、本システムは、より低い複数の信頼性数値を有する複数の物理的ストレージ装置に対する複数のデータ復旧操作を延期する、又はそうでなければ優先順位を下げる(de−prioritize)能力を有する。高い複数の信頼性数値を有する複数のパリティグループに対する複数のデータ復旧操作の優先順位付けは、大幅な性能の改善と大幅な信頼性の改善をもたらす。例えば、再構築又は障害復旧のシナリオにおいて、信頼性に基づいた優先順位づけは、もう1つの物理的ストレージ要素の障害に起因したデータ損失に対する脆弱性の窓(時間帯)を最小化し、また、システムのフォアグラウンドの作業負荷/主要な作業負荷との干渉を低減する。
本技術の他の複数の態様は、添付の図から、及び以下の詳細な説明から明らかとなる。
本発明が実施可能なネットワークストレージ環境(network storage environment)を示す図。 本発明が実施可能なクラスタ化されたネットワークストレージ環境(clustered network storage environment)を示す図。 1つ又は複数のストレージサーバノード(storage server node)を実施可能であるストレージコントローラ(storage controller)のハードウェアアーキテクチャの一例を示す高いレベルのブロック図である。 ストレージサーバノードのストレージオペレーティングシステム(storage operating system)の一例を示す図。 本明細書で紹介する技術に従ったデータストレージの種々の層を示す図。 特定の複数の種類の複数のデータ層の一例を示す図。 ある実施形態によるストレージマネージャの詳細を示す図。 RAIDグループ(RAID group)から複数のパリティグループ(parity group)がどのように構築されるかを示す図。 複数のエクステントを含む複数の領域内の積層化の一例を示す。 複数のボリュームが、複数の領域内に含まれる複数のコンテントの複数のツリーとして、どのように表現可能かを示す図。 ボリュームレベルから下ってRAIDレベルに至る、種々のデータ層の一例を示す図。 複数の論理要素(logical entities)と関連付けられた複数の信頼性数値(reliability values)に従った物理的ストレージ割り当て(physical storage allocation)の一例を示す図。 複数の論理データ要素と関連付けられた複数の信頼性数値に基づいた複数の物理的ストレージブロックの割り当てのための処理を説明するための図。 システムが、優位な優先順位が付けられた複数のデータ操作(prioritized data operations)を遂行する処理の一例を示す図。
本発明の1つ又はそれ以上の実施形態は、添付の図面の図において限定ではなく例示として示され、また、図面において類似の参照符号は同様の構成要素を示す。
本明細書において説明される「実施形態」、「1つの実施形態」などは、特有の特徴、構造、または記載される特性が本発明の少なくとも1つの実施形態に含まれることを意味する。本明細書におけるそのような複数の語句の出現は、必ずしも同一の実施形態を指すものではない。
I.概要
ストレージシステムは、信頼性に関する複数の考慮事項に基づいて調整されることが可能な、高度に柔軟な複数のデータレイアウトを提供する。システムは、例えば複数の信頼性SLOによって確立される複数の目標に基づいて、システムのより上位の論理レベルにおいて、複数の信頼性数値を複数の論理コンテナに割り当てる。信頼性数値に基づいて、システムは、論理コンテナに対応するデータを格納するためのシステムの下層の物理的ストレージレベルから、特定のパリティグループを識別する。パリティグループの選択の後、システムは、データをパリティグループ内の複数の物理的ストレージブロックに割り当てる。複数の実施形態において、システムは、信頼性数値情報を、パリティグループとデータを格納する複数の物理的ストレージユニットとに付加する。このようにして、下層の物理層は、論理レベルにおいて格納されるデータに関係する信頼性に関する複数の考慮事項についての意味的理解を備えるようになる。当該意味的理解に基づいて、システムは、複数のパリティグループに付加される複数の信頼性数値に従って複数の物理的ストレージユニットに対する複数のデータ操作(例えば、複数の復旧操作、複数のメンテナンス操作)に優先順位をつける能力を有する。
II.システム環境
図1及び図2は、システムが実施可能な、ネットワーク構成を、異なる複数の詳細さのレベルで示す図である。特に、図1はネットワークデータストレージ環境を示し、当該ネットワークデータストレージ環境は、複数のクライアントシステム104.1〜104.2、ストレージサーバシステム102、複数のクライアントシステム104.1〜104.2およびストレージサーバシステム102を接続するコンピュータネットワーク106を含む。図1に示すように、ストレージサーバシステム102は、少なくとも1つのストレージサーバ108と、スイッチングファブリック110と、大容量ストレージサブシステム105における複数のディスクなどの複数の大容量ストレージ装置112とを含む。あるいは、複数の大容量ストレージ装置212のうちのいくつか又は全ては、フラッシュ、複数のSSD、テープストレージなどの他の複数の種類のストレージとすることも可能である。
ストレージサーバ(又は複数のサーバ)108は、例えば、NetApp, Incから入手可能なストレージサーバ製品のFASファミリーのうちの1つであってもよい。複数のクライアントシステム104.1〜104.2はコンピュータネットワーク106を介してストレージサーバ108に接続され、コンピュータネットワーク106はパケット交換方式のネットワーク(packet−switched network)、例えばローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)とすることができる。さらに、ストレージサーバ108は、スイッチングファブリック110を介して複数のディスク112に接続され、スイッチングファブリック110は、例えばファイバー分散データインタフェース(fiber distributed data interface、FDDI)であることが可能である。なお、ネットワークデータストレージ環境内で、任意の他の適切な数の複数のストレージサーバ及び/又は複数の大容量ストレージ装置及び/又は任意の他の適切なネットワーク技術が利用されてもよい。
ストレージサーバ108は、(1つまたは複数の)ディスク112上のストレージ空間のいくつか又は全てを複数のクライアントシステム104.1〜104.2から使用可能にする。例えば、複数のディスク112の各々は、個別のディスク、多重のディスク(例えばRAIDグループ)、又は任意の他の適切な(複数の)大容量ストレージ装置として実装可能である。ストレージサーバ108は、ネットワークファイルシステム(NFS)プロトコル、又はコモンインターネットファイルシステム(CIFS)プロトコルなどの公知の複数のプロトコルに従って、複数のクライアントシステム104.1〜104.2と通信して、複数のユーザ及び/又は複数のアプリケーションプログラムが複数のディスク112上に格納されるデータを使用することを可能にする。ストレージサーバ108は、ボリュームとしてディスク112上に格納されるデータを複数のクライアントシステム104.1〜104.2に提供又はエクスポートすることができる。「ボリューム」は、1つ又は複数の物理的大容量ストレージ装置(例えば、複数のディスク)又はその部分を単一の論理ストレージオブジェクト(ボリューム)に組み合わせた、物理的ストレージの抽象化であり、「ボリューム」は単一のファイルシステムなどの単一の管理上の単位として取り扱われる。「ファイルシステム」は、(例えば、複数のボリューム、複数の論理ユニット(LUNs)、複数のディレクトリ、複数のファイルのように)格納されたデータの複数の論理コンテナの構造化された(例えば、階層的な)集合である。なお、「ファイルシステム」は、「ファイル」そのものを含んだりあるいはそれに基づいたりする必要はなく、ファイルシステムは、複数のファイル、複数のディレクトリ、LUNsなどの、データの複数の論理コンテナの任意の構造化された集合であることが可能である。本明細書において使用される用語「ブロック」は、所与のストレージシステムによって使用される連続データ(contiguous data)の最小のアドレス指定可能な単位である。従来の複数のストレージシステムにおいて、ブロックは一般的に、(必ずしもそうではないが)4KBの長さである。
ストレージサーバ108及び大容量ストレージサブシステム105の種々の機能及び複数の構成設定は、ネットワーク106に結合される管理ステーション106から制御されることができる。他の複数の操作の中から、データオブジェクト移行操作は、管理ステーション106から開始することができる。
図2は、ネットワークデータストレージ環境を示し、これは図1における環境のより詳細な図を表す。なお、図2のクラスタ化された環境は、本明細書において説明されるシステムが実施可能である環境の一例にすぎない。本明細書において説明されるシステムは、非クラスタ化されたネットワークストレージ環境においても実施可能である。同様に、ここに説明されるシステムは、ストレージサーバ内で実施されることに限定されず、すなわち、当該システムは、本質的に任意の形式の処理システム/コンピューティングシステム(processing/computing system)において実施可能である。
図2における環境200は、複数のクライアントシステム204(204.1〜204.M)と、クラスタ化されたストレージサーバシステム202と、複数のクライアントシステム204及びクラスタ化されたストレージサーバシステム202に接続するコンピュータネットワーク206とを含む。図2に示すように、クラスタ化されたストレージサーバシステム202は、複数のサーバノード208(208.1〜208.N)と、クラスタスイッチングファブリック210と、複数の大容量ストレージ装置212(212.1〜212.N)とを含む。複数の大容量ストレージ装置212(212.1〜212.N)は、説明を簡単にするために以後仮定するように、複数のディスクであることができる。あるいは、複数の大容量ストレージ装置212のうちのいくつか又は全ては、フラッシュメモリ、複数のSSD、テープストレージなどの、他の種類のストレージであることが可能である。なお、複数の大容量ストレージ装置212が、各ノード208と関連付けられることができる。
複数のノード208の各々は、N−モジュール214、D−モジュール216、M−ホスト218(これらの各々は別個のソフトウェアモジュールを使用して実施可能である)、及び複製データベース(Replicated Database、RDB)220のインスタンス(Instance)を含む、いくつかのモジュールを含むように構成される。例えば、ノード208.1は、N−モジュール214.1、D−モジュール216.1、M−ホスト218.1を含み;ノード208.Nは、N−モジュール214.N、D−モジュール216.N、及びM−ホスト218.Nを含み;その他同様である。複数のN−モジュール214.1〜214.Mは、複数のノード208.1〜208.Nを、ネットワーク206を介してそれぞれ1つ又はそれ以上のクライアントシステム204に接続することを可能にする機能を有し、一方、複数のD−モジュール216.1〜216.Nはそれぞれ複数のディスク212.1〜212.N上に格納されるデータに対するアクセスを提供する。複数のM−ホスト218は、クラスタ化されたストレージサーバシステム202に対して複数の管理機能を提供する。従って、クラスタ化されたストレージサーバ構成における複数のサーバノード208の各々は、ストレージサーバの機能性を提供する。
RDB220は、クラスタ全体を通して複製されたデータベースであり、すなわち、各ノード208は、RDB220のインスタンスを含む。RDB220の種々のインスタンスは、定期的にアップデートされて、それらを互いに同期させる。RDB220は、ボリュームロケーションデータベース(Volume Location Database、VLDB)(図示せず)を含む、複数のノード208の全てによって使用される種々の情報のクラスタワイドストレージ(cluster−wide storage)を提供する。VLDBは、クラスタにおける各ボリュームのクラスタ内の位置を示すデータベースであり(すなわち、各ボリュームに対して所有しているD−モジュール216)、また、VLDBは、アクセスが要求される任意の所与のボリュームに対する適切なD−モジュール216を識別するために、複数のN−モジュール214によって使用される。
複数のノード208は、クラスタスイッチングファブリック210によって相互接続され、これは例えばギガビットイーサネットスイッチ(Gigabit Ethernet switch)として実施可能である。複数のN−モジュール214及び複数のD−モジュール216は協働して、本発明の例示的な複数の実施形態を実施するクラスタ化されたコンピューティング環境の高度に拡張可能(highly−scalable)な分散ストレージシステムアーキテクチャ(Distributed Storage System Architecture)を提供する。なお、図2において等しい数の複数のN−モジュール及び複数のD−モジュールが示されているが、本明細書において説明される技術の種々の実施形態に従って、異なる数の複数のN−モジュール及び/又は複数のD−モジュールが用いられてもよい。例えば、複数のN−モジュールと複数のD−モジュールとの間に1対1対応は必要ない。したがって、1つのN−モジュールと1つのD−モジュールとを備えてなるノード208の記載は、一例に過ぎないものと理解される必要がある。
図3は、複数のストレージサーバノード208のうちの1つ又は複数を実施することができるストレージコントローラの例を示す図である。例示的な実施形態において、ストレージコントローラ301は、相互接続390に接続される1つ又は複数のプロセッサ310を含むプロセッササブシステムを含む。ストレージコントローラ301はさらに、メモリ320と、ネットワークアダプタ340と、クラスタアクセスアダプタ(Cluster Access Adapter)370と、ストレージアダプタ380とを含み、これらは全て相互接続390によって相互接続される。クラスタアクセスアダプタ370は、ノード208をクラスタの他の複数のノード208に結合するように適合された複数のポートを含む。例示される実施形態において、イーサネット(Ethernet)は、クラスタリングプロトコル(Clustering Protocol)及び相互接続媒体として使用されるが、他の複数の種類のプロトコル及び複数の相互接続が本明細書において説明されるクラスタアーキテクチャ内で利用されてもよい。分離した別々の複数のストレージシステム又は分離した別々の複数のコンピュータ上で複数のN−モジュール及び複数のD−モジュールが実施される別の実施形態においては、クラスタアクセスアダプタ270は、クラスタの他の複数のN−モジュール及び/又は他の複数のD−モジュールと通信するN−モジュール214及び/又はD−モジュール216によって利用される。
ストレージコントローラ301は、ストレージマネージャなどの、好ましくは高いレベルのモジュールを実施するストレージオペレーティングシステム330を実行する単一のプロセッサストレージシステム又はマルチプロセッサストレージシステムとして実施可能であり、名前が付けられた複数のディレクトリ、複数のファイル、及び複数のディスク上の複数の仮想ディスク(以後、一般的に「複数のブロック」という。)と呼ばれる特別な複数の種類のファイル情報を論理的に組織化する。例えば、1つのプロセッサ310が、ノード208上のN−モジュール214の複数の機能を実行する際、もう1つのプロセッサ310がD−モジュール216の複数の機能を実行することができる。
メモリ320は例えば、本発明と関連するソフトウェアプログラムコード及び複数のデータ構造を格納する複数のプロセッサ及び複数のアダプタ340,370,及び380によってアドレス指定可能である複数のストレージ位置(Storage Locations)を備える。次に、プロセッサ310及び複数のアダプタは、ソフトウェアコードを実行して複数のデータ構造を操作するように構成される、複数の処理要素(Processing Elements)及び/又は論理回路(Logic Circuitry)を備えてもよい。ストレージオペレーティングシステム330は、通例その一部がメモリ内に存在して(複数の)プロセッサ310によって実行され、当該ストレージオペレーティングシステム330は、(とりわけ)(複数の)プロセッサ310を構成することによってストレージコントローラ301を機能的に組織し、ノード208によって供給されるストレージサービスを支える複数のストレージ操作を起動する。他の処理および種々のコンピュータ読み取り可能なストレージ媒体を含む複数のメモリ実装は、本明細書において説明する技術に関連する複数のプログラム命令の実行および格納に使用されてもよいことは当業者には明白である。
ネットワークアダプタ340は複数のポートを含み、ストレージコントローラ301を、複数の2点間接続(ポイントツーポイントリンク、Point−To−Point Link)、複数のワイドエリアネットワーク(Wide Area Network)、公衆ネットワーク(Public Network)(インターネット)又は共有されたローカルエリアネットワーク(Shared Local Area Network)を介して実施される複数の仮想プライベートネットワーク(Virtual Private Networks)を介して、1つ又は複数のクライアント204に結合させる。ネットワークアダプタ340はしたがって、ストレージコントローラ301をネットワーク206に接続するために必要とされる機械的、電子的及び信号伝達回路を含むことができる。例えば、ネットワーク206は、イーサネットネットワーク(Ethernet network)又はファイバーチャンネル(Fibre Channel、FC)ネットワークとして実施可能である。各クライアント204は、TCP/IPなどの所定の複数のプロトコルに従って、データの離散的な複数のフレーム及び複数のパケットを交換することによって、ネットワーク206を介してノード208と通信可能である。
ストレージアダプタ380はストレージオペレーティングシステム330と協働して、複数のクライアント204によって要求される情報にアクセスする。当該情報は、任意の種類の、書き込み可能ストレージ媒体の付加された配列(アレイ、array)上に格納されてもよい。任意の種類の書き込み可能ストレージ媒体は、磁気ディスク又はテープ、光ディスク(例えば、CD−ROM又はDVD)、フラッシュメモリ、ソリッドステートディスク(Solid−State Disk、SSD)、電子的(Electronic)なランダムアクセスメモリ(Random Access Memory、RAM)、マイクロエレクトロメカニカルストレージ(Micro−Electro Mechanical Storage)、及び/又は、データ及びパリティ情報を含む情報を格納するように適合された任意の他の類似の媒体などを含む。しかしながら、本明細書において例示として説明するように、情報は複数のディスク212上に格納される。ストレージアダプタ380は、従来の高性能のファイバーチャンネル(FC)リンクトポロジなどの、I/O相互接続構成を介して複数のディスクに結合する入力/出力(I/O)インタフェース回路を有する複数のポートを含む。
複数のディスク212上の情報のストレージは、複数の物理的ストレージ装置の集合にマップする1つ又は複数のストレージボリュームとして実施可能であり、これは1つ又は複数のRAIDグループに分割可能である。
ストレージオペレーティングシステム330は、複数のディスク212上に格納されるデータへの複数のクライアントのアクセスを容易にする。ある複数の実施形態において、ストレージオペレーティングシステム330は1つ又は複数の可視化モジュールと協働するファイルシステムを実装して、複数のディスク212によって提供されるストレージ空間を「可視化」する。ある複数の実施形態において、ストレージマネージャ460(図4)は、格納されるデータを論理的に組織する。これについてはさらに詳細後述する。1つの実施形態において、ストレージオペレーティングシステム330は、任意位置書き込み(Write−Anywhere)及びコピーオンライト(Copy−On−Write)の機能を実装する。すなわち、任意のデータ又はメタデータは、任意の空き物理データブロック(Free Physical Data Block)に書き込まれることができ、また、任意の論理データブロックへの変更は常に、元の物理的データブロックの上書きよりもむしろ新しい物理的データブロックに書き込まれる。
図4は、本明細書において説明する複数の技術を用いて使用可能なストレージオペレーティングシステム330の例を示す図である。例示される実施形態において、ストレージオペレーティングシステム330は、統合されたネットワークプロトコルスタック(Network Protocol Stack)を形成するように、又はより一般的には、複数のクライアントがブロック及び複数のファイルアクセスプロトコルを使用してノード上に格納される情報にアクセスするための複数のデータパスを提供するマルチプロトコルエンジン(Multi−Protocol Engine)410を形成するように組織化された、多重の機能的な層を含む。マルチプロトコルエンジン410はまた、より下層の処理ハードウェアと組み合わせて、N−モジュール214を形成する。マルチプロトコルエンジン410は、1つ又はそれ以上のより低いレベルのプロトコルを実施する1つ又は複数のネットワークドライバを含むネットワークアクセス層412を含み、処理システムがネットワーク206を介して通信することを可能にする。当該ネットワーク206は、イーサネット(Ethernet)、インターネットプロトコル(Internet Protocol、IP)、トランスポートコントロールプロトコル/インターネットプロトコル(Transport Control Protocol/Internet Protocol、TCP/IP)、ファイバーチャンネルプロトコル(Fibre Channel Protocol、FCP)、及び/又はユーザデータグラムプロトコル/インターネットプロトコル(User Datagram Protocol/Internet Protocol、UDP/IP)などである。マルチプロトコルエンジン410はまた、種々の高いレベルのネットワークプロトコルを実施するプロトコル層を含み、当該ネットワークプロトコルは、ネットワークファイルシステム(Network file system、NFS)、コモンインターネットファイルシステム(Common Internet file system、CIFS)、ハイパーテキストトランスファープロトコル(Hypertext Transfer Protocol、HTTP)、インターネットスモールコンピュータシステムインタフェース(Internet small computer system interface、iSCSI)などである。さらに、マルチプロトコルエンジン410は、複数のD−モジュール及び他の複数のN−モジュールを用いてクラスタ内通信を実施するクラスタファブリック(Cluster fabric、CF)インタフェースモジュール440aを含む。
また、ストレージオペレーティングシステム330は、バックエンドサーバ465を形成するように組織される複数の層の集合(Set)を含み、当該バックエンドサーバ465は、ノード208の複数のディスク212上に格納される情報にアクセスするための複数のデータパスを提供する。バックエンドサーバ465はまた、より下層の処理ハードウェアと組み合わせて、D−モジュール216を形成する。そのために、バックエンドサーバ465は、任意の数のボリューム472と、RAIDシステムモジュール480と、ストレージドライバシステムモジュール490とを管理するストレージマネージャモジュール460を含む。
ストレージマネージャ460は主に、ファイルシステム(又は多重のファイルシステム)を管理して、クライアント起動の読み出し要求及び書き込み要求を供給する。少なくとも1つの実施形態において、ストレージマネージャ460は、本明細書において説明される、複数のボリューム/複数の領域/複数のエクステント/複数のスラブに基づいた複数のストレージ技術を実施する。RAIDシステムモジュール480は、ディスクドライバシステム490がシリアルATA(Serial ATA、SATA)、SCSI、又はFCプロトコル(FCP)などのディスクアクセスプロトコルを実施する間、RAID−4、RAID−5、RAID−DP、又は非クラスタ化されたRAID(後述)などのRAID冗長プロトコルに従って、複数のボリューム/複数のディスクへ/からの情報の格納(Storage)及び読み出し(Retrieval)を管理する。
バックエンドサーバ465はまた、CFインタフェースモジュール440bを含み、複数のN−モジュール及び/又は他の複数のD−モジュールを用いてクラスタ内通信470を実施する。複数のCFインタフェースモジュール440a及び440bは協働して、クラスタにおける複数のD−モジュール216全体にわたって単一のファイルシステムイメージを提供することができる。従って、クライアント要求を受信するN−モジュール214の任意のネットワークポートは、クラスタの任意のD−モジュール216上に位置する単一のファイルシステムイメージ内の任意のデータコンテナにアクセスできる。
複数のCFインタフェースモジュール440はCFプロトコルを実施し、クラスタスイッチングファブリック210(図2)を介してクラスタの複数のモジュールの間で複数のファイルシステムコマンドを伝達(Communicate)する。そのような伝達は、N−モジュール(又はもう1つのD−モジュール)が複数のコールを発する先であるCFアプリケーションプログラミングインタフェース(API)をエクスポーズ(Expose)するD−モジュールによって達成される。そのために、CFインタフェースモジュール440は、CFエンコーダ/CFデコーダとして組織されることができる。N−モジュール214上の例えばCFインタフェース440aのCFエンコーダは、(i)ファイルシステムコマンドを、同一のノード上に存在するD−モジュール216に伝達するときのローカルプロシージャコール(Local Procedure Call、LPC)として、又は、(ii)コマンドを、クラスタのリモートノード上に存在するD−モジュールに伝達するときのリモートプロシージャコール(Remote Procedure Call、RPC)として、CFメッセージをカプセル化可能である。いずれの場合においても、D−モジュール216上のCFインタフェース440bのCFデコーダは、CFメッセージを非カプセル化(De−Encapsulate)して、ファイルシステムコマンドを処理する。
ノード208の操作において、クライアント204からの要求は、ネットワーク206を介してノード208上に、パケットとして送信されることができ、ここで、当該要求はネットワークアダプタ340において受信される(図3)。層412のネットワークドライバはパケットを処理し、適切な場合には、ストレージマネージャ460に送信する前の付加的な処理のために、当該パケットをネットワークプロトコル及びファイルアクセス層に通過させる。この時点で、ストレージマネージャ460は、要求を解釈して、要求されるデータを、もしそれがメモリ320に存在しない場合にはRAIDシステム480からの取り込み(Load)(読み出し(Retrieve))の複数の操作を発生する。ストレージマネージャ460は、どのエクステントにおいて、及びどの領域においてデータが存在するのかを決定する。領域はそのようなエクステント(の一部)を受信して、要求されるデータを含む(複数の)スラブを順々に決定する。この場合、要求は、複数の要求を適切な(複数の)ストレージ装置ドライバに発行する前に、どの(複数の)ストレージ装置がデータを保持するのかのさらなる処理及び決定のために、RAIDシステムモジュール480に手渡される。(複数の)ストレージ装置ドライバは、特定された(複数の)装置からのデータにアクセスして、ノードによって処理するためにメモリにおける要求された(複数の)データブロックを取り込む。要求が完了すると、ノード(及びオペレーティングシステム)は、応答を、ネットワーク206を介してクライアント204に返す。
上述のストレージオペレーティングシステム330を通って「通過」するデータ要求/データ応答(Data Request/Response)は、ソフトウェア又はファームウェアとしてストレージオペレーティングシステム330を実行する汎用プログラマブルハードウェアにおいて実施可能である。変形例として、それは、専用設計(Specially Designed)のハードウェアにおいて完全に又は部分的に実施可能である。すなわち、本発明の変形例の実施形態において、ストレージオペレーティングシステム330のうちのいくつか又は全ては、例えば、1つ又はそれ以上のフィールドプログラマブルゲートアレイ(Field Programmable Gate Arrays、FPGAs)内、複数のアプリケーション特定用途集積回路(Application Specific Integrated Circuit、ASICs)内、複数のプログラム可能論理回路(Programmable Logic Devices、PLDs)内、又はそれらのいくつかの組み合わせ内で実施される論理回路(Logic Circuitry)として実施される。
N−モジュール214及びD−モジュール216の各々は、ストレージオペレーティングシステム330の分離的にスケジュールされた複数のプロセスによって構成された処理ハードウェアとして実施可能である。しかしながら、変形例の実施形態において、複数のモジュールは単一のオペレーティングシステム処理内のコードによって構成された処理ハードウェアとして実施されてもよい。N−モジュール214とD−モジュール216との間の通信は、従って、例えば、複数のモジュールの間を通過するメッセージを使用することで目的が達成されるが、異なる複数のノードのN−モジュールとD−モジュールとの間のリモート通信の場合においては、そのようなメッセージの受け渡し(Message Passing)は、クラスタスイッチングファブリック210を介して発生する。複数のモジュール(複数の処理)の間で情報を転送するためにストレージオペレーティングシステムによって提供される既知のメッセージの受け渡し機構(Message−Passing Mechanism)は、プロセス間通信(Inter Process Communication、IPC)機構(Mechanism)である。IPC機構とともに使用されるプロトコルは、例示的に、一般的なファイル、及び/又は、CF APIを構成する複数の方法/複数の関数の集合を備える、ブロックベースの「不可知論」CFプロトコルである。
III.システム内部機能性及びアーキテクチャ
以下は、例示のシステムの内部機能性及びアーキテクチャの説明であり、これは後述の図12〜図14を参照して説明される複数の技術を実施するために用いられる。もちろん、以下のシステムアーキテクチャ及び機能性は、技術が実施されてもよい例示の機構の理解において便宜のみのために定義されることが理解される。異なる複数のアーキテクチャ及び複数の内部機能性を有する他の複数の機構はまた、物理的ストレージから論理ストレージへの階層性(Physical−To−Logical Storage Hierarch)(図12を参照してさらに以下で説明される一般的なアーキテクチャなど)の全体が維持される限り、本明細書において説明される複数の技術を実施するために使用されてもよい。
本明細書において説明されるシステムは、ファイルシステム及びレイアウトエンジンを含む。図5に示すように、1つの実施形態において、本システムは、いくつかの異なるデータ層を提供し、当該いくつかの異なるデータ層は、RAID層54の上に位置する(「スラブ割り当て層」とも呼ばれる)アグリゲート層53と、アグリゲート層53の上に位置する領域層52と、領域層52の上に位置する(「ファイルシステム層」とも呼ばれる)ボリューム層51とを含む。1つの実施形態において、これらの層は、以下にさらに説明するように、ストレージクラスタにおける各ノード208のD−モジュール216におけるストレージマネージャ460(図4)によって実施される。
1つの実施形態において、システムは、複数のRAIDグループ50を複数のデータブロックの2次元配列55に分割し、次いで、これらの配列を「複数のスラブ(Slabs)」56にさらに分割する。複数のスラブ56は、RAIDストライプの複数の境界に沿って定義可能である。複数のブロック配列55及び複数のスラブ56は、アグリゲート層53内に含まれる。システムはさらに、多重の「領域」57を定義して、データを領域層52に含める。各領域は、1つ又は複数の論理エクステント59(簡単のために、図6における領域層52において示さない)を含むことができる。各エクステント59に割り当てられたものは、1つ又は複数のスラブ56の少なくとも一部分であり、これはそのエクステントを含む領域に割り当てられる。
システムはまた、ボリューム層におけるデータの複数の論理コンテナとして、複数のボリューム58又は複数のファイルシステムを維持する。各ボリューム58は、1つ又は複数の領域57からの1つ又は複数の論理エクステント59を含む。特に、領域層52は、ボリューム層51から(従って、複数のクライアント及び複数のユーザから)、種々の領域57内の複数の論理エクステントの複数のレイアウトを隠す。
種々のスラブ56は、複数の物理的ストレージ装置の異種プール(Heterogeneous Pool)から定義可能であり、任意の所与の領域57は、フラッシュメモリ、複数のソリッドステートドライブ(SSDs)、複数のHDD(HDDs)などの、2つ又はそれ以上の異なる種類の物理的ストレージ装置の複数のスラブで構成される複数のエクステントを含むことができる。それらの性質により、これらの種類の複数の物理的ストレージ装置は、異なる複数の信頼性特性を有する。したがって、異なる複数の物理的ストレージ装置から定義される複数のスラブは異なる複数の信頼性特性を有する。複数の実施形態において、種々のスラブ56は、多重の物理的ストレージ装置から選択されるストレージ領域(又は複数のストレージスライス(Storage Slices))のブロックを用いて定義され、ここで、複数のストレージ領域は、データ損失に対する共通のパリティに基づく保護機構を使用する。従って、そのような複数の実施形態において、種々のスラブ56が、それぞれ、特定のパリティグループと対応する。ここで、各スラブは、より上位の複数の層に対応するパリティグループの抽象化として想定されてもよい。
図6は、複数のデータ層の特定の複数の種類の例を示す。領域層52は、例えば、逐次アクセス領域(Sequential Access Region)と、ランダムアクセス領域(Random Access Region)と、種々の他の種類/目的の1つ又は複数の領域とを含むことができる。ボリューム層51は、例えば、従来のファイルシステムと、バイナリラージオブジェクト(BLOB)ストアと、LUNと、種々の種類/目的の1つ又は複数のボリュームとを含むことができる。また図6にも示されるように、複数のスラブを取得する複数の物理的ストレージ装置61は、例えば、HDDs、SSDs、外部のLUNs、及びローフラッシュ(Raw Flash)などを含むことができる。
図7は、1つの実施形態に従ったストレージマネージャ460の詳細を示す図である。例示される実施形態において、ストレージマネージャ460は、ボリュームマネージャ71と、1つ又は複数のボリュームレイアウトマネージャ76と、領域マネージャ72と、1つ又は複数の領域レイアウトマネージャ73と、スラブマネージャ74と、複数の領域/複数のエクステントインタフェース75と、ブロックI/Oインタフェース77とを含む。
ボリューム層51は、ボリュームマネージャ71によって作成されて管理される。ボリュームマネージャ71は、複数のボリュームの作成及び削除を取り扱う。ストレージマネージャ460は、ボリューム層51におけるボリュームの各種類に対するボリュームレイアウトマネージャ76を含む。各ボリュームレイアウトマネージャ76は、対応するボリュームの種類の内部組織化を実施し、複数のエクステントからの例示としての複数の可視データオブジェクト(例えば、複数のファイル、又はLUNs)の組み立てに関与する。それはまた、複数のボリュームの複数のオブジェクト(例えば、典型的な複数のファイルシステムの階層的な複数のパス名、LUNボリュームに対する複数のLUN IDなど)に適切な何らかのネーミングスキームを実施する。
ボリュームマネージャ71の下は、領域マネージャ72及び領域レイアウトマネージャ73であり、これらは複数の領域を提供(Provide)して管理(Manage)する。領域マネージャ72は、ストレージマネージャ460と関連する複数の領域の母集団全体を管理する。それは、個別の複数のエクステントの適切な領域(例えば、特定の複数の特性の物理的ストレージの複数のスラブを含む領域)への割り振りを判断する。領域マネージャ72はまた、新しい複数の領域がいつ必要とされるか、及びそれらがどの(複数の)種類であるべきかを判断して、それらを生成する。それはまた、複数の領域のサイズ及び空き空間を監視する。例えば、領域マネージャ72は、領域が過度に拡大していると判断して、当該領域を2つのより小さな領域に分割してもよく、あるいは、領域マネージャ72は、1つ又は複数のスラブを返すために多くの空き空間を有する領域をスラブ割り当てマネージャ74に要求してもよい。ボリューム層51が新しい複数のエクステントを生成する必要がある場合、領域マネージャ72は、どの複数の領域を複数のエクステントに配置すればよいかを判断する。
ストレージマネージャ460は、領域層52における各領域に対して、分離した領域レイアウトマネージャ73を生成する。各領域レイアウトマネージャ73は、対応する領域の内部機能性の管理に関与し、特に領域内のデータの実際の物理的配置の決定に関与する。より具体的には、領域レイアウトマネージャ73は、個別の複数のエクステントの、対応する領域を作り上げる複数のスラブ内の複数の物理的ストレージブロックへの割り当てを決定する(例えば、それは、対応する領域において格納される複数のエクステントに対する複数のレイアウト決定を行う)。各領域レイアウトマネージャ73はまた、フォーマット、及びその領域内部のメタデータに対する複数のストレージ位置を管理して決定する。各領域レイアウトマネージャ73はブロックI/Oインタフェース77をRAID層に提供する。
領域/複数のエクステントインタフェース75は、一方のボリュームマネージャ71と、他方の領域マネージャ72及び領域レイアウトマネージャ73との間の通信を提供する。スラブ割り当てマネージャ74は、領域マネージャ72及び領域レイアウトマネージャ73の下に位置するとともに(RAID層を実施する)RAIDシステムモジュール480の上に位置し、複数のスラブの生成及び割り当てに関与する。スラブ割り当てマネージャ74は、複数の領域レイアウトマネージャ73からの複数の要求に応答して、複数のスラブを割り当てる。それは、いくつの各種類のスラブが存在するかのグローバルな知識(Global Knowledge)を有し、また、それは、特定の種類のスラブが少ない場合に領域マネージャ72に通知可能であり、このことは領域マネージャ72がそのような種類の複数のスラブを活用していない(また従って解放可能である)複数の領域を識別することを引き起こす。スラブ割り当てマネージャ74は、RAIDシステムモジュール480からの複数のパリティグループを要求し、このことから複数のスラブを区分けする。
1つの実施形態において、RAID層は「非クラスタ化された(Declustered)」RAIDとして実施される。非クラスタ化されたRAIDは、異種プールにおける個別の複数の物理的装置を複数のストレージ領域又は「複数のスライス」にスライスして次いで複数のスライスを異なる複数の装置から異なる複数のパリティグループに組み立てるRAID実装である。ここで、各パリティグループは、データ損失に対する少なくとも1つの共通のパリティに基づく保護機構を有する複数のスライス又は複数のストレージ領域を備える。複数の実施形態において、各パリティグループ内の複数のスライスは、共通のパリティに基づく保護機構特性に加えて、他の共通の複数の物理的特性(例えば、物理的ストレージ装置の種類)を有してもよい。複数のパリティグループのサイズは、プールにおける複数のストレージ装置の物理的サイズに関係していない。
1つの例示の実施形態において、図8に示すように、複数のパリティグループは、選択される複数のストレージ装置から、又は種々のRAIDグループからの複数の要素から構成される。例えば、RAIDアグリゲート8102は、複数のSSD RAID要素8104から構成される第1のグループを含んでもよい。第2のRAIDグループは、複数のHDD RAID8104要素から構成されてもよい。複数のディスク(又は、他のそのような複数のストレージ要素)は、種々のRAIDグループから選択されて、複数のパリティグループに選択的に組み込まれる。例えば、リティグループAは、データ損失に対する特定のパリティに基づく保護機構(例えば、3+1RAID4)を有するRAIDアグリゲート8102の種々のRAIDグループから選択される複数のディスクの複数のスライスを含んでもよい。同様に、リティグループBは、複数のRAIDグループから選択される複数のディスクの複数のスライスを含み、ここで、選択される複数のスライスは、第2の種類のパリティ保護機構を有する。図8において例示的な実施形態に例示されるように、(異なる複数のパリティグループからの)共通のパリティ保護機構を有する複数のディスクの複数のスライスは、異なる複数のパリティグループ(例えば、パリティグループA、パリティグループBなど)から次第に陥られる。
複数のパリティグループの上で、スラブ割り当て層53は、複数のブロックの複数の2次元配列をとり、それらを、ストライプの複数の境界に沿って、ストレージの非常により小さい複数のスラブに区分けする。スラブにおけるストライプの数は、より下層の物理ストレージの種類に関係する。例えば、複数のHDDスラブは、少なくとも数トラックの長さであってもよく、同時に複数のSSDスラブは少なくとも1つの削除ブロックの長さであってもよい。同時に、複数のスラブは、システムにおける次に高いレベルへ、例えば複数の領域への空間割り当ての基本的単位であるために、相対的に小さく保たれる。
領域は、データの論理的な(仮想化された)複数のエクステントを保持する。各エクステントは単に、領域に格納されるデータ又はメタデータの複数のバイトの範囲であり、エクステント識別子(ID)を介してアクセスされる。複数のエクステントの参照回数は領域内で維持されて、複数のエクステントの外部的な共有を可能にする。領域内のエクステントのレイアウト及び位置は、エクステントの複数のユーザから(すなわち、複数のボリューム、複数のクライアント、複数のユーザから)隠される。
複数の領域内の複数のエクステントの仮想化は、システムに対するアーキテクチャ面での利点である。典型的な複数のファイルシステムは、データのレイアウトの直接的制御を用いて、データのエクステントの性能、空間効率、及び信頼性を管理する。本明細書で説明するシステムにおいて、期待値が、例えばエクステントのSLOを用いて表現される。領域は、データの位置の詳細、及びSLOがどのように良く評価されるかを完全に隠す。このことは、それらの複数のデータブロックの大部分及び少しの相違を共有することで、非常に類似する複数のエクステントを一緒に圧縮又は格納するなどの複数のアルゴリズムを実施する自由度を領域に与える。
複数の領域の内部構造(Internal Structure)の孤立は、特定の複数の処理量(Workloads)に対する領域の複数の内部の組織化を最適化する多重の内部領域レイアウトマネージャ要素の実施を可能にする。異なる複数の領域は、下層のストレージの動的にシフトする組み合わせはもちろん、異なる複数の内部レイアウト及び複数のアルゴリズムを含む、異なる複数の目的のために最適化されることができる。大幅に異なる複数のSLOを有する複数のエクステントは、異なる複数の領域に格納可能である。例えば、図9において、3種類のエクステント、すなわち、LUNデータ(「L」)、小さいファイルデータ(「S」)、及びメタデータ(「M」)が示される。これらの3種類のエクステントは、3つの特別な領域91A、91B、及び91Cに格納され、当該各3つの領域は各エクステントIDをそのストレージにマップするためのそれ自身の内部フォーマットを有する。異なる複数の領域91A、91B、及び91Cはまた、それらの複数のエクステント上の複数のSLOを満たすためのそれらの必要性によって決まるように、複数のストレージスラブの異なる複数の組み合わせを使用する。
システムの最上層はボリューム層51である。図10に示すように、複数のボリュームは種々のサイズを有する複数のエクステントの複数のツリーとして構成可能である。最低レベルの複数のエクステントは、ボリュームのデータを保持する一方、最高レベルの複数のエクステントは、より低いレベルの複数のエクステントを組織するメタデータを格納する。図10の例において、アグリゲートにおける3つのボリューム121A、121B、及び121Cは、各々、複数のエクステントのツリーで作り上げられる。ここで、複数のエクステントは、3つの分離した領域122A、122B、及び122Cにおいて維持される。各ボリュームは、メタデータはもちろんデータを含む。さらに、ボリューム121Bは、メタデータはもちろんデータの2つの異なるクラスを含むことを見ることができる。データ及びメタデータの異なる複数のクラスは、異なる複数のSLOを有するため、異なる種類の複数の領域に格納される。複数の管理者は、データ管理ソフトウェア(当該ソフトウェアの詳細は本明細書に紹介される複数の技術に密接には関係しない)における複数のオプションを用いて、複数のデータセットに対するそれらの複数の選択を示すことができる。これらの選択は、特定のボリューム121A、121B、及び121C及びそれらの中の複数のデータオブジェクトに対する複数の目的(複数の期待値)に変換され、最終的には異なるデータ及び複数のメタデータエクステントに対する複数の目的に変換される。領域レベル52において、複数のエクステントの性能、空間効率、及び信頼性に関する全ての目的はエクステントのSLOを介して伝達される。
図6を再び参照すれば、システムは異なる複数のボリュームの種類についても可能である。全てのデータ及びメタデータは、複数のファイルに格納され、各ファイルはファイルのiノード(iNode)(主にメタデータコンテナ)をルート(Root)とする複数のエクステントのツリーである。iノードそれ自身は、分離したiノードファイルの複数のデータエクステントに格納可能である。
以下により詳細に説明するように、メタデータの複数のSLOは、ボリュームがボリュームレベルの複数のメタデータブロックなどの、高いレベルのメタデータを特別に取り扱うことを可能にする。システムは、アグリゲートを起動するに必要とされる高いレベルのメタデータを、特別な目的の複数の領域に格納することができ、高速起動、引き継ぎ、及び高いレベルの修復を可能にする。クリティカルなメタデータを高いレベルのRAID冗長性を有するストレージに格納することによって、システムは、ダウンタイムに関連する修復のための危急(Exposure)を低減できる。
全ての層の階層構造の一例が図11に示される。RAIDシステムモジュール480は、複数のHDD及び複数のSSDの複数のスライスを仮想化された複数のRAIDグループに組み立てられており、そのような複数のRAIDグループはアグリゲートに組み立てられている。スラブ割り当て層53は、複数のスラブにカットする複数のブロックの大きな複数の配列127として、これらの複数のパリティグループを監視する。ここで、システムは、複数のパリティグループ123が複数のスラブ124にスライスされており、そのような複数のスラブ124のいくつかは2つの領域125に割り当てられている。2つの領域125は、それらの上の2つのボリューム126からデータ(複数のエクステント)の異なる複数のクラスを保持している。最後に、複数のボリューム126におけるデータは、CFインタフェース440bを介してエクスポートされる(図4)。
データコンテナへのアクセスパスは、従来のファイルシステムにおけるそれと類似であることができる。例えば、各コンテナはその一意的なIDによって、ストレージクラスタにおいて同一視可能である。複数のN−モジュール214は、システムワイドマップ(System−Wide Map)(例えば、VLDB)に格納されるコンテナの一意的なIDを用いて、データを、適切なD−モジュール216に送る。
IV.RAID/ストレージマネージャインタフェース
1つの実施形態において、RAID層(より具体的にはRAIDシステムモジュール480)は、その複数のパリティグループのリストを、ストレージマネージャ460に伝える。各パリティグループに対して、RAID層は、複数のパリティグループの幅のストレージマネージャ460を通知する。ここで、複数のパリティグループの幅はすなわち、データを保持できる異なる複数の装置にマップされるスライスの数、ブロックの数、ブロックサイズ、物理的装置(例えば、HDD、SSD)の種類、及び可能性のある部分種類(サブタイプ、subtype)(例えば、RPM、内部トラックなど)である。一般的に、RAIDグループ又はアグリゲート内の複数のパリティグループの間で極めて多くの共通点があるため、これは単一の種類のフィールド及びテーブルルックアップを用いて達成可能である。システムは、3つ組(パリティグループID、スライス番号、ブロックオフセット)を用いてRAIDに書き込まれている複数のブロックをタグ付けできる。
V.スラブ
上述のように、スラブ割り当て層53は、RAIDによって供給される複数のパリティグループをとり、それらを、パリティグループのより大きな配列から割り当てられる複数のブロックの、より小さなサブアレイ(Subarray)である、複数のスラブに区分けする。複数のスラブは、それらのパリティグループから、それらの性能及び信頼性の複数の特徴を継承する。それらは、複数のパリティストライプの範囲としてわりあてられるため、パリティグループ上の全てのスラブの幅はグループ内で一様である。スラブ割り当てにおける自由度は、スラブにおけるストライプの数である。複数のスラブは、標準的なサイズの範囲において生成されることができ、必要に応じて細分又は結合されることができる。回転する媒体(例えば、複数のHDD)上で、最小のスラブの長さは、トラックサイズの小さな倍数に近づくように選ばれても良く、また、複数のSSD又はストレージに付加されたフラッシュ上で、最小のスラブの長さは、例えば削除ブロックの長さであってもよい。
VI.領域
複数の領域は、複数のスラブの集合を使用して参照回数データの複数の論理エクステントを保持する、仮想的な(論理的な)複数のストレージコンテナである。領域は、それに割り当てられる各スラブの少なくともいくつかの物理的及び信頼性の複数の特性を「知る」であろう。当該複数の特性は以下を含む:
−そのような種類のスラブが逐次I/O及びランダムI/Oに対してどの程度効率的か(これはシステムがHDDからフラッシュを区別できる1つの方法である。)。
−アイドルI/Oサイズ(例えば、複数のディスクスラブに対する、より下層のディスクのトラックサイズ)。
−並列性、すなわち、スラブを作り上げる異なる複数の装置の数。RAIDに対しては、これはデータ装置の数となる。
−スラブに対応する信頼性レベル情報(例えば、より下層の複数のストレージブロックに共通に供給されるパリティに基づく保護機構)。
VII.エクステント
(ボリューム内の)ファイルは1つ又はそれ以上の異なる複数の領域内に含まれる1つ又はそれ以上のエクステントから作り上げられる。エクステントはデータの論理的な1片(A Logical Piece Of Data)である。異なる複数のエクステントは異なる複数のサイズであることができる。1つの実施形態において、複数のエクステントは相対的に大きく、例えば、数10MBのオーダーであることができる。各エクステントに対して、領域はまた、(iノードに類似する)エクステントに関するメタデータの集合である「エクステント記述子」を格納する。エクステント記述子は、それが生成されたときエクステントのサイズなどの情報を保つこととなり、また、そのSLOを保つこととなる。エクステント記述子はまた、エクステントにおける複数の論理アドレスから、領域によって管理されるストレージにおける複数の物理アドレスに変換するために、領域レイアウトマネージャ73によって使用される。これは、従来のブロック指向の複数のファイルシステムによって使用されるツリーに類似するバッファツリーを使用することによって行われる。
図12〜図14を参照して説明される複数の技術を実施可能な、上述の内部機能性(Internal Functionality)及び例示のシステムのアーキテクチャについて以下説明する。上に示すように、上記のシステムアーキテクチャ及び機能性は例示であり、異なる複数のアーキテクチャ及び内部の複数の機能性を有する他の複数のシステムはまた、物理的ストレージから論理ストレージへの階層性(図12を参照してさらに以下で説明される一般的なアーキテクチャなど)の全体が維持される限り、以下の節で説明される複数の技術を実施するために使用されてもよい。
IX.信頼性SLOsに基づいた物理的ストレージブロックの割り当て
上述のように、本明細書において説明したシステムは、より高いレベルの論理データ(例えば、ボリュームレベルデータ)と関連する信頼性情報に従って、物理層(例えば、RAID層)におけるデータ割り当てを動的に管理することができる。ここでの主要な原理は、「サービスレベルのストレージシステム」の実施を目指して、システムは、例えば、複数のSLOを使用して、特定の論理要素(例えば、ボリューム、ファイル、ディレクトリなど)を割り当てるために要求される信頼性の種類を決定して、次いで、信頼性に基づいて、論理要素のために、複数の物理的データストレージブロックを割り当てることができる。
複数の実施形態において、システムは、論理要素と関連する信頼性数値に基づいて、論理要素に対応するデータを特定のパリティグループに割り当てる。例えば、複数のSLOは、重要なプロジェクト作業空間(例えば、企業の重要な従業員プロファイル管理プロジェクトに対応するディレクトリ又はボリューム)を表現する複数の論理要素のための高い信頼性要求、及び非重要な及び一時的な複数のストレージ領域(例えば複数の一時的なファイルのための「スクラッチ」空間として指定されるディレクトリ)を表す論理要素のための低い信頼性要求を定義してもよい。システムは、複数の実施形態において、複数の信頼性定義に基づいて、各論理要素に対して、複数の物理的ストレージブロックを割り当てる。例えば、プロジェクト作業空間に対応するデータは、例えば高い保護レベル(例えば、RAID−DP)を有するパリティグループから複数の物理的ストレージブロックに割り当てられる。スクラッチ空間に対応するデータは、例えばより低い保護レベル(例えば、RAID−1)を有するパリティグループから、複数の物理的ストレージブロックに割り当てられる。
特に、割り当てに基づいたそのような信頼性SLOは、システムに効率的な複数のデータ操作を遂行させることを可能にする。例えば、システムは、種々のパリティグループと関連する信頼性レベルに基づいて、バックグラウンドの複数のメンテナンス操作(例えばディスクの一貫性検査)の実行に優先順位を付ける。例示の実施形態において、種々のパリティグループの信頼性レベルは、複数のパリティグループと関連するメタデータ内で符号化される。所与の物理的ストレージ要素上のバックグラウンドメンテナンス操作の実行に先立ち、システムは、物理的ストレージ要素が参加する複数のパリティグループのリストを回復(Retrive)し、複数のパリティグループと関連する複数の信頼性レベルに従ってリストを順序づける。従って、システムは、順序づけられたリストに従って複数の操作に優先順位を付ける。優先順位が付けられた操作の1つの実施例において、システムは高い複数の信頼性数値を有する複数のパリティグループ(例えば、複数のパリティグループに備えられる複数のストレージブロック)に対してより頻度の高い複数のバックグラウンドメンテナンス操作を実行してもよく、また、より低い複数の信頼性数値を有する複数のパリティグループに対して不定期の複数のバックグラウンドメンテナンス操作を実行してもよい。このように、システムの複数のリソースは、全ての複数のパリティグループにわたって複数のリソースを一様に消費するかわりに、重要な複数のブロック上の複数のメンテナンス操作の遂行においてより効率的に自由に使用できる。
そのような信頼性SLOに基づく複数のデータ操作のもう1つの実施形態において、システムは、複数の信頼性レベル又はシステムの種々のパリティグループと関連する複数の値に基づいて、障害がある複数の物理的ストレージ要素(例えば、障害があるドライブ)の再構築に優先順位を付ける。例えば、障害があるドライブを検出すると、システムは、ドライブが参加する複数のパリティグループのリストを識別して、それらの対応する複数の信頼性数値に従って複数のパリティグループを順序づける。最も高い複数の信頼性数値を有する複数のパリティグループにおける複数のストレージブロックはまず再構築される。残っている複数のパリティグループは、複数の信頼性数値に基づいて、優先順位が付けられた順序に従って再構築される。いくつかの例において、再構築はまた、高い信頼性の複数のパリティグループがまず再構築されるように、かつ、低い信頼性の複数のパリティグループがシステムの複数のアイドル時間の間に再構築のためにスケジュールされるように、動的にスケジュールされてもよい。
(例えば、複数の論理要素に対応する複数の信頼性SLOターゲットに従って、)複数のパリティグループに付加される複数の信頼性レベルに基づいた、複数の操作のそのような信頼性に基づく優先順位が付けられた実行は、複数の物理的ストレージブロックに関連する他の複数のデータ操作(例えば、スナップショット作成、データ重複排除、又は当業者によって理解されるような他のそのような複数の操作)に拡張されてもよいことが理解される。上記の信頼性に基づく複数の操作はさらに、図12を参照して以下に説明される。
図12は、複数の論理要素と関連する複数の信頼性数値に従った物理的ストレージ割り当ての例を示す。図12は、ストレージシステムの複数の論理要素と対応する複数の物理的ストレージ要素との間の相互作用を示す、システムアーキテクチャの高いレベルの例示を表す。非限定的な実施例に関して、図5〜11を参照して説明された上述の例示的なアーキテクチャは、論理要素から複数の物理的ストレージブロックへ信頼性情報がどのように中継されるかを説明するために用いられる。
システムはまず、信頼性数値情報を、論理層における要素(例えばボリューム1202)に付加する。複数の実施形態において、信頼性数値情報は、論理要素に付加されるメタデータとともに格納される。信頼性数値はいくつかの方法のうちの1つの方法で割り振られてもよい。1つの実施形態において、信頼性数値は、ブロック1232において示すように、複数のストレージSLOによって確立される複数の目的又は複数のターゲットに基づいて決定される。多数の異なる特性が複数のストレージSLOに保存(キャプチャー、capture)される間(例えば、遅延、スループット、信頼性、可用性など)、説明を簡単にするために、以下の説明は複数の信頼性SLOのみをカバーする。SLOはキーと値の対(Key−Value Pair)として実施される。複数のSLOは、特有のデータ−種類に基づいて、又はデータが格納された場所に基づいて、複数の信頼性数値を表現する。例えば、複数のSLOは、「ゴールド」の信頼性基準として複数のプロジェクト空間又は複数の作業ディレクトリに格納されるデータを定義してもよく、また、「ブロンズ」の信頼性基準として一時的な「スクラッチ(Scratch)」空間に格納されるデータを定義してもよい。変形例として、又はそのような複数の基準に加えて、複数のSLOは、複数のボリュームに格納される複数のボリュームあるいは論理的データ(例えば、複数のファイル、複数のディレクトリなど)のユーザによって割り振られた複数の設定に基づいて複数のボリュームの順位付けを定義してもよい。1つの実施形態において、従って、ストレージSLOは、ストレージシステムの各高いレベルの論理要素(例えばボリューム1202)に対して、信頼性レベルを割り振る。SLOによって示される信頼性数値は、格納されるか、高いレベルの論理要素1202のメタデータに付加される。
複数の実施形態において、複数の信頼性数値は、図12のブロック1234に示すようなストレージシステムのユーザから受信される複数の入力に基づいて、高いレベルの論理要素1202に割り振られてもよい。複数の例において、種々のタスク又は複数のユーザに対して種々の論理要素を確立する又は割り当てる管理者は、複数の信頼性数値を、複数の論理要素の各々に、断定的に(無条件に、categorically)割り振ってもよい。例えば、管理者は、複数の信頼性数値として順々に格納されてゆく複数のSLO入力の形式における複数の値を、複数の論理要素のメタデータに割り振ってもよい。複数の例において、管理者は構成されている論理要素の種類を参照して、論理要素と関連するデータの種類に従って信頼性数値を割り振ってもよい。例えば、管理者は、従業員の給与記録を維持するための新しいプロジェクトのためにボリューム1204を作成(立ち上げ、establish)してもよい。そのようなボリュームに格納されるべきデータの重要性を考慮すると、管理者は、「ゴールド」の信頼性数値をボリュームに割り振ってもよく、そのような信頼性数値はボリューム1204のメタデータに付加されるに至る。複数の実施例において、管理者は、ストレージシステムのユーザインタフェースを用いてそのような信頼性数値の割り振りを完遂してもよい。そのようなインタフェースは、ストレージシステムの例えばM−ホスト218によって与えられてもよい。
他の複数の実施形態において、複数の信頼性数値は、ブロック1236に示すように、ボリュームに格納されているデータの種類に基づいて、ボリュームに自動的に割り振られてもよい。さらに、このことは複数のストレージSLOと連動して、又はユーザによって提供される複数の入力の手段によって完遂されてもよい。例えば、ストレージシステムは、論理要素(例えば、ボリューム1206)を作る(立ち上げる、establishing)とき、要素に格納されるデータの種類を決定する。データの種類は例えば供給される可能性がある情報に基づいて決定されてもよく、要求はエンティティ(Entity)を生成するために受信される。データの種類に基づいて、システムは、複数のストレージSLOによって提供される情報を調べてもよく、又は、論理要素(例えば、ボリューム1206)に付加されるべき信頼性数値を決定するためにユーザによって提供される入力を調べてもよい。
上述の機構(Mechanism)のうちの1つを用いて、複数の信頼性数値は高いレベルの複数の論理要素に付加される。図12の例において、ボリューム1202及び204は、「ゴールド」基準の複数の信頼性数値が割り振られる。なぜならば、それらはそれぞれ、プロジェクト作業空間又はユーザの個人的な作業空間に関するデータを格納するために使用されるためにあるからである。スクラッチ空間として指定されるボリューム1206は、「ブロンズ」基準の信頼性数値が割り振られる。結果として生じる複数の物理的ストレージブロックの割り当ては今、複数の論理要素に割り振られる複数の信頼性数値に基づく。高いレベルでは、各論理要素からのデータは、複数の信頼性レベルに基づいて、特有のパリティグループから選択される複数の物理的ストレージブロックに割り振られる。例えば、それらの「ゴールド」の複数の信頼性数値を有するボリューム1202及び1204は、高い信頼性係数を有するパリティグループから複数のストレージブロックに割り振られる。1つの実施形態において、信頼性係数は、パリティグループが示される保護レベルの機能である。従って、ボリューム1202及び1204に対応するデータは、例えば、二重パリティ(例えば、RAID−DPパリティグループ)又は他のそのような高い複数の保護特性を有するパリティグループ1から選択される複数の物理的ストレージブロックに割り当てられる。ボリューム1206は、より低い複数の保護特性(例えば、RAID0パリティグループ)を有するパリティグループ3から複数の物理的ストレージブロックに順々に割り当てられてもよい。
複数の実施形態において、信頼性数値は、複数のパリティグループから選択される複数の物理的ストレージブロックに格納されるデータに基づいて、複数のパリティグループに伝搬される。これを説明するために、「ゴールド」の信頼性数値に対応するデータを格納する複数の物理的ストレージブロックは、上述の例においてパリティグループ1から選択される。従って、「ゴールド」基準の信頼性数値は、パリティグループ1に付加される。1つの実施形態において、そのような信頼性数値情報は、パリティグループと関連するメタデータに付加されてもよい。この方法において、論理要素から複数のパリティグループに伝搬される複数の信頼性数値の効力によって、複数の信頼性数値は、複数のパリティグループに明確に付加される。複数の実施形態において、複数の信頼性数値はまた、各パリティグループに固有の個別の複数のストレージ装置(例えば、複数のストレージディスク)に付加されてもよい。
信頼性情報が論理要素から複数の物理的ストレージブロックに伝搬されてもよいことによる例示の方法は、図5〜図11を参照して上述した例示的なアーキテクチャを参照して説明される。複数の信頼性数値はまず、ボリューム層51における個別の複数のボリューム58に割り振られて付加される。1つの実施形態において、そのような複数の信頼性数値は、複数のボリューム58と関連するメタデータに付加される。ボリューム層51はまた、個別の複数のボリューム58の個別の複数の領域57へのマッピング(Mapping)及び複数の論理エクステント59の各領域57内への位置付け(Placing)に加えて、ボリュームレベルの複数の信頼性数値を、複数のボリューム58の対応する複数の領域57に変換(Translate)する。各領域の信頼性数値は基本的に、領域が対応するボリュームと同一である。複数の実施形態において、信頼性情報は、各領域と関連するメタデータに格納され、また、複数の領域によって定義される複数の論理エクステントに付加される。複数の領域57が、アグリゲート層53から複数のスラブ56を取得することによってストレージを分配する場合、システムは、複数のストレージSLOに関連するある複数の属性に基づいて、複数のスラブ56を選択する。例えば、複数のスラブ56と関連するメタデータは、複数のスラブに特有の複数のストレージブロックの複数の属性を特定する。複数の属性は、例えば、装置の種類(例えば、SSD、大容量SATAドライブ等)、複数のI/O帯域幅仕様、保護レベル(RAID−0、RAID−1、RAID−DP等)、及び他のそのような複数のパラメータなどの複数の属性を特定してもよい。本明細書において説明されるシステムは保護レベル属性に焦点を合わせて、選択される(複数の)スラブに対応するボリュームに対して指定される信頼性レベルと同程度の保護レベルを有するスラブを選択する。例えば、「RAID−DP」保護レベル属性を有するスラブは、(「ゴールド」の信頼性数値を有する)ボリューム1206に対して選択される。複数の実施形態において、システムは、特有の複数のスラブの選択の決定において、保護レベル属性に加えて他の複数の属性(例えば、ディスクの種類)を考慮してもよい。
(少なくとも保護レベル属性に基づいた)複数のスラブの選択は、システムが、選択される複数のスラブの保護レベル属性に対応するパリティグループから、複数の物理的ストレージ装置を選択することを、効率的に可能にする。例えば、保護レベル属性「RAID−DP」を有するスラブは、RAID−DP保護レベルを有する複数の物理的ストレージブロックを備える。いくつかの実施例において保護レベル属性「RAID−DP」とディスクの種類の属性「SSD」とを有するスラブが選択されるとき、そのようなスラブは両方の属性を満たす複数の物理的ストレージブロックを備えるであろう。従って、この方法において、保護レベル属性の選択は、特定のパリティグループからの複数の物理的ストレージ装置の選択を決定づける。システムは、論理要素(例えば、ボリューム層51からのボリューム)に対応するデータを、(例えば、論理要素と関連するSLO信頼性数値に基づく)特定のパリティグループから選択される複数の物理的ストレージブロックに格納する。
上述のように、信頼性数値に基づいた複数のパリティグループの割り当てに加えて、システムはまた、論理要素の信頼性数値を、複数の物理的ストレージブロックが選択されるパリティグループと、その上複数の物理的ストレージユニットとの両方に符号化(エンコード、Encode)する。この方法において、信頼性情報は、ストレージシステムのより低い複数のレベル(例えばRAID層レベル54)において伝搬されて明確に符号化される。この明確な信頼性情報を使用することによって、より低い複数のレベルのストレージシステムは、例えば一貫性検査、バックアップ、複数の再構築スケジュールなどの、複数のデータ操作を、効率的に最適化できる。
図13は今、複数の論理データ要素と関連する複数の信頼性数値に基づいた複数の物理的ストレージブロックの割り当ての処理を説明する。ステップ1302において、システムは論理コンテナ(例えば、ボリューム)をまず識別する。当該論理コンテナは、複数の物理的ストレージブロックが割り当てられる必要があるものである。ステップ1304において、システムは、(例えば、事前のユーザ設定に基づいて、前回適用された複数のルールに基づいてなどして、)論理コンテナが関連した信頼性数値を既に有するか否かを識別する。例えば、システムは、論理コンテナと関連するメタデータの問い合せ(クエリ、query)を行って、信頼性数値が存在するか否かを決定してもよい。そのような信頼性数値が存在しないとき、ステップ1306において、システムは、信頼性数値を識別して論理コンテナに対して割り振る。上述のように、システムは、信頼性SLOの複数の目的に基づいて、又はユーザ入力に基づいて、又はコンテナが格納のために既に設定されている又は設定されている可能性があるデータの種類に基づいて、論理コンテナに対する信頼性数値を識別してもよい。
処理は次いでステップ1308に戻り、ここでは、システムは、(物理的ストレージ要素の層における)特定のパリティグループを識別する。当該特定のパリティグループは、当該特定のパリティグループから複数の物理的ストレージブロックが選択されるべきものである。複数の実施形態において、システムは、論理要素と関連する信頼性レベルに基づいて、そのようなパリティグループを選択する。例えば、RAID−DPパリティグループは、「ゴールド」の信頼性数値を有する論理コンテナに対して選択され、RAID0パリティグループは、「ブロンズ」の信頼性数値を有する論理コンテナに対して選択される。特定のパリティグループの選択の後、処理はステップ1310に進み、ここでは、論理コンテナに対応するデータは、選択されるパリティグループ内の複数の物理的ストレージブロックに割り当てられる。さらに、ステップ1312において、システムは、信頼性数値を、パリティグループと関連するメタデータに付加する。加えて、いくつかの実施例において、システムはまた、信頼性数値を、論理要素と関連する情報を格納する個別の複数の物理的ストレージユニットに付加する。
上述のように、この方法における複数の物理的ストレージブロックの割り当ては、いくつかの利点を有する。例えば、システムは今、複数のパリティグループの複数の信頼性数値に基づいて、優先順位がつけられた順序で、複数のデータ操作(例えば、複数のメンテナンス操作、複数のバックアップ操作、複数の再構築操作など)を遂行する能力を有する。図14は今、システムがそのような優先順位が付けられた複数のデータ操作を遂行する例示的な処理を示す。ステップ1402において、システムは、複数の物理的ストレージユニットに関する、又は物理的データ要素(例えば障害があるドライブ)全体さえにも関する、データ操作を遂行する(例えば、ユーザ入力としての、システム発信のコマンドとしての、中断操作としての、障害復旧操作としての、などの)要求を受信する。
要求の受信に応答して、処理はステップ1404に進み、ここでは、システムは、複数の物理的格納ユニット又は物理的データ要素が参加する複数のパリティグループのリストを識別する。その後、ステップ1406において、システムは、複数のパリティグループが関連する信頼性数値情報を有するか否かを、(例えば、複数のパリティグループと関連するメタデータを解析することによって)決定する。そのような情報が利用可能でないとき、ステップ1408で示されるように、処理はステップ1410に移り、ここでは、システムは、ストレージ階層を横断(Traversing)することによって、複数のパリティグループと関連する信頼性数値を識別する。例えば、システムは、複数のパリティグループが付加される複数のスラブと関連するメタデータの問合せを行って、信頼性数値を決定する。これが成功しない場合、システムは、例えばボリューム層まで全てにわたってチェインを横断して、論理要素と関連する信頼性数値を識別する。システムは、関連する複数のパリティグループへの識別された信頼性数値を特定して、次いで、プロセスはステップ1412に移る。
ステップ1412において、複数のパリティグループの優先順位が付けられた/順序づけられたリストを生成するために、複数のパリティグループのリストはソートされる。例示の実施例において、順序づけられたリストは最初に、「ゴールド」の複数の信頼性数値を有する全ての複数のパリティグループを示し、次いで、「シルバー」の複数のパリティグループ、そして最後に「ブロンズ」複数の信頼性数値を示す。最後に、ステップ1414において、システムは、優先順位が付けられたリストに従って、複数の物理的ストレージユニットに対してデータ操作を遂行する。例えば、データ操作は最初に、「ゴールド」に格付けされた複数のパリティグループに属する複数の物理的ストレージユニットに対して遂行される。処理は次いで、「シルバー」に格付けされた複数のパリティグループに属する複数の物理的ストレージユニットに対して遂行され、以下そのように処理が遂行される。データ操作はまた、複数のデータ操作の効率をさらに高めるために、複数のユーザ設定に基づいて、交互に又は選択的に行われてもよい。例えば、障害があるドライブの復旧の間に、「ゴールド」の複数のパリティグループに対応する複数の物理的ストレージユニットは、高い複数の信頼性要求を有する情報へのデータアクセスの衝突を避けるように、明確に再構築されてもよい。しかしながら、「ブロンズ」の複数のパリティグループに属する複数の物理的ストレージユニットの再構築は無期限に押し出されてもよく、又はシステムのアイドルサイクルの間のみに遂行されてもよい。この方法において、信頼性及び効率の両方の目的は、高い信頼性データが複数のデータ操作に対して優先順位を付けることを確実にすることに適合するが、低い信頼性の範囲に対する潜在的に高い性能の複数の操作はアイドルサイクルから押し出される。
上述の複数の技術は、ソフトウェア及び/又はファームウェアによってプログラムされ又は構成されたプログラム可能な回路によって、又は特定用途の回路によって、又はそれらの形式の組み合わせによって、実施可能である。そのような特定用途の回路は(もしあれば)、例えば、1つ又はそれ以上のアプリケーション特定用途集積回路(Application Specific Integrated Circuits、ASICs)、プログラム可能論理回路(Programmable Logic Devices、PLDs)、フィールドプログラマブルゲートアレイ(Field−Programmable Gate Array、FPGAs)などの、任意の形式であることができる。
本明細書において説明する複数の技術を実施するためのソフトウェア又はファームウェアは、機械により読み取り可能な媒体(Machine−Readable Medium)上に格納されてもよく、また、1つ又はそれ以上の一般的な目的又は特定の目的の複数のプログラム可能マイクロプロセッサによって実行されてもよい。本明細書において用いられる用語「機械により読み取り可能な媒体」は、機械(例えば、コンピュータネットワーク装置、携帯電話(Cellular Phone)、個人用デジタル補助装置(Personal Digital Assistant、PDA)、製造装置(Manufacturing Tool)、1つ又はそれ以上のプロセッサを有する任意の装置など)によってアクセス可能な形式の情報を格納可能な任意の機構を含む。例えば、機械によりアクセス可能な媒体(Machine−Accessible Medium)は、記録可能媒体/記録不可能媒体(例えば、リードオンリーメモリ(Read−Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスクス記録媒体(Magnetic Disk Storage Media)、光記録媒体(Optical Storage Media)、複数のフラッシュメモリ装置(Flash Memory Devices))などを含む。
本明細書において用いられる用語「論理」は、例えば、特定の目的の配線で接続された回路(ハードワイヤード回路(Hardwired Circuitry))、プログラム可能回路(Programmable Circuitry)とともに使用されるソフトウェア及び/又はファームウェア、又はそれらの組み合わせを含むことができる。
本発明は特定の例示的な複数の実施形態を参照して説明されたが、本発明は説明された複数の実施形態に限定されずに、添付の特許請求の範囲の精神の範囲内の修正及び変更を有して実施可能であるということが認識されるであろう。従って、明細書及び図面は、限定的意味よりもむしろ、例示的な意味において考慮されるべきものである。
この出願は2011年4月13日付けで提出された米国出願番号13/086,267の優先権を主張し、その内容は参照によって本明細書に組み込まれる。

Claims (26)

  1. データストレージシステムのサーバが実行する方法であって、
    データストレージシステムにおいて、データの重要度に対応する信頼性数値をデータの複数の論理コンテナの各々に割り振るステップであって、前記論理コンテナは物理的ストレージ装置のブロックに関連付けられる論理的な単位を表す、ステップと、
    前記データの複数の論理コンテナの各々に対して、データを格納するための複数の物理的ストレージ装置のブロックを割り当てるステップであって、複数の物理的ストレージ装置の当該ブロックは複数の物理的ストレージ装置の複数のパリティグループのうちの特定のパリティグループから選択され、複数の物理的ストレージ装置の所与のブロックに対する前記特定のパリティグループは、複数の物理的ストレージ装置の前記所与のブロックに対応するデータの論理コンテナと関連付けられた前記信頼性数値に従って選択される、ステップと、
    複数のパリティグループ信頼性数値のうちの特定の1つを、前記複数のパリティグループの各々に割り振るステップであって、所与のパリティグループに割り振られる特定のパリティグループ信頼性数値は、前記所与のパリティグループにおける複数の物理的ストレージ装置の1つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す、ステップと、
    を備える方法。
  2. 前記信頼性数値を、前記データストレージシステムと関連付けられたサービスレベル目標(SLO)に基づいて、前記データの複数の論理コンテナの各々に割り振るステップをさらに備える請求項1記載の方法。
  3. 前記データの複数の論理コンテナのうちの論理コンテナに対して、前記データの論理コンテナと関連付けられたデータの重要度に基づいて、特定の信頼性数値を、前記データの論理コンテナに割り振るステップをさらに備える請求項1記載の方法。
  4. 前記データの複数の論理コンテナのうちの論理コンテナに対して、前記データストレージシステムのインタフェースを介してユーザにより提供される入力に基づいて、特定の信頼性数値を、前記データの論理コンテナに割り振るステップをさらに備える請求項1記載の方法。
  5. データの論理コンテナと関連付けられた前記信頼性数値、前記データの論理コンテナと関連付けられたメタデータに加えられる、請求項1記載の方法。
  6. 前記データストレージシステムにおいて、前記データストレージシステムの複数の物理的ストレージ装置の前記複数のブロックに対応する前記複数の物理的ストレージ装置のうちの少なくとも1つに対してメンテナンスの操作を遂行する要求を受信するステップと、
    優先順位がつけられた順序に従って前記少なくとも1つの物理的ストレージ装置の各々に対して前記操作を遂行するステップであって、前記優先順位がつけられた順序は前記少なくとも1つの物理的ストレージ装置に対応する前記複数のパリティグループに割り振られた前記複数のパリティグループ信頼性数値に基づいて決定される、ステップと、
    をさらに備える請求項1記載の方法。
  7. 前記操作は、前記少なくとも1つの物理的ストレージ装置に関連するバックグランドのメンテナンスの操作である請求項6記載の方法。
  8. 前記操作は、前記少なくとも1つの物理的ストレージ装置の障害後再構築である請求項6記載の方法。
  9. 各パリティグループの前記割り振られるパリティグループ信頼性数値、前記パリティグループと関連付けられたメタデータに加えられる、請求項1記載の方法。
  10. データを格納するための複数の物理的ストレージ装置を有するデータストレージシステムにおいて、データの重要度に対応する複数の信頼性数値うちの1つを複数の物理的ストレージ装置の複数のパリティグループの各々に割り振るステップであって、所与のパリティグループに割り振られる特定の信頼性数値は、前記所与のパリティグループに含まれる複数の物理的ストレージ装置の1つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す、ステップと、
    前記データストレージシステムにおいて、前記データストレージシステムの前記複数の物理的ストレージ装置のうちの少なくとも1つに対してメンテナンスの操作を遂行する要求を受信するステップと、
    前記少なくとも1つの物理的ストレージ装置と関連付けられた前記複数のパリティグループに割り振られた前記複数の信頼性数値に基づいて決定される優先順位がつけられた順序に従って、前記少なくとも1つの物理的ストレージ装置の各々に対して前記操作を遂行するステップと、
    を備える方法。
  11. 前記操作は、最も高い信頼性数値を有するパリティグループに属する1つ又は複数の物理的ストレージ装置に対してまず遂行される、
    請求項10記載の方法。
  12. 複数の物理的ストレージ装置の前記1つ又は複数のブロックの各々は、データの特定の論理コンテナに対応し、
    複数の物理的ストレージ装置の前記1つ又は複数のブロックの各々と関連付けられた前記信頼性数値は、データの対応する論理コンテナと関連付けられた論理コンテナ信頼性数値に基づく、
    請求項10記載の方法。
  13. 前記データストレージシステムと関連付けられたサービスレベル目標(SLO)に基づいて、特定の論理コンテナ信頼性数値をデータの各論理コンテナに割り振るステップをさらに備える請求項12記載の方法。
  14. 前記データの所与の論理コンテナと関連付けられたデータの重要度に基づいて、特定の論理コンテナ信頼性数値を、データの所与の論理コンテナに割り振るステップをさらに備える請求項12記載の方法。
  15. 前記データストレージシステムの管理コンソールを介してユーザにより提供される入力に基づいて、特定の論理コンテナ信頼性数値を、データの所与の論理コンテナに割り振るステップをさらに備える請求項12記載の方法。
  16. 前記操作は、前記少なくとも1つの物理的ストレージ装置に関するバックグランドのメンテナンスの操作である請求項10記載の方法。
  17. 前記操作は、前記少なくとも1つの物理的ストレージ装置の障害後再構築である請求項10記載の方法。
  18. ネットワークを介して複数のネットワークストレージクライアントが通信する場合に当該通信が経由するネットワークアダプタと、
    不揮発性大容量ストレージサブシステムにアクセスする場合に当該アクセスが経由するストレージアダプタと、
    前記ネットワークアダプタ及び前記ストレージアダプタと結合されるプロセッサと、を備え、
    前記プロセッサは、
    データの重要度に対応する信頼性数値をデータの複数の論理コンテナの各々に割り振ることであって、前記論理コンテナは物理的ストレージ装置のブロックに関連付けられる論理的な単位を表すこと;
    前記データの複数の論理コンテナの各々に対して、データを格納するための複数の物理的ストレージ装置のブロックを割り当てること;及び
    複数のパリティグループ信頼性数値のうちの特定の1つを前記複数のパリティグループの各々に割り振ること;を行うように構成され、
    複数の物理的ストレージ装置の前記ブロックは、複数の物理的ストレージの複数のパリティグループのうちの特定のパリティグループから選択され、複数の物理的ストレージ装置の所与のブロックに対する前記特定のパリティグループは、複数の物理的ストレージ装置の前記所与のブロックに対応するデータの論理コンテナと関連付けられた前記信頼性数値に従って選択され、
    所与のパリティグループに割り振られる特定のパリティグループ信頼性数値は、前記所与のパリティグループに含まれる複数の物理的ストレージ装置の1つ又は複数のブロックと関連付けられた、対応する信頼性数値を示す
    ットワークストレージサーバ。
  19. 前記信頼性数値は、前記不揮発性大容量ストレージサブシステムと関連付けられたサービスレベル目標(SLO)に基づいて、前記データの複数の論理コンテナの各々に割り振られる請求項18記載のネットワークストレージサーバ。
  20. 特定の信頼性数値は、前記データの所与の論理コンテナと関連付けられたデータの重要度に基づいて、データの所与の論理コンテナに割り振られる請求項18記載のネットワークストレージサーバ。
  21. 特定の信頼性数値は、前記ネットワークストレージサーバの管理コンソールを介してユーザにより提供される入力に基づいて、データの所与の論理コンテナに割り振られる請求項18記載のネットワークストレージサーバ。
  22. データの所与の論理コンテナと関連付けられた前記信頼性数値は、前記データの所与の論理コンテナと関連付けられたメタデータコンテナに格納される請求項18記載のネットワークストレージサーバ。
  23. 前記プロセッサは、さらに、
    前記ネットワークストレージサーバの複数の物理的ストレージ装置の前記複数のブロックに対応する複数の物理的ストレージ装置のうちの少なくとも1つに対するメンテナンスの操作を遂行する要求を受信し、
    優先順位がつけられた順序に従って、前記少なくとも1つの物理的ストレージ装置の各々に対して前記操作を遂行し、前記優先順位がつけられた順序は、前記少なくとも1つの物理的ストレージ装置に対応する前記複数のパリティグループに割り振られる前記複数のパリティグループ信頼性数値に基づいて決定されるように構成された請求項18記載のネットワークストレージサーバ。
  24. 前記操作は、
    前記少なくとも1つの物理的ストレージ装置の障害後再構築、または、
    前記少なくとも1つの物理的ストレージ装置に関連するバックグランドのメンテナンスの操作のうちの1つである請求項23記載のネットワークストレージサーバ。
  25. 請求項1ないし17のうち何れか1項に記載の方法をコンピュータに実行させるコンピュータプログラム。
  26. 請求項25に記載のコンピュータプログラムを記憶する記憶媒体。
JP2014505213A 2011-04-13 2012-04-10 データストレージシステムにおいて使用される方法及びネットワークストレージサーバ Active JP6050316B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/086,267 2011-04-13
US13/086,267 US8732518B2 (en) 2011-04-13 2011-04-13 Reliability based data allocation and recovery in a storage system
PCT/US2012/032890 WO2012142027A2 (en) 2011-04-13 2012-04-10 Reliability based data allocation and recovery in a storage system

Publications (3)

Publication Number Publication Date
JP2014517952A JP2014517952A (ja) 2014-07-24
JP2014517952A5 JP2014517952A5 (ja) 2015-04-30
JP6050316B2 true JP6050316B2 (ja) 2016-12-21

Family

ID=47007307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014505213A Active JP6050316B2 (ja) 2011-04-13 2012-04-10 データストレージシステムにおいて使用される方法及びネットワークストレージサーバ

Country Status (4)

Country Link
US (2) US8732518B2 (ja)
EP (1) EP2697719B1 (ja)
JP (1) JP6050316B2 (ja)
WO (1) WO2012142027A2 (ja)

Families Citing this family (71)

* 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
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
US12099752B2 (en) 2011-07-27 2024-09-24 Pure Storage, Inc. Error prediction based on correlation using event records
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
US9170868B2 (en) * 2011-07-27 2015-10-27 Cleversafe, Inc. Identifying an error cause within a dispersed storage network
US8856440B2 (en) * 2011-09-12 2014-10-07 Microsoft Corporation Volatile memory representation of nonvolatile storage device set
US9110851B2 (en) * 2011-09-29 2015-08-18 Oracle International Corporation System and method for persisting transaction records in a transactional middleware machine environment
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8949653B1 (en) * 2012-08-03 2015-02-03 Symantec Corporation Evaluating high-availability configuration
US20140047177A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Mirrored data storage physical entity pairing in accordance with reliability weightings
US9671962B2 (en) * 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
CN103942112B (zh) * 2013-01-22 2018-06-15 深圳市腾讯计算机系统有限公司 磁盘容错方法、装置及系统
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9477679B2 (en) 2013-09-20 2016-10-25 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems
US9411817B2 (en) 2013-09-23 2016-08-09 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems based on desired file reliability or availability
WO2015042531A1 (en) * 2013-09-20 2015-03-26 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems
GB2519815A (en) 2013-10-31 2015-05-06 Ibm Writing data cross storage devices in an erasure-coded system
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US9336091B2 (en) 2014-03-06 2016-05-10 International Business Machines Corporation Reliability enhancement in a distributed storage system
US9372767B2 (en) 2014-06-06 2016-06-21 Netapp, Inc. Recovery consumer framework
US9948525B2 (en) * 2014-07-28 2018-04-17 Hewlett Packard Enterprise Development Lp Storage unit priority based on configuration information
US9535800B1 (en) * 2014-09-30 2017-01-03 EMC IP Holding Company LLC Concurrent data recovery and input/output processing
US9454333B2 (en) 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media
JP6394315B2 (ja) 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
CN105700965A (zh) * 2014-11-26 2016-06-22 英业达科技有限公司 系统错误排除方法
US9471448B2 (en) * 2014-12-10 2016-10-18 Intel Corporation Performing an atomic write operation across multiple storage devices
JP6428231B2 (ja) 2014-12-15 2018-11-28 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
KR102297541B1 (ko) 2014-12-18 2021-09-06 삼성전자주식회사 메모리 영역의 신뢰성에 기초하여 데이터를 저장하는 저장 장치 및 스토리지 시스템
US9875037B2 (en) 2015-06-18 2018-01-23 International Business Machines Corporation Implementing multiple raid level configurations in a data storage device
US10705909B2 (en) * 2015-06-25 2020-07-07 International Business Machines Corporation File level defined de-clustered redundant array of independent storage devices solution
US10459891B2 (en) * 2015-09-30 2019-10-29 Western Digital Technologies, Inc. Replicating data across data storage devices of a logical volume
US9921914B2 (en) 2015-11-03 2018-03-20 Intel Corporation Redundant array of independent disks (RAID) write hole solutions
US9910786B2 (en) 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
JP2017091456A (ja) * 2015-11-17 2017-05-25 富士通株式会社 制御装置、制御プログラムおよび制御方法
US10275302B2 (en) 2015-12-18 2019-04-30 Microsoft Technology Licensing, Llc System reliability by prioritizing recovery of objects
US10379973B2 (en) * 2015-12-28 2019-08-13 Red Hat, Inc. Allocating storage in a distributed storage system
US9665446B1 (en) 2015-12-29 2017-05-30 International Business Machines Corporation Fully distributed intelligent rebuild
US10503413B1 (en) * 2016-06-01 2019-12-10 EMC IP Holding Company LLC Methods and apparatus for SAN having local server storage including SSD block-based storage
US10785295B2 (en) * 2016-06-30 2020-09-22 Intel Corporation Fabric encapsulated resilient storage
US10180787B2 (en) * 2017-02-09 2019-01-15 International Business Machines Corporation Dispersed storage write process with lock/persist
RU2017104408A (ru) * 2017-02-10 2018-08-14 СИГЕЙТ ТЕКНОЛОДЖИ ЭлЭлСи Составные топологии хранения данных для объектов данных
US10521143B2 (en) 2017-03-23 2019-12-31 Netapp Inc. Composite aggregate architecture
CN108733311B (zh) 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10901867B2 (en) * 2018-01-24 2021-01-26 Apple Inc. Distributed redundant storage system
CN109240817B (zh) * 2018-08-31 2021-11-02 湘潭大学 一种用于分布式系统的双目标快速优化任务调度方法
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11573708B2 (en) * 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11579771B2 (en) 2020-05-12 2023-02-14 Seagate Technology Llc Data storage layouts
US20220382649A1 (en) * 2021-05-27 2022-12-01 EMC IP Holding Company LLC Restore assistant: using augmented backup metadata for step-by-step restore guide
US11687272B2 (en) * 2021-06-25 2023-06-27 Hewlett Packard Enterprise Development Lp Method and system for dynamic topology-aware space allocation in a distributed system
US11321178B1 (en) * 2021-06-29 2022-05-03 Dell Products, L. P. Automated recovery from raid double failure
CN115061852B (zh) * 2022-08-15 2022-11-18 广东科伺智能科技有限公司 功能板卡、功能板卡的生产系统及伺服系统的使用方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170466A (en) 1989-10-10 1992-12-08 Unisys Corporation Storage/retrieval system for document
US5301350A (en) 1989-10-10 1994-04-05 Unisys Corporation Real time storage/retrieval subsystem for document processing in banking operations
US5321816A (en) 1989-10-10 1994-06-14 Unisys Corporation Local-remote apparatus with specialized image storage modules
JP3358687B2 (ja) * 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US6088693A (en) 1996-12-06 2000-07-11 International Business Machines Corporation Data management system for file and database management
US6035297A (en) 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US8234650B1 (en) * 1999-08-23 2012-07-31 Oracle America, Inc. Approach for allocating resources to an apparatus
US7463648B1 (en) * 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US6526418B1 (en) 1999-12-16 2003-02-25 Livevault Corporation Systems and methods for backing up data files
US6711558B1 (en) 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US20020174295A1 (en) * 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US7062558B2 (en) 2001-11-13 2006-06-13 Hewlett-Packard Development, L.P. Method and system for enabling resource sharing in a communication network having a plurality of application environments
JP4233900B2 (ja) 2003-03-19 2009-03-04 株式会社日立製作所 大容量記憶装置におけるデータの格納・読み出し制御
US20040243699A1 (en) * 2003-05-29 2004-12-02 Mike Koclanes Policy based management of storage resources
US7818530B2 (en) 2003-11-26 2010-10-19 Hewlett-Packard Development Company, L.P. Data management systems, articles of manufacture, and data storage methods
US7235103B2 (en) * 2004-01-13 2007-06-26 Rivin Evgeny I Artificial intervertebral disc
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
JP2006134026A (ja) * 2004-11-05 2006-05-25 Matsushita Electric Ind Co Ltd ディスクアレイ装置およびraidレベル設定方法
US7228320B2 (en) 2004-11-17 2007-06-05 Hitachi, Ltd. System and method for creating an object-level snapshot in a storage system
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US7325103B1 (en) 2005-04-19 2008-01-29 Network Appliance, Inc. Serialization of administrative operations for accessing virtual volumes
US7899795B1 (en) 2005-04-28 2011-03-01 Network Appliance, Inc. Method and system for recovering lost data volumes
US7552146B1 (en) 2005-04-28 2009-06-23 Network Appliance, Inc. Method and apparatus for offline and online consistency checking of aggregates and flexible volumes
JP2007074592A (ja) * 2005-09-09 2007-03-22 Sony Corp 画像処理装置および方法、プログラム、並びに記録媒体
US7664791B1 (en) 2005-10-26 2010-02-16 Netapp, Inc. Concurrent creation of persistent point-in-time images of multiple independent file systems
JP4749140B2 (ja) 2005-12-05 2011-08-17 株式会社日立製作所 データマイグレーション方法及びシステム
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7580956B1 (en) 2006-05-04 2009-08-25 Symantec Operating Corporation System and method for rating reliability of storage devices
US8924269B2 (en) 2006-05-13 2014-12-30 Sap Ag Consistent set of interfaces derived from a business object model
JP4992905B2 (ja) 2006-09-29 2012-08-08 富士通株式会社 サーバ配備プログラム及びサーバ配備方法
JP2008165582A (ja) 2006-12-28 2008-07-17 Hitachi Ltd 記憶システム及びデータ保証方法
JP5068081B2 (ja) 2007-01-24 2012-11-07 株式会社日立製作所 管理装置および管理方法
US8224919B2 (en) * 2007-04-04 2012-07-17 Research In Motion Limited Mobile communications system including intermediate service provider and related methods
US8006166B2 (en) * 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
EP2073120B1 (en) 2007-12-18 2017-09-27 Sound View Innovations, LLC Reliable storage of data in a distributed storage system
US8103824B2 (en) 2008-04-17 2012-01-24 International Business Machines Corporation Method for self optimizing value based data allocation across a multi-tier storage system
JP2010086424A (ja) 2008-10-01 2010-04-15 Hitachi Ltd ストレージ装置の管理装置
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
JP2010218390A (ja) * 2009-03-18 2010-09-30 Mitsubishi Electric Corp ストリーム蓄積制御装置
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US20110010445A1 (en) * 2009-07-09 2011-01-13 Hitachi Data Systems Corporation Monitoring application service level objectives
US8954892B2 (en) * 2009-07-09 2015-02-10 Hitachi Data Systems Corporation Flexible reporting on storage resources
US8443153B1 (en) * 2010-01-06 2013-05-14 Netapp, Inc. Dynamic balancing of performance with block sharing in a storage system
US8543778B2 (en) 2010-01-28 2013-09-24 Hitachi, Ltd. Management system and methods of storage system comprising pool configured of actual area groups of different performances
US8886990B2 (en) * 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
JP5740296B2 (ja) * 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム

Also Published As

Publication number Publication date
WO2012142027A2 (en) 2012-10-18
EP2697719A4 (en) 2015-07-29
EP2697719B1 (en) 2022-06-08
US20120266011A1 (en) 2012-10-18
US9477553B1 (en) 2016-10-25
US8732518B2 (en) 2014-05-20
EP2697719A2 (en) 2014-02-19
WO2012142027A3 (en) 2013-01-17
JP2014517952A (ja) 2014-07-24

Similar Documents

Publication Publication Date Title
JP6050316B2 (ja) データストレージシステムにおいて使用される方法及びネットワークストレージサーバ
US10613791B2 (en) Portable snapshot replication between storage systems
JP5291456B2 (ja) ストレージシステム・アーキテクチャ内のデータ・アロケーション
JP5068252B2 (ja) ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術
US8117388B2 (en) Data distribution through capacity leveling in a striped file system
US8825963B1 (en) Dynamic balancing of performance with block sharing in a storage system
US9454332B2 (en) Assimilation of foreign LUNS into a network storage system
EP1949214B1 (en) System and method for optimizing multi-pathing support in a distributed storage system environment
US8578090B1 (en) System and method for restriping data across a plurality of volumes
US12079505B2 (en) Calculating storage utilization for distinct types of data
US9146780B1 (en) System and method for preventing resource over-commitment due to remote management in a clustered network storage system
US8171064B2 (en) Methods and systems for concurrently reading direct and indirect data blocks
AU2005331262A1 (en) Storage system architecture for striping data container content across volumes of a cluster
US20190258604A1 (en) System and method for implementing a quota system in a distributed file system
US10140306B2 (en) System and method for adaptive data placement within a distributed file system
US11422731B1 (en) Metadata-based replication of a dataset
Shu Network Storage Architectures

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150312

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160510

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: 20161101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161124

R150 Certificate of patent or registration of utility model

Ref document number: 6050316

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250