JP2011215682A - ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 - Google Patents

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

Info

Publication number
JP2011215682A
JP2011215682A JP2010080272A JP2010080272A JP2011215682A JP 2011215682 A JP2011215682 A JP 2011215682A JP 2010080272 A JP2010080272 A JP 2010080272A JP 2010080272 A JP2010080272 A JP 2010080272A JP 2011215682 A JP2011215682 A JP 2011215682A
Authority
JP
Japan
Prior art keywords
data
stripe
storage
unformatted
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010080272A
Other languages
English (en)
Other versions
JP5655344B2 (ja
Inventor
Kenji Kobayashi
賢次 小林
秀夫 ▲高▼橋
Hideo Takahashi
Norihide Kubota
典秀 久保田
Jun Ito
惇 猪頭
Hidejiro Daikokuya
秀治郎 大黒谷
Kazuhiko Ikeuchi
和彦 池内
Chikashi Maeda
親志 前田
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 JP2010080272A priority Critical patent/JP5655344B2/ja
Priority to US13/073,409 priority patent/US8504768B2/en
Publication of JP2011215682A publication Critical patent/JP2011215682A/ja
Application granted granted Critical
Publication of JP5655344B2 publication Critical patent/JP5655344B2/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
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the system

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)

Abstract

【課題】論理フォーマットの完了前の記憶媒体へのアクセスにおいて記憶媒体の負荷の増加の抑制およびフォーマット完了までの時間の短縮が可能になる。
【解決手段】管理情報記憶部1cは、記憶媒体1b1〜1b4の記憶領域について論理フォーマットが行われたか否かを示す管理情報を記憶する。アクセス部1aは、記憶媒体1b1〜1b4のフォーマットの際に、記憶媒体1b1〜1b4に設定されたストライプに未フォーマット識別子を書き込み、ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプの記憶領域に新規データまたはフォーマットデータを書き込む。
【選択図】図1

Description

本件は、ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法に関する。
磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体を利用したストレージ装置では、記憶媒体をデータの読み書きに使用するために、予め記憶媒体を初期化するフォーマット処理が必要である。フォーマット処理には、記憶媒体のデジタル信号列をストレージ装置で読み書き可能な状態に規定パターンで書き直す物理フォーマットと、データ領域をホストOSの処理単位(例えば、ブロック単位)に区切って識別を施す論理フォーマットとがある。
物理フォーマットは、媒体のトラック単位の初期化処理であり、論理フォーマットは、物理フォーマットされたトラックのデータ領域のブロック単位のフォーマット処理を意味する。論理フォーマットでは、通常、媒体の全てのブロックについて処理が完了するまでに長時間(例えば、30分以上)を要する。このため、記憶媒体を使用する際には、予め初期化処理としてフォーマット処理をフォーマットが完了するまで長時間待つ必要があった。
これに対して、例えば、ホストコンピュータ等によるアクセス要求が、フォーマットが完了していない領域に対する要求である場合には当該領域に対して先に論理フォーマットを実行してから要求を受け付けたアクセスを行う等により、記憶媒体の接続後であって論理フォーマットが完了していない状態でもホストコンピュータ等のアクセス要求の受け付けを可能にする技術が知られている。これによって、ホストコンピュータは、論理フォーマットの完了を待たずに接続された記憶媒体にアクセス要求を行うことができる。
特開2003−29933号公報 特開2003−29934号公報 特開2003−241904号公報
しかし、上記の技術では、ホストコンピュータからアクセス要求がされた場合に、論理フォーマットおよびアクセスの両方の処理が連続して行われるので記憶媒体へのアクセス回数が増加し、ストレージ装置の処理の負荷および記憶媒体への負荷が大きいという問題点がある。
また、ホストコンピュータからのフォーマットが完了していない記憶領域に対するアクセス要求を受け付けた場合には、通常のアクセス要求の処理に比較してアクセス要求のデータを退避させる等の処理が加わり、アクセス要求の処理に要する時間が増加してアクセス要求の処理が遅延することになる。このため、なるべく早くフォーマット処理が完了した状態に移行させる方が望ましい。
本件はこのような点に鑑みてなされたものであり、論理フォーマットの完了前の記憶媒体へのアクセスにおいて記憶媒体の負荷の増加の抑制およびフォーマット完了までの時間の短縮が可能なストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法を提供することを目的とする。
上記目的を達成するために以下のようなストレージ装置が提供される。このストレージ装置は、複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶する。このストレージ装置では、アクセス部は、複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプを構成する記憶領域に新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込む。
また、上記目的を達成するために以下のようなストレージ装置制御プログラムが提供される。このストレージ装置制御プログラムは、複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御する。このストレージ装置制御プログラムでは、コンピュータを、複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプを構成する記憶領域に新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込むアクセス部として機能させる。
また、上記目的を達成するために以下のようなストレージ装置制御方法が提供される。このストレージ装置制御方法は、複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御する。このストレージ装置制御方法では、複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込む。次に、ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出す。次に、読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプを構成する記憶領域に新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込む。
開示のストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法によれば、論理フォーマットの完了前の記憶媒体のアクセス時に記憶媒体の負荷の増加の抑制が可能となり、また、フォーマット完了までの時間の短縮が可能となる。
第1の実施の形態のストレージ装置を示す図である。 第2の実施の形態のストレージ装置のハードウェア構成を示す図である。 第2の実施の形態のストレージ装置で記憶されるデータのデータ構造例を示す図である。 第2の実施の形態のストレージ装置の機能を示すブロック図である。 第2の実施の形態のBandwidth Writeを示す図である。 第2の実施の形態のRead Bandwidth Writeを示す図である。 第2の実施の形態のSmall Writeを示す図である。 第2の実施の形態の未フォーマット識別子を書き込む動作を示す図である。 第2の実施の形態の未フォーマット識別子が書き込まれた記憶領域を示す図である。 第2の実施の形態の未フォーマット識別子の書き込み中にデータの書き込みが競合した場合の動作を示す図である。 第2の実施の形態のデータをSmall Writeにより書き込む場合において記憶領域に未フォーマット識別子が書き込まれていたときの動作を示す図である。 第2の実施の形態のデータをRead Bandwidth Writeにより書き込む場合において記憶領域に未フォーマット識別子が書き込まれていたときの動作を示す図である。 第2の実施の形態のデータをSmall Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。 第2の実施の形態のデータをSmall Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。 第2の実施の形態のデータをRead Bandwidth Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。 第2の実施の形態のデータをRead Bandwidth Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。 第2の実施の形態の未フォーマット識別子が検出された領域に対して論理フォーマットが行われる場合の動作を示す図である。 第2の実施の形態の未フォーマット識別子書き込み処理の手順を示すフローチャートである。 第2の実施の形態のフォーマット中データ書き込み処理の手順を示すフローチャートである。 第2の実施の形態の未フォーマット識別子検出処理の手順を示すフローチャートである。 第2の実施の形態の未フォーマット識別子書き込み完了後データ書き込み処理の手順を示すフローチャートである。 第2の実施の形態の未フォーマット識別子書き込み完了後データ書き込み処理の手順を示すフローチャートである。 第2の実施の形態の未フォーマット識別子書き込み完了後データ書き込み処理の手順を示すフローチャートである。
以下、実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ装置を示す図である。本実施の形態のストレージ装置1は、アクセス部1a、記憶媒体1b1,1b2,1b3,1b4、管理情報記憶部1cを有する。
記憶媒体1b1,1b2,1b3,1b4は、データを記憶可能な記憶領域を有する。記憶媒体1b1,1b2,1b3,1b4には、それぞれの記憶媒体の一部の記憶領域で構成されるストライプが設定されている。記憶媒体1b1,1b2,1b3,1b4が有する記憶領域に対して、ストライプ単位でアクセス部1aによりデータが記憶される。
管理情報記憶部1cは、記憶媒体1b1,1b2,1b3,1b4の記憶領域について論理フォーマットが行われたか否かを示す管理情報を記憶する。
アクセス部1aは、記憶媒体1b1,1b2,1b3,1b4の初期化の際に複数の記憶媒体1b1,1b2,1b3,1b4のストライプの少なくとも一部に論理フォーマットが完了していないことを示す未フォーマット識別子を書き込むと共に、未フォーマット識別子を書き込んだストライプを構成する記憶領域について論理フォーマットが完了した旨を示す管理情報を、管理情報記憶部1cに対して記憶させる。
ここで、未フォーマット識別子は、例えば、データの所定の位置に特定の値が設定されている所定のデータ構造を有するデータとすることができる。未フォーマット識別子は、記憶媒体1b1〜1b4のストライプに記憶される。未フォーマット識別子が記憶されているストライプは、管理情報上は論理フォーマットが完了したものとして扱われているが、実際は論理フォーマットが完了していない。
次に、アクセス部1aは、ストライプの記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプの記憶領域に記憶されている既存データを読み出す。
次に、アクセス部1aは、アクセス対象のストライプから読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプに新規データまたは論理フォーマットにより書き込まれるフォーマットデータを書き込む。ここで、未フォーマット識別子は、読み出したデータが所定の位置に特定の値を有するか否かによって検出することができる。
なお、本実施の形態のストレージ装置1は、記憶媒体1b1,1b2,1b3,1b4の4個の記憶媒体を有するが、これに限らず、記憶媒体は3個以下であってもよく、5個以上であってもよい。
このように、ストレージ装置1では、アクセス部1aは、記憶媒体の初期化時に、記憶媒体をフォーマットせずに未フォーマット識別子を記憶媒体のストライプの一部を構成する記憶領域に書き込み、後で未フォーマット識別子をストライプから検出した際に、書き込み対象のデータまたはフォーマットデータをストライプに書き込む。これにより、アクセス部1aによる論理フォーマットの完了前の記憶媒体1b1,1b2,1b3,1b4のアクセス時に、記憶媒体1b1,1b2,1b3,1b4の負荷の増加の抑制が可能となり、また、フォーマット完了までの時間の短縮が可能となる。
[第2の実施の形態]
次に、ストレージ装置1を、RAID(Redundant Arrays of Inexpensive Disks)を構成するストレージ群を有するストレージ装置100に適用した実施の形態を、第2の実施の形態として説明する。
図2は、第2の実施の形態のストレージ装置のハードウェア構成を示す図である。ストレージ装置100は、装置全体の制御を行う制御部110a,110b、記憶デバイス120c〜120f、制御部110a,110bとホストコンピュータ300との接続制御を行うチャネルアダプタ130c〜130fを有する。
ストレージ装置100は、記憶デバイス120c〜120fに対するデータの入出力を行う。ストレージ装置100は、RAID0〜6等のディスクアレイの機能を有し、複数の記憶デバイスをまとめて1台の記憶デバイスとして管理する。
ホストコンピュータ300は、業務処理を実行するコンピュータであり、ファイバチャネルで構成されたLAN(Local Area Network)を介してストレージ装置100とデータ通信可能に接続されている。ホストコンピュータ300は、業務処理に使用するデータを、ストレージ装置100への保存およびストレージ装置100から読み出す。
制御部110aは、CPU(Central Processing Unit)111a、キャッシュメモリ112a、およびディスクアダプタ113c,113dを有する。
CPU111aは、OS(オペレーティングシステム)などに従って処理を実行し、各種制御を行う。また、制御部110aは、キャッシュメモリ112a、記憶デバイス120c,120d、チャネルアダプタ130c,130dなどの資源管理を行う。
キャッシュメモリ112aは、CPU111aがストレージ装置100を制御するために必要な制御データを記憶する。また、キャッシュメモリ112aは、記憶デバイス120c,120dに読み書きされる入出力データを一時的に記憶する。
ディスクアダプタ113c,113dは、それぞれ、対応する記憶デバイス120c,120dとの接続制御を行う。
また、制御部110aおよび制御部110bは、バス140によって接続されている。このバス140を介して、制御部110aおよび制御部110bの間で、制御情報やデータが通信される。ここで、制御部110bは、制御部110aと同一の構成であるため、説明を省略する。
記憶デバイス120c〜120fは、ハードディスクドライブ(HDD:Hard Disk Drive)であり、ホストコンピュータ300から送信されたシステムの利用者のデータまたはバックアップデータを記憶する。なお、システムの利用者のデータおよびバックアップデータは1個のハードディスクに記憶されている必要はなく、複数のハードディスクに渡って記憶されていてもよい。また、1個のハードディスクに複数の利用者のデータおよびバックアップデータが記憶されていてもよい。また、記憶デバイス120c〜120fは、例えば、SSD(Solid State Drive)等の不揮発性半導体メモリやその他のデータの記憶が可能な記憶媒体を用いてもよい。
チャネルアダプタ130c〜130fは、ホストコンピュータ300と制御部110a,110bとの接続制御を行う。例えば、チャネルアダプタ130cは、ホストコンピュータ300からの要求を受け付けて、制御部110aとの接続制御を行う。制御部110a,110bは、それぞれ複数個(図2ではそれぞれ2個)のチャネルアダプタ130c〜130fに接続可能になっている。すなわち、例えば制御部110aは、冗長構成が実現されるように、2つの異なるチャネルアダプタ130c,130dにそれぞれ接続されている。
なお、チャネルアダプタ130c〜130fとホストコンピュータ300との間の通信は、図2の例ではファイバチャネルで構成されたLANによって接続されているが、ファイバチャネル以外の接続方式によって接続されていてもよい。また、チャネルアダプタ130c〜130fとホストコンピュータ300との間の通信は、専用線やVPN(Virtual Private Network)を用いて、ストレージ装置100をホストコンピュータ300から遠隔地に設置するように構成してもよい。
なお、図2において、制御部110a,110bは、それぞれ2個図示し、ディスクアダプタ113c〜113fおよびチャネルアダプタ130c〜130fは、制御部110a,110bそれぞれに対してそれぞれ2個ずつ図示しているが、これらの数はそれぞれ任意である。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図3は、第2の実施の形態のストレージ装置で記憶されるデータのデータ構造例を示す図である。本実施の形態では、図3に示すデータが、ストレージ装置100が有する記憶デバイス120c〜120fに記憶される。
図3に示すデータは、1ブロックが520バイト(520bytes)の長さのデータであり、512バイトのデータ部と、8バイトのBCC(Block Check Code)を有する。BCCは、2バイトのCRC(Cyclic Redundancy Check)と、6バイトのブロックIDとを有する。データは、ストレージ装置100における記憶デバイス120c〜120fのストライプにおいて、ブロック毎に異なる記憶デバイスの記憶領域に記憶される。
データ部は、ストレージ装置100に記憶されるデータ本体であり、ホストコンピュータ300から送信されたデータを、所定の長さ(例えば、520バイト)を1ブロックとして、1ブロック毎に分割したものである。
BCCは、データ部の整合性を確認するための符号である。CRCは、データ部の誤りを検出するための冗長コードであり、データ部の値から所定の関数により生成される。また、ブロックIDは、データ部がストレージ装置100において記憶されている記憶領域の位置の異常を検出するための情報であり、そのデータのブロックに固有の値である。
なお、データのデータ構造は、ストレージ装置100の運用形態等に応じて、種々の変形例が考えられる。また、図3に示したもの以外の情報をデータに付加してもよい。
図4は、第2の実施の形態のストレージ装置の機能を示すブロック図である。本実施の形態のストレージ装置100は、ホストコンピュータ300とLANで接続されている。ストレージ装置100は、フォーマット制御部101、アクセス部102、記憶デバイス120c,120d,120e,120f、管理情報記憶部151、フラグ記憶部152を有する。
フォーマット制御部101は、アクセス部102に対して、記憶デバイス120c〜120fのストライプ1200を構成する記憶領域の論理フォーマットを要求するフォーマット要求を送信する。
アクセス部102は、フォーマット制御部101からのフォーマット要求を受け付けると、記憶デバイス120c〜120fの初期化を行う。アクセス部102は、記憶デバイス120c〜120fの初期化の際に、論理フォーマットの完了を報告するフォーマット完了報告をフォーマット制御部101に送信し、複数の記憶デバイス120c〜120fのストライプ1200を構成する記憶領域のうち、冗長数よりも1多い個数の記憶デバイスの記憶領域に論理フォーマットが完了していないことを示す未フォーマット識別子を有するデータ130a1を書き込むと共に、未フォーマット識別子を有するデータ130a1を書き込んだストライプの記憶領域について論理フォーマットが完了した旨を示す管理情報を管理情報記憶部151に記憶させる。ここで、冗長数とは、記憶デバイス120c〜120fのうちのいずれかが故障した場合にも記憶しているデータを復元可能な記憶デバイスの最大の個数である。例えば、RAID5の冗長数は、1であり、RAID6の冗長数は、2である。
データ130a1が有する未フォーマット識別子は、例えば、データ部の値が“0x0000・・・0”(すべての位が“0”)であり、ブロックIDが“0xFFFFFFFFFFFF”(以下、未フォーマットマークとする)に設定する。ここで、未フォーマット識別子は、本実施の形態における記憶デバイス120c〜120fのストライプ1200に記憶されるデータである。未フォーマット識別子は、未フォーマット識別子が記憶されているストライプが、管理テーブル上は論理フォーマットが完了したものとしてみなされると共に、実際は論理フォーマットが完了していないことを示す識別子である。なお、本実施の形態では、ブロックIDが“0xFFFFFFFFFFFF”であることを未フォーマットマークに使用しているが、これに限らず、ブロックIDについて任意の値を未フォーマットマークに使用することができる。また、記憶デバイス120c〜120fの記憶領域に記憶されるデータの任意の部分を未フォーマットマークの領域に用いることができる。
次に、アクセス部102は、ストライプ1200の記憶領域への新規データの書き込みのアクセスの際に、アクセスの対象のストライプの記憶領域に記憶されている既存データを読み出す。
次に、アクセス部102は、読み出した既存データから未フォーマット識別子を検出した場合には、アクセスの対象のストライプの記憶領域に新規データまたは論理フォーマットにより書き込まれるフォーマットデータを書き込む。ここで、未フォーマット識別子は、記憶領域から読み出したデータがデータ部に“0x0000・・・0”を有するか、また、CRCの値が“0”であるか、また、ブロックIDが未フォーマット識別子を有するデータ130a1のブロックIDに設定される未フォーマットマークである“FFFFFFFFF”であるか、によって検出することができる。
また、アクセス部102は、ホストコンピュータ300からのデータの書き込みのアクセス要求を受け付けた場合には、記憶デバイス120c〜120fの記憶領域へのアクセスの際に、アクセスの対象のストライプの記憶領域に記憶されている既存データを読み出す。アクセス部102は、読み出した既存データから未フォーマット識別子を検出し、アクセスの対象のストライプの記憶領域に新規データを書き込むときには、アクセスの対象のストライプの記憶領域に当該新規データを書き込む。一方、アクセス部102は、読み出した既存データから未フォーマット識別子を検出し、かつアクセスの対象のストライプの記憶領域に新規データを書き込まないときには、アクセスの対象のストライプの記憶領域にフォーマットデータを書き込む。
また、アクセス部102は、記憶デバイス120c〜120fの記憶領域の記憶内容を順次読み出してパトロールを行い、当該記憶領域から未フォーマット識別子を検出した場合には、未フォーマット識別子を検出したストライプの記憶領域にフォーマットデータを書き込む。これにより、未だホストコンピュータ300によるデータ書き込みのアクセス要求がないストライプについても論理フォーマットが行われる。
また、アクセス部102は、パトロールにより記憶デバイス120c〜120fのすべてのストライプにフォーマットデータの書き込みが完了したときには、フラグ記憶部152のフォーマットデータ書き込み完了フラグを有効に設定する。
また、アクセス部102は、詳しくは図6において後述するRead Bandwidth Writeによって、ストライプ1200の記憶領域への新規データの書き込みのアクセスによりストライプ1200の記憶領域に記憶されている既存データのうちの一部の記憶領域を、新規データにより更新することができる。この場合、アクセス部102は、新規データにより更新しない既存データをストライプ1200から読み出す。次に、アクセス部102は、新規データと読み出した既存データとにより更新後のパリティデータである新規パリティを算出する。次に、アクセス部102は、新規データにより更新するストライプの記憶領域に記憶された既存データを新規データで更新すると共に、そのストライプの更新前のパリティデータである既存パリティを新規パリティで更新する。
また、アクセス部102は、詳しくは図7において後述するSmall Writeによって、ストライプの記憶領域への新規データの書き込みのアクセスによりストライプの記憶領域に記憶されている既存データのうちの一部の記憶領域を、新規データにより更新することができる。この場合、アクセス部102は、新規データにより更新する既存データとストライプの更新前のパリティデータである既存パリティとを読み出す。次に、アクセス部102は、新規データと読み出した既存データと読み出した既存パリティとにより更新後のパリティデータである新規パリティを算出する。次に、アクセス部102は、新規データにより更新するストライプの記憶領域に記憶された既存データを新規データで更新すると共に、既存パリティを新規パリティで更新する。
記憶デバイス120c〜120fは、RAID5を構成し、データを記憶可能な記憶領域を有する。記憶デバイス120c〜120fには、それぞれの記憶デバイスの一部の記憶領域で構成されるストライプ1200が設定されている。記憶デバイス120c〜120fが有する記憶領域に対して、ストライプ単位でアクセス部102によりデータが記憶される。なお、これに限らず、記憶デバイス120c〜120fは、RAID6またはその他のRAIDを構成してもよい。
管理情報記憶部151は、記憶デバイス120c〜120fの記憶領域について、論理フォーマットが行われたか否かを示す管理情報を格納する管理テーブルを記憶する。この管理テーブルにより、記憶デバイス120c〜120fの記憶領域について、ブロック毎にフォーマットが完了したか否かが管理される。なお、本実施の形態では、未フォーマット識別子が書き込まれた記憶領域については、フォーマットが完了していないが、管理テーブル上は、フォーマットが完了したものとみなされる。
フラグ記憶部152は、記憶デバイス120c〜120fのすべてのストライプにフォーマットデータの書き込みが完了したか否かを示すフォーマットデータ書き込み完了フラグを記憶する。フォーマットデータ書き込み完了フラグは、記憶デバイス120c〜120fのすべてのストライプにフォーマットデータの書き込みが完了していれば、有効を示す値(例えば、“1”)が設定される。一方、記憶デバイス120c〜120fのストライプのうち、フォーマットデータの書き込みがされていないストライプがあれば、無効を示す値(例えば、“0”)が設定される。
本実施の形態のストレージ装置100は、RAID5で運用した場合、書き込み処理は、Bandwidth Write,Read Bandwidth Write,Small Writeの3種類の書き込み方法を使用可能である。Bandwidth Writeは、詳しくは図5において後述するが、あるストライプを構成するすべての記憶デバイスの記憶領域のデータを更新する書き込み方法である。また、Read Bandwidth Write,Small Writeは、ストライプにおける一部の記憶デバイスのデータを更新する書き込み方法である。
本実施の形態のストレージ装置100は、ホストコンピュータ300からのデータの書き込みのアクセス要求について、Read Bandwidth Write,Small Writeを使用する場合には、図21から図23において後述する未フォーマット識別子書き込み完了後データ書き込み処理でデータを書き込む。一方、データの書き込みのアクセス要求について、Bandwidth Writeを使用する場合には、ストレージ装置100は、ホストコンピュータ300に対してデータ書き込み報告を送信後、書き込み要求のパリティを作成し、データおよび作成したパリティを、記憶デバイス120c〜120fのストライプに書き込む。
ここで、本実施の形態では、Bandwidth Write,Read Bandwidth Write,Small Writeのいずれの書き込み方法においても、ストライプのすべての記憶領域に対して、書き込み要求のデータ、フォーマットデータのいずれかを書き込む。これにより、ストライプのデータ構造は、論理フォーマットの後にデータを書き込んだ場合と同様になる。
ストレージ装置100では、更新されるデータのブロックが記憶されている記憶領域と更新されないデータのブロックが記憶されている記憶領域とを解析し、書き込みの際に更新されるデータのブロックの数に応じて、これらの3種類の書き込み方法を使い分ける。3種類の書き込み方法を使い分けることにより、更新するデータのブロックが記憶されている記憶領域には書き込みを行い、更新しないデータのブロックが記憶されている記憶領域に書き込みを省略することで、記憶デバイスに対するアクセス時の負荷を軽減する。
以下に、3種類の書き込み方法の詳細を示す。
図5は、第2の実施の形態のBandwidth Writeを示す図である。図5に従って、本実施の形態のストレージ装置100におけるBandwidth Writeを説明する。
Bandwidth Writeは、記憶デバイス120c〜120fのストライプに新たに書き込まれるデータについてXOR(eXclusive OR:排他的論理和)演算することで、ストライプに書き込まれるデータの更新後のパリティ(parity)である新規パリティを作成し、新規データおよび新規パリティをストライプの記憶領域に書き込む書き込み方法である。Bandwidth Writeは、アクセス要求において、すべてのデータのブロックが新規データの書き込みにより更新される場合に適している。
Bandwidth Writeについて、具体例により説明する。ここで、図5に示すように、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1201a1に、書き込みのアクセス要求の対象の記憶領域に既に記憶されている更新対象の既存データであるデータ131a1、データ131a2、データ131a3およびデータ131a1〜131a3から生成された既存パリティである既存パリティのデータ131a4が記憶されているものとする。
ここで、図5におけるデータ131a1(データ O1:BCC B1)の左側の“O1”は、“O”が「既存データ(Old)」であることを示す。また、“1”の番号は、本実施の形態において説明の便宜上割り当てた番号であり、後述する記憶デバイス120c〜120fのストライプ1201b1において、データ131a1と同一の記憶領域に対して書き込みのアクセス要求による更新により上書きで書き込まれる新規データであるデータ131b1(の左側の“N1”の“1”)と対応していることを示す。
また、データ131a1の右側の“B1”は、“B”が「BCC」であることを示し、“1番目”のBCCであることを示す。この番号は、本実施の形態において説明の便宜上割り当てたものであり、異なるデータのBCC同士は互いに異なることを示す。
また、データ131a2(データ O2:BCC B2)の左側の“O2”は、同様にストライプ1201b1においてデータ131a2と同一の記憶領域に対して更新により書き込まれる新規データであるデータ131b2と対応することを示す。また、データ131a3(データ O3:BCC B3)の左側の“O3”は、同様にストライプ1201b1の同一の記憶領域に対する新規データであるデータ131b3と対応することを示す。また、既存パリティであるデータ131a4(データ OP1:BCC B4)の左側の“OP1”は、“OP”が、既存データであるデータ131a1〜131a3から生成された「既存パリティ(Old Parity)」であることを示し、“1”は、同様にストライプ1201b1の同一の記憶領域に対して更新により書き込まれる新規パリティであるデータ131a4と対応することを示す。
また、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ131b1,131b2,131b3の書き込みのアクセス要求があったものとする。
ストレージ装置100のアクセス部102は、データ131b1,131b2,131b3の書き込みのアクセス要求を受け付けると、データ131b1と131b2と131b3とのXOR演算を行って新規パリティであるデータ131b4を算出する。
次に、アクセス部102は、データ131b1,131b2,131b3,131b4を、アクセス要求の対象の既存のデータが記憶されていた記憶デバイス120c〜120fのストライプに書き込む。これにより、既存のデータが記憶されていたストライプの記憶内容が上書きされてストライプ1201a1からストライプ1201b1に更新される。
ここで、図5におけるデータ131b1(データ N1:BCC B5)の左側の“N1”は、“N”が「新規(New)データ」であることを示し、“5”の番号は、上記のように、ストライプ1201a1におけるデータ131b1の書き込み対象の記憶領域に既に記憶されており、データ131b1の書き込みにより更新される既存データであるデータ131a1と対応していることを示す。また、データ131b2(データ N2:BCC B2)の左側の“N2”は、同様にストライプ1201a1においてデータ131b2が書き込まれる記憶領域に対する既存データであるデータ131a2と対応することを示す。また、データ131b3(データ N3:BCC B3)の左側の“N3”は、同様にストライプ1201a1においてデータ131b3が書き込まれる記憶領域に対する既存データであるデータ131a3と対応することを示す。また、新規パリティであるデータ131b4(データ NP1:BCC B4)の左側の“NP1”は、“NP”が、新規データであるデータ131b1〜131b3から生成された「新規パリティ(New Parity)」であることを示し、“1”は、同様にストライプ1201a1が書き込まれる記憶領域に記憶されており、データ131b4の書き込みより更新される既存パリティであるデータ131a4と対応することを示す。
図6は、第2の実施の形態のRead Bandwidth Writeを示す図である。図6に従って、本実施の形態のストレージ装置100におけるRead Bandwidth Writeを説明する。
Read Bandwidth Writeは、更新対象以外の既存のデータである既存データを記憶デバイス120c〜120fのストライプから読み出し、読み出した既存データおよび新たに書き込まれる新規データについてXOR演算することで新規パリティを作成し、新規データおよび新規パリティをストライプの記憶領域に書き込む書き込み方法である。Read Bandwidth Writeは、アクセス要求において、新規データで更新されるブロックと既存データが更新されないブロックとが混在する場合であって、更新されるブロックが更新されないブロックよりも多い場合に適している。
Read Bandwidth Writeについて、具体例により説明する。ここで、図6に示すように、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1201c1に、書き込みのアクセス要求による更新対象の既存データであるデータ131c1(データ O4:BCC B9)、データ131c2(データ O5:BCC B10)、データ131c3(データ O6:BCC B11)および既存パリティであるデータ131c4(データ OP2:BCC B12)が記憶されているものとする。さらに、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ131d2(データ N4:BCC B13),131d3(データ N5:BCC 14)の書き込みのアクセス要求があったものとする。
アクセス部102は、新規データであるデータ131d2,131d3の書き込みのアクセス要求を受け付けると、記憶デバイス120c〜120fのストライプ1201c1に記憶されている既存データであるデータ131c1を読み出す。次に、アクセス部102は、読み出したデータ131c1およびアクセス要求を受け付けたデータ131d2と131d3とのXOR演算を行って、新規パリティであるデータ131d4を算出する。
次に、アクセス部102は、データ131d2,131d3,131d4を、アクセス要求の対象の既存データが記憶されていた記憶デバイス120c〜120fのストライプに書き込む。これにより、既存のデータが記憶されていたストライプの記憶内容が上書きされてストライプ1201c1からストライプ1201d1に更新される。
図7は、第2の実施の形態のSmall Writeを示す図である。図7に従って、本実施の形態のストレージ装置100におけるSmall Writeを説明する。
Small Writeは、更新対象のデータに対応する既存のデータおよびストライプの既存のパリティを記憶デバイス120c〜120fのストライプから読み出し、読み出した既存データおよび既存パリティならびに新たに書き込まれる新規データについてXOR演算することで新規パリティを作成し、新規データおよび新規パリティをストライプの記憶領域に書き込む書き込み方法である。Small Writeは、アクセス要求において、新規データで更新されるブロックと既存データが更新されないブロックとが混在する場合であって、更新されるブロックが更新されないブロックよりも少ない場合に適している。
Small Writeについて、具体例により説明する。ここで、図7に示すように、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1201e1に、アクセス要求による更新対象の既存データであるデータ131e1(データ O7:BCC B16)、データ131e2(データ O8:BCC B17)、データ131e3(データ O9:BCC B18)および既存パリティであるデータ131e4(データ OP3:BCC B19)が記憶されているものとする。さらに、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ131f1(データ N6:BCC B20)の書き込みのアクセス要求があったものとする。
アクセス部102は、新規データであるデータ131f1の書き込みのアクセス要求を受け付けると、記憶デバイス120c〜120fのストライプ1201e1に記憶されている既存データであって、アクセス要求のデータ131f1に対応するデータ131e1および既存パリティのデータ131e4を読み出す。次に、アクセス部102は、ストライプから読み出したデータ131e1,131e4とアクセス要求を受け付けたデータ131f1とのXOR演算を行って、新規パリティであるデータ131f4を算出する。
次に、アクセス部102は、データ131f1,131f4を、アクセス要求の対象の既存のデータが記憶されていた記憶デバイス120c〜120fのストライプに書き込む。これにより、既存のデータが記憶されていたストライプの記憶内容が上書きされて、ストライプ1201e1からストライプ1201f1に更新される。
次に、本実施の形態のストレージ装置100における未フォーマット識別子を記憶デバイス120c〜120fの記憶領域に書き込む動作について説明する。
図8は、第2の実施の形態の未フォーマット識別子を書き込む動作を示す図である。本実施の形態のストレージ装置100は、記憶デバイス120c〜120fの初期化時に論理フォーマットを行わずに、各ストライプの記憶領域に当該ストライプに論理フォーマットが行われていないことを示す未フォーマット識別子を書き込む。
ストレージ装置100が未フォーマット識別子を書き込む処理について、具体例により説明する。ここで、図8に示すように、ストレージ装置100が有する記憶デバイス120c〜120fのすべての記憶領域は、論理フォーマットが行われていないフォーマット未完了領域であるものとする。また、ストライプ1202a1は、論理フォーマットが行われていないフォーマット未完了領域のうちの1個のストライプに割り当てられた記憶領域であるものとする。
ここで、ストライプ1202a1の各ブロックの左側の“−”は、ブロックのデータ部に記憶デバイス120c〜120fの初期状態のまま上書きされていないことを示す。また、各ブロックの右側の“−”は、同様にブロックのBCCが初期状態のまま上書きされていないことを示す。
さらに、フォーマット制御部101からアクセス部102に対して、記憶デバイス120c〜120fの論理フォーマットの実行を要求するフォーマット要求があったものとする。
ストレージ装置100のアクセス部102は、フォーマット制御部101からの記憶デバイス120c〜120fのフォーマット要求を受け付けると、フォーマット制御部101に対して論理フォーマットの完了を報告するフォーマット完了報告を出力すると共に、記憶デバイス120c〜120fの各ストライプに未フォーマット識別子を書き込む。ここで、未フォーマット識別子であるデータ132a1,132a2の左側の“0”は、データ132a1の有する値が“0x0000・・・0”であることを示す。また、データ132a1,132a2の右側の“M”は、BCCのブロックIDが未フォーマットマークである“0xFFFFFFFFFFFF”であって、かつ、CRCが“0”であることを示す。これにより、記憶デバイス120c〜120fの各ストライプの一部の記憶領域に未フォーマット識別子であるデータ132a1,132a2が書き込まれることにより、フォーマットが完了しておらず、かつ、未フォーマット識別子が書き込まれていないフォーマット未完了領域であるストライプ1202a1から、一部の記憶領域に未フォーマット識別子が書き込まれているストライプ1202b1に更新される。すなわち、ストライプ1202a1に未フォーマット識別子が書き込まれることにより、ストライプ1202b1に示す未フォーマット識別子領域になる。また、このときアクセス部102は、ストライプ1202b1の記憶領域が論理フォーマットされたものとして管理テーブルを更新する。
このとき、アクセス部102は、ストライプの記憶領域のうち、RAIDの冗長数+1の個数(例えば、2)の記憶デバイスのブロックに未フォーマット識別子を書き込む。これにより、例えば、アクセス部102がストライプ1202b1の未フォーマット識別子を検出する際に、ストライプ1202b1の記憶デバイス120cの記憶領域の読み取りエラーが生じた場合にも、記憶デバイス120dに書き込まれた未フォーマット識別子を検出することができる。従って、ストライプ1202b1に書き込まれた未フォーマット識別子の検出が可能になる。また、ストライプのすべての記憶領域に未フォーマット識別子を書き込んだ場合に比較して、未フォーマット識別子の書き込みに要する時間が短縮でき、ストレージ装置100の処理の負荷や記憶デバイス120c〜120fの負荷を軽減できる。ここで、RAIDの冗長数は、RAIDを構成する記憶デバイスが同時に故障してもデータを復元可能な台数とする。例えば、RAID5の場合、記憶デバイスが1台故障しても記憶しているデータを復元することができる。従って、RAID5の冗長数は、1となる。RAID6の冗長数は、同様に2となる。
なお、これに限らず、アクセス部102は、ストライプを構成する記憶領域のうち、1台の記憶デバイスの記憶領域のみに未フォーマット識別子を書き込んでもよく、3台以上の記憶デバイスの記憶領域に未フォーマット識別子を書き込んでもよい。また、アクセス部102は、ストライプを構成する記憶領域のうちすべての記憶デバイスの記憶領域に未フォーマット識別子を書き込んでもよい。
次に、アクセス部102は、未フォーマット識別子を書き込んだストライプの記憶領域が論理フォーマットされたものとして、管理情報記憶部151に記憶されている管理テーブルを更新する。これにより、未フォーマット識別子が書き込まれたストライプは、実際には論理フォーマットが完了していないが、論理フォーマットが完了したものとして扱われる。そして、未フォーマット識別子が書き込まれたストライプの記憶領域には、後にストライプから未フォーマット識別子が検出された際に、フォーマットデータやアクセス要求のデータが書き込まれる。
また、各ストライプに未フォーマット識別子を書き込んでいる際に、ホストコンピュータ300からデータの書き込みのアクセス要求がされる場合も生じ得る。この場合については、図10、図18、図19において後述する。
また、アクセス部102は、ストレージ装置100の記憶デバイス120c〜120fのRAID構成を示す装置情報を取得してRAID種別を判定し、構成がRAID1等のミラーリング構造である場合等、未フォーマット識別子の書き込みに適さない場合には、通常の論理フォーマットを実行してもよい。
図9は、第2の実施の形態の未フォーマット識別子が書き込まれた記憶領域を示す図である。本実施の形態のストレージ装置100は、図8において前述したように、RAIDを構成する記憶デバイス120c〜120fについて、初期化時に各ストライプの記憶領域に未フォーマット識別子を書き込む。ストレージ装置100により未フォーマット識別子が書き込まれたストライプの記憶領域を、図9に従って説明する。
本実施の形態のストレージ装置100が有する記憶デバイス120c〜120fは、初期化以前には、図9のストライプ1202a1,1202a2,1202a3,1202a4に示すように、すべての記憶領域について論理フォーマットが行われておらず、また、データが書き込まれていないフォーマット未完了領域である。
本実施の形態では、ストライプ1202b1,1202b2,1202b3,1202b4に示すように、アクセス部102が初期化処理として記憶デバイス120c〜120fの各ストライプに未フォーマット識別子を書き込むことにより、未フォーマット識別子領域にする。このとき、アクセス部102は、上記のように各ストライプに対して冗長数+1の個数の記憶領域に未フォーマット識別子を書き込むので、ストライプの全記憶領域に未フォーマット識別子を書き込んだ場合や、ストライプの全記憶領域に論理フォーマットを行った場合に比較して、未フォーマット書き込みの処理時間を短縮でき、ストレージ装置100の処理の負荷や記憶デバイス120c〜120fの負荷を軽減できる。
ここで、各ストライプを構成する記憶領域の個数と、未フォーマット識別子が書き込まれる記憶領域の個数との関係は、以下の通りとなる。例えば、3個のデータ記憶ドライブと1個のパリティドライブとの合計4個の記憶デバイスを用いるRAID5のシステムの場合、図9に示すように、同一ストライプを構成する4個の記憶領域中2個の記憶領域に未フォーマット識別子が書き込まれることになる。また、図示しない15個のデータ記憶ドライブと1個のパリティドライブとの合計16個の記憶デバイスを用いるRAID5のシステムの場合、16個中2個の記憶領域に未フォーマット識別子が書き込まれることになる。このように、すべての記憶領域にフォーマットを完了させるフォーマットデータ(またはフォーマットが完了したものとみなさせる未フォーマット識別子等のデータ)を書き込む方法に比較して、RAIDを構成する記憶デバイスの個数が多い場合にも、未フォーマット識別子を書き込む記憶領域の個数は、増加しない。このため、多数の記憶デバイスを有するRAIDシステムにおいて、未フォーマット書き込みに要する処理時間の短縮ならびにストレージ装置100の処理の負荷や記憶デバイス120c〜120fの負荷の軽減の効果がより大きくなる。
次に、本実施の形態のストレージ装置100における未フォーマット識別子の書き込み中にデータの書き込みが競合した場合の動作について説明する。
図10は、第2の実施の形態の未フォーマット識別子の書き込み中に、データの書き込みが競合した場合の動作を示す図である。図10に従って、本実施の形態のストレージ装置100において未フォーマット識別子の書き込み中にデータの書き込みが競合した場合の動作について説明する。
ここで、図10に示すように、アクセス要求のデータが書き込まれるストライプである、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1202c1には、フォーマットが行われておらず、未フォーマット識別子も書き込まれておらず、フォーマット未完了領域であるものとする。ここで、記憶デバイス120c〜120fの各記憶領域についてフォーマット(および管理テーブル上においてフォーマットが完了したものとみなされる未フォーマット識別子の書き込みのいずれか)が完了したか否かについては、管理情報記憶部151に記憶されている管理テーブルに基づいて管理される。また、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ132d1(データ N11:BCC B31)の書き込みのアクセス要求があるものとする。さらに、アクセス部102は、データ132d1の書き込みのアクセス要求に応じて、データ132d1およびデータ132d1による更新後のパリティである新規パリティを記憶デバイス120c〜120fに書き込むものとする。
ストレージ装置100のアクセス部102は、図8において前述したように、フォーマット制御部101からのフォーマット要求を受け付けると、フォーマット制御部101に対して論理フォーマットの完了を報告するフォーマット完了報告を出力すると共に、記憶デバイス120c〜120fのすべてのストライプに対して順に未フォーマット識別子を書き込んでいく。また、このときアクセス部102は、未フォーマット識別子を書き込んだ記憶領域が論理フォーマットされたものとして管理テーブルを更新する。
この未フォーマット識別子の書き込み時の処理について、詳しくは図18において説明するが、アクセス部102は、このすべての記憶領域に対する未フォーマット識別子の書き込みの実行中に、ホストコンピュータ300からのデータ132d1の書き込みのアクセス要求を受け付けると、ホストコンピュータ300に対してデータの書き込みの完了を報告するアクセス完了報告を出力する。
次に、管理テーブルを参照して、書き込みのアクセス要求の対象の記憶領域がフォーマット未完了領域であった場合、アクセス部102は、ホストコンピュータ300から受け付けた新規データであるデータ132d1を書き込むストライプにおける、データ132d1の書き込みにより更新されない記憶領域に対して書き込むフォーマットデータであるデータ132d2,132d3を作成する。次に、アクセス部102は、データ132d1〜132d3のXOR演算を行って、新規パリティであるデータ132d4を算出する。
次に、アクセス部102は、データ132d1〜132d4を、記憶デバイス120c〜120fのフォーマット未完了領域であるストライプ1202c1に書き込む。これにより、新規データであるデータ132d1〜132d3および新規データのパリティであるデータ132d4がストライプ1202d1に示すように書き込まれると共に、ストライプ1202d1の論理フォーマットが完了する。また、このときアクセス部102は、ストライプ1202d1の記憶領域が論理フォーマットされたものとして管理テーブルを更新する。
次に、アクセス部102は、次の記憶領域について未フォーマット識別子の書き込みを行う。以上の処理を繰り返すことで、記憶デバイス120c〜120fのすべての記憶領域について未フォーマット識別子が書き込まれ、またはホストコンピュータ300からの書き込みのアクセス要求のデータもしくはフォーマットデータが書き込まれる。
次に、本実施の形態のストレージ装置100において、データを書き込む記憶領域に未フォーマット識別子が既に書き込まれていた場合の動作について説明する。
図11は、第2の実施の形態のデータをSmall Writeにより書き込む場合において、記憶領域に未フォーマット識別子が書き込まれていたときの動作を示す図である。図11に従って、本実施の形態のストレージ装置100においてデータをSmall Writeにより書き込む場合に、書き込み先のストライプに対して既に記憶領域に未フォーマット識別子が書き込まれていたときの動作について説明する。
ここで、図11に示すように、アクセス要求のデータが書き込まれるストライプである、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1202e1には、未フォーマット識別子が書き込まれているものとする。また、ホストコンピュータ300からストレージ装置100に対して、新規データであるデータ132f1の書き込みのアクセス要求があるものとする。さらに、アクセス部102は、データ132f1の書き込みのアクセス要求に応じて、記憶デバイス120c〜120fにデータ132f1およびデータ132f1による更新後のパリティである新規パリティをSmall Writeにより書き込む予定であるものとする。
ストレージ装置100のアクセス部102は、ホストコンピュータ300からのデータ132f1の書き込みのアクセス要求を受け付けると、ホストコンピュータ300に対してデータの書き込みの完了を報告するアクセス完了報告を出力する。
次に、アクセス部102は、ホストコンピュータ300から受け付けた新規データであるデータ132f1を書き込むストライプであるストライプ1202e1における、データ132f1に対応する既存データであるデータ132e1および既存パリティであるデータ132e4を1202e1から読み出す。これにより、アクセス部102は、読み出したストライプ1202e1から未フォーマット識別子であるデータ132e1を検出する。
本実施の形態では、アクセス部102は、読み出したデータ132e1が、BCCのブロックIDが未フォーマットマーク(“0xFFFFFFFFFFFF”)であって、かつ、CRCが“0”が設定されている未フォーマット識別子である場合、データ132e1が記憶されていたストライプ1202e1が未フォーマットであると判断する。ここで、本実施の形態では、ストライプに記憶されているデータのブロックIDが、偶然に未フォーマットマークと同一になってしまう可能性を考慮して、未フォーマット識別子の検出時には、データ部のCRCが“0”であるか否かもチェックする。
本実施の形態では、未フォーマットマークが付されたデータのデータ部は、“0”が設定されるので、未フォーマットの記憶領域からデータを読み出してCRCでチェックした場合には、BCCエラーとして扱われる(図21のステップS46参照)。そして、BCCエラーが発生した場合、さらにブロックIDから未フォーマットマークを検出したか否かを判定し、ブロックIDから未フォーマットマークを検出した場合に、未フォーマット識別子を検出したものとする。
ここで、ストライプ1202e1は、未フォーマット識別子が記憶されている記憶領域を含むストライプ(以下、未フォーマット識別子領域とする)であり、ストライプ1202e1の既存パリティとして読み出されたデータ132e4を記憶する記憶領域は、正しく算出されたパリティではない。このため、データ132e1,132e4は、Small Writeによる新規パリティの算出に使用することができない。従って、本実施の形態では未フォーマット識別子が検出されたストライプ1202e1に対して、データ132f1をSmall Writeとして書き込む予定であっても、Small Writeを行わない。この場合、アクセス部102は、Bandwidth Writeと同様に、ホストコンピュータ300から受け付けた新規データであるデータ132f1を書き込むストライプにおける、データ132f1の書き込みにより更新されない記憶領域に書き込むフォーマットデータであるデータ132f2,132f3を作成する。次に、アクセス部102は、データ132f1〜132f3のXOR演算を行って、新規パリティであるデータ132f4を算出する。
次に、アクセス部102は、データ132f1〜132f4を、記憶デバイス120c〜120fの未フォーマット識別子領域であるストライプ1202e1に書き込む。これにより、新規データであるデータ132f1〜132f3および新規データのパリティであるデータ132f4がストライプ1202f1に示すように書き込まれると共に、ストライプ1202f1の論理フォーマットが完了する。なお、図11の例では、Small Writeの読み出しにより既存データであるデータ132e1から未フォーマット識別子が検出された場合を示すが、既存パリティであるデータ132e4から未フォーマット識別子が検出された場合も同様である。
図12は、第2の実施の形態のデータをRead Bandwidth Writeにより書き込む場合において、記憶領域に未フォーマット識別子が書き込まれていたときの動作を示す図である。図12に従って、本実施の形態のストレージ装置100においてデータをRead Bandwidth Writeにより書き込む場合に、書き込み先のストライプに対して既に記憶領域に未フォーマット識別子が書き込まれていたときの動作について説明する。
ここで、図12に示すように、アクセス要求のデータが書き込まれるストライプである、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1202g1には、未フォーマット識別子が書き込まれている未フォーマット識別子領域であるものとする。また、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ132h2,132h3の書き込みのアクセス要求があるものとする。さらに、アクセス部102は、データ132h1の書き込みのアクセス要求に応じて、記憶デバイス120c〜120fにデータ132h2,132h3およびデータ132h2,132h3による更新後のパリティである新規パリティをRead Bandwidth Writeにより書き込む予定であるものとする。
ストレージ装置100のアクセス部102は、ホストコンピュータ300からのデータ132h2,132h3の書き込みのアクセス要求を受け付けると、ホストコンピュータ300に対してデータの書き込みの完了を報告するアクセス完了報告を出力する。
次に、アクセス部102は、ホストコンピュータ300から受け付けた新規データであるデータ132h2,132h3を書き込むストライプであるストライプ1202g1における、アクセス要求によりデータが更新されない記憶領域に記憶されている既存データであるデータ132g1を読み出す。これにより、アクセス部102は、ストライプ1202g1から未フォーマット識別子を有するデータ132g1を検出する。
図12では、図11と同様に、アクセス部102は、読み出したデータ132g1のBCCにおけるCRCの値が0であり、ブロックIDが未フォーマットマークである場合、データ132g1が記憶されていたストライプ1202g1が未フォーマット識別子領域であると判断する。
ここで、ストライプ1202g1は、未フォーマット識別子を有するデータが記憶されている記憶領域で構成されており、ストライプ1202g1の既存データとして読み出されたデータ132g1は、未フォーマット識別子を有するため、Read Bandwidth Writeによる新規パリティの算出にデータ132g1を使用することができない。従って、図12では、未フォーマット識別子が検出されたストライプ1202g1に対して、データ132h2,132h3をRead Bandwidth Writeとして書き込む予定であっても、Read Bandwidth Writeを行わない。この場合、アクセス部102は、Bandwidth Writeと同様に、ホストコンピュータ300から受け付けた新規データであるデータ132h2,132h3を書き込むストライプにおける、データ132h2,132h3の書き込みにより更新されない記憶領域に対して書き込むフォーマットデータであるデータ132h1を作成する。次に、アクセス部102は、データ132h1〜132h3のXOR演算を行って、新規パリティであるデータ132h4を算出する。
次に、アクセス部102は、データ132h1〜132h4を、記憶デバイス120c〜120fの未フォーマット識別子領域であるストライプ1202g1に書き込む。これにより、新規データであるデータ132h1〜132h3および新規データのパリティであるデータ132h4がストライプ1202h1に示すように書き込まれると共に、ストライプ1202h1の論理フォーマットが完了する。
次に、本実施の形態のストレージ装置100において、Small WriteまたはRead Bandwidth Writeにおける書き込みの前の読み出しで、正常なデータおよび未フォーマット識別子のいずれも検出されなかった場合の動作について説明する。
ストレージ装置100は、Small WriteおよびRead Bandwidth Writeを使用する書き込みにおいて、図6および図7において前述したように、書き込みの前に書き込み対象のストライプから一部のデータを読み出す。本実施の形態では、この書き込みの前のデータ読み出しを利用して、書き込み対象のストライプから未フォーマット識別子の検出を行う。ここで、記憶デバイスの障害等によりデータの読み出しに失敗する場合や、読み出しは成功したがデータのBCCが不正であるBCCエラーが発生する場合がある。また、図9において前述したように、本実施の形態ではストライプの一部の記憶領域のみに未フォーマット識別子を書き込むので、書き込みの前の読み出しにおいて未フォーマット識別子が書き込まれていない記憶領域のデータの読み出しを行う場合がある。このような場合には、未フォーマット識別子が書き込まれているストライプについて、未フォーマット識別子の検出が不可能になってしまう。なお、未フォーマット識別子が書き込まれていない記憶領域は、BCCが不正な値になるため、BCCエラーとして検出することができる。
これに対して、本実施の形態のストレージ装置100では、このような記憶デバイスの書き込みの前の読み出しにおいてエラーが発生した場合、同一のストライプにおける他の記憶デバイスの記憶領域からのデータの読み出しを試み、そのストライプの未フォーマット識別子を検出する。
図13および図14は、第2の実施の形態のデータをSmall Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。図13および図14に従って、本実施の形態のストレージ装置100においてデータをSmall Writeにより書き込む場合に、読み出しエラーが生じたときの動作について説明する。
ここで、図13に示すように、アクセス要求のデータが書き込まれるストライプである、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1202p1には、未フォーマット識別子が書き込まれているものとする。また、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ132q1の書き込みのアクセス要求があるものとする。さらに、アクセス部102は、データ132q1の書き込みのアクセス要求に応じて、記憶デバイス120c〜120fにデータ132q1およびデータ132q1による更新後のパリティである新規パリティをSmall Writeにより書き込む予定であるものとする。
ストレージ装置100のアクセス部102は、ホストコンピュータ300からのデータ132q1の書き込みのアクセス要求を受け付けると、ホストコンピュータ300に対してデータの書き込みの完了を報告するアクセス完了報告を出力する。
次に、アクセス部102は、ホストコンピュータ300から受け付けた新規データであるデータ132q1の書き込みをSmall Writeで行うために、データ132q1を書き込むストライプであるストライプ1202p1における、データ132q1に対応する既存データであるデータ132p1および既存パリティであるデータ132p4を読み出す。ここで、アクセス部102は、ストライプ1202p1からのデータ132p1の読み出しにおいて読み出しエラーを検出し、書き込みの前の読み出しに失敗しているものとする。
次に、アクセス部102は、データ132q1の書き込みの前の読み出しに失敗すると、ストライプ1202p1のデータを復旧するために、ストライプ1202p1を構成する他の記憶デバイスに記憶されているデータを読み出す。これにより、アクセス部102は、他の記憶デバイスから読み出したデータ132p2,132p3によって、ストライプ1202p1の未フォーマット識別子(図13ではデータ132p2,132p3のいずれか)を検出することができる。
ここで、ストライプ1202q1は、未フォーマット識別子が記憶されている記憶領域であり、既存のデータ132p1,132p2,132p3,132p4は、正規のデータでないため、Small Writeによる新規パリティの算出に使用することができない。従って、図13では未フォーマット識別子が検出されたストライプ1202p1に対して、データ132q1をSmall Writeとして書き込む予定であっても、Small Writeを行わない。
この場合、アクセス部102は、図14に示すように、Bandwidth Writeと同様に、ホストコンピュータ300から受け付けた新規データであるデータ132q1を書き込むストライプにおける、データ132q1の書き込みにより更新されない記憶領域に対して書き込むフォーマットデータであるデータ132q2,132q3を作成する。次に、アクセス部102は、データ132q1〜132q3についてXOR演算を行って新規パリティであるデータ132q4を算出する。
次に、アクセス部102は、データ132q1〜132q4を、記憶デバイス120c〜120fの未フォーマット識別子領域であるストライプ1202p1に書き込む。これにより、新規データであるデータ132q1〜132q3および新規データのパリティであるデータ132q4がストライプ1202q1に示すように書き込まれると共に、ストライプ1202q1の論理フォーマットが完了する。なお、図13および図14では、ストライプ1202p1のデータが失われていることによる読み出しエラーが発生した場合について説明したが、ストライプ1202p1に未フォーマット識別子が書き込まれている場合であって、アクセス部102により、読み出したデータ132p4が未フォーマット識別子でなく、正規のデータでもないことが検出されたときについても同様である。
図15および図16は、第2の実施の形態のデータをRead Bandwidth Writeにより書き込む場合に読み出しエラーが生じたときの動作を示す図である。図15および図16に従って、本実施の形態のストレージ装置100においてデータをRead Bandwidth Writeにより書き込む場合に、読み出しエラーが生じたときの動作について説明する。
ここで、図15に示すように、アクセス要求のデータが書き込まれるストライプである、ストレージ装置100が有する記憶デバイス120c〜120fのストライプ1202r1には、未フォーマット識別子が書き込まれているものとする。また、ホストコンピュータ300からストレージ装置100に対して新規データであるデータ132s2,132s3の書き込みのアクセス要求があるものとする。さらに、アクセス部102は、データ132s2,132s3の書き込みのアクセス要求に応じて、記憶デバイス120c〜120fにデータ132s2,132s3およびデータ132s2,132s3による更新後のパリティである新規パリティをRead Bandwidth Writeにより書き込む予定であるものとする。
ストレージ装置100のアクセス部102は、ホストコンピュータ300からのデータ132s2,132s3の書き込みのアクセス要求を受け付けると、ホストコンピュータ300に対してデータの書き込みの完了を報告するアクセス完了報告を出力する。
次に、アクセス部102は、ホストコンピュータ300から受け付けた新規データであるデータ132s2,132s3の書き込みをRead Bandwidth Writeで行うために、データ132s2,132s3を書き込むストライプであるストライプ1202r1における、更新されない既存データであるデータ132r1を読み出す。ここで、アクセス部102は、ストライプ1202r1からのデータ132r1の読み出しにおいて、読み出しエラーを検出し、書き込みの前の読み出しに失敗しているものとする。
次に、アクセス部102は、データ132s2,132S3の書き込みの前の読み出しに失敗すると、ストライプ1202r1のデータを復旧するために、ストライプ1202r1における他の記憶デバイスに記憶されているデータ132r2,132r3,132r4を読み出す。これにより、アクセス部102は、他の記憶デバイスから読み出したデータ132r2,132r3,132r4によって、ストライプ1202r1の未フォーマット識別子(図15ではデータ132r2,132r3のいずれか)を検出することができる。
ここで、ストライプ1202s1は、未フォーマット識別子が記憶されている記憶領域であり、既存のデータ132r1,132r2,132r3,132r4は、正規のデータでないため、Read Bandwidth Writeによる新規パリティの算出に使用することができない。従って、図15および図16の例では未フォーマット識別子が検出されたストライプ1202r1に対して、データ132s2,132s3をRead Bandwidth Writeとして書き込む予定であっても、Read Bandwidth Writeを行わない。
この場合、アクセス部102は、図16に示すように、Bandwidth Writeと同様に、ホストコンピュータ300から受け付けた新規データであるデータ132s2,132s3を書き込むストライプにおける、データ132s2,132s3の書き込みにより更新されない記憶領域に対して書き込むフォーマットデータであるデータ132s1を作成する。次に、アクセス部102は、データ132s1〜132s3のXOR演算を行って、新規パリティであるデータ132s4を算出する。
次に、アクセス部102は、データ132s1〜132s4を、未フォーマット識別子が書き込まれている未フォーマット識別子領域であるストライプ1202r1に書き込む。これにより、新規データであるデータ132s1〜132s3および新規データの新規パリティであるデータ132s4がストライプ1202s1に示すように書き込まれると共に、ストライプ1202s1の論理フォーマットが完了する。なお、図15および図16では、ストライプ1202r1のデータが失われていることによる読み出しエラーが発生した場合について説明したが、ストライプ1202r1に未フォーマット識別子が書き込まれている場合であって、アクセス部102により、読み出したデータ132r1が未フォーマット識別子でなく、正規のデータでもないことが検出されたときについても同様である。
図17は、第2の実施の形態の未フォーマット識別子が検出された領域に対して論理フォーマットが行われる場合の動作を示す図である。本実施の形態のストレージ装置100は、図8および図9において前述したように、RAIDを構成する記憶デバイス120c〜120fについて、初期化時に各ストライプの記憶領域に未フォーマット識別子を書き込む。その後、ストレージ装置100では、ホストコンピュータ300によるデータの書き込みのアクセス要求に応じて未フォーマット識別子が書き込まれた未フォーマット識別子領域に対してデータが書き込まれていくが、アクセスが一度もないストライプには、未フォーマット識別子が残り続けてしまうことになる。
これに対して図17では、ホストコンピュータ300によるアクセス要求とは別の契機で記憶デバイス120c〜120fのすべての記憶領域に対して読み書きを行って記憶デバイス120c〜120fの機能を検査するディスクパトロールにより、ストライプの未フォーマット識別子の有無をチェックする。チェックの結果、未フォーマット識別子が検出されたストライプにはフォーマットデータが書き込まれ、これにより未フォーマット識別子領域の論理フォーマットを完了させる。
以上のように、ストレージ装置100により未フォーマット識別子が検出された領域に対して論理フォーマットを行う場合の動作を、図17に従って説明する。
図17に示すように、ストレージ装置100には、ディスクパトロール前の状態として、記憶デバイス120c〜120fの記憶領域から構成されるストライプ1202t1〜1202t4が記憶されているものとする。
ストライプ1202t1(データ 0:BCC M,データ 0:BCC M,データ −:BCC −,データ −:BCC −),1202t4(データ −:BCC −,データ −:BCC −,データ 0:BCC M,データ 0:BCC M)は、未フォーマット識別子が書き込まれている未フォーマット識別子領域である。また、ストライプ1202t2(データ F:BCC B51,データ F:BCC B52,データ NP16:BCC B53,データ N18:BCC 54),1202t3(データ N19:BCC B55,データ NP17:BCC B56,データ NP20:BCC B57,データ N21:BCC 58)は、ホストコンピュータ300による書き込みのアクセス要求のデータまたはフォーマットデータが書き込まれている。
本実施の形態では、詳しくは図20の未フォーマット識別子検出処理において後述するが、アクセス部102は、フォーマットデータ書き込み完了フラグが無効であって、かつ、未フォーマット識別子検出処理を未フォーマット識別子書き込み処理の実行完了後である場合、ディスクパトロールを実行する。アクセス部102は、ディスクパトロールにおいて、以上のストライプ1202t1〜1202t4に対して、ストレージ装置100の各記憶領域をチェックし、各ストライプから未フォーマット識別子を検出する。そして、アクセス部102は、未フォーマット識別子を検出したストライプにフォーマットデータを書き込む。ディスクパトロールの実行後の記憶デバイス120c〜120fの各ストライプを、ストライプ1202u1,1202u1,1202u3,1202u4に示す。
ここで、ディスクパトロールの実行により、未フォーマット識別子領域であったストライプ1202t1が、ストライプ1202u1(データ F:BCC B59,データ F:BCC B60,データ F:BCC B61,データ FP1:BCC B62)のように、フォーマットデータが書き込まれてフォーマット完了領域となる。同様に、ディスクパトロールの実行により、未フォーマット識別子領域であったストライプ1202t4が、ストライプ1202u4(データ FP2:BCC B63,データ F:BCC B64,データ F:BCC B65,データ F:BCC B66)のように、フォーマットデータが書き込まれてフォーマット完了領域となる。一方、ストライプ1202u2,1202u3は、既にホストコンピュータ300からの書き込みのアクセス要求のデータが書き込まれており、未フォーマット識別子が書き込まれていないので、フォーマットデータが書き込まれず、ディスクパトロールの実行の前後で記憶内容は変化しない。
次に、アクセス部102は、ディスクパトロールによりストレージ装置100内のすべてのストライプについてチェックが完了した場合には、フォーマットデータ書き込み完了フラグを有効にする。アクセス部102は、フォーマットデータ書き込み完了フラグが有効である場合、ディスクパトロールを実行しない。
このように、本実施の形態のストレージ装置100では、ディスクパトロールによって、ホストコンピュータ300による書き込みのアクセス要求が一度もないストライプに対してフォーマットデータを書き込むことができる。なお、ディスクパトロールは、アクセスの頻度の統計データを取得してアクセスの頻度を予測する等により、ストレージ装置100においてホストコンピュータ300から記憶デバイス120c〜120fへのアクセスの頻度が低下している際にするとよい。これにより、ストレージ装置100の処理の負荷の集中を回避してディスクパトロール処理を実行することができる。
また、ホストコンピュータ300による書き込みのアクセス要求時に未フォーマット識別子が検出されることを抑制できるので、ホストコンピュータ300による書き込みのアクセス要求時における処理の負荷も軽減できる。
また、フォーマットデータ書き込み完了フラグが有効である場合には、ストレージ装置100内のストライプにフォーマット未完了領域および未フォーマット識別子領域がなくなったと判断でき、ディスクパトロールの実行が不要になるので、ストレージ装置100の処理の負荷を軽減できる。
図18は、第2の実施の形態の未フォーマット識別子書き込み処理の手順を示すフローチャートである。本実施の形態のストレージ装置100は、記憶デバイス120c〜120fが接続された場合に、記憶デバイス120c〜120fを初期化するための論理フォーマット時に、記憶デバイス120c〜120fの記憶領域に未フォーマット識別子を書き込む未フォーマット識別子書き込み処理を実行する。以下では、図18に示す未フォーマット識別子書き込み処理をフローチャートのステップ番号に沿って説明する。
[ステップS11]アクセス部102は、フォーマット要求を行ったフォーマット制御部101に対してフォーマット完了を報告する。
[ステップS12]アクセス部102は、ホストコンピュータ300から記憶デバイス120c〜120fのストライプに対するデータの書き込みのアクセス要求があるか否かを判定する。書き込みのアクセス要求があれば(ステップS12 YES)、処理はステップS13に進められる。一方、書き込みのアクセス要求がなければ(ステップS12 NO)、処理はステップS14に進められる。
[ステップS13]アクセス部102は、ホストコンピュータ300から書き込みのアクセス要求が有った場合に、書き込みのアクセス要求のデータをストライプに書き込むフォーマット中データ書き込み処理(詳しくは図19において後述)を実行する。その後、処理はステップS17に進められる。
[ステップS14]アクセス部102は、管理情報記憶部151に記憶されている管理テーブルを参照して、フォーマットデータおよび未フォーマット識別子のいずれも書き込まれていないフォーマット未完了領域のストライプを1個取得する。
[ステップS15]アクセス部102は、記憶デバイス120c〜120fの記憶領域のうち、ステップS14で参照した管理テーブル上に記憶されている、論理フォーマットが完了していない記憶領域であるフォーマット未完了領域のストライプに対して、未フォーマット識別子を書き込む。このとき、アクセス部102は、図9において前述したように、未フォーマット識別子をストライプ単位で記憶領域に書き込む。
[ステップS16]アクセス部102は、ステップS15で未フォーマット識別子を書き込んだストライプの記憶領域が論理フォーマットされたものとして管理テーブルを更新する。
[ステップS17]アクセス部102は、管理テーブル上で記憶デバイス120c〜120fのすべての記憶領域の論理フォーマットが完了したか否かを判定する。管理テーブル上ですべての記憶領域について論理フォーマットが完了していれば(ステップS17 YES)、処理は終了する。一方、管理テーブル上で論理フォーマットが行われていない領域があれば(ステップS17 NO)、処理はステップS13に進められる。
図19は、第2の実施の形態のフォーマット中データ書き込み処理の手順を示すフローチャートである。本実施の形態のストレージ装置100は、未フォーマット識別子書き込み処理の実行中にアクセス要求があった場合、記憶デバイス120c〜120fのストライプの記憶領域にアクセス要求のデータを書き込むフォーマット中データ書き込み処理を実行する。なお、フォーマット中データ書込み処理は、図18において前述した未フォーマット識別子書き込み処理の実行中にホストコンピュータ300からのデータの書き込みのアクセス要求が無ければ実行されない。以下では、図19に示すフォーマット中データ書き込み処理をフローチャートのステップ番号に沿って説明する。
[ステップS21]アクセス部102は、アクセス要求のデータがキャッシュメモリ(例えば、キャッシュメモリ112a)に書き込まれた段階で、データ書き込みのアクセス要求を行ったホストコンピュータ300に対してデータ書き込みの完了を報告する。
[ステップS22]アクセス部102は、管理情報記憶部151に記憶されている管理テーブルを参照して、記憶デバイス120c〜120fのストライプを1個取得する。
[ステップS23]アクセス部102は、管理テーブル上でアクセス要求に対応する書き込みの対象の記憶領域について論理フォーマットが完了しているか否かを判定する。管理テーブル上で書き込み対象の記憶領域の論理フォーマットが完了していれば(ステップS23 YES)、処理はステップS28に進められる。一方、管理テーブル上で書き込み対象の記憶領域の論理フォーマットが完了していなければ(ステップS23 NO)、処理はステップS24に進められる。
[ステップS24]アクセス部102は、アクセス要求においてデータが書き込まれず、更新されない記憶領域に書き込むフォーマットデータを作成する。
[ステップS25]アクセス部102は、アクセス要求によりストライプが更新された後のパリティを作成する。このときアクセス部102は、Bandwidth Write,Read Bandwidth Write,Small Writeのうちのいずれかの方法を使用して更新後のパリティを作成する。また、アクセス部102は、アクセス要求における更新後のデータ、更新前のストライプのデータおよび更新前のストライプのパリティならびにステップS24で作成したフォーマットデータのうち、使用する方法で必要なデータを用いて更新後のパリティを作成する。
[ステップS26]アクセス部102は、記憶デバイス120c〜120fにおけるアクセス要求の対象のストライプの記憶領域に、アクセス要求のデータ、ステップS24で作成したフォーマットデータおよびステップS25で作成した更新後のパリティを書き込む。
[ステップS27]アクセス部102は、ステップS26でデータを書き込んだストライプの記憶領域が論理フォーマットされたものとして管理テーブルを更新する。その後、処理は未フォーマット識別子書き込み処理に復帰する。
[ステップS28]アクセス部102は、アクセス要求のストライプの更新後のパリティを作成する。
[ステップS29]アクセス部102は、記憶デバイス120c〜120fにおけるアクセス要求の対象のストライプの記憶領域に、アクセス要求のデータおよびステップS28で作成した更新後のパリティを書き込む。その後、処理は未フォーマット識別子書き込み処理に復帰する。
図20は、第2の実施の形態の未フォーマット識別子検出処理の手順を示すフローチャートである。本実施の形態のストレージ装置100は、未フォーマット識別子書き込み処理の完了後に、例えば記憶デバイス120c〜120fへのアクセスの頻度が低下している際等、ホストコンピュータ300によるアクセス要求とは異なる契機で、未フォーマット識別子検出処理を実行する。未フォーマット識別子検出処理は、論理フォーマットが行われていないことを示す未フォーマット識別子が書き込まれているストライプを検出し、検出したストライプの記憶領域に対して論理フォーマットを行うディスクパトロールを実行する処理である。本実施の形態のストレージ装置100は、フォーマットデータ書き込み完了フラグが無効であって、かつ、未フォーマット識別子検出処理を未フォーマット識別子書き込み処理の実行完了後である場合において、例えば所定時間の経過後等、任意の契機で実行する。図20に示す未フォーマット識別子検出処理をフローチャートのステップ番号に沿って説明する。
[ステップS31]アクセス部102は、記憶デバイス120c〜120fのストライプを構成する記憶領域から、記憶されているデータを順に1ストライプずつ読み出す。
[ステップS32]アクセス部102は、ステップS31でデータを読み出したストライプの記憶領域から未フォーマット識別子を検出したか否かを判定する。ストライプから未フォーマット識別子を検出していれば(ステップS32 YES)、処理はステップS33に進められる。一方、ストライプから未フォーマット識別子を検出していなければ(ステップS32 NO)、処理はステップS31に進められる。
[ステップS33]アクセス部102は、ステップS32で未フォーマット識別子が検出されたストライプの記憶領域に書き込むフォーマットデータを作成する。
[ステップS34]アクセス部102は、ステップS32で未フォーマット識別子が検出されたストライプの記憶領域に、ステップS33で作成したフォーマットデータを書き込む。
[ステップS35]アクセス部102は、記憶デバイス120c〜120fのすべての記憶領域について、ステップS31のデータの読み出しが完了したか否かについて判定する。すべての記憶領域についてデータの読み出しが完了していれば(ステップS35 YES)、処理はステップS36に進められる。一方、データの読み出しが完了してない記憶領域があれば(ステップS35 NO)、処理はステップS31に進められる。
[ステップS36]アクセス部102は、フォーマットデータ書き込み完了フラグを有効に設定する。その後、処理は終了する。
図21から図23は、第2の実施の形態の未フォーマット識別子書き込み完了後データ書き込み処理の手順を示すフローチャートである。本実施の形態のストレージ装置100は、未フォーマット識別子書き込み処理の終了後にアクセス要求があった場合において、記憶デバイス120c〜120fのストライプの記憶領域にRead Bandwidth Write,Small Writeによりアクセス要求のデータを書き込む場合、未フォーマット識別子書き込み完了後データ書き込み処理を実行する。以下では、図21から図23に示す未フォーマット識別子書き込み完了後データ書き込み処理をフローチャートのステップ番号に沿って説明する。
[ステップS41]アクセス部102は、アクセス要求のデータがキャッシュメモリ(例えば、キャッシュメモリ112a)に書き込まれた段階で、データ書き込みのアクセス要求を行ったホストコンピュータ300に対してデータ書き込みの完了を報告するデータ書き込み報告を送信すると共に、書き込み先の記憶領域からデータを読み出す。
[ステップS42]アクセス部102は、ステップS41でデータの読み出しに成功したか否かについて判定する。書き込み先からのデータの読み出しに成功していれば(ステップS42 YES)、処理はステップS43に進められる。一方、書き込み先からのデータの読み出しに失敗していれば(ステップS42 NO)、処理はステップS51に進められる。
[ステップS43]アクセス部102は、ステップS41で読み出したデータのBCCが正しいか否かを判定する。BCCが正しければ(ステップS43 YES)、処理はステップS44に進められる。一方、BCCが正しくなければ(ステップS43 NO)、処理はステップS46に進められる。
[ステップS44]アクセス部102は、アクセス要求のストライプの更新後のパリティを作成する。
[ステップS45]アクセス部102は、アクセス要求の対象のストライプを構成する記憶デバイス120c〜120fの記憶領域に、アクセス要求のデータおよびステップS44で作成した更新後のパリティを書き込む。ここで、本実施の形態では、Read Bandwidth Write,Small Writeのいずれの書き込み方法においても、1個のストライプを構成するすべての記憶領域に書き込み要求のデータ、フォーマットデータのいずれかを書き込む。これにより、ストライプのデータ構造は、ストライプを論理フォーマットした後にデータを書き込んだ場合と同様になる。その後、処理は終了する。
[ステップS46]アクセス部102は、ステップS41でデータを読み出したストライプの記憶領域から未フォーマット識別子を検出したか否かを判定する。ストライプから未フォーマット識別子を検出していれば(ステップS46 YES)、処理はステップS47に進められる。一方、ストライプから未フォーマット識別子を検出していなければ(ステップS46 NO)、処理はステップS51に進められる。
[ステップS47]アクセス部102は、アクセス要求によってデータが書き込まれず、更新されない記憶領域に対して書き込むフォーマットデータを作成する。
[ステップS48]アクセス部102は、アクセス要求のストライプの更新後のパリティを作成する。
[ステップS49]アクセス部102は、アクセス要求の対象のストライプを構成する記憶デバイス120c〜120fの記憶領域に、アクセス要求のデータ、ステップS47で作成したフォーマットデータおよびステップS48で作成した更新後のパリティを書き込む。その後、処理は終了する。
[ステップS51]アクセス部102は、アクセス要求のデータがキャッシュメモリ(例えば、キャッシュメモリ112a)に書き込まれた段階で、データ書き込みのアクセス要求を行ったホストコンピュータ300に対してデータ書き込み報告を送信すると共に、ステップS41でデータの読み出しを行った記憶デバイスとは異なる記憶デバイスの書き込み先の記憶領域からデータを読み出す。
[ステップS52]アクセス部102は、ステップS51でデータの読み出しに成功したか否かについて判定する。データの読み出しに成功していれば(ステップS52 YES)、処理はステップS53に進められる。一方、データの読み出しに失敗していれば(ステップS52 NO)、処理はステップS61に進められる。
[ステップS53]アクセス部102は、ステップS51で読み出したデータのBCCが正しいか否かを判定する。BCCが正しければ(ステップS53 YES)、処理はステップS54に進められる。一方、BCCが正しくなければ(ステップS53 NO)、処理はステップS56に進められる。
[ステップS54]アクセス部102は、アクセス要求のストライプの更新後のパリティを作成する。
[ステップS55]アクセス部102は、アクセス要求の対象のストライプを構成する記憶デバイス120c〜120fの記憶領域に、アクセス要求のデータおよびステップS54で作成した更新後のパリティを書き込む。その後、処理は終了する。
[ステップS56]アクセス部102は、ステップS51でデータを読み出したストライプの記憶領域から未フォーマット識別子を検出したか否かを判定する。未フォーマット識別子を検出していれば(ステップS56 YES)、処理はステップS57に進められる。一方、未フォーマット識別子を検出していなければ(ステップS56 NO)、処理はステップS61に進められる。
[ステップS57]アクセス部102は、アクセス要求によりデータが書き込まれず、更新されない記憶領域に対して書き込むフォーマットデータを作成する。
[ステップS58]アクセス部102は、アクセス要求のストライプの更新後のパリティを作成する。
[ステップS59]アクセス部102は、アクセス要求の対象のストライプを構成する記憶デバイス120c〜120fの記憶領域に、アクセス要求のデータ、ステップS57で作成したフォーマットデータおよびステップS58で作成した更新後のパリティを書き込む。その後、処理は終了する。
[ステップS61]アクセス部102は、ステップS41およびステップS51でデータの読み出しを行ったストライプからのデータの読み出しに失敗した際のエラー処理を実行する。この場合、例えばストレージ装置100がRAID5であれば、ディスクアレイが故障しているものとして処理される。また、ストレージ装置100がRAID6であれば、さらに異なる記憶デバイスのデータの読み出しを試みることができる。その後、処理は終了する。
なお、本実施の形態では、論理フォーマットについて適用した場合について説明したが、これに限らず、物理フォーマットについても適用することができる。
このように、第2の実施の形態のストレージ装置100では、ホストコンピュータ300からのデータの書き込みのアクセス要求時に、未フォーマット識別子により書き込み先のストライプの論理フォーマットが完了しているか否かの判定をすることができる。論理フォーマットの完了前の記憶媒体へのアクセス時に記憶媒体の負荷の増加の抑制が可能となり、また、フォーマット完了までの時間の短縮が可能となる。
また、未フォーマット識別子の書き込み数をRAIDの冗長数+1にすることにより、すべての記憶デバイスにフォーマットデータを書き込む場合に比較して、記憶デバイスの初期設定時の所要時間を短縮することができると共に、記憶デバイスの初期設定時の負荷も軽減できる。
また、未フォーマット識別子の書き込み中にホストコンピュータ300からのデータ書き込みのアクセス要求があった場合には、アクセス要求のデータとフォーマットデータとを一度の処理でストライプに書き込むので、書き込み処理の回数が削減できる。
なお、各実施の形態で示した以上の処理は、コンピュータに所定のプログラムを実行させることで実現できる。その場合、実現すべき処理内容を記述したプログラムが提供される。処理内容を記述したプログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。コンピュータ読み取り可能な記録媒体には、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリがある。磁気記録装置には、ハードディスク装置、フレキシブルディスク(FD)、磁気テープ(MT)等がある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc − Read Only Memory)、CD−R(Recordable)、CD−RW(ReWritable)等がある。光磁気記録媒体には、MO(Magneto-Optical disk)等がある。
プログラムを流通させる場合、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム又はサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上説明した第1の実施の形態、第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置において、
前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込むアクセス部を有することを特徴とするストレージ装置。
(付記2) 前記アクセス部は、前記記憶媒体の記憶領域へのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、前記読み出した既存データから前記未フォーマット識別子を検出した場合であって、前記アクセスにおいて前記アクセスの対象のストライプに前記新規データを書き込むときには、前記アクセスの対象のストライプを構成する記憶領域に当該新規データを書き込み、前記アクセスにおいて前記アクセスの対象のストライプに前記新規データを書き込まないときには、前記アクセスの対象のストライプを構成する記憶領域に前記フォーマットデータを書き込むことを特徴とする付記1記載のストレージ装置。
(付記3) 前記アクセス部は、前記記憶媒体の記憶領域へのアクセスの際に、前記アクセス対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、
前記読み出した既存データから前記未フォーマット識別子を検出した場合、前記アクセスの対象のストライプを構成する記憶領域のうち、前記新規データを書き込む記憶領域に当該新規データを書き込み、前記新規データを書き込まない記憶領域に前記フォーマットデータを書き込むことを特徴とする付記1記載のストレージ装置。
(付記4) 前記アクセス部は、前記記憶媒体の記憶領域の記憶内容を順次読み出し、当該記憶領域から未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプに前記フォーマットデータを書き込むことを特徴とする付記1記載のストレージ装置。
(付記5) 前記アクセス部は、前記ストライプへの新規データの書き込みのアクセスにより前記ストライプに記憶されている既存データのうちの一部の記憶領域を前記新規データにより更新する場合、前記新規データにより更新しない既存データを前記ストライプから読み出し、前記新規データと読み出した既存データとにより更新後のパリティデータである新規パリティを算出し、前記ストライプに記憶されている、前記新規データにより更新する既存データを前記新規データで更新すると共に、前記ストライプの更新前のパリティデータである既存パリティを前記新規パリティで更新することを特徴とする付記1記載のストレージ装置。
(付記6) 前記アクセス部は、前記ストライプへの新規データの書き込みのアクセスにより前記ストライプに記憶されている既存データのうちの一部を前記新規データにより更新する場合、前記新規データにより更新する既存データと前記ストライプの更新前のパリティデータである既存パリティとを読み出し、前記新規データと読み出した既存データと読み出した既存パリティとにより更新後のパリティデータである新規パリティを算出し、前記ストライプに記憶されている、前記新規データにより更新する既存データを前記新規データで更新すると共に、前記既存パリティを前記新規パリティで更新することを特徴とする付記1記載のストレージ装置。
(付記7) 前記複数の記憶媒体は、RAIDを構成し、
前記アクセス部は、前記複数の記憶媒体の初期化の際に前記複数の記憶媒体の前記ストライプの前記記憶領域のうちの前記記憶媒体が故障しても記憶しているデータを復元可能な記憶媒体数である冗長数よりも1多い個数の記憶領域に前記未フォーマット識別子を書き込むと共に前記管理情報記憶部に対して前記未フォーマット識別子を書き込んだ前記ストライプの前記記憶領域について前記論理フォーマットが完了した旨を示す管理情報を記憶させる、
ことを特徴とする付記1記載のストレージ装置。
(付記8) 前記複数の記憶媒体のすべてのストライプに前記フォーマットデータの書き込みが完了したか否かを示すフォーマットデータ書き込み完了フラグを記憶するフラグ記憶部を有し、
前記アクセス部は、前記複数の記憶媒体のすべてのストライプに前記フォーマットデータの書き込みが完了したときには、前記フォーマットデータ書き込み完了フラグを有効に設定する、
ことを特徴とする付記4記載のストレージ装置。
(付記9) 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御するストレージ装置制御プログラムにおいて、
コンピュータを、
前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込むアクセス部として機能させることを特徴とするストレージ装置制御プログラム。
(付記10) 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御するストレージ装置制御方法において、
前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、
前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、
読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込む、
ことを特徴とするストレージ装置制御方法。
1 ストレージ装置
1a アクセス部
1b1,1b2,1b3,1b4 記憶媒体
1ba ストライプ
1c 管理情報記憶部

Claims (8)

  1. 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置において、
    前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込むアクセス部を有することを特徴とするストレージ装置。
  2. 前記アクセス部は、前記記憶媒体の記憶領域へのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、前記読み出した既存データから前記未フォーマット識別子を検出した場合であって、前記アクセスにおいて前記アクセスの対象のストライプに前記新規データを書き込むときには、前記アクセスの対象のストライプを構成する記憶領域に当該新規データを書き込み、前記アクセスにおいて前記アクセスの対象のストライプに前記新規データを書き込まないときには、前記アクセスの対象のストライプを構成する記憶領域に前記フォーマットデータを書き込むことを特徴とする請求項1記載のストレージ装置。
  3. 前記アクセス部は、前記記憶媒体の記憶領域へのアクセスの際に、前記アクセス対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、
    前記読み出した既存データから前記未フォーマット識別子を検出した場合、前記アクセスの対象のストライプを構成する記憶領域のうち、前記新規データを書き込む記憶領域に当該新規データを書き込み、前記新規データを書き込まない記憶領域に前記フォーマットデータを書き込むことを特徴とする請求項1記載のストレージ装置。
  4. 前記アクセス部は、前記記憶媒体の記憶領域の記憶内容を順次読み出し、当該記憶領域から未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプに前記フォーマットデータを書き込むことを特徴とする請求項1記載のストレージ装置。
  5. 前記アクセス部は、前記ストライプへの新規データの書き込みのアクセスにより前記ストライプに記憶されている既存データのうちの一部の記憶領域を前記新規データにより更新する場合、前記新規データにより更新しない既存データを前記ストライプから読み出し、前記新規データと読み出した既存データとにより更新後のパリティデータである新規パリティを算出し、前記ストライプに記憶されている、前記新規データにより更新する既存データを前記新規データで更新すると共に、前記ストライプの更新前のパリティデータである既存パリティを前記新規パリティで更新することを特徴とする請求項1記載のストレージ装置。
  6. 前記アクセス部は、前記ストライプへの新規データの書き込みのアクセスにより前記ストライプに記憶されている既存データのうちの一部を前記新規データにより更新する場合、前記新規データにより更新する既存データと前記ストライプの更新前のパリティデータである既存パリティとを読み出し、前記新規データと読み出した既存データと読み出した既存パリティとにより更新後のパリティデータである新規パリティを算出し、前記ストライプに記憶されている、前記新規データにより更新する既存データを前記新規データで更新すると共に、前記既存パリティを前記新規パリティで更新することを特徴とする請求項1記載のストレージ装置。
  7. 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御するストレージ装置制御プログラムにおいて、
    コンピュータを、
    前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込むアクセス部として機能させることを特徴とするストレージ装置制御プログラム。
  8. 複数の記憶媒体の記憶領域から構成されたストライプによりデータを分散して記憶するストレージ装置を制御するストレージ装置制御方法において、
    前記複数の記憶媒体のフォーマットの際に、ストライプを構成する複数の記憶媒体の記憶領域の少なくとも一部にフォーマットが完了していないことを示す未フォーマット識別子を書き込み、
    前記ストライプを構成する記憶領域への新規データの書き込みのアクセスの際に、前記アクセスの対象のストライプを構成する記憶領域に記憶されている既存データを読み出し、
    読み出した既存データから前記未フォーマット識別子を検出した場合には、前記アクセスの対象のストライプを構成する記憶領域に前記新規データまたはフォーマットにより書き込まれるフォーマットデータを書き込む、
    ことを特徴とするストレージ装置制御方法。
JP2010080272A 2010-03-31 2010-03-31 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 Expired - Fee Related JP5655344B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010080272A JP5655344B2 (ja) 2010-03-31 2010-03-31 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法
US13/073,409 US8504768B2 (en) 2010-03-31 2011-03-28 Storage apparatus, recording medium and method for controlling storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010080272A JP5655344B2 (ja) 2010-03-31 2010-03-31 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法

Publications (2)

Publication Number Publication Date
JP2011215682A true JP2011215682A (ja) 2011-10-27
JP5655344B2 JP5655344B2 (ja) 2015-01-21

Family

ID=44710974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010080272A Expired - Fee Related JP5655344B2 (ja) 2010-03-31 2010-03-31 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法

Country Status (2)

Country Link
US (1) US8504768B2 (ja)
JP (1) JP5655344B2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US9881034B2 (en) 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
JP6119736B2 (ja) * 2012-03-19 2017-04-26 富士通株式会社 データアクセス方法、プログラムおよびデータアクセス装置
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US20140215148A1 (en) 2013-01-31 2014-07-31 International Business Machines Corporation Limiting the execution of background management operations in a drive array
US8713502B1 (en) 2013-02-26 2014-04-29 International Business Machines Corporation Methods and systems to reduce a number of simulations in a timing analysis
US10496669B2 (en) 2015-07-02 2019-12-03 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10776220B2 (en) 2016-06-27 2020-09-15 Mongodb, Inc. Systems and methods for monitoring distributed database deployments
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
JP6928247B2 (ja) * 2017-09-11 2021-09-01 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム
CN115543217B (zh) * 2022-11-29 2023-03-14 苏州浪潮智能科技有限公司 独立冗余磁盘阵列数据组织方法、装置、服务器和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330180A (ja) * 1996-06-10 1997-12-22 Hitachi Ltd コンピュータシステムのディスクアレイ装置
JP2003196164A (ja) * 2001-12-25 2003-07-11 Hitachi Ltd 複数の記憶デバイスに対するデータ入出力を行う制御装置の運用方法、およびこの方法に用いる制御装置
JP2003297044A (ja) * 2002-04-03 2003-10-17 Noritsu Koki Co Ltd データ保存装置
JP2009128981A (ja) * 2007-11-20 2009-06-11 Nec Corp ディスクアレイ記憶システムとその新設・増設時における初期化方法、及び初期化プログラム
JPWO2009084071A1 (ja) * 2007-12-27 2011-05-12 富士通株式会社 Raid制御装置及びraidシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3617632B2 (ja) 2001-07-19 2005-02-09 富士通株式会社 Raid制御装置及びその制御方法
JP3617631B2 (ja) 2001-07-19 2005-02-09 富士通株式会社 ストレージ制御装置及びその制御方法
JP2003241904A (ja) 2002-02-15 2003-08-29 Hitachi Ltd ディスクアレイ装置、及びその制御方法
US6976124B2 (en) 2001-12-25 2005-12-13 Hitachi, Ltd. Control method of control device conducting data input and output to storage devices, and control device used therefor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330180A (ja) * 1996-06-10 1997-12-22 Hitachi Ltd コンピュータシステムのディスクアレイ装置
JP2003196164A (ja) * 2001-12-25 2003-07-11 Hitachi Ltd 複数の記憶デバイスに対するデータ入出力を行う制御装置の運用方法、およびこの方法に用いる制御装置
JP2003297044A (ja) * 2002-04-03 2003-10-17 Noritsu Koki Co Ltd データ保存装置
JP2009128981A (ja) * 2007-11-20 2009-06-11 Nec Corp ディスクアレイ記憶システムとその新設・増設時における初期化方法、及び初期化プログラム
JPWO2009084071A1 (ja) * 2007-12-27 2011-05-12 富士通株式会社 Raid制御装置及びraidシステム

Also Published As

Publication number Publication date
US8504768B2 (en) 2013-08-06
US20110246717A1 (en) 2011-10-06
JP5655344B2 (ja) 2015-01-21

Similar Documents

Publication Publication Date Title
JP5655344B2 (ja) ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法
US11163472B2 (en) Method and system for managing storage system
US20180081760A1 (en) Managing raid parity stripe contention
US8001104B2 (en) Method, system and program for storing and using metadata in multiple storage locations
US6516425B1 (en) Raid rebuild using most vulnerable data redundancy scheme first
US8171379B2 (en) Methods, systems and media for data recovery using global parity for multiple independent RAID levels
US8495293B2 (en) Storage system comprising function for changing data storage mode using logical volume pair
US7398354B2 (en) Achieving data consistency with point-in-time copy operations in a parallel I/O environment
US9690651B2 (en) Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device
US20020091897A1 (en) Method and apparatus for supporting parity protected raid in a clustered environment
US20060242540A1 (en) System and method for handling write commands to prevent corrupted parity information in a storage array
US9740440B2 (en) Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US20060236149A1 (en) System and method for rebuilding a storage disk
US20090265510A1 (en) Systems and Methods for Distributing Hot Spare Disks In Storage Arrays
US10503620B1 (en) Parity log with delta bitmap
JP4884721B2 (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
JP2006268673A (ja) 記憶制御装置及び記憶デバイスのエラー制御方法
WO2013118189A1 (en) Storage device replacement method, and storage sub-system adopting storage device replacement method
US7992072B2 (en) Management of redundancy in data arrays
US7962690B2 (en) Apparatus and method to access data in a raid array
US10664346B2 (en) Parity log with by-pass
US8418029B2 (en) Storage control device and storage control method
US7577804B2 (en) Detecting data integrity
US20090063770A1 (en) Storage control apparatus, storage control program, and storage control method
US11836391B2 (en) Distributed storage system and storage control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140815

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141110

R150 Certificate of patent or registration of utility model

Ref document number: 5655344

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees