特許第6235163号(P6235163)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社日立製作所の特許一覧

<>
  • 特許6235163-計算機システム及びその制御方法 図000002
  • 特許6235163-計算機システム及びその制御方法 図000003
  • 特許6235163-計算機システム及びその制御方法 図000004
  • 特許6235163-計算機システム及びその制御方法 図000005
  • 特許6235163-計算機システム及びその制御方法 図000006
  • 特許6235163-計算機システム及びその制御方法 図000007
  • 特許6235163-計算機システム及びその制御方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6235163
(24)【登録日】2017年11月2日
(45)【発行日】2017年11月22日
(54)【発明の名称】計算機システム及びその制御方法
(51)【国際特許分類】
   G06F 3/06 20060101AFI20171113BHJP
   G06F 13/10 20060101ALI20171113BHJP
【FI】
   G06F3/06 305Z
   G06F13/10 340A
【請求項の数】12
【全頁数】16
(21)【出願番号】特願2016-558483(P2016-558483)
(86)(22)【出願日】2014年11月12日
(86)【国際出願番号】JP2014079905
(87)【国際公開番号】WO2016075765
(87)【国際公開日】20160519
【審査請求日】2017年2月13日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000279
【氏名又は名称】特許業務法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】荒木 亮彦
(72)【発明者】
【氏名】野中 裕介
(72)【発明者】
【氏名】高田 正法
(72)【発明者】
【氏名】岡田 尚也
【審査官】 田名網 忠雄
(56)【参考文献】
【文献】 特開2004−220216(JP,A)
【文献】 特開2010−218198(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 13/10−13/14
(57)【特許請求の範囲】
【請求項1】
制御部と記憶部と、前記制御部と接続される少なくとも1のモジュールを有する計算機システムであって、
前記少なくとも1のモジュールは異なる用途を有する複数のパスによって前記制御と接続され、
前記記憶部は、
前記モジュールの種類と、前記モジュールの種類に応じた障害処理範囲を管理する障害処理範囲情報と、
各前記パスまたは前記モジュールで障害が起きた場合の閉塞範囲を規定する閉塞範囲情報を有し、
前記制御部は、
前記モジュールと前記パスの接続情報と、前記障害処理範囲情報に基づいて、前記パスと前記パスに接続される前記モジュールと前記パスまたは前記モジュールの何れかで障害が起きた場合に閉塞する必要があるパスと前記モジュールとの関係を生成し、前記閉塞範囲情報として記憶し、
前記パスでの障害を検知すると、前記閉塞範囲情報に基づいて、前記障害が起きたパスに接続される前記モジュールと当該モジュールに接続される別の前記パスについて閉塞処理を行う計算機システム。
【請求項2】
請求項1記載の計算機システムであって、
前記制御部は前記少なくとも1のモジュールと関係する処理を実行する複数の処理部を有し、
前記少なくとも1のモジュールは前記複数の処理部それぞれと別のパスで接続されている計算機システム。
【請求項3】
請求項1記載の計算機システムであって、
前記モジュールでの障害を検知すると、
前記モジュールと、当該モジュールに接続される前記複数のパスとの閉塞を行う計算機システム。
【請求項4】
請求項記載の計算機システムであって、
前記計算機システムはブロックインタフェースとファイルインタフェースを有するストレージシステムであって、
前記少なくとも1のモジュールはファイルインタフェースであって、
第1の前記処理部は、接続される前記パスを通じてファイルインタフェースの制御をおこなうファイルI/O処理部であって、第2の前記処理部は前記ファイルインタフェースを介してホストとやり取りされるデータのストレージへのI/Oを制御するブロックI/O処理部である計算機システム。
【請求項5】
請求項4記載の計算機システムであって、
前記ブロックI/O処理部の指示により前記閉塞処理が実行される計算機システム。
【請求項6】
請求項4記載の計算機システムであって、
前記ブロックインタフェース又は前記ブロックインタフェースに接続されるパスで障害が発生した場合には、
当該ブロックインタフェース及び前記ブロックインタフェース接続されるパスについて閉塞処理を実行する計算機システム。
【請求項7】
制御部と記憶部と、前記制御部と接続される少なくとも1のモジュールを有する計算機システムで実行される計算機システム制御方法あって、
前記少なくとも1のモジュールは用途の異なる複数のパスで他の部位と接続され、
前記制御部は、
前記モジュールと前記パスの接続情報と、前記モジュールの種類と前記モジュールの種類に応じた障害処理範囲を管理する障害処理範囲情報とに基づいて、各前記パスまたは前記モジュールで障害が起きた場合の閉塞範囲を管理する閉塞範囲情報を生成し、
前記パスでの障害を検知し、
前記閉塞範囲情報を参照し、
前記障害が起きたパスに接続される前記モジュールと当該モジュールに接続される別の前記パスについての閉塞処理を行う計算機システム制御方法。
【請求項8】
請求項記載の計算機システム制御方法であって、
前記計算機システムの前記制御部は前記少なくとも1のモジュールと関係する処理を実行する複数の処理部を有し、
前記少なくとも1のモジュールは前記複数の処理部それぞれと別のパスで接続されている計算機システム制御方法。
【請求項9】
請求項記載の計算機システム制御方法であって、
前記制御部は、
前記モジュールでの障害を検知すると、
前記モジュールと、当該モジュールに接続される複数の前記パスとの閉塞を行う計算機システム制御方法。
【請求項10】
請求項記載の計算機システム制御方法あって、
前記計算機システムはブロックインタフェースとファイルインタフェースを有するストレージシステムであって、
前記少なくとも1のモジュールはファイルインタフェースであって、
第1の前記制御部は、接続される前記パスを通じてファイルインタフェースの制御をおこなうファイルI/O処理部であって、第2の前記制御部は前記ファイルインタフェースを介してホストとやり取りされるデータのストレージへのI/Oを制御するブロックI/O処理部である計算機システム制御方法。
【請求項11】
請求項1記載の計算機システム制御方法であって、
前記ブロックI/O処理部の指示により前記閉塞処理が実行される計算機システム制御方法。
【請求項12】
請求項1記載の計算機システム制御方法であって、
前記制御部は、
前記ブロックインタフェース又は前記ブロックインタフェースに接続されるパスで障害が発生した場合には、
当該ブロックインタフェース及び前記ブロックインタフェース接続されるパスについて閉塞処理を実行する計算機システム制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置に関する。
【背景技術】
【0002】
通常、システムを構築するモジュール同士は1本あるいは複数のパスで接続される。1本で接続されるような場合、何れかのモジュールあるいは接続パスに障害が発生した場合には、当該モジュール及び当該接続パスを閉塞することで障害の影響範囲を限定し、システム全体の耐障害性を高めている(例えば、特許文献1参照)。
【0003】
モジュール同士を複数のパスで接続する意図は、冗長性や性能の向上である。この場合、何れかのモジュールで障害が発生した場合には、当該モジュールと接続パス全てを閉塞する。複数ある接続パスのうち何れか1本に障害が発生した場合には、当該接続パスのみを閉塞し、残存パスで動作を継続する場合もある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第 8402189号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
処理対象となるデータの多様化に伴い、複数の多様なモジュールを接続してシステムを構築することも多くなっている。更に、処理対象とするデータの種類に応じてストレージコントローラ内でも複数の処理プログラムが準備されることもある。
【0006】
こうしたシステムの複雑化を背景に、1つのモジュールが、他のモジュールと2本以上のパスで接続され、かつ夫々のパスは異なる用途に使われるような形態が想定される。
【0007】
単一のデバイスでありながら異なる目的で仕様されるパスで接続されるハードウェアを搭載する場合、片方のパス上で恒久的な障害が発生した場合、そのデバイスやパスだけを閉塞させてしまうと、他方のパスに障害が波及してCPUやその他デバイスの正常稼動を妨げる恐れがある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は、制御部と記憶部と、前記制御部と接続される少なくとも1のモジュールを有しており、少なくとも1のモジュールは異なる用途を有する複数のパスによって前記制御と接続されている計算機システムを開示する。記憶部は、各前記パスまたは前記モジュールで障害が起きた場合の閉塞範囲を規定する閉塞範囲情報を有しており、制御部は、前記パスでの障害を検知すると、閉塞管理情報に基づいて、障害が起きたパスに接続される前記モジュールと当該モジュールに接続される別の前記パスについて閉塞処理を行う。
【発明の効果】
【0009】
本願は、複数のパスを使用する単一デバイスを搭載するような形態においても適切な範囲で障害処理を実施し、システムの信頼性や可用性を向上させることができる。
【図面の簡単な説明】
【0010】
図1】本発明における、ストレージシステムの装置構成の一例を示す図である。
図2】本発明における、ストレージシステムの装置構成の一例を示す図である。
図3】本発明における、ストレージシステムが備えるデバイスタイプテーブルの一例を示す図である。
図4】本発明における、障害処理範囲管理テーブルの一例を示す図である。
図5】本発明における、障害処理範囲管理テーブルを作成するための処理例を示すフローチャートである。
図6】本発明における、障害処理範囲管理テーブルを作成するための処理例を示すフローチャートである。
図7】本発明における、ストレージシステムの障害処理例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、各図を参照しながら本発明の実施形態の一例を説明する。なお、以下の実施例において、同一の構造部を持ち、同一の符号を付した部分は、原則として同一の動作を行うため、重複する説明を省略した。
【0012】
近年では、複数種類のホストインタフェースプロトコルに対応した、ユニファイドストレージが注目されている。複数種類のホストインタフェースとは、SCSIコマンドのような、ブロック単位のアクセス要求を受ける、FCP(Fiber Channel Protocol for SCSI)やiSCSI(internet SCSI)であったり、ファイル単位のアクセス要求を受ける、CIFS(Common Internet File System))やNFS(Network File System)であったりする。本実施例ではストレージシステムの一例としてこのユニファイドストレージを用いて本発明を開示する。
【0013】
ユニファイドストレージの実現方式として、ストレージ装置内に複数のOS(Operating System)やハードウェアを共存させ、データは装置内のディスクアレイに一元的に格納する形態が考えられる。例えば、ファイルサービス機能を有するハードウェア群をブロックストレージのPCIe(PCI Express)デバイスとして接続し、ブロックストレージ全体を制御するソフトウェアであるブロックプログラムとファイルサービス機能を有するハードウェア群を制御するソフトウェアであるファイルプログラムとをブロックストレージのコントローラのCPU上にて同時稼動させる形態である。ブロックプログラムがFCPやiSCSIのプロトコル処理を、ファイルプログラムあるいはファイルサービス機能を有するハードウェア群がCIFSやNFSのプロトコル処理を、それぞれ担当する。
【0014】
ファイルプログラムやファイルサービスを提供するハードウェア群が担当するCIFSやNFSといったプロトコル処理は、ファイルサービス機能を有するハードウェア群やファイルプログラムが提供するファイルシステム機能を経由してディスクI/O、つまりSCSIコマンドとしてブロックプログラムに発行される。従来のファイルサーバとブロックストレージの間には、物理結線としてはFCケーブルなどが使用され、プロトコルとしてはFCPやiSCSIが使用されていたが、単一のストレージ装置内にファイルサービス機能を搭載する場合、例えばPCIeによる接続が考えられる。この場合、ファイルサービス機能を有するハードウェア群は、単一のPCIeデバイスでありながら、CPUとは2本以上のPCIeパスで接続されることになる。複数のPCIeパスの一部はファイルプログラムによる制御用途であり、他の一部はSCSIコマンドやデータのやり取りであってブロックプログラムに接続される。
【0015】
図1は、本発明の対象とするシステム構成の一例の概略を示す図である。ストレージシステム100は、コントローラ101、ファイルサービスモジュール108、ディスクインタフェース109とを備える。コントローラ101はその内部に、プロセッサ102、メモリ103、ハードウェア群110を備え、内部ネットワーク107で相互に接続される。内部ネットワーク107は、ファイルサービスモジュール108、ディスクインタフェース109とも接続される。
【0016】
メモリ103は、論理ボリューム111に格納されるデータや制御情報の一時的な格納領域であるキャッシュメモリ104の他に制御プログラム105と、ストレージ管理情報106を格納する。キャッシュメモリ104と制御プログラム105、ストレージ管理情報106は物理的に異なるメモリに格納されてもよい。プロセッサ102はCPUを有し、制御プログラム105によってストレージシステム100全体を制御する。ハードウェア群110としては、不揮発メモリ、ストレージシステム100外部の管理コンピュータとストレージシステム100とを繋ぐインタフェース、電力供給ハードウェア、プロセッサ102が動作不可能な状態に陥った場合にストレージシステム100を安全に停止させ、外部に通報するための障害処理補助装置等が含まれる。論理ボリューム111は、単一あるいは複数の不揮発記憶媒体の記憶領域から論理的に構築した記憶領域であり、データや制御情報が格納される。
【0017】
制御プログラム105は、プロセッサ102上で稼動するソフトウェアプロプログラムであり、本発明においては複数種類のプログラムが存在する。本実施例では、ブロック単位のアクセス要求に対するサービス(ブロックサービス)を提供する、ブロックプログラム120と、ファイルサービスモジュール108を制御するファイルプログラム130を少なくとも有する。つまり2つの異なるデバイスを制御する異なるプログラムが動作する。各プログラムは、コントローラ101上で独立に稼動してもよいし、ブロックプログラム120の構成要素の一つとしてファイルプログラム130が稼動してもよい。更に、制御プログラム105には外部の管理コンピュータと通信して管理機能を提供するプログラム、ストレージシステム100全体の稼動監視や障害処理を提供するプログラムが含まれる。
【0018】
障害処理とは、CPUやDIMM、PCIeデバイスのようなストレージ装置を構成するハードウェアで生じた障害を検出し回復する一連の処理である。回復とは、例えば恒久的な障害により使用不可となったり、一時的な障害が短期間に多発したりして安定稼動に影響を及ぼすような場合に、障害ハードウェアをシステムから切り離す、いわゆる閉塞処理も含まれる。閉塞処理は、システムの可用性を向上させるためには、可能な限り障害を起こしたハードウェアのみを切り離す、いわゆる部分閉塞ができることが望ましい。
【0019】
またこれらのプログラムはストレージシステム100の用途に応じて柔軟に稼動・非稼動を切り替えてもよい。例えば、ファイルサービスモジュール108が搭載されている場合のみ、ファイルサービスモジュール108を制御するプログラムが稼動するようにしてよい。またブロックサービスを提供するプログラムが障害処理を提供してもよい。ただし、ブロックサービスを提供するプログラムや障害処理を提供するプログラムは、常に稼動する構成が望ましい。
【0020】
ブロックインタフェースモジュール112は、FCPやiSCSIといったブロックインタフェースを提供するモジュールであり、ホストコンピュータ200からのSCSIコマンドの授受及びホストコンピュータ200とのデータの転送を実施する。ブロックインタフェースモジュール112はストレージシステム100から独立して搭載・交換されてもよい。ブロックインタフェースモジュール112は内部ネットワーク107とI/Oパス300により接続されており、ブロックインタフェースモジュール112を介してホストコンピュータ200と送受信されるユーザデータがやり取りされる。
【0021】
ファイルサービスモジュール108は、ファイルプログラムあるいはファイルサービス機能を有するハードウェア群を有し、CIFSやNFSのプロトコル処理してファイルサービスを提供する機能を有している。ファイルサービスモジュール108はストレージシステム100から独立して搭載・交換されてもよいが、内部ネットワーク107を介してプロセッサ102が制御する。ファイルサービスモジュール108はホストコンピュータ200と接続され、ホストコンピュータ200からのI/O要求やデータの授受を行う。ファイルサービスモジュール108と内部ネットワーク107は、I/Oパス301と制御パス302で接続される。I/Oパス301は、ファイルサービスモジュール108が発行するブロックI/Oの通信路であり、ファイルサービスモジュール108を介してホストコンピュータ200と送受信されるユーザデータがやり取りされる。制御パス302は、ファイルサービスモジュール108の制御のための通信路であり、ユーザデータはやり取りされず、制御プログラム105と制御信号をやり取りする。ファイルサービスモジュール108の制御とは、例えば、ファイルサービスモジュール108の内部で稼動するハードウェアの状態の管理、装置外部の管理コンピュータからの操作に応じてファイルサービスモジュール108のパラメータ設定、ファイルサービスモジュール108が提供する機能の制御・管理などを指す。I/Oパス301と制御パス302は例えばPCIeのような内部パスであり、I/Oパス301と制御パス302は物理的には同じ種類の接続パスであってもよい。
【0022】
ストレージ管理情報106は、ストレージシステム100が動作する上で必要となる各種情報であり、図3に示すデバイスタイプテーブル、図4に示す閉塞範囲管理テーブル402を含む。その他、例えばキャッシュメモリ104を管理するためのディレクトリ情報、スナップショットやデータコピープログラム機能の実現に必要な管理情報、ストレージシステム100が備えるファイルサービスモジュール108やI/Oパス301や制御パス302やプロセッサ102などの部品の状態を管理する構成情報であったりする。構成情報とは、例えばファイルサービスモジュール108がストレージシステム100から取り外された場合は未実装状態として管理し、障害などの要因により搭載しているが稼動していない場合は閉塞状態として管理する。ファイルサービスモジュール108が閉塞状態である場合、そのファイルサービスモジュール108に接続されるI/Oパス301と制御パス302も同時に閉塞状態としてもよい。ブロックインタフェースモジュール112が搭載されている構成では、ブロックインタフェースモジュール112の閉塞状態である場合、そのブロックインタフェースモジュール112に接続されるI/Oパス300も同時に閉塞状態としてもよい。プロセッサ102がCPUコア毎に閉塞可能な場合、後述するファイルプログラム130が使用するCPUコアが閉塞状態である場合、ブロックインタフェースモジュール112も同時に閉塞状態としてもよい。
【0023】
図2は、図1のプロセッサ102で稼動する制御プログラム105に含まれるブロックプログラム120とファイルプログラム130とファイルサービスモジュール108、論理ボリューム111との対応関係を主眼を置いた図である。ブロックプログラム120とファイルプログラム130何れのプログラムもプロセッサ102によって実行されることによって、ブロックI/O処理部とファイルI/O処理部とを実現することになる。
【0024】
ファイルプログラム130はファイルサービスモジュール108の制御を司り、制御パス302を通じて、例えば、ファイルサービスモジュール108の内部で稼動するハードウェアの状態の管理や、装置外部の管理コンピュータからの操作に応じてファイルサービスモジュール108のパラメータ設定や、ファイルサービスモジュール108が提供する機能の制御・管理などを実施する。ファイルプログラム130はまた、制御パス302を介して、ホストコンピュータ200から受領したI/O要求を必要に応じてブロックプログラム120に転送するようファイルサービスモジュール108を制御する。ファイルプログラム130はブロックインタフェースモジュール112とは関連しない。
【0025】
一方、ブロックプログラム120はブロックI/Oを処理するソフトウェアである。ブロックプログラム120はブロックインタフェースモジュール112からのブロックI/O要求をI/Oパス300を介して受領し、I/O要求に従って論理ボリューム111に格納したユーザデータの読み書きを実施し、I/Oパス300を介してブロックインタフェースモジュール112とユーザデータの受け渡しを行う。ブロックプログラム120は、更に、ストレージシステム100が備える各種機能を実施する。各種機能とは、データや論理ボリューム111を、ストレージシステム100内外で複製したり、遠隔地のストレージシステム100と共有したりする。又、ストレージシステム100内部のハードウェアを制御したり、装置外部の管理コンピュータにストレージシステム100の状態を送信し、また管理コンピュータからの要求を受け、論理ボリュームの作成や論理ボリュームを構成する記録媒体の種別を変更したりする。 更に、ファイルサービスモジュール108からのブロックI/O要求をI/Oパス301を介して受領し、論理ボリューム111に格納したユーザデータの読み書きを実施し、I/Oパス301を介してファイルサービスモジュール108とユーザデータの受け渡しを行う。
【0026】
本実施例におけるユニファイドストレージシステム構成によれば、ブロックプログラム120はストレージシステム100全体の制御を司り、また各種機能も提供するため、ファイルサービスモジュール108からのブロックI/Oはブロックプログラム120を必ず経由することで、ストレージシステム100が取り扱うデータの全てに対して、一貫したデータの整合性が保証され、また一貫した機能が提供される。
【0027】
望ましい構成においては、ファイルサービスモジュール108を含むストレージシステム100全体の稼動の監視はブロックプログラム120が行う。例えばファイルサービスモジュール108やブロックインタフェースモジュール112、I/Oパス300、I/Oパス301、制御パス302で障害が発生した場合、ブロックプログラム120が障害を検出し、障害内容に応じた障害処理を実施する。これは、ストレージシステム100においては、ディスクI/Oを担当するブロックプログラムの方がより信頼性を要求されるものであり、又、ファイルサービスモジュール108が搭載されない構成や、ファイルプログラム130が稼動していないことも想定されるからである。
【0028】
なお、ファイルプログラム130が、ファイルサービスモジュール108で生じる障害のうち、軽度な障害のみ検出し、回復するような構成でもよい。軽度な障害とは、例えばハードウェアで障害を訂正済みな、いわゆるコレクタブルエラーなどである。またコレクタブルエラーが一定期間内に一定回数生じた場合、予防保全としてファイルサービスモジュール108の稼動を停止させてよい。この場合、ファイルプログラム130とブロックプログラム120が通信し、ブロックプログラム120が安全にファイルサービスモジュール108を停止させればよい。プログラム同士の通信方法としては、共有メモリを介して通信したり、割り込みを上げたりすればよい。ブロックプログラム120がハイパバイザ機能を備え、ファイルプログラム130が仮想マシンとして稼動するような形態では、通信用API(Application Programming Interface)を使用してもよい。ファイルサービスモジュール108の安全な停止とは、具体的にはファイルサービスモジュール108の電源を落としたり、あるいはファイルサービスモジュール108に接続されるI/Oパス301や制御パス302を無効化し、ホストコンピュータ200とのインタフェース部分を無効化する、といった手段でよい。
【0029】
図3は本発明におけるデバイスタイプテーブル401の一例を示す図である。本テーブルは、ストレージ管理情報106の構成要素の一つであって予め設定される。本テーブルには、デバイスの種類と、デバイスの種類に応じた障害処理範囲が格納される。システム内の何れかの箇所で障害が発生した場合、当該障害の影響を最小限範囲にとどめシステム全体としては処理を継続させることが望ましい。例えば、PCIeデバイスやPCIeパスで恒久的な障害が起きた場合は、障害を起こしたPCIeデバイスおよび当該デバイスに接続されるPCIeパスをリンクダウンすることで閉塞し、CPUや他のデバイスは継続稼動を続けることが望まれる。一方で、本願のファイルサービスモジュール108は、ファイルプログラム130とブロックプログラム120という2つの異なる制御プログラムに接続されている。例えば制御パス301で障害が起きた場合に、接続先のファイルサービスモジュール108を閉塞対象とすることは容易である。しかし、本願実施例においては、それだけでは不十分であって、当該ファイルサービスモジュール108に接続される制御線302についても閉塞する必要がある。これらの状況をふまえて本願ではパスやデバイス毎に障害処理すべき範囲を管理することとする。
【0030】
デバイスの種類とは、ストレージシステム100を構成するデバイスの種類を特定できる情報である。例えばコントローラ101に接続されるファイルサービスモジュール108やブロックインタフェースモジュール112であったりする。更には、ブロックインタフェースモジュール112が備えるプロトコルチップの種類までを定義してもよい。図3ではデバイスタイプ及び障害処理範囲を文章で記載しているが、ブロックプログラム120が処理対象デバイスを認識可能な情報であればよく、デバイスタイプが例えば0x01であればFibre Channel 8Gbpsを示す、といったように数値を格納してもよい。
【0031】
ブロックインタフェースモジュール112が1または複数の冗長化されたのPCIeパスによりコントローラ101と接続される場合、当該ブロックインタフェースモジュール112及び当該ブロックインタフェースモジュール112に接続されるPCIeパスに障害が発生した場合は、当該ブロックインタフェースモジュール112及び当該ブロックインタフェースモジュール112に接続されるPCIeパスを同時に閉塞させることが望ましい。よって、ブロックインターフェイス112については、当該モジュールとそのデバイスに接続されているパスのみを閉塞対象とすればその他の構成要素に影響は出ない。
【0032】
一方ファイルサービスモジュール108はI/Oパス301と制御パス302を備えており、ファイルサービスモジュール108やI/Oパス301や制御パス302に障害が発生し、いずれかが継続使用不可能である場合、閉塞範囲は、当該ファイルサービスモジュール108、及び当該ファイルサービスモジュール108に接続されるI/Oパス301と制御パス302の全てであることが望ましい。例えば制御パス302で継続使用不可能な障害が発生し、制御パス302のみを閉塞した場合、ファイルサービスモジュール108の制御が出来なくなり、I/Oパス301上に不正なデータが流れてデータ破壊等が起きる恐れがある。また、例えばI/Oパス301で継続使用不可能な障害が発生した場合、もはやファイルサービスモジュール108はブロックI/Oをブロックプログラム120に要求できず、またブロックプログラム120からのブロックI/Oを受領できない。すなわち、ファイルサービスモジュール108としての機能を果たすことができないため、ファイルサービスモジュール108の交換により機能の回復を試みることが期待される。ファイルサービスモジュール108の交換を想定すると、障害の発生していないファイルサービスモジュール108とI/Oパス301も同時に閉塞することが望ましい。このように、デバイス毎に障害処理の影響範囲が異なるため、デバイスタイプテーブル401にてこれらを管理する。なお、デバイスタイプテーブル401自体は静的なテーブルでもよく、ストレージシステム100が予め固定で備えておいてよい。または、ストレージシステム100外部の管理コンピュータからの指示により項目を追加してもよい。
【0033】
図4は、本発明における閉塞範囲管理テーブル402の一例を示す図である。パス番号、もしくは、任意のデバイスを識別するデバイス識別情報と当該デバイスで障害が発生した場合に、障害対応が必要とされるデバイスを識別する情報である閉塞範囲の情報との対応づけが管理される。例えばコントローラ101がPCIeによりファイルサービスモジュール108やブロックインタフェースモジュール112などを接続する場合、コントローラ101が備えるPCIeパス番号毎に、その時点で接続されているデバイスと、そのデバイスの識別情報、接続されているデバイスに対応する閉塞範囲が登録される。デバイスタイプは、図3と同様にブロックプログラム120が認識できるような数値を格納してもよい。識別情報とは、同一種類のデバイスが複数搭載されるような場合にデバイスを一意に特定可能な情報であり、例えば製造番号などでよい。
【0034】
閉塞範囲は、図3のデバイスタイプテーブルを参照することで設定できる。パス番号を指定する場合にパス番号を1ビットとみなしたビットマップ形式で格納してもよい。本発明ではファイルサービスモジュール108はI/Oパス301と制御パス302を使用するが、ファイルサービスモジュール108が複数搭載されるような場合、I/Oパス301と制御パス302も複数存在することになる。この場合、閉塞範囲を適切に設定するには、複数のファイルサービスモジュール108と複数のI/Oパス301と制御パス302の組み合わせを正しく区別する必要があり、これを実現するためにデバイス識別情報を使用する。つまり、デバイス識別情報に基づいて、複数のファイルサービスモジュール108と複数のI/Oパス301、複数の制御パス302を正しい組み合わせで閉塞範囲を設定する。なお、ストレージシステム100の制限として同一種類のデバイスが複数搭載されない場合には、デバイス識別情報はなくてもよい。
【0035】
閉塞範囲管理テーブル402は、動的に内容が変化する。これは、ファイルサービスモジュール108やブロックインタフェースモジュール112はストレージシステム100が稼働中であっても着脱や種類の交換が可能なためである。閉塞範囲管理テーブル402は、ストレージシステム100の起動時あるいはファイルサービスモジュール108やブロックインタフェースモジュール112の着脱などの契機で作成・更新され、障害発生時の障害処理において参照される。
【0036】
デバイスタイプテーブル401や閉塞範囲管理テーブル402は、ストレージシステム100全体の制御を司るプログラムや、障害処理の主体として動くプログラムが更新・参照できることが望ましい。本実施例におけるユニファイドストレージ構成によれば、ブロックプログラム120がそれに該当するため、デバイスタイプテーブル401や閉塞範囲管理テーブル402はブロックプログラム120が更新・参照できることとする。
【0037】
図5は、図4の閉塞範囲管理テーブル402の更新処理の一例を示すフローチャートである。図5における各処理は、ブロックプログラム120が主体的に行うものとするが、本発明はこれを限定するものではなく、例えばブロックプログラム120とファイルプログラム130、あるいはハードウェア群110、装置外部の管理コンピュータとの連動により実施してもよい。例えばブロックプログラム120がファイルサービスモジュール108やブロックインタフェースモジュール112の接続を検出後、直ちに処理を始めても良いし、管理コンピュータからの指示を得てから処理を始めても良い。ハードウェア群110がファイルサービスモジュール108やブロックインタフェースモジュール112の接続を検出し、ブロックプログラム120に指示を出した後にブロックプログラム120が処理を始めても良い。又、本実施例では更新処理として説明するが、最初に障害範囲管理テーブル402を設定する場合にも同様のフローが実行され、S1005の処理において初期値が設定される。
【0038】
まず、ストレージシステム100に接続されたハードウェアを検出する(ステップS1001)。図5におけるハードウェアとはファイルサービスモジュール108やブロックインタフェースモジュール112を指す。ステップS1001の処理は、例えばストレージシステム100に予めファイルサービスモジュール108を搭載した上でストレージシステム100の起動処理を開始した際、その起動処理の過程で図5の処理が実施される。
【0039】
次にハードウェアからデバイスタイプを入手する(ステップS1002)。一般的にハードウェアを認識したCPUは当該ハードウェアを使用するためにいくつかの初期化、初期設定を行う。例えばPCIeデバイスであれば、コンフィグレーション処理がなされる。ステップS1002では、このような初期設定の過程において、接続されたハードウェアから所定の手順によりデバイスタイプを入手する。デバイスタイプとは、デバイスタイプテーブル401に示すようなデバイスの種類のことを指す。所定の手順とは、例えばPCIeデバイスであれば、コンフィグレーション空間レジスタのベンダIDやデバイスIDの参照によるものでもよい。なお、ステップS1001ではハードウェアが接続された接続パス番号も同時に記憶しておくものとする。
【0040】
次にハードウェアからデバイス識別情報を入手する(ステップS1003)。デバイス識別情報とは、例えば製造番号でよく、デバイスに一意に付与される情報でよい。また、例えばファイルサービスモジュール108のように複数のパスを使用する場合は、I/Oパス301や制御パス302においても、同じデバイス識別情報を見せる必要がある。
【0041】
次にデバイスタイプテーブル401を参照し、ステップS1002で入手したデバイスタイプから障害処理範囲を確認する(ステップS1004)。例えばステップS1002で入手したデバイスタイプがファイルサービスモジュール108であれば、障害処理範囲は「ファイルサービスモジュール、及びファイルサービスモジュールに接続されているI/Oパス301と制御パス302」となる。ステップS1005は、デバイス識別情報を元に閉塞範囲を更新する。ステップS1005は図6にて説明する。
【0042】
図6は、閉塞範囲を更新する処理の一例を示すフローチャートである。まず、ステップS1004で確認した障害処理範囲に、複数のパスが含まれるかを判定する(ステップS1201)。判定結果がNoの場合、閉塞範囲管理テーブル402のうち、S1001でハードウェアを検出したパス番号に対し、デバイスタイプとデバイス識別情報と閉塞範囲を設定する(ステップS1202)。ステップS1201の判定結果がYesの場合、ステップS1203に進むステップS1203以降は、S1004で確認した障害処理範囲を設定するため、全てのパスを確認するループ処理を取っている。
【0043】
ステップS1203では対象パスをパス番号0に設定する。次にステップS1204では、全てのパスに対して、ステップS1205からステップS1208の処理が実施されたか判定する。ステップS1204の判定結果がYesであれば処理を終了し、判定結果がNoであればステップS1205に進む。
【0044】
ステップS1205では、対象パスに接続されているデバイスからデバイスタイプとデバイス識別情報を入手し、ステップS1002とステップS1003で得られたものと一致しているか判定する。判定結果がYes場合、ステップS1206に進み、NoであればステップS1207に進む。
【0045】
ステップS1206では、閉塞範囲管理テーブル402の対象パスにデバイスタイプとデバイス識別情報、閉塞範囲を設定し、ステップS1207に進む。ステップS1207では、対象パス番号をインクリメントし、ステップS1204へ戻る。
【0046】
デバイスタイプがファイルサービスモジュールであればI/Oパス301と制御パス302の2本のパスを使用する。この2本のパスは、接続先のデバイス識別情報が同一である2本のパスであることから特定することができる。例えば、パス番号0とパス番号1にファイルサービスモジュール108が接続された場合、パス番号0とパス番号1には同じデバイス識別情報が見えることになる。つまりこの場合、障害範囲管理テーブル402の閉塞範囲は、まずパス番号0に対して「パスに接続されているファイルサービスモジュール及びパス番号0」が格納され、次にパス番号1に対して「パスに接続されているファイルサービスモジュール及びパス番号1」が格納される。更に、次に再びパス番号0に対して、同じデバイス識別情報を有している「パス番号1」が追加され、最後にパス番号1に対して同様の理由から「パス番号0」が追加される。
【0047】
一方、デバイスタイプがブロックインタフェースモジュール112である場合には、例えばパス番号4にブロックインタフェースモジュール112が接続された場合は、障害範囲管理テーブル402閉塞範囲は、「パスに接続されているブロックインタフェースモジュール及びパス番号4」が格納される。
【0048】
以上の処理により、パスやデバイスに対する閉塞範囲が設定される。複数のデバイスが搭載されている構成では、例えば、閉塞範囲管理テーブル402のパス番号の若番から順番に、ハードウェア図5の処理を繰り返せばよい。
【0049】
図7は、本発明における障害処理の一例を示す処理フローである。図7における各処理は、ブロックプログラム120が主体的に行うものとするが、本発明はこれを限定するものではなく、例えばブロックプログラム120とファイルプログラム130、あるいはハードウェア群110、装置外部の管理コンピュータとの連動により実施してもよい。
【0050】
まず、ストレージシステム100の構成要素で生じた障害を検出する(ステップS2001)。検出方法は、障害部位からの割り込みでもよいし、ストレージシステム100の構成要素を定期的に監視することで障害を検出してもよい。またはハードウェア群111からの通知によるものでもよい。
【0051】
次に、障害発生箇所と障害内容を特定する(ステップS2002)。ステップS2001で障害発生を検出した場合、具体的な障害発生箇所と具体的な障害内容を特定したうえで、適切な障害範囲に対して障害処理を実施する必要がある。ステップS2002では、例えば割り込み種別や割り込みベクタ番号、障害レジスタの内容の確認などの手法により、障害箇所と障害内容を特定する。障害箇所は、例えばパス番号やデバイス識別情報として特定され、障害内容としては訂正可能障害や訂正不可障害、保障コードエラーといった障害種別であったりする。
【0052】
次に、閉塞範囲を決定する(ステップS2003)。ステップS2002で障害箇所と障害内容が特定され、ストレージシステム100のうち部分的にでも閉塞が必要と判断された場合のみ、ステップS2003以降を実施してよい。障害内容がストレージシステム100全体に影響するような重大な障害であれば、ステップS2003以降を実施することなく、直ちにストレージシステム100全体を閉塞してよい。
【0053】
ステップS2003では、ステップS2002で特定した障害箇所に基づいて閉塞範囲管理テーブル402を参照し、障害発生部位に対応する閉塞範囲を参照し、閉塞範囲を決定すればよい。例えばステップS2002にて、パス番号0で訂正不可障害が発生したことを特定した場合、ステップS2003では障害範囲管理テーブル402のパス番号0の閉塞範囲を参照し、図4で例えるならファイルサービスモジュール(デバイス識別番号が0X00A1DF01)に対応づけられる閉塞範囲を決定する。また、パスではなくファイルサービスモジュール(デバイス識別番号が0X00A1DF01)108にて障害が発生した場合には、障害範囲管理テーブル402でデバイス識別番号(0X00A1DF01)が管理されるパス番号0、又は、パス番号1の閉塞範囲を参照することで、ファイルサービスモジュール(デバイス固有情報が0X00A1DF01)に対応づけられる閉塞範囲を決定する。
【0054】
最後に、閉塞範囲を閉塞する(ステップS2004)。閉塞処理は、閉塞対象部位によって異なってよい。例えば、本実施例の構成において、ブロックインタフェースモジュール112やPCIeパス300に恒久的な障害が生じた場合、当該ブロックインタフェースモジュール112に繋がるPCIeパス300をリンクダウンする。
【0055】
一方で、ファイルサービスモジュール108やI/Oパス301や制御パス302の少なくともいずれかで恒久的な障害が生じた場合、I/Oパス301と制御パス302の両方をリンクダウンすることになる。これは、制御パス302だけをリンクダウンするとI/Oパス301を使い続けてしまい、制御不能に陥ったファイルサービスモジュール108からの不正なデータを受け付けることを回避するためである。また、障害の起きたファイルサービスモジュール108は正常なものと交換することができるが、片方のパスだけをリンクダウンした状態で、ファイルサービスモジュール108をストレージシステム100から抜き去ると、別の障害である「突然のリンクダウン(Surprise Linkdown)」が発生してしまい、プロセッサ102が新たな障害処理を開始するなどの不都合を回避するためである。
【0056】
ファイルサービスモジュール108の閉塞の過程の一つとしてファイルプログラム130の再起動が必要であれば、既に述べたプログラム間の通信によりブロックプログラム120がファイルプログラム130を再起動させる。また、ファイルサービスモジュール108の閉塞に伴いファイルプログラム130の閉塞も必要である場合は、ブロックプログラム120がファイルプログラム130を閉塞させる。このように、ハードウェアに対する障害処理以外に、ファイルプログラム130に対する処理も一連の処理として必要な場合は、障害範囲管理テーブル402の閉塞範囲に追加しておけばよいし、あるいは障害範囲管理テーブル402に付随処理の列を追加して必要な処理を登録しておけばよい。これらの追加の処理のタイミングとしては図5のステップS1002やステップS1003を実行時、ファイルプログラム130から追加処理の通知を受けた契機、ストレージシステム100外部の管理コンピュータからの指示を受けたタイミング等が考えられる。
上記のように本願発明によれば、複数のデバイスによって構成されるシステムにおいて、あるデバイスが用途の異なる複数のパスによって他の部位と接続されている場合であっても障害時に矛盾なく必要最小限の範囲での閉塞処理を実行することができる。更に、特に複数のパス其々が異なる独立した複数の処理部にそれぞれ接続されている場合であっても有効である。これにより、非障害部位の継続稼動による装置の可用性向上、並びに非障害部位への障害伝搬を防ぐことによる装置の信頼性向上が可能となる。
【0057】
尚、本実施例においては図1に示すブロック機能とファイル機能とを有するユニファイドシステムを前提に本願を説明したが、本発明の適応先は本実施例に限らない。例えば、1のデバイスが複数種類のパスによって他の部位、例えば、異なる処理を実行する複数の処理機構に接続されている場合には本願発明は適応可能である。又、1のデバイスが接続される先の処理部の数は2つ以上であればよい。
【0058】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【符号の説明】
【0059】
100:ストレージシステム
101:コントローラ
102:プロセッサ
103:メモリ
104:キャッシュメモリ
105:制御プログラム
106:ストレージ管理情報
107:内部ネットワーク
108:ファイルサービスモジュール
109:ディスクインタフェース
110:ハードウェア群
111:論理ボリューム
112:ブロックインタフェースモジュール
120:ブロックプログラム
130:ファイルプログラム
200:ホストコンピュータ
300:I/Oパス
301:I/Oパス
302:制御パス
401:デバイスタイプテーブル
402:閉塞範囲管理テーブル
図1
図2
図3
図4
図5
図6
図7