説明

ストレージ装置および制御装置

【課題】処理の競合を抑制すること。
【解決手段】データが冗長に記憶される複数の第1の記憶媒体4a、4bと、第1の記憶媒体4a、4bに通信回線で接続され、第1の記憶媒体4a、4bへの情報の書き込みを制御する制御装置3、とを備えるストレージ装置1において、制御装置3は、複数の第1の記憶媒体4a、4bそれぞれに対しフォーマット処理を施すフォーマット処理部3aと、複数の第1の記憶媒体4a、4bに発生する障害を検出する検出部3bと、検出部3bの障害の検出に応じてフォーマット処理部3aにフォーマット処理を停止させ、障害が発生した第1の記憶媒体4bに記憶されているデータを、第1の記憶媒体4a、4b以外の第2の記憶媒体4cに再構築させる制御部3cと、制御部3cの指示に応じて第1の記憶媒体4aに記憶されているデータを、第2の記憶媒体4cに再構築する再構築処理部3dと、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージ装置および制御装置に関する。
【背景技術】
【0002】
HDD(Hard Disk Drive)等の記憶媒体の全ての記憶領域にアクセスする最初の処理として、記憶媒体のフォーマット処理が行われることが知られている。フォーマット処理は、全ての記憶媒体にアクセスするため、記憶媒体への書き込み異常等を最初に検出する可能性が高い。
【0003】
また、フォーマット処理中に記憶媒体への書き込み異常が発生すると、他の記憶媒体にデータを再構築する処理(リビルド処理)が行われることが知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−29933号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
フォーマット処理とリビルド処理とが競合すると、CPUの負荷が大きくなり、フォーマット処理の完了が遅延するという問題があった。
本発明はこのような点に鑑みてなされたものであり、処理の競合を抑制するストレージ装置および制御装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、開示のストレージ装置が提供される。このストレージ装置は、データが冗長に記憶される複数の第1の記憶媒体と、第1の記憶媒体と通信回線を介して接続され、第1の記憶媒体への情報の書き込みを制御する制御装置とを備えている。また、制御装置は、フォーマット処理部と、検出部と、制御部と、再構築処理部とを有している。
【0007】
フォーマット処理部は、複数の第1の記憶媒体それぞれに対しフォーマット処理を施す。
検出部は、複数の第1の記憶媒体に発生する障害を検出する。
【0008】
制御部は、検出部の障害の検出に応じてフォーマット処理部にフォーマット処理を停止させ、障害が発生した第1の記憶媒体に記憶されているデータを、第1の記憶媒体以外の第2の記憶媒体に再構築させる。
【0009】
再構築処理部は、制御部の指示に応じて第1の記憶媒体に記憶されているデータを、第2の記憶媒体に再構築する。
【発明の効果】
【0010】
再構築処理とフォーマット処理の競合による遅延を抑制することができる。
【図面の簡単な説明】
【0011】
【図1】第1の実施の形態のストレージ装置を示す図である。
【図2】第2の実施の形態のストレージシステムを示すブロック図である。
【図3】第2の実施の形態の制御モジュールの機能を示すブロック図である。
【図4】書き込み管理テーブルの一例を示す図である。
【図5】制御モジュールが実行するクイックフォーマット処理を説明する図である。
【図6】制御モジュールが実行するクイックフォーマット処理を説明する図である。
【図7】スケジュール制御部の処理を示すフローチャートである。
【図8】スケジュール制御部の処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、実施の形態のストレージ装置を、図面を参照して詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態のストレージ装置を示す図である。
【0013】
第1の実施の形態のストレージ装置1は、電気通信回線や、光通信回線等を介してホスト装置2に接続されている。
ストレージ装置1は、制御装置3と、記憶媒体4a、4b、4cを有している。記憶媒体4a、4b、4cは、情報を記憶可能な記憶領域を有する。この記憶媒体4a、4b、4cとしては、例えば、HDDや、SSD(Solid State Drive)等が挙げられる。なお、本実施の形態のストレージ装置1は、3個の記憶媒体4a、4b、4cを有するが、記憶媒体の個数は、2個以下であってもよく、4個以上であってもよい。
【0014】
記憶媒体4a、4bは、第1の記憶媒体の一例である。記憶媒体4a、4bにはデータが冗長に記憶されている。すなわち、記憶媒体4aと記憶媒体4bには同じデータが記憶されている。また、記憶媒体4cは、第2の記憶媒体の一例である。図1では、記憶媒体4cは、ストレージ装置1内に予め用意されているが、障害発生時にストレージ装置1に実装されてもよい。
【0015】
制御装置3は、記憶媒体4a、4b、4cに図示しない通信回線で接続されている。この制御装置3は、ホスト装置2から記憶媒体4a、4b、4cへのデータアクセスを制御する。すなわち、制御装置3は、ホスト装置2から受け付けたデータの、記憶媒体4a、4b、4cへの書き込み、およびホスト装置2から受け付けた、記憶媒体4a、4b、4cに記憶されているデータの読み出しを制御する。
【0016】
この制御装置3は、フォーマット処理部3aと、検出部3bと、制御部3cと、再構築処理部3dと、記憶部3eとを有している。
フォーマット処理部3aは、記憶媒体4a、4bそれぞれに対しフォーマット処理を施す。また、フォーマット処理部3aは、記憶媒体4a、4bそれぞれに対するフォーマット処理の進捗を管理する。
【0017】
フォーマット処理は、例えば、記憶媒体4a、4bにそれぞれ、記憶媒体4a、4bの記憶領域を論理的に分割して作成される記憶領域である論理記憶領域が形成されている場合には、この論理記憶領域単位で行うことができる。
【0018】
検出部3bは、記憶媒体4a、4bに発生する障害を検出する。検出部3bは、例えば、記憶媒体4bの故障等により、記憶媒体4bのデータの読み出しや、記憶媒体4bへのデータの書き込みが1回または複数回失敗した場合に障害が発生したと判断することができる。図1では記憶媒体4bに障害が発生した様子(×印)を示している。
【0019】
制御部3cは、検出部3bの障害の検出に応じてフォーマット処理部3aにフォーマット処理を停止させる。そして、制御部3cは、障害が発生した記憶媒体4bに記憶されているデータを、記憶媒体4cに再構築させる。
【0020】
再構築処理部3dは、制御部3cの指示に応じて記憶媒体4aに記憶されているデータを、記憶媒体4cに再構築する。
制御部3cおよび再構築処理部3dの処理によれば、フォーマット処理と再構築処理が別個に行われる。このため、フォーマット処理と再構築処理の競合を回避することができる。処理の競合を回避することにより、競合による遅延を抑制することができる。従って、例えば再構築処理が長引くことにより、故障が発生していない方の記憶媒体4aにも故障が発生してしまい、記憶されているデータが消失してしまうことを抑制することができる。
【0021】
また、処理の競合を回避することにより、再構築処理を実行するときの処理時間を、処理が競合した場合に比べ、比較的容易に把握することができるため、それぞれの処理時間の見積もりを容易に行うことができる。
【0022】
また、記憶部3eは、フォーマット処理部3aがフォーマット処理を施しているときにフォーマット処理を施している記憶媒体4a、4bへのデータ書き込みの有無を示す管理テーブル3e1を記憶する。管理テーブル3e1には、記憶媒体4a、4bへのデータ書き込みの有無を論理記憶領域単位で行うことができる。
【0023】
制御部3cは、管理テーブル3e1を参照して障害が発生した記憶媒体4bへのデータ書き込みの有無を判断する。そして、データ書き込みが無かった場合、制御部3cは、フォーマット処理を施している論理記憶領域に記憶されているデータの記憶媒体4cへの再構築を省略する。この制御部3cの処理により、当該論理記憶領域が、その後のフォーマット処理によりフォーマットされる論理記憶領域であるにも関わらず、再構築処理が行われ、データが再構築されるという余分な手間を省くことができる。さらに、制御部3cは、障害が発生していない第1の記憶媒体4a、4bの再構築処理を省略した論理記憶領域に対するフォーマット処理を最初からフォーマット処理部3aに開始させるようにしてもよい。この処理により、第1の記憶媒体4a、4bの再構築処理を省略した論理記憶領域に対するフォーマット処理を行うことができる。
【0024】
なお、フォーマット処理部3a、検出部3b、制御部3c、再構築処理部3dおよび記憶部3eは、制御装置3が有するCPU(Central Processing Unit)が備える機能により実現することができる。また、管理テーブル3e1は、制御装置3が有するフラッシュROM(Read Only Memory)等の不揮発性の記憶媒体の一領域により実現することができる。
【0025】
以下、開示のストレージ装置をより具体的に説明する。
<第2の実施の形態>
図2は、第2の実施の形態のストレージシステムを示すブロック図である。
【0026】
ストレージシステム1000は、ホスト装置30と、このホスト装置30にファイバチャネル(FC:Fibre Channel)スイッチ31を介して接続されたストレージ装置100とを有している。なお、図2では1つのホスト装置30がストレージ装置100に接続されているが、複数のホスト装置が、ストレージ装置100に接続されていてもよい。
【0027】
ストレージ装置100は、それぞれが複数のHDD20を備えるドライブエンクロージャ(DE:Drive Enclosure)20aと、このドライブエンクロージャ20aの物理記憶領域をRAID(Redundant Arrays of Inexpensive/Independent Disks)によって管理する制御モジュール(CM:Controller Module)10a、10b、10cとを有している。なお、本実施の形態では、ドライブエンクロージャ20aが備える記憶媒体としては、HDD20を例示したが、HDD20に限らず、SSD等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ20aが備える複数のHDD20を区別しない場合は、「HDD20群」と言う。HDD20群の総容量は、例えば600GB(Giga Byte)〜240TB(Tera Byte)である。
【0028】
ストレージ装置100は、3つの制御モジュール10a、10b、10cを運用に使用することで、冗長性が確保されている。なお、ストレージ装置100が備える制御モジュールの数は、3つに限定されず、2つまたは4つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール10aのみを使用した構成であってもよい。
【0029】
制御モジュール10a、10b、10cは、それぞれ制御装置の一例であり、制御モジュール10a、10b、10cは、それぞれ同じハードウェア構成によって実現される。
制御モジュール10a、10b、10cは、それぞれ、ホスト装置30からのデータアクセス要求に応じてドライブエンクロージャ20aが有するHDD20の物理記憶領域へのデータアクセスをRAIDによって制御する。
【0030】
制御モジュール10a、10b、10cは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール10aのハードウェア構成を説明する。
制御モジュール10aは、CPU101と、RAM(Random Access Memory)102と、フラッシュROM103と、キャッシュメモリ104と、チャネルアダプタ(CA:Channel Adapter)105aと、デバイスインタフェース(DI:Device Interface)106a、106bとを備えている。
【0031】
CPU101は、フラッシュROM103等に記憶されたプログラムを実行することにより、制御モジュール10a全体を統括的に制御する。RAM102は、CPU101に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュROM103は、不揮発性のメモリであり、CPU101により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【0032】
また、フラッシュROM103は、ストレージ装置100の停電時等にキャッシュメモリ104に記憶されているデータの退避先となる。
キャッシュメモリ104は、HDD20群に書き込まれているデータやHDD20群から読み出したデータを一時的に記憶する。
【0033】
そして、制御モジュール10aは、例えばホスト装置30からのデータ読み出し命令を受けたときに、読み出し対象のデータがキャッシュメモリ104に記憶されているか否かを判断する。読み出し対象のデータがキャッシュメモリ104に記憶されていれば、制御モジュール10aは、キャッシュメモリ104に記憶されている読み出し対象のデータをホスト装置30に送る。読み出し対象のデータをHDD20群から読み出す場合に比べ、データを迅速にホスト装置30に送ることができる。
【0034】
また、キャッシュメモリ104には、CPU101による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ104としては、例えば、SRAM等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ104の記憶容量は、特に限定されないが、一例として2〜64GB程度である。
【0035】
チャネルアダプタ105aは、ファイバチャネルスイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト装置30のチャネルに接続される。チャネルアダプタ105は、ホスト装置30と制御モジュール10aとの間でデータを送受信するインタフェース機能を提供する。
【0036】
デバイスアダプタ106a、106bは、ドライブエンクロージャ20aに接続されている。このデバイスアダプタ106a、106bは、ドライブエンクロージャ20aが備えるHDD20群とキャッシュメモリ104との間でデータを送受信するインタフェース機能を提供する。制御モジュール10aは、デバイスアダプタ106a、106bを介してドライブエンクロージャ20aが備えるHDD20群との間でデータの送受信を行う。
【0037】
制御モジュール10a、10b、10cは、ルータ32、33を介して互いに接続されている。例えば、HDD20群に書き込みを要求するデータがホスト装置30からチャネルアダプタ11aを介して制御モジュール10aに送信されると、CPU101は、受信したデータをキャッシュメモリ104に格納する。また、CPU101はデータの格納と共に、受信したデータを、ルータ32、33を介して制御モジュール10bおよび制御モジュール10cに送信する。そして、制御モジュール10b、10cは、制御モジュール10b、10cそれぞれが有するCPUが受信したデータを制御モジュール10b、10cがそれぞれ有するキャッシュメモリに格納する。この処理によって、制御モジュール10a内のキャッシュメモリ104と制御モジュール10b、10c内のキャッシュメモリとに同一のデータが記憶される。
【0038】
ドライブエンクロージャ20aには、ドライブエンクロージャ20aが備える複数のHDD20のうち、1つ、または複数のHDD20により構成されたRAIDグループが形成されている。このRAIDグループは、「論理ボリューム」「仮想ディスク」「RLU(RAID Logical Unit)」等と呼ばれる場合もある。
【0039】
図2では、RAID1を構成する3つのRAIDグループ21、22、23を示している。なお、RAIDグループ21のRAID構成は、一例であり、図示のRAID構成に限定されない。例えば、RAIDグループ21、22、23は、任意の個数のHDD20を有することができる。また、RAIDグループ21、22、23は、RAID5、6等、任意のRAID方式で構成することができる。
【0040】
また、ドライブエンクロージャ20aには、HDD20の障害の発生に備えてHDD24が用意されている。制御モジュール10a、10b、10cは、例えば、HDD20の故障等により、HDD20のデータの読み出しや、HDD20へのデータの書き込みが1回または複数回失敗した場合に障害が発生したと判断する。このHDD24は、ストレージ装置100の運用時には、通電状態で待機している。このHDD24はホットスペアディスクと言われるものである。RAIDグループ21、22、23内のいずれかのHDD20に障害が発生すると、障害が発生したHDD20を管理する制御モジュールが、障害が発生したHDD20に記憶されているデータ(と同じデータ)をHDD24にリビルド(再構築)処理を実行する。障害が発生したHDD20を管理する制御モジュールは、障害が発生したHDD20を、正常なHDD20に交換すると、HDD24に記憶されているデータを、交換した正常なHDD20にコピーバック(書き戻し)処理を実行する。なお、コピーバック処理は、バックグラウンドで行われる。
【0041】
例えば、RAIDグループ21には、RAIDグループ21を構成するHDD20の記憶領域が論理的に分割されている。分割された各記憶領域には、LUN(Logical Unit Number)が設定されている。制御モジュール10aは、設定したLUNを管理するテーブル(以下、「LUN管理テーブル」と言う)を有している。
【0042】
図3は、第2の実施の形態の制御モジュールの機能を示すブロック図である。
制御モジュール10aは、I/O制御部111と、スケジュール制御部112と、クイックフォーマット処理部113と、書き込み管理テーブル格納部114と、リビルド処理部115と、障害検出部116とを有している。
【0043】
I/O制御部111は、ホスト装置30からのI/Oアクセスを制御する。
スケジュール制御部112は、クイックフォーマット処理部113のクイックフォーマット処理中にRAIDグループ21を構成するHDD20の障害が発生したことが制御モジュール10aの障害検出部116から通知されると、設定したLUNへのデータの書き込み状況に応じたリビルド処理の実行をリビルド処理部115に通知する。また、障害が発生したHDD20が正常なHDD20に交換されると、設定したLUNへのデータの書き込み状況に応じたコピーバック処理の実行をリビルド処理部115に通知する。
【0044】
クイックフォーマット処理部113は、RAIDグループ21を構成するHDD20の記憶領域に対し、LUN単位でクイックフォーマット処理を実行する。ここでクイックフォーマット処理は、フォーマット処理の一例である。クイックフォーマット処理は、実際の論理フォーマット処理化を行う前に、ホスト装置30のRAIDグループ21へのアクセスを許可し、ホスト30のアクセスのバックグラウンドで、論理フォーマット処理を実行する。本実施の形態では、クイックフォーマット処理の種別として、ワンポイントフォーマット処理(One Point Format)とシーケンシャルフォーマット処理(Sequential Format)の二種類を定義する。ワンポイントフォーマット処理は、ホスト装置30からI/O制御部111が受信したI/O要求範囲に対して動作する。シーケンシャルフォーマット処理は、ホスト装置30からのI/Oとは非同期にRAIDグループ21を構成するHDD20の記憶領域をシーケンシャルに動作する。
【0045】
また、クイックフォーマット処理部113は、LUN毎にクイックフォーマット処理の進捗を管理するテーブル(以下「進捗テーブル」と言う)を有している。
書き込み管理テーブル格納部114は、クイックフォーマット処理時のHDD20の記憶領域を構成するLUNへの書き込みを管理する書き込み管理テーブルを格納する。なお、書き込み管理テーブル格納部114は、記憶部の一例である。
【0046】
リビルド処理部115は、前述したHDD20の故障時にリビルド処理およびコピーバック処理を実行する。このリビルド処理部115は、設定したLUN毎のリビルド処理を管理するテーブル(以下、「リビルド管理テーブル」と言う)およびコピーバック処理を管理するテーブル(以下、「コピーバック管理テーブル」と言う)を有している。リビルド処理部115は、リビルド処理を実行する際に、リビルド管理テーブルの、リビルド処理が終了したLUNの欄をリビルド完了に設定する。リビルド管理テーブルを参照することで、設定したLUN毎にリビルド処理が完了しているか否かを判断することができる。また、リビルド処理部115は、コピーバック処理を実行する際に、コピーバック管理テーブルの、コピーバック処理が終了したLUNの欄をコピーバック完了に設定する。コピーバック管理テーブルを参照することで、設定したLUN毎にコピーバック処理が完了しているか否かを判断することができる。
【0047】
障害検出部116は、RAIDグループ21を構成するHDD20の障害が発生したことを検出する。
図4は、書き込み管理テーブルの一例を示す図である。
【0048】
図4に示す書き込み管理テーブル114aには、LUNの欄と、QF(Quick Format)の欄が設けられている。縦方向に並べられた情報同士が違いに関連づけられている。
LUNの欄には、RAIDグループ21内に設定されたLUNを識別する情報が設定されている。
【0049】
QFの欄には、LUNそれぞれのクイックフォーマット処理中の、ホスト装置30からのデータの書き込みの有無を識別する情報が設定されている。すなわち「有」は、クイックフォーマット処理部113がクイックフォーマット処理を実行しているLUNに対し、ホスト装置30からデータの書き込みがあったことを示している。他方、「無」は、クイックフォーマット処理部113がクイックフォーマット処理を実行しているLUNに対し、ホスト装置30からデータの書き込みがないことを示している。
【0050】
なお、書き込み管理テーブル114aと同様の情報が記憶される書き込み管理テーブルが、制御モジュール10b、10cにも設けられている。制御モジュール10bに設けられた書き込み管理テーブルは、RAIDグループ22内に設定されたLUNのクイックフォーマット処理の進捗状況を管理している。制御モジュール10cに設けられた書き込み管理テーブルは、RAIDグループ23内に設定されたLUNのクイックフォーマット処理の進捗状況を管理している。
【0051】
次に、制御モジュール10aが実行するクイックフォーマット処理を説明する。
図5および図6は、制御モジュールが実行するクイックフォーマット処理を説明する図である。
【0052】
図5に示すHDD201、202は、RAIDグループ21を構成する複数のHDD20のうちの2つのHDDである。HDD201とHDD202は、ホスト装置30からのI/Oデータを同時に書き込む、いわゆるミラー(Mirror)を形成している。HDD201、202へのクイックフォーマット処理を開始する際には、スケジュール制御部112は、クイックフォーマット処理部113に対し、クイックフォーマット処理の開始を指示する。図5(a)に示すように、クイックフォーマット処理部113は、HDD201、202に対しクイックフォーマット処理を開始する。
【0053】
図5(b)は、クイックフォーマット処理開始後に、クイックフォーマット処理実行対象のHDD202に故障が発生した様子を示している。HDD202に故障が発生した場合、スケジュール制御部112は、リビルド処理の実行をリビルド処理部115に指示する。
【0054】
図5(c)は、リビルド処理部115のリビルド処理を示している。リビルド処理部115は、障害が発生したHDD202と同じデータが記憶されているHDD201に記憶されているデータをHDD24にリビルド処理(修復)する。リビルド処理が終了すると、HDD201とHDD24との間でミラーが形成される。その後、スケジュール制御部112は、クイックフォーマットの再開をクイックフォーマット処理部113に指示する。
【0055】
その後、図6(a)に示すように、障害が発生したHDD202に換えて新たなHDD203が実装されると、スケジュール制御部112は、コピーバック処理の実行をリビルド処理部115に指示する。リビルド処理部115は、HDD24に記憶されているデータを、交換したHDD203にコピーバック処理する。コピーバック処理が終了すると、HDD201とHDD203との間でミラーが形成される。スケジュール制御部112は、図6(b)に示すように、クイックフォーマット処理の再開をクイックフォーマット処理部113に指示する。
【0056】
次に、図5(b)および図5(c)にて示した状況、すなわち、クイックフォーマット処理部113がクイックフォーマット処理を開始した後に、HDD202に障害が発生したときのスケジュール制御部112の処理を、フローチャートを用いて説明する。
【0057】
図7は、スケジュール制御部の処理を示すフローチャートである。
[ステップS1] RAIDグループ21を構成するHDD20の障害が発生したことが制御モジュール10aの障害検出部116から通知されると、スケジュール制御部112は、シーケンシャルフォーマット処理の一時停止指示をクイックフォーマット処理部113に送る。この停止指示により、クイックフォーマット処理部113は、シーケンシャルフォーマット処理を一時的に停止する。また、クイックフォーマット処理部113は、シーケンシャルフォーマット処理を一時的に停止したことを、例えばクイックフォーマット処理部113の図示しない記憶領域に記憶する。但し、クイックフォーマット処理部113は、ワンポイントフォーマット処理を実行しているまたは新たに受け付けた場合、ワンポイントフォーマット処理を実行する。また、クイックフォーマット処理部113がシーケンシャルフォーマット処理を停止した段階では、進捗テーブルは書き換えられない。すなわち、クイックフォーマット処理部113がRAIDグループ21内に設定されたあるLUNのシーケンシャルフォーマット処理を停止しても、進捗テーブルには、そのLUNのシーケンシャルフォーマットがクイックフォーマット中であることを示す情報が設定されている。その後、ステップS2に遷移する。
【0058】
[ステップS2] スケジュール制御部112は、リビルド管理テーブルを参照し、チェック対象のLUNを1つ選択する。その後、ステップS3に遷移する。
[ステップS3] スケジュール制御部112は、進捗テーブルに記憶された、LUN毎のクイックフォーマット処理の進捗を参照し、ステップS2にて選択したLUNが、クイックフォーマット処理中のLUNか否かを判断する。ステップS2にて選択したLUNが、クイックフォーマット処理中のLUNである場合(ステップS3のYes)、ステップS4に遷移する。ステップS2に選択したLUNが、クイックフォーマット処理中のLUNではない場合(ステップS3のNo)、ステップS7に遷移する。
【0059】
[ステップS4] スケジュール制御部112は、書き込み管理テーブル114aを参照し、ステップS2にて選択したLUNにデータの書き込みが行われたか否かを判断する。ステップS2にて選択したLUNにデータの書き込みが行われた場合(ステップS4のYes)、ステップS7に遷移する。ステップS2にて選択したLUNにデータの書き込みが行われていない場合(ステップS4のNo)、ステップS5に遷移する。
【0060】
[ステップS5] スケジュール制御部112は、ステップS2にて選択したLUNの全てのフォーマット処理の停止をクイックフォーマット処理部113に通知する。この通知により、クイックフォーマット処理部113は、ステップS2にて選択したLUNに対しワンポイントフォーマット処理を実行している場合でも、ワンポイントフォーマット処理を停止する。そして、スケジュール制御部112は、ステップS2にて選択したLUNのリビルド処理を即時完了させる指示をリビルド処理部115に通知する。この指示の通知を受けたリビルド処理部115は、リビルド管理テーブルの、ステップS2にて選択したLUNの欄をリビルド完了に設定する。すなわち、ステップS2にて選択したLUNにデータの書き込みが行われていない場合、リビルド処理の実行を省略する。
【0061】
スケジュール制御部112は、リビルド管理テーブルのステップS2にて選択したLUNの欄をリビルド完了に設定した通知をリビルド処理部115から受け取ると、ステップS6に遷移する。
【0062】
[ステップS6] スケジュール制御部112は、進捗テーブルの、ステップS2にて選択したLUNのクイックフォーマット処理の進捗を0(進捗無し)に設定する。その後、ステップS8に遷移する。
【0063】
[ステップS7] スケジュール制御部112は、通常のリビルド処理(ステップS5とは異なるリビルド処理)の実行をリビルド処理部115に通知する。この通知により、リビルド処理部115は、HDD201に記憶されている全てのデータを読み出し、読み出したデータをHDD24に書き込む。その後、ステップS8に遷移する。
【0064】
[ステップS8] スケジュール制御部112は、リビルド管理テーブルのLUN毎のリビルド処理の進捗状況を参照し、RAIDグループ21内に設定されている全てのLUNのリビルド処理が完了したか否かを判断する。RAIDグループ21内に設定されている全てのLUNのリビルド処理が完了している場合(ステップS8のYes)、ステップS9に遷移する。RAIDグループ21内に設定されている全てのLUNのリビルド処理が完了していない場合(ステップS8のNo)、ステップS2に遷移する。なおステップS2では、チェック対象のLUNを選択し、ステップS3以降の処理を引き続き行う。
【0065】
[ステップS9] スケジュール制御部112は、ステップS1にて一時停止したシーケンシャルフォーマット処理の再開を、クイックフォーマット処理部113に指示する。その後、図7に示す処理を終了する。
【0066】
以上で図7の処理の説明を終了する。
次に、図6(a)にて示した状況、すなわち、クイックフォーマット処理部113がクイックフォーマット処理を再開して実行中に、HDD202に換えてHDD203が実装されたときのスケジュール制御部112の処理を、フローチャートを用いて説明する。
【0067】
図8は、スケジュール制御部の処理を示すフローチャートである。
[ステップS11] 障害が発生したHDD202に換えてHDD203が実装されたことが制御モジュール10aのHDD20の交換を検出する部位から通知されると、スケジュール制御部112は、シーケンシャルフォーマット処理の一時停止指示をクイックフォーマット処理部113に送る。この停止指示により、クイックフォーマット処理部113は、シーケンシャルフォーマット処理を一時的に停止する。但し、クイックフォーマット処理部113は、ワンポイントフォーマット処理を実行しているまたは新たに受け付けた場合、ワンポイントフォーマット処理は実行する。また、クイックフォーマット処理部113がシーケンシャルフォーマット処理を停止した段階では、進捗テーブルは、初期化データ等で書き換えられること無く、シーケンシャルフォーマット停止時点の情報が保持される。すなわち、クイックフォーマット処理部113がRAIDグループ21内に設定されたあるLUNのシーケンシャルフォーマット処理を停止しても、進捗テーブルには、そのLUNのシーケンシャルフォーマットがクイックフォーマット中であることを示す情報が設定されている。その後、ステップS12に遷移する。
【0068】
[ステップS12] スケジュール制御部112は、コピーバック管理テーブルを参照し、チェック対象のLUNを1つ選択する。その後、ステップS13に遷移する。
[ステップS13] スケジュール制御部112は、進捗テーブルを参照し、ステップS12にて選択したLUNが、クイックフォーマット処理中のLUNか否かを判断する。ステップS12にて選択したLUNが、クイックフォーマット処理中のLUNである場合(ステップS13のYes)、ステップS14に遷移する。ステップS12にて選択したLUNが、クイックフォーマット処理中のLUNではない場合(ステップS13のNo)、ステップS17に遷移する。
【0069】
[ステップS14] スケジュール制御部112は、書き込み管理テーブル114aを参照し、ステップS12にて選択したLUNにデータの書き込みが行われたか否かを判断する。ステップS12にて選択したLUNにデータの書き込みが行われた場合(ステップS14のYes)、ステップS17に遷移する。ステップS12にて選択したLUNにデータの書き込みが行われていない場合(ステップS14のNo)、ステップS15に遷移する。
【0070】
[ステップS15] スケジュール制御部112は、ステップS12にて選択したLUNの全てのフォーマット処理の停止をクイックフォーマット処理部113に通知する。この通知により、ワンポイントフォーマット処理部113は、ステップS12にて選択したLUNに対しワンポイントフォーマット処理を実行している場合でも、ワンポイントフォーマット処理を停止する。そして、スケジュール制御部112は、ステップS12にて選択したLUNのコピーバック処理を即時完了させる指示をリビルド処理部115に通知する。この指示の通知を受けたリビルド処理部115は、コピーバック管理テーブルの、ステップS12にて選択したLUNの欄をコピーバック完了に設定する。すなわち、ステップS12にて選択したLUNにデータの書き込みが行われていない場合、コピーバック処理の実行を省略する。
【0071】
スケジュール制御部112は、コピーバック管理テーブルのステップS12にて選択したLUNの欄をコピーバック完了に設定した通知をリビルド処理部115から受け取ると、ステップS16に遷移する。
【0072】
[ステップS16] スケジュール制御部112は、進捗テーブルの、ステップS12にて選択したLUNのクイックフォーマット処理の進捗を0(進捗無し)に設定する。その後、ステップS18に遷移する。
【0073】
[ステップS17] スケジュール制御部112は、通常のコピーバック処理(ステップS15とは異なるコピーバック処理)の実行をリビルド処理部115に通知する。この通知により、リビルド処理部115は、HDD24に記憶されている全てのデータを読み出し、読み出したデータをHDD203に書き込む。その後、ステップS18に遷移する。
【0074】
[ステップS18] スケジュール制御部112は、コピーバック管理テーブルを参照し、RAIDグループ21内に設定されている全てのLUNのコピーバック処理が完了したか否かを判断する。RAIDグループ21内に設定されている全てのLUNのコピーバック処理が完了している場合(ステップS18のYes)、ステップS19に遷移する。RAIDグループ21内に設定されている全てのLUNのコピーバック処理が完了していない場合(ステップS18のNo)、ステップS12に遷移する。なおステップS12では、チェック対象のLUNを選択し、ステップS13以降の処理を引き続き行う。
【0075】
[ステップS19] スケジュール制御部112は、ステップS11にて一時停止したシーケンシャルフォーマット処理の再開を、フォーマット処理部113に指示する。その後、図8に示す処理を終了する。
【0076】
以上で図8の処理の説明を終了する。
以上述べたように、制御モジュール10aによれば、スケジュール制御部112が、図7に示す処理を行うことにより、シーケンシャルクイックフォーマット処理を一時停止し、リビルド処理を先に実行させるようにした。図7に示す処理により、リビルド処理とクイックフォーマット処理の競合を回避することができる。また、スケジュール制御部112が、図8に示す処理を行うことにより、シーケンシャルクイックフォーマット処理を一時停止し、コピーバック処理を先に実行させるようにした。図8に示す処理により、コピーバック処理とクイックフォーマット処理の競合を回避することができる。処理の競合を回避することにより、例えばリビルド処理およびコピーバック処理が長引くことにより、ミラーを形成する故障が発生していない方のHDD20にも故障が発生してしまい、記憶されているデータが消失してしまうことを抑制することができる。
【0077】
また、処理の競合を回避することにより、リビルド処理およびコピーバック処理をそれぞれ単独で実行するときの処理時間を、処理が競合した場合に比べ、比較的容易に把握することができるため、それぞれの処理時間の見積もりを容易に行うことができる。
【0078】
また、図7のステップS5にてステップS2にて選択したLUNにデータの書き込みが行われていない場合、リビルド処理を省略するようにした。ステップS5の処理を実行することにより、当該LUNが、その後のクイックフォーマット処理によりフォーマットされるLUNであるにも関わらず、リビルド処理が行われ、データが再構築されるという余分な手間を省くことができる。また、リビルド処理を早期に完了することができる。また、図8のステップS15にてステップS12にて選択したLUNにデータの書き込みが行われていない場合、コピーバック処理を省略するようにした。ステップS15の処理を実行することにより、当該LUNが、その後のクイックフォーマット処理によりフォーマットされるLUNであるにも関わらず、コピーバック処理が行われ、データが書き戻されるという余分な手間を省くことができる。また、コピーバック処理を早期に完了することができる。また、図7および図8に示す処理によれば、RAIDグループ21を構成するHDD20それぞれの一部の記憶領域で構成されるストライプ単位での書き込みの有無を管理するテーブルを持たずに、リビルド処理およびコピーバック処理を省略することができる。
【0079】
また、フォーマット処理とリビルド処理とが競合すると、伝送路およびディスクの負荷が大きくなる場合がある。伝送路およびディスクの負荷が大きくなることも遅延の要因となり得る。制御モジュール10aによれば、スケジュール制御部112が、図7に示す処理を行うことにより、伝送路およびディスクの負荷が大きくなることによる遅延を抑制することができる。
【0080】
以上、本発明のストレージ装置、制御装置および制御プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0081】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置3および制御モジュール10a、10b、10cが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)/RW(ReWritable)等が挙げられる。光磁気記録媒体には、MO(Magneto-Optical disk)等が挙げられる。
【0082】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0083】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0084】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
【0085】
以上の第1〜第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) データが冗長に記憶される複数の第1の記憶媒体と、前記第1の記憶媒体と通信回線を介して接続され、前記第1の記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記複数の第1の記憶媒体それぞれに対しフォーマット処理を施すフォーマット処理部と、
前記複数の第1の記憶媒体に発生する障害を検出する検出部と、
前記検出部の障害の検出に応じて前記フォーマット処理部にフォーマット処理を停止させ、障害が発生した前記第1の記憶媒体に記憶されているデータを、前記第1の記憶媒体以外の第2の記憶媒体に再構築させる制御部と、
前記制御部の指示に応じて前記第1の記憶媒体に記憶されているデータを、前記第2の記憶媒体に再構築する再構築処理部と、
を有することを特徴とするストレージ装置。
【0086】
(付記2) 前記フォーマット処理部は、前記複数の第1の記憶媒体に論理的に設定された論理記憶領域毎に前記フォーマット処理を施し、
前記フォーマット処理部がフォーマット処理を施している前記論理記憶領域毎のデータの書き込みの有無を示すテーブルを管理する管理部をさらに有し、
前記制御部は、前記テーブルを参照して障害が発生した前記第1の記憶媒体の、前記フォーマット処理を施している前記論理記憶領域へのデータ書き込みの有無を判断し、データ書き込みが無かった場合、前記フォーマット処理を施している前記論理記憶領域に記憶されているデータの前記第2の記憶媒体への再構築を省略することを特徴とする付記1記載のストレージ装置。
【0087】
(付記3) 前記制御部は、障害が発生していない前記第1の記憶媒体の再構築処理を省略した前記論理記憶領域に対する前記フォーマット処理を最初から前記フォーマット処理部に開始させることを特徴とする付記2記載のストレージ装置。
【0088】
(付記4) 前記制御部は、前記再構築処理部に前記第2の記憶媒体に再構築されたデータを、障害が発生した前記第1の記憶媒体の代わりに用意された第3の記憶媒体に書き戻させる際に、
前記テーブルを参照してフォーマット処理を施している前記論理記憶領域へのデータ書き込みの有無を判断し、データ書き込みが無かった場合、前記フォーマット処理を施している前記論理記憶領域に記憶されているデータの前記第3の記憶媒体への書き戻しを省略することを特徴とする付記2記載のストレージ装置。
【0089】
(付記5) 前記フォーマット処理部は、ホスト装置からのアクセス要求とは非同期に前記第1の記憶媒体に施すフォーマット処理を一時停止した後に、障害が発生した前記第1の記憶媒体の、前記フォーマット処理を施している前記論理記憶領域へのデータ書き込みの有無を判断することを特徴とする付記2または4記載のストレージ装置。
【0090】
(付記6) データが冗長に記憶される複数の第1の記憶媒体と、前記第1の記憶媒体と通信回線を介して接続され、前記第1の記憶媒体への情報の書き込みを制御する制御装置において、
前記複数の第1の記憶媒体それぞれに対しフォーマット処理を施すフォーマット処理部と、
前記複数の第1の記憶媒体に発生する障害を検出する検出部と、
前記検出部の障害の検出に応じて前記フォーマット処理部にフォーマット処理を停止させ、障害が発生した前記第1の記憶媒体に記憶されているデータを、前記第1の記憶媒体以外の第2の記憶媒体に再構築させる制御部と、
前記制御部の指示に応じて前記第1の記憶媒体に記憶されているデータを、前記第2の記憶媒体に再構築する再構築処理部と、
を有することを特徴とする制御装置。
【符号の説明】
【0091】
1 ストレージ装置
2、30 ホスト装置
3 制御装置
3a フォーマット処理部
3b 検出部
3c 制御部
3d 再構築処理部
3e 記憶部
3e1 管理テーブル
4a、4b、4c 記憶媒体
10a、10b、10c 制御モジュール
20、24、201、202、203 HDD
21、22、23 RAIDグループ

【特許請求の範囲】
【請求項1】
データが冗長に記憶される複数の第1の記憶媒体と、前記第1の記憶媒体と通信回線を介して接続され、前記第1の記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記複数の第1の記憶媒体それぞれに対しフォーマット処理を施すフォーマット処理部と、
前記複数の第1の記憶媒体に発生する障害を検出する検出部と、
前記検出部の障害の検出に応じて前記フォーマット処理部にフォーマット処理を停止させ、障害が発生した前記第1の記憶媒体に記憶されているデータを、前記第1の記憶媒体以外の第2の記憶媒体に再構築させる制御部と、
前記制御部の指示に応じて前記第1の記憶媒体に記憶されているデータを、前記第2の記憶媒体に再構築する再構築処理部と、
を有することを特徴とするストレージ装置。
【請求項2】
前記フォーマット処理部は、前記複数の第1の記憶媒体に論理的に設定された論理記憶領域毎に前記フォーマット処理を施し、
前記フォーマット処理部がフォーマット処理を施している前記論理記憶領域毎のデータの書き込みの有無を示すテーブルを管理する管理部をさらに有し、
前記制御部は、前記テーブルを参照して障害が発生した前記第1の記憶媒体の、前記フォーマット処理を施している前記論理記憶領域へのデータ書き込みの有無を判断し、データ書き込みが無かった場合、前記フォーマット処理を施している前記論理記憶領域に記憶されているデータの前記第2の記憶媒体への再構築を省略することを特徴とする請求項1記載のストレージ装置。
【請求項3】
前記制御部は、前記再構築処理部に前記第2の記憶媒体に再構築されたデータを、障害が発生した前記第1の記憶媒体の代わりに用意された第3の記憶媒体に書き戻させる際に、
前記テーブルを参照してフォーマット処理を施している前記論理記憶領域へのデータ書き込みの有無を判断し、データ書き込みが無かった場合、前記フォーマット処理を施している前記論理記憶領域に記憶されているデータの前記第3の記憶媒体への書き戻しを省略することを特徴とする請求項2記載のストレージ装置。
【請求項4】
データが冗長に記憶される複数の第1の記憶媒体と、前記第1の記憶媒体と通信回線を介して接続され、前記第1の記憶媒体への情報の書き込みを制御する制御装置において、
前記複数の第1の記憶媒体それぞれに対しフォーマット処理を施すフォーマット処理部と、
前記複数の第1の記憶媒体に発生する障害を検出する検出部と、
前記検出部の障害の検出に応じて前記フォーマット処理部にフォーマット処理を停止させ、障害が発生した前記第1の記憶媒体に記憶されているデータを、前記第1の記憶媒体以外の第2の記憶媒体に再構築させる制御部と、
前記制御部の指示に応じて前記第1の記憶媒体に記憶されているデータを、前記第2の記憶媒体に再構築する再構築処理部と、
を有することを特徴とする制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−194867(P2012−194867A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−59229(P2011−59229)
【出願日】平成23年3月17日(2011.3.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】