IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-ストレージ制御装置及び制御プログラム 図1
  • 特許-ストレージ制御装置及び制御プログラム 図2
  • 特許-ストレージ制御装置及び制御プログラム 図3
  • 特許-ストレージ制御装置及び制御プログラム 図4
  • 特許-ストレージ制御装置及び制御プログラム 図5
  • 特許-ストレージ制御装置及び制御プログラム 図6
  • 特許-ストレージ制御装置及び制御プログラム 図7
  • 特許-ストレージ制御装置及び制御プログラム 図8
  • 特許-ストレージ制御装置及び制御プログラム 図9
  • 特許-ストレージ制御装置及び制御プログラム 図10
  • 特許-ストレージ制御装置及び制御プログラム 図11
  • 特許-ストレージ制御装置及び制御プログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-23
(45)【発行日】2023-10-31
(54)【発明の名称】ストレージ制御装置及び制御プログラム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20231024BHJP
   G06F 11/20 20060101ALI20231024BHJP
【FI】
G06F3/06 302A
G06F3/06 304B
G06F3/06 305F
G06F11/20 697
【請求項の数】 5
(21)【出願番号】P 2019228552
(22)【出願日】2019-12-18
(65)【公開番号】P2021096714
(43)【公開日】2021-06-24
【審査請求日】2022-08-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】室山 智彦
(72)【発明者】
【氏名】西園 晋一
(72)【発明者】
【氏名】大嶋 章二
【審査官】北村 学
(56)【参考文献】
【文献】特開2012-048613(JP,A)
【文献】特開2012-203881(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/06 - 3/08
G06F 11/20
(57)【特許請求の範囲】
【請求項1】
ストレージ装置に備えられる複数のストレージ制御装置のうちのスレーブとして機能する一のストレージ制御装置であって、
当該ストレージ制御装置の起動が、前記ストレージ装置全体の電源投入処理によるものであるか、当該ストレージ制御装置単体のリブートによるものであるかを判定する判定部と、
前記判定部による判定結果におい当該ストレージ制御装置の起動が当該ストレージ制御装置単体のリブートによるものである場合に、前記複数のストレージ制御装置のうちのマスタとして機能するストレージ制御装置から、前記ストレージ装置における領域獲得のための制御情報を格納する制御情報格納領域の獲得状態を取得し、取得した前記獲得状態に基づいて前記制御情報格納領域を当該ストレージ制御装置において設定する領域設定部と、
を備える、ストレージ制御装置
【請求項2】
前記領域設定部は、前記獲得状態に識別子が含まれている前記ストレージ装置の領域を表すストレージプールについて、前記獲得状態で割り当てられている領域のサイズに応じて、前記制御情報格納領域を設定する、
請求項に記載のストレージ制御装置。
【請求項3】
前記領域設定部は、前記獲得状態に識別子が含まれていない前記ストレージ装置の領域を表すストレージプールについて、領域のサイズをゼロとして、前記制御情報格納領域を設定する、
請求項又はに記載のストレージ制御装置。
【請求項4】
前記領域設定部は、前記獲得状態が取得できない場合に、前記ストレージ装置全体を再起動させた後に、前記制御情報格納領域を設定する、
請求項2又は3に記載のストレージ制御装置。
【請求項5】
ストレージ装置に備えられる複数のストレージ制御装置のうちのスレーブとして機能する一のストレージ制御装置に備えられるコンピュータに、
当該ストレージ制御装置の起動が、前記ストレージ装置全体の電源投入処理によるものであるか、当該ストレージ制御装置単体のリブートによるものであるかを判定し、
記判結果におい当該ストレージ制御装置の起動が当該ストレージ制御装置単体のリブートによるものである場合に、前記複数のストレージ制御装置のうちのマスタとして機能するストレージ制御装置から、前記ストレージ装置における領域獲得のための制御情報を格納する制御情報格納領域の獲得状態を取得し、取得した前記獲得状態に基づいて前記制御情報格納領域を当該ストレージ制御装置において設定する、
処理を実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置及び制御プログラムに関する。
【背景技術】
【0002】
ストレージ装置には様々な機能が実装されており、ユーザは機能使用の際に必要な機能を有効化する操作を行なう。
【0003】
図1は、ストレージ装置600の操作例を説明する図である。
【0004】
ストレージ装置600は、符号A1に示すように、ユーザ端末8のGraphical User Interface(GUI)又はCommand Line Interface(CLI)により機能を有効化させる操作を受け付ける。これにより、ストレージ装置600は、対象の機能の制御のために必要なメモリ領域を動的に獲得し、装置構成変更処理等を実施することで機能を使用可能な状態にする。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2012-048613号公報
【文献】特開平11-143649号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
図2は、キャッシュテーブル獲得状態が正常な状態を示すブロック図である。
【0007】
ストレージ装置600は、複数のController Enclosure(CE)60(別言すれば、CE#0,#1)及び複数のDrive Enclosure(DE)7(別言すれば、DE#0,#1,・・・,#n-1,#n)を備える。
【0008】
各DE7は、Input Output Module(IOM)#0,#1をそれぞれ備える。
【0009】
各CE60は、2つのController Module(CM)6(別言すれば、CM#0,#1)をそれぞれ備える。なお、CE#0のCM#1はマスタCMであり、その他のCM6はスレーブCMであってよい。
【0010】
ストレージ装置600に実装されている機能を使用する場合には、対象の機能を制御するための制御データをキャッシュ上に管理テーブルとして保持する場合がある。例えば、図2における各CM6は、Pool IDが(xx, yy, zz,・・・)ごとのキャッシュテーブルを格納するためのメモリ領域(テーブル領域)をキャッシュメモリ(以下、キャッシュと略す)上に確保されている。また、キャッシュ上にテーブル領域を確保する場合には、機能有効化処理において全てのCM6で装置稼働中に動的にキャッシュからテーブル領域を確保した後に、装置構成として機能が有効状態であることを示す情報が各CM6において反映される。
【0011】
装置起動の際には、装置構成情報が参照され、設定値に基づいてそれぞれの機能で必要なテーブルサイズが算出され、全CM6でテーブル領域を確保する処理が動作する。
【0012】
キャッシュテーブル獲得処理は全CM6で同期して処理が実施されるため、機能有効化処理中にCM6に異常が発生した場合には、キャッシュ上のテーブル領域の獲得に失敗する場合がある。機能有効化処理は途中で中断し、異常終了するため、機能構成として有効化対象機能は無効の状態となる。ハードウェアの異常ではなくソフトウェアのパニックにより異常となったCM6は、自動でリブートして装置への組み込み処理が動作し、復旧処理(別言すれば、Check1)が実施される。Check1を実施したCM6は、Power on処理と同様に装置構成を参照してそれぞれの機能で必要なテーブル領域を獲得した状態で起動する。装置構成として有効化処理中であった対象機能は無効なため、リブートしたCM6ではテーブル領域が確保されないが、他の正常なCM6では機能有効化処理が途中まで進んでいるため、CM6毎にキャッシュテーブルの獲得状態が不一致になる状態が存在する。
【0013】
図3は、キャッシュテーブル獲得状態が不一致な状態を示すブロック図である。
【0014】
図3に示す例では、符号B1に示すように、Pool ID:zzのテーブル領域の獲得中にCE#0のCM#1でソフトウェアのパニックによるリブートが発生し、CE#0のCM#1のテーブル領域の獲得状態が他のCM6と比較して不一致となっている。
【0015】
CM6に搭載されるキャッシュメモリは、ストレージ装置600の制御のための制御テーブル以外にホストからのInput/Output(I/O)を高速に処理するキャッシュ領域としても使用される。機能が無効な状態で未使用の領域はCM6毎に独自にホストI/Oの処理のためのキャッシュ領域として使用されるため、キャッシュテーブルの獲得状態がCM6間で異なる状態となる場合がある。そして、ホストI/Oで使用されるキャッシュ領域と各種機能で使用されるテーブル領域とが重複した場合には、データが破壊されるという事象が発生するおそれがある。
【0016】
1つの側面では、ストレージ装置に備えられる複数のストレージ制御装置間のキャッシュテーブル獲得状態を一致させることを目的とする。
【課題を解決するための手段】
【0017】
1つの側面では、ストレージ制御装置は、ストレージ装置に備えられる複数のストレージ制御装置のうちのスレーブとして機能する一のストレージ制御装置であって、当該ストレージ制御装置の起動が、前記ストレージ装置全体の電源投入処理によるものであるか、当該ストレージ制御装置単体のリブートによるものであるかを判定する判定部と、前記判定部による判定結果におい当該ストレージ制御装置の起動が当該ストレージ制御装置単体のリブートによるものである場合に、前記複数のストレージ制御装置のうちのマスタとして機能するストレージ制御装置から、前記ストレージ装置における領域獲得のための制御情報を格納する制御情報格納領域の獲得状態を取得し、取得した前記獲得状態に基づいて前記制御情報格納領域を当該ストレージ制御装置において設定する領域設定部と、を備える。
【発明の効果】
【0018】
1つの側面では、ストレージ装置に備えられる複数のストレージ制御装置間のキャッシュテーブル獲得状態を一致させることができる。
【図面の簡単な説明】
【0019】
図1】ストレージ装置の操作例を説明する図である。
図2】キャッシュテーブル獲得状態が正常な状態を示すブロック図である。
図3】キャッシュテーブル獲得状態が不一致な状態を示すブロック図である。
図4】実施形態の一例におけるストレージ装置のハードウェア構成例を模式的に示すブロック図である。
図5図4に示したCMのソフトウェア構成例を模式的に示すブロック図である。
図6図4に示したCMにおけるキャッシュテーブル獲得状態情報を例示するテーブルである。
図7図4に示したキャッシュテーブル情報を例示するテーブルである。
図8図4に示したストレージ装置における機能有効化処理を説明するシーケンス図である。
図9図8に示したキャッシュテーブル獲得処理の詳細を説明するフローチャートである。
図10図9に示した装置全体のPower onの際におけるキャッシュテーブル獲得処理の詳細を説明するフローチャートである。
図11図9に示した単体CMのリブートの際におけるキャッシュテーブル獲得処理の詳細を説明するフローチャートである。
図12】ハイエンドのストレージ装置のハードウェア構成例を模式的に示すブロック図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0021】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0022】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0023】
〔A〕実施形態の一例
〔A-1〕システム構成例
図4は、実施形態の一例におけるストレージ装置100のハードウェア構成例を模式的に示すブロック図である。
【0024】
ストレージ装置100は、CE10及び複数のDE2(別言すれば、DE#10~#29)を備える。
【0025】
図4に示すように、一部のDE2(別言すれば、DE#19,#20)は、複数のIOM21(別言すれば、IOM#0,#1)及びFan Expander Module(FEM)23(別言すれば、FEM#00,#01)を備える。また、他のDE2は、複数のIOM21(別言すれば、IOM#0,#1)及びディスク群22を備える。
【0026】
IOM21は、I/Oユニット又はボードであり、後述するCE10のCM1から指定されたドライブへSerial Attached SCSI(SAS)フレームを転送する。
【0027】
ディスク群22は、複数のHard Disk Drive(HDD)等のディスクを備える。
【0028】
FEM23は、IOM21で受領したSASフレームをCM1から指定されたドライブへ転送する。FEM23は、ファンも搭載し、DE2内を冷却する。
【0029】
CE10は、複数のCM1(別言すれば、CM#0,#1)を備える。
【0030】
CM1は、ストレージ制御装置の一例であり、CPU11,BIOS12,BUDコントローラ13,BUD14,IOC15,EXP16及びCA17を備える。なお、CPUはCentral Processing Unitの略称であり、BIOSはBasic Input/Output Systemの略称であり、BUDはBoot up Utility Deviceの略称である。また、IOCはInput Output Controllerの略称であり、EXPはExpanderの略称であり、CAはCommunication Adapterの略称である。
【0031】
BIOS12は、CPU11によって実行され、プログラムからハードウェアに対するデータの入出力を行なう。
【0032】
BUDコントローラ13は、CPU11からBUD14に対するアクセスを中継する。
【0033】
BUD14は、ストレージ装置100の起動のためのファームウェアであり、起動の際のログを記録する。
【0034】
IOC15は、DE2とCPU11との間のデータ転送を実施し、例えば、専用チップとして構成される。
【0035】
EXP16は、SAS/Serial ATA(SATA)接続用のエキスパンダチップであり、CM1と複数のDE2とを接続するスイッチ機構である。複数のDE2は、CM1に対してカスケード接続されている。CM#0に対してDE#20~#29が、CM#1に対してDE#10~#19が、それぞれカスケード接続されている。
【0036】
CA17は、不図示の上位装置とストレージ装置100とを通信可能に接続するインタフェースである。
【0037】
図5は、図4に示したCM1のソフトウェア構成例を模式的に示すブロック図である。
【0038】
CPU11は、例示的に、種々の制御や演算を行なう処理装置であり、種々の機能を実現する。すなわち、CPU11は、図5に示すように、GUI/CLI制御部111,コマンド制御部112,メモリ管理部113,構成管理部114及びI/O制御部115として機能してよい。
【0039】
なお、これらのGUI/CLI制御部111,コマンド制御部112,メモリ管理部113,構成管理部114及びI/O制御部115としての機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU11)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0040】
GUI/CLI制御部111,コマンド制御部112,メモリ管理部113,構成管理部114及びI/O制御部115としての機能を実現する際には、内部記憶装置に格納された制御プログラムがコンピュータ(本実施形態ではCPU11)によって実行されてよい。また、記録媒体に記録された制御プログラムをコンピュータが読み取って実行してもよい。
【0041】
CPU11は、例示的に、CM1全体の動作を制御する。CM1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、CM1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0042】
GUI/CLI制御部111は、ユーザ/外部ソフトウェア4からの指示を受け付け、装置制御用のコマンドInterface(IF)を実行する。CLI実行の際には、制御用コマンドIFをセットにして、コマンド制御部112を依頼してよい。なお、ユーザ/外部ソフトウェア4は、不図示の上位装置上で動作するストレージ管理ソフトウェアであってよい。ユーザ/外部ソフトウェア4は、ストレージ管理ソフトウェア上からストレージ装置100の機能の管理を実施し、ストレージ装置100における必要な機能を有効化する処理を行なってよい。
【0043】
コマンド制御部112は、GUI/CLI制御部111から実行された制御用コマンドのIF設定に基づき、内部処理シーケンスの制御を行なう。
【0044】
メモリ管理部113は、ストレージ装置100内のキャッシュテーブル(別言すれば、制御情報)の獲得や解放処理を実施する。
【0045】
メモリ管理部113は、CM1の起動の際にCM1のリブートモードをチェックし、最適にキャッシュテーブルのテーブル領域を獲得する処理を行なう。ストレージ装置100の機能有効化の際においてキャッシュテーブルを獲得する処理の動作中に機能有効化処理が異常終了した場合に、メモリ管理部113は、CM1の起動がストレージ装置100全体のPower on処理であるか単体のCM1のリブートかを判定する。そして、メモリ管理部113は、CM1の起動がストレージ装置100全体のPower on処理であるか単体のCM1のリブートかに応じたキャッシュテーブル獲得処理を動作させることで、CM1間でキャッシュテーブルの獲得状態が不一致になることを回避する。
【0046】
CM1の起動がストレージ装置100全体のPower on処理である場合には、全てのCM1で同一の装置構成情報が保持されるため、全CM1でのキャッシュテーブルの獲得状態は整合性が確保された状態となる。そこで、メモリ管理部113は、装置構成情報からキャッシュテーブルのサイズを算出して、キャッシュメモリからテーブル領域を獲得する。
【0047】
一方、単体のCM1がリブートした場合には、メモリ管理部113は、マスタのCM1からキャッシュテーブル獲得状態情報(図6を用いて後述)を取得する。そして、メモリ管理部113は、自CM1の装置構成情報とマスタのCM1のキャッシュテーブル獲得状態情報とに基づき、キャッシュテーブル獲得処理を実行する。
【0048】
すなわち、メモリ管理部113は、CM1の起動が、ストレージ装置100全体の起動によるものであるか、CM1単体の起動によるものであるかを判定する判定部の一例として機能する。そして、メモリ管理部113は、判定結果に応じて、ストレージ装置100の機能の有効化のためのキャッシュテーブルを格納するテーブル領域(別言すれば、制御情報格納領域)を設定する領域設定部の一例として機能する。
【0049】
また、メモリ管理部113は、スレーブとして機能する自CM1の起動がCM1単体の起動によるものである場合に、マスタとして機能するCM1から制御情報格納領域の獲得状態を取得し、取得した獲得状態に基づいてテーブル領域を獲得してよい。
【0050】
更に、メモリ管理部113は、獲得状態にIDが含まれているPoolについて、獲得状態で割り当てられている領域のサイズに応じて、テーブル領域を獲得してよい。
【0051】
また、メモリ管理部113は、獲得状態にIDが含まれていないPoolについて、領域のサイズをゼロとして、テーブル領域を獲得してよい。
【0052】
更に、メモリ管理部113は、獲得状態が取得できない場合に、ストレージ装置100全体を再起動させた後に、テーブル領域を獲得してよい。
【0053】
構成管理部114は、コマンド実行の際の構成変更処理や処理変更通知を実施する。
【0054】
I/O制御部115は、ホストからのI/O処理やユーザデータの冗長化処理を行なう。
【0055】
図6は、図4に示したCM1におけるキャッシュテーブル獲得状態情報を例示するテーブルである。
【0056】
キャッシュテーブル獲得情報には、Byte 0x00-0x10において、Cache Table information[0]が格納されている。また、Byte 0x10以降においても、Cache Table information[1] … [n-1]が格納されている。
【0057】
図7は、図4に示したキャッシュテーブル情報を例示するテーブルである。
【0058】
図6に示したCache Table Information [0]には、Byte 0x00-0x03においてMemory Pool Nameが格納されており、Byte 0x04-0x07においてPool IDが格納されており、Byte 0x08-0x0BにおいてAllocation Sizeが格納されており、Byte 0x0C以降においてAttributeが格納されている。Cache Table information[1] … [n-1]も同様に、各フィールドが格納されている。
【0059】
Memory Pool Nameはキャッシュテーブルの名称であり、Pool IDはキャッシュテーブルの識別子であり、Allocation Sizeはキャッシュテーブルの獲得サイズであり、Attributeはキャッシュテーブルの属性である。
【0060】
〔A-2〕動作例
図4に示したストレージ装置100における機能有効化処理を、図8に示すシーケンス図(処理C1~C16)に従って説明する。
【0061】
以下、マスタとして機能するCM1をマスタCM1aと称し、スレーブとして機能するCM1をスレーブCM1bと称する。
【0062】
マスタCM1aのGUI/CLI制御部111は、コマンド制御部112に対して、機能有効化指示を発行する(符号C1参照)。
【0063】
マスタCM1aのコマンド制御部112は、コマンド指示を受け付け(符号C2参照)、GUI/CLI制御部111に対して機能有効化指示の応答を行なう(符号C3参照)。
【0064】
マスタCM1aのGUI/CLI制御部111は、コマンド制御部112に対して、機能有効化結果を要求する(符号C4参照)。
【0065】
マスタCM1aのコマンド制御部112は、メモリ管理部113に対してメモリ獲得要求を発行する(符号C5参照)と共に、GUI/CLI制御部111に対して機能有効化結果を応答する(符号C6参照)。
【0066】
マスタCM1aのメモリ管理部113は、スレーブCM1bのメモリ管理部113と同期して、キャッシュテーブル獲得処理を実施する(符号C7及びC8参照)。なお、キャッシュテーブル獲得処理の詳細は、図9を用いて後述する。
【0067】
マスタCM1aのメモリ管理部113は、コマンド制御部112に対して、メモリ獲得を応答する(符号C9参照)。
【0068】
マスタCM1aのコマンド制御部112は、構成管理部114に対して、構成変更指示を発行する(符号C10参照)。
【0069】
マスタCM1aの構成管理部114は、装置構成変更処理を行ない(符号C11参照)、コマンド制御部112に対して構成変更の応答を行なう(符号C12参照)。
【0070】
マスタCM1aのGUI/CLI制御部111は、コマンド制御部112に対して、機能有効化結果を要求する(符号C13参照)。
【0071】
マスタCM1aのコマンド制御部112は、コマンド処理を終了させ(符号C14参照)、GUI/CLI制御部111に対して機能有効化結果を応答する(符号C15参照)。そして、機能有効化処理は終了する。
【0072】
なお、GUI/CLI制御部111は、符号C3に示した機能有効化指示の応答を受け取ってから、符号C15に示した機能有効化結果の応答を受け取るまで、コマンド制御部112からの機能有効化結果の応答をポーリングする(符号C16参照)。
【0073】
次に、図8に示したキャッシュテーブル獲得処理の詳細を、図9に示すフローチャート(ステップS1~S4)に従って説明する。
【0074】
メモリ管理部113は、CM1のPower onを検知すると、キャッシュテーブル獲得処理を開始する(ステップS1)。
【0075】
メモリ管理部113は、Power onが単体のCM1のリブートであるか(別言すれば、CM1の復旧処理であるCheck1を示すBitが有効であるか)を判定する(ステップS2)。
【0076】
Power onが単体のCM1のリブートでない場合には(ステップS2のNOルート参照)、メモリ管理部113は、ストレージ装置100全体のPower on処理についてのキャッシュテーブル獲得処理を実行する(ステップS3)。そして、キャッシュテーブル獲得処理は終了する。なお、ステップS3に示すストレージ装置100全体のPower on処理についてのキャッシュテーブル獲得処理の詳細は、図10を用いて後述する。
【0077】
一方、Power onが単体のCM1のリブートである場合には(ステップS2のYESルート参照)、メモリ管理部113は、単体のCM1のリブートの際におけるキャッシュテーブル獲得処理を実行する(ステップS4)。そして、キャッシュテーブル獲得処理は終了する。なお、ステップS4に示す単体のCM1のリブートの際におけるキャッシュテーブル獲得処理の詳細は、図10を用いて後述する。
【0078】
次に、図9に示した装置全体のPower onの際におけるキャッシュテーブル獲得処理の詳細を、図10に示すフローチャート(ステップS31~S34)に従って説明する。
【0079】
メモリ管理部113は、ストレージ装置100全体のPower onの際におけるキャッシュテーブル獲得処理を開始する(ステップS31)。
【0080】
メモリ管理部113は、構成設定からキャッシュテーブルのサイズを算出する(ステップS32)。メモリ管理部113は、Pool ID毎に定義されたキャッシュテーブルのサイズを決定する関数を実行する。
【0081】
メモリ管理部113は、キャッシュテーブル獲得処理を実行する(ステップS33)。
【0082】
メモリ管理部113は、未処理の残Poolが存在するかを判定する(ステップS34)。
【0083】
未処理の残Poolが存在する場合には(ステップS34のYESルート参照)、処理はステップS32に戻る。
【0084】
一方、未処理の残Poolが存在しない場合には(ステップS34のNOルート参照)、ストレージ装置100全体のPower onの際におけるキャッシュテーブル獲得処理は終了する。
【0085】
次に、図9に示した単体CM1のリブートの際におけるキャッシュテーブル獲得処理の詳細を、図11に示すフローチャート(ステップS41~S48)に従って説明する。
【0086】
メモリ管理部113は、単体CM1のリブートの際におけるキャッシュテーブル獲得処理を開始する(ステップS41)。
【0087】
メモリ管理部113は、マスタCM1aのキャッシュテーブル情報が有効であるかを判定する(ステップS42)。
【0088】
マスタCM1aのキャッシュテーブル情報が有効でない場合には(ステップS42のNOルート参照)、メモリ管理部113は、構成テーブルの設定値に従って、Pool ID有効時のキャッシュテーブルのサイズを算出する(ステップS43)。すなわち、ストレージ装置100全体の再起動が実行され、図10に示したストレージ装置100全体のPower onの際におけるキャッシュテーブル獲得処理が実行される。そして、処理はステップS47へ進む。
【0089】
一方、マスタCM1aのキャッシュテーブル情報が有効である場合には(ステップS42のYESルート参照)、メモリ管理部113は、対象のPoolがマスタCM1aで獲得されているかを判定する(ステップS44)。
【0090】
対象のPoolがマスタCM1aで獲得されていない場合には(ステップS44のNOルート参照)、メモリ管理部113は、Pool ID無効時のキャッシュテーブルのサイズを算出する(ステップS45)。対象のPoolがマスタCM1aで獲得されていない場合には、キャッシュテーブルのサイズは0として算出される。そして、処理はステップS47へ進む。
【0091】
一方、対象のPoolがマスタCM1aで獲得されている場合には(ステップS44のYESルート参照)、メモリ管理部113は、Pool ID有効時のキャッシュテーブルのサイズを算出する(ステップS46)。
【0092】
メモリ管理部113は、キャッシュテーブル獲得処理を実行する(ステップS47)。
【0093】
メモリ管理部113は、未処理の残Poolが存在するかを判定する(ステップS48)。
【0094】
未処理の残Poolが存在する場合には(ステップS48のYESルート参照)、処理はステップS44へ戻る。
【0095】
一方、未処理の残Poolが存在しない場合には(ステップS48のNOルート参照)、単体CM1のリブートの際におけるキャッシュテーブル獲得処理は終了する。
【0096】
〔A-3〕効果
上述した実施形態の一例におけるCM1及び制御プログラムによれば、例えば以下の作用効果を奏することができる。
【0097】
メモリ管理部113は、CM1の起動が、ストレージ装置100全体の起動によるものであるか、CM1単体の起動によるものであるかを判定する。そして、メモリ管理部113は、判定結果に応じて、ストレージ装置100の機能の有効化のためのキャッシュテーブルを格納するテーブル領域を獲得する。
【0098】
これにより、ストレージ装置100に備えられる複数のCM1間のキャッシュテーブル獲得状態を一致させることができる。具体的には、ストレージ装置100の機能有効化の際におけるキャッシュテーブル獲得処理の動作中において、機能有効化の処理が異常終了した場合でも、異常が発生したCM1のリブートの際に他のCM1との間でキャッシュテーブル獲得状態を一致させることができる。そして、キャッシュテーブル獲得状態をCM1間で整合性がある状態にすることで、ストレージ装置100を安定して稼働させることができる。
【0099】
メモリ管理部113は、スレーブとして機能する自CM1の起動がCM1単体の起動によるものである場合に、マスタとして機能するCM1から領域の獲得状態を取得し、取得した獲得状態に基づいてテーブル領域を獲得する。
【0100】
これにより、スレーブのCM1とマスタのCM1との間におけるキャッシュテーブル獲得状態を一致させることができる。
【0101】
メモリ管理部113は、獲得状態にIDが含まれているPoolについて、獲得状態で割り当てられている領域のサイズに応じて、テーブルの領域を獲得する。
【0102】
これにより、スレーブのCM1とマスタのCM1との間におけるキャッシュテーブルの領域サイズを一致させることができる。
【0103】
メモリ管理部113は、獲得状態にIDが含まれていないPoolについて、領域のサイズをゼロとして、テーブル領域を獲得する。
【0104】
これにより、マスタのCM1で獲得されていないPoolの領域サイズを0として、スレーブのCM1においてテーブル領域を獲得できる。
【0105】
メモリ管理部113は、獲得状態が取得できない場合に、ストレージ装置100全体を再起動させた後に、テーブル領域を獲得する。
【0106】
これにより、マスタのCM1からキャッシュテーブル獲得状態が取得できない場合においても、CM1間のキャッシュテーブル獲得状態の整合性を確実にとることができる。
【0107】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0108】
ストレージ装置100の装置構成は、図4に示した例に限定されるものではない。
【0109】
図12は、ハイエンドのストレージ装置100aのハードウェア構成例を模式的に示すブロック図である。
【0110】
ストレージ装置100aはn-1個のCE10(別言すれば、CE#0~#n)を備え、各CE10には4つのDE2がそれぞれ接続される。なお、CE10及びDE2の構成は、図4に示したストレージ装置100と同様である。
【0111】
また、ストレージ装置100aは、2つのFE3(別言すれば、FE#0,#1)を備える。
【0112】
各FE3は、2つのFrontend Router(FRT)31及びService Controller(SVC)32を備える。なお、FE#0はFRT#0,#1及びSVC#0を備え、FE#1はFRT#2,#3及びSVC#1を備える。
【0113】
FRT31は、FE3とCM1との間の通信経路を提供する。
【0114】
SVC32は、システム管理を担うユニットであり、ストレージ装置100aに搭載されるモジュールの監視及び制御を行なう。
【0115】
図12に示したストレージ装置100aにおいても、実施形態の一例に示したストレージ装置100と同様の作用効果を奏することができる。
【0116】
〔C〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0117】
(付記1)
ストレージ装置に備えられる複数のストレージ制御装置のうちの一のストレージ制御装置であって、
当該ストレージ制御装置の起動が、前記ストレージ装置全体の起動によるものであるか、当該ストレージ制御装置単体の起動によるものであるかを判定する判定部と、
前記判定部による判定結果に応じて、前記ストレージ装置の機能の有効化のための制御情報を格納する制御情報格納領域を設定する領域設定部と、
を備える、ストレージ制御装置。
【0118】
(付記2)
当該ストレージ制御装置は、前記ストレージ装置においてスレーブとして機能するストレージ制御装置であり、
前記領域設定部は、当該ストレージ制御装置の起動が当該ストレージ制御装置単体の起動によるものである場合に、前記複数のストレージ制御装置のうちのマスタとして機能するストレージ制御装置から前記制御情報格納領域の獲得状態を取得し、取得した前記獲得状態に基づいて前記制御情報格納領域を設定する、
付記1に記載のストレージ制御装置。
【0119】
(付記3)
前記領域設定部は、前記獲得状態に識別子が含まれているストレージプールについて、前記獲得状態で割り当てられている領域のサイズに応じて、前記制御情報格納領域を設定する、
付記2に記載のストレージ制御装置。
【0120】
(付記4)
前記領域設定部は、前記獲得状態に識別子が含まれていないストレージプールについて、領域のサイズをゼロとして、前記制御情報格納領域を設定する、
付記2又は3に記載のストレージ制御装置。
【0121】
(付記5)
前記領域設定部は、前記獲得状態が取得できない場合に、前記ストレージ装置全体を再起動させた後に、前記制御情報格納領域を設定する、
付記2~4のいずれか1項に記載のストレージ制御装置。
【0122】
(付記6)
ストレージ装置に備えられる複数のストレージ制御装置のうちの一のストレージ制御装置に備えられるコンピュータに、
当該ストレージ制御装置の起動が、前記ストレージ装置全体の起動によるものであるか、当該ストレージ制御装置単体の起動によるものであるかを判定し、
前記判定の結果に応じて、前記ストレージ装置の機能の有効化のための制御情報を格納する制御情報格納域を設定する、
処理を実行させる、制御プログラム。
【0123】
(付記7)
前記一のストレージ制御装置は、前記ストレージ装置においてスレーブとして機能するストレージ制御装置であり、
当該ストレージ制御装置の起動が当該ストレージ制御装置単体の起動によるものである場合に、前記複数のストレージ制御装置のうちのマスタとして機能するストレージ制御装置から前記制御情報格納領域の獲得状態を取得し、取得した前記獲得状態に基づいて前記制御情報格納領域を設定する、
処理を前記コンピュータに実行させる、付記6に記載の制御プログラム。
【0124】
(付記8)
前記獲得状態に識別子が含まれているストレージプールについて、前記獲得状態で割り当てられている領域のサイズに応じて、前記制御情報格納領域を設定する、
処理を前記コンピュータに実行させる、付記7に記載の制御プログラム。
【0125】
(付記9)
前記獲得状態に識別子が含まれていないストレージプールについて、領域のサイズをゼロとして、前記制御情報格納領域を設定する、
処理を前記コンピュータに実行させる、付記7又は8に記載の制御プログラム。
【0126】
(付記10)
前記獲得状態が取得できない場合に、前記ストレージ装置全体を再起動させた後に、前記制御情報格納領域を設定する、
処理を前記コンピュータに実行させる、付記7~9のいずれか1項に記載の制御プログラム。
【符号の説明】
【0127】
100,100a,600:ストレージ装置
10,60:CE
1,6 :CM
1a :マスタCM
1b :スレーブCM
11 :CPU
111 :GUI/CLI制御部
112 :コマンド制御部
113 :メモリ管理部
114 :構成管理部
115 :I/O制御部
12 :BIOS
13 :BUDコントローラ
14 :BUD
15 :IOC
16 :EXP
17 :CA
2,7 :DE
21 :IOM
22 :ディスク群
23 :FEM
3 :FE
31 :FRT
32 :SVC
4 :ユーザ/外部ソフトウェア
8 :ユーザ端末
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12