JP2021082052A - 制御装置及び制御プログラム - Google Patents

制御装置及び制御プログラム Download PDF

Info

Publication number
JP2021082052A
JP2021082052A JP2019209532A JP2019209532A JP2021082052A JP 2021082052 A JP2021082052 A JP 2021082052A JP 2019209532 A JP2019209532 A JP 2019209532A JP 2019209532 A JP2019209532 A JP 2019209532A JP 2021082052 A JP2021082052 A JP 2021082052A
Authority
JP
Japan
Prior art keywords
control
nas
san
control device
control unit
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
Application number
JP2019209532A
Other languages
English (en)
Inventor
岡本 博
Hiroshi Okamoto
博 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019209532A priority Critical patent/JP2021082052A/ja
Publication of JP2021082052A publication Critical patent/JP2021082052A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】他の制御装置と冗長システムを構築するとともに、第1OSと第2OSが動作し第1OSが第2OSと協働して動作する制御装置において、第2OSがパニックになったときに第1OSのパニックリブートを防ぐこと。【解決手段】第1OS(NAS制御部11a)のOS通信ドライバ23がSCSIドライバ経由でI/O要求を受け取ると第2OS(SAN制御部12a)がアクティブであるか否かを判定し、アクティブでない場合に、NAS通信ドライバ24がI/O要求を他の制御装置(CM10)へ転送する。【選択図】図7

Description

本発明は、制御装置及び制御プログラムに関する。
2つのOS(Operating System)が動作し、第1OSが第2OSに依存して動作する制御装置がある。例えば、ストレージ装置を制御する制御装置では、NAS(Network Attached Storage)制御OSとSAN(Storage Area Network)制御OSが動作し、NAS制御OSは、クライアントからI/O要求を受信すると、SAN制御OSに対してI/O要求を行う。ここで、クライアントは、ストレージ装置を利用する情報処理装置であり、I/O要求は、ストレージ装置が備えるHDD(Hard Disk Drive)装置、SSD(Solid State Drive)装置等の不揮発性記憶装置への読み書き要求である。
SAN制御OSは、NAS制御OSからI/O要求を受け取って処理し、NAS制御OSに処理結果を返す。NAS制御OSは、SAN制御OSから受け取った処理結果をクライアントに送信する。
なお、従来技術として、停止状態になった計算機を再起動するのに専用ハードウェアを必要とせず、ハードウェアコストが低減可能なマルチコンピュータシステムがある。このマルチコンピュータシステムは、複数のOSがそれぞれ動作している複数の計算機から構成される。このマルチコンピュータシステムでは、それぞれの計算機は、互いに生存通知の送受信を行うことによって他の計算機の生死監視機能を行うプログラムを有する。また、それぞれの計算機は、監視先OSの生死監視を行う監視元OSを有しており、監視先OSが停止した場合には、監視元OSが監視先OSの再起動を行う。
また、従来技術として、冗長構成を有する分散コンピュータシステムにおいて通信路を含めた故障に対して処理の中断時間を短縮し得る分散システムがある。この分散システムでは、コンピュータAの処理要求プログラムからの処理の要求をコンピュータBの被要求プログラムで実行途中に、コンピュータBが故障すると、処理の要求を実施し得るコンピュータCに処理の実行を要求することで、処理の再要求が実現される。
特開2003−186681号公報 特開平7−56872号公報
図17は、NAS制御OSがライトI/O要求を受信した場合のNAS制御OSとSAN制御OSの処理を説明するための図である。図17において、CM(Controller Module)#0及びCM#1で表されるCM90は、ストレージ装置を制御する制御装置である。CM#0とCM#1は、冗長システムを構築する。
CM#0のNAS制御OS91は、ライトI/O要求を受け取り(t91)、データを書き込む領域をメモリ93に確保する。そして、NAS制御OS91は、クライアントからデータを受け取り、メモリ93に確保した領域に書き込む(t92)。そして、NAS制御OS91は、SAN制御OS92へライト要求を行う(t93)。NAS制御OS91は、ライト要求を行う際に、データを書き込んだ領域のアドレスをSAN制御OS92へ通知する。
SAN制御OS92は、通知されたアドレスのデータを、自身が管理するメモリ93上のキャッシュ領域にコピーする(t94)。そして、SAN制御OS92は、CM#1との間でキャッシュデータの二重化を行う(t95)。
このように、NAS制御OS91は、SAN制御OS92を使用してクライアントからのI/O要求を処理する。このため、SAN制御OS92がパニック状態になると、NAS制御OS91は、SAN制御OS92へI/O要求を行うことができず、パニックリブートする。ここで、パニック状態とは、OSにおいて致命的な障害が生じ、正常状態への復旧が不可能な状態である。また、パニックリブートとは、復旧不可能な状態が発生したため、OSが再起動することである。
CM#0のNAS制御OS91がパニックリブートすると、CM#1への切り替えが行われるが、切り替えに時間がかかり、I/O処理が一時停止するという問題がある。切り替えに時間がかかる理由は、CM#1のNAS制御OS91への切り替えでは、ネットワークの引継ぎが行われるためである。ネットワークの引継ぎでは、TCP/IP(Transmission Control Protocol/Internet Protocol)層の引継ぎが完了した後に、上位プロトコルでの引継ぎも必要であり、時間がかかる。なお、上位プロトコルは、NFS(Network File System)/CIFS(Common Internet File System)である。
本発明は、1つの側面では、SAN制御OS92のような第2OSがパニック状態になった場合に、NAS制御OS91のような第1OSのパニックリブートを防ぐことで、処理の一時停止を防ぐことを目的とする。
1つの態様では、制御装置は、他の制御装置と冗長システムを構築する。前記制御装置では、第1OSと第2OSが動作し前記第1OSが前記第2OSと協働して動作する。前記第1OSが前記制御装置が備えるCPUで動作することで実現される制御部は、判定部と通信部とを有する。前記判定部は、前記第2OSが正常であるか否かを判定する。前記通信部は、前記判定部により前記第2OSが正常でないと判定された場合に、前記処理要求を前記判定部から受け取って前記他の制御装置に転送する。
1つの側面では、本発明は、第1OSから処理を依頼される第2OSがパニック状態になった場合に、第1OSのリブートを防ぐことで、処理の停止を防ぐことができる。
図1は、1つのコアで動作する2つのOSを説明するための図である。 図2は、実施例に係る制御装置で動作するNAS制御OSとSAN制御OSを説明するための図である。 図3は、NAS制御OSが用いるファイルシステムを説明するための図である。 図4は、実施例に係るストレージ装置におけるCM間通信を説明するための図である。 図5は、NAS制御OSとSAN制御OSとの間の生存監視を説明するための図である。 図6は、SAN制御OSがパニックリブートしているときのNAS制御OSの動作を説明するための図である。 図7は、NAS制御部及びSAN制御部の機能構成を示す図である。 図8は、SAN制御部が正常な場合の各機能部の動作を示す図である。 図9は、SAN制御部がパニックリブートしているときにI/O要求を受信した場合の各機能部の動作を示す図である。 図10は、SAN制御部のパニックリブートが完了した後にI/O要求を受信した場合の各機能部の動作を示す図である 図11は、NAS制御部によるSAN制御部の生存監視の処理のフローを示すフローチャートである。 図12は、SAN制御部によるNAS制御部の生存監視の処理のフローを示すフローチャートである。 図13は、I/O要求をSCSIドライバ経由で受け取ったときのOS通信ドライバの処理のフローを示すフローチャートである。 図14は、SAN制御部の状態変化の通知を受け取ったときのOS通信ドライバの処理のフローを示すフローチャートである。 図15は、生存監視部による処理のフローを示すフローチャートである。 図16は、CMのハードウェア構成を示す図である。 図17は、NAS制御OSがライトI/O要求を受信した場合のNAS制御OSとSAN制御OSの処理を説明するための図である。
以下に、本願の開示する制御装置及び制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る2つのOSについて図1〜図5を用いて説明する。図1は、1つのコア(Core)で動作する2つのOSを説明するための図である。図1では、コア#0〜コア#3で表される4つのコア2を備えるが、CPU1は、4以外の数のコア2を備えてよい。
図1に示すように、各コア2は、ハイパースレッデイング(Hyper-Threading)機能により2つのスレッドに分割される。コア#0はスレッド#0とスレッド#1に分割され、コア#1はスレッド#2とスレッド#3に分割され、コア#2はスレッド#4とスレッド#5に分割され、コア#3はスレッド#6とスレッド#7に分割される。スレッド#0、スレッド#2、スレッド#4及びスレッド#6では第1OSが動作し、スレッド#1、スレッド#3、スレッド#5及びスレッド#7では第2OSが動作する。
このように、ハイパースレッデイング機能によりコア2を2つのスレッドに分割することで、1つのコア2で2つのOSを動作させることができる。実施例に係る制御装置は、ハイパースレッデイング機能によりコア2を2つのスレッドに分割することで、NAS制御OSとSAN制御OSを動作させることができる。NAS制御OSとSAN制御OSを動作させることで、実施例に係る制御装置は、ユニファイドストレージを実現する。すなわち、実施例に係る制御装置は、SAN環境ストレージをNAS環境でも利用可能にする。このため、実施例に係る制御装置は、NASのプロトコルに基づくディスクアクセスをSAN制御OSを介して行う。
図2は、実施例に係る制御装置で動作するNAS制御OSとSAN制御OSを説明するための図である。図2において、CM#0で表されるCM10は、実施例に係るストレージ装置3を制御する制御装置である。図2に示すように、CM#0では、NAS制御OS11とSAN制御OS12が動作する。NAS制御OS11は、NASI/Oを受け付け、NASデータボリューム及びNASシステムボリュームにアクセスする。SAN制御OS12は、SANI/Oを受け付け、SANデータボリュームにアクセスする。
SAN制御OS12は、SAN制御OS12の機能のみでSANI/Oを処理する。一方、NAS制御OS11は、SAN制御OS12の機能を使用してNASI/Oを処理する。このため、NAS制御OS11が動作するためには、SAN制御OS12が動作することが必須である。すなわち、NAS制御OS11は、SAN制御OS12と協働して動作する。
図3は、NAS制御OS11が用いるファイルシステムを説明するための図である。図3に示すように、実施例に係るストレージ装置3は、CM#0とCM#1で表される2つのCM10を有する。CM#0とCM#1は、冗長システムを構築する。したがって、1つのNASデータボリュームは、CM#0で動作するNAS制御OS11とCM#1で動作するNAS制御OS11の両方から更新される。このため、NASデータボリュームへの書き込みには排他制御が必要であり、排他制御はファイルシステムにより行われる。
図4は、実施例に係るストレージ装置3におけるCM間通信を説明するための図である。図4に示すように、CM間通信には、SAN制御OS間の通信とNAS制御OS間の通信がある。SAN制御OS間の通信は、キャッシュデータの二重化及びSAN制御OS間の生存監視に用いられる。NAS制御OS間の通信は、NAS制御OS間の生存監視に用いられる。NAS制御OS間の通信には、例えば、Ethernet(登録商標)が用いられる。
また、実施例に係るストレージ装置3では、NAS制御OS11とSAN制御OS12との間でも生存監視が行われる。図5は、NAS制御OS11とSAN制御OS12との間の生存監視を説明するための図である。図5に示すように、NAS制御OS11及びSAN制御OS12は、共有メモリ14に設けられたカウンタ16及びカウンタ15をそれぞれ更新する。
そして、NAS制御OS11は、タイマー割込みにより、カウンタ15が更新されているか否かを確認することで、SAN制御OS12の生存確認を行う。SAN制御OS12は、タイマー割込みにより、カウンタ16が更新されているか否かを確認することで、NAS制御OS11の生存確認を行う。SAN制御OS12は、一定の時間、更新されていない場合は、NAS制御OS11をパニックリブートする。
次に、SAN制御OS12がパニックリブートしているときのNAS制御OS11の動作について説明する。図6は、SAN制御OS12がパニックリブートしているときのNAS制御OS11の動作を説明するための図である。
図6に示すように、CM#0のNAS制御OS11は、ライトI/O要求を受け取り(t1)、データを書き込む領域をメモリ13に確保する。そして、CM#0のNAS制御OS11は、クライアントからデータを受け取り、メモリ13に確保した領域に書き込む(t2)。そして、CM#0のNAS制御OS11は、SAN制御OS12がパニックリブートしていることを検知し、CM#1のNAS制御OS11にデータを送信する(t3)。
CM#1のNAS制御OS11は、データを受信してメモリ13に書き込み、SAN制御OS12へライト要求を行う(t4)。NAS制御OS11は、ライト要求を行う際に、データを書き込んだ領域のアドレスをSAN制御OS12へ通知する。SAN制御OS12は、ライト要求を受け取ると、通知されたアドレスのデータを、自身が管理するメモリ13上のキャッシュ領域にコピーする(t5)。
このように、CM#0のNAS制御OS11は、SAN制御OS12がパニックリブートしていることを検知すると、CM#1のNAS制御OS11にデータを送信し、CM#1のNAS制御OS11がCM#1のSAN制御OS12へライト要求を行う。したがって、CM#0のNAS制御OS11は、自身のパニックリブートを防ぐことができ、CM#1への切り替えを防ぐことができる。このため、実施例に係るストレージ装置3は、ネットワークの引継ぎを行うことなく、ライトI/O要求を処理することができ、処理の一時停止を防ぐことができる。
次に、NAS制御部及びSAN制御部の機能構成について説明する。ここで、NAS制御部は、NAS制御OS11がCPU1で実行されることにより実現される機能であり、SAN制御部は、SAN制御OS12がCPU1で実行されることにより実現される機能である。図7は、NAS制御部及びSAN制御部の機能構成を示す図である。図7に示すように、NAS制御部11aは、ファイルシステム21と、ブロックデバイス26と、SCSI(Small Computer System Interface)ドライバ22と、OS通信ドライバ23と、NAS通信ドライバ24と、生存監視部25とを有する。SAN制御部12aは、OS通信ドライバ31と、CA(Channel Adapter)部32と、キャッシュ管理部33と、CMドライバ34と、生存監視部35とを有する。
ファイルシステム21は、NASデータボリューム上のファイルを管理する。ファイルシステム21は、クライアントからNASI/O要求を受信してブロックデバイス26に渡す。ブロックデバイス26は、ファイルシステム21が受信したI/O要求をSCSIコマンドに変換し、SCSIドライバ22経由でOS通信ドライバ23に渡す。
SCSIドライバ22は、SCSIで接続されるディスクへのアクセスを行うドライバであるが、ここでは、ブロックデバイス26とOS通信ドライバ23の間の通信を中継する。
OS通信ドライバ23は、SAN制御部12aとの通信を行うドライバである。OS通信ドライバ23は、I/O要求をSCSIドライバ22から受け取ると、SAN制御部12aがアクティブであるか否かを判定する。そして、SAN制御部12aがアクティブである場合には、OS通信ドライバ23は、I/O要求の処理をSAN制御部12aに依頼し、I/O要求に対する応答をSAN制御部12aから受け取る。一方、SAN制御部12aがアクティブでない場合には、OS通信ドライバ23は、I/O要求をNAS通信ドライバ24を介して他のCM10のOS通信ドライバ23へ送信し、I/O要求に対する応答を他のCM10のOS通信ドライバ23から受信する。
なお、OS通信ドライバ23は、I/O要求の処理をSAN制御部12aに依頼すると、SAN制御部12aの処理をタイマーで監視する。タイマー監視時間は、SAN制御部12aでのディスク異常の処理時間も反映した時間であるので、SAN制御部12aの異常をタイマー監視で検出すると、検出までに時間がかかる。そこで、生存監視部25は、SAN制御部12aの状態に変化があると、OS通信ドライバ23に通知する。
OS通信ドライバ23は、SAN制御部12aの状態がアクティブからインアクティブへ変化したことを生存監視部25から通知されると、SAN制御部12aに依頼中のI/O要求が複数ある場合には、複数のI/O要求を1つの要求にまとめる。そして、OS通信ドライバ23は、1つの要求を他のCM10へ転送するようにNAS通信ドライバ24に指示する。OS通信ドライバ23は、複数のI/O要求を1つの要求にまとめることで、I/O要求の他のCM10への転送時間を短縮することができる。
OS通信ドライバ23は、SAN制御部12aがアクティブでない他のCM10からNAS通信ドライバ24を介してI/O要求を受け取ると、I/O要求の処理をSAN制御部12aに依頼し、I/O要求に対する応答をSAN制御部12aから受け取る。そして、OS通信ドライバ23は、受け取った応答をNAS通信ドライバ24を介して他のCM10に送信する。
NAS通信ドライバ24は、他のCM10のNAS制御部11aと通信を行うドライバである。NAS通信ドライバ24は、NAS制御OS間の生存監視及びファイルの排他のための制御情報の通信等に用いられる。
NAS通信ドライバ24は、自CM10のSAN制御部12aがインアクティブである場合に、I/O要求を他のCM10のNAS通信ドライバ24に転送し、I/O要求に対する応答を他のCM10のNAS通信ドライバ24から受信する。
NAS通信ドライバ24は、他のCM10のNAS通信ドライバ24からI/O要求を受信すると、OS通信ドライバ23に渡し、OS通信ドライバ23から応答を受け取ると、他のCM10のNAS通信ドライバ24へ送信する。
NAS通信ドライバ24は、他のCM10のNAS通信ドライバ24から1つの要求にまとめられた複数のI/O要求を受信すると、元の複数のI/O要求に分割してOS通信ドライバ23に渡す。NAS通信ドライバ24は、分割してOS通信ドライバ23に渡したI/O要求ごとに応答を受け取り、他のCM10のNAS通信ドライバ24へ送信する。NAS通信ドライバ24は、1つの要求にまとめられる前のI/O要求ごとに応答を他のCM10のNAS通信ドライバ24へ送信するので、応答をまとめる場合の待合せ時間をなくし、クライアントへの応答時間を短縮することができる。
生存監視部25は、SAN制御部12aの生存監視部35と連携して、相互に生存監視を行う。具体的には、生存監視部25は、タイマー割込みにより、一定の周期で共有メモリ上のカウンタ16を更新する。また、生存監視部25は、タイマー割込みにより、一定の周期で共有メモリ上のカウンタ15を確認する。そして、生存監視部25は、カウンタ15が更新されていない場合に、SAN制御部12aの状態がアクティブであればインアクティブに変更する。また、生存監視部25は、カウンタ15が更新されている場合に、SAN制御部12aの状態がインアクティブであればアクティブに変更する。生存監視部25は、SAN制御部12aの状態に変化があると、SAN制御部12aの状態の変化をOS通信ドライバ23に通知する。
OS通信ドライバ31は、NAS制御部11aと通信を行うドライバである。CA部32は、クライアントと通信を行うインタフェースであるCAを制御するが、ここでは、OS通信ドライバ31とキャッシュ管理部33の間の通信を中継する。
キャッシュ管理部33は、メモリ上のキャッシュデータを管理する。キャッシュ管理部33は、他のCM10のキャッシュ管理部33との間でキャッシュデータの二重化を行う。
CMドライバ34は、他のCM10のSAN制御部12aと通信を行うドライバである。CMドライバ34は、キャッシュデータの二重化及びSAN制御OS間の生存監視に用いられる。
生存監視部35は、NAS制御部11aの生存監視部25と連携して、相互に生存監視を行う。具体的には、生存監視部35は、タイマー割込みにより、一定の周期で共有メモリ上のカウンタ15を更新する。また、生存監視部35は、タイマー割込みにより、一定の周期で共有メモリ上のカウンタ16を確認し、カウンタ16が更新されていない場合に、NAS制御部11aをパニックリブートする。
次に、NASI/O要求に対する各機能部の動作について図8〜図10を用いて説明する。図8は、SAN制御部12aが正常な場合の各機能部の動作を示す図である。図8に示すように、ファイルシステム21は、NASI/O要求を受け取ると(t11)、SCSIドライバ22及びブロックデバイス26経由でNASI/O要求をOS通信ドライバ23に渡す。OS通信ドライバ23は、自CM10のSAN制御部12aにI/O要求を行う(t12)。
SAN制御部12aのOS通信ドライバ31は、I/O要求を受け取ると、CA部32経由でキャッシュ管理部33にI/O要求を渡す。そして、キャッシュ管理部33は、I/O処理を行う(t13)。なお、キャッシュ管理部33は、必要であればキャッシュデータを他のCM10へ送信する。
図9は、SAN制御部12aがパニックリブートしているときにI/O要求を受信した場合の各機能部の動作を示す図である。図9に示すように、NAS制御部11aの生存監視部25は、OS間生存監視(t21)において、SAN制御部12aがパニックリブートしていることを検知すると、SAN制御部12aの状態をアクティブからインアクティブに変更する。
ファイルシステム21は、NASI/O要求を受け取ると(t22)、SCSIドライバ22及びブロックデバイス26経由でNASI/O要求をOS通信ドライバ23に渡す。OS通信ドライバ23は、SAN制御部12aの状態がインアクティブであるので、CM#1のNAS制御部11aにNAS通信ドライバ24を介してNASI/O要求を転送する(t23)。CM#1のOS通信ドライバ31は、NAS通信ドライバ24を介してNASI/O要求を受信すると、SAN制御部12aにNASI/O要求を行う(t24)。
このように、OS通信ドライバ23は、SAN制御部12aの状態がインアクティブであると、CM#1のNAS制御部11aにNASI/O要求を転送するので、NAS制御部11aのパニックリブートを防ぐことができる。
図10は、SAN制御部12aのパニックリブートが完了した後にI/O要求を受信した場合の各機能部の動作を示す図である。図10に示すように、NAS制御部11aの生存監視部25は、OS間生存監視(t31)において、SAN制御部12aが動作可能になったことを検知すると、SAN制御部12aの状態をインアクティブからアクティブに変更する。
ファイルシステム21は、NASI/O要求を受け取ると(t32)、SCSIドライバ22及びブロックデバイス26経由でNASI/O要求をOS通信ドライバ23に渡す。OS通信ドライバ23は、SAN制御部12aの状態がアクティブであるので、自CM10のSAN制御部12aにI/O要求を行う。
SAN制御部12aのOS通信ドライバ31は、I/O要求を受け取ると、CA部32経由でキャッシュ管理部33にI/O要求を渡す。そして、キャッシュ管理部33は、必要であれば、CMドライバ34経由でCM#1のSAN制御部12aへデータを転送する(t33)。そして、キャッシュ管理部33は、I/O処理を行う(t34)。
次に、CM10による処理のフローについて図11〜図15を用いて説明する。図11は、NAS制御部11aによるSAN制御部12aの生存監視の処理のフローを示すフローチャートである。図11に示すように、NAS制御部11aは、タイマー割込みにより、一定の周期で共有メモリ上のSAN制御部12aのカウンタ15が更新されているかを確認する(ステップS1)。
そして、NAS制御部11aは、更新ありか否かを判定し(ステップS2)、更新なしの場合には、SAN制御部12aの状態がアクティブのときインアクティブに変更する(ステップS3)。一方、更新ありの場合には、NAS制御部11aは、SAN制御部12aの状態がインアクティブのときアクティブに変更する(ステップS4)。
このように、NAS制御部11aは、カウンタ15の更新状態に基づいて、SAN制御部12aの生存監視を行うことで、I/O要求の転送先を決定することができる。
図12は、SAN制御部12aよるNAS制御部11aの生存監視の処理のフローを示すフローチャートである。図12に示すように、SAN制御部12aは、タイマー割込みにより、一定の周期で共有メモリ上のNAS制御部11aのカウンタ16が更新されているかを確認する(ステップS11)。そして、SAN制御部12aは、更新ありか否かを判定し(ステップS12)、更新なしの場合には、NAS制御部11aが動作していないと判断し、NAS制御部11aをパニックリブートさせる(ステップS13)。
このように、SAN制御部12aは、カウンタ16の更新状態に基づいて、NAS制御部11aの生存監視を行うことで、NAS制御部11aをパニックリブートさせることができる。
図13は、I/O要求をSCSIドライバ経由で受け取ったときのOS通信ドライバ23の処理のフローを示すフローチャートである。図13に示すように、OS通信ドライバ23は、ファイルシステム21が受信したI/O要求をSCSIドライバ経由で受け取り(ステップS21)、SAN制御部12aの状態はアクティブであるか否かを判定する(ステップS22)。
そして、SAN制御部12aの状態がアクティブの場合には、OS通信ドライバ23は、SAN制御部12aのOS通信ドライバ31にI/O要求を行う(ステップS23)。一方、SAN制御部12aの状態がインアクティブの場合には、OS通信ドライバ23は、他のCM10へのI/O要求の転送をNAS通信ドライバ24に指示する(ステップS24)。
このように、OS通信ドライバ23は、SAN制御部12aの状態がインアクティブの場合に、他のCM10へのI/O要求の転送をNAS通信ドライバ24に指示するので、
NAS制御部11aのパニックリブートを防ぐことができる。
図14は、SAN制御部12aの状態変化の通知を受け取ったときのOS通信ドライバ23の処理のフローを示すフローチャートである。図14に示すように、OS通信ドライバ23は、SAN制御部12aの状態変化の通知を受け取り(ステップS31)、SAN制御部12aの状態変化がアクティブへの変化であるか否かを判定する(ステップS32)。
そして、SAN制御部12aの状態変化がアクティブへの変化である場合には、OS通信ドライバ23は、次のI/O要求を待つ(ステップS33)。一方、SAN制御部12aの状態変化がアクティブへの変化でない場合には、OS通信ドライバ23は、SAN制御部12aへ依頼中のI/O要求を1つの要求にまとめ、他のCM10への転送をNAS通信ドライバ24に指示する(ステップS34)。
このように、OS通信ドライバ23は、SAN制御部12aの状態がインアクティブに変化した場合に、SAN制御部12aへ依頼中のI/O要求を1つの要求にまとめ、他のCM10への転送をNAS通信ドライバ24に指示する。したがって、OS通信ドライバ23は、SAN制御部12aのパニックによりSAN制御部12aへ依頼中のI/O要求が処理されない事態の発生を防ぐことができる。
図15は、生存監視部25による処理のフローを示すフローチャートである。なお、生存監視部25は、タイマー割込みにより、一定の周期で図15に示す処理を行う。図15に示すように、生存監視部25は、SAN制御部12aのカウンタ15が更新されているか否かを判定し(ステップS41)、更新されている場合には、SAN制御部12aの状態はアクティブか否かを判定する(ステップS42)。そして、SAN制御部12aの状態がアクティブの場合には、生存監視部25は、処理を終了する。
一方、SAN制御部12aの状態がアクティブでない場合には、生存監視部25は、SAN制御部12aの状態をアクティブに変更し(ステップS43)、SAN制御部12aの状態変化をOS通信ドライバ23に通知する(ステップS44)。
また、ステップS41において、SAN制御部12aのカウンタ15が更新されていない場合には、生存監視部25は、SAN制御部12aの状態はアクティブか否かを判定する(ステップS45)。そして、SAN制御部12aの状態がアクティブの場合には、生存監視部25は、SAN制御部12aの状態をインアクティブに変更し(ステップS46)、SAN制御部12aの状態変化をOS通信ドライバ23に通知する(ステップS44)。一方、SAN制御部12aの状態がアクティブでない場合には、生存監視部25は、処理を終了する。
このように、生存監視部25が、SAN制御部12aの状態を監視して状態を管理し、状態に変化があるとOS通信ドライバ23に通知するので、OS通信ドライバ23は、SAN制御部12aの状態及び状態変化に基づく処理を行うことができる。
次に、CM10のハードウェア構成について説明する。図16は、CM10のハードウェア構成を示す図である。図16に示すように、CM10は、CPU1と、メモリ13と、CA41と、IOC(Input Output Controller)42と、EXP(Expander)43と、NIF(Network Interface)44と、SIF(SAN Interface)45とを有する。
CPU1は、メモリ13に記憶されたファームウェアを読出して実行する。メモリ13は、ファームウェア、ファームウェアの実行に必要なデータ、ファームウェア実行の途中結果等を記憶する。また、メモリ13は、キャッシュデータを記憶する。
CA41は、クライアントとのインタフェースである。IOC42は、SAS(Serial Attached SCSI)のコントローラである。EXP43は、SAS接続用のチップである。NIF44は、NAS制御OS間の通信に用いられる通信インタフェースである。NAS通信ドライバ24は、NIF44を用いて通信を行う。SIF45は、SAN制御OS間の通信に用いられる通信インタフェースである。CMドライバ34は、SIF45を用いて通信を行う。
上述してきたように、実施例では、OS通信ドライバ23がSCSIドライバ経由でI/O要求を受け取るとSAN制御部12aがアクティブであるか否かを判定し、アクティブでない場合に、NAS通信ドライバ24がI/O要求を他のCM10へ転送する。したがって、SAN制御部12aがパニックリブートしているときに、CM10は、NAS制御部11aがパニックリブートするのを防ぐことができる。このため、CM10は、冗長系への切り替えを防ぎ、I/O処理の一時停止を防ぐことができる。
また、実施例では、SAN制御部12aがアクティブからインアクティブに変化すると、生存監視部25が、OS通信ドライバ23に当該変化を通知する。すると、OS通信ドライバ23はSAN制御部12aに依頼中のI/O要求をNAS通信ドライバ24を介して他のCM10へ転送する。したがって、CM10は、インアクティブに変化したSAN制御部12aに依頼中のI/O要求の処理依頼を他のCM10に迅速に行うことができる。
また、実施例では、OS通信ドライバ23は、インアクティブに変化したSAN制御部12aに依頼中のI/O要求が複数ある場合には、1つの要求にまとめてNAS通信ドライバ24を介して他のCM10へ転送する。したがって、CM10は、インアクティブに変化したSAN制御部12aに依頼中のI/O要求を効率よく転送することができる。
また、実施例では、NAS通信ドライバ24は、他のCM10からI/O要求が送られてくると、OS通信ドライバ23に渡し、OS通信ドライバ23は、I/O要求の処理をSAN制御部12aに依頼する。したがって、CM10は、他のCM10が受信したI/O要求を処理することができる。
また、実施例では、NAS通信ドライバ24は、他のCM10から複数のI/O要求がまとめて送られてくると、個々のI/O要求に分割してOS通信ドライバ23に渡す。そして、OS通信ドライバ23は、I/O要求ごとにSAN制御部12aに処理を依頼し、SAN制御部12aからのI/O要求ごとの応答をNAS通信ドライバ24に渡す。そして、NAS通信ドライバ24は、I/O要求ごとに応答を他のCM10へ送信する。したがって、送られてきた複数のI/O要求の応答をまとめて他のCM10へ送信する場合と比較して、CM10は、複数の応答間の待合せ時間をなくし、クライアントへの応答を高速に行うことができる。
なお、実施例では、ストレージ装置3を制御する制御装置について説明したが、制御装置は、他の装置を制御してもよい。このとき、制御装置では、NAS制御OS11に対応する第1OSと、SAN制御OS12に対応する第2OSが動作する。例えば、第1OSは、高度なHMI(Human Machine Interface)機能、画像処理機能、ネットワーク機能等を有するOSであり、第2OSは、リアルタイムOSである。
1 CPU
2 コア
3 ストレージ装置
10,90 CM
11,91 NAS制御OS
11a NAS制御部
12,92 SAN制御OS
12a SAN制御部
13,93 メモリ
14 共有メモリ
15 カウンタ
16 カウンタ
21 ファイルシステム
22 SCSIドライバ
23 OS通信ドライバ
24 NAS通信ドライバ
25 生存監視部
26 ブロックデバイス
31 OS通信ドライバ
32 CA部
33 キャッシュ管理部
34 CMドライバ
35 生存監視部
41 CA
42 IOC
43 EXP
44 NIF
45 SIF

Claims (8)

  1. 他の制御装置と冗長システムを構築するとともに、第1OSと第2OSが動作し前記第1OSが前記第2OSと協働して動作する制御装置において、
    前記第1OSが前記制御装置が備えるCPUで動作することで実現される制御部は、前記第2OSが正常であるか否かを判定する判定部と、
    前記判定部により前記第2OSが正常でないと判定された場合に、処理要求を前記判定部から受け取って前記他の制御装置に転送する通信部
    を有することを特徴とする制御装置。
  2. 前記制御部は、
    前記第2OSを監視し、該第2OSが正常から異常に変化したことを特定する監視部をさらに有し、
    前記判定部は、前記第2OSが正常から異常に変化したことを前記監視部が特定すると、該第2OSに依頼中の処理要求があるか否かを判定し、
    前記通信部は、前記判定部により前記第2OSに依頼中の処理要求があると判定された場合に、該処理要求を前記他の制御装置に転送することを特徴とする請求項1に記載の制御装置。
  3. 前記通信部は、前記第2OSに依頼中の処理要求が複数ある場合に、該複数の処理要求をまとめて前記他の制御装置に転送することを特徴とする請求項2に記載の制御装置。
  4. 前記通信部は、他の制御装置の通信部から転送された処理要求を受信し、
    前記判定部は、前記通信部により受信された処理要求を該通信部から受け取って前記第2OSに渡すことを特徴とする請求項3に記載の制御装置。
  5. 前記通信部は、他の制御装置の通信部から複数の処理要求をまとめて受信すると、前記判定部に1つずつ処理要求を渡し、
    前記判定部は、前記通信部から1つずつ処理要求を受け取って前記第2OSに渡すことを特徴とする請求項4に記載の制御装置。
  6. 前記判定部は、前記第2OSから前記処理要求に対する応答を1つずつ受け取って前記通信部に渡し、
    前記通信部は、前記複数の処理要求に対する応答を1つずつ前記他の制御装置の通信部に送信することを特徴とする請求項5に記載の制御装置。
  7. 前記処理要求は、記憶装置への読み書き要求であり、
    前記第1OSは、NAS制御OSであり、
    前記第2OSは、SAN制御OSであり、
    をさらに有することを特徴とする請求項2に記載の制御装置。
  8. 他の制御装置と冗長システムを構築する制御装置のコンピュータで他の制御プログラムに協働して動作する制御プログラムおいて、
    前記他の制御プログラムが正常であるか否かを判定し、
    前記他の制御プログラムが正常でないと判定した場合に、処理要求を前記他の制御装置に転送する
    処理を前記コンピュータに実行させることを特徴とする制御プログラム。
JP2019209532A 2019-11-20 2019-11-20 制御装置及び制御プログラム Pending JP2021082052A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019209532A JP2021082052A (ja) 2019-11-20 2019-11-20 制御装置及び制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019209532A JP2021082052A (ja) 2019-11-20 2019-11-20 制御装置及び制御プログラム

Publications (1)

Publication Number Publication Date
JP2021082052A true JP2021082052A (ja) 2021-05-27

Family

ID=75965270

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019209532A Pending JP2021082052A (ja) 2019-11-20 2019-11-20 制御装置及び制御プログラム

Country Status (1)

Country Link
JP (1) JP2021082052A (ja)

Similar Documents

Publication Publication Date Title
US8560628B2 (en) Supporting autonomous live partition mobility during a cluster split-brained condition
US9182918B2 (en) Network storage systems having clustered raids for improved redundancy and load balancing
US9052833B2 (en) Protection of former primary volumes in a synchronous replication relationship
JP5463267B2 (ja) 仮想計算機システムおよび仮想計算機の移行方法
JP5147941B2 (ja) 異なるネットワークを介した1次ストレージから2次ストレージへの書き込みコピーを管理するための方法、システム、およびコンピュータ・プログラム
US9483352B2 (en) Process control systems and methods
JP2011060055A (ja) 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム
JP5392594B2 (ja) 仮想計算機冗長化システム、コンピュータシステム、仮想計算機冗長化方法、及びプログラム
JP2008517358A (ja) ストレージ管理を容易にするための装置、システム、および方法
JP2004021556A (ja) 記憶制御装置およびその制御方法
WO2015104841A1 (ja) 多重系システムおよび多重系システム管理方法
JP2004348701A (ja) 計算機システム間のデータ二重化制御方法
JP2012190175A (ja) フォールトトレラントシステム、サーバ、フォールトトレラント化方法およびプログラム
JP2009080705A (ja) 仮想計算機システム及び同システムにおける仮想計算機復元方法
JP5285045B2 (ja) 仮想環境における故障復旧方法及びサーバ及びプログラム
EP3167372B1 (en) Methods for facilitating high availability storage services and corresponding devices
JP5435205B2 (ja) マルチノードシステム、ノード、メモリダンプ処理方法、及びプログラム
JP2006114064A (ja) 記憶サブシステム
JP2021082052A (ja) 制御装置及び制御プログラム
JP6773345B1 (ja) フォールトトレラントシステム、サーバ、及びそれらの運用方法
JP2009042932A (ja) 記憶制御装置の制御プログラムの更新方法
WO2014155654A1 (ja) 情報処理装置及び情報処理装置の交換支援システム並びに交換支援方法
JP6954693B2 (ja) フォールトトレラントシステム、サーバ、それらの運用方法、及びプログラム
JP2014134925A (ja) 情報処理システム、制御方法および制御プログラム
JP7056057B2 (ja) 情報処理装置、情報処理方法、情報処理システム、及び、コンピュータ・プログラム