JP4767139B2 - ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 - Google Patents

ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 Download PDF

Info

Publication number
JP4767139B2
JP4767139B2 JP2006250177A JP2006250177A JP4767139B2 JP 4767139 B2 JP4767139 B2 JP 4767139B2 JP 2006250177 A JP2006250177 A JP 2006250177A JP 2006250177 A JP2006250177 A JP 2006250177A JP 4767139 B2 JP4767139 B2 JP 4767139B2
Authority
JP
Japan
Prior art keywords
data
storage
access target
target data
redundant
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.)
Expired - Fee Related
Application number
JP2006250177A
Other languages
English (en)
Other versions
JP2008071209A (ja
Inventor
一隆 荻原
雅寿 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006250177A priority Critical patent/JP4767139B2/ja
Priority to US11/790,671 priority patent/US7483318B2/en
Publication of JP2008071209A publication Critical patent/JP2008071209A/ja
Application granted granted Critical
Publication of JP4767139B2 publication Critical patent/JP4767139B2/ja
Expired - Fee Related 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法に関し、特にデータを複数のストレージノードで分散管理するストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法に関する。
ディスクドライブは、バッドブロックや不良セクタなどと呼ばれる不良箇所が、導入時だけではなく稼働中でも出現する。当初は何の問題もなくデータが書き込まれていたディスク上の特定箇所がバッドブロックになってしまうと、悪くすればそこに書かれていたデータを読み出せなくなってしまう。これを「データロスト」と呼ぶ。ここでいうデータロストとは「ストレージシステムに格納されたデータが無くなる」ことを指す。同一のデータを2つの異なるノードに配置した場合に、何らかの要因で片方のノードのデータが失われても、もう一方のノード中にデータが残っていればデータロストではない。
このように、バッドブロックはデータを保全する上で重大なリスク要因である。このバッドブロックを発見するには実際にディスクにアクセスすることが必要となる。RAID(Redundant Array of Independent Disks)装置によっては、RAIDコントローラが定期的にディスクドライブの媒体チェックを行う。RAIDコントローラは、チェックの結果バッドブロックを見つければ、他のディスクドライブ上のデータを元に発見したバッドブロックに書かれていたデータを入手し、入手したデータをバッドブロックがあったディスクドライブに書き込む。この書き込みにより交替ブロックと呼ばれる別の領域に書き込まれる。その後、RAIDコントローラは、バッドブロックの領域に対するアクセス要求があると、対応する交換ブロックに対してアクセスを行う。これにより、RAIDシステムの外部からみれば、バッドブロックがなくなり、データも元の場所に書かれているように認識される(たとえば、非特許文献1参照)。
また、ディスク装置のトラブルにより、本来書き込むべき場所とは異なる場所にデータを書き込んでしまうことも起こりうる。この場合には、バッドブロックとは異なりデータの読み取りには成功するが、データが失われてしまうことには代わりはない。
データロストに対する対応策として、任意のRAIDレベルによって、複数のコンピュータ(ノード)に冗長データを分散格納するシステムも考えられている。このシステムでは、1つのノードで障害が発生すると、他のノードのデータに基づいて障害が発生したノードのデータを復元することができる(たとえば、特許文献1参照)。
特開2000−76207号公報(段落[0046]) 富士通株式会社、"データの信頼性を高めるパトロール機能"、[online]、[平成18年8月31日検索]、インターネット〈URL:http://storage-system.fujitsu.com/jp/products/iadiskarray/feature/a01/>
しかし、特許文献1の技術は、ノードの障害発生後に、そのノードの復旧作業を行うため、復旧作業を行っている間システムの信頼性が落ちてしまう。すなわち、特許文献1の技術は、ノードに障害があると、ノードの復旧処理の間、他のノードに保存されたデータに対してアクセスを行う。これにより、サービスを停止させずに済むが、障害が発生したノードが復旧するまではデータの冗長性が維持されない。そのため、復旧処理を行っている間のシステムの信頼性は低下することとなる。しかも、ノード全体の復旧作業を行うため、信頼性が低下したまま長時間システムを運用しなければならない。
そこで、複数のノードに冗長データを分散格納するシステムにおけるデータロストの予兆を検出し、データが実際にロストする前にデータロストの原因を取り除くことが望まれている。また、データロストが発生したとしても、該当するノードへのアクセスを止めることなく、データ単位の復旧作業を行えることが必要である。
本発明はこのような点に鑑みてなされたものであり、分散ストレージシステムにおけるデータロストの発生要因を抑制できるストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなストレージ管理プログラムが提供される。本発明に係るストレージ管理プログラムは、ネットワーク経由で接続された複数のストレージノード1,2でデータの分散管理を行う分散ストレージシステムを構成するストレージノード1,2にストレージ装置を管理させるために、図1に示す機能をコンピュータに実行させることができる。
管理情報記憶手段1bは、ローカルのストレージ装置に格納されたデータと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報を記憶する。データチェック手段1cは、ストレージ装置3内のデータ3aのチェック指示を受け取ると、ストレージ装置3からデータ3aを読み出し、データ3aが正常か否かを判断する。データ取得手段1dは、データチェック手段1cによりデータの異常が検出されると、管理情報を参照し、異常が検出されたデータに対応する冗長データを格納している二重化相手ストレージノードを判断し、二重化相手ストレージノードから異常が検出されたデータに対応する冗長データを取得する。データ書き込み手段1eは、データ取得手段1dが取得した冗長データを、ストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込む。
このようなストレージ管理プログラムをコンピュータに実行させることで、ストレージ装置3内のデータ3aのチェック指示を受け取ると、データチェック手段1cにより、ストレージ装置3からデータ3aが読み出され、データ3aが正常か否かを判断される。データチェック手段1cによりデータの異常が検出されると、次に、データ取得手段1dにより、管理情報が参照され、異常が検出されたデータに対応する冗長データを格納している二重化相手ストレージノードが判断され、二重化相手ストレージノードから異常が検出されたデータに対応する冗長データが取得される。そして、データ書き込み手段1eにより、データ取得手段1dが取得した冗長データが、ストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込まれる。
また、上記課題を解決するために、ネットワーク経由で接続された複数のストレージノードでデータの分散管理を行う分散ストレージシステムを構成する前記ストレージノードにストレージ装置を管理させるためのストレージ管理装置において、ローカルの前記ストレージ装置に格納された前記データと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報を記憶する管理情報記憶手段と、前記ストレージ装置内の前記データのチェック指示を受け取ると、前記ストレージ装置から前記データを読み出し、前記データが正常か否かを判断するデータチェック手段と、前記データチェック手段により前記データの異常が検出されると、前記管理情報を参照し、異常が検出された前記データに対応する前記冗長データを格納している前記二重化相手ストレージノードを判断し、前記二重化相手ストレージノードから異常が検出された前記データに対応する前記冗長データを取得するデータ取得手段と、前記データ取得手段が取得した前記冗長データを、前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むデータ書き込み手段と、を有することを特徴とするストレージ管理装置が提供される。
さらに、上記課題を解決するために、ネットワーク経由で接続された複数のストレージノードでデータの分散管理を行う分散ストレージシステムを構成する前記ストレージノードにストレージ装置を管理させるためのストレージ管理方法において、データチェック手段が、前記ストレージ装置内の前記データのチェック指示を受け取ると、前記ストレージ装置から前記データを読み出し、前記データが正常か否かを判断し、管理情報記憶手段にローカルの前記ストレージ装置に格納された前記データと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報が記憶されており、前記データチェック手段により前記データの異常が検出されると、データ取得手段が、前記管理情報を参照し、異常が検出された前記データに対応する前記冗長データを格納している前記二重化相手ストレージノードを判断し、前記二重化相手ストレージノードから異常が検出された前記データに対応する前記冗長データを取得し、データ書き込み手段が、前記データ取得手段が取得した前記冗長データを、前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込む、ことを特徴とするストレージ管理方法が提供される。
本発明では、自己の管理するデータをチェックし異常が検出されれば、二重化相手ストレージノードから冗長データを取得し、自己の管理するデータに上書きで書き込むようにした。そのため、データの異常が早期に修復され、データロストの発生を抑制することができる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、発明の概要を示す図である。図1には、2つのストレージノード1,2が示されている。ストレージノード1とストレージノード2とは、ネットワーク経由で接続されており、データの分散管理を行う。すなわち、ストレージノード1が管理するストレージ装置3と、ストレージノード2が管理するストレージ装置4とには、共通のデータ3a,4aが格納される。
ここで、ストレージノード1,2は、互いに連係した処理により、二重化されたデータ3a,4aの同一性を保つと共に、異常が検出されたデータの修復を行う。なお、以下の説明において、ストレージノード1から見たときのデータ3aの冗長データは、ストレージノード2が管理するデータ4aであり、ストレージノード2から見たときのデータ4aの冗長データは、ストレージノード1が管理するデータ3aである。
ストレージノード1は、データアクセス手段1a、管理情報記憶手段1b、データチェック手段1c、データ取得手段1d、およびデータ書き込み手段1eを有している。
データアクセス手段1aは、データのアクセス要求に応答して、ストレージ装置3に対するデータ3aの書き込みまたはデータ3aの読み出しを行う。また、データアクセス手段1aは、データ3aを書き込む際には、データ3aに基づいてチェックコードを生成し、データ3aに対応付けてチェックコードをストレージ装置3に書き込む。
管理情報記憶手段1bは、ローカルのストレージ装置に格納されたデータと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報を記憶する。
データチェック手段1cは、ストレージ装置3内のデータ3aのチェック指示を受け取ると、ストレージ装置3からデータ3aを読み出し、データ3aが正常か否かを判断する。チェック指示は、たとえば、ネットワークを介して接続された管理ノードから送られる。また、ストレージノード1に対するユーザの操作入力されたチェック指示をデータチェック手段1cが受け取ることもできる。なお、データチェック手段1cは、データ3aのチェック内容として、たとえば、データ3aの読み出しができたこと、およびデータ3aに対応するチェックコードとデータ3aとの整合性が保たれていることを確認する。
データ取得手段1dは、データチェック手段1cによりデータ3aの異常が検出されると、管理情報を参照し、異常が検出されたデータ3aに対応する冗長データ(データ4a)を格納している二重化相手となるストレージノード2を判断する。そして、データ取得手段1dは二重化相手となるストレージノード2から異常が検出されたデータ3aに対応する冗長データ(データ4a)を取得する。たとえば、データ取得手段1dは、データ3aが正常か否かを示すフラグおよびデータ3aを含むチェック要求メッセージ5を二重化相手となるストレージノード2に送信する。そして、データ取得手段1dは、二重化相手となるストレージノード2がデータ3aに対応する冗長データ(データ4a)の記憶領域に保存した採用データを示すフラグ、および冗長データ(データ4a)が採用された場合には冗長データ(データ4a)を含む応答メッセージ6を取得する。また、データ取得手段1dは、データチェック手段1cによるストレージ装置3からのデータ3aの読み出しが失敗した場合、データ3aに代えて所定の初期値をチェック要求メッセージ5に含める。
データ書き込み手段1eは、データ取得手段1dが取得した冗長データ(データ4a)を、ストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込む。なお、データ書き込み手段1eは、データ3aが正常と判断された場合、ストレージ装置3から読み出したデータ3aをストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込む。また、データ書き込み手段1eは、データ3aが異常と判断され、かつ応答メッセージ6においてデータ3aが採用データであることが示された場合(冗長データにも異常がある場合)、異常と判断されたデータ3aをストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込む。
ストレージノード2は、データチェック手段2a、データ書き込み手段2b、およびデータ送信手段2cを有している。
データチェック手段2aは、チェック要求メッセージ5において、冗長データ(データ3a)が異常であれば、ストレージ装置4から冗長データ(データ3a)に対応するデータ4aを読み出し、データ4aが正常か否かを判断する。
データ書き込み手段2bは、チェック要求メッセージ5に含まれた冗長データ(データ3a)に対応するデータ4aが正常であれば、データ4aをストレージ装置4内のデータ4aの記憶領域に対して上書きで書き込む。また、冗長データ(データ3a)に対応するデータ4aが異常であれば、データ書き込み手段2bは、冗長データ(データ3a)をストレージ装置4内のデータ4aの記憶領域に対して上書きで書き込む。
データ送信手段2cは、チェック要求メッセージ5を受け取った際にデータ書き込み手段2bが書き込み対象として採用しストレージ装置4に書き込んだ採用データを含む応答メッセージ6を二重化相手となるストレージノード1に対して送信する。
このようなシステムにおいて、ストレージノード1のデータチェック手段1cが、ストレージ装置3内のデータ3aのチェック指示を受け取ると、データチェック手段1cにより、ストレージ装置3からデータ3aが読み出され、データ3aが正常か否かを判断される。データチェック手段1cによりデータの異常が検出されると、データ取得手段1dにより、管理情報が参照され、異常が検出されたデータ3aに対応する冗長データ(データ4a)を格納している二重化相手のストレージノード2が判断される。そして、データ取得手段1dからストレージノード2に対して、チェック要求メッセージ5が送信される。
チェック要求メッセージ5を受け取ったストレージノード2では、データチェック手段2aにより、冗長データ(データ3a)が異常であることが認識され、ストレージ装置4から冗長データ(データ3a)に対応するデータ4aを読み出され、データ4aが正常か否かが判断される。データ4aが正常であれば、データ書き込み手段2bにより、データ4aがストレージ装置4内のデータ4aの記憶領域に対して上書きで書き込まれる。さらに、データ送信手段2cにより、データ書き込み手段2bが書き込み対象として採用しストレージ装置4に書き込んだデータ4a含む応答メッセージ6が、ストレージノード1に対して送信される。
すると、ストレージノード1のデータ取得手段1dは、応答メッセージ6によってストレージノード2からデータ3aに対応する冗長データ(データ4a)を取得する。そして、データ書き込み手段1eにより、データ取得手段1dが取得したデータ4aが、ストレージ装置3内のデータ3aの記憶領域に対して上書きで書き込まれる。
このようにして、ストレージ装置3内のデータ3aに異常が検出された場合、即座にデータ単位で修復が行われる。その結果、分散ストレージシステムでデータロストの発生を抑えることができる。
また、ストレージ装置3内のデータ3aが正常な場合にも、そのデータ3aを含むチェック要求メッセージ5をストレージノード2に送信される。そして、データ3aがストレージ装置4内のデータ4aの記憶領域に上書きで書き込まれる。これにより、二重化の関係にあるデータ3aとデータ4aとの内容の同一性を保つことができる。
なお、図1の例では、ストレージノード1の機能とストレージノード2の機能とを個別に示したが、分散ストレージシステムを構成する各ストレージノードは、図1に示す2台のストレージノード1,2の機能を併せ持つ。そして、各ストレージノードは、チェック指示が入力された際には、図1のストレージノード1として機能し、他のストレージノードからチェック要求メッセージ5が入力された際には、図1に示すストレージノード2として機能する。
ところで、一般的な分散ストレージシステムでは、同一のデータを二つのノード上に置き、同じデータを持つ領域同士はリンクが張られ、そのリンクを介して更新データが伝播される。その際、同一データを格納する2つの記憶領域の一方をプライマリと定め、他方をセカンダリと定める。
このようにプライマリ領域を持つストレージノードとセカンダリ領域を持つストレージノードが双方の持つデータに基づいて協調することにより、片方の領域でバッドブロックが発生したりデータ異常と思われるブロックがあった場合、正しいデータに修正することができる。以下、そのような分散ストレージシステムの例を、実施の形態として詳細に説明する。
図2は、本実施の形態の分散ストレージシステム構成例を示す図である。本実施の形態では、ネットワーク10を介して、複数のストレージノード100,200,300,400、コントロールノード500、およびアクセスノード600が接続されている。ストレージノード100,200,300,400それぞれには、ストレージ装置110,210,310,410が接続されている。
ストレージ装置110には、複数のハードディスク装置(HDD)111,112,113,114が実装されている。ストレージ装置210には、複数のHDD211,212,213,214が実装されている。ストレージ装置310には、複数のHDD311,312,313,314が実装されている。ストレージ装置410には、複数のHDD411,412,413,414が実装されている。各ストレージ装置110,210,310,410は、内蔵するHDDを用いたRAIDシステムである。本実施の形態では、各ストレージ装置110,210,310,410のRAID5のディスク管理サービスを提供する。
ストレージノード10,20,30,40は、たとえば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。ストレージノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由で端末装置21,22,23に提供する。また、ストレージノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのストレージノードで管理されている。
さらに、ストレージノード100,200,300,400は、二重化したデータの整合性をチェックする二重化保全処理を行う。なお、ストレージノード100,200,300,400は個々の判断に基づいてデータ二重化保全処理を行ってもよいし、外部からの指示によりデータ二重化保全処理を行ってもよい。本実施の形態では、コントロールノード500からの指示により二重化保全処理を行うものとする。以下、このデータ二重化保全処理をパトロールと呼ぶ。
パトロールでは、二重化したそれぞれのデータを保持するストレージノード同士が互いに通信し合い、冗長性のあるデータの整合性がチェックされる。その際、あるストレージノードで管理されているデータで不具合が検出されれば、他のストレージノードの対応するデータを用いてデータの復旧が行われる。
コントロールノード500は、ストレージノード100,200,300,400を管理する。たとえば、コントロールノード500は、所定のタイミングで、各ストレージノード100,200,300,400に対してパトロールの指示を出力する。
アクセスノード600には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。アクセスノード600は、ストレージノード100,200,300,400それぞれが管理しているデータの格納場所を認識しており、端末装置21,22,23からの要求に応答して、ストレージノード100,200,300,400へデータアクセスを行う。
図3は、本実施の形態に用いるストレージノードのハードウェア構成例を示す図である。ストレージノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、HDDインタフェース103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
HDDインタフェース103には、ストレージ装置110が接続されている。HDDインタフェース103は、ストレージ装置110に内蔵されたRAIDコントローラ115と通信し、ストレージ装置110に対するデータの入出力を行う。ストレージ装置110内のRAIDコントローラ115は、RAID0〜5の機能を有し、複数のHDD111〜114をまとめて1台のハードディスクとして管理する。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、ネットワーク10に接続されている。通信インタフェース106は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、ストレージノード100とストレージ装置110との構成のみを示したが、他のストレージノード200,300,400や他のストレージ装置210,310,410も同様のハードウェア構成で実現できる。
さらに、コントロールノード500、アクセスノード600、および端末装置21〜23も、ストレージノード100とストレージ装置110との組合せと同様のハードウェア構成で実現できる。ただし、コントロールノード500、アクセスノード600、および端末装置21〜23については、ストレージ装置110のようなRAIDシステムではなく、単体のHDDがHDDコントローラに接続されていてもよい。
図2に示すように、複数のストレージノード100,200,300,400がネットワーク10に接続され、それぞれのストレージノード100,200,300,400は他のストレージノードとの間で通信を行う。この分散ストレージシステムは、端末装置21〜23に対して、仮想的なボリューム(以下、論理ボリュームと呼ぶ)として機能する。
図4は、論理ボリュームのデータ構造を示す図である。論理ボリューム700には、「LVOL−A」という識別子(論理ボリューム識別子)が付与されている。また、ネットワーク経由で接続された4台のストレージ装置110,210,310,410には、個々のストレージノードの識別のためにそれぞれ「SN−A」、「SN−B」、「SN−C」、「SN−D」というノード識別子が付与されている。
各ストレージノード100,200,300,400が有するストレージ装置110,210,310,410それぞれにおいてRAID5の論理ディスクが構成されている。この論理ディスクは5つのスライスに分割され個々のストレージノード内で管理されている。
図4の例では、ストレージ装置110内の記憶領域は、5つのスライス121〜125に分けられている。ストレージ装置210内の記憶領域は、5つのスライス221〜225に分けられている。ストレージ装置310内の記憶領域は、5つのスライス321〜325に分けられている。ストレージ装置410内の記憶領域は、5つのスライス421〜425に分けられている。
なお、論理ボリューム700は、セグメント710,720,730,740という単位で構成される。セグメント710,720,730,740の記憶容量は、ストレージ装置110,210,310,410における管理単位であるスライスの記憶容量と同じである。たとえば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。論理ボリューム700の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメントの記憶容量が1ギガバイトならば、論理ボリューム700の記憶容量は4ギガバイトといったものになる。
セグメント710,720,730,740は、それぞれプライマリスライス711,721,731,741とセカンダリスライス712,722,732,742との組から構成される。同じセグメントに属するスライスは別々のストレージノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
図4の例では、スライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。たとえば、1番目のセグメント710のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
このような構造の論理ボリューム700の各プライマリスライスおよびセカンダリスライスが、ストレージ装置110,210,310,410内のいずれかのスライスに対応付けられる。たとえば、セグメント710のプライマリスライス711は、ストレージ装置410のスライス424に対応付けられ、セカンダリスライス712は、ストレージ装置210のスライス222に対応付けられている。
そして、各ストレージ装置110,210,310,410では、自己のスライスに対応するプライマリスライスまたはセカンダリスライスのデータを記憶する。
図5は、分散ストレージシステムの各装置の機能を示すブロック図である。アクセスノード600は、論理ボリュームアクセス制御部610を有している。論理ボリュームアクセス制御部610は、端末装置21,22,23からの論理ボリューム700内のデータを指定したアクセス要求に応じて、対応するデータを管理するストレージノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部610は、論理ボリューム700の各セグメントのプライマリスライスまたはセカンダリスライスと、ストレージ装置110,210,310,410内のスライスとの対応関係を記憶している。そして、論理ボリュームアクセス制御部610は、端末装置21,22,23からセグメント内のデータアクセスの要求を受け取ると、該当するセグメントのプライマリスライスに対応するスライスを有するストレージ装置に対してデータアクセスを行う。
コントロールノード500は、論理ボリューム管理部510とスライス管理情報群記憶部520とを有している。
論理ボリューム管理部510は、ストレージノード100,200,300,400が有するストレージ装置110,210,310,410内のスライスを管理する。たとえば、論理ボリューム管理部510は、システム起動時に、ストレージノード100,200,300,400に対してスライス管理情報取得要求を送信する。そして、論理ボリューム管理部510は、スライス管理情報取得要求に対して返信されたスライス管理情報を、スライス管理情報群記憶部520に格納する。
また、論理ボリューム管理部510は、論理ボリューム700におけるセグメントごとに、パトロールを実行するタイミングを管理する。パトロールは、所定の時間間隔で実行したり、あらかじめスケジュールされた時刻に実行したりする。また、分散ストレージシステムの負荷状況を監視し、負荷が少ない時間にパトロールを実行することもできる。論理ボリューム管理部510は、パトロールの実行時間になると、実行対象のセグメントのプライマリスライスを管理するストレージノードに対して、パトロール実行指示を送信する。
スライス管理情報群記憶部520は、ストレージノード100,200,300,400から収集されたスライス管理情報を記憶する記憶装置である。たとえば、コントロールノード500内のRAMの記憶領域の一部がスライス管理情報群記憶部520として使用される。
ストレージノード100は、データアクセス部130、データ管理部140、およびスライス管理情報記憶部150を有している。
データアクセス部130は、アクセスノード600からの要求に応答して、ストレージ装置110内のデータにアクセスする。具体的には、データアクセス部130は、アクセスノード600からデータのリード要求を受け取った場合、リード要求で指定されたデータをストレージ装置110から取得し、アクセスノード600に送信する。また、データアクセス部130は、アクセスノード600からデータのライト要求を受け取った場合、ライト要求に含まれるデータをストレージ装置110内に格納する。
ところで、前述のように、ストレージノード100は接続されているストレージ装置110をスライスと呼ばれる管理単位で管理されている。ここで、スライスには、実データを格納する領域以外に、ブロックごとのチェックコードを格納する領域が設けられる。そして、データアクセス部130は、ストレージ装置110内のスライスにデータを書き込む場合、データのチェックコードを計算し、該当するスライスにチェックコードを格納する。
なお、本実施の形態では、チェックコードをスライス内に格納するが、格納場所はスライス外でもよい。ただし、以下の説明においてスライスサイズの記憶容量という場合には、チェックコード分の記憶容量は除外する。
本実施の形態では、1ブロックごとに8バイトのチェックコードが付くものとする。すると、その8バイトのチェックコードを格納する領域はディスクのどこかに確保されるが、スライスの大きさと言った場合にはブロックあたりチェックコード用の格納領域の8バイトは含まれない。
以下に、チェックコード算出の一例を示す。1ブロックが512バイトとし、このブロックから8バイトのチェックコードを算出することを考える。C言語風のプログラムコードで表記すると512バイトのデータが配列data[]に格納されているとし、チェックコードは最終的に配列cc[]に格納されるものとする。配列の一要素は1バイトである。
cc[0] = cc[1] = cc[2] = cc[3] = cc[4] = cc[5] = cc[6] = cc[7] = 0;
for(i=0;i<512;i+=8){
cc[0] ^= data[i];
cc[1] ^= data[i+1];
cc[2] ^= data[i+2];
cc[3] ^= data[i+3];
cc[4] ^= data[i+4];
cc[5] ^= data[i+5];
cc[6] ^= data[i+6];
cc[7] ^= data[i+7];

この処理の最初の1行は、8バイト分のチェックコードの初期化処理を示している。この例では、全てのチェックコードに0を設定している。2行目の「for」文は、0から始まる変数i(iは0以上の整数であり、ブロック内の先頭からのバイト数を示す)に3行目以降の処理を実行するごとに8ずつ加算し、512に達するまで3行目以降の処理を繰り返し実行することを示している。3行目以降の処理は、ブロック内のi番目から8バイト分のデータを先頭から順次抽出し、8バイト分のチェックコードとの排他的論理和演算を行い、演算結果をチェックコードに設定することを示している。
上記のforループが完了した時点で得られるcc[]をチェックコードとする。データ更新時にはデータとともにチェックコードもストレージ装置110に格納される。
データ管理部140は、ストレージ装置110内のデータを管理する。具体的には、データ管理部140はコントロールノード500からの指示に従って、ストレージ装置110内のデータのパトロールを行う。パトロールを行う場合、データ管理部140は、チェック対象のプライマリスライスに対応するセカンダリスライスを管理する他のストレージノードに対して、チェック要求メッセージを送信する。また、データ管理部140は、他のストレージノードからチェック要求メッセージを受け取ると、指定されたスライス内のデータのパトロールを行う。
さらに、データ管理部140は、論理ボリューム管理部510からのスライス管理情報取得要求に応答して、スライス管理情報記憶部150に記憶されたスライス管理情報を論理ボリューム管理部510に対して送信する。
スライス管理情報記憶部150は、スライス管理情報を記憶する記憶装置である。たとえば、RAM102内の記憶領域の一部がスライス管理情報記憶部150として使用される。なお、スライス管理情報記憶部150に格納されるスライス管理情報は、システム停止時にはストレージ装置110内に格納され、システム起動時にスライス管理情報記憶部150に読み込まれる。
他のストレージノード200,300,400は、ストレージノード100と同様の機能を有している。すなわち、ストレージノード200は、データアクセス部230、データ管理部240、およびスライス管理情報記憶部250を有している。ストレージノード300は、データアクセス部330、データ管理部340、およびスライス管理情報記憶部350を有している。ストレージノード400は、データアクセス部430、データ管理部440、およびスライス管理情報記憶部450を有している。ストレージノード200,300,400内の各要素は、ストレージノード100内の同名の要素と同じ機能を有している。
図6は、スライス管理情報のデータ構造例を示す図である。スライス管理情報記憶部150に格納されたスライス管理情報151の構成要素は、左側の要素から順に以下の通りである。
・スライス番号
・開始ブロック位置(該当スライスの先頭に当たるブロックの番号)
・ブロック数(スライス内のブロック数)
・フラグ(プライマリ/セカンダリ)
・論理ボリューム識別子
・セグメント番号
・論理ボリューム開始ブロック位置
・論理ボリューム内でのブロック数
・ペアを組むストレージノード識別子
・ペアを組むスライス番号
図6で示したスライス管理情報151は、図4で示した論理ボリューム700を構成している。たとえば、ノード識別子「SN−A」のスライス管理情報151におけるスライス番号「4」のスライスは「LVOL−A」のセグメント番号「4」のプライマリスライスであり、ペアを組んでいるのは「SN−D」のセグメント番号「1」のスライスである、ということを意味する。
同様のスライス管理情報が、他のストレージノード200,300,400のスライス管理情報記憶部250,350,450にも格納されている。そして、コントロールノード500が、システム起動時に各ストレージノード100,200,300,400からスライス管理情報を収集し、スライス管理情報群記憶部520に格納する。
図7は、スライス管理情報群記憶部のデータ構造例を示す図である。スライス管理情報群記憶部520には、収集したスライス管理情報151,251,351,451が格納されている。スライス管理情報151はストレージノード100(ノード識別子を「SN−A」とする)から取得したものである。スライス管理情報251はストレージノード200(ノード識別子を「SN−B」とする)から取得したものである。スライス管理情報351はストレージノード300(ノード識別子を「SN−C」とする)から取得したものである。スライス管理情報451はストレージノード400(ノード識別子を「SN−D」とする)から取得したものである。
以上のような構成の分散ストレージシステムにおいて、ストレージノード100,200,300,400のパトロールが実施される。ストレージノード100,200,300,400のパトロールは、コントロールノード500の指示に従って実行される。
図8は、パトロール処理の概略手順を示すシーケンス図である。以下、図8に示す処理をステップ番号に沿って説明する。
なお、パトロール処理は、論理ボリュームのセグメント710,720,730,740単位で行われる。そこで、ストレージノード100がプライマリスライス741を管理し、ストレージノード400がセカンダリスライス742を管理しているセグメント740(図4参照)のパトロールを行う場合を想定して、各ステップの処理を説明する。
[ステップS11]コントロールノード500の論理ボリューム管理部510は、セグメント740をパトロールするタイミングになると、プライマリスライス741を管理しているストレージノード100に対して、該当スライスのパトロールを指示する。
[ステップS12]ストレージノード100のデータ管理部140は、コントロールノード500からのパトロール指示を受け付ける。その後、プライマリスライス741を管理しているストレージノード100が、プライマリスライス741が属するセグメント740のパトロールを統括する。
[ステップS13]データ管理部140は、まず、プライマリスライス741に対応するスライス124(図4参照)上の領域からデータを読み出す。このとき、1回で読み出す単位は、スライスの大きさである必要はなくスライスよりも小さいサイズでもよい。本実施の形態では、512バイトのブロック単位でデータ読み出しを行うものとする。
[ステップS14]データ管理部140は、読み出したデータをチェックする。具体的には、データ管理部140は、データを読み出す際に、そのデータに対応するチェックコードもストレージ装置110から読み出す。さらに、データ管理部140は、読み出したデータを元にしてチェックコードを算出しなおす。そして、データ管理部140は、ディスクから読み出したチェックコードと再算出したチェックコードを比較する。データやチェックコードの読み出しに失敗し、データを格納したブロックやチェックコードを格納した領域を含むブロックがバッドブロックとわかった場合やチェックコードが一致しなかった場合には、データ管理部140は、該当部分のデータ読み出しを異常と判定する。
[ステップS15]データ管理部140は、チェック要求メッセージをセカンダリスライス742を管理するストレージノード400に対して送信する。なお、ステップS13でデータが読み出せなかった場合を除き、データ管理部140は、チェック要求メッセージに読み出したデータを含める。
[ステップS16]チェック要求メッセージは、セカンダリスライス742を管理するストレージノード400のデータ管理部440が受信する。
[ステップS17]データ管理部440は、プライマリスライス741に対応するスライス124から読み出されたデータのチェックがステップS14でパスしたか否かを判断する。チェックにパスした場合、処理がステップS20に進められる。チェックにパスしなかった場合、処理がステップS18に進められる。
[ステップS18]データ管理部440は、ストレージ装置410内のセカンダリスライス742に対応するスライス421からデータを読み出す。
[ステップS19]データ管理部440は、読み出したデータの整合性チェックを行う。
[ステップS20]データ管理部440は、スライス124にデータを書き込む。なおデータを書き込む場合、プライマリスライス側のデータが正常に読み出され、チェックもパスしていれば、そのデータが書き込まれる。プライマリスライス側でデータが読み出せないか、チェックにパスしなかった場合、セカンダリスライスのデータのチェックがパスしていればセカンダリスライスのデータが書き込まれる。また、プライマリスライスとセカンダリデータの双方ともデータの読み出しには成功したがチェックにパスしなかった場合、プライマリスライスのデータが書き込まれる。
[ステップS21]データ管理部440は、応答メッセージをプライマリスライス741に対応するスライス124を管理するストレージノード100に対して送信する。なお、ステップS20において、セカンダリスライスのデータを書き込んだ場合、応答メッセージには、書き込まれたデータが含まれる。
[ステップS22]ストレージノード100のデータ管理部140は、応答メッセージを受信する。
[ステップS23]データ管理部140は、ストレージ装置110内のプライマリスライス741に対応するスライス124にデータを書き込む。書き込まれるデータは、ステップS20においてセカンダリスライス742に対応するスライス421に書き込まれたデータと同じものである。
[ステップS24]データ管理部140は、パトロール処理の結果をコントロールノード500に送信する。
[ステップS25]コントロールノード500の論理ボリューム管理部510は、パトロール結果を受信する。
以上のような手順でパトロールが行われる。次に、チェック要求メッセージと応答メッセージのデータフォーマットについて説明する。
図9は、チェック要求メッセージのデータフォーマットを示す図である。チェック要求メッセージは、プライマリスライスを持つストレージノードからセカンダリスライスを持つストレージノードへ送られるメッセージである。
チェック要求メッセージデータフォーマット30には、6個のフィールド31〜36が設けられている。
最初のフィールド31には、データを送るストレージノード(プライマリスライスを管理するストレージノード)のストレージノード識別子が設定される。2番目のフィールド32には、パトロールの対象となったセグメントのプライマリスライスに対応するスライスの番号(プライマリスライス番号)が設定される。3番目のフィールド33には、パトロールの対象となったセグメントのセカンダリスライスに対応するスライスの番号(セカンダリスライス番号)が設定される。4番目のフィールド34には、読み出し処理を行ったブロックの順番(ブロック番号)が設定される。5番目のフィールド35には、プライマリスライスに対応するスライスからのブロックの読み出しが正常であったか否かを示すフラグが設定される。このフラグは、ブロックの読み出し正常であれば「true」、ブロックの読み出しに異常があれば「false」が設定される。6番目のフィールド36には、プライマリスライスに対応するスライスから読み出されたデータが設定される。なお、プライマリスライスに対応するスライスからデータが読み出せなかった場合、初期値のデータが設定される。
図9には、具体的なチェック要求メッセージ41,42の例が示されている。これらのチェック要求メッセージ41,42は、ストレージノード識別子「SN−A」のストレージノード100からストレージノード識別子「SN−D」のストレージノード400に送信される。この例では、ブロック番号「500」のデータ読み出しは正常「true」に行われているが、ブロック番号「501」のデータ読み出しでは異常「false」となっている。データ読み出しが異常「false」のチェック要求メッセージ42のデータのフィールドには、プライマリスライスからの読み出しでチェックコードが一致していないデータかメディアエラーなどによりデータが読み取れなかったため初期値が含まれている。
図10は、応答メッセージのデータフォーマットを示す図である。応答メッセージデータフォーマット50には、6個のフィールド51〜56が設けられている。
最初のフィールド51には、データを送るストレージノード(セカンダリスライスを管理するストレージノード)のストレージノード識別子が設定される。2番目のフィールド52には、パトロールの対象となったセグメントのプライマリスライスに対応するスライスの番号(プライマリスライス番号)が設定される。3番目のフィールド53には、パトロールの対象となったセグメントのセカンダリスライスに対応するスライスの番号(セカンダリスライス番号)が設定される。4番目のフィールド54には、読み出し処理を行ったブロックの順番(ブロック番号)が設定される。5番目のフィールド55には、セカンダリスライスでデータの書き込みに採用したデータを示すフラグが設定される。このフラグは、プライマリスライスの正常と思われるデータを採用したのであれば「true」、プライマリスライスの正常かどうかあやしいデータを採用したのであれば「PRIMARY」、セカンダリスライスのデータを採用したのであれば「SECONDARY」が設定される。6番目のフィールド56には、セカンダリスライスに対応するスライスへ書き込んだデータが設定される。
図10には、具体的な応答メッセージ61〜63の例が示されている。これらの応答メッセージ61〜63は、ストレージノード識別子「SN−D」のストレージノード400からストレージノード識別子「SN−A」のストレージノード100に送信される。この例によれば、ブロック番号「500」にはプライマリスライスの正常なデータが採用され、ブロック番号「501」にはセカンダリスライスの正常なデータが採用され、ブロック番号「515」には異常と判定されたプライマリスライスのデータが採用されている。
次に、データ管理部がパトロールを実行するための処理機能を説明する。データ管理部のパトロール処理は、プライマリスライス内のデータのパトロール処理と、セカンダリスライス内のデータのパトロール処理とに分けることができる。
以下、プライマリスライスを持つストレージノードと、そのプライマリスライスに対応するセカンダリスライスをもつスライスノードとの観点から、パトロール処理(データ二重化保持機構)の処理について説明する。ここではSN−Aが、SN−Aのスライス番号「4」に対するパトロール処理を行うものと仮定して、処理手順を説明する。
図11は、プライマリスライス内のデータのパトロール処理手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。なお、以下の処理は、コントロールノード500からSN−Aのスライス番号「4」を指定したパトロール指示が入力された際に実行される。
[ステップS31]データ管理部140は、変数k(スライス内でのブロックの順番を示すカウンタ)に0を設定する。変数kの値により、処理対象のスライスの位置が指定される。
[ステップS32]データ管理部140は、変数kが、スライスのブロック数未満か否かを判断する。これは処理を終了させるための条件確認である。この例でのスライスのブロック数は1000である。変数kがスライスのブロック数に達していなければ、処理がステップS33に進められる。変数kがスライスのブロック数に達していれば、処理が終了する。
[ステップS33]データ管理部140は、ブロックの読み出し処理を行う。この処理の詳細は後述する。
[ステップS34]データ管理部140は、読み出した位置に書き戻すデータがあるか否かを判断する。
ここで「書き戻すデータ」について説明する。まず、プライマリスライスとセカンダリスライスとのいずれか一方から正常にデータが読み出せた場合、そのデータが書き戻すデータとなる。プライマリスライスとセカンダリスライスとの両方からデータが正常に読み出せた場合、プライマリスライスから読み出したデータが優先的に採用され、書き戻すデータとなる。
すなわち、ステップS33の処理でプライマリスライスの該当部分のデータが異常なく読み出せれば、そのプライマリスライスから読み出したデータが書き戻すデータとして用いられる。もしプライマリスライスの該当部分の読み出しで異常があって、セカンダリスライスの対応する部分のデータ読み出しが正常であれば、そのセカンダリスライスの対応する部分のデータが書き戻すデータとして用いられる。
プライマリスライスの該当部分の読み出しで異常があって、セカンダリスライスの対応する部分のデータも異常だった場合は、次のような優先順位で書き戻すデータが決定される。もし、プライマリスライスのデータ異常であっても何らかのデータが読み出せていた場合(たとえば、読み出したデータのチェックコードが不一致の場合)、プライマリスライスのデータが採用される。プライマリスライスでデータが読み出せずセカンダリスライスでデータの読み出しが行えていればセカンダリスライスのデータを採用する。
もし、プライマリスライスとセカンダリスライスの両方でデータが読み出せなければ、書き戻すデータがないと判断される。
書き戻すデータがあれば、処理がステップS35に進められる。書き戻すデータがなければ、処理がステップS36に進められる。
[ステップS35]書き戻すデータがある場合、データ管理部140は、書き戻すデータをプライマリスライス内のk番目のブロックに書き込む。その後、処理がステップS37に進められる。
なお、本実施の形態では、書き込むデータが、プライマリスライスから読み出したデータであっても書き込み処理を行う。それは、ストレージ装置110がRAID5のシステム構成であり、リードのみではパリティデータの格納領域にアクセスしないためである。データの書き込みを行うことで、ストレージ装置110内においてパリティデータが生成され、パリティデータが書き込まれる。その結果、パリティデータを格納している領域に対してもライトアクセスが行われる。ライトアクセスを行うことで、その領域に書き込みができないといった障害があれば、その障害をパトロール時に検出可能となる。
[ステップS36]書き戻すデータが無い場合、データ管理部140は、初期値を書き込みデータとして、書き戻すデータをプライマリスライス内のk番目のブロックに書き込む。
[ステップS37]データ管理部140は、変数kの値を1増加させ、処理をステップS32に進める。
次に、ブロック読み出し処理の詳細について説明する。
図12は、ブロック読み出し処理の手順を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS41]データ管理部140は、プライマリスライスに対応するストレージ装置110内のスライス124(スライス番号「4」)からk番目のブロックの読み出しを試みる。
[ステップS42]データ管理部140は、ブロックの読み出しが成功したか否かを判断する。読み出しに成功した場合、処理がステップS45に進められる。読み出しに失敗した場合、処理がステップS43に進められる。
[ステップS43]データ管理部140は、ブロックの読み出しに失敗した場合、初期値データを含むチェック要求メッセージをセカンダリスライス742を管理するストレージノード400に送信する。
[ステップS44]データ管理部140は、セカンダリスライス742を管理するストレージノード400から処理結果またはデータを含む応答メッセージを受信する。その後、ブロック読み出し処理が終了する。
[ステップS45]データ管理部140は、ストレージ装置110からステップS41で読み出したブロックのチェックコードの読み出しを試みる。
[ステップS46]データ管理部140は、チェックコードの読み出しが成功したか否かを判断する。読み出しに成功した場合、処理がステップS47に進められる。読み出しに失敗した場合(たとえばメディアエラーなどでチェックコードを入手できない場合)、処理がステップS50に進められる。
[ステップS47]データ管理部140は、ステップS41で読み出したブロックからチェックコードを算出する。
[ステップS48]データ管理部140は、ステップS45で読み出したチェックコードとステップS47で算出したチェックコードとを比較し、チェックコードが一致するか否かを判断する。チェックコードが一致した場合、処理がステップS49に進められる。チェックコードが不一致の場合、処理がステップS50に進められる。
なお、チェックコードが一致しない場合でも、k番目のブロックのデータの内容が正しいこともある。すなわち、ステップS45で読み出したチェックコードが過っている場合には、ステップS41で読み出したデータは正しくてもチェックコードは不一致となる。ただし、そのデータが正しいという保証ができないため、信頼性が低くなる。
[ステップS49]比較の結果、チェックコードが一致すれば、データ管理部140は、ステップS41で読み出したブロックのデータを正常と判定し、正常データを含むチェック要求メッセージをセカンダリスライスを管理するストレージノード400に送信する。その後、ブロック読み出し処理が終了する。
[ステップS50]ステップS46でのチェックコードの読み出しに失敗したか、あるいはステップS48においてチェックコードが不一致と判定された場合、データ管理部140は、ステップS41で読み出したブロックのデータを、セカンダリスライスを管理するストレージノードにチェック要求メッセージによって送信する。
[ステップS51]データ管理部140は、セカンダリスライス742を管理するストレージノード400から処理結果またはデータを含む応答メッセージを受信する。その後、ブロック読み出し処理が終了する。
次に、セカンダリスライスを管理するストレージノード400の処理について詳細に説明する。
図13は、セカンダリスライス内のデータのパトロール処理手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。なお、この処理は、チェック要求メッセージを受信した際に実行される。
[ステップS61]ストレージノード400のデータ管理部440は、プライマリスライスを管理するストレージノード100からのチェック要求メッセージを受け取る。その際、データ管理部440は、チェック要求メッセージ中のセカンダリスライス番号のスライスが存在し、そのスライスがセカンダリスライスであることをスライス管理情報によって確認する。また、データ管理部440は、チェック要求メッセージで示されるストレージノード識別子とプライマリスライス番号とが、スライス管理情報に示される該当スライスに対する「ペアを組むストレージノード識別子」および「ペアを組むスライス番号」と一致することを確認する。
[ステップS62]データ管理部440は、ステップS61における確認が終わった後、チェック要求メッセージ中のフラグをチェックし、「true」か否かを判断する。フラグが「true」であれば、処理がステップS63に進められる。フラグが「false」であれば、処理がステップS65に進められる。
[ステップS63]データ管理部440は、セカンダリスライスに対応するスライスのk番目(チェック要求メッセージの4番目のフィールドに示されている)のブロックに、チェック要求メッセージに含まれていたデータを書き込む。
このように、本実施の形態では、データを受け取ったセカンダリスライスを持つストレージノードは、その受け取ったデータを対応部分に書き込む。これにより、RAID5で管理されているストレージ装置410におけるセカンダリスライスに対応するスライスのk番目のブロック内のデータと、ブロックに対応するパリティデータに対してライトアクセスが行われる。
[ステップS64]データ管理部440は、プライマリスライスを管理するストレージノード100に、フラグ「true」の応答メッセージを送信する。その後、処理が終了する。
[ステップS65]データ管理部440は、プライマリデータ異常時の処理を実行する。その後、処理が終了する。
図14は、プライマリデータ異常時の処理を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS71]データ管理部440は、ストレージ装置410からセカンダリスライスに対応するスライスのk番目のブロックを読み出すことを試みる。
[ステップS72]データ管理部440は、読み出しが成功したか否かを判断する。読み出しに成功した場合、処理がステップS75に進められる。読み出しに失敗した場合、処理がステップS73に進められる。
[ステップS73]ステップS71でのブロック読み出しに失敗した場合、データ管理部440は、プライマリスライスを管理するストレージノード100から送られたデータを、セカンダリスライスに対応するスライス内のk番目のブロックに書き込む。
[ステップS74]データ管理部440は、フラグに「PRIMARY」と設定した応答メッセージによって、処理結果をストレージノード100に通知する。その後、プライマリデータ異常時の処理が終了する。
[ステップS75]データ管理部440は、ステップS71でのブロック読み出しに成功した場合、ストレージ装置410からブロックに対応するチェックコードの読み出しを試みる。
[ステップS76]データ管理部440は、チェックコードの読み出しに成功したか否かを判断する。チェックコードの読み出しに成功した場合、処理がステップS77に進められる。チェックコードの読み出しに失敗した場合、処理がステップS80に進められる。
[ステップS77]データ管理部440は、ステップS71で読み出したブロックからチェックコードを算出する。
[ステップS78]データ管理部440は、ステップS75で読み出したチェックコードとステップS77で算出したチェックコードとを比較し、チェックコードが一致するか否かを判断する。チェックコードが一致した場合、処理がステップS79に進められる。チェックコードが不一致の場合、処理がステップS80に進められる。
[ステップS79]比較の結果、チェックコードが一致すれば、データ管理部440は、ステップS71で読み出したブロックのデータを正常と判定し、そのデータを含む応答メッセージをプライマリスライスを管理するストレージノード100に送信する。このとき、応答メッセージのフラグには、「SECONDARY」と設定される。なお、このとき、ステップS71で読み出したデータを、ストレージ装置410に上書きで書き込んでもよい。書き込みを行えば、RAID5システムのブロックのパリティデータにもデータアクセスが発生し、パリティデータの記憶領域に生じた障害の早期検出が可能となる。その後、プライマリデータ異常時の処理が終了する。
[ステップS80]ステップS76でのチェックコードの読み出しに失敗したか、あるいはステップS78においてチェックコードが不一致と判定された場合、データ管理部440は、プライマリスライスから読み出されたデータがあるか否かを判断する。すなわち、プライマリスライスを管理するストレージノード100から送られたチェック要求メッセージに含まれるデータが初期値(たとえば、全てのビットが「0」のデータ)以外のデータであれば、プライマリスライスから読み出されたデータであると判断できる。プライマリスライスから読み出したデータがあれば、処理がステップS81に進められる。プライマリスライスから読み出したデータがなければ、処理がステップS83に進められる。
[ステップS81]データ管理部440は、プライマリスライスから読み出されたデータを採用し、そのデータをセカンダリスライスに対応するスライス内のk番目のブロックに書き込む。その際、データ管理部440は、書き込んだブロックのチェックコードを計算し、ストレージ装置410に書き込む。
[ステップS82]データ管理部440は、フラグに「PRIMARY」と設定した応答メッセージによって、処理結果をストレージノード100に通知する。その後、プライマリデータ異常時の処理が終了する。
[ステップS83]データ管理部440は、セカンダリスライスに対応するスライスから読み出したデータに基づいてチェックコードを再計算し、そのデータとチェックコードとをストレージ装置410に書き込む。
[ステップS84]データ管理部440は、フラグに「SECONDARY」と設定した応答メッセージによって、処理結果をストレージノード100に通知する。その後、プライマリデータ異常時の処理が終了する。
以上のようにして、パトロール指示に応じてセグメントを構成するプライマリスライスとセカンダリスライスとのデータのチェックが行われる。
ところで、本実施の形態では、プライマリスライスとセカンダリスライスとにおける対応する2つのデータが共に異常(ディスク上に格納されていたチェックコードとデータを読んで再算出したチェックコードが一致しない)であるとき、プライマリスライスのデータを採用し、データを統一する。これは、セカンダリスライスのデータを統一する場合、あるいは異なったデータをそのまま保持する場合と比べ、プライマリスライスのデータで統一した方が、信頼性の面で優れているためである。具体的には、以下のような理由がある。
データを二重化している場合のI/Oに対する処理が以下の場合を考える。このようなI/Oに対する処理を後での参照を考えパターンAと呼ぶことにする。
[パターンA]
二重化されたデータを読み出す場合、プライマリスライスからデータが読み出され、セカンダリスライスからはデータの読み出しは行われない。また、データを二重化して書き込む場合、プライマリスライスとセカンダリスライスとにデータが書き込まれる。
ここでは読み出す場合に着目する。
図15は、データ読み出し処理を示す図である。アクセスノード600の論理ボリュームアクセス制御部610は、アクセス用テーブル611を有している。
アクセス用テーブル611には、スライス識別子とストレージノード識別子との欄が設けられている。スライス識別子の欄には、各ストレージノード100,200,300,400が管理しているプライマリスライスまたはセカンダリスライスのスライス識別子が設定される。ストレージノード識別子の欄には、ストレージノードを識別するためのストレージノード識別子が設定される。
論理ボリュームアクセス制御部610は、端末装置21〜23からの論理ボリュームに対するアクセス要求を受け取ると、アクセス用テーブル611を参照し、アクセス対象のセグメントを構成するプライマリスライスを管理するストレージノードを判断する。図15には、2番目のセグメントに対するアセス要求を受け付けた場合の例が示されている。この場合、論理ボリュームアクセス制御部610は、アクセス用テーブル611を参照し、2番目のセグメントのプライマリスライス「P2」は、ストレージノード識別子「SN−C」のストレージノード300で管理されていることを認識する。そこで、論理ボリュームアクセス制御部610は、ストレージノード300に対して、スライス識別子「P2」内のデータを指定したアクセス要求を出力する。
ストレージノード300では、データアクセス部330(図5参照)がアクセス要求を受け取り、スライス管理情報記憶部350内のスライス管理情報を参照し、スライス識別子「P2」に対応するスライス番号「5」を認識する。そして、データアクセス部330が、ストレージ装置310内のスライス番号「5」のスライスに対してアクセスする。
ここで、セグメントを構成するプライマリスライスとセカンダリスライスとの配置先の組み合わせが変更されないのであれば、両方のデータに異常があった場合にも、プライマリスライスとセカンダリスライスのデータとをそのまま維持してもよい。すなわち、いずれのデータも信頼できないため、いずれか一方に統一する根拠もない。
しかしながら、システムの信頼性を高めるには、ストレージノードやストレージ装置が壊れるということと壊れた場合の対処を、ストレージシステムでは考えておかなければならない。
図16は、障害発生時のスライスの配置換えを示す図である。図16には、ストレージノード300で障害が発生した場合を示している。ストレージノード300に障害が発生したことにより、ストレージノード100がセカンダリスライスとして管理していた「S2」のスライスが、プライマリスライス「P2」に変更されている。また、ストレージノード200にセカンダリスライス「S2」の管理が移されている。
なお、このようなスライスの配置換えは、コントロールノード500の論理ボリューム管理部510で行われ、配置換えの結果が各ストレージノード100,200,300,400のデータ管理部140とアクセスノード600の論理ボリュームアクセス制御部610とに通知される。
このようなI/O制御が行われるシステムにおいて、たとえば、図15の「P2」と「S2」の1000番目のブロックで双方ともデータ異常(チェックコードの不一致)が検出された場合を考える。データ異常と前後して「P2」の1000番目のブロックに外部から読み出し要求が来ていて「P2」を管理するストレージノード300が自身のデータを要求元に返しているものとする。
このときに何らかの要因でストレージノード300が故障してしまった場合、ストレージノード100の「S2」がプライマリスライス「P2」に変更され、別のストレージノード200に新たなセカンダリスライス「S2」が確保される。これによって、データの二重化が維持される。
なお、システムの運用を継続している場合、プライマリスライスの配置先の変更後においても、プライマリスライスに対するデータの読み取りにおけるデータの一貫性を保つ必要がある。すなわち、障害発生前においてプライマリスライスに対応するスライス(ストレージノード300の5番目のスライス)に格納されていたデータと、障害発生後においてプライマリスライスに対応するスライス(ストレージノード100の5番目のスライス)に格納されていたデータとが一致していなければならない。そうでないと、たとえば、2番目のセグメントに対する1000ブロック目の読み出し要求に対し、障害発生前後において異なるデータが返されてしまう。すると、読み出し要求元の端末装置では、受け取るデータが異なるので矛盾が生じてしまうことになる。
このような矛盾が生じる可能性を下げるために、本実施の形態では、プライマリスライスとセカンダリスライスの同じ箇所でデータ異常が発生した場合には、プライマリスライスのデータを採用することにした。
たとえば、図15の障害発生前の状態において、ストレージノード300の「P2」のスライス内の1000番目のブロック71と、ストレージノード100の「S2」のスライス内の1000番目のブロック72との双方でデータ異常が検出されたものとする。データ異常が検出されたとしても、ブロック71は読み出し要求に応じて読み出されている。そのため、データの一貫性を保つためにもブロック71の内容を変更するのは好ましくない。
また、図16に示すように障害発生後は、ストレージノード100の5番目のスライスがプライマリスライスに対応付けられる。すると、そのスライスの1000番目のブロック72と、それ以前にストレージノード300の5番目のスライス内の1000番目のブロック71から読み出されていたデータとが同一であることが望まれる。そこで、パトロール処理において、ブロック71とブロック72との両方でデータ異常が見つかった場合、ブロック71のデータによってブロック72の内容を更新する。その結果、障害発生後においても、2番目のセグメントに対するデータ読み出しによって読み出されるデータの一貫性が保証され、端末装置でデータの矛盾も回避できる。
このようなパターンAとは別のI/O処理として、書き込みは同じだが読み出し方式が異なるものもある。これをパターンBとパターンCと呼ぶことにする。
[パターンB]
このI/O処理では、データ読み出しを行う場合、プライマリスライスとセカンダリスライスに同時にアクセスを試みる。そして応答の速い方からデータを受け取る。データ書き込み処理の場合、プライマリスライスとセカンダリスライスにデータを書き込む。つまり、データ書き込み処理はパターンAと同じである。
[パターンC]
このI/O処理では、データ読み出しを行う場合、何らかの基準でアクセスする先をプライマリスライスかセカンダリスライスに決めて、その決まった先にアクセスする。基準の一例として、プライマリスライス→セカンダリスライス→プライマリスライス→・・・と交互にアクセス先を変えるというものがある。データ書き込み処理の場合、プライマリスライスとセカンダリスライスにデータを書き込む。つまり、データ書き込み処理はパターンAと同じである。
パターンBとパターンCの場合では、プライマリスライスとセカンダリスライスの同じデータを持つべき領域が異なったデータとなっていると、データ矛盾をユーザに示してしまう可能性が高くなる。そのため、パターンBとパターンCの場合、プライマリスライスのデータとセカンダリスライスのデータとのいずれかに合わせるべきである。ここでは、パターンAも含めて共通の処理とするべく、プライマリスライスのデータにあわせることにする。
以上のように、本実施の形態では、プライマリスライスのデータが正常であれば、そのデータがプライマリスライスとセカンダリスライスとの両方に書き込まれる。
反対に、プライマリスライスからのデータ読み出し時に異常が検出されれば、その異常ブロックに対応する部分のデータがセカンダリスライスを管理するストレージノードから読み出される。セカンダリスライスのデータが異常なく読めれば、プライマリスライスを管理するストレージノードにそのデータが渡される。データを受け取ったプライマリスライスを管理するストレージノードはそのデータをプライマリスライスの該当部分に書き込む。
一方、セカンダリスライスからのデータの読み出し時にも異常が発生したら、その異常の種類により次のような処理が行われる。もしプライマリスライスとセカンダリスライスとにおけるデータの異常が共にチェックコードの不一致であれば、プライマリスライスから読み出したデータがそのまま採用される。もし一方の異常がチェックコードの不一致でありもう一方の異常がバッドブロック(読み出し失敗)ならば、チェックコードが不一致であっても、読み出されたデータが採用される。そして、採用されたデータが、プライマリスライスとセカンダリスライスとの両方に書き戻される。もし、両方ともバッドブロックであれば、プライマリスライスとセカンダリスライスとの両方が初期値で埋められる。
これにより、プライマリスライスとセカンダリスライスとのデータをチェックし、できるだけ信頼性の高いデータで、それぞれのデータが統一される。その結果、異常なデータが適宜修復され、データロストが防止される。
また、プライマリスライスとセカンダリスライスとのデータの信頼性が同じであれば、プライマリスライスが優先的に採用され、それぞれのデータが採用されたデータで統一される。これにより、ユーザからのアクセス対象となっているプライマリスライスのデータの一貫性が維持される。
以下に、本実施の形態の変形例を示す。
もし、RAIDシステムがバッドブロック対策の機構を有していた場合には、そのバッドブロック対策の機構を信頼して、パトロール処理を簡略化することもできる。たとえば、パトロール処理では基本的にはデータの読み出し処理のみとし、プライマリライスとセカンダリスライスのデータ比較を行った結果データが異なっていた場合にのみ書き込みを行うという手法を取ってもよい。この場合、データが正常である限り、データの書き込みを行う必要が無く、処理の効率化が図れる。
また、ストレージノードが持つストレージ装置はRAIDシステムであることが望ましいが、RAIDシステムではなく普通のディスク(データ冗長性を持たないという意味であり、JBOD(Just a Bunch Of Disks)やRAID0などが含まれる)を使用することもできる。その場合には、プライマリスライスのデータ読み出しで異常がなければ再び同じ箇所に読み出したデータを書くという処理は省略できる。説明が重複するが、読み出したデータを同じ箇所に書くという処理は、RAIDシステムでは読み出しではアクセスされない領域(たとえば、パリティデータ)に書き込み処理を行うことによって該当領域にアクセスするためである。一方、普通のディスクでは読み出しと書き込みとでは、アクセスされる領域が同じであり、読み出し後に改めて同一データを書き込む必要がない。
加えて、分散ストレージシステム中に存在するストレージノードが持つディスク装置は同一である必要はない。あるストレージノードはRAIDシステムを有し、別のストレージノードは普通のディスクを有していてもよい。この場合、ストレージノードそれぞれにおいて、読み出したデータを同じ箇所に書き戻す処理が必要になったり、不要であったりする。
さらに、格納するデータに対応したチェックコードを持つことが望ましいが、チェックコードを持たなくてもよい。チェックコードを格納しなければ、ストレージ装置内の記憶容量を有効に利用できる。ただし、チェックコードを持たない場合には、プライマリスライスのデータとセカンダリスライスのデータの比較を常に行わなければならない。そのため、セカンダリスライスを管理するストレージノードでは、チェック要求メッセージのフラグが「true」であっても、セカンダリスライスからのデータの読み出しが必要となる。
また、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージノード100,200,300,400、コントロールノード500、およびアクセスノード600それぞれが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) ネットワーク経由で接続された複数のストレージノードでデータの分散管理を行う分散ストレージシステムを構成する前記ストレージノードにストレージ装置を管理させるためのストレージ管理プログラムにおいて、
コンピュータを、
ローカルの前記ストレージ装置に格納された前記データと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報を記憶する管理情報記憶手段、
前記ストレージ装置内の前記データのチェック指示を受け取ると、前記ストレージ装置から前記データを読み出し、前記データが正常か否かを判断するデータチェック手段、
前記データチェック手段により前記データの異常が検出されると、前記管理情報を参照し、異常が検出された前記データに対応する前記冗長データを格納している前記二重化相手ストレージノードを判断し、前記二重化相手ストレージノードから異常が検出された前記データに対応する前記冗長データを取得するデータ取得手段、
前記データ取得手段が取得した前記冗長データを、前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むデータ書き込み手段、
として機能させるためのストレージ管理プログラム。
(付記2) 前記コンピュータを、さらに、
前記データのアクセス要求に応答して、前記ストレージ装置に対する前記データの書き込みまたは前記データの読み出しを行い、前記データを書き込む際には、前記データに基づいてチェックコードを生成し、前記データに対応付けて前記チェックコードを前記ストレージ装置に書き込むデータアクセス手段として機能させ、
前記データチェック手段は、前記ストレージ装置から前記データに対応する前記チェックコードを読み出すと共に、前記データから前記チェックコードを新たに生成し、読み出した前記チェックコードと新たに生成した前記チェックコードとを比較することで、前記データが正常か否かを判断することを特徴とする付記1記載のストレージ管理プログラム。
(付記3) 前記データ書き込み手段は、前記データが正常と判断された場合、前記ストレージ装置から読み出した前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記1記載にストレージ管理プログラム。
(付記4) 前記データ取得手段は、前記データが正常か否かを示すフラグおよび前記データを含むチェック要求メッセージを前記二重化相手ストレージノードに送信し、前記二重化相手ストレージノードが前記データに対応する前記冗長データの記憶領域に保存した採用データを示すフラグ、および前記冗長データが採用された場合には前記冗長データを含む応答メッセージを取得することを特徴とする付記1記載のストレージ管理プログラム。
(付記5) 前記データ書き込み手段は、前記データが異常と判断され、かつ前記応答メッセージにおいて前記データが前記採用データであることが示された場合、異常と判断された前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記4記載にストレージ管理プログラム。
(付記6) 前記データ取得手段は、前記データチェック手段による前記ストレージ装置からの前記データの読み出しが失敗した場合、前記データに代えて所定の初期値を前記チェック要求メッセージに含めることを特徴とする付記4記載のストレージ管理プログラム。
(付記7) 前記データ書き込み手段は、前記二重化相手ストレージノードから、前記冗長データが正常か否かを示すフラグおよび前記冗長データを含むチェック要求メッセージが入力されると、前記冗長データが正常であれば、前記冗長データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記1記載のストレージ管理プログラム。
(付記8) 前記データチェック手段は、前記チェック要求メッセージにおいて、前記冗長データが異常であれば、前記ストレージ装置から前記冗長データに対応する前記データを読み出し、前記データが正常か否かを判断し、
前記データ書き込み手段は、前記チェック要求メッセージに含まれた前記冗長データに対応する前記データが正常であれば、前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込み、前記冗長データに対応する前記データが異常であれば、前記冗長データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記7記載のストレージ管理プログラム。
(付記9) 前記コンピュータを、さらに、
前記チェック要求メッセージを受け取った際に前記データ書き込み手段が書き込み対象として採用し前記ストレージ装置に書き込んだ採用データを含む応答メッセージを前記二重化相手ストレージノードに対して送信するデータ送信手段として機能させることを特徴とする付記8記載のストレージ管理プログラム。
(付記10) ネットワーク経由で接続された複数のストレージノードでデータの分散管理を行う分散ストレージシステムを構成する前記ストレージノードにストレージ装置を管理させるためのストレージ管理装置において、
ローカルの前記ストレージ装置に格納された前記データと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報を記憶する管理情報記憶手段と、
前記ストレージ装置内の前記データのチェック指示を受け取ると、前記ストレージ装置から前記データを読み出し、前記データが正常か否かを判断するデータチェック手段と、
前記データチェック手段により前記データの異常が検出されると、前記管理情報を参照し、異常が検出された前記データに対応する前記冗長データを格納している前記二重化相手ストレージノードを判断し、前記二重化相手ストレージノードから異常が検出された前記データに対応する前記冗長データを取得するデータ取得手段と、
前記データ取得手段が取得した前記冗長データを、前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むデータ書き込み手段と、
を有することを特徴とするストレージ管理装置。
(付記11) 前記データのアクセス要求に応答して、前記ストレージ装置に対する前記データの書き込みまたは前記データの読み出しを行い、前記データを書き込む際には、前記データに基づいてチェックコードを生成し、前記データに対応付けて前記チェックコードを前記ストレージ装置に書き込むデータアクセス手段をさらに有し、
前記データチェック手段は、前記ストレージ装置から前記データに対応する前記チェックコードを読み出すと共に、前記データから前記チェックコードを新たに生成し、読み出した前記チェックコードと新たに生成した前記チェックコードとを比較することで、前記データが正常か否かを判断することを特徴とする付記10記載のストレージ管理装置。
(付記12) 前記データ書き込み手段は、前記データが正常と判断された場合、前記ストレージ装置から読み出した前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記10記載にストレージ管理装置。
(付記13) 前記データ取得手段は、前記データが正常か否かを示すフラグおよび前記データを含むチェック要求メッセージを前記二重化相手ストレージノードに送信し、前記二重化相手ストレージノードが前記データに対応する前記冗長データの記憶領域に保存した採用データを示すフラグ、および前記冗長データが採用された場合には前記冗長データを含む応答メッセージを取得することを特徴とする付記10記載のストレージ管理装置。
(付記14) 前記データ書き込み手段は、前記データが異常と判断され、かつ前記応答メッセージにおいて前記データが前記採用データであることが示された場合、異常と判断された前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記13記載にストレージ管理装置。
(付記15) 前記データ書き込み手段は、前記データチェック手段による前記ストレージ装置からの前記データの読み出しが失敗した場合、前記データに代えて所定の初期値を前記チェック要求メッセージに含めることを特徴とする付記13記載のストレージ管理装置。
(付記16) 前記データ書き込み手段は、前記二重化相手ストレージノードから、前記冗長データが正常か否かを示すフラグおよび前記冗長データを含むチェック要求メッセージが入力されると、前記冗長データが正常であれば、前記冗長データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記10記載のストレージ管理装置。
(付記17) 前記データチェック手段は、前記チェック要求メッセージにおいて、前記冗長データが異常であれば、前記ストレージ装置から前記冗長データに対応する前記データを読み出し、前記データが正常か否かを判断し、
前記データ書き込み手段は、前記チェック要求メッセージに含まれた前記冗長データに対応する前記データが正常であれば、前記データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込み、前記冗長データに対応する前記データが異常であれば、前記冗長データを前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込むことを特徴とする付記16記載のストレージ管理装置。
(付記18) 前記チェック要求メッセージを受け取った際に前記データ書き込み手段が書き込み対象として採用し前記ストレージ装置に書き込んだ採用データ含む応答メッセージを前記二重化相手ストレージノードに対して送信するデータ送信手段をさらに有することを特徴とする付記17記載のストレージ管理装置。
(付記19) ネットワーク経由で接続された複数のストレージノードでデータの分散管理を行う分散ストレージシステムを構成する前記ストレージノードにストレージ装置を管理させるためのストレージ管理方法において、
データチェック手段が、前記ストレージ装置内の前記データのチェック指示を受け取ると、前記ストレージ装置から前記データを読み出し、前記データが正常か否かを判断し、
管理情報記憶手段にローカルの前記ストレージ装置に格納された前記データと同一内容の冗長データを管理する二重化相手ストレージノードが登録された管理情報が記憶されており、前記データチェック手段により前記データの異常が検出されると、データ取得手段が、前記管理情報を参照し、異常が検出された前記データに対応する前記冗長データを格納している前記二重化相手ストレージノードを判断し、前記二重化相手ストレージノードから異常が検出された前記データに対応する前記冗長データを取得し、
データ書き込み手段が、前記データ取得手段が取得した前記冗長データを、前記ストレージ装置内の前記データの記憶領域に対して上書きで書き込む、
ことを特徴とするストレージ管理方法。
発明の概要を示す図である。 本実施の形態の分散ストレージシステム構成例を示す図である。 本実施の形態に用いるストレージノードのハードウェア構成例を示す図である。 論理ボリュームのデータ構造を示す図である。 分散ストレージシステムの各装置の機能を示すブロック図である。 スライス管理情報のデータ構造例を示す図である。 スライス管理情報群記憶部のデータ構造例を示す図である。 パトロール処理の概略手順を示すシーケンス図である。 チェック要求メッセージのデータフォーマットを示す図である。 応答メッセージのデータフォーマットを示す図である。 プライマリスライス内のデータのパトロール処理手順を示すフローチャートである。 ブロック読み出し処理の手順を示すフローチャートである。 セカンダリスライス内のデータのパトロール処理手順を示すフローチャートである。 プライマリデータ異常時の処理を示すフローチャートである。 データ読み出し処理を示す図である。 障害発生時のスライスの配置換えを示す図である。
符号の説明
1,2 ストレージノード
1a データアクセス手段
1b 管理情報記憶手段
1c,2a データチェック手段
1d データ取得手段
1e,2b データ書き込み手段
2c データ送信手段
3,4 ストレージ装置
3a,4a データ
5 チェック要求メッセージ
6 応答メッセージ

Claims (13)

  1. コンピュータにネットワーク経由で接続されたストレージノードにおいてアクセスノードからのアクセス対象として管理されているアクセス対象データに対応する冗長データであり、前記コンピュータにローカル接続されたストレージ装置に格納された該冗長データを、前記コンピュータに管理させるストレージ管理プログラムにおいて、
    前記コンピュータに、
    前記ストレージ装置に格納された冗長データに対応するアクセス対象データを管理するストレージノードから、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かの判断結果、および該アクセス対象データを含むチェック要求を受信すると、前記ストレージ装置から該冗長データを読み出し、該冗長データに対応づけて予め保存されたチェックコードと、該冗長データから生成したチェックコードとが一致するか否かを判断し、
    前記チェック要求に示される判断結果においてアクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データのチェックコードも不一致の場合、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、
    該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    処理を実行させることを特徴とするストレージ管理プログラム。
  2. 前記コンピュータに、
    前記チェック要求に示される判断結果においてアクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信し、
    前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データのチェックコードが不一致の場合、該冗長データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該冗長データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    処理を実行させることを特徴とする請求項1記載のストレージ管理プログラム。
  3. 前記コンピュータに、
    前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、所定の初期値を、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該所定の初期値を該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    処理を実行させることを特徴とする請求項1または2のいずれかに記載のストレージ管理プログラム。
  4. 冗長データを、該冗長データの記憶領域に保存した場合、前記チェック要求の送信元のストレージノードに送信するデータ保存処理結果に、該冗長データを含めることを特徴とする請求項1乃至3のいずれかに記載のストレージ管理プログラム。
  5. コンピュータにローカル接続されたストレージ装置に格納され、前記コンピュータにネットワーク経由で接続されたアクセスノードからのアクセス対象となるアクセス対象データを、前記コンピュータに管理させるストレージ管理プログラムにおいて、
    前記コンピュータに、
    前記ネットワーク経由で接続されたコントロールノードから前記ストレージ装置に格納されたアクセス対象データを指定した二重化保全指示を受け取ると、前記ストレージ装置から該アクセス対象データを読み出し、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かを判断し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードに対し、該アクセス対象データのチェックコードの一致・不一致の判断結果と該アクセス対象データとを含むチェック要求を、該ストレージノードに送信し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該冗長データに対応付けて予め保持されたチェックコードと該冗長データから生成したチェックコードとの一致・不一致の判断に基づく、該冗長データの記憶領域へのデータ保存処理結果を取得し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該アクセス対象データと該冗長データとの両方でチェックコードが不一致であることにより、該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を取得した場合、該アクセス対象データを、前記ストレージ装置内の該アクセス対象データの記憶領域に書き込む、
    処理を実行させるストレージ管理プログラム。
  6. コンピュータにネットワーク経由で接続されたストレージノードにおいてアクセスノードからのアクセス対象として管理されているアクセス対象データに対応する冗長データであり、前記コンピュータにローカル接続されたストレージ装置に格納された該冗長データを管理するストレージ管理装置において、
    前記ストレージ装置に格納された冗長データに対応するアクセス対象データを管理するストレージノードから、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かの判断結果、および該アクセス対象データを含むチェック要求を受信すると、前記ストレージ装置から該冗長データを読み出し、該冗長データに対応づけて予め保存されたチェックコードと、該冗長データから生成したチェックコードとが一致するか否かを判断する判断手段と、
    前記チェック要求に示される判断結果においてアクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データのチェックコードも不一致の場合、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込む書き込み手段と、
    該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する送信手段と、
    を有するストレージ管理装置。
  7. 前記チェック要求に示される判断結果においてアクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、前記書き込み手段は、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、前記送信手段は、前記該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信し、
    前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データのチェックコードが不一致の場合、
    前記書き込み手段は、該冗長データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、前記送信手段は、該冗長データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    ことを特徴とする請求項6記載のストレージ管理装置。
  8. 前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、前記書き込み手段は、所定の初期値を、前記ストレージ装置内の該冗長データの記憶領域に書き込み、前記送信手段は、該所定の初期値を該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    ことを特徴とする請求項6または7のいずれかに記載のストレージ管理装置。
  9. ローカル接続されたストレージ装置に格納され、ネットワーク経由で接続されたアクセスノードからのアクセス対象となるアクセス対象データを管理するストレージ管理装置において、
    前記ネットワーク経由で接続されたコントロールノードから前記ストレージ装置に格納されたアクセス対象データを指定した二重化保全指示を受け取ると、前記ストレージ装置から該アクセス対象データを読み出し、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かを判断する判断手段と、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードに対し、該アクセス対象データのチェックコードの一致・不一致の判断結果と該アクセス対象データとを含むチェック要求を、該ストレージノードに送信する送信手段と、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該冗長データに対応付けて予め保持されたチェックコードと該冗長データから生成したチェックコードとの一致・不一致の判断に基づく、該冗長データの記憶領域へのデータ保存処理結果を取得する取得手段と、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該アクセス対象データと該冗長データとの両方でチェックコードが不一致であることにより、該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を取得した場合、該アクセス対象データを、前記ストレージ装置内の該アクセス対象データの記憶領域に書き込む書き込み手段と、
    を有するストレージ管理装置。
  10. コンピュータにネットワーク経由で接続されたストレージノードにおいてアクセスノードからのアクセス対象として管理されているアクセス対象データに対応する冗長データであり、前記コンピュータにローカル接続されたストレージ装置に格納された該冗長データを、前記コンピュータで管理するストレージ管理方法において、
    前記コンピュータが、
    前記ストレージ装置に格納された冗長データに対応するアクセス対象データを管理するストレージノードから、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かの判断結果、および該アクセス対象データを含むチェック要求を受信すると、前記ストレージ装置から該冗長データを読み出し、該冗長データに対応づけて予め保存されたチェックコードと、該冗長データから生成したチェックコードとが一致するか否かを判断し、
    前記チェック要求に示される判断結果においてアクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データのチェックコードも不一致の場合、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、
    該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    ことを特徴とするストレージ管理方法。
  11. 前記コンピュータが、
    前記チェック要求に示される判断結果において、アクセス対象データのチェックコードの不一致が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、該アクセス対象データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信し、
    前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データのチェックコードが不一致の場合、該冗長データを、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該冗長データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    ことを特徴とする請求項10記載のストレージ管理方法。
  12. 前記コンピュータが、
    前記チェック要求に示される判断結果においてアクセス対象データの読み出し失敗が示され、該アクセス対象データに対応する冗長データの読み出しが失敗した場合、所定の初期値を、前記ストレージ装置内の該冗長データの記憶領域に書き込み、該所定の初期値を該冗長データの記憶領域に保存したことを示すデータ保存処理結果を、前記チェック要求の送信元のストレージノードに送信する、
    処理を実行させることを特徴とする請求項10または11のいずれかに記載のストレージ管理方法。
  13. コンピュータにローカル接続されたストレージ装置に格納され、前記コンピュータにネットワーク経由で接続されたアクセスノードからのアクセス対象となるアクセス対象データを、前記コンピュータで管理するストレージ管理方法において、
    前記コンピュータが、
    前記ネットワーク経由で接続されたコントロールノードから前記ストレージ装置に格納されたアクセス対象データを指定した二重化保全指示を受け取ると、前記ストレージ装置から該アクセス対象データを読み出し、該アクセス対象データに対応づけて予め保存されたチェックコードと該アクセス対象データから生成したチェックコードとが一致するか否かを判断し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードに対し、該アクセス対象データのチェックコードの一致・不一致の判断結果と該アクセス対象データとを含むチェック要求を、該ストレージノードに送信し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該冗長データに対応付けて予め保持されたチェックコードと該冗長データから生成したチェックコードとの一致・不一致の判断に基づく、該冗長データの記憶領域へのデータ保存処理結果を取得し、
    前記二重化保全指示で指定されたアクセス対象データに対応する冗長データを管理するストレージノードから、該アクセス対象データと該冗長データとの両方でチェックコードが不一致であることにより、該アクセス対象データを該冗長データの記憶領域に保存したことを示すデータ保存処理結果を取得した場合、該アクセス対象データを、前記ストレージ装置内の該アクセス対象データの記憶領域に書き込む、
    ことを特徴とするストレージ管理方法。
JP2006250177A 2006-09-15 2006-09-15 ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 Expired - Fee Related JP4767139B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006250177A JP4767139B2 (ja) 2006-09-15 2006-09-15 ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法
US11/790,671 US7483318B2 (en) 2006-09-15 2007-04-26 Storage management process, storage management apparatus, and computer-readable medium storing storage management program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006250177A JP4767139B2 (ja) 2006-09-15 2006-09-15 ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法

Publications (2)

Publication Number Publication Date
JP2008071209A JP2008071209A (ja) 2008-03-27
JP4767139B2 true JP4767139B2 (ja) 2011-09-07

Family

ID=39188400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006250177A Expired - Fee Related JP4767139B2 (ja) 2006-09-15 2006-09-15 ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法

Country Status (2)

Country Link
US (1) US7483318B2 (ja)
JP (1) JP4767139B2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560691B2 (en) * 2007-06-19 2013-10-15 Microsoft Corporation Relocating item in distributed storage system
US8474799B2 (en) 2007-11-30 2013-07-02 Tokai Rubber Industries, Ltd. Fluid filled type vibration damping device
JP4606455B2 (ja) * 2007-12-20 2011-01-05 富士通株式会社 ストレージ管理装置、ストレージ管理プログラムおよびストレージシステム
US10142115B2 (en) * 2008-03-31 2018-11-27 International Business Machines Corporation Distributed storage network data revision control
JP5218284B2 (ja) * 2008-08-20 2013-06-26 富士通株式会社 仮想ディスク管理プログラム、ストレージ装置管理プログラム、マルチノードストレージシステム、および仮想ディスク管理方法
JP5309816B2 (ja) * 2008-09-09 2013-10-09 富士通株式会社 データ管理プログラム、データ管理装置、およびデータ管理方法
JP2010097385A (ja) * 2008-10-16 2010-04-30 Fujitsu Ltd データ管理プログラム、ストレージ装置診断プログラム、およびマルチノードストレージシステム
US11868498B1 (en) * 2009-04-20 2024-01-09 Pure Storage, Inc. Storage integrity processing in a storage network
US8108612B2 (en) * 2009-05-15 2012-01-31 Microsoft Corporation Location updates for a distributed data store
US8473677B2 (en) * 2009-09-29 2013-06-25 Cleversafe, Inc. Distributed storage network memory access based on memory state
JP5297479B2 (ja) * 2011-02-14 2013-09-25 エヌイーシーコンピュータテクノ株式会社 ミラーリング復旧装置、および、ミラーリング復旧方法
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9213709B2 (en) 2012-08-08 2015-12-15 Amazon Technologies, Inc. Archival data identification
US9251097B1 (en) 2011-03-22 2016-02-02 Amazon Technologies, Inc. Redundant key management
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US8782491B2 (en) * 2011-08-17 2014-07-15 Cleversafe, Inc. Detecting intentional corruption of data in a dispersed storage network
US9274864B2 (en) * 2011-10-04 2016-03-01 International Business Machines Corporation Accessing large amounts of data in a dispersed storage network
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9250811B1 (en) 2012-08-08 2016-02-02 Amazon Technologies, Inc. Data write caching for sequentially written media
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9092441B1 (en) * 2012-08-08 2015-07-28 Amazon Technologies, Inc. Archival data organization and management
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9354683B2 (en) 2012-08-08 2016-05-31 Amazon Technologies, Inc. Data storage power management
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
WO2016113882A1 (ja) * 2015-01-15 2016-07-21 株式会社日立製作所 ストレージシステムおよびストレージシステムのデータ保障方法
US10262024B1 (en) * 2015-05-19 2019-04-16 Amazon Technologies, Inc. Providing consistent access to data objects transcending storage limitations in a non-relational data store
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
WO2017119091A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 分散型ストレージシステム、データ格納方法、およびソフトウェアプログラム
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US11005825B2 (en) * 2018-11-13 2021-05-11 Seagate Technology Llc Sensor nodes and host forming a tiered ecosystem that uses public and private data for duplication
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
US10877684B2 (en) * 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11223681B2 (en) 2020-04-10 2022-01-11 Netapp, Inc. Updating no sync technique for ensuring continuous storage service in event of degraded cluster state
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640506A (en) * 1995-02-15 1997-06-17 Mti Technology Corporation Integrity protection for parity calculation for raid parity cache
US6088330A (en) * 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
US6078990A (en) * 1998-02-06 2000-06-20 Ncr Corporation Volume set configuration using a single operational view
JP3736134B2 (ja) * 1998-08-28 2006-01-18 日本電信電話株式会社 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体
US7017107B2 (en) * 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
JP2004302713A (ja) * 2003-03-31 2004-10-28 Hitachi Ltd 記憶システム及びその制御方法
JP4433372B2 (ja) * 2003-06-18 2010-03-17 株式会社日立製作所 データアクセスシステム及び方法
JP4460235B2 (ja) * 2003-07-10 2010-05-12 富士通株式会社 アーカイブ装置管理プログラム、アーカイブ装置管理方法およびアーカイブ装置
JP2005050073A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd データ復旧方法およびデータ記録装置
US7240236B2 (en) * 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
JP2006065697A (ja) * 2004-08-27 2006-03-09 Hitachi Ltd 記憶デバイス制御装置
JP2006185000A (ja) * 2004-12-27 2006-07-13 Hitachi Ltd ストレージ装置

Also Published As

Publication number Publication date
US7483318B2 (en) 2009-01-27
US20080068899A1 (en) 2008-03-20
JP2008071209A (ja) 2008-03-27

Similar Documents

Publication Publication Date Title
JP4767139B2 (ja) ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法
JP5887757B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US7133967B2 (en) Storage system, controller, control method and program product therefor
US5901327A (en) Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US5369758A (en) Checking for proper locations of storage devices in a storage array
EP1895414B1 (en) Storage control apparatus and failure recovery method for storage control apparatus
US7472250B2 (en) Storage control device, and control method for storage control device
US9081697B2 (en) Storage control apparatus and storage control method
CN103164293B (zh) 扩展计数密钥数据的基于块的端到端数据保护方法和系统
US20040073831A1 (en) Remote data mirroring
JP2868080B2 (ja) 通信監視制御装置及び通信監視制御方法
JP5699852B2 (ja) 情報処理装置、ストレージ制御方法およびプログラム
JP2009151519A (ja) ストレージ管理装置、ストレージ管理プログラムおよびストレージシステム
JP4884721B2 (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
JPH05233463A (ja) 記憶装置配列における障害表示方法および装置
JP2006139478A (ja) ディスクアレイシステム
JPH07200191A (ja) ディスクアレイ装置
JP2013045118A (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP2005309818A (ja) ストレージ装置、そのデータ読出方法、及びそのデータ読出プログラム
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
US8433949B2 (en) Disk array apparatus and physical disk restoration method
JP2009199266A (ja) データ転送制御装置、データ整合性判定方法及び記憶制御装置
US20030163757A1 (en) RAID subsystem and data input/output and recovery method in disk error mode
JP5365236B2 (ja) ストレージシステム
CN112328182B (zh) 一种raid数据管理方法、装置和计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110516

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110614

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees