JP2023110180A - ストレージ装置および制御方法 - Google Patents
ストレージ装置および制御方法 Download PDFInfo
- Publication number
- JP2023110180A JP2023110180A JP2022011461A JP2022011461A JP2023110180A JP 2023110180 A JP2023110180 A JP 2023110180A JP 2022011461 A JP2022011461 A JP 2022011461A JP 2022011461 A JP2022011461 A JP 2022011461A JP 2023110180 A JP2023110180 A JP 2023110180A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage device
- disk
- control unit
- firmware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 163
- 238000012545 processing Methods 0.000 claims abstract description 210
- 238000012423 maintenance Methods 0.000 description 87
- 238000007726 management method Methods 0.000 description 72
- 238000012544 monitoring process Methods 0.000 description 40
- 238000013523 data management Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 20
- 230000004044 response Effects 0.000 description 18
- 230000001629 suppression Effects 0.000 description 15
- 230000015654 memory Effects 0.000 description 12
- 238000013403 standard screening design Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005764 inhibitory process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101000795655 Canis lupus familiaris Thymic stromal cotransporter homolog Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0617—Improving the reliability of storage systems in relation to availability
-
- 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
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Abstract
【課題】記憶装置のファームウェア更新中でもストレージ装置に対するI/O処理を継続する。
【解決手段】制御部2は、記憶装置3aのファームウェアを更新中に記憶装置3aに対する第1のデータの書き込みが要求されると、記憶装置3eに対して第1のデータを書き込むとともに、記憶装置3aにおける第1のデータの書き込み先アドレスを、退避元アドレスとして第1のデータに対応付けて管理情報5に登録する。また、制御部2は、ファームウェアの更新中に記憶装置3aからの第2のデータの読み出しが要求されると、管理情報5に基づき、第2のデータを記憶装置3eから読み出すか、またはRAIDグループ4に含まれる他の記憶装置3b~3dのデータに基づいて第2のデータを取得する。
【選択図】図1
【解決手段】制御部2は、記憶装置3aのファームウェアを更新中に記憶装置3aに対する第1のデータの書き込みが要求されると、記憶装置3eに対して第1のデータを書き込むとともに、記憶装置3aにおける第1のデータの書き込み先アドレスを、退避元アドレスとして第1のデータに対応付けて管理情報5に登録する。また、制御部2は、ファームウェアの更新中に記憶装置3aからの第2のデータの読み出しが要求されると、管理情報5に基づき、第2のデータを記憶装置3eから読み出すか、またはRAIDグループ4に含まれる他の記憶装置3b~3dのデータに基づいて第2のデータを取得する。
【選択図】図1
Description
本発明は、ストレージ装置および制御方法に関する。
ストレージ装置は、例えば、複数台の記憶装置と、各記憶装置に対するI/O(Input/Output)処理を制御する制御装置とを備える。一般的に、制御装置には、I/O処理の制御などの各種の処理を実行するためのファームウェアが搭載されている。また、各記憶装置にも、各記憶装置が動作するためのファームウェアが搭載されている。
ここで、ストレージ装置におけるファームウェアの更新に関して、次のような技術が提案されている。例えば、ストレージ制御装置として動作するブレードのうち、ファームウェアの更新対象ブレードで提供しているサービスをクラスタ内の他のブレードに移動し、サービス非提供状態となったブレードのファームウェアを更新するストレージ装置が提案されている。
また、統計処理プログラムを備えた次のようなストレージ装置も提案されている。このストレージ装置では、統計処理プログラムの更新に伴って定義情報を更新する場合は第1の定義情報が更新され、統計処理プログラムの更新に伴わずに定義情報を更新する場合は第2の定義情報が更新される。そして、更新された第1または第2の定義情報を使用して、ストレージ装置の制御のための統計処理が行われる。
ところで、ストレージ装置内の記憶装置のファームウェアを更新する際には、その記憶装置に対するI/O処理が抑止される。例えば、ファームウェアの更新にかかる時間が、ストレージ装置に対して記憶装置へのアクセスを要求するホスト装置でのタイムアウト時間より短ければ、特に問題を起こすことなく、ホスト装置からストレージ装置に対するI/O処理を継続できる。
しかし、最近では記憶装置のファームウェアの容量が大きくなる傾向にあり、ファームウェアの更新にかかる時間が上記のタイムアウト時間より長くなる場合がある。その場合、ホスト装置からストレージ装置に対するI/O処理が停止してしまう。
1つの側面では、本発明は、記憶装置のファームウェア更新中でもストレージ装置に対するI/O処理を継続可能なストレージ装置および制御方法を提供することを目的とする。
1つの案では、複数の記憶装置に対するアクセスを制御する制御部を有する次のようなストレージ装置が提供される。このストレージ装置において、制御部は、複数の記憶装置のうち、同一のRAIDグループに含まれる2以上の記憶装置の中の第1の記憶装置のファームウェアを更新中に、第1の記憶装置に対する第1のデータの書き込みが要求されると、複数の記憶装置のうち、2以上の記憶装置以外の第2の記憶装置に対して第1のデータを書き込むとともに、第1の記憶装置における第1のデータの書き込み先アドレスを、退避元アドレスとして第1のデータに対応付けて管理情報に登録する第1の書き込み処理を実行する。また、制御部は、ファームウェアの更新中に、第1の記憶装置からの第2のデータの読み出しが要求されると、管理情報を参照し、第1の記憶装置における第2のデータの読み出し元アドレスが管理情報に退避元アドレスとして登録されていた場合、第2のデータを第2の記憶装置から読み出し、第2のデータの読み出し元アドレスが管理情報に退避元アドレスとして登録されていない場合、2以上の記憶装置のうち第1の記憶装置以外の他の記憶装置に記憶されたデータに基づいて第2のデータを取得する第1の読み出し処理を実行する。
また、1つの案では、複数の記憶装置に対するアクセスを制御するコンピュータにおける次のような制御方法が提供される。この制御方法では、コンピュータは、複数の記憶装置のうち、同一のRAIDグループに含まれる2以上の記憶装置の中の第1の記憶装置のファームウェアを更新中に、第1の記憶装置に対する第1のデータの書き込みが要求されると、複数の記憶装置のうち、2以上の記憶装置以外の第2の記憶装置に対して第1のデータを書き込むとともに、第1の記憶装置における第1のデータの書き込み先アドレスを、退避元アドレスとして第1のデータに対応付けて管理情報に登録する第1の書き込み処理を実行する。また、コンピュータは、ファームウェアの更新中に、第1の記憶装置からの第2のデータの読み出しが要求されると、管理情報を参照し、第1の記憶装置における第2のデータの読み出し元アドレスが管理情報に退避元アドレスとして登録されていた場合、第2のデータを第2の記憶装置から読み出し、第2のデータの読み出し元アドレスが管理情報に退避元アドレスとして登録されていない場合、2以上の記憶装置のうち第1の記憶装置以外の他の記憶装置に記憶されたデータに基づいて第2のデータを取得する第1の読み出し処理を実行する。
1つの側面では、記憶装置のファームウェア更新中でもストレージ装置に対するI/O処理を継続できる。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、ストレージ装置1とホスト装置6を含む。また、ストレージ装置1は、制御部2と記憶装置3a,3b,3c,3d,3e,・・・を有する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、ストレージ装置1とホスト装置6を含む。また、ストレージ装置1は、制御部2と記憶装置3a,3b,3c,3d,3e,・・・を有する。
制御部2は、例えばプロセッサである。また、制御部2は、プロセッサを備えるストレージ制御装置であってもよい。制御部2は、ホスト装置6からのI/O要求に応じて、記憶装置3a,3b,3c,3d,3e,・・・に対するアクセスを制御する。
記憶装置3a,3b,3c,3d,3e,・・・のそれぞれは、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置である。記憶装置3a,3b,3c,3d,3e,・・・は、ファームウェアにしたがってデータの読み書きを行う。また、図1の例では、記憶装置3a~3dは、RAID(Redundant Array of Inexpensive Disks)グループ4の構成ディスクとなっている。すなわち、制御部2は、記憶装置3a~3dに対するI/O処理をRAIDによって制御する。
ホスト装置6は、例えば、記憶装置3a,3b,3c,3d,3e,・・・の記憶領域を用いて業務などに関する所定の処理を実行するコンピュータである。
次に、RAIDグループ4に含まれる記憶装置3a~3dのうち、例として記憶装置3aのファームウェアを更新する場合の処理について説明する。記憶装置3aのファームウェアを更新する際、制御部2は、記憶装置3aに対するI/O処理を抑止し、この状態で記憶装置3aに対して更新ファームウェアを適用する。
次に、RAIDグループ4に含まれる記憶装置3a~3dのうち、例として記憶装置3aのファームウェアを更新する場合の処理について説明する。記憶装置3aのファームウェアを更新する際、制御部2は、記憶装置3aに対するI/O処理を抑止し、この状態で記憶装置3aに対して更新ファームウェアを適用する。
また、記憶装置3aのファームウェアを更新中に、ホスト装置6からのI/O要求に応じて、記憶装置3aに対するI/O処理が要求される場合がある。この場合、次のような処理が実行される。
記憶装置3aに対するデータの書き込みが要求された場合、図1の下段に示すように、制御部2は、書き込みが要求されたデータ(書き込みデータ)を、RAIDグループ4に含まれない他の記憶装置3eに書き込む。これとともに、制御部2は、記憶装置3aにおける書き込みデータの書き込み先アドレスを、退避元アドレスとして書き込みデータに対応付けて管理情報5に登録する。管理情報5には、例えば、退避元アドレスと、退避先の記憶装置3eにおける書き込みデータの書き込み先アドレスとが対応付けて登録される。
また、記憶装置3aからのデータの読み出しが要求された場合、制御部2は、管理情報5を参照し、読み出しが要求されたデータ(読み出しデータ)の記憶装置3aにおける読み出し元アドレスが退避元アドレスとして登録されているかを判定する。読み出し元アドレスが退避元アドレスとして登録されていた場合、読み出しデータは記憶装置3eに退避されているので、制御部2は、読み出しデータを退避先である記憶装置3eから読み出す。
一方、読み出し元アドレスが退避元アドレスとして登録されていない場合、制御部2は、RAIDグループ4における記憶装置3a以外の記憶装置3b~3dに記憶されたデータに基づいて、読み出しデータを取得する。例えばRAIDグループ4のRAIDレベルが「1+0」の場合、制御部2は、記憶装置3b~3dのうち、記憶装置3aのデータがミラーリングされている記憶装置から読み出しデータを読み出す。また、例えばRAIDグループ4のRAIDレベルが「5」の場合、制御部2は、記憶装置3b~3dから読み出した分割データおよびパリティを用いて読み出しデータを復元する。
以上のような制御部2の処理によれば、記憶装置3aのファームウェアを更新中でも、ホスト装置6からのI/O要求に応じたストレージ装置1に対するI/O処理を継続できる。このため、記憶装置3aのファームウェアの容量が大きく、その更新時間が長くなった場合でも、ホスト装置6からのI/O要求に対するタイムアウトが発生する事態の発生を回避できる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置10とホスト装置20a,20b,20c,・・・を含む。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置10とホスト装置20a,20b,20c,・・・を含む。
ストレージ装置10は、CE(Controller Enclosure)11a,11bとDE(Drive Enclosure)12a,12bを備える。CE11aには、CM(Controller Module)100a,100bが搭載されている。CE11bには、CM100c,100dが搭載されている。
CM100a~100dは、ネットワーク21を介してホスト装置20a,20b,20c,・・・と接続されている。ネットワーク21は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)である。CM100a~100dは、ホスト装置20a,20b,20c,・・・からの要求に応じて、DE12a,12bに搭載された記憶装置にアクセスするストレージ制御装置である。
DE12a,12bには、CM100a~100dからのアクセス対象となる記憶装置が、それぞれ複数台搭載されている。これらの記憶装置としては、HDDやSSDなどの不揮発性記憶装置が搭載される。以下、これらの不揮発性記憶装置を「ディスクドライブ」と記載する。
ホスト装置20a,20b,20c,・・・は、ストレージ装置10の記憶領域を利用して各種の業務に関する処理を実行するコンピュータである。
なお、以下の説明では、CE11a,11bを特に区別せずに指し示す場合には「CE11」と記載する場合がある。また、ホスト装置20a,20b,20c,・・・を特に区別せずに指し示す場合には「ホスト装置20」と記載する場合がある。さらに、CM100a~100dを特に区別せずに指し示す場合には「CM100」と記載する場合がある。また、DE12a,12bを特に区別せずに指し示す場合には「DE12」と記載する場合がある。
なお、以下の説明では、CE11a,11bを特に区別せずに指し示す場合には「CE11」と記載する場合がある。また、ホスト装置20a,20b,20c,・・・を特に区別せずに指し示す場合には「ホスト装置20」と記載する場合がある。さらに、CM100a~100dを特に区別せずに指し示す場合には「CM100」と記載する場合がある。また、DE12a,12bを特に区別せずに指し示す場合には「DE12」と記載する場合がある。
上記のストレージ装置10においては、ホスト装置20からのアクセス対象となる論理ボリューム(論理記憶領域)が設定される。CM100は、ホスト装置20からの要求に応じて論理ボリュームに対するアクセスを制御する。また、論理ボリュームは、1台以上のディスクドライブの物理記憶領域によって実現される。例えば、論理ボリュームは、RAIDによって管理される複数台のディスクドライブによって実現される。
図3は、CMおよびDEのハードウェア構成例を示す図である。
CM100は、プロセッサ101、RAM(Random Access Memory)102、SSD103、CA(Channel Adapter)104およびDI(Drive Interface)105を備える。
CM100は、プロセッサ101、RAM(Random Access Memory)102、SSD103、CA(Channel Adapter)104およびDI(Drive Interface)105を備える。
プロセッサ101は、CM100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、GPU(Graphics Processing Unit)、PLD(Programmable Logic Device)のいずれかである。また、プロセッサ101は、CPU、MPU、DSP、ASIC、GPU、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、CM100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
SSD103は、CM100の補助記憶装置である。SSD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM100は、補助記憶装置として、SSD103の代わりにHDDを備えていてもよい。
CA104は、ネットワーク21を介してホスト装置20と通信するためのインタフェースである。DI105は、DE12内のディスクドライブと通信するためのインタフェースである。
DE12は、前述のように、CM100からのアクセス対象となるディスクドライブ(DISK)200a,200b,200c,・・・を備える。ディスクドライブ200a,200b,200c,・・・のそれぞれは、HDDのディスク部やSSDのメモリセル部のようなデータ記憶部(図示せず)に加えて、コントローラ201および不揮発性のメモリ202を備える。メモリ202には、ファームウェアや各種のデータが記憶される。コントローラ201は、例えばプロセッサを備える制御回路であり、メモリ202内のファームウェアにしたがってデータ記憶部に対するデータの読み書きを制御する。
図4は、CMが備える処理機能の構成例を示す図である。CM100は、記憶部110、キャッシュ制御部121、RAID制御部122、ディスク制御部123、構成管理部124、保守制御部125およびシステム監視部126を備える。
記憶部110は、RAM102やSSD103など、CM100が備える記憶装置の記憶領域である。記憶部110には、ディスク利用状態管理テーブル111、RAIDグループ管理テーブル112、更新順管理テーブル113、退避データ管理テーブル114およびリビルド管理テーブル115が記憶される。
ディスク利用状態管理テーブル111には、DE12a,12bに搭載されたすべてのディスクドライブに関する情報が登録される。RAIDグループ管理テーブル112には、RAIDグループに関する情報が登録される。
ここで、図5は、ディスク利用状態管理テーブルのデータ構成例を示す図である。ディスク利用状態管理テーブル111には、DE12a,12bに搭載された各ディスクドライブに対応するレコードが登録される。本実施の形態において、ディスクドライブは、搭載されるDE12を示すDE番号と、そのDE12においてディスクドライブが装着されるスロットを示すスロット番号とによって識別される。なお、以下の説明では、DE番号「X」のDE12におけるスロット番号「Y」のスロットに搭載されたディスクドライブを、「DE#X スロット#Yのディスクドライブ」と記載する。
各レコードは、種別、用途、RAIDグループ番号、退避先ディスクおよび退避処理ステータスを含む。
種別の項目には、ディスクドライブの記憶容量と、ディスクドライブがHDDかSSDかを示す情報が登録される。例えば図5では、DE#0 スロット#0のディスクドライブの種別は、600GBの記憶容量を有するSSDであることが登録されている。
種別の項目には、ディスクドライブの記憶容量と、ディスクドライブがHDDかSSDかを示す情報が登録される。例えば図5では、DE#0 スロット#0のディスクドライブの種別は、600GBの記憶容量を有するSSDであることが登録されている。
用途の項目には、ディスクドライブがどのような用途に利用されているかを示す情報が登録される。用途の項目に登録される情報としては、RAIDデータディスク、スペアディスク、ディスクキャッシュ、未利用ディスクがある。RAIDデータディスクは、RAIDグループに含まれるディスクドライブを示す。スペアディスクは、RAIDデータディスクが故障した場合に、それに代わって利用されるディスクドライブであることを示す。ディスクキャッシュは、ディスクドライブがキャッシュ領域の一部として利用されていることを示す。未利用ディスクは、ディスクドライブが何の用途にも利用されていないことを示す。
RAIDグループ番号は、ディスクドライブがRAIDデータディスクである場合に、そのディスクドライブが含まれているRAIDグループの識別番号を示す。
退避先ディスクと退避処理ステータスの各項目は、RAIDデータディスクのファームウェア更新の際に後述する「第1の更新処理」が実行された場合に利用される。退避先ディスクの項目には、書き込みデータの退避先として利用される退避先ディスクが設定された場合に、その退避先ディスクの識別番号が登録される。退避処理ステータスの項目には、退避先ディスクが設定されている場合に、現在の動作状態が「退避中」と「書き戻し中」のどちらであるかを示す情報が登録される。「退避中」は、書き込みデータが退避される状態であることを示し、「書き戻し中」は、退避されたデータが元のディスクドライブに書き戻される状態であることを示す。
退避先ディスクと退避処理ステータスの各項目は、RAIDデータディスクのファームウェア更新の際に後述する「第1の更新処理」が実行された場合に利用される。退避先ディスクの項目には、書き込みデータの退避先として利用される退避先ディスクが設定された場合に、その退避先ディスクの識別番号が登録される。退避処理ステータスの項目には、退避先ディスクが設定されている場合に、現在の動作状態が「退避中」と「書き戻し中」のどちらであるかを示す情報が登録される。「退避中」は、書き込みデータが退避される状態であることを示し、「書き戻し中」は、退避されたデータが元のディスクドライブに書き戻される状態であることを示す。
図6は、RAIDグループ管理テーブルのデータ構成例を示す図である。RAIDグループ管理テーブル112には、設定されている各RAIDグループに対応するレコードが登録される。各レコードには、RAIDグループを識別するRAIDグループ番号と、そのRAIDグループに設定されたRAIDレベルとが登録される。
以下、図4を参照して説明を続ける。
更新順管理テーブル113、退避データ管理テーブル114およびリビルド管理テーブル115は、ディスクドライブのファームウェア更新時において一時的に記憶される管理情報である。
更新順管理テーブル113、退避データ管理テーブル114およびリビルド管理テーブル115は、ディスクドライブのファームウェア更新時において一時的に記憶される管理情報である。
更新順管理テーブル113には、ファームウェア更新対象のディスクドライブ(更新対象ディスク)の識別情報が、ディスク利用状態管理テーブル111に登録された用途別に分類されて登録される。
退避データ管理テーブル114は、後述する「第1の更新処理」が実行される際に参照される管理情報である。退避データ管理テーブル114には、退避先ディスクに書き込まれた各データについての、更新対象ディスクにおける書き込み先アドレスが登録される。
リビルド管理テーブル115は、後述する「第2の更新処理」が実行される際に作成される管理情報である。リビルド管理テーブル115は、更新対象ディスクにおける各単位記憶領域に対応するビットを有するビットマップとして作成され、各ビットに対応する単位記憶領域のデータのリビルドが実行済みか否かを管理する。
キャッシュ制御部121、RAID制御部122、ディスク制御部123、構成管理部124、保守制御部125およびシステム監視部126の処理は、CM100が備えるプロセッサ101が所定のプログラムを実行することで実現される。
キャッシュ制御部121は、ホスト装置20から論理ボリュームに対するI/O要求を受信すると、I/O要求に応じた論理ボリュームに対するI/O処理を、キャッシュ領域を利用して実行する。キャッシュ領域としては、例えば、RAM102に確保される一次キャッシュ、SSD103に確保される二次キャッシュ、DE12内のディスクドライブ(キャッシュディスク)に確保される三次キャッシュがある。
キャッシュ制御部121は、例えば、ある論理ボリュームからのデータの読み出し要求を受信すると、読み出しが要求されたデータ(読み出しデータ)がキャッシュ領域に格納されているかを判定する。読み出しデータがキャッシュ領域に格納されていた場合、キャッシュ制御部121は、読み出しデータをキャッシュ領域から読み出してホスト装置20に送信する。一方、読み出しデータがキャッシュ領域に格納されていない場合、キャッシュ制御部121は、読み出しデータをRAID制御部122を介してDE12から取得する。キャッシュ制御部121は、取得した読み出しデータをホスト装置20に送信するとともに、キャッシュ領域に格納する。
また、キャッシュ制御部121は、ある論理ボリュームに対するデータの書き込み要求を受信すると、書き込みが要求されたデータをキャッシュ領域に格納する。さらに、キャッシュ制御部121は、キャッシュ領域に格納されたデータを、その格納タイミングとは非同期のタイミングで、RAID制御部122を介してDE12のディスクドライブに書き込む(ライトバック)。書き込み先のディスクドライブは、データが書き込まれた論理ボリュームに対応付けられたRAIDグループに含まれるディスクドライブ(RAIDデータディスク)となる。
RAID制御部122は、キャッシュ制御部121からの依頼に応じて、論理ボリュームの物理記憶領域を実現するディスクドライブにアクセスする。RAID制御部122は、このようなディスクドライブに対するアクセスを、RAIDによって制御する。
ディスク制御部123は、ディスクドライブとの間のデータ送受信を制御するディスクドライバである。例えば、RAID制御部122によるディスクドライブへのアクセスは、ディスク制御部123を介して行われる。また、ディスク制御部123は、ディスクドライブごとに単位時間当たりの書き込みデータ量を計測する。
構成管理部124は、管理者が操作する管理者端末(図示せず)からの指示にしたがって、各種の構成に関する設定処理を実行する。例えば、構成管理部124は、RAIDグループの構成に関する情報をディスク利用状態管理テーブル111やRAIDグループ管理テーブル112に登録する。
保守制御部125は、ストレージ装置10の保守に関する処理を実行する。本実施の形態において、保守制御部125は、そのような処理の一例として、各ディスクドライブにおけるファームウェアの更新制御処理を実行する。
システム監視部126は、ストレージ装置10内の各部の動作状態を監視する。例えば、システム監視部126は、DE12内の各ディスクドライブに異常が発生していないかを監視する。
次に、図7を参照して、ディスクドライブのファームウェア更新における問題点について説明する。
図7は、ディスクドライブのファームウェア更新処理の比較例を示すタイムチャートである。この図7では、ディスクドライブ200aのファームウェアを更新する場合の比較例を示す。
図7は、ディスクドライブのファームウェア更新処理の比較例を示すタイムチャートである。この図7では、ディスクドライブ200aのファームウェアを更新する場合の比較例を示す。
この場合、まず、保守制御部125は、ディスクドライブ200aに対するI/O処理を抑止するようにディスク制御部123に指示する(時刻T1)。そして、保守制御部125は、ディスクドライブ200aのファームウェア更新をディスク制御部123に指示する(時刻T2)。ディスク制御部123は、更新指示に応じてディスクドライブ200aに更新ファームウェアを転送し、更新ファームウェアをディスクドライブ200aのメモリ202に書き込む(時刻T3)。これにより、更新ファームウェアがディスクドライブ200aのメモリ202に格納される。
その後、時刻T6で更新ファームウェアの書き込みが完了すると、ディスク制御部123はディスクドライブ200aに再起動を指示する。この指示に応じてディスクドライブ200aが再起動することで、メモリ202に格納された更新ファームウェアが適用される。すなわち、コントローラ201によって更新ファームウェアが実行され、更新ファームウェアにしたがった処理が開始される。
時刻T7で再起動が完了すると、ディスク制御部123は、ファームウェア更新が完了したことを保守制御部125に通知する(時刻T8)。保守制御部125は、ディスクドライブ200aに対するI/O処理の抑止を解除するようにディスク制御部123に指示する(時刻T9)。これにより、ディスクドライブ200aに対するI/O処理が可能な状態に復帰する。
上記の処理では、ディスクドライブ200aに対するI/O処理が抑止された状態で、ディスクドライブ200aのファームウェアが更新される。I/O処理の抑止は、I/O処理を要求するホスト装置20のOSやアプリケーションでタイムアウトと判定されない時間内に解除されればよい。これにより、ホスト装置20によるストレージ装置10の利用に影響を与えないようにファームウェア更新を実行可能となる。
しかしながら、近年、ディスクドライブのファームウェアの容量が増大する傾向にあり、ファームウェアの更新処理時間がタイムアウトと判定される時間より長くなるケースが多くなってきた。例えば図7では、時刻T4でディスクドライブ200aに対するI/O処理が要求されるが、I/O処理が抑止されているのでI/O処理の実行待ち状態となる。ところが、I/O処理の抑止が解除される前の時刻T5において、I/O要求に対するタイムアウトが発生している。
このように、タイムアウトと判定されるまでの間にI/O処理の抑止が解除されなくなると、ホスト装置20がストレージ装置10の異常発生と判定して、各種のトラブル対処処理を実行してしまう。また、タイムアウトを発生させないためには、ファームウェア更新処理中の期間にホスト装置20からのI/O要求を抑止する方法が考えられる。しかし、この方法ではホスト装置20側のシステムが停止され、ホスト装置20を用いた業務が停止されてしまうという問題がある。
そこで、本実施の形態において、保守制御部125は、未利用ディスクまたはスペアディスクを用いてI/O処理を継続しながら、更新対象ディスクのファームウェア更新処理が実行されるように制御する。また、このような制御はRAIDデータディスクに対してのみ必要となる。そこで、保守制御部125は、ディスクドライブの用途に応じて適切なファームウェア更新手順を選択して適用する。
図8は、第2の実施の形態におけるファームウェア更新処理全体の手順を示すフローチャートの例である。DE12a,12bに含まれるディスクドライブのファームウェア更新は、CM100a~100dのうち複数のCMによって分担されて実行されてもよいし、1つのCMだけによって実行されてもよい。前者の場合には、更新対象のディスクドライブがCMごとに割り当てられる。図8では、1つのCMによるファームウェア更新処理の手順を示す。
[ステップS11]保守制御部125は、ファームウェア更新対象のすべてのディスクドライブの情報をディスク利用状態管理テーブル111から取得する。具体的には、各ディスクドライブについての種別、用途、RAIDグループ番号がディスク利用状態管理テーブル111から取得される。
[ステップS12]保守制御部125は、ファームウェア更新対象のディスクドライブを用途ごとに分類し、リスト化する。この処理では、更新順管理テーブル113が作成され、作成された更新順管理テーブル113にディスクドライブの識別情報が用途ごとに分類されて登録される。
ここで、図9は、更新順管理テーブルのデータ構成例を示す図である。図9に示すように、更新順管理テーブル113には、未利用ディスク、ディスクキャッシュ、スペアディスク、RAIDデータディスクの用途ごとに、更新対象ディスクの識別番号が分類されて登録される。また、後述するように、RAIDデータディスクについてはRAIDグループ単位でファームウェア更新が実行されることから、RAIDデータディスクについては更新対象ディスクの識別番号がRAIDグループごとに分類されて登録される。
図9の例では、更新順管理テーブル113の先頭側から、未利用ディスク、ディスクキャッシュ、スペアディスク、RAIDデータディスクの順にファームウェア更新が実行されるように、更新順が決定される。ただし、用途別の更新順序はこの例に限定されるものではない。
以下、図8を参照して説明を続ける。
[ステップS13]更新順管理テーブル113に登録された各未利用ディスクに対するファームウェア更新処理が実行される。
[ステップS13]更新順管理テーブル113に登録された各未利用ディスクに対するファームウェア更新処理が実行される。
[ステップS14]更新順管理テーブル113に登録されたディスクキャッシュの各ディスクドライブに対するファームウェア更新処理が実行される。
[ステップS15]更新順管理テーブル113に登録された各スペアディスクに対するファームウェア更新処理が実行される。
[ステップS15]更新順管理テーブル113に登録された各スペアディスクに対するファームウェア更新処理が実行される。
[ステップS16]更新順管理テーブル113に登録された各RAIDデータディスクに対するファームウェア更新処理が実行される。
図10は、未利用ディスクに対するファームウェア更新処理の手順を示すフローチャートの例である。この図10の処理は、図8のステップS13の処理に対応する。
図10は、未利用ディスクに対するファームウェア更新処理の手順を示すフローチャートの例である。この図10の処理は、図8のステップS13の処理に対応する。
[ステップS21]保守制御部125は、更新順管理テーブル113に登録された未利用ディスクをDE12ごとに分類し、DE12ごとに、DE12に含まれる未利用ディスクについてのファームウェアの更新順を決定する。
この後のステップS22~S26の処理は、DE12ごとに実行される。また、各DE12についてのステップS22~S26の処理は、並行して実行されてもよい。
[ステップS22]保守制御部125は、処理対象のDE12に含まれる未利用ディスクのうち、ファームウェア未更新の未利用ディスクの中から、更新順が最も早い未利用ディスクを選択する。
[ステップS22]保守制御部125は、処理対象のDE12に含まれる未利用ディスクのうち、ファームウェア未更新の未利用ディスクの中から、更新順が最も早い未利用ディスクを選択する。
[ステップS23]保守制御部125は、選択された未利用ディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。ファームウェア更新中はディスクドライブのI/O動作が停止するので、システム監視部126がこのディスクドライブの動作状態を監視し続けると、異常が発生したと誤判定してしまう。ステップS23の処理により、選択された未利用ディスクに対する動作状態の監視が抑止されるので、このような誤判定の発生を防止できる。
[ステップS24]選択された未利用ディスクのファームウェア更新が実行される。この処理では、保守制御部125は、ディスク制御部123を介して更新ファームウェアを該当未利用ディスクに転送し、該当未利用ディスクのメモリ202に書き込む。書き込みが終了すると、ディスク制御部123の指示によって該当未利用ディスクが再起動され、更新ファームウェアが適用される。以上の処理が完了すると、次のステップS25の処理が実行される。
[ステップS25]保守制御部125は、選択された未利用ディスクに対する動作状態の監視の抑止を解除するようにシステム監視部126に依頼する。これにより、システム監視部126による動作状態の監視が再開される。
[ステップS26]保守制御部125は、処理対象のDE12に含まれる未利用ディスクの中に、ファームウェア未更新の未利用ディスクがあるかを判定する。該当する未利用ディスクがある場合、処理がステップS22に進められ、該当する未利用ディスクの中から更新順が最も早い未利用ディスクが選択される。一方、該当する未利用ディスクがない場合、未利用ディスクに対するファームウェア更新処理が終了する。
図11は、ディスクキャッシュのディスクドライブに対するファームウェア更新処理の手順を示すフローチャートの例である。この図11の処理は、図8のステップS14の処理に対応する。
[ステップS31]保守制御部125は、キャッシュ制御部121に対してディスクキャッシュ動作を停止するように依頼する。キャッシュ制御部121は、この依頼に応じてI/O処理時におけるキャッシュ領域の利用を停止し、ライトスルー方式でI/O処理を実行する。
[ステップS32]保守制御部125は、更新順管理テーブル113に登録されたディスクキャッシュのディスクドライブをDE12ごとに分類し、DE12ごとに、DE12に含まれる該当ディスクドライブについてのファームウェアの更新順を決定する。
この後のステップS33~S37の処理は、DE12ごとに実行される。また、各DE12についてのステップS33~S37の処理は、並行して実行されてもよい。
[ステップS33]保守制御部125は、処理対象のDE12に含まれるディスクキャッシュのディスクドライブのうち、ファームウェア未更新のディスクドライブの中から、更新順が最も早いディスクドライブを選択する。
[ステップS33]保守制御部125は、処理対象のDE12に含まれるディスクキャッシュのディスクドライブのうち、ファームウェア未更新のディスクドライブの中から、更新順が最も早いディスクドライブを選択する。
[ステップS34]保守制御部125は、選択されたディスクドライブに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、選択されたディスクドライブに対する動作状態の監視が抑止される。また、保守制御部125は、選択されたディスクドライブに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、選択されたディスクドライブに対するI/O処理が抑止される。
[ステップS35]選択されたディスクドライブのファームウェア更新が実行される。この処理では、保守制御部125は、ディスク制御部123を介して更新ファームウェアを該当ディスクドライブに転送し、該当ディスクドライブのメモリ202に書き込む。書き込みが終了すると、ディスク制御部123の指示によって該当ディスクドライブが再起動され、更新ファームウェアが適用される。以上の処理が完了すると、次のステップS36の処理が実行される。
[ステップS36]保守制御部125は、選択されたディスクドライブに対する動作状態の監視の抑止を解除するようにシステム監視部126に依頼する。これにより、システム監視部126による動作状態の監視が再開される。また、保守制御部125は、選択されたディスクドライブに対するI/O処理の抑止を解除するようにディスク制御部123に依頼する。これにより、選択されたディスクドライブに対するI/O処理が可能な状態に復帰する。
[ステップS37]保守制御部125は、処理対象のDE12に含まれるディスクキャッシュのディスクドライブの中に、ファームウェア未更新のディスクドライブがあるかを判定する。該当するディスクドライブがある場合、処理がステップS33に進められ、該当するディスクドライブの中から更新順が最も早いディスクドライブが選択される。一方、該当するディスクドライブがない場合、処理がステップS38に進められる。
[ステップS38]保守制御部125は、すべてのDE12についてステップS33~S37の処理が実行されるまで、待ち合わせる。そして、すべてのDE12についての処理が完了すると、保守制御部125は、キャッシュ制御部121に対してディスクキャッシュ動作を再開させるように依頼する。キャッシュ制御部121は、この依頼に応じてI/O処理時におけるキャッシュ領域の利用を再開し、ライトバック方式でI/O処理を実行する。
図12は、スペアディスクに対するファームウェア更新処理の手順を示すフローチャートの例である。この図12の処理は、図8のステップS15の処理に対応する。
[ステップS41]保守制御部125は、更新順管理テーブル113に登録されたスペアディスクの中から、ファームウェア未更新のスペアディスクを選択する。
[ステップS41]保守制御部125は、更新順管理テーブル113に登録されたスペアディスクの中から、ファームウェア未更新のスペアディスクを選択する。
[ステップS42]保守制御部125は、選択されたスペアディスクをスペア先とする(スペアとして使用する)RAIDグループを特定し、そのRAIDグループに含まれるRAIDデータディスクが正常状態かを判定する。すべてのRAIDデータディスクが正常状態である場合、処理がステップS43に進められる。一方、異常状態のRAIDデータディスクが1つ以上ある場合には、選択されたスペアディスクがRAIDグループに組み込まれる可能性がある。このため、処理がステップS46に進められ、このスペアディスクについてのファームウェア更新の実行がスキップされる。
[ステップS43]保守制御部125は、選択されたスペアディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、選択されたスペアディスクに対する動作状態の監視が抑止される。また、保守制御部125は、選択されたスペアディスクに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、選択されたスペアディスクに対するI/O処理が抑止される。
[ステップS44]選択されたスペアディスクのファームウェア更新が実行される。この処理では、保守制御部125は、ディスク制御部123を介して更新ファームウェアを該当スペアディスクに転送し、該当スペアディスクのメモリ202に書き込む。書き込みが終了すると、ディスク制御部123の指示によって該当スペアディスクが再起動され、更新ファームウェアが適用される。以上の処理が完了すると、次のステップS45の処理が実行される。
[ステップS45]保守制御部125は、選択されたスペアディスクに対する動作状態の監視の抑止を解除するようにシステム監視部126に依頼する。これにより、システム監視部126による動作状態の監視が再開される。また、保守制御部125は、選択されたスペアディスクに対するI/O処理の抑止を解除するようにディスク制御部123に依頼する。これにより、選択されたスペアディスクに対するI/O処理が可能な状態に復帰する。
[ステップS46]保守制御部125は、更新順管理テーブル113に登録されたスペアディスクの中に、ファームウェア未更新のスペアディスクがあるかを判定する。該当するスペアディスクがある場合、処理がステップS41に進められ、該当するスペアディスクの中からファームウェア未更新のスペアディスクが選択される。一方、該当するスペアディスクがない場合、スペアディスクに対するファームウェア更新処理が終了する。
以上の図10~図12の処理では、ファームウェアの更新対象ディスクの用途に応じて適切な更新処理手順が採用されることで、更新処理の効率を高め、処理に要する時間を短縮できる。例えば、図10の処理と図11の処理とを比較した場合、次のような処理手順の違いがある。ファームウェア更新前の通常状態では、ディスクキャッシュのディスクドライブに対してI/O処理が行われている。このため、図11の更新処理には、ディスクキャッシュのディスクドライブに対するI/O処理を抑止するための処理や抑止を解除するための処理が含まれる。一方、未利用ディスクに対しては通常状態においてI/O処理が行われない。このため、図10の更新処理には、未利用ディスクに対するI/O処理を抑止するための処理や抑止を解除するための処理が含まれない。
また、図12の処理では、更新対象ディスクをスペア先とするRAIDグループに含まれるRAIDデータディスクの中に異常状態のものが存在する場合には、更新対象ディスクにおけるファームウェア更新が実行されない。これにより、既存のRAIDデータディスクが故障したときに、更新対象ディスクをRAIDグループに組み込むことができない事態の発生確率を低減できる。
次に、RAIDデータディスクに対するファームウェア更新処理について説明する。前述のように、RAIDデータディスクに対するファームウェア更新時においては、未利用ディスクまたはスペアディスクを利用してI/O処理が継続されるように制御される。以下の説明では、未利用ディスクが利用されるファームウェア更新処理を「第1の更新処理」と記載し、スペアディスクが利用されるファームウェア更新処理を「第2の更新処理」と記載する。
RAIDデータディスクのファームウェアが更新される場合には、更新対象ディスクにおける直近の単位時間における書き込みデータ量と所定の閾値との比較結果に応じて、第1の更新処理と第2の更新処理とが選択的に実行される。この「書き込みデータ量」とは、新規データの書き込み量と更新データの書き込み量とを含む。本実施の形態では、書き込みデータ量が閾値未満の場合に第1の更新処理が実行され、閾値以上の場合に第2の更新処理が実行される。
また、本実施の形態では、閾値と比較される書き込みデータ量として、「データ書き込み率」が用いられるものとする。データ書き込み率は、更新対象ディスク全体の記憶容量に対する、単位時間における書き込みデータ量の比率を示す。ただし、閾値と比較される書き込みデータ量としては、書き込みデータの絶対量を用いることもできる。また、本実施の形態では、単位時間を1分とする。
ここではまず、図13~図16を参照して、第1の更新処理およびそれに関係する処理について説明する。
図13は、第1の更新処理の開始時の処理を説明するための図である。図13では、DE#0 スロット#0,#1、DE#1 スロット#0,#1の4台のディスクドライブが、RAIDグループ#0に含まれているとする。また、DE#0 スロット#8のディスクドライブが未利用ディスクとなっており、DE#0 スロット#9のディスクドライブが、RAIDグループ#0に対応するスペアディスクとして設定されているとする。
図13は、第1の更新処理の開始時の処理を説明するための図である。図13では、DE#0 スロット#0,#1、DE#1 スロット#0,#1の4台のディスクドライブが、RAIDグループ#0に含まれているとする。また、DE#0 スロット#8のディスクドライブが未利用ディスクとなっており、DE#0 スロット#9のディスクドライブが、RAIDグループ#0に対応するスペアディスクとして設定されているとする。
このような状態から、DE#0 スロット#0のディスクドライブがファームウェアの更新対象ディスクとして選択されたとする。すると、保守制御部125は、更新対象ディスクに対するI/O処理を抑止させる。これとともに、保守制御部125は、ディスク利用状態管理テーブル111のレコードのうち更新対象ディスクに対応するレコードに、退避先ディスクとして未利用ディスクを示すDE#0 スロット#8を登録し、ステータスとして「退避中」を登録する。これにより、DE#0 スロット#8のディスクドライブが書き込みデータの退避先として設定される。さらに、保守制御部125は、退避先ディスクに書き込まれるデータを管理するための退避データ管理テーブル114を作成する。保守制御部125は、以上の処理を実行してから、更新対象ディスクのファームウェア更新を開始する。
図14は、第1の更新処理中における書き込み処理を説明するための図である。ディスク利用状態管理テーブル111において、更新対象ディスクを示すDE#0 スロット#0に対して退避先ディスクが設定され、かつステータスが「退避中」である状態において、RAIDグループ#0へのデータの書き込みが要求されたとする。
この状態では、更新対象ディスクに対するI/O処理が抑止されている。この場合、RAID制御部122は、更新対象ディスクに書き込むべき書き込みデータを退避先ディスクに書き込む。これとともに、RAID制御部122は、元の更新対象ディスクに対する書き込みデータの書き込み先アドレス(退避元アドレス)を、退避先ディスクにおける書き込み先アドレス(退避先アドレス)に対応付けて退避データ管理テーブル114に登録する。
図15は、第1の更新処理中における読み出し処理を説明するための図である。ディスク利用状態管理テーブル111において、更新対象ディスクを示すDE#0 スロット#0に対して退避先ディスクが設定され、かつステータスが「退避中」である状態において、RAIDグループ#0からのデータの読み出しが要求されたとする。そして、この読み出し要求に伴って、RAID制御部122による更新対象ディスクからのデータ読み出しが必要になったとする。この場合、RAID制御部122は、退避データ管理テーブル114を参照し、更新対象ディスクにおける読み出し元アドレスが退避元アドレスとして退避データ管理テーブル114に登録されているかを判定する。
図15(A)は、該当する退避元アドレスが退避データ管理テーブル114に登録されている場合、すなわち、読み出しが要求されたデータが退避先ディスクに格納されている場合の処理を示している。この場合、RAID制御部122は、該当する退避元アドレスに対応付けられた退避先アドレスを退避データ管理テーブル114から取得し、退避先ディスクにおける退避先アドレスからデータを読み出す。
一方、図15(B)は、該当する退避元アドレスが退避データ管理テーブル114に登録されていない場合、すなわち、読み出しが要求されたデータが退避先ディスクに格納されていない場合の処理を示している。この場合、RAID制御部122は、RAIDグループ#0に含まれるディスクドライブのうち、更新対象ディスクを除く残りのディスクドライブに記憶されたデータを利用して、読み出しが要求されたデータを取得する。
図15(B)では、RAIDグループ#0のRAIDレベルが「1+0」であるとする。そして、書き込みデータが分割された分割データがDE#0 スロット#0,#1のディスクドライブに分散して書き込まれるとともに、DE#0 スロット#0のディスクドライブのデータがDE#1 スロット#0のディスクドライブにミラーリングされ、DE#0 スロット#1のディスクドライブのデータがDE#1 スロット#1のディスクドライブにミラーリングされるとする。この場合、読み出しが要求されたデータは、DE#0 スロット#0のディスクドライブ(更新対象ドライブ)の代わりにDE#1 スロット#0のディスクドライブから読み出される。
また、例えば、RAIDグループ#0のRAIDレベルが「5」の場合、読み出しが要求されたデータは、RAIDグループ#0に含まれる残りのディスクドライブから読み出された分割データおよびパリティに基づいて復元される。
以上のように、第1の更新処理が実行された場合には、更新対象ディスクに対するファームウェア更新が実行されている期間でもRAIDグループ#0に対するI/O処理を継続することができる。このため、ファームウェア更新が完了する前にI/O要求に対するタイムアウトが発生することを防止できる。
図16は、第1の更新処理後に実行される書き戻し処理を説明するための図である。更新対象ディスクに対するファームウェア更新が完了すると、保守制御部125は、ファームウェアが更新された退避元ディスク(DE#0 スロット#0のディスクドライブ)に対するI/O処理の抑止を解除する。これとともに、保守制御部125は、ディスク利用状態管理テーブル111においてDE#0 スロット#0に対応付けられたステータスを「書き戻し中」に更新する。そして、保守制御部125は、退避データ管理テーブル114を参照して、退避先ディスクに書き込まれたデータを退避元ディスクに書き戻す。この書き戻しでは、退避データ管理テーブル114から退避元アドレスと退避先アドレスの組が取得され、退避先ディスクの退避先アドレスからデータが読み出され、退避元ディスクの退避元アドレスに書き込まれる。書き込みが完了すると、退避元アドレスと退避先アドレスの組が退避データ管理テーブル114から削除される。
また、書き戻しの実行中でも、RAID制御部122からの退避元ディスクに対するI/O処理が可能となる。例えば、退避元ディスクへの書き込みが発生したとき、書き込みデータが退避元ディスクに書き込まれる。このとき、書き込み先アドレスが退避データ管理テーブル114に退避元アドレスとして登録されていた場合には、その退避元アドレスおよび対応する退避先アドレスが退避データ管理テーブル114から削除される。
また、例えば、退避元ディスクからの読み出しが発生したときには、退避データ管理テーブル114が参照される。読み出し元アドレスが退避データ管理テーブル114に退避元アドレスとして登録されていた場合には、その退避元アドレスに対応付けられた退避先アドレスが取得され、退避先ディスクの退避先アドレスからデータが読み出される。一方、読み出し元アドレスが退避データ管理テーブル114に退避元アドレスとして登録されていない場合には、データが退避元ディスクから読み出される。
このように、書き戻し処理が実行されている間でも、RAID制御部122からの退避元ディスクに対するI/O処理が可能であり、I/O処理に対するタイムアウトが発生することはない。
なお、退避先ディスクに書き込まれたデータの管理に関しては、上記のように退避データ管理テーブル114を用いる代わりに、退避先ディスクに書き込まれたデータに対して退避元アドレスが付加されてもよい。ただし、退避データ管理テーブル114に退避元アドレスと退避先アドレスとを対応付けておくことで、読み出し処理の際に読み出し元アドレスが退避元アドレスとして登録されているかを判定するための検索処理を効率よく実行可能になる。
次に、図17は、第2の更新処理を説明するための図である。図17の上段では上記の図13と同様に、DE#0 スロット#0,#1、DE#1 スロット#0,#1の4台のディスクドライブが、RAIDグループ#0に含まれているとする。また、DE#0 スロット#8のディスクドライブが未利用ディスクとなっており、DE#0 スロット#9のディスクドライブが、RAIDグループ#0に対応するスペアディスクとして設定されているとする。
そして、このような状態から、図13と同様に、DE#0 スロット#0のディスクドライブがファームウェアの更新対象として選択されたとする。すると、図17の中段に示すように、保守制御部125は、更新対象ディスクに対するI/O処理を抑止させる。また、保守制御部125は、更新対象ディスクをRAIDグループ#0から切り離し、スペアディスクであるDE#0 スロット#9のディスクドライブをRAIDグループ#0に組み込むように、RAID制御部122に依頼する。そして、保守制御部125は、更新対象ディスクのファームウェア更新を開始する。
RAID制御部122は、更新対象ディスクが故障した場合と同じ手順で、更新対象ディスクをRAIDグループ#0から切り離し、スペアディスクをRAIDグループ#0に組み込む。このとき、ディスク利用状態管理テーブル111において、DE#0 スロット#0に対応するRAIDグループ番号が一時的に消去されるとともに、DE#0 スロット#9に対応するRAIDグループ番号として「0」が一時的に登録される。また、DE#0 スロット#9に対応する用途がRAIDデータディスクに一時的に変更される。
RAID制御部122は、スペアディスクをRAIDグループ#0に組み込むと、RAIDグループ#0に含まれる残りのディスクドライブのデータを用いて、切り離された更新対象ディスクのデータを復元し、スペアディスクに書き込む。また、RAID制御部122は、このようなリビルド処理を、RAIDグループ#0に対するI/O処理を継続しながら実行する。
更新対象ディスクに対するファームウェア更新が完了すると、図17の下段に示すように、保守制御部125は、組み込まれていたスペアディスクをRAIDグループ#0から切り離し、更新対象ディスクをRAIDグループ#0に再度組み込むように、RAID制御部122に依頼する。そして、保守制御部125は、更新対象ディスクに対するI/O処理の抑止を解除する。
RAID制御部122は、切り離されたスペアディスクに格納されているデータを、組み込まれた更新対象ディスクに書き戻す。RAID制御部122は、このような書き戻し処理を、RAIDグループ#0に対するI/O処理を継続しながら実行する。また、RAID制御部122は、更新対象ディスクのファームウェア更新が実行されている間にスペアディスクにリビルドされたデータだけを、組み込まれた更新対象ディスクに書き戻すこともできる。
以上のように、第2の更新処理が実行された場合には、第1の更新処理の実行時と同様に、更新対象ディスクに対するファームウェア更新が実行されている期間でもRAIDグループ#0に対するI/O処理を継続することができる。このため、ファームウェア更新が完了する前にI/O要求に対するタイムアウトが発生することを防止できる。また、ファームウェア更新後に書き戻し処理が実行されている間でも、RAIDグループ#0に対するI/O処理が継続されるので、I/O処理に対するタイムアウトが発生することはない。
ここで、第1の更新処理と第2の更新処理とを比較すると、第2の更新処理が実行された場合、RAIDグループからの更新対象ディスクの切り離しやRAIDグループへのスペアディスクの組み込みのための設定変更が行われる。さらに、第2の更新処理が実行された場合、切り離された更新対象ディスクのデータをリビルドして組み込まれたスペアディスクに書き込む処理が行われる。このため、第1の更新処理が実行された場合より第2の更新処理が実行された場合の方が処理手順が複雑であり、処理負荷が高い。したがって、可能な限り第1の更新処理が実行される方が、ファームウェア更新に関係する処理全体を効率化できるといえる。
一方で、第1の更新処理が実行された場合、ファームウェア更新処理中における更新対象ディスクへの書き込みデータ量が多いほど、更新終了後に元のディスクドライブに書き戻すべきデータ量も多くなる。このため、ファームウェア更新処理中における更新対象ディスクへの書き込みデータ量が多いほど、第1の更新処理を実行したときの処理効率が低下する。したがって、ファームウェア更新処理中における更新対象ディスクへの書き込みデータ量が少ないと推定される場合に、第1の更新処理を実行することにより、ファームウェア更新に関係する処理全体を効率化できるといえる。
このような理由から、本実施の形態では、直近の単位時間におけるデータ書き込み率が閾値未満の場合には第1の更新処理が実行され、閾値以上の場合には第2の更新処理が実行される。これにより、RAIDデータディスクに対するファームウェア更新処理を効率化することができる。
次に、RAIDデータディスクに対するファームウェア更新処理について、フローチャートを用いて説明する。
図18は、RAIDデータディスクに対するファームウェア更新処理の手順を示すフローチャートの例である。この図18の処理は、図8のステップS16の処理に対応する。
図18は、RAIDデータディスクに対するファームウェア更新処理の手順を示すフローチャートの例である。この図18の処理は、図8のステップS16の処理に対応する。
[ステップS51]保守制御部125は、更新順管理テーブル113においてRAIDグループごとに分類されたRAIDデータディスクについて、RAIDグループごとに、RAIDグループに含まれるRAIDデータディスクのファームウェア更新順を決定する。
この後のステップS52~S56の処理は、RAIDグループごとに実行される。また、各RAIDグループについてのステップS52~S56の処理は、並行して実行されてもよい。
[ステップS52]保守制御部125は、処理対象のRAIDグループに含まれるRAIDデータディスクのうち、ファームウェア未更新のRAIDデータディスクの中から、更新順が最も早いRAIDデータディスクを更新対象ディスクとして選択する。
[ステップS53]保守制御部125は、選択された更新対象ディスクにおける直近1分のデータ書き込み率をシステム監視部126から取得し、取得したデータ書き込み率を所定の閾値と比較する。ここでは例として、閾値を50%とする。データ書き込み率が50%未満の場合、処理がステップS54に進められ、データ書き込み率が50%以上の場合、処理がステップS55に進められる。
[ステップS54]第1の更新処理が実行される。この処理では、更新対象ディスクに対する書き込みデータが退避先ディスクに退避される。
[ステップS55]第2の更新処理が実行される。この処理では、更新対象ディスクがRAIDグループから切り離され、スペアディスクがRAIDグループに組み込まれる。
[ステップS55]第2の更新処理が実行される。この処理では、更新対象ディスクがRAIDグループから切り離され、スペアディスクがRAIDグループに組み込まれる。
[ステップS56]保守制御部125は、処理対象のRAIDグループに含まれるRAIDデータディスクの中に、ファームウェア未更新のRAIDデータディスクがあるかを判定する。該当するRAIDデータディスクがある場合、処理がステップS52に進められ、該当するRAIDデータディスクの中から更新順が最も早いRAIDデータディスクが選択される。一方、該当するRAIDデータディスクがない場合、RAIDデータディスクに対するファームウェア更新処理が終了する。
図19は、第1の更新処理の手順を示すフローチャートの例である。この図19の処理は、図18のステップS54の処理に対応する。
[ステップS61]保守制御部125は、図18のステップS52で選択された更新対象ディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、更新対象ディスクに対する動作状態の監視が抑止される。また、保守制御部125は、更新対象ディスクに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が抑止される。
[ステップS61]保守制御部125は、図18のステップS52で選択された更新対象ディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、更新対象ディスクに対する動作状態の監視が抑止される。また、保守制御部125は、更新対象ディスクに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が抑止される。
[ステップS62]保守制御部125は、ディスク利用状態管理テーブル111から更新対象ディスクのレコードを特定する。保守制御部125は、特定したレコードにおける退避先ディスクの項目に、退避先とする未利用ディスクの識別番号を設定し、退避処理ステータスの項目に「退避中」を設定する。また、保守制御部125は、退避データ管理テーブル114を作成する。
[ステップS63]更新対象ディスクのファームウェア更新が実行される。この処理では、保守制御部125は、ディスク制御部123を介して更新ファームウェアを更新対象ディスクに転送し、更新対象ディスクのメモリ202に書き込む。書き込みが終了すると、ディスク制御部123の指示によって更新対象ディスクが再起動され、更新ファームウェアが適用される。以上の処理が完了すると、次のステップS64の処理が実行される。
[ステップS64]保守制御部125は、ステップS62で特定したレコードにおいて、退避処理ステータスを「書き戻し中」に更新する。そして、保守制御部125は、退避先ディスクから更新対象ディスクに対する書き戻し処理を開始する。なお、この書き戻し処理については後の図22において説明する。
[ステップS65]保守制御部125は、更新対象ディスクに対する動作状態の監視の抑止を解除するようにシステム監視部126に依頼する。これにより、システム監視部126による動作状態の監視が再開される。また、保守制御部125は、更新対象ディスクに対するI/O処理の抑止を解除するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が可能な状態に復帰する。
図20は、第1の更新処理中の書き込み処理の手順を示すフローチャートの例である。
[ステップS71]RAID制御部122において、更新対象ディスクが属するRAIDグループに対する書き込み要求に応じて、更新対象ディスクに対する書き込みが発生すると、次のステップS72以降の処理が実行される。
[ステップS71]RAID制御部122において、更新対象ディスクが属するRAIDグループに対する書き込み要求に応じて、更新対象ディスクに対する書き込みが発生すると、次のステップS72以降の処理が実行される。
[ステップS72]RAID制御部122は、ディスク利用状態管理テーブル111から、書き込み先の更新対象ディスクのレコードを特定し、ステータスの設定値を読み込む。ステータスが「退避中」の場合、処理がステップS73に進められ、ステータスが「書き戻し中」の場合、処理がステップS75に進められる。
[ステップS73]RAID制御部122は、ステップS72で特定したレコードに登録された退避先ディスクに対してデータを書き込む。
[ステップS74]RAID制御部122は、退避データ管理テーブル114に新規のレコードを追加する。RAID制御部122は、追加したレコードに対して、退避元アドレスとして、更新対象ディスクに対する書き込み先アドレスを登録し、退避先アドレスとして、ステップS73での退避先ディスクにおける書き込み先アドレスを登録する。
[ステップS74]RAID制御部122は、退避データ管理テーブル114に新規のレコードを追加する。RAID制御部122は、追加したレコードに対して、退避元アドレスとして、更新対象ディスクに対する書き込み先アドレスを登録し、退避先アドレスとして、ステップS73での退避先ディスクにおける書き込み先アドレスを登録する。
なお、退避データ管理テーブル114に、退避元アドレスとして更新対象ディスクに対する同じ書き込み先アドレスが登録されたレコードが存在する場合には、RAID制御部122は、そのレコードにおける退避先アドレスとして、ステップS73での退避先ディスクにおける書き込み先アドレスを上書きして登録する。
[ステップS75]RAID制御部122は、退避データ管理テーブル114に、退避元アドレスとして、更新対象ディスクに対するデータの書き込み先アドレスが登録されたレコードが存在するかを判定する。該当レコードが存在する場合、処理がステップS76に進められ、該当レコードが存在しない場合、処理がステップS78に進められる。
[ステップS76]RAID制御部122は、更新対象ディスク(この場合、ファームウェアが更新されたRAIDデータディスク)に対してデータを書き込む。
[ステップS77]RAID制御部122は、退避データ管理テーブル114は、ステップS75で存在が確認されたレコードを退避データ管理テーブル114から消去する。
[ステップS77]RAID制御部122は、退避データ管理テーブル114は、ステップS75で存在が確認されたレコードを退避データ管理テーブル114から消去する。
[ステップS78]RAID制御部122は、更新対象ディスク(この場合、ファームウェアが更新されたRAIDデータディスク)に対してデータを書き込む。
以上の処理により、更新対象ディスクのファームウェア更新処理中、および更新対象ディスクへの書き戻し処理中において、更新対象ディスクに対するデータの書き込みを行うことが可能となる。
以上の処理により、更新対象ディスクのファームウェア更新処理中、および更新対象ディスクへの書き戻し処理中において、更新対象ディスクに対するデータの書き込みを行うことが可能となる。
図21は、第1の更新処理中の読み出し処理の手順を示すフローチャートの例である。
[ステップS81]RAID制御部122において、更新対象ディスクが属するRAIDグループからの読み出し要求に応じて、更新対象ディスクからの読み出しが発生すると、次のステップS82以降の処理が実行される。
[ステップS81]RAID制御部122において、更新対象ディスクが属するRAIDグループからの読み出し要求に応じて、更新対象ディスクからの読み出しが発生すると、次のステップS82以降の処理が実行される。
[ステップS82]RAID制御部122は、退避データ管理テーブル114に、退避元アドレスとして、更新対象ディスクからのデータの読み出し元アドレスが登録されたレコードが存在するかを判定する。該当レコードが存在する場合、処理がステップS83に進められ、該当レコードが存在しない場合、処理がステップS84に進められる。
[ステップS83]RAID制御部122は、ステップS82で存在が確認されたレコードから、退避先ディスクの識別番号と退避先アドレスを読み込む。RAID制御部122は、退避先ディスクにおける退避先アドレスからデータを読み出す。
[ステップS84]RAID制御部122は、ディスク利用状態管理テーブル111から、読み出し元の更新対象ディスクのレコードを特定し、ステータスの設定値を読み込む。ステータスが「退避中」の場合、処理がステップS85に進められ、ステータスが「書き戻し中」の場合、処理がステップS86に進められる。
[ステップS85]RAID制御部122は、更新対象ディスクが属するRAIDグループに含まれるRAIDデータディスクのうち、更新対象ディスクを除く残りのRAIDデータディスクのデータを用いて、更新対象ディスクから読み出すべき読み出しデータを取得する。例えば、RAIDグループのRAIDレベルが「1+0」の場合、RAID制御部122は、残りのRAIDデータディスクのうち、更新対象ディスクのデータがミラーリングされているRAIDデータディスクから読み出しデータを読み出す。また、例えばRAIDグループのRAIDレベルが「5」の場合、RAID制御部122は、残りのRAIDデータディスクから読み出した分割データおよびパリティを用いて、読み出しデータを復元する。
[ステップS86]RAID制御部122は、更新対象ディスク(この場合、ファームウェアが更新されたRAIDデータディスク)から読み出しデータを読み出す。
以上の処理により、更新対象ディスクのファームウェア更新処理中、および更新対象ディスクへの書き戻し処理中において、更新対象ディスクからのデータの読み出しを行うことが可能となる。
以上の処理により、更新対象ディスクのファームウェア更新処理中、および更新対象ディスクへの書き戻し処理中において、更新対象ディスクからのデータの読み出しを行うことが可能となる。
図22は、退避先ディスクから更新対象ディスクへの書き戻し処理の手順を示すフローチャートの例である。図22の処理は、図19のステップS64の実行に応じて開始される。
[ステップS91]保守制御部125は、退避データ管理テーブル114からレコードを1つ選択する。
[ステップS92]保守制御部125は、選択されたレコードから退避元アドレスと退避先アドレスを読み込む。保守制御部125は、退避先ディスクの退避先アドレスからデータを読み出し、更新対象ディスク(この場合、ファームウェアが更新されたRAIDデータディスク)の退避元アドレスにそのデータをコピーする。
[ステップS92]保守制御部125は、選択されたレコードから退避元アドレスと退避先アドレスを読み込む。保守制御部125は、退避先ディスクの退避先アドレスからデータを読み出し、更新対象ディスク(この場合、ファームウェアが更新されたRAIDデータディスク)の退避元アドレスにそのデータをコピーする。
[ステップS93]保守制御部125は、選択されたレコードを退避データ管理テーブル114から消去する。
[ステップS94]保守制御部125は、退避データ管理テーブル114に未選択のレコードがあるかを判定する。未選択のレコードがある場合、処理がステップS91に進められ、未選択のレコードが選択される。一方、すべてのレコードが選択済みの場合、処理がステップS95に進められる。
[ステップS94]保守制御部125は、退避データ管理テーブル114に未選択のレコードがあるかを判定する。未選択のレコードがある場合、処理がステップS91に進められ、未選択のレコードが選択される。一方、すべてのレコードが選択済みの場合、処理がステップS95に進められる。
[ステップS95]保守制御部125は、ディスク利用状態管理テーブル111から、更新対象ディスクに対応するレコードを特定する。保守制御部125は、特定されたレコードから、退避先ディスクの識別番号とステータスの設定値(この状態では「書き戻し中」)とを消去する。また、保守制御部125は、退避データ管理テーブル114を消去する。
次に、図23は、第2の更新処理の手順を示すフローチャートの例である。この図23の処理は、図18のステップS55の処理に対応する。
[ステップS101]保守制御部125は、図18のステップS52で選択された更新対象ディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、更新対象ディスクに対する動作状態の監視が抑止される。また、保守制御部125は、更新対象ディスクに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が抑止される。
[ステップS101]保守制御部125は、図18のステップS52で選択された更新対象ディスクに対する動作状態の監視を抑止するようにシステム監視部126に依頼する。これにより、更新対象ディスクに対する動作状態の監視が抑止される。また、保守制御部125は、更新対象ディスクに対するI/O処理を抑止するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が抑止される。
[ステップS102]保守制御部125は、更新対象ディスクを、この更新対象ディスクが現在属しているRAIDグループから切り離す。具体的には、保守制御部125は、ディスク利用状態管理テーブル111から更新対象ディスクに対応するレコードを特定し、特定されたレコードに登録されたRAIDグループ番号を消去する。
[ステップS103]保守制御部125は、上記のRAIDグループに対して割り当てられているスペアディスクを、このRAIDグループに組み込む。具体的には、保守制御部125は、ディスク利用状態管理テーブル111からスペアディスクに対応するレコードを特定し、特定されたレコードのRAIDグループ番号の項目に、組み込み先のRAIDグループの識別番号を登録する。
そして、保守制御部125は、RAID制御部122に対してスペアディスクの組み込みを通知し、組み込まれたスペアディスクに対するデータのリビルド処理の実行を依頼する。これにより、RAIDグループに含まれるRAIDデータディスクのうち、更新対象ディスクを除く残りのRAIDデータディスクのデータを用いたリビルド処理が、RAID制御部122によって開始される。なお、このリビルド処理については後の図24において説明する。
[ステップS104]更新対象ディスクのファームウェア更新が実行される。この処理では、保守制御部125は、ディスク制御部123を介して更新ファームウェアを更新対象ディスクに転送し、更新対象ディスクのメモリ202に書き込む。書き込みが終了すると、ディスク制御部123の指示によって更新対象ディスクが再起動され、更新ファームウェアが適用される。以上の処理が完了すると、次のステップS105の処理が実行される。
[ステップS105]保守制御部125は、スペアディスクをRAIDグループから切り離す。具体的には、保守制御部125は、ディスク利用状態管理テーブル111からスペアディスクに対応するレコードを特定し、特定されたレコードからRAIDグループ番号を消去する。
[ステップS106]保守制御部125は、ファームウェアが更新された更新対象ディスクをRAIDグループに組み込む。具体的には、保守制御部125は、ディスク利用状態管理テーブル111から更新対象ディスクに対応するレコードを特定し、特定されたレコードのRAIDグループ番号の項目に、組み込み先のRAIDグループの識別番号を登録する。
[ステップS107]保守制御部125は、更新対象ディスクに対する動作状態の監視の抑止を解除するようにシステム監視部126に依頼する。これにより、システム監視部126による動作状態の監視が再開される。また、保守制御部125は、更新対象ディスクに対するI/O処理の抑止を解除するようにディスク制御部123に依頼する。これにより、更新対象ディスクに対するI/O処理が可能な状態に復帰する。
図24は、RAIDグループに組み込まれたスペアディスクに対するデータのリビルド処理の手順を示すフローチャートの例である。この図24の処理は、図23のステップS103の実行に応じて開始される。
[ステップS111]RAID制御部122は、リビルド管理テーブル115を作成する。ここでは、リビルド管理テーブル115の例として、更新対象ディスクの単位記憶領域ごとのビットを有するビットマップが作成されるものとする。ビットマップの各ビットの初期値は「0」に設定される。
[ステップS112]RAID制御部122は、ビットマップにおけるビット値が「0」の単位記憶領域を選択する。
[ステップS113]RAID制御部122は、RAIDグループに含まれるRAIDデータディスクのうち、切り離された更新対象ディスクを除く残りのRAIDデータディスクのデータを利用して、更新対象ディスクのデータを復元し、退避先ディスクへ書き込む。
[ステップS113]RAID制御部122は、RAIDグループに含まれるRAIDデータディスクのうち、切り離された更新対象ディスクを除く残りのRAIDデータディスクのデータを利用して、更新対象ディスクのデータを復元し、退避先ディスクへ書き込む。
例えば、RAIDグループのRAIDレベルが「1+0」の場合、RAID制御部122は、残りのRAIDデータディスクのうち、更新対象ディスクのデータがミラーリングされているRAIDデータディスクから、選択された単位記憶領域に格納されているデータを読み出す。RAID制御部122は、読み出したデータを、スペアディスクにおける選択された単位記憶領域に対してそのまま書き込む。
また、例えばRAIDグループのRAIDレベルが「5」の場合、RAID制御部122は、残りのRAIDデータディスクにおける選択された単位記憶領域からデータ(分割データまたはパリティ)を読み出す。RAID制御部122は、読み出したデータを基に、更新対象ディスクにおける選択された単位記憶領域のデータを復元し、復元されたデータを、スペアディスクにおける選択された単位記憶領域に対して書き込む。
[ステップS114]RAID制御部122は、ビットマップのビットのうち、ステップS112で選択された単位記憶領域に対応するビットの値を「1」に更新する。
[ステップS115]RAID制御部122は、更新対象ディスクにおけるファームウェア更新処理が完了したかを、保守制御部125に問い合わせる。ファームウェア更新処理が完了していない場合、処理がステップS116に進められ、ビット値が「0」の単位記憶領域が選択される。一方、ファームウェア更新処理が完了していた場合、リビルド処理が終了する。
[ステップS115]RAID制御部122は、更新対象ディスクにおけるファームウェア更新処理が完了したかを、保守制御部125に問い合わせる。ファームウェア更新処理が完了していない場合、処理がステップS116に進められ、ビット値が「0」の単位記憶領域が選択される。一方、ファームウェア更新処理が完了していた場合、リビルド処理が終了する。
[ステップS116]RAID制御部122は、ビットマップの全ビットの値が「1」かを判定する。ビット値が「0」のビットが1つでもある場合、処理がステップS112に進められ、ビット値が「0」の単位記憶領域が選択される。一方、全ビットの値が「1」の場合、リビルド処理が終了する。
図25は、スペアディスクから更新対象ディスクへの書き戻し処理の手順を示すフローチャートの例である。この図25の処理は、図23のステップS106の実行に応じて開始される。
[ステップS121]RAID制御部122は、ビットマップの各ビットの値を反転する。これにより、図24の処理によってデータがリビルドされた単位記憶領域に対応するビットの値が「0」となり、それ以外のビットの値が「1」となる。
[ステップS122]RAID制御部122は、ビットマップにおけるビット値が「0」の単位記憶領域を選択する。
[ステップS123]RAID制御部122は、スペアディスクから、選択された単位記憶領域に格納されたデータを読み出し、読み出したデータを、更新対象ディスクにおける選択された単位記憶領域にコピーする。
[ステップS123]RAID制御部122は、スペアディスクから、選択された単位記憶領域に格納されたデータを読み出し、読み出したデータを、更新対象ディスクにおける選択された単位記憶領域にコピーする。
[ステップS124]RAID制御部122は、ビットマップのビットのうち、ステップS122で選択された単位記憶領域に対応するビットの値を「1」に更新する。
[ステップS125]RAID制御部122は、ビットマップの全ビットの値が「1」かを判定する。ビット値が「0」のビットが1つでもある場合、処理がステップS122に進められ、ビット値が「0」の単位記憶領域が選択される。一方、全ビットの値が「1」の場合、書き戻し処理が終了する。
[ステップS125]RAID制御部122は、ビットマップの全ビットの値が「1」かを判定する。ビット値が「0」のビットが1つでもある場合、処理がステップS122に進められ、ビット値が「0」の単位記憶領域が選択される。一方、全ビットの値が「1」の場合、書き戻し処理が終了する。
図26は、リビルド処理中の書き込み処理の手順を示すフローチャートの例である。
[ステップS131]RAID制御部122において、更新対象ディスクが属するRAIDグループに対する書き込み要求に応じて、更新対象ディスクに対する書き込みが発生すると、次のステップS132以降の処理が実行される。
[ステップS131]RAID制御部122において、更新対象ディスクが属するRAIDグループに対する書き込み要求に応じて、更新対象ディスクに対する書き込みが発生すると、次のステップS132以降の処理が実行される。
[ステップS132]RAID制御部122は、書き込みデータを、RAIDグループに組み込まれたスペアディスクに書き込む。
[ステップS133]RAID制御部122は、ビットマップのビットのうち、書き込み先の単位記憶領域に対応するビットの値を読み込む。ビット値が「0」の場合、処理がステップS134に進められる。一方、ビット値が「1」の場合、ステップS134の処理がスキップされ、書き込み処理が終了する。
[ステップS133]RAID制御部122は、ビットマップのビットのうち、書き込み先の単位記憶領域に対応するビットの値を読み込む。ビット値が「0」の場合、処理がステップS134に進められる。一方、ビット値が「1」の場合、ステップS134の処理がスキップされ、書き込み処理が終了する。
[ステップS134]RAID制御部122は、ステップS133でビット値の読み込み対象となったビットの値を「1」に更新する。
なお、図25の書き戻し処理中にステップS131のような書き込みが発生した場合、RAIDグループに再組み込みされた更新対象ディスクにデータが書き込まれる。またこのとき、書き込み先の単位記憶領域に対応するビットの値が「0」の場合には、このビット値が「1」に更新される。
なお、図25の書き戻し処理中にステップS131のような書き込みが発生した場合、RAIDグループに再組み込みされた更新対象ディスクにデータが書き込まれる。またこのとき、書き込み先の単位記憶領域に対応するビットの値が「0」の場合には、このビット値が「1」に更新される。
図27は、リビルド処理中の読み出し処理の手順を示すフローチャートの例である。
[ステップS141]RAID制御部122において、更新対象ディスクが属するRAIDグループからの読み出し要求に応じて、更新対象ディスクからの読み出しが発生すると、次のステップS142以降の処理が実行される。
[ステップS141]RAID制御部122において、更新対象ディスクが属するRAIDグループからの読み出し要求に応じて、更新対象ディスクからの読み出しが発生すると、次のステップS142以降の処理が実行される。
[ステップS142]RAID制御部122は、ビットマップのビットのうち、読み出し元の単位記憶領域に対応するビットの値を読み込む。ビット値が「1」の場合、処理がステップS143に進められ、ビット値が「0」の場合、処理がステップS144に進められる。
[ステップS143]RAID制御部122は、RAIDグループに組み込まれたスペアディスクからデータを読み出す。
[ステップS144]RAID制御部122は、更新対象ディスクが属するRAIDグループに含まれるRAIDデータディスクのうち、更新対象ディスクを除く残りのRAIDデータディスクのデータを用いて、更新対象ディスクから読み出すべき読み出しデータを取得する。例えば、RAIDグループのRAIDレベルが「1+0」の場合、RAID制御部122は、残りのRAIDデータディスクのうち、更新対象ディスクのデータがミラーリングされているRAIDデータディスクから読み出しデータを読み出す。また、例えばRAIDグループのRAIDレベルが「5」の場合、RAID制御部122は、残りのRAIDデータディスクから読み出した分割データおよびパリティを用いて、読み出しデータを復元する。
[ステップS144]RAID制御部122は、更新対象ディスクが属するRAIDグループに含まれるRAIDデータディスクのうち、更新対象ディスクを除く残りのRAIDデータディスクのデータを用いて、更新対象ディスクから読み出すべき読み出しデータを取得する。例えば、RAIDグループのRAIDレベルが「1+0」の場合、RAID制御部122は、残りのRAIDデータディスクのうち、更新対象ディスクのデータがミラーリングされているRAIDデータディスクから読み出しデータを読み出す。また、例えばRAIDグループのRAIDレベルが「5」の場合、RAID制御部122は、残りのRAIDデータディスクから読み出した分割データおよびパリティを用いて、読み出しデータを復元する。
なお、図25の書き戻し処理中にステップS141のような読み出しが発生した場合、対応するビットの値に応じて次のような処理が実行される。ビット値が「0」の場合、RAIDグループから切り離されたスペアディスクからデータが読み出される。ビット値が「1」の場合、RAIDグループに再組み込みされた更新対象ディスクからデータが読み出される。
なお、上記の各実施の形態に示した装置(例えば、ストレージ装置1または制御部2、CM100a,100b,100c,100d、ホスト装置20a,20b,20c,・・・)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
1 ストレージ装置
2 制御部
3a~3e 記憶装置
4 RAIDグループ
5 管理情報
6 ホスト装置
2 制御部
3a~3e 記憶装置
4 RAIDグループ
5 管理情報
6 ホスト装置
Claims (4)
- 複数の記憶装置に対するアクセスを制御する制御部を有するストレージ装置であって、
前記制御部は、
前記複数の記憶装置のうち、同一のRAID(Redundant Array of Inexpensive Disks)グループに含まれる2以上の記憶装置の中の第1の記憶装置のファームウェアを更新中に、前記第1の記憶装置に対する第1のデータの書き込みが要求されると、前記複数の記憶装置のうち、前記2以上の記憶装置以外の第2の記憶装置に対して前記第1のデータを書き込むとともに、前記第1の記憶装置における前記第1のデータの書き込み先アドレスを、退避元アドレスとして前記第1のデータに対応付けて管理情報に登録する第1の書き込み処理を実行し、
前記ファームウェアの更新中に、前記第1の記憶装置からの第2のデータの読み出しが要求されると、前記管理情報を参照し、前記第1の記憶装置における前記第2のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていた場合、前記第2のデータを前記第2の記憶装置から読み出し、前記第2のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていない場合、前記2以上の記憶装置のうち前記第1の記憶装置以外の他の記憶装置に記憶されたデータに基づいて前記第2のデータを取得する第1の読み出し処理を実行する、
ストレージ装置。 - 前記制御部は、
前記ファームウェアの更新開始時において、前記第1の記憶装置に対する直近の単位時間におけるデータ書き込み量と所定の閾値とを比較し、
前記データ書き込み量が前記閾値以上の場合には、前記第1の記憶装置を前記RAIDグループから切り離すとともに、前記複数の記憶装置のうち、前記2以上の記憶装置および前記第2の記憶装置以外の第3の記憶装置を前記RAIDグループに組み込んでから、前記ファームウェアの更新を開始し、前記ファームウェアの更新中において、前記第1の記憶装置に記憶されているデータを前記他の記憶装置に記憶されたデータに基づいてリビルドして前記第3の記憶装置に格納し、前記第1の記憶装置に対する第3のデータの書き込みが要求されると、前記第3のデータを前記第3の記憶装置に書き込む第2の書き込み処理を実行し、前記第1の記憶装置からの第4のデータの読み出しが要求されると、前記他の記憶装置に記憶されたデータに基づいて前記読第4のデータを復元する第2の読み出し処理を実行し、
前記データ書き込み量が前記閾値未満の場合には、前記第2の記憶装置を書き込みが要求されたデータの退避先として設定して、前記ファームウェアの更新を開始し、前記ファームウェアの更新中において、前記第1の記憶装置に対する前記第1のデータの書き込みが要求されると前記第1の書き込み処理を実行し、前記第1の記憶装置からの前記第2のデータの読み出しが要求されると前記第1の読み出し処理を実行する、
請求項1記載のストレージ装置。 - 前記制御部は、
前記ファームウェアの更新が完了すると、前記管理情報に基づいて、前記第2の記憶装置に書き込まれたデータを前記第1の記憶装置に書き戻し、前記管理情報に登録された前記退避元アドレスのうち一の退避元アドレスに対応するデータを前記第1の記憶装置に書き込むと、前記一の退避元アドレスを前記管理情報から消去し、
前記書き戻しの実行中に前記第1の記憶装置に対する第5のデータの書き込みが要求されると、前記第5のデータを前記第1の記憶装置に書き込み、前記第1の記憶装置における前記第5のデータの書き込み先アドレスが前記管理情報に前記退避元アドレスとして登録されていた場合、前記第5のデータの書き込み先アドレスを示す前記退避元アドレスを前記管理情報から消去し、
前記書き戻しの実行中に前記第1の記憶装置からの第6のデータの読み出しが要求されると、前記管理情報を参照し、前記第1の記憶装置における前記第6のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていた場合、前記第6のデータを前記第2の記憶装置から読み出し、前記第6のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていない場合、前記第6のデータを前記第1の記憶装置から読み出す、
請求項1記載のストレージ装置。 - 複数の記憶装置に対するアクセスを制御するコンピュータにおける制御方法であって、
前記コンピュータが、
前記複数の記憶装置のうち、同一のRAIDグループに含まれる2以上の記憶装置の中の第1の記憶装置のファームウェアを更新中に、前記第1の記憶装置に対する第1のデータの書き込みが要求されると、前記複数の記憶装置のうち、前記2以上の記憶装置以外の第2の記憶装置に対して前記第1のデータを書き込むとともに、前記第1の記憶装置における前記第1のデータの書き込み先アドレスを、退避元アドレスとして前記第1のデータに対応付けて管理情報に登録する第1の書き込み処理を実行し、
前記ファームウェアの更新中に、前記第1の記憶装置からの第2のデータの読み出しが要求されると、前記管理情報を参照し、前記第1の記憶装置における前記第2のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていた場合、前記第2のデータを前記第2の記憶装置から読み出し、前記第2のデータの読み出し元アドレスが前記管理情報に前記退避元アドレスとして登録されていない場合、前記2以上の記憶装置のうち前記第1の記憶装置以外の他の記憶装置に記憶されたデータに基づいて前記第2のデータを取得する第1の読み出し処理を実行する、
制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022011461A JP2023110180A (ja) | 2022-01-28 | 2022-01-28 | ストレージ装置および制御方法 |
US18/055,079 US20230244385A1 (en) | 2022-01-28 | 2022-11-14 | Storage apparatus and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022011461A JP2023110180A (ja) | 2022-01-28 | 2022-01-28 | ストレージ装置および制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023110180A true JP2023110180A (ja) | 2023-08-09 |
Family
ID=87432007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022011461A Pending JP2023110180A (ja) | 2022-01-28 | 2022-01-28 | ストレージ装置および制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230244385A1 (ja) |
JP (1) | JP2023110180A (ja) |
-
2022
- 2022-01-28 JP JP2022011461A patent/JP2023110180A/ja active Pending
- 2022-11-14 US US18/055,079 patent/US20230244385A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230244385A1 (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8176359B2 (en) | Disk array system and control method thereof | |
US7975168B2 (en) | Storage system executing parallel correction write | |
US7831764B2 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
US7587631B2 (en) | RAID controller, RAID system and control method for RAID controller | |
JP2008015769A (ja) | ストレージシステム及び書き込み分散方法 | |
JP6459644B2 (ja) | ストレージ制御装置、制御システム及び制御プログラム | |
US7984260B2 (en) | Storage system provided with a plurality of controller modules | |
JP7060789B2 (ja) | 電子システム、情報処理装置および制御方法 | |
CN105897859B (zh) | 一种存储系统 | |
JP2005301419A (ja) | ディスクアレイ装置およびそのデータ処理方法 | |
US8321628B2 (en) | Storage system, storage control device, and method | |
WO2015011825A1 (ja) | ストレージシステムおよびストレージシステムの制御方法 | |
JP2017091456A (ja) | 制御装置、制御プログラムおよび制御方法 | |
US8433949B2 (en) | Disk array apparatus and physical disk restoration method | |
JP7318367B2 (ja) | ストレージ制御装置及びストレージ制御プログラム | |
JP4322240B2 (ja) | 再起動方法、システム及びプログラム | |
US10664193B2 (en) | Storage system for improved efficiency of parity generation and minimized processor load | |
JP2009295045A (ja) | ストレージシステム、ストレージサブシステム、及び記憶制御方法 | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
JP2023110180A (ja) | ストレージ装置および制御方法 | |
US20130031320A1 (en) | Control device, control method and storage apparatus | |
JP5773446B2 (ja) | 記憶装置、冗長性回復方法、およびプログラム | |
WO2016006108A1 (ja) | ストレージおよびその制御方法 | |
JP6788188B2 (ja) | 制御装置および制御プログラム | |
JP7288191B2 (ja) | ストレージ制御装置およびストレージ制御プログラム |