JPWO2018138813A1 - 計算機システム - Google Patents
計算機システム Download PDFInfo
- Publication number
- JPWO2018138813A1 JPWO2018138813A1 JP2018563998A JP2018563998A JPWO2018138813A1 JP WO2018138813 A1 JPWO2018138813 A1 JP WO2018138813A1 JP 2018563998 A JP2018563998 A JP 2018563998A JP 2018563998 A JP2018563998 A JP 2018563998A JP WO2018138813 A1 JPWO2018138813 A1 JP WO2018138813A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- raid
- stripe line
- stripe
- storage
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1096—Parity calculation or recalculation after configuration or reconfiguration of the system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
故障した記憶ドライブの消失データを復元する方法は、第1RAIDタイプの第1RAIDグループにおける記憶ドライブでの障害を検出し、前記第1RAIDグループにおいて、前記記憶ドライブの故障により消失したホストデータを含むストライプラインそれぞれにおいて、前記ホストデータを復元し、前記第1RAIDグループにおけるストライプラインのホストデータから、第2RAIDタイプのストライプラインのデータを形成し、前記第2RAIDタイプのストリップ数は前記第1RAIDタイプのストリップ数より少なく、前記故障した記憶ドライブを除く前記第1RAIDグループに含まれる記憶ドライブにより前記第2RAIDタイプの第2RAIDグループを構成し、前記第2RAIDタイプのストライプラインのデータを、前記第2RAIDグループに格納する。
Description
本発明は、消失データの復元に関する。
通常、1台のドライブの障害時、システム管理者は、障害ドライブをスペアドライブに置き換える。システムは、障害ドライブ以外の複数ドライブから同一ストライプラインのデータを読み出し、障害ドライブ内に格納されていたデータを復元し、復元したデータをスペアドライブ内へ格納する。
スペアドライブと障害ドライブ以外の複数ドライブによって同じRAIDタイプにてRAID構成を実現し、ストライプラインを再現する。さらに、障害ドライブから新ドライブへの交換の完了後、システムは、スペアドライブ内のデータを新ドライブへコピーし、スペアドライブに代えて、新ドライブを含む、RAID構成を生成する。
スペアドライブは、ドライブに障害が発生した際、障害ドライブが新しいドライブに交換されるまでの間のみ障害ドライブの代わりに使用され、通常業務では使用されない。スペアドライブの利用は、例えば、米国特許第8285928号に開示されている。
ストレージ装置の構成要素及びコストを削減するため、スペアドライブ不要化の要望がある。スペアドライブは、通常の業務では使用されずに、障害が起こったときのために常に確保しておく空き領域である。しかし、スペアドライブを用意しない構成においても、ドライブ障害時の信頼性を保障することが要求される。
本発明の代表的な一例は、計算機システムであって、メモリと、前記メモリに格納されているプログラムに従って動作するプロセッサと、を含み、前記プロセッサは、第1RAIDタイプの第1RAIDグループにおける記憶ドライブの故障を検出し、前記第1RAIDグループにおいて、前記記憶ドライブの故障により消失したホストデータを含むストライプラインそれぞれにおいて、前記ホストデータを復元し、前記第1RAIDグループにおけるストライプラインのホストデータから、第2RAIDタイプのストライプラインのデータを形成し、前記第2RAIDタイプのストリップ数は前記第1RAIDタイプのストリップ数より少なく、前記故障した記憶ドライブを除く前記第1RAIDグループに含まれる記憶ドライブにより前記第2RAIDタイプの第2RAIDグループを構成し、前記第2RAIDタイプのストライプラインのデータを、前記第2RAIDグループに格納する。
本発明の一態様によれば、スペアドライブを用意しない構成において、ドライブ障害時の信頼性を保障できる。
以下、図面を参照しながら実施例を説明する。ただし、本実施例は、発明を実現するための一例に過ぎず、発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
なお、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
以後の説明では「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよく、コントローラを主語とした説明としてもよい。
また、プログラムを主語として開示された処理は管理サーバ(管理装置)等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
(1)概要
以下において、スペアドライブ不要のドライブ障害時のリビルド技術を開示する。本技術により、スペアドライブが搭載されないシステムは、記憶ドライブの障害が発生した場合でも、稼動し続けることができる。
以下において、スペアドライブ不要のドライブ障害時のリビルド技術を開示する。本技術により、スペアドライブが搭載されないシステムは、記憶ドライブの障害が発生した場合でも、稼動し続けることができる。
システムは、スペアドライブが無い構成でディスクに障害が発生した場合には、RAID(Redundant Arrays of Independent Disks)グループを、nD+mPから(n−k)D+mPに再構成する。ここで、n、m、kは自然数である。システムは、例えば、7D+1PのRAIDグループから6D+1PのRAIDグループを再構成する。これにより、スペアドライブを使用することなく消失データを復元すると共に、リビルド後の信頼性を確保できる。
図1は、本開示のリビルド方法のフローチャートを示す。一つの記憶ドライブで障害が発生すると、システムは、障害ドライブ内に格納されていたデータを、同一RIADグループの障害ドライブ以外のドライブに格納されたデータ及びパリティを使用してデータを復元する(S1110)。
システムは、少ない構成数のRAIDタイプのRAIDグループを再構成し、新たなストライプラインを定義し、そのストライプラインのパリティを再計算する(S1112)。システムは、障害ドライブ以外の記憶ドライブに、新たなストライプラインのデータとパリティを、格納する(S1114)。
以下において、システム構成の一例として、オールフラッシュストレージ装置を説明するが、例えばHDD(Hard Disk Drive)のように、他の種類の記憶媒体を含む記憶ドライブを使用してもよい。
(2)システム構成
(a)システムハードウェア構成
図2は、本実施例のシステム100の構成例を示している。システム100は、ホスト計算機(ホスト)101、管理装置102、ストレージ装置104を含む。ホスト101、管理装置102、ストレージ装置104は、ネットワーク103で互いに接続される。
(a)システムハードウェア構成
図2は、本実施例のシステム100の構成例を示している。システム100は、ホスト計算機(ホスト)101、管理装置102、ストレージ装置104を含む。ホスト101、管理装置102、ストレージ装置104は、ネットワーク103で互いに接続される。
ネットワーク103は、一例として、ファイバチャネルを用いて形成されるSAN(Storage Area Network)である。ネットワーク103は、SCSIコマンドが転送可能なプロトコル以外に、メインフレームのI/Oプロトコルを用いることもできる。管理装置102はネットワーク103とは別の管理ネットワークを介して、他の装置と接続されてもよい。管理装置102は省略されてもよい。
図2に示されるように、ホスト101は、アプリケーションプログラムを実行する計算機であり、ストレージ装置104の論理的な記憶領域にネットワーク103経由でアクセスする。ストレージ装置104は、フラッシュパッケージ113の記憶領域にデータを格納する。ホスト101の台数はシステムにより変化する。
ホスト101は、例えば、入力デバイス、出力デバイス、CPU(Central Processing Unit)、メモリ、ディスクアダプタ、ネットワークアダプタ、及び、記憶デバイスを含む。なお、ホスト101のCPUは、ユーザが使用するアプリケーションプログラム、ストレージ装置104とのインターフェイス制御を行うストレージ装置制御プログラムを実行する。
ホスト101はストレージ装置104が提供する仮想ボリュームを使用する。ホスト101は仮想ボリュームに対して、アクセスコマンドであるリードコマンドやライトコマンドを発行することで、仮想ボリュームに格納されたデータにアクセスする。
管理装置102は、ストレージ装置104の管理、例えばストレージ装置104の記憶領域の構成、を行うための計算機で、汎用のコンピュータと同様に、プロセッサとメモリを含む。管理装置102は、ストレージ装置104の管理を行うための管理プログラムを実行する。管理装置102は、キーボードやディスプレイ等の入出力デバイス、CPU、メモリ、ネットワークアダプタ、及び、記憶デバイスを含み、ストレージ装置104の状態等の情報を、ディスプレイ等に出力(表示)する。
ストレージ装置104は、計算機システムの例であり、ホスト101に対して1以上のボリューム(仮想ボリューム又は論理ボリューム)を提供する。ストレージ装置104は、ホストインターフェイス(I/F)106、保守I/F107、ストレージコントローラ109、キャッシュメモリ110、共有メモリ111、フラッシュパッケージ113を含む。これらのハードウェア構成は冗長化されているものとする。
これらの構成要素は、バス112によって相互接続されている。これらの構成要素のうち、ホストI/F106、保守I/F107、ストレージコントローラ109、キャッシュメモリ110、共有メモリ111、バス112の集合を、ストレージコントローラと呼ぶこともある。フラッシュパッケージ113は外部ネットワークを介して他のデバイスを接続されてもよい。ストレージ装置104からフラッシュパッケージ113を除いた構成も計算機システムである。
ホストI/F106は、ストレージ装置104がホスト101等のイニシエータと通信するために用いられる、インターフェイスデバイスである。ホスト101がボリューム(以下の例で仮想ボリューム)にアクセスするために発行するコマンドは、ホストI/F106に到来する。ストレージ装置104は、ホスト101にホストI/F106から情報(応答)を返す。
保守I/F107は、ストレージ装置104が管理装置102と通信するためのインターフェイスデバイスである。管理装置102からのコマンドは保守I/F107に到来する。ストレージ装置104は、管理装置102に、保守I/F107から情報(応答)を返す。
図2の例において、ホストI/F106と保守I/F107がいずれもネットワーク103に接続されているが、ホストI/F106が接続されるネットワークと、保守I/F107が接続されるネットワークが、異なるネットワークであってもよい。
キャッシュメモリ110は、例えばRAM(Random Access Memory)等で構成され、フラッシュパッケージ113に読み書きされるデータを一時的に格納する。共有メモリ111は、ストレージコントローラ109で動作するプログラムや構成情報を格納する。
ストレージコントローラ109は、プロセッサ119とローカルメモリ118を有するパッケージボードである。プロセッサ119は、ストレージ装置104の各種制御を行うためのプログラムを実行する。ローカルメモリ118は、プロセッサ119が実行するプログラムや、プロセッサ119が使用する情報を一時的に保存する。
図2は、ストレージ装置104が2つのストレージコントローラ109を有する構成が示されているが、ストレージコントローラ109の数は2以外でもよい。ストレージ装置104にストレージコントローラ109が1つだけ搭載されている構成でも良いし、或いは3以上のストレージコントローラ109が搭載されていてもよい。
キャッシュメモリ110は、仮想ボリューム(フラッシュパッケージ113)に対するライトデータ、又は仮想ボリューム(フラッシュパッケージ113)から読み出されたデータ(リードデータ)を一時的に記憶するために用いられる。キャッシュメモリ110には、DRAM、SRAM等の揮発性メモリ又は不揮発性メモリが用いられてよい。
共有メモリ111は、ストレージコントローラ109(のプロセッサ119)が使用する管理情報を格納するための記憶領域を提供する。キャッシュメモリ110と同様、共有メモリ111には、DRAM、SRAM等の揮発性メモリ又は不揮発性メモリが用いられてよい。キャッシュメモリ110と共有メモリ111は、ローカルメモリ118と異なり、任意のストレージコントローラ109のプロセッサ119からアクセス可能である。
フラッシュパッケージ113は、ホスト101からのライトデータを最終的に格納するための不揮発性記憶媒体を含む記憶ドライブ(記憶デバイス)である。ストレージコントローラ109は、一台のフラッシュパッケージ113が故障しても、そのフラッシュパッケージ113のデータを復元できるRAID機能をもっているものとする。
複数のフラッシュパッケージ113が、一つのRAIDグループを構成する。これを、パリティグループ115と呼ぶ。フラッシュパッケージ113は、記憶媒体として、フラッシュメモリを有する。フラッシュパッケージの一例は、SSD(Solid State Drive)である。
フラッシュパッケージ113は、ライトデータを圧縮して自身の記憶媒体に格納する機能(圧縮機能)を有してもよい。フラッシュパッケージ113は、RAIDグループに基づいて一つ以上の論理記憶領域(論理ボリューム)を提供する。論理ボリュームは、RAIDグループのフラッシュパッケージ113が有する物理的な記憶領域と関連付けられる。
(b)フラッシュパッケージ
図3は、フラッシュパッケージ113の構成例を示す。フラッシュパッケージ113は、コントローラ210と、ホスト101からのライトデータを記憶するための記憶媒体であるフラッシュメモリ280を有する。コントローラ210は、ドライブI/F211、プロセッサ213、メモリ214、フラッシュI/F215、圧縮機能を有する論理回路216を含む、これらは内部ネットワーク212を介して相互接続されている。圧縮機能は省略してもよい。
図3は、フラッシュパッケージ113の構成例を示す。フラッシュパッケージ113は、コントローラ210と、ホスト101からのライトデータを記憶するための記憶媒体であるフラッシュメモリ280を有する。コントローラ210は、ドライブI/F211、プロセッサ213、メモリ214、フラッシュI/F215、圧縮機能を有する論理回路216を含む、これらは内部ネットワーク212を介して相互接続されている。圧縮機能は省略してもよい。
ドライブI/F211は、ストレージ装置104と通信するためのインターフェイスデバイスである。フラッシュI/F215は、コントローラ210がフラッシュメモリ280と通信するためのインターフェイスデバイスである。
プロセッサ213は、フラッシュパッケージ113の制御を行うためのプログラムを実行する。メモリ214は、プロセッサ213が実行するプログラムや、プロセッサ213が使用する制御情報等を格納する。以下で説明するフラッシュパッケージ113が行う処理(記憶領域の管理、ストレージ装置104からのアクセス要求の処理等)は、プロセッサ213がプログラムを実行することにより行われる。プロセッサ213は、ストレージコントローラ109からリード要求又はライト要求を受け付け、受けた要求に従う処理を実行する。
プロセッサ213が、ストレージコントローラ109からライト要求を受け、そのライト要求に従うデータをフラッシュメモリ280に書き込んだ段階で、そのライト要求を完了する(ライト要求の完了をストレージコントローラ109に報告する)。または、ストレージコントローラ109とフラッシュメモリ280との間でリード又はライトされるデータをバッファ(図示せず)に一時的に格納してもよい。プロセッサ213は、ストレージコントローラ109からのライト要求に従うデータをバッファに書き込んだ段階で、そのライト要求の完了報告をストレージコントローラ109に送信してもよい。
(3)ページ、ブロックの関係
本実施例においては、ストレージ装置104は、容量仮想化機能をもつ。容量仮想化の制御単位は、ページとよばれる。本実施例では、ページのサイズは、フラッシュメモリにおける消去単位であるブロックよりも大きい。例えば、ページのサイズは、ブロックのサイズのX倍である(Xは2以上の整数)。なお、本実施例では、フラッシュメモリにおけるリード及びライトの単位を、「セグメント」と呼ぶ。
本実施例においては、ストレージ装置104は、容量仮想化機能をもつ。容量仮想化の制御単位は、ページとよばれる。本実施例では、ページのサイズは、フラッシュメモリにおける消去単位であるブロックよりも大きい。例えば、ページのサイズは、ブロックのサイズのX倍である(Xは2以上の整数)。なお、本実施例では、フラッシュメモリにおけるリード及びライトの単位を、「セグメント」と呼ぶ。
図4は、仮想ボリューム311のページ321、プールのページ324、フラッシュ側プール303のブロック325、そしてフラッシュパッケージのブロック326、の間の関係を示す。プール303のページ324は、仮想ボリューム311のページ321に含まれない冗長データを、格納することがある。
ターゲットデバイス310は仮想ボリューム又は論理ボリュームのうち、ホスト101からのアクセスを許す記憶領域である。ページ321は、仮想ボリューム311を構成する。仮想ボリューム311はプール303を用いて定義された、シンプロビジョニング又は/及びティアリングを適用した仮想記憶領域である。プール303は、シンプロビジョニングやティアリングに用いるプールボリューム305の集合である。
プールボリューム305は1つのプール303に所属する。ページ324は、プールボリューム305(プール303)から切り出される。ページ324は、仮想ボリュームのページ321に割り当てられる。ページ324は、フラッシュ側プール304を介して、パリティグループ(RAIDグループ)115の実記憶領域が割り当てられる。パリティグループは、複数のフラッシュパッケージ(記憶ドライブ)113を用いて定義される。これにより、RAIDによる高信頼化、高速化、大容量化が達成される。
本実施例において、フラッシュパッケージ113の容量の管理単位は、フラッシュメモリの消去単位であるブロックとする。ストレージコントローラ109は、ブロック単位で、フラッシュパッケージ113にアクセスする。フラッシュ側プール304のブロック325は、ストレージコントローラ109から見た仮想ブロックである。ブロック326は、実際にデータを格納する実ブロックである。
フラッシュ側プール304は、仮想ブロック325から構成される。プール303のページ324は、複数の仮想ブロック325に対応付けられる。仮想ブロック325に格納されるデータは、フラッシュパッケージ113内の実ブロック326に格納される。以上の格納方式は一例である。
フラッシュ側プール304の仮想ブロック325は、フラッシュパッケージアドレス空間362のブロックを介して、実ブロック326にマッピングされる。フラッシュパッケージアドレス空間362は、ストレージコントローラ109から見えるフラッシュパッケージのアドレス空間である。
一つのフラッシュパッケージ113において、フラッシュパッケージアドレス空間362の仮想ブロックにより構成される容量は、実ブロック326により構成される容量より大きくあり得る。実ブロック326は、フラッシュメモリアドレス空間363のブロックである。フラッシュパッケージ113は、実ブロック数より多くの仮想ブロックをもっているように、ストレージコントローラ109に見せることができる。仮想ブロックにより構成される容量のほうが、実ブロックにより構成される容量より大きい。
フラッシュパッケージ113は、まだ実ブロック326を割り当てていない仮想ブロック325に属するアドレスを指定したライト要求をストレージコントローラ109から受け付けた場合、その仮想ブロック325に実ブロック326を割り当てる。
パリティグループ308は、前述した通り、複数の同種同一通信インターフェイスのフラッシュパッケージ113によって構成されており、それら複数のフラッシュパッケージ113に跨るストライプライン(記憶領域)307が定義される。ストライプラインは、消失データを回復可能な冗長構成を有する、ホストデータとパリティデータを格納する。
フラッシュパッケージ113内のフラッシュメモリ280に対して、フラッシュメモリアドレス空間363が定義されている。さらに、フラッシュメモリアドレス空間363とフラッシュ側プール304とのマッピングのための、フラッシュパッケージアドレス空間362が定義されている。各フラッシュパッケージ113に対して、フラッシュメモリアドレス空間363とラッシュパッケージアドレス空間362が定義されている。
パリティグループ308の上位に、フラッシュ側プール304が存在する。フラッシュ側プール304は、パリティグループ308に基づく仮想的な記憶資源である。フラッシュ側プール304に対して、フラッシュ側プールアドレス空間352が定義されている。このアドレス空間352は、ストレージコントローラ109側の記憶容量を管理するアドレス空間とフラッシュパッケージ内の記憶容量を管理するアドレス空間をマッピングためのアドレス空間である。
フラッシュパッケージアドレス空間362とフラッシュ側プールアドレス空間352との間のマッピングは、一度決定されると維持される(静的)。フラッシュ側プールアドレス空間352とプールアドレス空間351との間のマッピングも静的である。
ストレージコントローラ109側のプール303は、複数のプールボリューム305によって形成される。プールボリューム305は、オフラインボリュームであるため、ホスト101から指定されるターゲットデバイスには関連付けられていない。プールボリューム305は、複数のページ324から構成されている。
ページ324を構成するブロックは、フラッシュ側プール304(空間353)のブロック325と、1対1でマッピングされている。ブロック325は、ストライプライン307の記憶領域と関連付けられている。ページ324のブロックに格納されるデータは、そのブロックに関連付けられているストライプライン307に格納される。1つのページ324に複数のストライプライン307が関連付けられていてもよい。
容量が仮想化された仮想ボリューム(TPVOL:Thin Provisioning Volume)311の仮想ページ321には、そのTPVOL311にマッピング関連付けられているプール303内の空きページがマッピングされる。ストレージコントローラ109は、割り当てたプール303内の空きページを、ブロック単位で、フラッシュ側プールアドレス空間352のブロックにマッピングし、そのマッピングを管理する。つまり、ブロックは、ストレージコントローラ109からのI/Oの単位でもある。
ストレージコントローラ109は、フラッシュ側プールアドレス空間352のブロックがマッピングされている、フラッシュパッケージアドレス空間362のブロックを検索して、フラッシュパッケージ側にリード/ライト要求を出す。マッピングは、セグメント単位でもよい。
TPVOL311の上位にターゲットデバイス310が定義される。1以上のターゲットデバイス310が、ホスト101の通信ポートに関連付けられており、ターゲットデバイス310に、TPVOL311が関連付けられている。
ホスト101は、ターゲットデバイス310を指定したI/Oコマンド(ライトコマンド又はリードコマンド)をストレージ装置104に送信する。ターゲットデバイス310には、前述した通り、TPVOL311が関連付けられている。ストレージ装置104は、TPVOL311に関連付けられているターゲットデバイス310を指定したライトコマンドを受信した場合、プール303から空きページ324を選択し、ライト先仮想ページ321に割り当てる。
ストレージ装置104は、ライト先ページ324に、ライトデータを書き込む。ページ324にデータを書き込むことは、そのページ324にマッピングされたフラッシュ側プールアドレス空間のブロック325に関連づけられているストライプライン307、に書き込むことになる。即ちストライプライン307に関連付けられたフラッシュメモリにデータを書き込むということである。
以上のように説明したが、管理するデータの単位をそろえることで、プール303とフラッシュ側プール304はひとつのプールを設定して管理することができる。
(4)管理情報
図5は、ストレージ装置104の共有メモリ111に格納される管理情報を示す。仮想ボリューム情報2000、プール情報2300、パリティグループ情報2400、実ページ情報2500、及び、空きページ管理ポインタ2600が、共有メモリ111に格納されている。空きページ管理ポインタ(情報)2600は、パリティグループ115ごとに、空きページを管理する。
図5は、ストレージ装置104の共有メモリ111に格納される管理情報を示す。仮想ボリューム情報2000、プール情報2300、パリティグループ情報2400、実ページ情報2500、及び、空きページ管理ポインタ2600が、共有メモリ111に格納されている。空きページ管理ポインタ(情報)2600は、パリティグループ115ごとに、空きページを管理する。
フラッシュパッケージ情報2700は、フラッシュパッケージ113のメモリ214に格納されている。本実施例においては、ストレージコントローラ109は、容量仮想化機能を有している。ストレージコントローラ109が、容量仮想化機能をもっていなくともよい。
図6は、仮想ボリューム情報2000が示す一つの仮想ボリューム(TPVOL)の情報の形式例を示す。仮想ボリューム情報2000は、装置内の複数仮想ボリュームの情報を保持する。仮想ボリュームは、ホスト101がリード又はライトするデータが格納される仮想的な記憶デバイスである。ホスト101は、仮想ボリュームのID、仮想ボリューム内のアドレス、対象データの長さを指定して、リードコマンドやライトコマンドを発行する。
仮想ボリューム情報2000は、仮想ボリュームID2001、仮想容量2002、仮想ボリュームRAIDタイプ2003、仮想ボリュームのページ番号2004、及び、プール内のページへのポインタ2006を示す。
仮想ボリュームID2001は、対応する仮想ボリュームのIDを示す。仮想容量2002は、ホスト101から見た、仮想ボリュームの容量を表す。仮想ボリュームRAIDタイプ2003は、仮想ボリュームのRAIDタイプを表す。RAID5のように、N台のフラッシュパッケージ113に対し1台のフラッシュパッケージ113に冗長データを格納する場合、Nの具体的数値を指定する。
仮想ボリュームのページ番号2004は、仮想ボリュームのページの番号を示す。仮想ボリュームのページ番号2004のページ番号数は、仮想ボリュームのページ数である。ペース数は、仮想容量2002が表す値を仮想ページ容量(後述)が表す値で割った数である。
プール内のページへのポインタ2006は、仮想ボリュームのページに割り当てられたプールページのページ情報2500へのポインタを示す。ストレージ装置104は仮想容量機能をサポートしているので、ページが割り当てられる契機は、仮想ボリュームのページへの実際のデータ書き込みである。まだ書き込みが行われていない仮想ページに対応するプール内のページへのポインタ2006の値は、NULLである。
本実施例では、仮想ボリュームのページの容量とプールのページの容量は等しいというわけではない。なぜなら、プールのページは、RAIDのタイプにより異なる冗長データを格納することがあるためである。プールのページ容量は、そのページが割り当てられたパリティグループ115のRAIDタイプにより決まる。
たとえば、RAID1のようにデータを2重に書き込む場合、プールのページの容量は、仮想ページ容量の2倍になる。RAID5のように、N台の記憶装置の容量に対し、1台分の記憶装置の容量の冗長データを格納する場合、仮想ページ容量の(N+1)/Nの容量が、ページの容量である。なお、1又は複数のパリティ(冗長データ)ブロックと、これらを生成する1又は複数の(ホスト)データブロックからなるデータを、ストライプラインと呼ぶ。ストライプラインのデータブロックを、ストリップとも呼ぶ。
RAID0のように、パリティデータが使用されない場合、仮想ボリュームのページの容量とプールのページの容量が等しい。なお、本実施例においては、仮想ページの容量は、ストレージ装置104が提供する1又は複数の仮想ボリュームについて共通であるが、1又は複数の仮想ボリュームにおいて異なる容量のページが含まれていてもよい。
図7は、プール情報2300の形式例を示す。プール情報2300は複数のプールの情報を含み得るが、図7は、一つのプールの情報を示す。プール情報2300は、プールID2301、パリティグループID2302、容量2303、空き容量2304、を含む。
プールID2301はプールのIDを示す。パリティグループID2302は、プールを構成するパリティグループ115を示す。容量2303はプールの記憶容量を示す。空き容量2304は、プールの中で使用可能な記憶容量を示す。
図8は、ページ情報2500の形式例を示す。ページ情報2500は、プール内の複数のページの管理情報であるが、図8は、一つのページのページ情報を示す。ページ情報2500は、プールID2501、ページポインタ2503、ページ番号2504、プールボリューム番号2505、ページ番号2506、フラッシュ側プールID2507、プールページのブロック番号2508、フラッシュ側プールブロック番号2509を含む。
プールID2501はこのページが所属しているプールのIDを示す。ページポインタ2503は、プール内の空きページをキュー管理するときに使用される。プールボリューム番号2505は、このページが含まれるプールボリュームを示す。ページ番号2504は、このページのプールボリューム内の番号を示す。
フラッシュ側プールID2507は、プールID2501が示すプールに関連づけられるフラッシュ側アドレス空間352を有するフラッシュ側プール304を示す。プール303及びフラッシュ側プール304の数がそれぞれひとつである場合、この情報は省略される。
ページのブロック番号2508は、プールアドレス空間におけるページ内のブロック番号を示す。フラッシュ側プールブロック番号2509は、ページのブロック番号に関連づけられたフラッシュ側プールアドレス空間のブロック番号を示す。
この関連付け又は割り当ては、ストレージ装置104の初期設定時に実施される。システム運用中に追加されたプールボリュームのページ情報2500は、当該プールボリュームが追加された時に生成される。
なお、プールアドレス空間のページとフラッシュパッケージアドレス空間のページとのマッピングのためには、ページ情報2500が、フラッシュパッケージアドレス空間のページ番号を管理すればよい。フラッシュメモリへのアクセス単位はページサイズより小さいことがほとんどであるため、本例は、ブロック単位でマッピングを管理する。セグメント単位のマッピングも、同様の方法で管理できる。
図9は、プール303にあるページの、空きページ管理ポインタ2600の例を示す。1以上の空きページ管理ポインタ2600が、一つのプールに対して設けられる。例えば、プールボリュームごとに空きページ管理ポインタ2600が設けられてもよい。
空きページと使用不可ページはキューにより管理される。図9は、空きページ管理ポインタ2600によって管理される空きページの集合を示す。空きページは、仮想ページに割り当てられていないページを意味する。空きページに対応したページ情報2500を空きページ情報と呼ぶ。空きページ管理ポインタ2600は、先頭の空きページ情報2500のアドレスをさす。次に、先頭のページ情報2500の中の空きページを指すページポインタ2503が、次の空きページ情報2500を指す。
図9において、最後の空きページ情報2500の空きページポインタ2503は、空きページ管理ポインタ2600を示しているが、NULLでもよい。ストレージコントローラ109は、ページを割り当てていない仮想ページに書き込み要求を受けると、仮想ボリュームの仮想ボリュームRAIDタイプ2003と同一タイプのパリティグループ115の中のいずれか、空きページ管理ポインタ2600から探す。ストレージコントローラ109は、例えば、空きページ数の最も多いパリティグループ115の空きページを、仮想ページに割り当てる。
ストレージコントローラ109は、空きページを仮想ボリュームのページへ割り当てると、割り当てられページの一つ前の空きページのページポインタ2503を更新する。具体的には、ストレージコントローラ109は、一つ前の空きページのページ情報2500のページポインタ2503を、割り当てられたページのページポインタ2503に変更する。ストレージコントローラ109は、さらに、該当するプール情報2300の空き容量2304の値から割り当てられたページの容量を減算して、空き容量2304の値を更新する。
図10は、パリティグループ情報2400の形式一例を示す。パリティグループ情報2400は、フラッシュ側プールアドレス空間とフラッシュパッケージアドレス空間との間のマッピングを管理する。パリティグループ情報2400は、複数のパリティグループ115の情報を含み得るが、図10は、一つのパリティグループ115の情報を示す。
パリティグループ情報2400は、パリティグループID2401、RAIDタイプ2402、容量2403、空き容量2404、及び、ガベージ量2405、フラッシュ側プールブロック番号2406、フラッシュパッケージID2407、ストライプライン番号2408(又はフラッシュパッケージアドレス空間のブロック番号)、再構成状態2409、を示す。
パリティグループID2401は、当該パリティグループ115の識別子を示す。RAIDタイプ2402は、当該パリティグループ115のRAIDタイプを示す。容量2403はパリティグループの容量を示す。空き容量2404は、パリティグループの容量2403からにガベージ量2405を引いた値である。プールの空き容量2304は、構成するパリティグループの空き容量2404の合計である。
ガベージ量2405は、パリティグループの容量2403において、旧データが格納されており、新しいデータを格納できない容量を示す。ガベージは、フラッシュメモリのような追記型の記憶媒体に存在し、消去処理により空き領域として使用可能となる。
フラッシュ側プールブロック番号2406は、パリティグループのアドレス空間の管理単位であるブロックの番号を示す。フラッシュ側プールブロック番号2406は、各ストライプラインに対応するブロックの番号を示す。フラッシュパッケージID2407は、ブロックが格納されるフラッシュパッケージのIDを示す。なお、後述するように、ストライプライン再構成においてブロックが一時的にバッファに格納される場合、フラッシュパッケージID2407は、格納先のバッファアドレスを示す。
ストライプライン番号2408は、フラッシュパッケージアドレス空間のブロック対応する、パリティグループ内のストライプラインを示す。本例において、一つのブロックが、一つのストリップに対応する。複数のブロックが一つストリップに対応してもよい。
再構成状態2409は、各ブロックが対応する新たなストライプラインの再構成処理の状態を示す。本例において、ブロックが対応する新たなストライプラインは、当該ブロックのデータが、再構成(生成)のためにフラッシュパッケージ113から読み出される、新たなストライプラインである。
再構成状態2409は、新たなストライプラインの再構成処理が終了している状態(再構成済み)、再構成処理が実中の状態(再構成中)、又は、再構成処理が未だ実施されていない状態(再構成前)を示す。
後述するように、新たなストライプラインの再構成のため、再構成前の旧ストライプラインがパリティグループ(フラッシュパッケージ)から読み出され、消失したホストデータが復元される。さらに、その旧ストライプラインのホストデータの一部、及び、必要であればバッファ内のデータから、新たなストライプラインが生成される。
新たなストライプラインは、新たなパリティグループの記憶領域に上書きされる。新たなストライプラインに含まれず、次の新たなストライプラインに含まれるホストデータは、バッファに一次的に格納される。
本例において、ストライプライン再構成により、ストライプラインを構成するストリップ数が減少する。ブロックが格納されるフラッシュパッケージ及びストライプラインが変化し得る。各ストライプラインの再構成処理に応じて、ストレージコントローラ109は、パリティグループ情報2400を更新する。
一つのストライプラインの再構成(新たなストライプラインの生成)が終了すると、ストレージコントローラ109は、対応するブロックの、フラッシュパッケージID2407、ストライプライン番号2408、再構成状態2409を更新する。
ストレージコントローラ109は、フラッシュパッケージID2407、ストライプライン番号2408の値を、再構成した新しいストライプラインの情報で上書きする。ブロックのデータがバッファに一次的に格納されている場合、フラッシュパッケージID2407はそのバッファを示し、ストライプライン番号2408はNULL値を示す。
全てのストライプラインの再構成が終了すると、ストレージコントローラ109は、パリティグループ情報2400における未更新の情報(RAIDタイプ2402、容量2403等)を更新し、再構成後のRAID構成が確定する。
図11は、フラッシュパッケージ情報2700の形式例を示す。フラッシュパッケージ情報2700は、フラッシュパッケージアドレス空間とフラッシュメモリのアドレス空間のマッピングを管理する。フラッシュパッケージ情報2700は、各フラッシュパッケージ内で管理され、メモリ214に格納される。ストレージコントローラ109からはアクセスされない。
フラッシュパッケージ情報2700は、フラッシュパッケージID2701、パリティグループID2702、容量2703、空き容量2704、フラッシュパッケージアドレス空間のブロック番号2705、フラッシュメモリアドレス空間のブロック番号2706を示す。
フラッシュパッケージID2701は当該フラッシュパッケージ113のIDを示す。パリティグループID2702は、当該フラッシュパッケージ113が属するパリティグループ115を示す。容量2703は当該フラッシュパッケージ113(フラッシュメモリ)の実容量を示す。フラッシュパッケージアドレス空間の拡張によって、容量2703の値は変化しない。
空き容量2704は、データを書き込むことができる領域の実容量を示す。空き容量は、容量2703の値から、データを格納する領域の容量とガベージの容量を引いた値を示す。ガベージのデータ消去により、空き容量2704の値は増加する。
フラッシュパッケージアドレス空間のブロック番号2705は、フラッシュパッケージの容量をブロック単位で管理するアドレス空間の番号である。フラッシュメモリアドレス空間のブロック番号2706は、フラッシュメモリの容量をブロック単位で管理するアドレス空間の番号である。
フラッシュメモリアドレス空間のブロック番号2706は、フラッシュパッケージアドレス空間のブロック番号2705に関連付けられた物理的なフラッシュメモリの格納位置を示す情報である。フラッシュパッケージアドレス空間の空きブロックに最初にデータが格納されるときに、そのブロック番号に、当該データを実際に格納するフラッシュメモリアドレス空間のブロック番号が割り当てられる。
(5)ストライプライン再構成
図12は、ストライプラインの再構成の処理の例を示す。図12は、パリティストリップの数が一つであるRAIDタイプの例を示す。ストレージコントローラ109は、フラッシュパッケージ113からパリティグループを生成する。各フラッシュパッケージ113の内部回路は、冗長構成を有する。フラッシュパッケージ113内の障害は、フラッシュパッケージ113により解決される。フラッシュパッケージ113が解決できない障害が発生すると、ストレージコントローラ109がそれを解決する。
図12は、ストライプラインの再構成の処理の例を示す。図12は、パリティストリップの数が一つであるRAIDタイプの例を示す。ストレージコントローラ109は、フラッシュパッケージ113からパリティグループを生成する。各フラッシュパッケージ113の内部回路は、冗長構成を有する。フラッシュパッケージ113内の障害は、フラッシュパッケージ113により解決される。フラッシュパッケージ113が解決できない障害が発生すると、ストレージコントローラ109がそれを解決する。
ストレージコントローラ109は、パリティグループを構成するフラッシュパッケージ113の情報を管理すると共に、パリティグループに含まれるストライプラインを管理する。ストライプライン再構成はストレージコントローラ109により制御される。ストレージコントローラ109は、実行中のストライプライン再構成を管理するため、ストライプライン番号カウンタ(ストライプライン番号C)を使用する。カウンタは、例えば、共有メモリ111内に構成される。
ストライプライン番号Cは、再構成処理の対象である旧ストライプライン(再構成前のストライプライン)の番号を示す。本例において、ストレージコントローラ109は、一つのストライプラインの再構成が終了すると、ストライプライン番号Cをインクリメントする。再構成は、パリティグループのアドレス空間(フラッシュパッケージアドレス空間)においてアドレスの昇順に実行される。
まず、ストレージコントローラ109は、ストライプライン番号Cに初期値0を設定する(S1510)。ストレージコントローラ109は、ストライプライン番号Cのストライプ(旧ストライプ)を構成するストリップを、パリティグループから選択する。ストライプラインを順次処理により、再構成に必要なメモリ容量を削減する。ストレージコントローラ109は、選択したストライプのブロックの再構成状態2409の値を「再構成中」に変更する。後述するように、新たなストライプラインのストリップ数は、再構成前のストリップ数よりも少ない所定数である。
ストレージコントローラ109は、ストライプラインのホストデータ及びパリティを読み出すために、リードコマンドを発行する(S1512)。ホストデータが格納されている正常フラッシュパッケージ113は、ホストデータをストレージコントローラ109へ応答する(S1514)。パリティが格納されているフラッシュパッケージ113は、パリティをストレージコントローラ109へ応答する(S1515)。
ストレージコントローラ109は、障害ストリップにホストデータが格納されているか判定する(S1516)。ストライプラインのパリティは規則的に配置されているため、ストライプライン番号からホストデータが格納されているフラッシュパッケージ番号が算出される。
ホストデータが格納されている場合(S1516:YES)、ストレージコントローラ109は、ストレージコントローラ109は、受け取ったホストデータ及びパリティデータから、障害ドライブに格納されていた消失データを復元する(S1520)。
格納されているものがパリティの場合(S1516:NO)、ストライプライン再構成においてパリティが再計算されるため、消失したパリティの復元は不要である。ストレージコントローラ109は、S1521へ進む。
図13A、13Bは、ホストデータの復元の例を示す。図13A、13Bは、7D+1PのRAIDタイプにおける障害の例を示す。図13Aは再構成前の状態を示し、図13Bは再構成後の状態を示す。フラッシュパッケージ内のメモリアドレス空間402_1〜402_8をそれぞれ持つ8台のフラッシュパッケージ113がパリティグループを構成している。
ストライプライン403_1では、ホストデータDnがメモリアドレス空間402_n内に格納される。n=1から7のいずれかである。パリティPは、メモリアドレス空間402_8内に格納される。パリティPは、ホストデータD1〜D8から生成される。
ホストデータD1が格納されているメモリアドレス空間402_1のフラッシュパッケージ113で障害が起きた場合、ストレージコントローラ109は、同一ストライプラインのホストデータD2〜D7及びパリティPを読み出し(410)、ホストデータD1を復元する(420)。
図12に戻って、次に、ストレージコントローラ109は、ストライプラインを再構成する。ストレージコントローラ109は、新しいストライプラインのホストストリップのデータを決定する。
バッファ(図14A、14Bに示すバッファ405)に直前の旧ストライプラインのホストデータが格納されている場合、そのホストデータと現在の旧ストライプラインの一部のホストデータが、新ストライプラインに格納される。バッファにデータが格納されていない場合、現在の旧ストライプラインの一部のホストデータのみが新ストライプラインに格納される。ストレージコントローラ109は、パリティグループ情報2400のフラッシュパッケージID2407を参照して、バッファ内のホストデータを知ることができる。
ストレージコントローラ109は、新ストライプラインのパリティを再計算する。ストレージコントローラ109は、算出したパリティを、パリティを格納するフラッシュパッケージ113に書き込む。
一例において、パリティライトコマンドがフラッシュパッケージ113に対して定義される。ストレージコントローラ109は、パリティライトコマンドによりフラッシュパッケージ113を制御することで、新パリティを生成し、フラッシュパッケージ113に書き込む。
具体的には、ストレージコントローラ109は、パリティライトコマンドを、パリティ生成のためのデータと共に、新しいストライプラインのパリティを格納するフラッシュパッケージ113へ発行する(S1522)。
パリティライトコマンドは、フラッシュパッケージアドレス空間における範囲(アドレス)を指定する。パリティライトコマンドを受信したフラッシュパッケージ113は、受け取ったデータのXOR演算を行い、新パリティを計算する(S1524)。フラッシュパッケージ113は、指定されたアドレス(から計算したフラッシュメモリ空間のアドレス)に、そのアドレスに計算した新パリティを格納する(S1526)。パリティライトコマンドを受信したフラッシュパッケージ113は、パリティライトコマンドに対して、ストレージコントローラ109へ応答を返す(S1528)。
ストレージコントローラ109は、ストライプラインのホストデータを格納するフラッシュパッケージ113群にライトコマンドを発行する。フラッシュパッケージ113はそれぞれホストデータを格納し(S1532)、ライトコマンドに対して、ストレージコントローラ109へ応答を返す(S1534)。
ストレージコントローラ109は、パリティグループ情報2400の情報を更新する。具体的には、ストレージコントローラ109は、再構成状態2409において、新たに読み出したデータブロックの「再構成中」の値を「再構成済み」に変更する。
さらに、ストレージコントローラ109は、新たにバッファ又はフラッシュパッケージ113に格納したデータブロックについて、フラッシュパッケージID2407、ストライプライン番号2408の値を更新する。フラッシュパッケージID2407及びストライプライン番号2408において、バッファに格納されたデータブロックの値は、バッファアドレス及びNULL値を示す。
バッファ内に新たなストライプラインを再構成するための全ホストデータが格納されている場合、ストレージコントローラ109は、当該ホストデータ及び新パリティを、新ストライプラインに格納する。さらに、ストレージコントローラ109は、パリティグループ情報2400の情報を更新する。
最後に、ストレージコントローラ109は、ストライプライン番号Cをインクリメントし、次のストライプライン番号に対して処理を続ける(S1536)。なお、ストレージコントローラ109は、自装置で算出したパリティを、ライトコマンドにてフラッシュパッケージ113に書き込んでもよい。
図13A、13Bの構成例において、ストレージコントローラ109は、RAIDタイプを7D+1Pから6D+1Pに変更する。新しいパリティNPは、ホストデータD1〜D6とパリティPから生成される(430)。RAIDタイプを変更するために、ストレージコントローラ109は、ホストデータとパリティを、フラッシュパッケージに格納し直す。
ストライプライン403_2に対して、ストレージコントローラ109は、ホストデータD1〜D6はメモリアドレス空間402_2〜402_7に格納し、新パリティNPを、メモリアドレス空間402_8に格納する。
次に、ストレージコントローラ109は、ホストデータD7〜D12とパリティPからストライプライン403_2を作成する。ストライプライン403_2に対して、ストレージコントローラ109は、ホストデータD7〜D12から新パリティNPを作成し、フラッシュパッケージアドレス空間それぞれに格納する。
1パリティサイクル404は、パリティ位置が異なる全てのストライプラインで構成される。図13A、13Bに示すように、ストライプラインのパリティ位置は、ストライプライン番号(アドレス)に対して規則的に変化する。つまり、ストライプラインは、パリティ位置に応じて、周期的に配列される。パリティグループにおいて、同一構成のパリティサイクル(ストライプライン群)が、配列される。
例えば、7D+1PのRAIDタイプに対して、1パリティサイクルは8ストライプラインで構成され、6D+1PのRAIDタイプに対して、1パリティサイクルは7ストライプラインで構成される。後述するように、1ページがN(Nは自然数)個のパリティサイクルに対応する。
図14A、14Bは、リビルド中のパリティグルームにおけるデータ状態を示す。リビルド中、パリティグループ内に、再構成済みの新ストライプラインと、再構成前の旧ストライプラインとが、混在する。
図14Aにおいて、ホストデータD1〜D6及び新パリティNPからなるストライプラインは、既に、再構成されている。データD7以降のストライプラインは、再構成前である。メモリアドレス空間402_8に格納されていたホストデータD7は上書きされるため、ストレージコントローラ109は、上書きされる前に退避するために当該データをバッファ405にして格納しておく。これにより、次のストライプ再構成におけるパリティグループからのデータ読み出しを省略する。バッファ405は、例えば、共有メモリ111に構成される。
図14Bに示すように、ストライプライン再構成処理が進み、ホストデータD18まで完了したとき、バッファ405は、ホストデータD19〜D21を格納している。ストライプライン再構成において、ストライプラインにホストデータが格納されていない場合、即ち0データが格納されている場合、データ復元は不要である。S1512において、ストレージコントローラ109は、ストライプラインのパリティが0であるか判定し、パリティが0であれば全データが0であると判定して、S1522へ進むことができる。
図15は、RAID再構成中に、ライトコマンドを受けた場合の処理を示す。ストレージコントローラ109は、ホスト計算機101からライトコマンドを受ける(S1210)。ストレージコントローラ109は、受けたライトコマンドは、以前ライトコマンドを受けたことがあるアドレスへの上書きか判定する(S1212)。
ライトコマンドが上書きの場合(S1212:YES)、ストレージコントローラ109はS1214へ進み、そうでない場合(S1212:NO)、即ち、初めてのライトの場合、ストレージコントローラ109は、S1244へ進む。
ライト対象のデータが格納されるページにプールから実ページが既に割り当たっていなければ、ストレージコントローラ109は、プールから実ページを割り当て(S1244)、ストレージコントローラ109は、データをライトする(S1246)。実ページが割り当たっているパリティグループ内でパリティを生成する(S1248)。
ステップ1214において、ストレージコントローラ109は、ライトコマンド対象箇所が、再構成中のストライプライン内のデータであるか判定する。具体的には、ストレージコントローラ109は、仮想ボリューム情報2000及びページ情報2500を参照して、ライトコマンドの指定アドレスに対応するフラッシュ側プールブロック番号を特定する。
フラッシュ側プールブロック番号に対応するストライプライン再構成状態は、パリティグループ情報2400に示されている。ストライプライン再構成前、具体的には、S1520より前の場合、ストレージコントローラ109は、消失データを復元してから(S1218)、データのライト処理を行う(S1220)。復元前にデータをライトすると、消失データ以外のデータが書き換えられるため、消失データを復元することができなくなるからである。
ライト処理の後、ストレージコントローラ109は、パリティ再計算を行い、パリティを格納する(S1222)。パリティ再計算は、ストライプライン再構成前のストライプライン(旧ストライプライン)に対して実行される。
ストレージコントローラ109は、残りのホストデータとパリティを使って、消失データを復元する。次に、ストレージコントローラ109は、ライトコマンドの対象箇所のデータに、新ライトデータを上書きする。ストレージコントローラ109は、復元したデータ、新ライトデータ、残りのデータから、新パリティを生成する。
例えば、図14Aで、ストレージコントローラ109は、ホストデータD8を復元し、ホストデータD10にライトデータ(ホストデータ)D10´を上書きし、ホストデータD8、D9、D10´、D11、D12、D13、D14から、新パリティP´を生成する。
ライトコマンドに対象領域を含むストライプラインの再構成前ではない場合(S1214:NO)、ストレージコントローラ109は、ストライプラインが再構成中か判定する(S1230の)。具体的には、ストレージコントローラ109は、再構成状態2409が「再構成中」を示すか判定する。
ストライプラインが再構成中の場合(S1230:YES)、ストレージコントローラ109は、予め設定された時間だけ待機し(S1232)、S1230の判定を再実行する。データ復元後、ストライプが再構成され、再構成状態2409の値は、「再構成済み」に変化する。
ライトコマンドの対象領域が再構成済みのストライプラインに含まれる場合、具体的には、再構成状態2409が「再構成済み」を示す場合(S1230:NO)、ストレージコントローラ109は、S1238へ進む。ストレージコントローラ109は、再構成後のストライプラインにおける対象領域にデータをライトし(S1238)、ライトした結果を用いてパリティを更新する(S1240)。
なお、ライトコマンドの対象領域が再構成済みであって、対象領域の旧データがバッファに格納されている場合、ストレージコントローラ109は、バッファの旧データに新データを上書きする。パリティの更新は、対象領域が含まれるストライプラインの再構成において実行される。
他の例は、ライト対象領域が含まれるストライプラインが再構成中の場合、そのストライプライン再構成が完了するまでライトを受け付けずエラーを返す、又は、エラーと共にストライプライン再構成中である情報を返してもよい。ホストは、エラーに応答して、又は、ストライプライン再構成の完了を待って、ライトコマンドを再発行する。
上述のように、ストレージコントローラ109は、少ないドライブ数でパリティグループ(RAID構成)を再構成することで、スペアドライブを使用することなく、ドライブ障害による消失データを復元することができる。データ復元後のRAID構成の冗長度を、データ復元前のRAID構成の冗長度と同じにすることで、データ復元後の信頼性の低下を抑制できる。冗長度は、ストライプラインにおいて同時に復元できるストリップ数に一致する。また、データ復元後のRAIDレベル(例えば、RAID1、RAID4、RAID5、RAID6等)を、データ復元前のRAIDレベルと同じにすることで、データ復元後の信頼性の低下を抑制できる。
例えば、ストレージコントローラ109は、7D+1PのRAID構成における一つの記憶ドライブで障害が発生した場合、RAIDタイプを6D+1Pに変更して、消失データを復元する。消失データの復元前後において、冗長度及びRAIDレベルが維持される。本実施例のリビルドは、任意のRAIDタイプに適用でき、例えば、3D+1P構成(RAID5)、7D+1P構成(RAID5)、2D+2D構成(RAID1)、4D+4D構成(RAID1)、6D+2P構成(RAID6)、14D+2P構成(RAID6)に適用できる。
一例において、ストレージコントローラ109は、リビルド(ストライプライン再構成)前後において、整数個のパリティサイクルが1ページに対応するように、RAIDタイプを変更する。これにより、ストライプライン再構成の前後において、1サイクルがページ境界をまたがることがなく、1ページとパリティサイクルをアラインする。これにより、1サイクルがページ境界をまたがることによる、アクセス経路に依存したオーバヘッドの増加や、障害が起こった場合の性能低下を回避できる。
例えば、7D+1P構成において、8ストライプライン(56ホストストリップ)が1パリティサイクルを構成し、6D+1P構成において、7ストライプライン(42ホストストリップ)が1パリティサイクルを構成する。1ページが、例えば、168のホストストリップで構成される場合、双方のRAIDタイプにおいて、サイクルとページの境界が一致する。168は、56と42の最小公倍数である。
1ページが168ホストストリップで構成される場合、3D+1P構成と2D+1P構成の双方のRAIDタイプにおいて、サイクルとページの境界が一致する。ストレージコントローラは、通常状態において、ユーザ選択に応じて7D+1P又は3D+1Pのパリティグループを構成し、ドライブ障害に対して、パリティグループの構成を6D+1P又は2D+1Pに変更する。
同様に、ストレージコントローラ109は、ドライブ障害に対して、6D+2P構成を、例えば、4D+2P構成に変更することができ、14D+2P構成を、例えば、12D+2P構成に変更することができる。変更後の1台の記憶ドライブは、スペアドライブとして使用される。
一例において、6D+2P構成において、8ストライプライン(48ホストストリップ)が1パリティサイクルを構成し、4D+2P構成において、6ストライプライン(24ホストストリップ)が1パリティサイクルを構成する。1ページが、例えば、48のホストストリップで構成される場合、双方のRAIDタイプにおいて、サイクルとページの境界が一致する。
以上のように、ドライブ障害に対する特定のRAIDタイプ間の変更及び特定のページサイズによって、容量仮想化機能で制御するページ構造を維持し、既存容量仮想化機能をそのまま継続使用できる。なお、ユーザの指定によって、ストライプライン再構成後の冗長度及び/又はRAIDレベルは、ストライプライン再構成前から変化可能としてもよい。
(6)状態遷移
図16は、ストライプライン再構成における状態遷移図を示す。図16は、通常稼動中のRAIDタイプが7D+1Pである例を示す。通常状態510は、7D+1Pにおいて通常稼動している状態である。ストレージ装置104は、1台のドライブ故障(512)により、通常状態510から、1台目故障中状態520に遷移する。1台目故障中状態520において、ストライプライン(RAID構成)は、7D+1Pから6D+1Pへ再構成中(過渡中)である。
図16は、ストライプライン再構成における状態遷移図を示す。図16は、通常稼動中のRAIDタイプが7D+1Pである例を示す。通常状態510は、7D+1Pにおいて通常稼動している状態である。ストレージ装置104は、1台のドライブ故障(512)により、通常状態510から、1台目故障中状態520に遷移する。1台目故障中状態520において、ストライプライン(RAID構成)は、7D+1Pから6D+1Pへ再構成中(過渡中)である。
ストレージ装置104は、1台目故障中状態520から、ストライプライン再構成(リビルド524)が終了した後、ストライプライン再構成状態530に遷移する。ストレージ装置104は、さらに1台のドライブ故障(534)により、ストライプライン再構成状態530から2台目故障中状態540に遷移する。ストレージ装置104は、この状態で稼動しつつ、ドライブ交換(542)を待つ。2台目故障中状態540から更なるドライブ障害(544)があった場合、ストレージ装置104は、データ復元不可能な状態550に遷移する。
ストライプライン再構成状態530においてドライブ交換(532)された場合、ストレージ装置104は通常状態510に戻る。1台目故障中状態520でドライブ交換(522)された場合、ストレージ装置104は通常状態510に戻る。1台目故障中(7D+1P−1)520状態において、さらにドライブ障害(526)が発生すると、ストレージ装置104は、データ復元できない状態550となる。
図16において、ストライプライン再構成状態530が、通常稼動中の状態であるとする。1台のドライブの増設により、ストレージ装置104は、7D+1Pの状態510に遷移できる。即ち、記憶ドライブを1台ずつ増設することが可能である。
障害ドライブが新しいドライブに交換されると、ストレージ装置104は、元のRAIDタイプの構成に戻る。ストレージ装置104は、ストライプラインを再構成し、データを格納し直す。この処理は、図12を参照して説明した処理と略同様であり、図12の処理におけるデータ復元処理が省略される。
(7)空き容量管理
ストレージ装置104はスペアドライブを持たないため、パリティグループ内でドライブ障害時のリビルドに必要な空き領域を確保できるように、記憶領域の空き容量を管理する。図17A〜17Dは、パリティグループにおける空き領域の例を示す。
ストレージ装置104はスペアドライブを持たないため、パリティグループ内でドライブ障害時のリビルドに必要な空き領域を確保できるように、記憶領域の空き容量を管理する。図17A〜17Dは、パリティグループにおける空き領域の例を示す。
図17A、17Bは、障害発生前のパリティグループの状態を示す。パリティグループは、4台の記憶ドライブ612で構成されている。スペアドライブは用意されていない。ボリューム(又はパーティション)603_1、603_2が形成されている。図17Aにおいて、各ボリュームにおいて空き領域604が確保されている。図17Bにおいて、空きボリュームが空き領域604として確保されている。
図17Cは、図17Bの構成において、一つの記憶ドライブで障害が発生したことを示す。図17Dは、リビルド後のパリティグループの状態を示す。障害ドライブを除いた3台お記憶ドライブ(新たしいパリティグループ)において、新たなボリューム605_1、605_2が作成されている。
スペアドライブを不要とするためには、リビルドのための空き領域を常に確保する必要がある。この確保すべき空き領域の容量は、例えば、使用可能な容量に対して予め設定した割合である。この容量は仮想容量ではなく、実容量である。
ストレージ装置104が仮想ボリューム(TPVOL)を提供する場合、ストレージ装置104は、プールの空き容量を監視する。ストレージ装置104は、プール及びリビルドのために必要な空き容量を維持できるように、パリティグループの容量を管理する。
図18は、空き容量監視処理のフローチャートを示す。本例において、ストレージコントローラ109が空き容量監視処理を実行するが、ストレージコントローラ109に代わり、管理装置102が空き容量を管理してもよい。
空き容量監視処理は、例えば、予め設定した時間間隔で実行される、又は、仮想ボリュームへの新たな実ページの割り当ての時に実行される。プール空き容量が不足していると判定した場合、ストレージコントローラ109は、新たな空き容量を確保する。
まず、コントローラ109は、プール空き容量が閾値1より少ないか否か判定する(S1310)。閾値1は予め設定されており、容量仮想化機能に必要な空き容量の最小値とリビルドに必要な空き容量の最小値の合計値を示す。コントローラ109は、プールのプール情報2300の空き容量2304を参照して、プール空き容量を決定する。
プール空き容量が閾値1より少ない場合(S1310:YES)、ストレージコントローラ109は、プール空き容量が閾値1に対して不足する量のガベージが、パリティグループ内にあるか否か判定する(S1312)。ストレージコントローラ109は、パリティグループ情報2400のガベージ量2405を参照する。
プール空き容量が閾値1に対して不足する量のガベージ量が無い場合(S1312:YES)、ストレージコントローラ109は、記憶容量そのものが不足していることをシステム管理者及びユーザに知らせる(S1314)。ストレージコントローラ109は、例えばエラーメッセージを管理装置102に出力する。
プール空き容量が閾値1に対して不足する量のガベージ量が存在する場合(S1312:NO)、ストレージコントローラ109は、ガベージコレクション処理を行う(S1316)。具体的には、ストレージコントローラ109は、フラッシュパッケージ113にガベージコレクションを指示する。
フラッシュパッケージ113は、データを新しく空き領域へ書き込む追記処理を実行する。このため、前回データが書き込まれた領域は、データを書き込めないガベージとして蓄積していく。フラッシュパッケージ113は、ガベージを空き領域へ変換するための消去処理を行い、その後、ガベージだった容量をプール空き容量に加算する(S1318)。
ストレージコントローラ109は、パリティグループのガベージ量及びアクセス頻度に基づいて、ガベージコレクション処理を制御する。プール空き容量が十分確保されているが、ガベージ量が閾値2(予め設定した値)より多い場合(S1320:YES)、ストレージコントローラ109は、ガベージコレクション処理を行う(S1316)。
ガベージ量が閾値2以下であるが(S1320:NO)、パリティグループへのアクセス頻度が閾値3より低い場合(S1322:YES)、ストレージコントローラ109は、ガベージコレクション処理を行う(S1316)。ストレージコントローラ109は、不図示の管理情報において、パリティグループへのアクセス頻度を管理する。ストレージコントローラは、所定時間の経過を待ち(S1324)、本処理を再開する。
なお、S1320及びS1322は省略してもよい。その場合、S1310の判定結果が「NO」である場合、本フローチャートの処理は終了する。空き容量は、管理装置102によって監視されてもよい。空き容量が少ないと判定した場合、管理装置102は、ストレージコントローラ109へ、空き領域を確保するための処理を指示する、又は、空き領域が少ないことを通知する。
フラッシュパッケージ113は、容量仮想化機能や圧縮機能を有してもよい。ストレージコントローラ109が認識するフラッシュパッケージアドレス空間の容量は、フラッシュパッケージ内の実容量より大きい、つまり仮想的な値となり得る。各フラッシュパッケージ内の実容量を監視する必要がある。一つの方法は、ストレージコントローラ109がフラッシュパッケージ113から実容量の情報を取得する。これにより、実際使用している物理的な容量及び空き容量を管理できる。
リビルドに必要な容量(スペアドライブ容量)は、運用開始時から確保しておく必要がある。オペレータは、初期設定時、実際の搭載容量からリビルド用の容量を除外した容量を元に、容量仮想化機能を持つ仮想ボリュームのサイズを定義する。
図19A、19Bは、14D+2P(RAID6)構成のパリティグループの状態遷移の例を示す。図19Aは、ドライブ故障による状態遷移を示し、図19Bはドライブ交換による状態遷移を示す。状態710、750、及び790は、要求された冗長度を有する。
図19Aにおいて、状態710は、14D+2P構成において運用している状態である。1台の記憶ドライブが故障すると、ストレージ装置104は、状態720に遷移する。さらに、記憶ドライブの故障数が増加すると、ストレージ装置104は、状態730、740へ遷移する。3台の記憶ドライブが故障した状態740において、復旧(運用継続)は不可能である。
1台の記憶ドライブが故障した状態720において、ストレージ装置104がストライプライン再構成(リビルド)を実行し、状態750に遷移する。パリティグループは、12D+1P構成を有する。1台の記憶ドライブはスペアドライブとして使用される。
12D+1P構成において運用中の状態750において、さらに1台の記憶ドライブが故障すると、ストレージ装置104は、状態760に遷移する。さらに記憶ドライブの故障数が増加すると、ストレージ装置104は、状態770、780へ遷移する。12D+1P構成において3台(トータル4台)の記憶ドライブが故障している状態780において、復旧(運用継続)は不可能である。
14D+2P構成において運用中に、2台の記憶ドライブが故障している状態730において、ストレージ装置104がストライプライン再構成(リビルド)を実行し、状態790に遷移する。パリティグループは、12D+1P構成を有し、スペアドライブは用意されていない。
状態790においてさらに1台の記憶ドライブが故障すると、ストレージ装置104は、状態800に遷移する。さらに記憶ドライブの故障数が増加すると、ストレージ装置104は、状態810、820へ遷移する。12D+1P構成において3台(トータル5台)の記憶ドライブが故障した状態820において、復旧(運用継続)は不可能である。
12D+2P構成において運用中に、1台(トータル2台)の記憶ドライブが故障している状態760において、ストレージ装置104が、故障記憶ドライブの消失データをスペアドライブに復元し(コレクション)、ストレージ装置104は、状態790に遷移する。
12D+2P構成において運用中に、2台(トータル3台)の記憶ドライブが故障している状態770において、ストレージ装置104が1台の記憶ドライブの消失データをスペアドライブに復元し(コレクション)、ストレージ装置104は、状態800に遷移する。
以上のように、ストライプライン再構成の前後において、同一のドライブ故障数に対応することができる。図19Bは、ドライブ交換による状態遷移を示す。復旧不可能な状態740、780、820以外の状態から、特定数の故障ドライブを正常ドライブに交換することで、要求されている冗長度の状態710、750又は790に、ストレージ装置104は遷移することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
Claims (8)
- 計算機システムであって、
メモリと、
前記メモリに格納されているプログラムに従って動作するプロセッサと、を含み、
前記プロセッサは、
第1RAIDタイプの第1RAIDグループにおける記憶ドライブの故障を検出し、
前記第1RAIDグループにおいて、前記記憶ドライブの故障により消失したホストデータを含むストライプラインそれぞれにおいて、前記ホストデータを復元し、
前記第1RAIDグループにおけるストライプラインのホストデータから、第2RAIDタイプのストライプラインのデータを形成し、前記第2RAIDタイプのストリップ数は前記第1RAIDタイプのストリップ数より少なく、
前記故障した記憶ドライブを除く前記第1RAIDグループに含まれる記憶ドライブにより前記第2RAIDタイプの第2RAIDグループを構成し、
前記第2RAIDタイプのストライプラインのデータを、前記第2RAIDグループに格納する、計算機システム。 - 請求項1に記載の計算機システムであって、
前記第1RAIDタイプと前記第2RAIDタイプの冗長度は同一である、計算機システム。 - 請求項2に記載の計算機システムであって、
前記第1RAIDタイプと前記第2RAIDタイプのRAIDレベルは同一である、計算機システム。 - 請求項1に記載の計算機システムであって、
前記プロセッサは、ページ単位で、前記第1RAIDグループ及び前記第2RAIDグループから記憶領域を仮想ボリュームに割り当て、
前記ページの境界は、前記第1RAIDタイプ及び前記第2RAIDタイプのパリティサイクル境界と一致する、計算機システム。 - 請求項1に記載の計算機システムであって、
前記プロセッサは、
前記第1RAIDグループにおけるストライプラインから第1ストライプラインのデータを読み出し、
前記第1ストライプラインのデータが消失ホストデータを含む場合、前記消失ホストデータを復元し、
前記第1ストライプラインの直前のストライプラインの一部のホストデータがバッファに格納されている場合、前記一部のホストデータと、前記第1ストライプラインの一部のホストデータとから、前記第1ストライプラインの直前のストライプラインの一部のホストデータが前記バッファに格納されていない場合、前記第1ストライプラインの一部のホストデータから、前記第2RAIDタイプの第2ストライプラインのデータを形成し、
前記第1ストライプラインにおいて前記第2ストライプラインのデータの形成に使用されないホストデータを前記バッファに格納し、
前記第2ストライプラインのデータを前記第1RAIDタイプのデータ格納領域に上書きする、
ことを繰り返す、計算機システム。 - 請求項5に記載の計算機システムであって、
前記プロセッサは、
前記第1ストライプラインを読み出してから、前記第2ストライプラインのデータを格納する前に、前記第1ストライプラインに対するライトコマンドを、前記第2ストライプラインのデータの格納後に実行する、計算機システム。 - 請求項1に記載の計算機システムであって、
前記プロセッサは、
ページ単位で、プールから記憶領域を仮想ボリュームに割り当て、
前記第1RAIDグループの記憶領域と前記プールとの間のマッピングを管理し、
前記プールの空き容量に基づいて、前記第1RAIDグループにおけるガベージコレクションを制御する、計算機システム。 - 故障した記憶ドライブの消失データを復元する方法であって、
第1RAIDタイプの第1RAIDグループにおける記憶ドライブでの障害を検出し、
前記第1RAIDグループにおいて、前記記憶ドライブの故障により消失したホストデータを含むストライプラインそれぞれにおいて、前記ホストデータを復元し、
前記第1RAIDグループにおけるストライプラインのホストデータから、第2RAIDタイプのストライプラインのデータを形成し、前記第2RAIDタイプのストリップ数は前記第1RAIDタイプのストリップ数より少なく、
前記故障した記憶ドライブを除く前記第1RAIDグループに含まれる記憶ドライブにより前記第2RAIDタイプの第2RAIDグループを構成し、
前記第2RAIDタイプのストライプラインのデータを、前記第2RAIDグループに格納する、方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/002595 WO2018138813A1 (ja) | 2017-01-25 | 2017-01-25 | 計算機システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2018138813A1 true JPWO2018138813A1 (ja) | 2019-06-27 |
Family
ID=62978167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018563998A Ceased JPWO2018138813A1 (ja) | 2017-01-25 | 2017-01-25 | 計算機システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190196911A1 (ja) |
JP (1) | JPWO2018138813A1 (ja) |
WO (1) | WO2018138813A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020019267A1 (zh) * | 2018-07-26 | 2020-01-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
US20200334142A1 (en) * | 2019-04-18 | 2020-10-22 | EMC IP Holding Company LLC | Quasi-compacting garbage collector for data storage system |
CN111857541B (zh) * | 2019-04-25 | 2024-07-05 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
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 |
CN114253460A (zh) * | 2020-09-23 | 2022-03-29 | 伊姆西Ip控股有限责任公司 | 管理存储池的方法、设备和计算机程序产品 |
JP2023100301A (ja) * | 2022-01-06 | 2023-07-19 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008009767A (ja) * | 2006-06-29 | 2008-01-17 | Hitachi Ltd | データ処理システム及びその方法並びにストレージ装置 |
JP2010257254A (ja) * | 2009-04-24 | 2010-11-11 | Hitachi Computer Peripherals Co Ltd | 磁気ディスク装置 |
JP6142576B2 (ja) * | 2013-03-04 | 2017-06-07 | 日本電気株式会社 | ストレージ制御装置、ストレージ装置およびストレージ制御方法 |
JP6536083B2 (ja) * | 2015-02-26 | 2019-07-03 | 富士通株式会社 | ストレージ装置、ストレージシステム、及びリカバリプログラム |
JP2016189140A (ja) * | 2015-03-30 | 2016-11-04 | 日本電気株式会社 | 管理装置、ストレージ復旧システム、ストレージ復旧方法、及び管理プログラム |
-
2017
- 2017-01-25 US US16/326,788 patent/US20190196911A1/en not_active Abandoned
- 2017-01-25 JP JP2018563998A patent/JPWO2018138813A1/ja not_active Ceased
- 2017-01-25 WO PCT/JP2017/002595 patent/WO2018138813A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20190196911A1 (en) | 2019-06-27 |
WO2018138813A1 (ja) | 2018-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8650360B2 (en) | Storage system | |
WO2018138813A1 (ja) | 計算機システム | |
US8984221B2 (en) | Method for assigning storage area and computer system using the same | |
JP4874368B2 (ja) | フラッシュメモリを用いたストレージシステムの管理方法及び計算機 | |
JP5112003B2 (ja) | ストレージ装置及びこれを用いたデータ格納方法 | |
US8443160B2 (en) | Computer system and data migration method | |
CN111158587B (zh) | 基于存储池虚拟化管理的分布式存储系统及数据读写方法 | |
WO2009130848A1 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
CN110383251B (zh) | 存储系统、计算机可读记录介质、系统的控制方法 | |
EP1798636A2 (en) | Storage system and capacity allocation method therefor | |
WO2010092576A1 (en) | Virtualized storage system and method of operating it | |
US20110246731A1 (en) | Backup system and backup method | |
US20210303178A1 (en) | Distributed storage system and storage control method | |
JP2002049511A (ja) | アドレスの割付変更方法及びこれを用いた外部記憶サブシステム | |
US10713117B2 (en) | Storage system and method for controlling storage system | |
WO2011027388A1 (en) | Storage system and control method | |
JP6636159B2 (ja) | ストレージ装置 | |
WO2018142622A1 (ja) | 計算機 | |
CN114415968A (zh) | 存储系统及其数据写入方法 | |
US11544005B2 (en) | Storage system and processing method | |
US11467904B2 (en) | Storage system and control method of the same | |
US20210026566A1 (en) | Storage control system and method | |
JP5222388B2 (ja) | フラッシュメモリを用いたストレージシステムの管理システム及び管理方法 | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190219 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190219 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20190723 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20191126 |