JP2009037304A - Raidレベルを変更する機能を有したストレージシステム - Google Patents

Raidレベルを変更する機能を有したストレージシステム Download PDF

Info

Publication number
JP2009037304A
JP2009037304A JP2007199087A JP2007199087A JP2009037304A JP 2009037304 A JP2009037304 A JP 2009037304A JP 2007199087 A JP2007199087 A JP 2007199087A JP 2007199087 A JP2007199087 A JP 2007199087A JP 2009037304 A JP2009037304 A JP 2009037304A
Authority
JP
Japan
Prior art keywords
raid
raid level
level
spare
disk
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.)
Pending
Application number
JP2007199087A
Other languages
English (en)
Inventor
Michio Suetsugu
通夫 末次
Yoshinori Okami
▲吉▼規 岡見
Takao Sato
孝夫 佐藤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007199087A priority Critical patent/JP2009037304A/ja
Priority to US11/971,500 priority patent/US7827351B2/en
Publication of JP2009037304A publication Critical patent/JP2009037304A/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Abstract

【課題】RAIDグループに空きの記憶領域を設けておきそれを利用する方法とは別の方法でRAIDレベルを変更することができる技術を提供する。
【解決手段】ストレージシステムに備えられる複数の記憶装置に、RAIDグループのメンバとしての記憶装置である二以上のメンバ記憶装置に加えて、RAIDグループのメンバではないスペアの記憶装置が含まれる。ストレージシステムに備えられるコントローラが、RAIDグループのRAIDレベルを第一のRAIDレベルから第二のRAIDレベルに変更することを、スペア記憶装置を利用して行う。
【選択図】図4

Description

本発明は、RAIDグループを有するストレージシステムに関する。
RAID(Redundant Array of Independent (or Inexpensive) Disks)と呼ばれる技術では、任意のRAIDレベル(例えばRAID5、RAID6)でデータを記憶するRAIDグループが構築される。RAIDグループは、任意の数の物理記憶装置で構成される。
RAIDレベルを変更する技術が知られている。その種の技術が、例えば、特許文献1に開示されている。特許文献1によれば、任意の台数のディスクで構成されているアレイグループ(RAIDグループに相当)が、複数の冗長グループに分割される。各アレイグループでは、少なくとも一つの冗長グループが未使用冗長グループとされている。一つのアレイグループにおいて、RAIDタイプ(RAIDレベルに相当)が変更される場合には、冗長グループに記憶されているデータが未使用冗長グループに移動されることと、移動元の冗長グループが未使用冗長グループに変更されることとが、変更対象のRAIDタイプに関わる各冗長グループについて行われることにより、RAIDタイプが変更される。
特開2006−318017号公報
特許文献1によれば、RAIDグループを構成する各冗長グループは、全てのディスクに跨っており、複数の冗長グループのうちの少なくとも一つが未使用冗長グループとされる。このため、RAIDグループにおける或るディスクにエラーが発生し易くなってきても、エラーの発生し易くなってきたそのディスクが、RAIDレベルの変更のためのデータの移動先とされることになる。
従って、本発明の一つの目的は、RAIDグループに空きの記憶領域を設けておきそれを利用する方法とは別の方法でRAIDレベルを変更することができる技術を提供することにある。
本発明の他の目的は、後の説明から明らかになるであろう。
ストレージシステムに備えられる複数の記憶装置に、RAIDグループのメンバとしての記憶装置である二以上のメンバ記憶装置に加えて、RAIDグループのメンバではないスペアの記憶装置が含まれる。ストレージシステムに備えられるコントローラが、RAIDグループのRAIDレベルを第一のRAIDレベルから第二のRAIDレベルに変更することを、スペア記憶装置を利用して行う。
実施形態1では、ストレージシステムが、複数の記憶装置と、コントローラとを備える。複数の記憶装置には、RAIDグループのメンバとしての記憶装置である二以上のメンバ記憶装置と、そのRAIDグループのメンバではないスペアの記憶装置である一又は複数のスペア記憶装置とが含まれる。コントローラは、RAIDグループのRAIDレベルを、第一のRAIDレベルから、一又は複数のスペア記憶装置から選択されたスペア記憶装置を利用して第二のRAIDレベルに変更する。
実施形態2では、実施形態1において、第一のRAIDレベルよりも第二のRAIDレベルの方が耐障害性に優れている(例えば、第一のRAIDレベルよりも第二のRAIDレベルの方が、ストライプ毎に生成されるパリティの数が多い)。コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第一の閾値を超えた場合に、RAIDグループのRAIDレベルを、第一のRAIDレベルから、上記選択されたスペア記憶装置を利用して第二のRAIDレベルに変更する。
実施形態3では、実施形態2において、コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を、複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されている。実施形態3では、第一の閾値が第二の閾値よりも低い。
実施形態4では、実施形態3において、コントローラが、情報退避処理の後、RAIDグループのRAIDレベルを、第二のRAIDレベルから第一のRAIDレベルに戻す。
実施形態5では、実施形態4において、コントローラが、或るメンバ記憶装置以外のメンバ記憶装置のエラーの発生度合いが所定の度合い以下の場合、及び/又は、各メンバ記憶装置のエラーの発生度合いが一定時間経っても所定の度合い以下の場合、RAIDグループのRAIDレベルを、第二のRAIDレベルから前記第一のRAIDレベルに戻す。言い換えれば、それ以外の場合、コントローラは、RAIDグループのRAIDレベルを第二のRAIDレベルに維持する。
実施形態6では、実施形態2乃至5のうちの少なくとも一つにおいて、第二のRAIDレベルは、RAIDグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルである。コントローラが、或るメンバ記憶装置に記憶されている情報要素を上記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを或るメンバ記憶装置に書込む。
実施形態7では、実施形態6において、コントローラが、RAIDグループから或るメンバ記憶装置を外し(例えば、RAIDグループから或るメンバ記憶装置が外れた内容に所定のテーブルを更新し)、上記選択されたスペア記憶装置をRAIDグループのメンバとして管理することで(例えば、RAIDグループにスペア記憶装置が含まれるよう所定のテーブルを更新することで)、RAIDグループのRAIDレベルを第二のRAIDレベルから第一のRAIDレベルに戻す。
実施形態8では、実施形態1乃至7のうちの少なくとも一つにおいて、第二のRAIDレベルは、RAIDグループのストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルである。上記選択されたスペア記憶装置は複数個である。コントローラは、RAIDグループを構成する複数のストライプについての複数のパリティを上記選択された複数のスペア記憶装置に分散させる。
実施形態9では、実施形態1乃至8のうちの少なくとも一つにおいて、第二のRAIDレベルは、RAIDグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルである。コントローラは、RAIDグループを構成する複数のストライプについての複数のパリティを、上記選択されたスペア記憶装置と上記二以上のメンバ記憶装置とに分散させる。
実施形態10では、実施形態1乃至9のうちの少なくとも一つにおいて、第一のRAIDレベルから第二のRAIDレベルへの変更では、RAIDグループを構成する記憶領域であるストライプ毎に、二以上のメンバ記憶装置から情報要素(後述するデータ要素とパリティのうちのいずれか一方)を読出す必要がある。RAIDグループの記憶空間を基に論理ボリュームが形成されており、論理ボリュームが複数の記憶領域である複数のページで構成されている。コントローラが、ストレージシステムの外部(例えば、アプリケーション、スイッチ装置、或いはホスト計算機、以下、便宜上、「ホスト」と呼ぶ)から受信したライトコマンドが、仮想的なボリュームにおける仮想的な記憶領域を指定している場合、複数のページから選択されたページをその仮想的な記憶領域に割り当て、割り当てたページに、上記ライトコマンドに従う情報要素を書込むよう構成されている。この場合、コントローラは、第一のRAIDレベルから第二のRAIDレベルへの変更では、仮想的な論理ボリュームに割当てられているページに対応したストライプについてのみ、情報要素の読出しを行う。
実施形態11では、実施形態1乃至10(及び後述の実施形態12乃至20)のうちの少なくとも一つにおいて、一又は複数のスペア記憶装置は、複数のRAIDグループに共用である。
実施形態12では、実施形態1乃至11のうちの少なくとも一つにおいて、コントローラが、キャッシュメモリを有する。コントローラは、ホストからライトコマンドを受信し、そのライトコマンドに基づく情報要素をキャッシュメモリに書込み、その場合に、ホストに書込み完了を報告し、それと非同期で、その情報要素をRAIDグループに書き込むよう構成されている。コントローラは、もし、RAIDグループのRAIDレベルの変更中であれば、キャッシュメモリに記憶されている情報要素をRAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素をRAIDグループに書き込む。
実施形態13では、実施形態1乃至12の少なくとも一つにおいて、第二のRAIDレベルは、RAIDグループを構成する各記憶領域であるストライプ毎に、第一のRAIDレベルよりも多くのパリティが生成されるレベルである。具体的には、例えば、第二のRAIDレベルは、RAID6であり、第一のRAIDレベルは、RAID5である。
実施形態14では、実施形態13において、コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が、第一の閾値を超えた場合に、RAIDグループを構成するストライプ毎に、ストライプに記憶されている二以上の情報要素の読出しと、二以上の情報要素に基づくパリティの生成と、生成されたパリティの上記選択されたスペア記憶装置に対する書込みとを実行する。コントローラは、上記選択されたスペア記憶装置をRAIDグループの更なるメンバとして管理することで、RAIDグループのRAIDレベルを、第一のRAIDレベルから第二のRAIDレベルに変更する。
実施形態15では、実施形態14において、コントローラが、前述した情報退避処理(例えば後述のダイナミックスペアリング)を行うよう構成されており、第一の閾値が前記第二の閾値よりも低い。
実施形態16では、実施形態15において、コントローラが、情報退避処理の後、上記別のスペア記憶装置に記憶されている情報要素を、上記或るメンバ記憶装置がストレージシステムから取り外されその或るメンバ記憶装置の代わりに搭載された記憶装置である交換後メンバ記憶装置に書込み、RAIDグループのメンバから上記選択されたスペア記憶装置を外すことで、RAIDグループのRAIDレベルを、第二のRAIDレベルから第一のRAIDレベルに戻す。
実施形態17では、実施形態14において、コントローラが、RAIDグループを構成するストライプ毎に、或るメンバ記憶装置に記憶されている情報要素を上記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを或るメンバ記憶装置に書込み、RAIDグループからその或るメンバ記憶装置を外すことで、RAIDグループのRAIDレベルを第二のRAIDレベルから第一のRAIDレベルに戻す。
実施形態18では、コントローラが、ホストからライトコマンドを受信し、そのライトコマンドに基づく情報要素をキャッシュメモリに書込み、その場合に、ホストに書込み完了を報告し、それと非同期で、その情報要素をRAIDグループに書き込むよう構成されている。コントローラは、もし、RAIDグループのRAIDレベルの変更中であれば、キャッシュメモリに記憶されている情報要素をRAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素を前記RAIDグループに書き込む。この実施形態18では、RAIDレベルの変更は、スペア記憶装置を利用する方法に代えて、RAIDグループに空き領域を設けておきその空き領域を利用する方法が採用されても良い。すなわち、実施形態18では、スペアの記憶装置の存在は必須でなくても良い。
実施形態19では、コントローラが、情報退避処理を行う前に、RAIDグループのRAIDレベルを、第一のRAIDレベルから、第一のRAIDレベルよりも耐障害性に優れた第二のRAIDレベルに変更する。この実施形態19では、RAIDレベルの変更は、スペア記憶装置を利用する方法に代えて、RAIDグループに空き領域を設けておきその空き領域を利用する方法が採用されても良い。具体的には、例えば、コントローラは、上記第二の閾値よりも低い第一の閾値を、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が超えた場合に、上記のRAIDレベルの変更を行う。
実施形態20では、実施形態12又は18において、コントローラが、ホストに対するインタフェース装置である上位I/Fと、複数の記憶装置に対するインタフェース装置である下位I/Fとを含む。上位I/Fが、ホストからライトコマンドを受信することと、そのライトコマンドに基づく情報要素をキャッシュメモリに書込むことと、ホストに書込み完了を報告することを行うよう構成されている。下位I/Fが、キャッシュメモリに記憶された情報要素をRAIDグループに書き込むことと、RAIDグループのRAIDレベルの変更を行うことと、RAIDレベルの変更中であればキャッシュメモリに記憶されている情報要素をRAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素をRAIDグループに書き込むこととを行うよう構成されている。
上述した複数の実施形態1乃至20のうちの二以上の実施形態を組み合わせることができる。また、前述したストレージシステムは、一又は複数のストレージサブシステムで構成することができる。上述したコントローラは、例えば、プロセッサとメモリとを備えた回路とすることができる。プロセッサがメモリからコンピュータプログラムを読み込んで実行することで、上述したRAIDレベルの変更などの種々の処理を行うことができる。コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
以下、図面を参照して本発明の幾つかの実施形態を詳細に説明する。
<第一の実施形態>。
図1は、本発明の第一の実施形態に係る計算機システムの構成を示す。
第一の通信ネットワーク、例えばSAN200に、一又は複数のホスト計算機100と、ストレージシステム300が接続されている。
ホスト計算機100は、例えば、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
ストレージシステム300は、例えば、アレイ状に配列された多数のディスクドライブ321を備えるRAIDシステムとすることができる。ストレージシステム300は、ストレージ制御部310と、ストレージ部320とに大別することができる。
ストレージ制御部310は、例えば、複数(又は一つ)のチャネルアダプタ(以下、CHA)311と、複数(又は一つ)のディスクアダプタ(以下、DKA)315と、キャッシュメモリ(図では「CM」と略記)316と、共有メモリ(図では「SM」と略記)312と、接続部313と、サービスプロセッサ(以下、「SVP」と略記)317とを備えている。
CHA311は、ホスト計算機100或いは他のストレージシステムとの間のデータ通信を行うインタフェース装置である。CHA311は、例えば、マイクロプロセッサ(以下、MP)3112、メモリ3113、ポート3111等を備えたマイクロコンピュータシステム(例えば回路基盤)として構成することができる。
DKA315は、ディスクドライブ321との間のデータ通信を行うインタフェース装置である。DKA315は、例えば図2に例示するように、接続部I/F3152(接続部313を介した通信を行うためのインタフェース装置)、ディスクI/F3151(ディスクドライブ321と通信するためのインタフェース装置)、マイクロプロセッサ(以下、MP)3154、メモリ3156、DRR(Data Recovery and Reconstruct)回路3155及び転送制御回路3153(DKA315上に備えられる要素3151、3152、3154、3155及び3156間でのデータ転送を制御する回路)を備えたマイクロコンピュータシステム(例えば回路基盤)として構成することができる。DRR回路(以下、単に「DRR」と言う)3155は、指定された複数の情報要素を入力とし、それら複数の情報要素を基にパリティを生成しその生成されたパリティを出力するハードウェア回路である。なお、本実施形態の説明で用いる「情報要素」とは、後述するデータ要素とパリティのいずれか一方を指す。DRR回路に入力される複数の情報要素には、少なくとも一つのデータ要素が含まれる。メモリ3156には、例えば、ホスト計算機100からのIOコマンド(入出力コマンド)の処理の一環としてディスクドライブ321に対する入出力を行うIOプログラム31560と、RAIDレベルの変更のための処理を行うRAIDレベル制御プログラム31561と、後述のダイナミックスペアリングを実行するダイナミックスペアリング実行プログラム31562とが記憶される。MP3154は、それらのコンピュータプログラム31560、31561及び31562をそれぞれ実行することで、ディスクドライブ321に対するデータの入出力や、RAIDレベルの変更や、ダイナミックスペアリングが実行される。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサによって処理が行われるものとする。
キャッシュメモリ316は、例えば、揮発性又は不揮発性のメモリであり、ホスト計算機100から受信したデータや、ディスクドライブ321から読出されたデータを、一時的に記憶する。
共有メモリ312は、例えば、揮発性又は不揮発性のメモリであり、CHA311或いはDKA315に参照される情報が格納される。共有メモリ312に記憶される情報としては、例えば、後述するエラーレート閾値A(以下、単に「閾値A」と言う)、エラーレート閾値B(以下、単に「閾値B」と言う)及び管理テーブル群がある。管理テーブル群には、例えば、RAIDレベル管理テーブル3121(図3A参照)、LDEV管理テーブル3122(図3B参照)、及びディスク管理テーブル3124(図3C参照)がある。各テーブル3121、3122、及び3124については後に詳述する。
接続部313は、CHA311、DKA315、キャッシュメモリ316、共有メモリ312及びSVP317を相互に接続させる。接続部313としては、例えば、バス、或いは、高速スイッチング動作によってデータ伝送を行う超高速クロスバススイッチを採用することができる。
SVP317は、ストレージシステム300を保守及び/又は管理するための装置(例えば回路基板)である。SVP317は、第二の通信ネットワーク、例えばLAN500に接続されており、LAN500を介して、保守端末(例えばパーソナルコンピュータ等の計算機)600と通信することができる。SVP317を制御コンソールとし、保守端末600をそれの入出力コンソールとすることができる。
ストレージ部320には、複数のディスクドライブ(以下、単に「ディスク」と言う)321が含まれている。二以上のディスク321により、所定のRAIDレベルのRAIDグループ323を構成することができる。RAIDグループ323を構成する二以上のディスク321の記憶空間を用いて、一又は複数の論理的な記憶装置(以下、「LDEV」と記載する)322を形成することができる。LDEVは、論理ユニット(LU)或いは論理ボリュームと言い換えられても良い。ディスク321としては、例えば、ハードディスク、フレキシブルディスク、光ディスク等のような、ディスク型の記憶メディアのドライブを用いることができる。また、ディスク321に代えて、磁気テープドライブ、或いは半導体メモリ(例えばフラッシュメモリ)ドライブなど、他種の物理的な記憶装置が採用されても良い。
以上が、本実施形態に係る計算機システムの構成である。なお、この構成は、一例であり、他の構成が採用されてもよい。例えば、共有メモリ312とキャッシュメモリ316は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、ストレージ制御部310は、CPU、メモリ及び複数の通信ポートを備えた回路基盤(すなわち、図1のストレージ制御部よりもシンプルな構成)であっても良い。この場合、そのCPUが、複数のCHA311やDKA315によって行われる処理を実行することができる。
以下、共有メモリ312に記憶される管理テーブル群における各種テーブルについて説明する。
図3Aは、RAIDレベル管理テーブル3121の構成例を示す。
RAIDレベル管理テーブル3121には、LDEV322毎に、LDEV322を識別するためのLDEV番号(例えば“LDEV#0”)と、RAIDレベル(例えば“RAID5”)と、ディスク構成と、RAIDレベル状態とが記録される。以下、或るLDEVを指す場合、LDEV番号でLDEVを指し、特にLDEV番号それ自体を意味する場合には、「“」、「”」という記号を用いることにする。具体的には、例えば、LDEV番号が“LDEV#0”のLDEV322を指す場合には、単に、「LDEV#0」と言うことにする。
「ディスク構成」とは、RAIDグループ323における一つのストライプ(ストライプの意味については後述する)に存在する情報要素の種類を表す。具体的には、例えば、ディスク構成の値“3D+1P”は、ホスト計算機100に参照される3つのデータ要素と、それら3つのデータ要素を基に生成された一つのパリティとが、一つのストライプに書き込まれることを意味する。
RAIDレベル状態を表す値としては、RAIDレベルが確定していることを意味する“確定”と、RAIDレベルが変更中であることを意味する値とがある。RAIDレベルが変更中であることを意味する値としては、例えば、RAIDレベルがXからYに変更されている最中である場合には、RAIDレベル状態を表す値として、“X−Y”が記録される(X及びYは、任意のRAIDレベルを表す値、例えばRAID5、RAID6など)。
図3Bは、LDEV管理テーブル3122の構成例を示す。
LDEV管理テーブル3122には、LDEV322毎に、RAIDグループ番号(例えば“RG#0)”と、LDEV番号(例えば“LDEV#0”)と、LDEV322に関わる複数のディスク321をそれぞれ表すディスク番号(例えば“ディスク#1”、“ディスク#2”、“ディスク#3”及び“ディスク#4”)とが記録される。RAIDグループ番号は、LDEVの基になっているRAIDグループを表す番号である。
図3Cは、ディスク管理テーブル3124の構成例を示す。
ディスク管理テーブル3124には、ディスク321毎に、ディスクID(例えば、“ディスクA”)と、ディスク番号(例えば、“ディスク#1”)と、ディスク状態及びエラーレートとが記録される。ディスク状態を表す値としては、例えば、ディスク321が正常であることを意味する“正常”と、ディスク321についてのエラーレートが閾値A若しくは閾値Bを超えたことを意味する“閾値A_over”或いは“閾値B_over”がある。
ディスクIDとは、ディスク321に固有のIDであり、不変であるのに対し、ディスク番号とは、入れ替えることができる。RAIDグループを基に形成された各LDEVの基になっているディスク321はディスク番号で表されているため、RAIDグループのメンバとなっているディスク321は、ディスクIDとディスク番号の組合せから一意に特定することができる。以下、或るディスク321を指す場合、ディスク番号でディスクを指し、特にディスク番号それ自体を意味する場合には、「“」、「”」という記号を用いることにする。具体的には、例えば、ディスク番号が“ディスク#3”のディスク321を指す場合には、単に、「ディスク#3」と言うことにする。なお、一つのディスク321に割当てるディスク番号を入れ替えることができるため、例えば、“ディスク#3”が割当てられているディスク(以下、対象ディスクC)に、“ディスク#3”に代えて“スペア1”というディスク番号が割当てられた場合、対象ディスクCはスペア1となり、スペアとして管理される。
以下、本実施形態で行われる処理の概要を説明する。
ストレージシステム300に、複数(又は一つ)のRAIDグループ323について、複数(又は一つ)のスペアのディスク321が備えられている。スペアのディスク321は、例えば、一のRAIDグループ323の専用のスペアとして用意されているのではなく、複数のRAIDグループ323に共用のスペアとして用意されている。DKA315のMP3154で実行されるRAIDレベル制御プログラム31561が、スペアディスクを利用して、RAIDレベルの変更に関わる処理(以下、RAIDレベル変更処理)を実行する。RAIDレベル変更処理の最中でも、ホスト計算機100からIOコマンドは受け付けられる。つまり、RAIDレベル変更処理をオンライン中に行うことが可能である。
RAIDレベル変更処理としては、RAIDレベルをより耐障害性に優れたRAIDレベルに変更する処理(以下、便宜上「RAIDアップ処理」と呼ぶ)と、RAIDレベルをより耐障害性に劣ったRAIDレベルに変更する処理(以下、便宜上「RAIDダウン処理」と呼ぶ)がある。RAIDアップ処理を行う契機として、ディスク321についてのエラーレートが利用される。エラーレートとしては、エラーの発生回数或いは発生頻度を採用することができる。
具体的には、共有メモリ312に、ダイナミックスペアリングを実行するか否かの判断に利用される閾値Bと、RAIDアップ処理を実行するか否かの判断に利用される閾値Aとが記憶される。閾値Aは、閾値Bよりも低い値である。
DKA315のMP3154で実行されるIOプログラム31560が、ディスク321のエラーレートを監視する。ディスク321のエラーとしては、様々なエラー、例えば、ディスク321にIOコマンドを送信してから所定時間以内に応答がそのディスク321から返ってこない、ベリファイ処理(ディスク321に書き込んだデータをディスク321から読出しその読み出したデータと書き込んだデータとを比較する処理)の結果として不一致が検出された等を採用することができる。本実施形態では、ベリファイ処理の結果として不一致が検出されたことを、ディスク321のエラーが検出されたこととする。また、本実施形態では、ベリファイ処理の最中も、ホスト計算機100からのIOコマンドの受け付け及び処理が行われるため、そのベリファイ処理のことを「オンラインベリファイ」と呼ぶことにする。
IOプログラム31560は、例えば、図31に例示するように、ディスク321に情報要素を書込む都度に(S311:YES)、書込まれた情報要素をそのディスク321から読出し、読み出した情報要素と、そのディスク321に書込んだ情報要素(例えばDKA315のメモリ3156又はキャッシュメモリ316に残っている情報要素)とを比較する(S312)。その結果、不一致を検出した場合(S313:YES)、IOプログラム31560は、ライト要求の発行先のディスク321(例えばディスク#3)に対応したエラーレート(ディスク管理テーブル3124に記録されているエラーレート)を更新し、更新後のエラーレート(図31では“K”という文字で表している)と閾値A及びBとの比較を行う。
IOプログラム31560は、或るディスク(以下、便宜上、「ディスク#3」とする)の更新後のエラーレートKが、閾値A以下であれば(S314A:YES)、S311に戻り、閾値Aより大きく閾値B以下であれば(S314A:NO、S314B:YES)、ディスク#3に対応したディスク状態を“閾値A_over”に変更し(図24A参照)、RAIDレベル制御プログラム31561を呼び出し、RAIDアップ処理を実行させる。
その後、ディスク#3についてエラーが更に発生し、更新後のエラーレートKが、閾値Bより大きければ(S314A:NO、S314B:NO、S314C:YES)、IOプログラム31560は、ディスク#3に対応したディスク状態を“閾値B_over”に変更し(図24B参照)、ダイナミックスペアリング実行プログラム31562を呼び出し、ダイナミックスペアリングを実行させる。
なお、ダイナミックスペアリングの後、コピーバックが行われる。コピーバックに付随して、RAIDダウン処理が行われる。
以下、RAIDアップ処理、ダイナミックスペアリング、コピーバック及びRAIDダウン処理について説明する。RAIDアップ処理及びRAIDダウン処理では、どのRAIDレベルからどのRAIDレベルへの変更が行われても良いが、以下の説明では、RAIDアップ処理では、RAID5(3D+1P)からRAID6(3D+1P+1Q)への変更が行われ、RAIDダウン処理では、RAID6(3D+1P+1Q)からRAID5(3D+1P)に戻されることを例に採る(Pは、第一のパリティ、Qは、第二のパリティをそれぞれ意味する)。なお、その例を採用する理由は、例えば以下の通りである。
近年、1つのディスクの記憶容量が増加しており、この為、ディスク内のデータ要素を全てコピーすることに要する時間が長くなっている。このような長時間のコピーでは、RAID5で1つのディスクに障害が発生しデータ復旧の為のコピーを実施している際に、更にもう1つのディスクにも障害が発生するという二重ディスク障害の発生頻度が高まる。RAID5では、二重ディスク障害が発生してしまうと、データ復旧が不可能となる。それを回避する方法としては、予め、二重ディスク障害においてもデータ復旧が可能であるRAID6としておく方法が考えられるが、RAID6にすると、後述するストライプ毎に二つのパリティを生成しなければならないので、RAID5に比べて書込みのパフォーマンスが低下する。また、RAID5よりも多くのディスクが予め必要となってしまう。
このような問題点を考慮して、以下の例では、上記のように、基本的には、RAID5(3D+1P)であり、RAID5のRAIDグループにおいて或るディスク321のエラーレートが閾値Aを超えた場合に、RAID5(3D+1P)からRAID6(3D+1P+1Q)へ変更するRAIDアップ処理が行われる。
<<RAIDアップ処理>>。
図4Aは、RAIDアップ処理前のRAIDグループの一例を示す。図4Bは、RAIDアップ処理の概要及びRAIDアップ処理後のRAIDグループの一例を示す。図5は、RAIDアップ処理のフローチャートである。以下、図4A、図4B及び図5を参照して、RAIDアップ処理について説明する。
例えば、図4Aに示すように、RAID5(3D+1P)が、ディスク#1、ディスク#2、ディスク#3及びディスク#4という4台のディスク321で構成されている。そして、スペア1及びスペア2という2台のスペアのディスク321が備えられている。RAIDグループがストライピングにより複数の記憶領域に区切られており、各記憶領域は、RAIDグループを構成するディスク#1乃至#4に跨っている。その記憶領域が、本実施形態で言う「ストライプ」である。一つのディスク321における、ストライプの構成要素となる記憶領域を、以下、「ストライプ領域」と呼ぶ。また、本実施形態では、ストライプ領域に格納される単位が、本実施形態で言う「情報要素」、具体的には、「データ要素」又は「パリティ」である。
ディスク#1乃至#4のうちの少なくとも一つのエラーレートが閾値Aを超えたことを契機に、RAIDレベル制御プログラム31561が、ディスク#1乃至#4から、ストライプ毎に、全ての情報要素(3つのデータ要素と第一のパリティ(以下、パリティP))を読み出してDRR回路3155に第二のパリティ(以下、パリティQ)を生成させ、生成されたパリティQを、スペア1に書込む(その結果として、スペア1には、全てのストライプについてのパリティQが集約されることになる)。これにより、オンライン中でのRAID5からRAID6への変更が行われることになる。
具体的には、例えば、ディスク#3のエラーレートが閾値Aを超えて閾値B以下の場合、RAIDレベル制御プログラム31561は、ディスク#3を基にしているLDEVを、LDEV管理テーブル3122を参照することで特定し、特定されたLDEV(例えばLDEV#0、LDEV#1及びLDEV#2)に対応したRAIDレベル状態(RAIDレベル管理テーブル3121に記録されるRAIDレベル状態)を、RAID5からRAID6への変更中を表す“RAID5−6”に更新する(図21A参照)。
また、RAIDレベル制御プログラム31561は、複数のスペアのディスク321から一つのスペアのディスク321(例えばスペア1)を選択する。その際、RAIDレベル制御プログラム31561は、スペア1が他のRAIDグループでのRAIDレベル変更で利用されることの無いよう、スペア1について排他制御を行う(例えばロックをかける)。
RAIDレベル制御プログラム31561は、RAID5からRAID6へ構成変更するというステータス(以下、構成変更ステータス)を含んだ情報を、SVP327に通知する(S104)。その情報には、例えば、RAIDレベル変更の対象となるRAIDグループの現在の構成(例えば、構成要素のディスクがディスク#1乃至#4であること)を表す情報や、そのRAIDグループを基に提供されるLDEV(例えばLDEV#0乃至LDEV#2)を表す情報や、パリティQの格納先とするスペアのディスク321を表す情報(例えばスペア1を表す情報)が含まれる。SVP317は、受信したステータス情報を解析することにより得られる、どのRAIDグループについてRAID5からRAID6に移行中であるかを表す情報を、保守端末600に送り、保守端末600が、その情報を表示する(S105)。このS105で、保守端末600によって表示される画面の一例を、図29Aに示す。なお、保守端末600によって表示される画面を、以下、便宜上「保守画面」と呼ぶ。
RAIDレベル制御プログラム31561は、ストライプに存在する全ての情報要素(例えば、データ要素D01、D02及びD03とパリティP1)を読み出し、キャッシュメモリ316に書込む(S106)。RAIDレベル制御プログラム31561は、それらの情報要素を基にDRR回路3155によりパリティQ(例えばパリティQ1)を生成させる(S107)。生成されたパリティQは、キャッシュメモリ316に書き込まれる(S108)。RAIDレベル制御プログラム31561は、そのパリティQを、スペア1に書き込む(S109)。スペア1における、そのパリティQが書かれた領域は、RAID5からRAID6への変更が終了した後では、パリティQの生成の基になった情報要素が記憶されているストライプの構成要素とされる。
RAIDレベル制御プログラム31561は、S106乃至S109が行われていないストライプがあれば(S110:NO)、S106における読出し元を次のストライプとし(S111)、そのストライプについてS106を行う。
RAIDレベル制御プログラム31561は、全てのストライプについてS106乃至S109が行われていれば(S110:YES)、ディスク#3が基になっている全てのLDEV(例えばLDEV#0乃至LDEV#2)について、LDEVを構成するディスク321(RAIDグループを構成するディスク321)として“スペア1”を増やし(図23A参照)、RAIDレベルを“RAID5”から“RAID6”に変更し、ディスク構成を“3D+1P”から“3D+1P+1Q”に変更し、RAIDレベル状態を“RAID5−6”から“確定”に変更する(図21B参照)。これにより、RAIDグループの構成要素が、ディスク#1乃至#4から、ディスク#1乃至#4とスペア1とに変更され、且つ、RAIDレベルが、RAID5(3D+1P)からRAID6(3D+1P+1Q)に変更されたことになる。RAIDレベル制御プログラム31561は、RAID5からRAID6への変更が終了したことを意味する構成変更終了ステータスを含んだ情報を、SVP317に通知する(S112)。SVP317は、構成変更終了ステータスを含んだ情報を解析することにより、一時的にRAID6となったことを特定し、そのことを表す情報を保守端末600に送信し、保守端末600が、その情報を表示する(S113)。S113で表示された保守画面の一例を図29Cに示す。
以上のRAIDアップ処理中に、保守端末600は、進捗状況を表す情報(例えば、何パーセントまで処理が進んだかを表す情報)を表示することができる。その情報は、例えば、S111が行われる都度に更新される(その際の保守画面の一例を図29Bに示す)。具体的には、例えば、RAIDレベル制御プログラム31561が、読み出し元とするストライプを更新する都度に、読み出しの済んだストライプの数をSVP317に通知する。SVP317は、RAIDグループにおけるストライプ総数に対する通知された数の比率を算出し、その比率を保守端末600に送り、保守端末600が、その比率を、進捗状況として表示することができる。なお、このような進捗状況(比率)の計算方法は、RAIDアップ処理に限らず、後述のダイナミックスペアリング、コピーバック及びRAIDダウン処理についても適用することができる。
以上のRAIDアップ処理は、オンライン中、すなわち、ホスト計算機100からのIOコマンドを受け付けと並行して行われる。RAIDアップ処理の最中にホスト計算機100からIOコマンドをCHA311が受けた場合、そのIOコマンドは、以下のように処理される。
(1)IOコマンドがリードコマンドの場合。
CHA311は、リードコマンドに従うデータ(以下、リードデータ)がキャッシュメモリ316にあれば、そのリードデータをホスト計算機100に送信する。もし、そのリードデータがキャッシュメモリ316に無ければ、CHA311は、DKA315を介してリードデータをディスク311から読み出し、ホスト計算機100へ返す。
以上のように、IOコマンドがリードコマンドの場合には、リードデータがキャッシュメモリ316に記憶されていようといまいと、パリティの生成が行われない。このため、CHA311は、DKA315によってRAIDレベルが変更されている最中か否かに関わらず、リードデータの読出しをDKA315に要求する。
(2)IOコマンドがライトコマンドの場合。
この場合、ライトコマンドに従うデータ(以下、ライトデータ)はディスク321に書込まれるが、その際には、パリティの更新(DRR回路3155の利用)が必要となる。このため、以下のような処理が行われる。
CHA311は、ライトコマンドを受信し、そのライトコマンドに従うデータ(以下、ライトデータ)をキャッシュメモリ316に書き込み、その時点で、ホスト計算機100に、書込み終了報告を送信する。そのライトデータのDKA315によるディスク321への書き込みは、CHA311によるライトコマンドの受信とは非同期に行われる。
具体的には、DKA315で実行されるIOプログラム31560は、ダーティのデータ要素(ディスク321に未書込みのライトデータ要素、以下、便宜上「新データ要素」と言う)がキャッシュメモリ316に記憶されている場合、そのデータ要素の書込み先となるLDEV322に対応したRAIDレベル状態(RAIDレベル管理テーブル3121に記録されているRAIDレベル状態)を参照し、RAIDレベルの変更中か否かを判断する。IOプログラム31560は、RAIDレベルの変更中と判断された場合(例えば、RAIDレベル状態が“RAID5−6”の場合)、RAIDレベルの変更の終了を待ち、RAIDレベルの変更を優先する。RAIDレベルの変更中ではないと判断された場合(例えば、RAIDレベル状態が“確定”に変わった場合)、IOプログラム31560は、キャッシュメモリ316上の新データ要素を、書込み先のLDEV322を構成する複数のディスク321へ書き込む。その際、RAID5とRAID6のどちらの場合でも、IOプログラム31560は、更新前のデータ要素(以下、「旧データ要素」と言う)と、その旧データ要素に対応する旧パリティとを、それぞれのディスク321からキャッシュメモリ316へ読み出し、旧データ要素及び旧パリティと新データ要素をDRR回路3155に入力することで新しいパリティを得る。そして、IOプログラム31560は、新データ要素と新しいパリティとをそれぞれのディスク321へ書き込む。
以下、ダーティのライトデータの書込みを、RAID5とRAID6の場合に分けて具体的に説明する。
(2−1)RAID5の場合(RAID5からRAID6への変更が行われていない状態の場合)。
IOプログラム31560は、図25Aに示すように、新データ要素D03´に対応する旧データ要素D03と、それに対応する旧パリティP1とを、ディスク#3及び#4からキャッシュメモリ316に読み出す。IOプログラム31560は、図25Bに示すように、読み出されたデータ要素D03及びパリティP1と新データ要素D03´をDRR回路3155に入力することで新パリティP1´を取得する。IOプログラム31560は、図26Aに示すように、新データ要素D03´を、旧データ要素D03が記憶されているストライプ領域(ディスク#3におけるストライプ領域)に書込み、新パリティP1´を、それに対応する旧パリティP1が記憶されているストライプ領域(ディスク#4におけるストライプ領域)に書込む。
(2−2)RAID6の場合(RAID5からRAID6への変更が行われている最中の場合)。
新データ要素D03´の書込み先が、LDEV#0であるとする。そして、LDEV#0に対応したRAIDレベル状態が“RAID5−6”であるため、図26Bに示すように、LDEV#0について、RAID5からRAID6への変更が行われている最中であるとする。
IOプログラム31560は、そのことを、RAIDレベル管理テーブル3121を参照することにより特定することができる。そのことを特定した場合、IOプログラム31560は、図26B及び図27Aに示すように、少なくともLDEV#0についてRAID5からRAID6への変更が完了するまで、新データ要素D03´をLDEV#0(具体的には、それの基になっているディスク#3)に書込むことを待つ。
IOプログラム31560は、少なくともLDEV#0についてRAID5からRAID6への変更が完了したことをRAIDレベル管理テーブル3121から特定した場合、図27Bに示すように、新データ要素D03´に対応する旧データ要素D03と、それに対応する旧パリティP1及び旧パリティQ1を、ディスク#3及び#4とスペア1からキャッシュメモリ316に読み出す。IOプログラム31560は、図28Aに示すように、新データ要素D03´、旧データ要素D03、旧パリティP1及び旧パリティQ1をDRR回路3155に入力することで、新パリティP1´及び新パリティQ1´を得る。新パリティP1´及び新パリティQ1´は、キャッシュメモリ316に書込まれる。IOプログラム31560は、図28Bに示すように、新データ要素D03´を、旧データ要素D03が記憶されているストライプ領域(ディスク#3におけるストライプ領域)に書込み、新パリティP1´を、それに対応する旧パリティP1が記憶されているストライプ領域(ディスク#4におけるストライプ領域)に書込み、新パリティQ1´を、それに対応する旧パリティQ1が記憶されているストライプ領域(スペア1におけるストライプ領域)に書込む。
<<ダイナミックスペアリング>>。
図6Aは、ダイナミックスペアリングの概要を示す。
閾値Bを超えたエラーレートに対応したディスク321はディスク#3である場合、ディスク#3に記憶されている全ての情報要素を、他のディスク(例えば、ストライプ毎のパリティQが格納されているスペア1とは別のスペアのディスク(スペア2))に書込むことが、ダイナミックスペアリングである(なお、スペア2についても、スペア1と同様に排他制御を行うことができる)。そのため、ディスク#3から全ての情報要素を読み出すことができるならば、ディスク#3からスペア2への単純なコピーによりダイナミックスペアリングが完了する。
もし、ディスク#3に障害が発生しディスク#3からの読出しが不可能となった場合、図6Bに示すように、他のディスク#1、#2、#4及びスペア1のうちの少なくとも3つから情報要素(少なくとも一つのパリティを含んだ3以上の情報要素)を読出し、DRR回路3155を利用することで、ディスク#3に記憶されている情報要素を復元することができる。
或いは、もし、ディスク#3だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能となってしまった場合、図10に示すように、他の全てのディスクから情報要素を読出して、DRR回路3155を利用することで、ディスク#3に記憶されている情報要素を復元することができる。
ダイナミックスペアリング実行プログラム31562は、ディスク#3に記憶されている全ての情報要素がスペア2に書き込まれた場合、ディスク#3が基になっている各LDEVについて、構成要素が“ディスク#3”から“スペア2”に変更となるようLDEV管理テーブル3122を更新する(図23B参照)。これにより、RAID6のRAIDグループのメンバが、ディスク#3からスペア2に変更となる。以後、例えば、そのRAIDグループを基に形成されているLDEV#0にデータが書き込まれる場合には、そのデータに基づく情報要素(データ要素或いはパリティP)は、ディスク#3ではなくスペア2に書き込まれる。
ダイナミックスペアリングの開始前には、ストライプ毎のパリティQがスペア1に格納されている。なぜなら、ダイナミックスペアリングは、或るディスク321のエラーレートが閾値Bを超えた場合に開始されるが、その閾値Bよりも低い閾値Aをそのディスク321のエラーレートが越えた場合に、上記のRAID5からRAID6への変更のために、ストライプ毎のパリティQが生成されてスペア1に格納されるためである。
図7は、ダイナミックスペアリングのフローチャートである。
ダイナミックスペアリング実行プログラム31562は、ダイナミックスペアリングの開始を表す情報をSVP317に通知する(S204)。その情報には、例えば、どのRAIDグループのどのディスク321についてダイナミックスペアリングが開始されるかを表す情報が含まれる。SVP317は、受信した情報を解析することにより得られる、どのRAIDグループのどのディスクについてダイナミックスペアリングが開始されたかを表す情報を、保守端末600に送り、保守端末600が、その情報を保守画面に表示する(S205)。S205で表示される保守画面の一例を、図33Aに示す。
ダイナミックスペアリング実行プログラム31562は、ディスク#3(閾値Bを超えたエラーレートに対応したディスク321)のストライプ領域から情報要素を読出すためにディスク#3にアクセスし、それを読み出せた場合には(S206:YES)、読み出したデータ要素或いはパリティPを、スペア2に書込む(S207)。
もし、ディスク#3に障害が発生しディスク#3からの読出しが不可能である場合(S206:NO、S208:A=1)、ダイナミックスペアリング実行プログラム31562は、他のディスク#1、#2、#4及びスペア1のうちの少なくとも3つから情報要素(少なくとも一つのパリティを含んだ3以上の情報要素)を読出し、読み出した3以上の情報要素を基にDRR回路3155を利用してディスク#3に記憶されている情報要素(データ要素或いはパリティP)を復元し(S209)、復元された情報要素を、スペア2に書込む(S211)。
もし、ディスク#3だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能である場合(S206:NO、S208:A=2)、ダイナミックスペアリング実行プログラム31562は、他の全てのディスクから情報要素を読出し、読み出した情報要素を基にDRR回路3155を利用してディスク#3に記憶されている情報要素を復元し(S210)、復元された情報要素を、スペア2に書込む(S211)。
S206乃至S211についての処理が行われていないストライプがあれば(S212:NO)、ダイナミックスペアリング実行プログラム31562は、実行対象を次のストライプとし(S213)、S206を実行する。
一方、全てのストライプについてS206乃至S211についての処理が行われたならば(S212:YES)、ダイナミックスペアリング実行プログラム31562は、ダイナミックスペアリングの終了を表す情報をSVP317に通知する(S214)。SVP317は、ダイナミックスペアリングの終了を表す情報を保守端末600に送り、保守端末600が、その情報を保守画面に表示する(S215)。S215で表示される保守画面の一例を図33Bに示す。
<<コピーバック及びRAIDダウン処理>>。
コピーバックは、例えば、RAIDレベル制御プログラム31561により行われる。RAIDレベル制御プログラム31561は、ダイナミックスペアリングの終了後、閾値Bを超えたエラーレートに対応するディスク#3を閉塞させる。
閉塞されたディスク#3は、図8Aに示すように、ユーザにより新しいディスクに交換される(閉塞されたディスク#3の交換後のディスクを「新ディスク#3」と呼ぶ)。RAIDレベル制御プログラム31561は、図8Bに示すように、スペア2から全てのデータ要素及びスペアを読出し、新ディスク#3に書込む。
もし、スペア2に障害が発生しスペア2から情報要素の読出しが不可能となった場合には、RAIDレベル制御プログラム31561は、ダイナミックスペアリングでの処理と同様に、図9Aに示すように、RAID6のRAIDグループを構成する他の3以上のディスクから、ストライプ毎に、情報要素を読出し、スペア2における情報要素を復元して、新ディスク#3に書込む。
スペア2に記憶されている全ての情報要素が新ディスク#3に書込まれた後、RAIDレベル制御プログラム31561は、RAIDダウン処理を開始する。具体的には、例えば、RAIDレベル制御プログラム31561は、任意の時点(例えば、RAIDダウン処理の開始時点)で、RAIDレベル管理テーブル3121の内容を、図21Bに示した内容から、図22Aに示す内容に更新する(すなわち、RAIDレベル状態を“確定”から“RAID6−5”に更新する)。RAIDレベル制御プログラム31561は、RAIDグループからスペア1及びスペア2を外し、そのRAIDグループに新ディスク#3をメンバとして含めることで、RAIDグループのRAIDレベルをRAID6からRAID5に戻す。具体的には、例えば、RAIDレベル制御プログラム31561は、LDEV管理テーブル3122の内容を、RAIDグループにおけるLDEVについて“スペア1”及び“スペア2”を含んだ内容から(つまり図23Bに示した内容)から、“スペア1”及び“スペア2”の代わりに“ディスク#3”を含んだ内容(つまり図3Cに示した内容)に更新する。また、例えば、RAIDレベル制御プログラム31561は、RAIDレベル管理テーブル3121の内容を、図22Aに示した内容から、図22Bに示す内容に変更する(RAIDレベルを“RAID6”から“RAID5”に変更し、ディスク構成を“3D+1P+1Q”から“3D+1P”に変更し、RAIDレベル状態を“RAID6−5”から“確定”に変更する)。
以上の流れにより、RAIDグループのRAIDレベルが、図4Bに示した一時的なRAID6から、図9Bに示すような元のRAID5に戻る。上記のように各テーブル3121、3122が更新された後は、例えば、RAID5に戻ったRAIDグループを基に形成されたLDEV#0にデータが書かれる場合には、そのデータに基づくデータ要素及びパリティPが、新ディスク#3を含んだディスク#1乃至#4のそれぞれのストライプ領域に書き込まれる。
図30は、コピーバックのフローチャートである。
RAIDレベル制御プログラム31561は、ダイナミックスペアリングの終了後、閾値Bを超えたエラーレートに対応するディスク#3を閉塞させる(S401)。閉塞されたディスク#3は、ユーザにより新ディスク#3に交換される(S402)。
RAIDレベル制御プログラム31561は、コピーバックの開始を表す情報をSVP317に通知する(S403)。その情報には、例えば、新ディスク#3にはどのRAIDグループのどのディスク321からコピーバックされるかを表す情報が含まれる。SVP317は、受信した情報を解析することにより得られる、どのRAIDグループのどのディスクから新ディスク#3にコピーバックされるかを表す情報を、保守端末600に送り、保守端末600が、その情報を表示する(S404)。S404で表示される保守画面の一例を、図34Aに示す。
RAIDレベル制御プログラム31561は、スペア2のストライプ領域から情報要素を読出すためにスペア2にアクセスし、それを読み出せた場合には(S405:YES)、読み出した情報要素を、新ディスク#3に書込む(S406)。
もし、スペア2に障害が発生しスペア2からの読出しが不可能である場合(S405:NO、S407:A=1)、RAIDレベル制御プログラム31561は、他のディスク#1、#2、#4及びスペア1のうちの少なくとも3つから情報要素(少なくとも一つのパリティを含んだ3以上の情報要素)を読出し、読み出した情報要素を基にDRR回路3155を利用してスペア2に記憶されている情報要素を復元し(S408)、復元された情報要素を、新ディスク#3に書込む(S410)。
もし、スペア2だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能である場合(S405:NO、S407:A=2)、RAIDレベル制御プログラム31561は、他の全てのディスクから情報要素を読出し、読み出した情報要素を基にDRR回路3155を利用してスペア2に記憶されている情報要素を復元し(S409)、復元された情報要素を、スペア2に書込む(S410)。
S405乃至S410についての処理が行われていないストライプがあれば(S411:NO)、RAIDレベル制御プログラム31561は、実行対象を次のストライプとし(S412)、S405を実行する。
一方、全てのストライプについてS405乃至S410についての処理が行われたならば(S411:YES)、RAIDレベル制御プログラム31561は、コピーバックの終了を表す情報をSVP317に通知する(S413)。SVP317は、コピーバックの終了を表す情報を保守端末600に送り、保守端末600が、その情報を表示する(S414)。S414で表示される保守画面の一例を、図34Bに示す。
RAIDレベル制御プログラム31561は、LDEV管理テーブル3122を、スペア1及びスペア2をRAIDグループから外し新ディスク#3がRAIDグループに含まれた内容に更新する(S415)。また、RAIDレベル制御プログラム31561は、ディスク管理テーブル3124におけるスペア2の状態を“待機”に更新する(S416)。RAIDレベル制御プログラム31561は、RAIDレベル管理テーブル3121において、RAIDレベルを“RAID6”から“RAID5”に変更し、ディスク構成を“3D+1P+1Q”から“3D+1P”に変更し、RAIDレベル状態を“RAID6−5”から“確定”に変更し、RAID5に戻ったことを表す情報をSVP317に通知する(S417)。SVP317は、RAID5に戻ったことを表す情報を、保守端末600に送信し、保守端末600が、その情報を表示する(S418)。S418で表示される保守画面の一例を、図34Cに示す。
以上、第一の実施形態によれば、RAID5からスペア1を利用して一時的にRAID6へ変更したり、ダイナミックスペアリング及びコピーバックの変更後に、RAID6からRAID5に戻したりすることができる。スペア1は、RAID6のRAIDグループのメンバとなる以外の用途でも使用されるディスクである。このため、常にRAID6のRAIDグループとすることに比べて、初期的に必要なディスクの数を節約することができる。
また、第一の実施形態によれば、上記のようなRAIDレベルの変更がオンライン中に行われる。言い換えれば、RAIDレベルの変更が行われるからといって、ホスト計算機100(具体的には、例えば、IOを発行するアプリケーションプログラム)を静止化する、或いは、ストレージシステム300がIOコマンドの受付けを拒否する(例えば、IOコマンドを受けたらエラー或いはビジーといった所定の応答を返す)などのIO制限は不要である。つまり、ホスト計算機100からのIOコマンドの受付けと並行してRAIDレベルの変更を行うことができる。
また、第一の実施形態によれば、ダイナミックスペアリングを実行するか否かのエラーレート閾値Bよりも低いエラーレート閾値Aが用意され、そのエラーレート閾値Aを或るディスクのエラーレートが越えたことを契機として、RAID5から一時的なRAID6への変更が行われる。このため、ダイナミックスペアリングの開始前には、第二のパリティも用意されており、故に、ダイナミックスペアリング中に一つのRAIDグループについて二つのディスク321に障害が発生しても、ダイナミックスペアリングを継続し完遂することが可能となる。
<第二の実施形態>。
本発明の第二の実施形態を説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略及び簡略する(これは、後述の第三の実施形態以降についても同様である)。
第二の実施形態では、RAID6からRAID5へ戻すRAIDダウン処理を行うか否かが選択される。その選択は、保守端末600のユーザが行っても良いし、DKA315が行っても良い。
例えば、RAIDレベル制御プログラム31561は、図30のS414の後、直ちにS415を行うのではなく、図32に例示するように、ディスク管理テーブル3124を監視する(S501)。その監視の結果、所定の条件に合致した場合に(S502:YES)、RAIDレベル制御プログラム31561は、RAID6の継続を推奨するメッセージと承認要求とをSVP317を通じて保守端末600へ送信する。RAIDレベル制御プログラム31561は、保守端末600からSVP317を通じてユーザからの承認有りを受けた場合には(S503:YES)、RAID6を維持する(つまり、ディスク#1、#2、#4、スペア1及びスペア2で構成されたRAIDグループ且つRAID6(3D+1P+1Q)が維持される)。言い換えれば、RAIDレベル制御プログラム31561は、図30のS414の後、上記所定の条件に合致しない場合に、RAID5に戻す。
ここで、所定の条件としては、例えば下記の(条件1)及び/又は(条件2)の採用が可能である。
(条件1)交換したディスク以外のディスクのエラーレートが全体的に高い。
RAID5へ構成を戻した後、短時間で、同じRAIDグループ内で別のディスク321でエラーレートが閾値Aを超える可能性がある。その場合、再び、RAID5からRAID6に変更するために各ストライプについて第二のパリティを計算する必要が生じる。このため、DKA315に負担がかかる。そこで、(条件1)が採用される。
第一の具体例として、RAIDレベル制御プログラム31561は、交換後の新ディスク#3以外のディスクのエラーレートが閾値Aよりも低い所定の値(例えば、閾値Aの半分の値)を超えていることが検出されたならば、(条件1)に合致したと判断する。
第二の具体例として、RAIDレベル制御プログラム31561は、RAIDグループにおける、交換後の新ディスク#3以外の全てのディスクのエラーレートを合計し、その合計が閾値B以上であれば、(条件1)に合致したと判断する。
(条件2)ダイナミックスペアリングが終了していから所定の時間内(例えば、保守端末600のユーザから予め指定された時間内)に、交換後の新ディスク#3のエラーレートが閾値A又はそれよりも低い所定の値に達する。
ダイナミックスペアリング実施後、交換後の新ディスクが新品ではない等の理由により、交換後の新ディスクにエラーが割りと発生する可能性がある。この場合、交換後の新ディスクのエラーレートが直ぐに閾値Aを超えてしまって、それ故、再び、RAID5からRAID6に変更するために各ストライプについて第二のパリティを計算する必要が生じる可能性がある。そこで、(条件2)が採用される。
以上が、第二の実施形態についての説明である。なお、第二の実施形態では、例えば、保守端末600のユーザが、予め、RAID5からRAID6へ変更されたRAID6を維持することのモード(RAID6維持モード)をDKA315に設定しておき、適宜に、そのRAID6維持モードをキャンセルしても良い。
<第三の実施形態>。
第三の実施形態では、RAIDアップ処理において、エラーレートが閾値Aを超えたディスク#3に記憶されている情報要素が、スペア1に移され、パリティQが、ディスク#3に書き込まれる。これにより、ディスク#1乃至#4で構成されたRAID5から、ディスク#1乃至#4とスペア1で構成されたRAID6に変更される。その後、ディスク#3のエラーレートが閾値Bを超えた場合には、ディスク#3をRAIDグループのメンバから外すことで、RAID6からRAID5に戻される。つまり、ダイナミックスペアリングやコピーバックが不要である。
具体的には、図11Aに示すように、RAIDアップ処理において、RAIDレベル制御プログラム31561は、ストライプ毎に、以下の処理を行う。例えば、1番目のストライプについて言えば、RAIDレベル制御プログラム31561は、ディスク#1乃至#4からデータ要素D01、D02、D03やパリティP1を読み出し、そのうちの、ディスク#3から読み出されたデータ要素D03を、スペア1の、1番目のストライプに属するストライプ領域に書込む。また、RAIDレベル制御プログラム31561は、上記読み出されたデータ要素D01、D02、D03及びパリティP1を基にDRR回路3155を用いてパリティQ1を取得し、取得したパリティQ1を、ディスク#3における、データ要素D03が記憶されているストライプ領域に、上書きする。
以上のような処理を、ストライプ毎に行うことで、図11Bに示すように、ディスク#3に記憶されている全ての情報要素が、スペア1に記憶され、第一の実施形態ではスペア1に記憶される各ストライプのパリティQが、ディスク#3に記憶される。
第三の実施形態では、ディスク#3のエラーレートが閾値Bを超えた場合、RAIDレベル制御プログラム31561が、図12に示すように、ディスク#3を閉塞させる(S601)。閉塞されたディスク#3が、ユーザによってストレージシステム300から取り外される(S602)。RAIDレベル制御プログラム31561は、“スペア1”をRAIDグループのメンバから外し、“スペア1”が割当てられているディスク321に対して、“ディスク#3”を割り当てる(S603)。これにより、RAID構成が、ディスク#1乃至#4とスペア1とで構成されたRAID6から、ディスク#1乃至#4で構成されたRAID5に戻ったことになる(図13参照)。但し、RAID6からRAID5の変更前と後とでは、“ディスク#3”が割当てられているディスク321が異なる。
RAIDレベル制御プログラム31561は、RAID6からRAID5に戻ったことを表す情報をSVP317に通知する(S604)。SVP317は、RAID6からRAID5に戻ったことを表す情報を保守端末600に送信し、保守端末600が、その情報を表示する(S605)。
以上、第三の実施形態によれば、利用するスペアのディスク321が1つだけで済み、且つ、ダイナミックスペアリングによるコピーやディスク交換後のコピーバックを行う必要が無い。第三の実施形態では、パリティQが書き込まれたディスク#3を閉塞させRAIDグループから外すだけで、RAID6からRAID5に戻すことができる。
<第四の実施形態>。
第四の実施形態では、ストライプ毎のパリティQが、複数のスペアのディスク321に分散される。
例えば、図14Aに示すように、3つのスペアディスク(スペア1、スペア2、スペア3)が用意されており、図14Bに示すように、そのうちのスペア1及びスペア2が、パリティQの書込み先として使用される。スペア1及びスペア2がそれぞれパリティQの書込み先とされる頻度は、例えば均等である。具体的には、例えば、RAIDレベル制御プログラム31561は、パリティQの書込み先を交互に変更する。
なお、第四の実施形態では、ダイナミックスペアリングでは、第一の実施形態と同様に、図15Aに示すように、エラーレートが閾値Bを超えたディスク#3に記憶されている情報要素が、未使用のスペア(ここではスペア3)にコピーされる。もし、図15Bに示すように、ディスク#3(及び他の一つのディスク)からの読出しができない場合には、全ての他のディスクから情報要素が読み出され、読み出された情報要素を基に、ディスク#3に記憶されている情報要素が復元され、復元された情報要素が、スペア3に書き込まれる。
この第四の実施形態によれば、RAID6への変更において一つのスペアのディスクに書き込みが集中することを避けることができる。
<第五の実施形態>。
第五の実施形態では、第四の実施形態と同様に、第二のパリティの書込み先が分散される。但し、分散先は、複数のスペアではなく、1つのスペアとRAIDグループのメンバとなっている二以上のディスクである。
例えば、図16Aに示すように、スペア1及びスペア2が用意されている。RAIDレベル制御プログラム31561は、ストライプ毎に、複数の情報要素を読み出し、それら複数の情報要素を基にDRR回路3155を利用してパリティQを生成し、パリティQをスペア1に書く。もし、パリティQを、RAIDグループの既存のメンバ(ディスク)に書く場合には、そのメンバのディスクに既存の情報要素をスペア1に書き、パリティQを、その情報要素が記憶されているストライプ領域に上書きする(図16B参照)。
以上により、第二のパリティの書込み先は、スペア1→ディスク#4→ディスク#3→ディスク#2→ディスク#1の順で切り替わり、ディスク#1の後はスペア1に戻る。
なお、第五の実施形態では、ダイナミックスペアリングでは、第一の実施形態と同様に、図17Aに示すように、エラーレートが閾値Bを超えたディスク#3に記憶されている情報要素が、未使用のスペア(ここではスペア2)にコピーされる。もし、図17Bに示すように、ディスク#3(及び他の一つのディスク)からの読出しができない場合には、全ての他のディスクから情報要素が読み出され、読み出された複数の情報要素を基に、ディスク#3に記憶されている情報要素が復元され、復元された情報要素が、スペア2に書き込まれる。
また、第五の実施形態では、図18Aに示すように、スペア2から新ディスク#3へのコピーバックが行われる。スペア2から読めなければ、図18Bに示すように、他のディスクを使用した復元が行われる。そして、RAID6からRAID5に戻すためには、一つのディスクが不要となる。ここでは、スペア1に記憶されている、パリティQ以外の各情報要素が、RAIDグループにおけるディスク#1乃至ディスク#4に記憶されているパリティQと交換される。これにより、図19に示すように、スペア1に、パリティQが集約される。その後、スペア1をRAIDグループのメンバから外すことで、RAID6からRAID5への構成変更の完了となる。
<第六の実施形態>。
第六の実施形態では、ストレージシステム300が、図20Aに示すように、Thin Provisioning技術に従う仮想ボリューム(以下、便宜上、「容量拡張ボリューム」と言う)322Vをホスト計算機100に提供する機能を有する。ストレージシステム300は、複数のLDEV322で構成されたプール326を有し、プール326が、複数の実体のある記憶領域(以下、便宜上、「ページ」と言う)3221Rを有する。共有メモリ312に、容量拡張ボリュームにおけるどの仮想的な記憶領域(以下、仮想領域)3221Vにどのページ3221Rが割り当てられているかを表すマッピング情報(図示せず)が記憶される。CHA311は、仮想領域3221Vを指定したライトコマンドを受けた場合、マッピング情報を参照し、その仮想領域3221Vにページ3221Rが未割り当てであれば、ページ3221Rをその仮想領域3221Vに割り当てる共に、どの仮想領域3221Vにどのページ3221Rを割当てたかをマッピング情報に登録し、割り当てたページ3221Rに、DKA315を通じてデータを書く。
一つのページが、例えば、図20Bに示すように、一つのストライプに1対1で対応している。RAIDレベル制御プログラム31561は、どのページとどのストライプが1対1で対応しているかを特定し、仮想領域に割り当てられているページに対応したストライプのみについて、第二のパリティを取得する。言い換えれば、仮想領域に割り当てられていないページに対応したストライプについては、情報要素の読み出しやパリティQの生成は行われない。
なお、ページのサイズは、ストライプのサイズよりも小さくてもよいし、複数のストライプのサイズ分あっても良い。言い換えれば、一ストライプが複数のページに対応しても良いし、一ページが複数のストライプに対応しても良い。この場合、割当て済みのページを含んだストライプ、或いは、割当て済みのページに含まれる複数のストライプが特定され、特定されたストライプから複数の情報要素の読出しが行われる。
以上、本発明の好適な幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
図1は、本発明の第一の実施形態に係る計算機システムの構成を示す。 図2は、DKA(ディスクアダプタ)の構成例を示す。 図3Aは、RAIDレベル管理テーブルの構成例を示す。図3Bは、LDEV管理テーブルの構成例を示す。図3Cは、ディスク管理テーブルの構成例を示す。 図4Aは、第一の実施形態でのRAIDアップ処理前のRAIDグループの一例を示す。図4Bは、第一の実施形態でのRAIDアップ処理の概要及びそのRAIDアップ処理後のRAIDグループの一例を示す。 図5は、第一の実施形態でのRAIDアップ処理のフローチャートである。 図6Aは、ディスク#3からの読出しが可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。図6Bは、ディスク#3からの読出しが不可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。 図7は、第一の実施形態でのダイナミックスペアリングのフローチャートである。 図8Aは、第一の実施形態でのダイナミックスペアリング後に閉塞されたディスク#3の交換を示す。図8Bは、スペア2からの読出しが可能な場合の第一の実施形態でのコピーバックの概念図である。 図9Aは、スペア2からの読出しが不可能な場合の第一の実施形態でのコピーバックの概念図である。図9Bは、第一の実施形態での、RAID6からRAID5の変更後のRAIDグループを示す。 図10は、ディスク#3と他のディスクからの読出しが不可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。 図11Aは、本発明の第三の実施形態でのパリティQ1の書込みの概念図である。図11Bは、第三の実施形態でのパリティQの書込み後の状態の概念図である。 図12は、第三の実施形態でのRAID5へ戻す処理のフローチャートである。 図13は、第三の実施形態においてRAID5へ戻ったRAIDグループの概念図である。 図14Aは、本発明の第四の実施形態においてRAIDアップ処理が始まる前のRAIDグループとスペアのディスクの概念図である。図14Bは、第四の実施形態でのRAIDアップ処理におけるパリティQの書き込みの概念図である。 図15Aは、第四の実施形態でのダイナミックスペアリングの概念図である。図15Bは、ディスク#3からの読出し不可の場合の第四の実施形態でのダイナミックスペアリングの概念図である。 図16Aは、本発明の第五の実施形態においてRAIDアップ処理が始まる前のRAIDグループとスペアのディスクの概念図である。図16Bは、第五の実施形態でのRAIDアップ処理におけるパリティQの書込みの概念図である。 図17Aは、第五の実施形態でのダイナミックスペアリングの概念図である。図17Bは、ディスク#3からの読出し不可の場合の第五の実施形態でのダイナミックスペアリングの概念図である。 図18Aは、第五の実施形態でのコピーバックの概念図である。図18Bは、スペア2から読出し不可の場合の第五の実施形態でのコピーバックの概念図である。 図19は、スペア1に第二のパリティの集約の概念図である。 図20Aは、本発明の第六の実施形態における容量拡張処理の概念図である。図20Bは、第六の実施形態において割り当て済みページに対応したストライプについてパリティQが生成されることの概念図である。 図21Aは、RAID5からRAID6への変更中の第一の実施形態でのRAIDレベル制御テーブルを示す。図21Bは、RAID5からRAID6への変更完了後の第一の実施形態でのRAIDレベル制御テーブルを示す。 図22Aは、RAID6からRAID5への変更中の第一の実施形態でのRAIDレベル制御テーブルを示す。図22Bは、RAID6からRAID5への変更完了後の第一の実施形態でのRAIDレベル制御テーブルを示す。 図23Aは、RAIDグループのメンバに一時的にスペア1が追加された第一の実施形態でのLDEV管理テーブルを示す。図23Bは、ディスク#3とスペア2が交換された第一の実施形態でのLDEV管理テーブルを示す。 図24Aは、ディスク#3のエラーレートが閾値Aを超えた場合の第一の実施形態でのディスク管理テーブルを示す。図24Bは、ディスク#3のエラーレートが閾値Bを超えた場合の第一の実施形態でのディスク管理テーブルを示す。 図25Aは、オンライン中にディスクから旧データ要素D03及び旧パリティP1の読出されることを示す。図25Bは、オンライン中にDRR回路を利用した新パリティP1´の生成が行われることを示す。 図26Aは、オンライン中に新データ要素D03´及び新パリティP1´が旧データ要素D03及び旧パリティP1に上書きされることを示す。図26Bは、オンライン中にホストからのデータ要素D03´がキャッシュメモリに書き込まれたがLDEV#0がRAID5からRAID6へ変更中であるためそのデータ要素D03´の書込みが保留となっていることを示す。 図27Aは、LDEV#0についてRAID6が確定したことを示す。図27Bは、旧データ要素D03及び旧パリティP1及びQ1のディスクからキャッシュメモリへの読み出しを示す。 図28Aは、新パリティP1´及びQ1´の生成を示す。図28Bは、オンライン中に新データ要素D03´、新パリティP1´及びQ1´が旧データ要素D03、旧パリティP1及びQ1に上書きされることを示す。 図29Aは、RAIDアップ処理の開始時の保守画面を示す。図29Bは、RAIDアップ処理中の管理画面を示す。図29Cは、RAIDアップ処理の完了時の保守画面を示す。 図30は、第一の実施形態でのコピーバック及びRAIDダウン処理の流れを示す。 図31は、第一の実施形態でのエラーレートの監視の流れの一例を示す。 図32は、本発明の第二の実施形態においてRAID6を維持するかRAID5に戻すかの選択の流れを示す。 図33Aは、ダイナミックスペアリングの開始時の保守画面を示す。図33Bは、ダイナミックスペアリングの完了時の保守画面を示す。 図34Aは、コピーバックの開始時の保守画面を示す。図34Bは、コピーバック完了時の保守画面を示す。図34Cは、RAID5への変更完了時の保守画面を示す。
符号の説明
100…ホスト計算機 300…ストレージシステム

Claims (20)

  1. RAIDグループのメンバとしての記憶装置である二以上のメンバ記憶装置とそのRAIDグループのメンバではないスペアの記憶装置である一又は複数のスペア記憶装置とを含んだ複数の記憶装置と、
    前記RAIDグループのRAIDレベルを、第一のRAIDレベルから、前記一又は複数のスペア記憶装置から選択されたスペア記憶装置を利用して第二のRAIDレベルに変更するコントローラと
    を備えるストレージシステム。
  2. 前記第一のRAIDレベルよりも前記第二のRAIDレベルの方が耐障害性に優れており、
    前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第一の閾値を超えた場合に、前記RAIDグループのRAIDレベルを、前記第一のRAIDレベルから、前記選択されたスペア記憶装置を利用して前記第二のRAIDレベルに変更する、
    請求項1記載のストレージシステム。
  3. 前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を前記複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されており、
    前記第一の閾値が前記第二の閾値よりも低い、
    請求項2記載のストレージシステム。
  4. 前記コントローラが、前記情報退避処理の後、前記RAIDグループのRAIDレベルを、前記第二のRAIDレベルから前記第一のRAIDレベルに戻す、
    請求項3記載のストレージシステム。
  5. 前記コントローラが、前記或るメンバ記憶装置以外のメンバ記憶装置のエラーの発生度合いが所定の度合い以下の場合、及び/又は、各メンバ記憶装置のエラーの発生度合いが一定時間経っても所定の度合い以下の場合、前記RAIDグループのRAIDレベルを、前記第二のRAIDレベルから前記第一のRAIDレベルに戻す、
    請求項4記載のストレージシステム。
  6. 前記第二のRAIDレベルは、前記RAIDグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルであり、
    前記コントローラが、前記或るメンバ記憶装置に記憶されている情報要素を前記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを前記或るメンバ記憶装置に書込む、
    請求項2記載のストレージシステム。
  7. 前記コントローラが、前記RAIDグループから前記或るメンバ記憶装置を外し、前記選択されたスペア記憶装置を前記RAIDグループのメンバとして管理することで、前記RAIDグループのRAIDレベルを前記第二のRAIDレベルから前記第一のRAIDレベルに戻す、
    請求項6記載のストレージシステム。
  8. 前記第二のRAIDレベルは、前記RAIDグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルであり、
    前記選択されたスペア記憶装置は複数個であり、
    前記コントローラは、前記RAIDグループを構成する複数のストライプについての複数のパリティを前記選択された複数のスペア記憶装置に分散させる、
    請求項1記載のストレージシステム。
  9. 前記第二のRAIDレベルは、前記RAIDグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるRAIDレベルであり
    前記コントローラは、前記RAIDグループを構成する複数のストライプについての複数のパリティを、前記選択されたスペア記憶装置と前記二以上のメンバ記憶装置とに分散させる、
    請求項1記載のストレージシステム。
  10. 前記第一のRAIDレベルから前記第二のRAIDレベルへの変更では、前記RAIDグループを構成する記憶領域であるストライプ毎に、前記二以上のメンバ記憶装置から情報要素を読出す必要があり、
    前記RAIDグループの記憶空間を基に論理ボリュームが形成されており、前記論理ボリュームが複数の記憶領域である複数のページで構成されており、
    前記コントローラが、前記ストレージシステムの外部から受信したライトコマンドが、仮想的なボリュームにおける仮想的な記憶領域を指定している場合、前記複数のページから選択されたページを前記仮想的な記憶領域に割り当て、割り当てたページに、前記ライトコマンドに従う情報要素を書込むよう構成されており、前記第一のRAIDレベルから前記第二のRAIDレベルへの変更では、前記仮想的な論理ボリュームに割当てられているページに対応したストライプについてのみ、情報要素の読出しを行う、
    請求項1記載のストレージシステム。
  11. 前記一又は複数のスペア記憶装置は、複数のRAIDグループに共用である、
    請求項1記載のストレージシステム。
  12. 前記コントローラが、キャッシュメモリを有し、前記ストレージシステムの外部からライトコマンドを受信し、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込み、その場合に、前記外部に書込み完了を報告し、それと非同期で、その情報要素を前記RAIDグループに書き込むよう構成されており、もし、前記RAIDグループのRAIDレベルの変更中であれば、前記キャッシュメモリに記憶されている情報要素を前記RAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素を前記RAIDグループに書き込む、
    請求項1記載のストレージシステム。
  13. 前記第二のRAIDレベルは、前記RAIDグループを構成する各記憶領域であるストライプ毎に、前記第一のRAIDレベルよりも多くのパリティが生成されるレベルである、
    請求項1記載のストレージシステム。
  14. 前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が、第一の閾値を超えた場合に、前記RAIDグループを構成するストライプ毎に、ストライプに記憶されている二以上の情報要素の読出しと、前記二以上の情報要素に基づくパリティの生成と、生成されたパリティの前記選択されたスペア記憶装置に対する書込みとを実行し、前記選択されたスペア記憶装置を前記RAIDグループの更なるメンバとして管理することで、前記RAIDグループのRAIDレベルを、前記第一のRAIDレベルから前記第二のRAIDレベルに変更する、
    請求項13記載のストレージシステム。
  15. 前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を、前記複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されており、
    前記第一の閾値が前記第二の閾値よりも低い、
    請求項14記載のストレージシステム。
  16. 前記コントローラが、前記情報退避処理の後、前記選択された別のスペア記憶装置に記憶されている情報要素を、前記或るメンバ記憶装置が前記ストレージシステムから取り外され前記或るメンバ記憶装置の代わりに搭載された記憶装置である交換後メンバ記憶装置に書込み、前記RAIDグループのメンバから前記選択されたスペア記憶装置を外すことで、前記RAIDグループのRAIDレベルを、前記第二のRAIDレベルから前記第一のRAIDレベルに戻す、
    請求項15記載のストレージシステム。
  17. 前記コントローラが、前記RAIDグループを構成するストライプ毎に、前記或るメンバ記憶装置に記憶されている情報要素を前記選択されたスペア記憶装置に書込み、前記ストライプ毎のパリティを前記或るメンバ記憶装置に書込み、前記RAIDグループから前記或るメンバ記憶装置を外すことで、前記RAIDグループのRAIDレベルを前記第二のRAIDレベルから前記第一のRAIDレベルに戻す、
    請求項14記載のストレージシステム。
  18. RAIDグループを構成する二以上の記憶装置と、
    キャッシュメモリを有したコントローラと
    を備え、
    前記コントローラが、前記ストレージシステムの外部からライトコマンドを受信し、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込み、その場合に、前記外部に書込み完了を報告し、それと非同期で、その情報要素を前記RAIDグループに書き込むよう構成されており、もし、前記RAIDグループのRAIDレベルの変更中であれば、その情報要素を前記RAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素を前記RAIDグループに書き込む、
    ストレージシステム。
  19. RAIDグループのメンバとしての記憶装置である二以上のメンバ記憶装置とそのRAIDグループのメンバではないスペアの記憶装置とを含んだ複数の記憶装置と、
    前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を前記スペアの記憶装置に書き込む情報退避処理を行うコントローラと
    を備え、
    前記コントローラが、前記情報退避処理を行う前に、前記RAIDグループのRAIDレベルを、第一のRAIDレベルから、前記第一のRAIDレベルよりも耐障害性に優れた第二のRAIDレベルに変更する、
    ストレージシステム。
  20. 前記コントローラが、前記外部に対するインタフェース装置である上位I/Fと、前記複数の記憶装置に対するインタフェース装置である下位I/Fとを含み、
    前記上位I/Fが、前記外部からライトコマンドを受信することと、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込むことと、前記外部に書込み完了を報告することを行うよう構成されており、
    前記下位I/Fが、前記キャッシュメモリに記憶された情報要素を前記RAIDグループに書き込むことと、前記RAIDグループのRAIDレベルの変更を行うことと、RAIDレベルの変更中であれば前記キャッシュメモリに記憶されている情報要素を前記RAIDグループに書き込むことを待ち、RAIDレベルの変更が終了した後に、その情報要素を前記RAIDグループに書き込むこととを行うよう構成されている、
    請求項12記載のストレージシステム。
JP2007199087A 2007-07-31 2007-07-31 Raidレベルを変更する機能を有したストレージシステム Pending JP2009037304A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007199087A JP2009037304A (ja) 2007-07-31 2007-07-31 Raidレベルを変更する機能を有したストレージシステム
US11/971,500 US7827351B2 (en) 2007-07-31 2008-01-09 Storage system having RAID level changing function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007199087A JP2009037304A (ja) 2007-07-31 2007-07-31 Raidレベルを変更する機能を有したストレージシステム

Publications (1)

Publication Number Publication Date
JP2009037304A true JP2009037304A (ja) 2009-02-19

Family

ID=40339228

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007199087A Pending JP2009037304A (ja) 2007-07-31 2007-07-31 Raidレベルを変更する機能を有したストレージシステム

Country Status (2)

Country Link
US (1) US7827351B2 (ja)
JP (1) JP2009037304A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010186282A (ja) * 2009-02-12 2010-08-26 Fujitsu Ltd ディスクアレイ制御装置
JP2010211420A (ja) * 2009-03-09 2010-09-24 Fujitsu Ltd ストレージ管理装置、ストレージ管理方法およびストレージシステム
WO2010122679A1 (ja) 2009-04-23 2010-10-28 株式会社日立製作所 計算機システム及びその制御方法
JP2011008583A (ja) * 2009-06-26 2011-01-13 Toshiba Corp ディスクアレイ制御装置及びディスクアレイ装置
JP2011253467A (ja) * 2010-06-03 2011-12-15 Buffalo Inc 記憶装置及びその制御プログラム
WO2012132408A1 (ja) * 2011-03-31 2012-10-04 パナソニック株式会社 アレイ管理装置、アレイ管理方法、コンピュータプログラム、集積回路
JP2013545202A (ja) * 2010-12-01 2013-12-19 エルエスアイ コーポレーション 独立したシリコン素子の動的な上位レベルの冗長モード管理
JP2016105320A (ja) * 2010-09-28 2016-06-09 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid
JP2016184413A (ja) * 2010-10-01 2016-10-20 ピュア・ストレージ・インコーポレイテッド 動的構成のraidアレイにおける再構成読み込み

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217281A1 (en) * 2008-02-22 2009-08-27 John M Borkenhagen Adaptable Redundant Bit Steering for DRAM Memory Failures
US8392654B2 (en) * 2009-04-17 2013-03-05 Lsi Corporation Raid level migration for spanned arrays
US8145840B2 (en) * 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
US8417987B1 (en) 2009-12-01 2013-04-09 Netapp, Inc. Mechanism for correcting errors beyond the fault tolerant level of a raid array in a storage system
US8954667B2 (en) * 2010-01-28 2015-02-10 Cleversafe, Inc. Data migration in a dispersed storage network
US11429486B1 (en) 2010-02-27 2022-08-30 Pure Storage, Inc. Rebuilding data via locally decodable redundancy in a vast storage network
US9606867B2 (en) * 2014-06-05 2017-03-28 International Business Machines Corporation Maintaining data storage in accordance with an access metric
US20180365105A1 (en) 2014-06-05 2018-12-20 International Business Machines Corporation Establishing an operation execution schedule in a dispersed storage network
US8386834B1 (en) * 2010-04-30 2013-02-26 Network Appliance, Inc. Raid storage configuration for cached data storage
US8463995B2 (en) 2010-07-16 2013-06-11 Hitachi, Ltd. Storage control apparatus and storage system comprising multiple storage control apparatuses
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US9032146B2 (en) 2010-11-30 2015-05-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic use of raid levels responsive to workload requirements
US20180046547A1 (en) * 2011-07-06 2018-02-15 International Business Machines Corporation Storage container ds unit reassignment based on dynamic parameters
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
WO2016060675A1 (en) * 2014-10-17 2016-04-21 Hitachi, Ltd. Method and apparatus for managing data recovery of distributed storage system
US9563524B2 (en) 2014-12-11 2017-02-07 International Business Machines Corporation Multi level data recovery in storage disk arrays
US9747177B2 (en) 2014-12-30 2017-08-29 International Business Machines Corporation Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10725865B2 (en) * 2015-02-25 2020-07-28 Hitachi Ltd. Storage unit and storage device
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US9990263B1 (en) * 2015-03-20 2018-06-05 Tintri Inc. Efficient use of spare device(s) associated with a group of devices
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10241877B2 (en) 2016-12-12 2019-03-26 International Business Machines Corporation Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11061725B2 (en) * 2018-03-27 2021-07-13 International Business Machines Corporation Managing a set of computing resources
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10496316B1 (en) * 2018-10-31 2019-12-03 EMC IP Holding Company LLC Forming storage containers from extents having different widths within a group of storage devices
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US10809927B1 (en) * 2019-04-30 2020-10-20 Microsoft Technology Licensing, Llc Online conversion of storage layout
US11442826B2 (en) 2019-06-15 2022-09-13 International Business Machines Corporation Reducing incidents of data loss in raid arrays having the same raid level
US11074118B2 (en) 2019-06-15 2021-07-27 International Business Machines Corporation Reporting incidents of data loss in RAID arrays
US10929037B2 (en) 2019-06-15 2021-02-23 International Business Machines Corporation Converting a RAID to a more robust RAID level
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11340816B2 (en) * 2020-01-14 2022-05-24 EMC IP Holding Company LLC Deallocation of drive extents for mapped raid (redundant array of independent disks) extents
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
CN111767165A (zh) * 2020-06-30 2020-10-13 杭州海康存储科技有限公司 数据处理方法、装置及控制设备
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299385B2 (en) * 2004-07-28 2007-11-20 Hewlett-Packard Development Company, L.P. Managing a fault tolerant system
JP2006318017A (ja) 2005-05-10 2006-11-24 Nec System Technologies Ltd Raid構成変換方法、装置及びプログラム並びにこれを用いたディスクアレイ装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010186282A (ja) * 2009-02-12 2010-08-26 Fujitsu Ltd ディスクアレイ制御装置
JP2010211420A (ja) * 2009-03-09 2010-09-24 Fujitsu Ltd ストレージ管理装置、ストレージ管理方法およびストレージシステム
JP4719802B2 (ja) * 2009-03-09 2011-07-06 富士通株式会社 ストレージ管理装置、ストレージ管理方法およびストレージシステム
US8266475B2 (en) 2009-03-09 2012-09-11 Fujitsu Limited Storage management device, storage management method, and storage system
WO2010122679A1 (ja) 2009-04-23 2010-10-28 株式会社日立製作所 計算機システム及びその制御方法
US8751767B2 (en) 2009-04-23 2014-06-10 Hitachi, Ltd. Computer system and its control method
JP2011008583A (ja) * 2009-06-26 2011-01-13 Toshiba Corp ディスクアレイ制御装置及びディスクアレイ装置
JP2011253467A (ja) * 2010-06-03 2011-12-15 Buffalo Inc 記憶装置及びその制御プログラム
JP2016105320A (ja) * 2010-09-28 2016-06-09 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid
JP2016184413A (ja) * 2010-10-01 2016-10-20 ピュア・ストレージ・インコーポレイテッド 動的構成のraidアレイにおける再構成読み込み
JP2013545202A (ja) * 2010-12-01 2013-12-19 エルエスアイ コーポレーション 独立したシリコン素子の動的な上位レベルの冗長モード管理
WO2012132408A1 (ja) * 2011-03-31 2012-10-04 パナソニック株式会社 アレイ管理装置、アレイ管理方法、コンピュータプログラム、集積回路

Also Published As

Publication number Publication date
US20090037656A1 (en) 2009-02-05
US7827351B2 (en) 2010-11-02

Similar Documents

Publication Publication Date Title
JP2009037304A (ja) Raidレベルを変更する機能を有したストレージシステム
US9367265B2 (en) Storage system and method for efficiently utilizing storage capacity within a storage system
JP5124103B2 (ja) 計算機システム
US8521978B2 (en) Storage apparatus and method for controlling storage apparatus
US10082965B1 (en) Intelligent sparing of flash drives in data storage systems
JP5056747B2 (ja) 記憶領域管理装置、記憶領域管理方法
US8495293B2 (en) Storage system comprising function for changing data storage mode using logical volume pair
US7480780B2 (en) Highly available external storage system
US7558981B2 (en) Method and apparatus for mirroring customer data and metadata in paired controllers
US9037795B1 (en) Managing data storage by provisioning cache as a virtual device
US9383940B1 (en) Techniques for performing data migration
JP4609848B2 (ja) 負荷分散コンピュータシステム、経路設定プログラム及びその方法
US20090292870A1 (en) Storage apparatus and control method thereof
JP2006113648A (ja) ディスクアレイ装置
US8812779B2 (en) Storage system comprising RAID group
JP2009104421A (ja) ストレージアクセス装置
WO2012095891A1 (en) Storage control apparatus to which thin provisioning is applied
KR20110084873A (ko) 데이터 저장 방법 및 대용량 저장 시스템
JP2012515371A (ja) 複数のプロセッサユニットを備えたストレージシステム
US8275958B2 (en) Storage system with remote copy controllers
US20200117381A1 (en) Storage system and storage control method
JP5829753B2 (ja) ストレージシステムおよび記憶制御方法