JP2020144459A - ストレージシステム、データ管理方法、及びデータ管理プログラム - Google Patents

ストレージシステム、データ管理方法、及びデータ管理プログラム Download PDF

Info

Publication number
JP2020144459A
JP2020144459A JP2019038790A JP2019038790A JP2020144459A JP 2020144459 A JP2020144459 A JP 2020144459A JP 2019038790 A JP2019038790 A JP 2019038790A JP 2019038790 A JP2019038790 A JP 2019038790A JP 2020144459 A JP2020144459 A JP 2020144459A
Authority
JP
Japan
Prior art keywords
stripe
restoration
data
failure
parcel
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
JP2019038790A
Other languages
English (en)
Other versions
JP6889742B2 (ja
Inventor
裕大 藤井
Yuudai Fujii
裕大 藤井
良徳 大平
Yoshinori Ohira
良徳 大平
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 JP2019038790A priority Critical patent/JP6889742B2/ja
Priority to US16/558,561 priority patent/US20200285551A1/en
Publication of JP2020144459A publication Critical patent/JP2020144459A/ja
Application granted granted Critical
Publication of JP6889742B2 publication Critical patent/JP6889742B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データの信頼性の確保を早期に実現しつつ、リビルド処理による他のI/O性能の低下を抑制することができるようにする。【解決手段】上位ストレージ装置101において、BEPK108と、MP115とを有し、複数の下位ストレージ装置121の各々は、複数のストライプ列を構成する複数のストライプを有し、複数のストライプ列の各々は、複数の下位ストレージ装置121がそれぞれ有する2以上のストライプの列であり、複数のストライプ列の各々は、複数のデータ要素と冗長コードとを格納するようになっており、所定の許容数までの下位ストレージ装置121が故障した場合に、ストライプにあるデータ要素を復元することができる構成であり、MP115を、故障した下位ストレージ装置121における障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、復元処理における処理速度を制御するように構成する。【選択図】図1

Description

本発明は、複数のストレージ装置により、RAID(Redundant Array of Independent Disks)グループを構成するストレージシステム等に関し、データを管理する技術に関する。
従来、ストレージシステムにおける複数のストレージ装置により、RAIDグループを構成し、RAIDグループに基づいて作成された論理ボリュームを、上位装置(例えばホスト計算機)へ提供することが行われている。
このようなストレージシステムにおいては、冗長データを記憶するRAIDグループを構成するいずれかのストレージ装置に故障が発生した場合には、冗長データ等を使って、故障が発生したストレージ装置に格納されていたデータを復元(リビルド)することが行われる。
RAIDに関する技術として、特許文献1には、通常データと、通常データを復元するための冗長データとを含む複数のストライプ列から、ストライプ列のストライプデータ要素を格納する複数のストレージ装置の中の所定の許容数又は所定の許容数に最も近い数のストレージ装置が故障しているストライプ列を検出し、検出したストライプ列のストライプデータ要素を優先して、ストレージ装置に復元させる技術が開示されている。
特表2015−525377号公報
ホスト(ホスト計算機)で利用されるデータを管理するストレージシステムでは、一般的には、ホストによる処理の継続が必要である場合がある。このようなストレージシステムでは、ストレージ装置に故障が発生した場合において、ホストによるI/Oの処理を継続した状態で、故障が発生したストレージ装置に格納されていたデータをリビルドする必要がある。この場合には、ストレージシステムにおいては、ホストからのI/Oを処理する必要があるとともに、リビルドに係るI/Oを処理する必要がある。このため、リビルド処理の間においては、ホストに対するI/O性能(ホストI/O性能)が低下してしまう。
近年では、ストレージ装置の大容量化が進んでおり、リビルドに要する時間が長時間化している。リビルドの高速化のためには、リビルドに割くI/O資源を増やしてリビルドを高速化することが考えられるが、このようにすると、ホストのI/Oに割り当てられるI/O資源が減るため、ホストI/O性能の低下率が大きくなる。リビルド時間の短縮と、I/O性能の低下幅の低減とは、トレードオフ関係にあり、両者の両立が困難である。
本発明は、上記事情に鑑みなされたものであり、その目的は、データの信頼性の確保を早期に実現しつつ、リビルド処理による他のI/O性能の低下を抑制することのできる技術による提供することにある。
上記目的を達成するため、一観点に係るストレージシステムは、複数のストレージ装置に接続されたインターフェースと、インターフェースに接続された制御部と、有し、複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、複数のストライプ列の各々は、2以上のストレージ装置がそれぞれ有する2以上のストライプの列であり、複数のストライプ列の各々は、複数のデータ要素と少なくとも1つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、ストレージ装置の数は、1つのストライプ列を構成するストライプの数よりも多く、制御部は、故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、障害ストライプの復元処理における処理速度を制御する。
本発明によれば、データの信頼性の確保を早期に実現しつつ、リビルド処理による他のI/O性能の低下を抑制することができる。
図1は、実施例1に係る計算機システムのハードウェア構成図である。 図2は、実施例1に係るデータの論理的な構成図である。 図3は、実施例1に係る下位ストレージ装置におけるデータの論理的な構成図である。 図4は、実施例1に係る共有メモリのテーブルを示す図である。 図5は、実施例1に係るページマッピングテーブルの一例を示す図である。 図6は、実施例1に係るパーセルマッピングテーブルの一例を示す図である。 図7は、実施例1に係るドライブ状態テーブルの一例を示す図である。 図8は、実施例1に係るローカルメモリの構成図である。 図9は、実施例1に係る速度制御リビルド処理のフローチャートである。 図10は、実施例1に係るエクステント分類処理のフローチャートである。 図11は、実施例1に係るリビルド処理の一例を示すフローチャートである。 図12は、実施例1に係るデータ復元処理の一例を示すフローチャートである。 図13は、実施例1に係る通常リビルド処理の一例を示すフローチャートである。 図14は、実施例1に係る管理サーバの管理画面の一例を示す図である。 図15は、実施例2に係る速度制御リビルド処理の一例を示すフローチャートである。 図16は、実施例3に係るパーセルマッピングテーブルの一例を示す図である。 図17は、実施例3に係る速度制御リビルド処理の一例を示すフローチャートである。 図18は、実施例3に係るデータ部リビルド処理の一例を示すフローチャートである。 図19は、実施例3に係るパリティ部リビルド処理の一例を示すフローチャートである。 図20は、実施例4に係るローカルメモリの構成図である。 図21は、実施例4に係るパーセルマッピングテーブルの一例を示す図である。 図22は、実施例4に係る速度制御リビルド処理の一例を示すフローチャートである。 図23は、実施例4に係るリビルド先領域決定処理の一例を示すフローチャートである。 図24は、実施例4に係る部分データ復元処理の一例を示すフローチャートである。 図25は、実施例5に係る計算機システムのハードウェア構成図である。
いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機(例えば、管理計算機、ホスト計算機、ストレージ装置等)が行う処理としてもよい。また、コントローラは、プロセッサそれ自体であってもよいし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
実施例1に係るストレージシステムを含む計算機システムの概要を説明する。
ストレージシステムは、例えば、図1に示す上位ストレージ装置101により構成される。ストレージシステムは、外部ストレージ装置104を含んでもよい。上位ストレージ装置101のDKU117には、下位ストレージ装置121が複数備えられている。上位ストレージ装置101においては、複数の下位ストレージ装置121の記憶領域により構成される容量プール(以下、プールという)が管理される。また、上位ストレージ装置101においては、プールの領域を用いてRAIDグループが構成される。すなわち、プールの領域を構成する複数の下位ストレージ装置121を用いて、RAIDグループが構成されている。
RAIDグループの記憶領域は、複数のサブ記憶領域列で構成されている。各サブ記憶領域列は、RAIDグループを構成する複数のストレージ装置(下位ストレージ装置121及び/又は外部ストレージ装置104)に跨っており、複数のストレージ装置に対応した複数のサブ記憶領域で構成されている。ここで、1つのサブ記憶領域を、「ストライプ」と呼び、複数のストライプで構成された一列を、「ストライプ列」と呼ぶ。複数のストライプ列によって、RAIDグループの記憶領域が構成されている。
RAIDには、いくつかのレベル(以下、「RAIDレベル」という)がある。
例えば、RAID5では、RAID5に対応したホスト計算機(ホストという)から指定されたライト対象のデータは、所定サイズのデータ(以下、便宜上「データ単位」という)に分割されて、各データ単位が、複数のデータ要素(データ部)に分割され、複数のデータ要素が、複数のストライプに書き込まれる。また、RAID5では、ストレージ装置に障害が発生したことによりそのストレージ装置から読み出せなくなったデータ要素をリビルドするために、各データ単位に対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」、「パリティ部」)が生成され、その冗長コードも、同一のストライプ列のストライプに書き込まれる。例えば、RAIDグループを構成するストレージ装置の数が4である場合は、そのうちの3つのストレージ装置に対応する3つのストライプに、データ単位を構成する3つのデータ要素が書き込まれ、残りの1つのストレージ装置に対応するストライプに、冗長コードが書き込まれる。以下、データ要素と冗長コードとを区別しない場合には、両者をそれぞれストライプデータ要素ということもある。
また、RAID6では、RAIDグループを構成する複数の記憶装置のうちの2つのストレージ装置に障害が発生した等の理由により、データ単位を構成する複数のデータ要素のうちの2つのデータ要素を読み出すことができない場合に、これら2つのデータ要素を復元することができるように、各データ単位に対して、2種類の冗長コード(Pパリティ、Qパリティという)が生成されて、それぞれの冗長コードが同一のストライプ列のストライプに書き込まれる。
また、上記に説明した以外にもRAIDレベルは存在する(例えばRAID1〜4)。また、データの冗長化技術として、3重ミラー(Triplication)、パリティを3個用いたトリプルパリティ技術等もある。また、冗長コードの生成技術についても、ガロア演算を用いたReed−solomon符号や、EVEN−ODD等さまざまな技術が存在する。本発明の実施例では、主にRAID5,6について説明するが、これは本発明を限定するものではなく、上述した方法の置き換えによる応用が可能である。
まず、実施例1に係るストレージシステムを含む計算機システムを説明する。
図1は、実施例1に係る計算機システムのハードウェア構成図である。
計算機システムは、1以上のホスト計算機(以下、ホストという)103、管理サーバ102と、上位ストレージ装置101とを含む。ホスト計算機103と、管理サーバ102と、上位ストレージ装置1101とは、ネットワーク120を介して接続されている。ネットワーク120は、ローカルエリアネットワークであってもよく、ワイドエリアネットワークであってもよい。また、上位ストレージ装置101に、1以上の外部ストレージ装置104を接続するようにしてもよい。外部ストレージ装置104は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。
ホスト103は、例えば、アプリケーションを実行する計算機であり、上位ストレージ装置101からアプリケーションに利用するデータを読み出したり、上位ストレージ装置101にアプリケーションで作成したデータを書き込んだりする。
管理サーバ102は、計算機システムを管理する管理処理を実行するための管理者により使用される計算機である。管理サーバ102は、入力デバイスに対する管理者の操作により、データを復元する際に実行させるリビルド処理のモードの設定を受け付け、上位ストレージ装置101を、受け付けたリビルド処理を実行させるように設定する。
上位ストレージ装置101は、1以上のフロントエンドパッケージ(FEPK)105と、保守インターフェース(保守I/F)107と、1以上のマイクロプロセッサパッケージ(MPPK)114と、1以上のキャッシュメモリパッケージ(CMPK)112と、1以上のバックエンドパッケージ(BEPK)108と、内部ネットワーク122と、1以上のディスクユニット(DKU)117とを有する。FEPK105、保守I/F107、MPPK114、CMPK112、及びBEPK108は、内部ネットワーク122を介して接続されている。BEPK108は、複数系統のパスを介してDKU117と接続されている。
FEPK105は、インターフェースデバイスの一例であり、1以上のポート106を有する。ポート106は、上位ストレージ装置101を、ネットワーク120等を介して種々の装置(ホスト103、外部ストレージ装置104等)と接続する。保守I/F107は、上位ストレージ装置101を、管理サーバ102と接続するためのインターフェースである。
MPPK114は、制御部の一例としてのマイクロプロセッサ(MP)115と、ローカルメモリ(LM)116とを有する。LM116は、各種プログラムや、各種情報を記憶する。MP115は、LM116に格納されたプログラムを実行して各種処理を実行する。MP115は、BEPK108を介して、各種コマンドをDKU117の下位ストレージ装置121に送信する。また、MP115は、FEPK105を介して、各種コマンドを外部ストレージ装置104に送信する。
CMPK112は、キャッシュメモリ(CM)113を有する。CM113は、ホスト103から下位ストレージ装置121等に書き込むデータ(ライトデータ)や、下位ストレージ装置121から読み出したデータ(リードデータ)を一時的に格納する。
BEPK108は、インターフェースデバイス(インターフェース)の一例であり、パリティ演算器109と、転送バッファ(DXBF)110と、バックエンドコントローラ(BEコントローラ)111とを有する。
パリティ演算器109は、例えば、小型のプロセッサであり、下位ストレージ装置121に障害が発生した際にその障害により読み出せなくなったデータ要素を復元するための冗長コード(以下、パリティ)を生成する。パリティ演算器109は、例えば、RAID5で構成されたRAIDグループのデータ単位に対しては、データ単位を構成する複数のデータ要素の排他的論理和をとることによってPパリティを生成する。また、パリティ演算器109は、RAID6で構成されたRAIDグループのデータ単位に対しては、更に、データ単位を構成する複数のデータ要素に所定の係数を掛けた後、それぞれのデータの排他的論理和をとることによって、Qパリティを生成する。また、パリティ演算器109は、データ単位についての1以上のストライプデータ要素(データ要素及び/又はパリティ)に基づいて、データ単位中のいずれかのデータ要素を復元する復元処理を行う。また、パリティ演算器109は、データ単位についての1以上のストライプデータ要素に基づいて、いずれかのデータ要素を復元するための復元処理の演算の一部に相当する部分演算を行うことにより部分演算結果を生成する。
転送バッファ110は、下位ストレージ装置121から送信されたデータや、下位ストージ装置121へ送信するデータを一時的に格納する。BEコントローラ111は、DKU117の下位ストレージ装置121との間で各種コマンドや、ライトデータ、リードデータ等の通信を行う。
DKU117は、複数の下位ストレージ装置121(以下、ドライブという場合がある)を有する。下位ストレージ装置121は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。DKU117は、BEコントローラ111と同一のパスにより接続される複数の下位ストレージ装置121のグループ(パスグループ)119を複数有する。同一のパスグループ119に属する下位ストレージ装置121は、スイッチ118を介して接続されている。同一のパスグループ119に属する下位ストレージ装置121同士は、直接通信することが可能であり、例えば、同一のパスグループ119に属する一の下位ストレージ装置121から他の下位ストレージ装置121に対して、各種データを送信することができる。なお、別のパスグループ119に属する下位ストレージ装置121同士は、直接通信することはできない。ただし、スイッチ118の接続方法によっては、上位ストレージ装置101内の全ての下位ストレージ装置121同士でアクセス可能とすることも可能である。その場合は、下位ストレージ装置121全てを1個の巨大なパスグループ119としてもよいし、各下位ストレージ装置121の関係において、密に結合された、すなわち通信経路が多数ある、又は通信経路のスループットが高い下位ストレージ装置121の集合を、パスグループ119としてもよい。
図2は、実施例1に係るデータの論理的な構成図である。
ホスト103により認識可能な仮想ボリューム201は、複数の仮想ページ(仮想的な論理ページ、論理ページともいう)202により構成される。仮想ページ202には、仮想プール空間203の物理ページ208が割り当てられる。仮想プール空間203は、図示しないプールの記憶領域により構成される。仮想プール空間203においては、1以上のエクステント204が管理される。エクステント204は、複数のパーセル(Parcel)205により構成される。パーセル205は、1つのストレージ装置(例えば、下位ストレージ装置121)上の連続した領域で構成される。パーセル205は、1以上のストライプ206(図2の例では4つのストライプ206)で構成される。
エクステント204は、図2に示すように、RAID5の3D+1P構成、すなわち、データ単位を構成する3つのデータ要素(D)と、これらデータ要素に対応する1つのパリティ(P)とをそれぞれ異なるストレージ装置に格納する構成の場合には、例えば、4つの異なる下位ストレージ装置121のパーセル205で構成される。なお、本実施例では、分散RAIDの構成を採っているので、仮想プール空間203の記憶領域を構成する複数(3D+1Pで最低限必要な4つよりも多い数(例えば、6つ))の下位ストレージ装置121の中の異なる4つの下位ストレージ装置121のパーセル205によって、エクステント204が構成されており、各エクステント204を構成するパーセル205を含む下位ストレージ装置121の組み合わせは、固定されていない。
エクステント204は、複数(例えば、2つの)の物理ページ208を含む。物理ページ208は、複数(例えば、2つ)の連続するデータ単位のデータ要素及びパリティ(同一のストライプ列207のデータ)を格納することができる。同図において、D1_1、D2_1、D3_1、P_1のように、「_」の後の数字が共通するものが、同一のデータ単位におけるデータ要素及びパリティを示す。なお、データ要素及びパリティは、それぞれストライプ206のサイズとなっている。エクステント204は、1つのストライプ列207のデータを格納するようにしてもよい。
なお、本実施例では、分散RAID構成をとった場合を例に挙げているが、分散RAIDでない場合、つまり、仮想プール空間203の記憶領域を構成する複数(3D+1Pで最低限必要な4つ)の下位ストレージ装置121のパーセル205によって、エクステント204が構成されている場合にも、本発明を適用することができる。
図3は、実施例1に係る下位ストレージ装置におけるデータの論理的な構成図である。
下位ストレージ装置121は、上位の装置との間では、SCSIコマンド処理の最小単位(例えば、512B)であるサブブロック302を単位として、データの受け渡しが可能である。キャッシュメモリ113上でのデータをキャッシュする際の管理単位(例えば、256KB)であるスロット301は、連続する複数のサブブロック302の集合で構成される。ストライプ206は、複数のスロット301に格納される。ストライプ206のサイズは、例えば、スロット301が2個で構成される場合、512KBである。
図4は、実施例1に係る共有メモリのテーブルを示す図である。
共有メモリ401は、例えば、下位ストレージ装置121、CM113、及びローカルメモリ116の少なくともいずれか1つの記憶領域を用いて構成される。なお、下位ストレージ装置121、CM113、及びローカルメモリ116の内の複数の構成の記憶領域を用いて論理的な共有メモリ401を構成し、各種情報についてキャッシュ管理を行うようにしてもよい。
共有メモリ401は、ページマッピングテーブル402と、パーセルマッピングテーブル403と、ドライブ状態テーブル404と、キャッシュ管理テーブル405とを格納する。各テーブルの詳細について、引き続いて説明する。
図5は、実施例1に係るページマッピングテーブルの一例を示す図である。
ページマッピングテーブル402は、仮想ボリューム201の論理ページ202と、仮想プール空間203の物理ページ208との対応関係を示す情報である。ページマッピングテーブル402は、仮想ボリューム番号501と、論理ページ番号502と、プール番号503と、仮想プール空間番号504と、物理ページ番号505とのフィールドを含むエントリを管理する。
仮想ボリューム番号501には、仮想ボリューム201の番号(仮想ボリューム番号)が格納される。論理ページ番号502には、エントリにおける仮想ボリューム番号501の仮想ボリューム番号が示す仮想ボリューム201における論理ページの番号(論理ページ番号)が格納される。プール番号503には、エントリにおける論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページを含むプールの番号が格納される。仮想プール空間番号504には、エントリにおけるプール番号503のプール番号のプールにおける、論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページを含む仮想プール空間の番号(仮想プール空間番号)が格納される。物理ページ番号505には、エントリにおける論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページの番号(物理ページ番号)が格納される。物理ページ番号は、例えば、LBA(サブブロック単位のアドレス)である。
図5の一番上のエントリによると、仮想ボリューム番号が「1」の仮想ボリュームの論理ページ番号が「1」の論理ページには、プール番号が「0」のプールの仮想プール空間番号が「6」の仮想プール空間の物理ページ番号「0」の物理ページが割り当てられていることがわかる。
図6は、実施例1に係るパーセルマッピングテーブルの一例を示す図である。
パーセルマッピングテーブル403は、エクステント204に割り当てられたパーセル205を管理するためのテーブルである。パーセルマッピングテーブル403は、仮想プール空間番号601と、エクステント番号(#)602と、エクステント回復優先度607と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606とのフィールドを含むエントリを管理する。
仮想プール空間番号601には、仮想プール空間203の番号(仮想プール空間番号)が格納される。エクステント#602には、エントリの仮想プール空間番号601の仮想プール空間番号に対応する仮想プール空間203におけるエクステント204の番号(エクステント番号)が格納される。エクステント回復優先度607には、エントリにおけるエクステント#602のエクステント番号に対応するエクステント204の回復優先度が格納される。本実施例では、エクステント回復優先度607には、エクステント204を構成するパーセル205に格納されているデータ要素について障害が発生していて復元が必要である複数のエクステント(障害エクステントという)のなかで、優先して復元が必要なエクステント204である場合に、「高優先度」が設定され、復元が必要であるが優先して復元することが不要なエクステント204である場合に「低優先度」が設定される。なお、エクステント204を構成するパーセル205に格納されているデータ要素について復元が必要ないエクステント204である場合に、エクステント回復優先度607は、空白に設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がエクステント204に対応するエントリのパーセル状態606を参照して、エクステント回復優先度607に「優先度低」あるいは「優先度高」を設定する。
ドライブオフセット603には、エントリのエクステント#602のエクステント番号に対応するエクステント204におけるドライブオフセットの番号(ドライブオフセット番号)が格納される。ここで、ドライブオフセット番号とは、RAIDグループの構成(例えば、3D+1P)のいずれのドライブ(下位ストレージ装置121)であるかを示す番号であり、本実施例では、1つの仮想プール空間203の1つのエクステントに対するドライブオフセット番号として、0〜3の4つのドライブオフセット番号が対応付けられて管理される。物理ドライブ#604には、エントリのドライブオフセット603のドライブオフセット番号のドライブに対して割り当てられているパーセル205を格納するドライブ(例えば、下位ストレージ装置121)の番号(物理ドライブ番号)が格納される。物理パーセル#605には、ドライブオフセット番号のドライブに対して割り当てられているパーセル205の番号が格納される。パーセル状態606には、エントリにおける物理パーセル#605の物理パーセル番号に対応するパーセル205の状態が格納される。本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のパーセル205に対応するエントリのパーセル状態606に「復元要」を設定する。
図7は、実施例1に係るドライブ状態テーブルの一例を示す図である。
ドライブ状態テーブル404は、仮想プール空間203を構成するドライブ(例えば、下位ストレージ装置121)の状態を管理するテーブルである。ドライブ状態テーブル404は、仮想プール空間番号701と、物理ドライブ番号(#)702と、ドライブ状態703とのフィールドを含むエントリを管理する。仮想プール空間番号701には、仮想プール空間203の番号(仮想プール空間番号)が格納される。物理ドライブ番号702には、エントリの仮想プール空間番号701の仮想プール空間番号に対応する仮想プール空間203を構成するドライブの番号(物理ドライブ番号)が格納される。ドライブ状態703には、エントリの物理ドライブ番号702の物理ドライブ番号に対応するドライブの状態が格納される。ドライブの状態としては、ドライブが正常であることを示す「正常」、又はドライブに対するリード及びライトが不可能なことを示す「異常」が設定される。
図8は、実施例1に係るローカルメモリの構成図である。
ローカルメモリ116は、通常リビルドプログラム802と、速度制御リビルドプログラム803と、データ復元プログラム804と、エクステント分類プログラム805とを格納する。ここで、速度制御リビルドプログラム803、データ復元プログラム804、及びエクステント分類プログラム805が、データ管理プログラムの一例である。
通常リビルドプログラム802は、通常リビルド処理(図13参照)を実行させるためのプログラムである。速度制御リビルドプログラム803は、速度制御リビルド処理(図9参照)を実行させるためのプログラムである。データ復元プログラム804は、データ復元処理(図12参照)を実行させるためのプログラムである。エクステント分類プログラム805は、エクステント分類処理(図10参照)を実行させるためのプログラムである。
次に、実施例1に係る計算機システムにおける処理の動作を説明する。
図9は、実施例1に係る速度制御リビルド処理のフローチャートである。速度制御リビルド処理は、例えば、下位ストレージ装置121が1つ以上故障した(リードまたはライトが不可となった)ことを上位ストレージ装置101が検知した場合に実施される。
この処理の実施前には、上位ストレージ装置101によって、ドライブ状態管理テーブル404の故障したドライブ番号が格納されているエントリ物理ドライブ番号604のエントリにおける物理ドライブ状態703が「異常」に設定され、さらに、パーセルマッピングテーブル403に格納されているパーセル状態606には、物理ドライブ状態703が「異常」に設定されたドライブに格納された物理パーセル205の物理パーセル番号に対応するエントリのパーセル状態606が「異常」に設定されている。
速度制御リビルド処理では、まず、MP115は、エクステント分類処理(図10参照)を実施する(ステップS901)。エクステント分類処理によって、パーセル状態606が「復元要」となっているパーセル205を含むエクステント204が、リビルド優先度について分別される。
次に、ステップS902において、MP115が、リビルドを実施する速度を「高」に設定する。ここで、リビルドを実施する速度が「高」とは、ホスト103からのI/Oに対して、MP115がリビルド処理に係る下位ストレージ装置121へのI/Oを発行する比率の許容値を大きくしたり、リビルド処理に対するMP115における実行優先度(例えば、MP115が実行するOSでの実行優先度)を高くしたり、MP115がリビルド処理に対して割り当てるハードウェア資源(MP、メモリ等)の量を増加させたりする制御によって、リビルドを実行する速度が「低」である場合に比して、高スループットでリビルド処理におけるI/Oが実施されるようにすることを指す。
次に、MP115は、エクステント分類処理(ステップS901)において優先度が「高」に分類されたエクステント204の中でステップS904の処理が未処理のエクステント204があるか否かを判定する(ステップS903)。ここで、優先度が「高」のエクステント204があるか否かは、パーセルマッピングテーブル403のエクステントに対応するエントリのエクステント回復優先度エントリ607に、「高優先度」が設定されているか否かで判別可能である。
判定の結果、優先度が「高」に分類されたエクステント204の中に未処理のエクステント204がある場合(ステップS903:YES)、MP115は、優先度が「高」に分類されたエクステント204の1つを対象にリビルド処理(図11参照)を実行する(ステップS904)。リビルド処理が完了することにより、対象とした優先度が「高」に分類されたエクステント204に含まれるパーセル205は、全て「正常」状態となる。
一方、優先度が「高」に分類されたエクステント204の中に未処理のエクステン204が無い場合(ステップS903:NO)、MP115は処理をステップS905に進める。
ステップS905では、MP115が、リビルドを実施する速度を「低」に設定する。ここで、リビルドを実施する速度が「低」とは、リビルドを実行する速度が「高」の場合に比して、ホスト103からのI/Oに対して、MP115がリビルド処理に係る下位ストレージ装置121へのI/Oを発行する比率の許容値を小さくしたり、リビルド処理に対するMP115における実行優先度(例えば、MP115が実行するOSでの実行優先度)を低くしたり、MP115がリビルド処理に対して割り当てるハードウェア資源(MP、メモリ等)の量を減少させたりする制御によって、リビルドを実行する速度が「高」である場合に比して、低スループットでリビルド処理が実行されるようにすることを指す。なお、リビルドを実行する速度が「低」であることは、リビルドを実行する速度が「高」の場合に比して、I/Oに関して許容される負荷が低いということもできる。
次に、エクステント分類処理(ステップS901)において優先度が「低」に分類されたエクステント204の中でステップS907の処理が未処理のエクステント204があるか否かを判定する(ステップS906)。ここで、優先度が「低」のエクステント204があるか否かは、パーセルマッピングテーブル403のエクステントに対応するエントリのエクステント回復優先度エントリ607に、「低優先度」が設定されているか否かで判別可能である。
判定の結果、優先度が「低」に分類されたエクステント204の中に未処理のエクステント204がある場合(ステップS906:YES)、MP115は、優先度が「低」に分類されたエクステント204の1つを対象にリビルド処理(図11参照)を実行する(ステップS907)。リビルド処理が完了することによって、対象とした優先度が「低」のエクステント204に含まれる物理パーセル205は、全て「正常」状態となる。
一方、優先度が「低」に分類されたエクステント204の中に未処理のエクステン204が無い場合(ステップS906:NO)、MP115は速度制御リビルド処理を終了する。
上記した速度制御リビルド処理によると、優先度が「高」のエクステントに対しては、高スループットでリビルド処理を行うことにより、早期にリビルドすることができて信頼性を向上することができ、優先度が「低」のエクステントに対しては、低スループットでリビルド処理を行うことにより、ホスト103からのI/Oに対する性能低下を低減することができる。
次に、エクステント分類処理(S901)について詳細に説明する。
図10は、実施例1に係るエクステント分類処理のフローチャートである。
エクステント分類処理では、「復元要」となっているパーセル205を含むエクステント204に対し、そのエクステント204を構成するパーセル205のうちパーセルマッピングテーブル403のパーセル状態606が「復元要」となっているパーセル205の数がしきい値を超えるか否かで、リビルドの必要性を判定し、しきい値を超える場合にリビルドする優先度が「高」であると分類し、しきい値を超えない場合にリビルドの優先度が「低」であると分類する。以下、具体的に説明する。
MP115は、「復元要」となっているパーセル205を含むエクステント204の中に、エクステント分類処理で分類されていない未処理のエクステントがあるか否かを判定し(S1001)、未処理のエクステントがある場合(ステップS1001:YES)、MP115は、未処理のエクステント204から処理対象とするエクステント204を1つ選択し、パーセルマッピングテーブル403を参照し、処理対象のエクステント204を構成するパーセル205を特定し、特定したパーセル205のパーセル状態606が「復元要」となっているパーセル205の数を取得する(ステップS1002)。
次に、MP115は、パーセル状態606が「復元要」となっているパーセル数がしきい値以下であるか否かを判定する(ステップS1003)。
この結果、パーセル状態606が「復元要」のパーセル数がしきい値以下である場合(ステップS1003:YES)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予が比較的あるのでリビルドする優先度を「低」に分類し、パーセルマッピングテーブル403の対象のエクステントに対応するエントリのエクステント回復優先度607に、「低優先度」を設定し(ステップS1004)、処理をステップS1001に進める。
一方、パーセル状態606が「復元要」のパーセル数がしきい値を超える場合(ステップS1003:NO)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予がない、又はほとんどないのでリビルドする優先度を「高」に分類し、パーセルマッピングテーブル403の対象のエクステントに対応するエントリのエクステント回復優先度607に、「高優先度」を設定し(ステップS1005)、処理をステップS1001に進める。
なお、分類されていないエクステント204が無い場合(ステップS1001:NO)、MP115は、エクステント分類処理を終了する。
ここで、ステップS1003で用いるしきい値としては、例えば、エクステント204がRAID6構成で構成されており、データ冗長度が2であるとした場合には、1としてもよい。エクステント204内に「復元要」のパーセル205が2つあれば、新たに1つのパーセル205が「復元要」となってリードできなくなると、データの復元が不可能となってしまうため、早期にパーセル205の回復をはかる必要があり、リビルドの優先度を「高」に分類してもよい。一方、エクステント204内に「復元要」のパーセル205が1であれば、新たに1つのパーセル205が「復元要」となってリードできなくなったとしても、残りのパーセル205からデータの復元が可能であるため、優先度を「低」に分類してもよい。
次に、リビルド処理(ステップS904、S907)について詳細に説明する。
図11は、実施例1に係るリビルド処理のフローチャートである。
リビルド処理においては、MP115は、設定されたリビルド速度に従って処理を実行(制御)する。まず、MP115は、パーセルマッピングテーブル403を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「復元要」のパーセル205があるか否かを判定する(ステップS1101)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1101:NO)には、MP115は、リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1101:YES)には、MP115は、リビルドが未完了の1つのパーセル205の1つのストライプ206のデータ(ストライプデータ要素)について、データ復元処理(図12参照)を実行する(ステップS1102)。
次いで、MP115は、パーセル205の全てのストライプ206のデータが復元済みであるか否かを判定する(ステップS1103)。
この結果、全てのストライプのデータが復元済みでない場合(ステップS1103:NO)には、MP115は、処理をステップS1102に進める。一方、パーセル205の全てのストライプ206のデータが復元済みである場合(ステップS1103:YES)には、MP115は、パーセルマッピングテーブル403のこのパーセル205に対応するエントリのパーセル状態606を復元済み(復元不要)を示す内容(本実施例では、空白)に設定し(ステップS1104)、処理をステップS1101に進める。
なお、図11に示すリビルド処理においては、リビルドが未完了の各パーセル205に対するデータ復元処理(S1102)を順次実行するようになっているが、本発明はこれに限られず、リビルドが未完了の複数のパーセル225に対する複数のデータ復元処理を並行して実行するようにしてもよい。このようにすると複数のパーセル205に対するリビルド処理の時間を低減することができる。また、データ復元処理を並行して実行する場合においては、或るデータ復元処理の対象とするパーセル205としては、他のデータ復元処理で使用するパーセル205(復元元のパーセル及び復元先のパーセル)を有する下位ストレージ装置121以外の下位ストレージ装置121のパーセル205から選択するようにしてもよい。このようにすると、下位ストレージ装置121に対するアクセスの衝突を低減でき、複数のパーセル205に対するデータ復元処理の並列効果を向上することができ、その結果、リビルド処理の時間を効果的に短縮することができる。
次に、データ復元処理(ステップS1102)について詳細に説明する。
図12は、実施例1に係るデータ復元処理のフローチャートである。
データ復元処理においては、MP115は、設定されたリビルド速度に従って処理を実行(制御)する。まず、MP115は、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かを判定する(ステップS1201)。ここで、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル403を参照し、復元対象のパーセル205のストライプ206に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット#とを特定し、これらエクステント番号及びドライブオフセット#に基づいて物理ページ番号を特定し、ページマッピングテーブル402を参照し、特定した物理ページ番号に論理ページの番号が対応付けられているか否かを特定することにより把握することができる。
この結果、復元対象のパーセル205のストライプ206が論理ページに割当てられていない場合(ステップS1201:NO)には、MP115は、データ復元処理を終了する。
一方、復元対象のパーセル205のストライプ206が論理ページに割当てられている場合(ステップS1201:YES)には、MP115は、パーセルマッピングテーブル403から復元元領域と、復元先領域とを格納する下位ストレージ装置121及び復元元領域及び復元先領域の下位ストレージ装置121での位置を算出する(ステップS1202)。
次いで、MP115は、CM113に復元元領域のデータを格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する(ステップS1203)。次いで、MP115は、復元元領域の下位ストレージ装置121から、ロックを取得したキャッシュスロットに対して、転送バッファ110を介して、復元元領域のデータ要素及び/又はパリティを転送する(ステップS1204)。
次いで、MP115は、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えたか否かを判定する(ステップS1205)。
この結果、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えていない場合(ステップS1205:NO)には、MP115は、処理をステップS1203に進め、処理の対象としていない復元元領域の下位ストレージ装置121を対象に処理を実行する。
一方、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えた場合(ステップS1205:YES)には、MP115は、処理をステップS1206に進める。
ステップS1206では、MP115は、処理対象としていない復元先領域の1つを処理対象として、CM113にこの復元先領域のデータを格納するためのキャッシュスロットを確保する。次いで、MP115は、全ての復元先領域のキャッシュスロットを確保し終えたか否かを判定する(ステップS1207)。この結果、全ての復元先領域のキャッシュスロットを確保し終えていない場合(ステップS1207:NO)には、MP115は、処理をステップS1206に進める。
一方、全ての復元先領域のキャッシュスロットを確保し終えた場合(ステップS1207:YES)には、MP115は、CM113上の複数の復元元領域のデータ要素及びパリティに基づいて、データを復元する演算処理を実行して復元データを生成し、生成した復元データをCM113の復元先のキャッシュスロットに格納する(ステップS1208)。なお、MP115は、以降において、CM1113に格納された復元データを下位ストレージ装置121に書き込む処理を行うこととなる。なお、この際、MP115は、複数の復元先領域に対する復元データをまとめて下位ストレージ装置121に書き込むようにすることで、下位ストレージ装置121への書き込み効率を向上することができる。
次いで、MP115は、復元元領域のデータを格納していたCM113のキャッシュスロットを解放し(ステップS1209)、処理をステップS1201に進める。
次に、通常リビルド処理について詳細に説明する。
図13は、実施例1に係る通常リビルド処理の一例を示すフローチャートである。
通常リビルド処理は、上位ストレージ装置101において速度制御リビルド処理を実行する設定がされていない場合に実行される処理である。
通常リビルド処理では、MP115は、パーセルマッピングテーブル403を参照し、パーセル状態606が「復元要」のパーセル205があるか否かを判定する(S1301)。この結果、パーセル状態606が「復元要」のパーセルがない場合(ステップS1301:NO)、MP115は、通常リビルド処理を終了する。一方、パーセル状態606が「復元要」のパーセル205がある場合(ステップS1301:YES)、MP115は、「復元要」のパーセル205を含むエクステントを対象に、図11に示すリビルド処理を実施し(ステップS1302)、処理をステップS1301に進める。なお、ステップS1302におけるリビルド処理においては、MP115は、リビルドの実行速度を「高」として処理を実行(制御)する。
通常リビルド処理によると、復元が必要なパーセルを含むエクステントに対して、同一の速度で復元処理を行うことができる。本実施例では、通常リビルド処理と、速度制御リビルド処理とを設定により変更できるので、例えば、ホスト103に対するI/O性能の低下が問題にならない場合には、通常リビルド処理を実行することにより、復元が必要な全てのエクステント204に対するリビルドを早期に終了させることができる。
次に、リビルド処理の設定を行うための管理サーバ102の管理画面について説明する。
図14は、実施例1に係る管理サーバの管理画面の一例を示す図である。
管理画面1401は、プールを単位として、このプールに属する領域で管理されるデータ単位に対するリビルド処理のモードをユーザが指定するために管理サーバ102に表示される画面である。管理画面1401は、速度制御リビルドモード、すなわち、速度制御リビルド処理の実行を行う「ON」設定とするか、速度制御リビルド処理の実行を行わない、すなわち、通常リビルド処理を実行する「OFF」設定とするかを指定するためのラジオボタンが表示されるデータ復元処理設定領域1402を有する。このデータ復元処理設定領域1402において、ユーザが図示しない入力手段により、ラジオボタンを選択することにより、その選択に対応する設定内容が、管理サーバ102から上位ストレージ装置101に送信されて、例えば、LM116で管理される。MP115は、下位ストレージ装置121の故障時等においてリビルド処理を実行する場合には、LM116の設定内容を参照し、設定内容に対応するリビルド処理を実行する。なお、図14においては、プールを単位としてリビルド処理のモードを設定可能とする管理画面を示したが、本発明はこれに限られず、例えば、管理画面を、仮想ボリュームを単位としてリビルド処理のモードを設定可能とする画面として、その設定内容に従って、MP115が仮想ボリュームを単位としてのリビルド処理を実行するようにしてもよい。
以上説明したように、実施例1に係る上位ストレージ装置101によると、リビルド優先度の高いエクステントを、高い速度でリビルドを実施して短時間でリビルドを完了させることで、データの信頼性を早期に確保し、リビルド優先度の低いエクステントについては、低い速度でリビルドを実施することで、リビルド実行時におけるホスト103からのI/Oに由来するI/Oとの衝突を低減することができ、ホスト103に対するI/O性能の低下を抑制することができる。
なお、上記した実施例1では、エクステント分類処理(ステップS901)において、リビルドの優先度を「高」、「低」の2段階とする例を示していたが、リビルドの優先度を「高」、「中」、「低」のように3つ以上の段階に分類してもよい。この場合には、各優先度に対するリビルドの処理速度をそれぞれ、「高」、「中」、「低」に設定するようにすればよい。
次に、実施例2に係る計算機システムについて説明する。
実施例2は、実施例1において、リビルド速度を決定するためのリビルドの優先度を、故障したドライブ(下位ストレージ装置121)の台数で決めるようにした実施例である。なお、実施例1と共通の部分は説明を省略又は簡略化する。
実施例2に係る上位ストレージ装置101における速度制御リビルド処理について説明する。
図15は、実施例2に係る速度制御リビルド処理のフローチャートである。
速度制御リビルド処理では、まず、MP115は、故障しているドライブの台数(故障ドライブ台数)を特定し、故障ドライブ台数がしきい値以上であるか否かを判定する(ステップS1501)。ここで、故障ドライブ台数は、ドライブ状態テーブル404を参照し、ドライブ状態703が「異常」となっているドライブ数を数えることで特定できる。ステップS1501で使用するしきい値としては、例えば、エクステント204がRAID6構成で構成され、データ冗長度が2であるとした場合には、2としてもよく、また、エクステント204がRAID5構成で構成され、データ冗長度が1であるとした場合には、1としてもよい。
ステップS1501の判定の結果、故障ドライブ台数がしきい値未満の場合(ステップS1501:NO)、データが復元できなくなるまでには猶予があるので、MP115は、リビルドの実施速度を「低」に設定し(ステップS1502)、処理をステップS1504に進める。一方、故障ドライブ台数がしきい値以上の場合(ステップS1501:YES)、データが復元できなくなるまでの猶予が限られているので、MP115は、リビルドの実施速度を「高」に設定し(ステップS1503)、処理をステップS1504に進める。
ステップS1504では、MP115は、リビルド処理を実施していないエクステントがあるか否かを判定し、実施していないエクステントがある場合(ステップS1504:YES)、そのエクステント204に対してデータのリビルド処理(図11参照)を実施する(S1505)し、処理をステップS1504に進める。このリビルド処理が完了することによって、エクステント204に含まれるパーセル205は、全て「正常」状態となる。一方、リビルド処理を実施していないエクステントがない場合(ステップS1504:NO)、MP115は、速度制御リビルド処理を終了する。
以上説明したように、実施例2においては、故障ドライブ台数が、データの冗長度に比べて十分小さい場合に、低速でリビルドを実施することで、リビルド実施中におけるホスト102からのI/Oに由来するI/Oとの衝突を低減し、ホスト102に対するI/O性能の低下を抑制することができる。また、故障ドライブ台数が、データの冗長度と同じ又は近い場合に、高速でリビルドを実施することで、早期にデータの信頼性を向上することができる。
次に、実施例3に係る計算機システムについて説明する。
実施例3は、実施例1において、リビルド処理を実施する優先度を、故障ドライブに含まれるストライプ206がデータ部であるか、パリティ部であるかに応じて決定するようにした実施例である。なお、実施例1と共通の部分は説明を省略する。
実施例3に係る上位ストレージ装置101は、実施例1に係るパーセルマッピングテーブル403に代えて、パーセルマッピングテーブル1601を備えている。
図16は、実施例3に係るパーセルマッピングテーブルの一例を示す図である。実施例1と共通する要素については、同一の符号を付し、重複する説明を省略する。
パーセルマッピングテーブル1601は、仮想プール空間番号601と、エクステント番号(#)602と、エクステント回復優先度607と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606と、ストライプ番号(#)1602と、ストライプ状態1603とのフィールドを含むエントリを管理する。
ストライプ#1602には、エントリの物理パーセル#605の物理パーセル番号が示すパーセル205に含まれるストライプ206を識別するための番号(ストライプ番号)が格納される。ストライプ状態1603には、エントリにおけるストライプ番号に対応するストライプ206の状態が格納される。本実施例では、ストライプ状態1603には、ストライプ206に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のストライプに対応するエントリのストライプ状態1603に「復元要」を設定する。また、本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、パリティ部について復元が必要である可能性がある場合には、そのことを示す「パリティ部復元要」が設定され、それ以外の場合には、空白が設定される。
次に、実施例3に係る速度制御リビルド処理について説明する。
図17は、実施例3に係る速度制御リビルド処理の一例を示したフローチャートである。
速度制御リビルド処理は、MP115によって、任意のタイミングで実施される。
速度制御リビルド処理では、まず、MP115は、リビルドを実施する速度を「高」に設定する(ステップS1701)。次に、MP115は、データ部リビルド処理(S1703)を実施していないエクステント204があるか否かを判定する(ステップS1702)。ここで、データ部リビルド処理を実施していないエクステント204があるか否かは、パーセルマッピングテーブル1601を参照し、パーセル状態606が、「復元要」となっているパーセル205を1つ以上含んで構成されるエクステント204があるか否かにより判断が可能である。
この結果、データ部リビルド処理を実施していないエクステント204がある場合(ステップS1702:YES)、MP115は、データ部リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、データ部リビルド処理(図18参照)を実施し(ステップS1703)、処理をステップS1702に進める。データ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白(復元不要)」または、「パリティ部復元要」のいずれかのパーセル状態となる。
一方、データ部リビルド処理を実施していないエクステント204がない場合(ステップS1702:NO)、MP115は、リビルドを実施する速度を「低」に設定する(ステップS1704)。
次に、MP115は、パリティ部リビルド処理(S1706)を実施していないエクステント204があるか否かを判定する(ステップS1705)。ここで、パリティ部リビルド処理を実施していないエクステント204があるか否かは、パーセルマッピングテーブル1601を参照し、パーセル状態606が、「パリティ部復元要」となっているパーセル205を1つ以上含んで構成されるエクステント204があるか否かにより判断が可能である。
この結果、パリティ部リビルド処理を実施していないエクステント204がある場合(ステップS1705:YES)、MP115は、パリティ部リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、パリティ部リビルド処理(図19参照)を実施し(ステップS1706)、処理をステップS1705に進める。パリティ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白」(復元不要)のパーセル状態となる。
一方、パリティ部リビルド処理を実施していないエクステント204がない場合(ステップS1705:NO)、MP115は速度制御リビルド処理を終了する。
次に、データ部リビルド処理(S1703)について詳細に説明する。
図18は、実施例3に係るデータ部リビルド処理の一例のフローチャートである。
データ部リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を高速で実行(制御)する。MP115は、パーセルマッピングテーブル1601を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「復元要」のパーセル205があるか否かを判定する(ステップS1801)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1801:NO)には、MP115は、データ部リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1801:YES)には、MP115は、リビルドが未完了の1つのパーセル205の1つのストライプ206のデータ(ストライプデータ要素)が、データ部であるか、パリティ部であるかを判定する(ステップS1802)。
この結果、ストライプデータ要素がデータ部の場合(ステップS1802:YES)、MP115は、データ復元処理(図12参照)を実施する(ステップS1803)。データ復元処理が完了した後、MP115は、パーセルマッピングテーブル1601の復元が完了したストライプに対応するエントリのストライプ状態1603を、「復元要」から「空白(復元不要)」へ更新し(ステップS1804)、処理をステップS1805へ進める。
一方、ストライプデータ要素がデータ部でない場合(ステップS1802:NO)、MP115は、処理をステップS1805へ進める。
ステップS1805では、MP115は、パーセル205の全てのストライプ206のデータを確認済みであるか否かを判定する。この結果、全てのストライプ206のデータを確認済みでない場合(ステップS1805:NO)には、MP115は、処理をステップS1802に進める。一方、パーセル205の全てのストライプ206のデータが確認済みである場合(ステップS1805:YES)には、MP115は、処理をステップS1806に処理を進める。
ステップS1806では、MP115は、パーセル205の全てのストライプ206のストライプデータ要素が復元済みであるか否かを判定する。
この結果、全てのストライプ206のストライプデータ要素が復元済みでない場合(ステップS1806:NO)には、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセルのパーセル状態606を「復元要」から「パリティ部復元要」へ更新し、処理をステップS1801に進める。一方、パーセルの全てのストライプのストライプデータ要素が復元済みである場合(ステップS1806:YES)には、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセル205のパーセル状態606を「復元要」から「空白(復元不要)」へ更新し(ステップS1808)、処理をステップS1801に進める。
なお、ステップS1803のデータ復元処理においては、障害が発生しているデータ部のストライプデータ要素のみを対象としてデータ復元処理を行っている例を示したが、障害が発生しているデータ部のストライプデータ要素と同一のストライプ列の障害が発生しているパリティ部のストライプデータ要素も併せて復元するようにしてもよい。障害が発生しているデータ部のストライプデータ要素のみを対象とすると、上位ストレージ装置101におけるデータ部全体の復元処理の効率を向上することができる一方、同一のストライプ列のパリティ部のストライプデータ要素も併せて復元すると、このパリティ部のストライプ要素の復元に要する処理時間を短縮することができる。
次に、パリティ部リビルド処理(S1706)について詳細に説明する。
図19は、実施例3に係るパリティ部リビルド処理の一例のフローチャートである。
パリティ部リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を低速で実行(制御)する。MP115は、パーセルマッピングテーブル1601を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「パリティ部復元要」のパーセル205があるか否かを判定する(ステップS1901)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1901:NO)には、MP115は、パリティ部リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1901:YES)には、MP115は、リビルドが未完了の1つのパーセルの1つのストライプのデータ(ストライプデータ要素)が、「復元要」であるか否かを判定する(ステップS1902)。ストライプデータ要素が、「復元要」であるか否かは、パーセルマッピングテーブル1601を参照し、処理対象のストライプ番号に対応するストライプ状態1603が「復元要」であるか否かにより判定することができる。
この結果、ストライプデータ要素が復元要である場合(ステップS1902:YES)、MP115は、処理対象のパーセル205を対象にデータ復元処理(図12参照)を実施する(ステップS1903)。データ復元処理が完了した後、MP115は、パーセルマッピングテーブル1601の復元が完了したストライプ206に対応するエントリのストライプ状態1603を、「復元要」から、「空白(復元不要)」へ更新し(ステップS1904)、処理をステップS1905へ進める。
一方、ストライプデータ要素が復元要でない場合(ステップS1902:NO)、MP115は、処理をステップS1905へ進める。
ステップS1905では、MP115は、パーセル205の全てのストライプ206のデータを確認済みであるか否かを判定する。この結果、全てのストライプ206のデータを確認済みでない場合(ステップS1905:NO)には、MP115は、処理をステップS1902に進める。一方、パーセル205の全てのストライプ206のデータが確認済みである場合(ステップS1905:YES)には、MP115は、処理をステップS1906に処理を進める。
ステップS1906では、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセル205のパーセル状態606を「復元要」から「空白(復元不要)」へ更新し、処理をステップS1901に進める。
以上説明したように、実施例3においては、ホスト103からリードされるデータ部分をホスト103からリードされないパリティ部分よりも、優先して高速にリビルド処理を行うことで、コレクションリードが発生する時間を短縮することが可能であり、パリティ部については、低速のリビルド処理を行うことで、その間のホスト103のI/O性能の低下を抑制することができる。
次に、実施例4に係る計算機システムについて説明する。
実施例4は、実施例1に対して、最初に実行する高速でのリビルド処理(第一リビルド処理)時に復元するパーセル数を、エクステント204内の故障パーセル数未満とし、かつ複数のエクステント204に対して並列に処理を行い、かつ並列でリビルドするエクステント204の復元先の下位ストレージ装置121を複数の下位ストレージ装置121に分散させることで、データの冗長度が低下している期間を短縮するようにし、その後、相対的に低速でのリビルド処理(第二リビルド処理)を実行することにより、その間のホスト103のI/O性能の低下を抑制できるようにする実施例である。第一リビルド処理で復元して下位ストレージ装置121に書き込むデータの量を削減し、かつ複数の下位ストレージ装置121に並列して書き込みを行うことで、ホストのI/O性能を低下させる第一リビルド処理の完了にかかる時間を短縮することができる。なお、実施例1と共通の部分は説明を省略する。
図20は、実施例4に係るローカルメモリの構成図である。
ローカルメモリ116は、通常リビルドプログラム802と、速度制御リビルドプログラム803と、データ復元プログラム804と、並列データ復元プログラム2003と、リビルド先領域決定プログラム2002とを格納する。
リビルド先領域決定プログラム2002は、MP115にリビルド先領域決定処理(図23参照)を実行させるためのプログラムである。並列データ復元プログラム2003は、MP115に並列データ復元処理(図24参照)を実行させるためのプログラムである。
図21は、実施例4に係るパーセルマッピングテーブル2101の一例を示す図である。
パーセルマッピングテーブル2101は、仮想プール空間番号601と、エクステント番号(#)602と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606と、復元先物理ドライブ番号(#)2102とのフィールドを含むエントリを管理する。
パーセル状態606には、エントリにおける物理パーセル#605の物理パーセル番号に対応するパーセル205の状態が格納される。本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、MP115がリビルド先領域決定処理を実行した結果、第一リビルド処理(図24参照)での復元が必要と判定された場合には、そのことを示す「第一リビルド復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のパーセル205に対応するエントリのパーセル状態606に「復元要」を設定する。
復元先物理ドライブ#2102には、パーセル状態606が示すパーセル状態が、「復元要」または「第一リビルド復元要」状態であるパーセルが、リビルド処理によって復元される復元先のパーセル205を含む物理ドライブの番号(物理ドライブ番号)が格納される。
次に、実施例4に係る速度制御リビルド処理について説明する。
図22は、実施例4に係る速度制御リビルド処理の一例を示すフローチャートである。
MP115は、まず、リビルド先領域決定処理(図23参照)を実施する(ステップS2201)。リビルド先領域決定処理では、パーセル状態が「復元要」となっているパーセル205を含むエクステント204に対して、第一リビルド処理で復元対象とするパーセル205と、その復元先の下位ストレージ位置121を決定する。
次に、MP115は、リビルドを実施する速度を「高」に設定する(S2202)。次に、MP115は、第一リビルド処理(S2204)を実施していないエクステント204があるか否かを判定する(ステップS2203)。
この結果、第一リビルド処理を実施していないエクステント204がある場合(ステップS2203:YES)、MP115は、第一リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、第一リビルド処理(図24参照)を実施し(ステップS2204)、処理をステップS2203に進める。第一リビルド処理が完了したエクステント204を構成するパーセル205はすべて、「空白(復元不要)」の状態となる。
一方、第一リビルド処理を実施していないエクステント204がない場合(ステップS2203:NO)、MP115は、リビルドを実施する速度を「低」に設定する(ステップS2205)。
次に、MP115は、第二リビルド処理(S2207)を実施していないエクステント204があるか否かを判定する(ステップS2206)。
この結果、第二リビルド処理を実施していないエクステント204がある場合(ステップS2206:YES)、MP115は、第二リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、第二リビルド処理(図13の通常リビルド処理と同様)を実施し(ステップS2207)、処理をステップS2206に進める。
一方、第二リビルド処理を実施していないエクステント204がない場合(ステップS2206:NO)、MP115は、速度制御リビルド処理を終了する。
次に、リビルド先領域決定処理(S2201)について詳細に説明する。
図23は、実施例4に係るリビルド先領域決定処理の一例を示すフローチャートである。
MP115は、まず、「復元要」状態のパーセル205に対して、復元先の領域を決定し、決定した領域の物理ドライブ番号を、パーセルマッピングテーブル2101の復元先ドライブ番号2102に格納する(ステップS2301)。復元先の領域は、データ保護のため、「復元要」のパーセル205を含むエクステント204が含むパーセル205が所属する下位ストレージ装置121以外の下位ストレージ装置121から選択される。本実施例では、故障した下位ストレージ装置121に対して、上位ストレージ装置101において、スペア装置としてドライブ単位で予め設定されている下位ストレージ装置121を用いる例を記載するが、復元先をパーセル205ごとに設定してもよい。
次に、MP115は、未処理のエクステント204があるか否かを判定する(ステップS2302)。この結果、未処理のエクステント204がない場合(ステップS2302:NO)、MP115は、リビルド先領域決定処理を終了する。
一方、未処理のエクステント204がある場合(ステップS2302:YES)、MP115は、未処理のエクステント204の中の1つのエクステント204を処理対象として、エクステント204内で「復元要」状態のパーセルの数を取得する(ステップS2303)。「復元要」状態のパーセル数は、パーセルマッピングテーブル2101を参照し、対象のエクステント204のエクステント#が示すエントリのパーセル状態606が、「復元要」となっているパーセルの数を特定することにより取得可能である。
次いで、MP115は、特定した「復元要」状態のパーセル数が、所定のしきい値以下であるか否かを判定する(S2304)。この判定で使用するしきい値は、例えば、データの信頼性維持に対して許容される、低下可能な冗長度(低下冗長度)によって決めてよい。例えば、3パリティによって下位ストレージ装置121が冗長構成されている場合、データの冗長度は3である。このとき、信頼性維持のために、冗長度2以上が必要だとすると、エクステントに許容される、「復元要」状態のパーセルは、3−2=1個であり、しきい値は「1」と設定すればよい。
この結果、特定した「復元要」状態のパーセル数が、所定のしきい値以下である場合(S2304:YES)には、このエクステント204のパーセルは、第一リビルド処理の対象とならないので、MP115は、処理をステップS2302に進める。
一方、特定した「復元要」状態のパーセル数が、所定のしきい値を超える場合(S2304:NO)には、MP115は、第一リビルド処理において復元対象とするパーセル205と、復元先のドライブ#とを決定する(ステップS2305)。ステップS2305では、MP115は、エクステント204内の「復元要」状態のパーセル205から、「復元要」状態のパーセル数−「しきい値」の数に相当するパーセル205を、復元対象とするパーセル205として選択する。このパーセル選択の際、このパーセル205の復元先となる物理ドライブが、エクステント204ごとに分散するようにパーセル205を選択する。これにより、復元先領域が複数の下位ストレージ装置121に分散し、復元時のライトのI/O負荷が分散されることとなる。なお、復元先の物理ドライブは、パーセルマッピングテーブル2101の復元先ドライブ番号エントリ2102を参照することで特定可能である。
次いで、MP115は、復元対象として選択したパーセル205に対応するパーセルマッピングテーブル2101のエントリのパーセル状態606に対して、「第一リビルド復元要」を設定し(S2306)、そのエントリの復元先物理ドライブ2102に、決定した復元先のドライブ#を設定し(ステップS2307)、処理をステップS2302に進める。
次に、第一リビルド処理(S2204)について説明する。
第一リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を高速で実行(制御)する。第一リビルド処理は、実施例1の図11に示すリビルド処理において、データ復元処理(ステップS1102:図12)に代えて、並列データ復元処理(図24参照)を実行するようにした処理である。なお、その他のステップは、図11に示すリビルド処理と同様であるので、説明を省略する。
次に、第一リビルド処理において実行される並列データ復元処理について説明する。
図24は、実施例4に係る並列データ復元処理の一例を示すフローチャートである。
この並列データ復元処理は、MP115によって複数が並列して実行されてもよい。MP115は、復元対象の領域である復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かを判定する(ステップS2401)。ここで、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル2101により、復元対象のパーセル205のストライプ206に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット#とを特定し、これらエクステント番号及びドライブオフセット#に基づいて物理ページ番号を特定し、ページマッピングテーブル402により、特定した物理ページ番号が論理ページ番号に対応付けられているか否かを特定することにより把握することができる。
この結果、復元対象のパーセル205のストライプ206が論理ページに割当てられていない場合(ステップS2401:NO)には、MP115は、並列データ復元処理を終了する。
一方、復元対象のパーセル205のストライプ206が論理ページに割当てられている場合(ステップS2401:YES)には、MP115は、パーセルマッピングテーブル2101から復元元領域を格納する下位ストレージ装置121と、復元先領域を格納する下位ストレージ装置121と、復元元領域と復元先領域との下位ストレージ装置121での位置とを算出する(ステップS2402)。
次いで、MP115は、復元対象のパーセル205の1つを処理対象として、復元元領域のデータをCM113に格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する(ステップS2403)。次いで、MP115は、復元元領域の下位ストレージ装置121から、ロックを取得したキャッシュスロットに対して、転送バッファ110を介して、復元元領域のデータ要素及び/又はパリティを転送する(ステップS2404)。
次いで、MP115は、処理対象のパーセル205に対して全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えたか否かを判定し(ステップS2405)、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えていない場合(ステップS2405:NO)には、処理をステップS2403に進めて、処理対象としていない他のパーセル205に対する処理を行うようにする一方、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えた場合(ステップS2405:YES)には、処理をステップS2406に進める。
ステップS2406では、MP115は、復元するデータを格納するためのキャッシュスロットをCM113に確保する。
次いで、MP115は、全ての第一リビルド処理の対象である復元先領域のキャッシュスロットを確保し終えたか否かを判定する(ステップS2407)。ここで、第一リビルド処理の対象である復元先領域か否かは、パーセルマッピングテーブル2101において、このキャッシュスロットに格納されるデータ要素を格納するパーセル205のパーセル状態606が、「第一リビルド復元要」状態であるか否かで判別可能である。
この結果、全ての第一リビルド処理の復元先領域のキャッシュスロットを確保し終えていない場合(ステップS2407:NO)には、処理をステップS2403に進めて、処理対象としていない第一リビルド処理対象の復元先領域のキャッシュスロットを確保する処理を行う。
一方、全ての第一リビルド処理の対象の復元先領域のキャッシュスロットを確保し終えた場合(ステップS2407:YES)には、MP115は、CM113上の複数の復元元領域のデータ(データ要素及びパリティのデータ)に基づいて、データを復元する演算処理を実行して復元データを生成し、復元データをCM113のキャッシュスロットに格納する(ステップS2408)。なお、復元データは、以降において、MP115がCM113に格納されたデータを下位ストレージ装置121に書き込む処理を行うことで、下位ストレージ装置121に格納されることとなる。
次いで、MP115は、復元元領域のデータを格納していたCM113のキャッシュスロットを解放し(ステップS2409)、処理をステップS2401に進める。
次に、実施例5に係る計算機システムについて説明する。
図25は、実施例5に係る計算機システムのハードウェア構成図である。
実施例5に係る計算機システムでは、複数の上位ストレージノード(ストレージシステムの一例)2501が、ネットワーク120に接続されており、互いにデータの通信が可能である。また、ネットワーク120には、ホスト103が接続されている。
実施例1に係るストレージシステムにおいては、単一の上位ストレージ装置101に接続された下位ストレージ装置121間でRAIDグループを構成する例を示していたが、実施例5では、複数の上位ストレージノード2501に接続された下位ストレージ装置121間でRAIDグループを構成するようにしている。
このような構成において、下位ストレージ装置121の故障によってリビルド処理が実施されると、ネットワーク120の帯域をリビルドに用いるデータが消費し、ホスト103と上位ストレージノード2501間の通信スループットが低下する可能性がある。本実施例では、実施例1〜4のいずれかに記載した技術を用いて、リビルト処理の速度を制御することで、データの冗長性が十分回復した後は、リビルド処理の速度を低くして、ホスト103が利用可能なネットワーク帯域を確保することが可能になる。
なお、本発明は、上述の実施例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記いずれかの実施例において、リビルド速度の設定を伴う速度制御リビルド処理(例えば、図9、図15、図17、図22)を実行中において、実行中の速度制御リビルド処理を終了し、改めて速度制御リビルド処理を実行し直してもよい。例えば、速度制御リビルド処理の実行中であっても、下位ストレージ装置121等の障害が新たに発生する可能性もあり、実行中の速度制御リビルド処理において決定したリビルドの速度が、その時点のストレージシステムの状況に適したものでない可能性がある。このため、上記したように改めて速度制御リビルド処理を実行し直すことにより、適切な速度によりリビルドを実行することができる。
具体的には、例えば、上記実施例1では、図10に示すエクステント分類処理を実行し、実行中の速度制御リビルド処理におけるリビルド処理の速度の設定を変更しなければいけない分類の変更があった場合に、速度制御リビルド処理を実行し直してもよい。また、上記実施例2では、図15に示す速度制御リビルド処理の実行時に、新たに下位ストレージ装置121の故障が発生したことを検出した場合に、速度制御リビルド処理を実行し直してもよい。
101…上位ストレージ装置、103…ホスト、115…マイクロプロセッサ(MP)、121…下位ストレージ装置

Claims (11)

  1. 複数のストレージ装置に接続されたインターフェースと、
    前記インターフェースに接続された制御部と
    を有し、
    前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
    前記複数のストライプ列の各々は、2以上のストレージ装置がそれぞれ有する2以上のストライプの列であり、
    前記複数のストライプ列の各々は、複数のデータ要素と少なくとも1つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
    前記ストレージ装置の数は、1つのストライプ列を構成するストライプの数よりも多く、
    前記制御部は、
    故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御する
    ストレージシステム。
  2. 前記制御部は、
    前記ストライプ列に含まれる前記障害ストライプの数が所定のしきい値以上である場合に、前記ストライプ列の復元の優先度が高いと判定し、前記しきい値未満である場合に、前記ストライプ列の復元の優先度が低いと判定し、
    前記復元の優先度が高いと判定された前記ストライプ列の復元処理を、前記優先度が低いと判定された前記障害ストライプ列の復元処理よりも前に実行するとともに、前記優先度が低いと判定された前記障害ストライプ列の復元処理における処理速度を、前記復元の優先度が高いと判定された前記ストライプ列の復元処理における処理速度よりも低くなるように制御する
    請求項1に記載のストレージシステム。
  3. 前記制御部は、
    複数の前記ストライプ列を格納する複数のストレージ装置における故障したストレージ装置の台数に基づいて、前記ストライプ列の復元の優先度を判定し、
    判定された前記ストライプ列の優先度に基づいて、前記障害ストライプ列の復元処理における処理速度を制御する
    請求項1に記載のストレージシステム。
  4. 前記制御部は、
    前記データ要素を格納する障害ストライプの復元の優先度が、前記冗長コードを格納する障害ストライプの復元の優先度よりも高いと判定し、
    前記データ要素を格納する障害ストライプの復元処理を、前記冗長コードを格納する障害ストライプの復元処理よりも前に実行するとともに、前記冗長コードを格納する障害ストライプの復元処理における処理速度を、前記データ要素を格納する障害ストライプの復元処理における処理速度よりも低くなるように制御する。
    請求項1に記載のストレージシステム。
  5. 前記制御部は、
    前記データ要素を格納する障害ストライプの復元処理を行う際に、この障害ストライプと同じストライプ列に属するパリティ部を格納する障害ストライプについての復元処理も併せて実行する
    請求項4に記載のストレージシステム。
  6. 前記制御部は、
    前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元の優先性を、他の障害ストライプの復元の優先度よりも高いと判定し、
    前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元処理を、他の前記障害ストライプの復元処理よりも前に実行するとともに、他の前記障害ストライプの復元処理における処理速度を、前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元処理における処理速度よりも低くなるように制御する
    請求項1に記載のストレージシステム。
  7. 前記所定のしきい値は、
    前記ストライプ列のデータの信頼性の維持に対して許容される、前記許容数から低下可能な冗長度である
    請求項6に記載のストレージシステム。
  8. 前記制御部は、
    所定の時点における前記障害ストライプの復元の優先度に従って、前記障害ストライプの復元処理を実行している場合において、
    前記障害ストライプの復元処理の実行を中止し、前記所定の時点よりも後の時点における前記障害ストライプの復元の優先度の判定に従って、前記障害ストライプの復元処理を新たに実行する
    請求項2から請求項7のいずれか一項に記載のストレージシステム。
  9. 前記制御部は、
    ホスト計算機からのI/Oに対する前記障害ストライプの復元処理のI/Oの比率の許容値、前記障害ストライプの復元処理に対する前記制御部における実行優先度、又は、前記障害ストライプの復元処理に割り当てる資源量を調整することにより、前記障害ストライプの復元処理における処理速度を制御する
    請求項1から請求項8のいずれか一項に記載のストレージシステム。
  10. 複数のストレージ装置に接続されたインターフェースと、
    前記インターフェースに接続された制御部と、を有するストレージシステムにおけるデータ管理方法であって、
    前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
    前記複数のストライプ列の各々は、2以上のストレージ装置がそれぞれ有する2以上のストライプの列であり、
    前記複数のストライプ列の各々は、複数のデータ要素と少なくとも1つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
    前記ストレージ装置の数は、1つのストライプ列を構成するストライプの数よりも多く、
    前記ストレージシステムは、
    故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御する
    データ管理方法。
  11. 複数のストレージ装置に接続されたインターフェースと、
    前記インターフェースに接続された制御部と、を有するストレージシステムを構成するコンピュータに実行させるデータ管理プログラムであって、
    前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
    前記複数のストライプ列の各々は、2以上のストレージ装置がそれぞれ有する2以上のストライプの列であり、
    前記複数のストライプ列の各々は、複数のデータ要素と少なくとも1つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
    前記ストレージ装置の数は、1つのストライプ列を構成するストライプの数よりも多く、
    前記データ管理プログラムは、
    前記コンピュータを、
    故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御させる
    データ管理プログラム。
JP2019038790A 2019-03-04 2019-03-04 ストレージシステム、データ管理方法、及びデータ管理プログラム Active JP6889742B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019038790A JP6889742B2 (ja) 2019-03-04 2019-03-04 ストレージシステム、データ管理方法、及びデータ管理プログラム
US16/558,561 US20200285551A1 (en) 2019-03-04 2019-09-03 Storage system, data management method, and data management program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019038790A JP6889742B2 (ja) 2019-03-04 2019-03-04 ストレージシステム、データ管理方法、及びデータ管理プログラム

Publications (2)

Publication Number Publication Date
JP2020144459A true JP2020144459A (ja) 2020-09-10
JP6889742B2 JP6889742B2 (ja) 2021-06-18

Family

ID=72336401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019038790A Active JP6889742B2 (ja) 2019-03-04 2019-03-04 ストレージシステム、データ管理方法、及びデータ管理プログラム

Country Status (2)

Country Link
US (1) US20200285551A1 (ja)
JP (1) JP6889742B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7261763B2 (ja) * 2020-04-15 2023-04-20 株式会社日立製作所 計算機システム、制御方法及びプログラム
CN114253460A (zh) * 2020-09-23 2022-03-29 伊姆西Ip控股有限责任公司 管理存储池的方法、设备和计算机程序产品
US11983440B2 (en) * 2020-12-30 2024-05-14 Samsung Electronics Co., Ltd. Storage device including memory controller implementing journaling and operating method of the memory controller
CN114816221A (zh) * 2021-01-22 2022-07-29 伊姆西Ip控股有限责任公司 存储管理方法、设备和计算机程序产品
US20230082636A1 (en) * 2021-09-16 2023-03-16 Micron Technology, Inc. Parity data modification for partial stripe data update
CN114153651B (zh) * 2022-02-09 2022-04-29 苏州浪潮智能科技有限公司 一种数据编码方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066803A1 (en) * 2009-09-17 2011-03-17 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
JP2011192257A (ja) * 2010-03-11 2011-09-29 Lsi Corp 分散データレイアウト環境における冗長性復元を最適化するためのシステム及び方法
US20130054913A1 (en) * 2011-08-31 2013-02-28 Fujitsu Limited Storage system, and apparatus and method for controlling storage
US20140025990A1 (en) * 2012-07-23 2014-01-23 Hitachi, Ltd. Storage system and data management method
WO2016052665A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066803A1 (en) * 2009-09-17 2011-03-17 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
JP2011065625A (ja) * 2009-09-17 2011-03-31 Hitachi Ltd 大容量ディスクドライブの使用方法及び装置
JP2011192257A (ja) * 2010-03-11 2011-09-29 Lsi Corp 分散データレイアウト環境における冗長性復元を最適化するためのシステム及び方法
US20130054913A1 (en) * 2011-08-31 2013-02-28 Fujitsu Limited Storage system, and apparatus and method for controlling storage
JP2013054407A (ja) * 2011-08-31 2013-03-21 Fujitsu Ltd ストレージシステム、ストレージ制御装置およびストレージ制御方法
US20140025990A1 (en) * 2012-07-23 2014-01-23 Hitachi, Ltd. Storage system and data management method
JP2015525377A (ja) * 2012-07-23 2015-09-03 株式会社日立製作所 ストレージシステム及びデータ管理方法
WO2016052665A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US20160371145A1 (en) * 2014-09-30 2016-12-22 Hitachi, Ltd. Distributed storage system

Also Published As

Publication number Publication date
US20200285551A1 (en) 2020-09-10
JP6889742B2 (ja) 2021-06-18

Similar Documents

Publication Publication Date Title
JP6889742B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
US11941255B2 (en) Storage system and data management method
JP5744244B2 (ja) ストレージシステム
US10977124B2 (en) Distributed storage system, data storage method, and software program
US10558383B2 (en) Storage system
JP5444464B2 (ja) ストレージシステム
US20140304469A1 (en) Data storage
JP4719802B2 (ja) ストレージ管理装置、ストレージ管理方法およびストレージシステム
US8930745B2 (en) Storage subsystem and data management method of storage subsystem
JP2006505035A (ja) ディスク・アレイ内に多重従属故障または任意の二重ディスク故障があっても使用することができる方法および手段
US10372538B2 (en) Computer system
JP6206161B2 (ja) ストレージ制御装置、制御方法、および制御プログラム
US10678470B2 (en) Computer system,control method for physical storage device,and recording medium
US11449402B2 (en) Handling of offline storage disk
CN111857552A (zh) 存储管理方法、电子设备和计算机程序产品
WO2016139787A1 (ja) ストレージシステム及びデータ書込み制御方法
JP5962621B2 (ja) ストレージ装置及びその制御方法、並びにストレージ制御プログラム
US10713117B2 (en) Storage system and method for controlling storage system
WO2013088474A2 (en) Storage subsystem and method for recovering data in storage subsystem
US11403175B2 (en) Rebuilding data previously stored on a failed data storage drive
CN114415968A (zh) 存储系统及其数据写入方法
JP2021099624A (ja) ストレージシステム及びストレージシステムのリビルド処理方法
JP7443404B2 (ja) ストレージシステム
JP7419456B2 (ja) 記憶システム及びその制御方法
WO2017212514A1 (ja) ストレージシステム及び記憶制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210521

R150 Certificate of patent or registration of utility model

Ref document number: 6889742

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150