ストレージサブシステム、及びその制御方法
【課題】プロセッサにマルチコア方式を適用して、プロセッサコアからスイッチ回路に不当なアクセスがあった場合でも、ホスト装置に対してI/O処理の信頼性を維持することができるストレージサブシステムを提供する。
【解決手段】ホストインターフェース20など、プロセッサがアクセスする複数の被制御ユニットに対して共通に適用される第1の論理アドレス空間とは異なる第2論理アドレス空間をマルチコアプロセッサ28に適用する。スイッチ回路18は、第2のアドレス空間に属するアドレスに基づいて、アクセスを発行したプロセッサコアを判定し、プロセッサコアからのアクセスに含まれるアドレスを第1のアドレス空間のアドレスに変換に変換する。
【解決手段】ホストインターフェース20など、プロセッサがアクセスする複数の被制御ユニットに対して共通に適用される第1の論理アドレス空間とは異なる第2論理アドレス空間をマルチコアプロセッサ28に適用する。スイッチ回路18は、第2のアドレス空間に属するアドレスに基づいて、アクセスを発行したプロセッサコアを判定し、プロセッサコアからのアクセスに含まれるアドレスを第1のアドレス空間のアドレスに変換に変換する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージサブシステム及びストレージサブシステムの制御方法に関するものである。
【背景技術】
【0002】
ストレージサブシステムは、ホスト装置に対してデータストレージサービスを提供する装置である。ホスト装置がストレージサブシステムに接続されることにより、ストレージシステムが構築される。ストレージサブシステムは、記憶デバイスとしての複数のハードディスクドライブからなるディスクアレイ装置と、ホスト装置とディスクアレイ装置との間でのデータの入出力を制御するコントローラと、を備えている。
【0003】
コントローラは、ストレージサブシステム全体を制御するためのプロセッサと、ホスト装置に対するホストインターフェースと、ディスクアレイ装置に対するディスクインターフェースとを備え、さらに、ユーザデータをキャッシイングするためのキャッシュメモリが両方のインターフェースの間に配置されている。
【0004】
この種のストレージサブシステムとして、例えば、特開2009−9200号公報に記載のものが存在する。このストレージサブシステムは、複数のプロセッサを有する制御部がスイッチLSIによって、ホストインターフェース、ディスクインターフェース、そして、キャッシュメモリに接続された構造を有している。
【0005】
このストレージシステムは、制御部内のいずれかのコンポーネントに障害が発生した場合に、制御部の入出力パスを遮断し、遮断された状態において障害が発生したコンポーネントを特定し、これを無効化する。そして、障害が発生したコンポーネントを無効化した後、正常なコンポーネントのみで、目的の処理を行うことができるか判断し、それが可能であると判断した場合に、入出力パスの遮断を解除(開放)して、再起動後動作を再開する。
【0006】
また、特開2007−207007号公報には、ディスクドライブと、ストレージコントローラと、を備えるストレージシステムであって、ストレージコントローラは、ホスト計算機に接続される一つ以上のインターフェースと、インターフェースに接続される複数のプロセッサと、を備え、プロセッサは、一つ以上の論理アクセスポートをホスト計算機に提供し、インターフェースは、論理アクセスポート宛てのアクセス要求を処理するプロセッサを示すルーティング情報を記憶し、アクセス要求をホスト計算機から受信すると、受信されたアクセス要求から宛先を抽出し、ルーティング情報及び抽出された宛先に基づいて、受信されたアクセス要求を処理するプロセッサを特定し、受信されたアクセス要求を、前記特定されたプロセッサに転送することが記載されている。
【0007】
さらに、米国特許公報7421532号公報には、スイッチLSIによるアドレス変換でマルチレート構造を実現する方法が記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−9200号公報
【特許文献2】特開2007−207007号公報
【特許文献3】米国特許公報7421532号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
大規模なストレージシステムでは、サブシステムの制御能力を向上させるために、マルチコアプロセッサが使用されるようになっている。既述の特開2009−9200号公報にも、プロセッサが複数のプロセッサコアを有することが記載されている。
【0010】
スイッチLSIはプロセッサコアからアクセスを受けると、アクセス先アドレスに基づいて、アクセスを、ホストインターフェース、ディスクインターフェース、又はキャッシュメモリにルーティングする。そして、スイッチLSIは、プロセッサコアから不当なアクセスを受けると、障害の発生をプロセッサコアに通知する。この通知を受けたプロセッサコアは、通常のストレージ制御処理に優先させて障害対応処理プログラムを実行する。
【0011】
ところで、従来のストレージサブシステムは、複数あるプロセッサコアを互いに判別することができないため、ある特定のプロセッサコアからスイッチLSIが不当アクセスを受信した場合、スイッチLSIは障害の発生を全てのプロセッサコアに通知する。
【0012】
これでは、正常なプロセッサコアまでも、障害対応処理に追われるために、その間、ストレージサブシステムは、I/O処理を行うことができない。それでは、ストレージサブシステムは、ホスト装置に対して、I/O処理の信頼性を維持することができなくなる。
【0013】
本発明は、このような課題を解決するために、プロセッサにマルチコア方式を適用して、プロセッサコアからスイッチ回路に不当なアクセスがあった場合でも、ホスト装置に対してI/O処理の信頼性を維持することができるストレージサブシステム、およびその制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【0014】
この目的を解決するために、本発明は、ストレージサブシステムにおいて、ホストインターフェースなど、プロセッサがアクセスする複数の被制御ユニットに対して共通に適用される第1の論理アドレス空間とは異なる第2論理アドレス空間をマルチコアプロセッサに適用する、ことを特徴とする。
【0015】
ストレージサブシステムは、各プロセッサコアに対して、共通アドレスとは異なる、第2の論理アドレスを、融通性を持って適用する。たとえば、各プロセッサコアに対して、それぞれ異なるアドレスを適用する。プロセッサコアはこのアドレスでスイッチLSIにアクセスする。スイッチ回路は、プロセッサコアからのアクセスに含まれる論理アドレスを判別し、アクセス元であるプロセッサコアを特定することができる。
【0016】
スイッチ回路は、プロセッサコアのアクセスに含まれる独自なアドレスを共通アドレスに変換する。この変換は変換テーブルを用いて行われる。複数のプロセッサコアはそれぞれ異なる論理アドレスを使用するために、変換テーブルも各プロセッサコアに対してそれぞれ異なるものとなる。変換方法の一例は、プロセッサコアのアクセスに含まるアドレスに変換テーブルに含まる設定値を加えて、プロセッサコアのアクセスが共有アドレスに到達できるようにすることである。複数のプロセッサコアを有するプロセッサは、目的とする特定の共有アドレスにアクセスできるように、特定のプロセッサコアを選択してアクセスを発信する。
【発明の効果】
【0017】
本発明によれば、プロセッサにマルチコア方式を適用して、プロセッサコアからスイッチ回路に不当なアクセスがあった場合でも、上位装置に対してI/O処理の信頼性を維持することができるストレージサブシステム及びその制御方法を提供することができる。
【図面の簡単な説明】
【0018】
【図1】ストレージシステムの実施形態を示したハードウエアブロック図である。
【図2】制御部のマルチコアプロセッサのハードウエアブロック図である。
【図3】制御部のローカルメモリ部の詳細な構成を示すブロック図である。
【図4】スイッチLSIの詳細構成を示すブロック図である。
【図5】ホストI/F部の構造を示すブロック図である。
【図6】一時メモリのブロック図である。
【図7】ディスクI/F部のブロック図である。
【図8】一時メモリのブロック図である。
【図9】キャッシュメモリ部の構造を示すブロック図である。
【図10】変換テーブルの例を示す表である。
【図11】アドレス変換処理の原理を示すブロック図である。
【図12】制御部のアクセス発行動作を示すフローチャートである。
【図13】スイッチLSIのアドレス変換部の動作フローチャートである。
【図14】スイッチLSIのアパケットを送信したプロセッサコアを特定するためのフローチャートである。
【図15】不当アクセスチェック部が、制御部から受信したパケットが不当アクセスであるか否かをチェックする動作を示すフローチャートである。
【図16】不当アクセスプロセッサコア記憶レジスタの動作フローチャートある。
【図17】転送可否判定部の動作フローチャートである。
【図18】スイッチLSIを経由した、複数のコンポーネント間のアクセスの代表例を纏めた表である。
【図19】制御部の障害処理を説明するフローチャートである。
【図20】制御部を交換するための処理を説明するフローチャートである。
【図21】ストレージサブシステムの保守画面の一例である。
【図22】その他の例である。
【図23A】保守画面のさらに他の例である。
【図23B】ストレージサブシステムの閉塞情報を表す保守画面の例である。
【図23C】その他の例である。
【図24】プロセッサコアに障害が発生した際でのストレージサブシステムの動作を示すシーケンスフローチャートである。
【発明を実施するための形態】
【0019】
次に本発明の実施形態について説明する。図1は、ストレージシステムの実施形態を示したハードウエアブロック図である。ストレージシステムは、ストレージサブシステム10と、これに接続するホスト装置12(12A,12B)とを備えている。ストレージサブシステム10は、ネットワーク14(14A,14B)を介してホスト装置12に接続されている。
【0020】
ストレージサブシステム10は、制御部16(16A,16B)と、制御部によって、データストレージのための動作が制御されるホストインターフェース(ホストI/F)などの被制御ユニット群と、両者を接続するスイッチ部18(18A,18B)とを備えている。スイッチ部18はスイッチLSIを備えている。
【0021】
被制御ユニット群は、ホスト装置12Aと接続するホストI/F部20Aと、ホスト装置12Bと接続するホストI/F部20Bと、キャッシュメモリ部22(22A,22B)と、ディスクI/F部24(24A,24B)と、からなる。被制御ユニット群のそれぞれ及びスイッチ部18は、内部ネットワーク26によって互いに接続されている。
【0022】
制御部16A及び16Bは、それぞれ、マルチコア構造からなるプロセッサ28と、ローカルメモリ部30と、チップセット32とを備えている。制御部16は、被制御ユニット群を制御することによって、ストレージサブシステム10の全体の動作を決定している。制御の中心は各制御部のマルチコアプロセッサ28である。マルチコアプロセッサの処理は、複数のプロセッサコアによって行われる並列処理である。
【0023】
ローカルメモリ部30は、キャッシュメモリ部22に格納されたユーザデータに関連付けられた制御データ、及びシステム構成情報などその他の情報を格納している。制御データは、ストレージサブシステム10がホスト装置12に対して提供するストレージサービスの遂行に必要な管理情報を含んでいる。
【0024】
図2は制御部16のマルチコアプロセッサ28のブロック図である。マルチコアプロセッサは、4つのプロセッサコア(#1−4)を備えている。各プロセッサコアは、その内部にL1キャッシュを備え、その外部には二つのプロセッサコアによって共有されるL2キャッシュ213が存在する。
【0025】
なお、各プロセッサコア211は、スイッチLSIからの障害通知を登録するレジスタを備えている。レジスタを参照して、障害通知を認識したプロセッサコアは、障害処理プログラムを呼び出して、これを実行して障害復帰処理を実行する。あるいは、プロセッサコアを閉塞する処理を行う。
【0026】
マルチコアプロセッサ28とチップセット32とは、フロントサイドバス(FSB)34で接続されている。チップセット32とローカルメモリ部30とはデータ信号線36によって接続されている。チップセット32は、マルチコアプロセッサ28、スイッチ部18、ローカルメモリ部30を互いに接続するためのブリッジとして機能する。
【0027】
制御部16Aのチップセット32とスイッチ部18(18A,18B)とは、PCI-Express38Aによって接続され、制御部16Bのチップセット32とスイッチ部18(18A,18B)とは、PCI-Express38Bによって接続されている。
【0028】
スイッチLSIは、制御部の各プロセッサコア(図2)と、ホストI/F部20、キャッシュメモリ部22、又はディスクI/F部24との接続をスイッチングする集積回路である。ホストI/F部20は、ホスト12からのライト又はリードコマンドを制御部16に振り分け、又は、制御部16からの要求を受けてホスト12とキャッシュメモリ部22間のデータ転送を実現する。
【0029】
キャッシュメモリ部22は、ユーザデータや、各制御部16が共有する制御データを一時記憶する。ディスクI/F部24は制御部16からの要求を受けてディスクアレイ部40とキャッシュメモリ部22間のデータ転送や、パリティ演算を実行する。なお、記憶デバイスにはハードディスクドライブに限らず、フラッシュメモリ駆動装置などの半導体メモリ装置も該当する。
【0030】
図3は、ローカルメモリ部30の詳細な構成を示すブロック図である。制御データ記憶領域300Aは、ストレージサブシステム10に割り当てられた論理ボリューム(LDEV)の制御データを記憶する領域で、例えば、キャッシュデータの在り無しと、ユーザデータが格納されているキャッシュメモリ部22のアドレス、キャッシュデータのLRU情報(アクセス履歴)、キャッシュデータがクリーンデータかダーティデータかの区別に関する情報を格納するものである。
【0031】
領域300Bは、ストレージサブシステム内の被制御ユニットの構成情報を格納し、領域300Cは、ホストI/F部からのコマンドを格納する。コマンドに対する処理を実行する権利を持つプロセッサコアは、格納されているコマンドを順番に処理する。領域300Dは、スイッチLSIのアドレス変換テーブルや、変換テーブルの使用履歴の情報を格納する。
【0032】
図4はスイッチLSIの詳細構成を示すブロック図である。スイッチLSIは、図示する各要素を備えている。パケット受信部(回路)50は、制御部16から被制御ユニットに対して宛てられたPCI-Expressパケットを受信する。パケット送信部52は、被制御ユニットから制御部(回路)16にPCI-Expressパケットを送信する。
【0033】
パケット受信部50はパケットをアドレス変換部(回路)54、アクセス元プロセッサコア判定部(回路)56、不当アクセスチェック部58(回路)に出力する。アドレス変換部54は、パケットに含まれる、プロセッサコアが指定した論理アドレスを被制御ユニットに共通に適用された実アドレスに変換する変換テーブルを備える。
【0034】
アクセス元プロセッサコア判定部56は、プロセッサコアが指定した論理アドレスからアクセス元プロセッサコアを判定する。不当アクセスチェック部58は、プロセッサコアからのアクセスが、判定プログラムにしたがって、正当なものであるか、不当なものであるかをチェックする。
【0035】
アドレス変換部54の変換結果と、アクセス元プロセッサコア判定部56の判定結果と、不当アクセスチェック部58のチェック結果は、転送可否判定部60に送られる。また、アクセス元プロセッサコア判定部56の判定結果と、不当アクセスチェック部58のチェック結果は、不当アクセスプロセッサコア記憶レジスタ62に送られている。不当アクセスプロセッサコア記憶レジスタ62の情報は、転送可否判定部60(回路)に送られる。
【0036】
不当アクセスプロセッサコア記憶レジスタ62は、不当アクセスを実施したプロセッサコア番号を記憶する。転送可否判定部60は、不当アクセスチェック部58の判定結果と、不当アクセス記憶レジスタ62の内容から、パケットの転送可否を判定する。
【0037】
転送可否判定部60から転送が許可されたパケットがパケットルーティング部64に送出される。パケットルーティング部(回路)64はルーティングテーブル66にしたがって、転送可否判定部60から送られたパケットの変換後の送信先アドレスに基き、パケットのデータを目的の被制御ユニットに、内部ネットワークパケット送信部68を介してデリバリーする。内部ネットワークパケット送信部68は、内部ネットワーク26に接続している。
【0038】
また、パケットルーティング部64は、内部ネットワークパケット受信部70(回路)から受信したパケットを制御部16のプロセッサコア28にルーティングする機能も備えている。パケットルーティング部64は、データを転送する際に、所定のプロトコル変換を行う。
【0039】
図5は、ホストI/F部20の構造を示すブロック図である。ホストI/F部は、プロトコル制御部500と、ルーティング部504と、一時メモリ502とを備えている。プロトコル制御部500はネットワーク14を介して上位装置12に接続される。ルーティング部504は内部ネットワーク26に接続している。
【0040】
プロトコル制御部500は、ホスト装置12とストレージシステム10との間でやりとりされるデータのプロトコル変換を行う。すなわち、プロトコル制御部は、ネットワーク14上を伝送されてきた、ホスト装置からの外部データとしてのI/O要求を、ストレージシステム内で処理するための内部データに変換し、また、I/O要求に対してホスト装置に送信すべき内部データをネットワーク14上に伝送するために適した外部データに変換する。
【0041】
ルーティング部504は、メモリコントローラ506、DMA510、担当制御部振り分け部508を備えている。一時メモリ502はキャッシュメモリ部とプロトコル制御部500との間で転送されるユーザデータを一時的に記憶する。
【0042】
メモリコントローラ506は、一時メモリを制御する。DMA510は、キャッシュメモリ部22と一時メモリ502間のデータ転送を実行する。担当制御部振り分け部508は、ホスト装置から送られたライト/リードコマンドの処理を担当する制御部を、ルーティングテーブルに基づいて決定し、決定された制御部のローカルメモリ部30にコマンドを送信する。
【0043】
図6は、一時メモリ502のブロック図である。一時メモリは、ユーザデータ格納領域502A、ルーティングテーブル設定領域502B、DMAパラメータ設定領域502C、プロトコル制御部転送パラメータ設定領域502Dを備えている。
【0044】
ルーティングテーブルは、担当制御部振り分け部508が、コマンドの送信先を識別するためのルーティング情報を備えたものである。ルーティングテーブルは、ホストS_ID(Source ID:フレーム送信側のN_Portアドレス識別子である。)と、LUN(Logical Unit Number)を有している。
【0045】
ディスクアレイ装置40を構成するディスクは、論理的に分割され、分割した区画をそれぞれ異なるRAIDレベルに設定することができる。この区画がRAIDグループである。このRAIDグループをさらに論理的に分割したSCSIのアクセス単位である領域をLU(Logical Unit)であり、その領域は、各々、LUNを持つ。
【0046】
“担当制御部”には、ホストS_IDとLUNとから特定される論理記憶領域に対するコマンドを処理すべき制御部の識別子が登録される。“フェイルオーバ制御部”には、担当制御部が障害状態になった際に、コマンド処理を引き継ぐ他の制御部の識別子が登録されている。“フェイルオーバ制御有効フラグ”には、フェイルオーバ制御部がコマンド処理を担当するか否かの情報が登録されている。
【0047】
DMAパラメータ設定領域502Cは、DMA510が一時メモリ502からデータを転送するために必要パラメータ(アドレス・転送長・ライト又はリードコマンドなど)を備える。プロトコル制御部転送パラメータ設定領域502Dは、プトロコル制御部500がホスト装置12と一時メモリ502との間でユーザデータの転送を行うためのパラメータを備える。プロセッサコアがプロトコル制御部500にパラメータを設定することで、プロトコル制御部がこのパラメータをリードしてユーザデータの転送を行う。
【0048】
図7はディスクI/F部24のブロック図である。ディスクI/F部24は、ディスク制御部700と、一時メモリ702と、プロトコル制御部704とを備えている。ディスク制御部700は内部ネットワーク26に接続している。ディスク制御部700はプロトコル制御部704を介してディスクアレイ部40に接続している。
【0049】
プロトコル制御部704は、ディスクアレイ部40との間のデータのプロトコル変換を行う。一時メモリ702は、キャッシュメモリ部22とプロトコル制御部704との間で転送されるユーザデータを一時記憶する。メモリコントローラ710は、一時メモリ702を制御する。DMA706はキャッシュメモリ部22と一時メモリ702間のデータの転送を行う。パリティ演算部708は、ディスクアレイ部40に格納されるデータに対してRAID5やRAID6などのパリティ演算を行う。
【0050】
ステータスルーティング部712は、プロトコル制御部704から送信されて来るステータス情報に含まれる情報から担当制御部16を判定し、担当制御部のローカルメモリ30に、ステータス情報を転送する。
【0051】
図8は、一時メモリ702のブロック図である。一時メモリはユーザデータ格納領域702Aと、DMAパラメータ設定領域702Bと、パリティ演算パラメータ設定領域702Cと、プロトコル制御部転送パラメータ設定領域702Dと、を備えている。
【0052】
パリティ演算パラメータ設定領域702Cは、パリティ演算パラメータのキュー構造から構成され、各キューのパリティ演算パラメータは、パリティ演算に必要な情報であって、各種コマンド(ライト/リードなど)、各種演算モード(RAID5/6のパリティ種別)、新・旧データの格納されている領域のアドレス、新・旧パリティの格納先アドレス、データが転送されるキャッシュメモリ部のアドレス、転送長などである。
【0053】
プロトコル制御部転送パラメータ設定領域702Dは、プロロコル制御パラメータのキュー構造から構成されている。各キューは、各種コマンド(リード/ライトなど)、HDDのアドレス、一時メモリ702のアドレス、転送長から構成されている。
【0054】
図9はキャッシュメモリ部22の構造を示すブロック図である。キャッシュメモリ部は、メモリコントローラ900と、キャッシュメモリ領域902とを備えている。メモリコントローラ900は、ストレージサブシステム10の他のユニットからアクセス要求を受け入れて、キャッシュメモリ902の適切な領域にアクセスするための制御を行う。
【0055】
キャッシュメモリ領域902は、ユーザデータ格納領域902A、構成情報902B、制御部間共有制御情報902C、制御データバックアップ領域902Dを備えている。
【0056】
制御データバックアップ領域902Dとは、ある制御部16に障害が発生した際に、別の制御部が、障害が発生した制御部の担当する処理を受け継ぐために必要な領域である。ここには、ローカルメモリ部30の制御情報のバックアップデータが格納されている。制御データバックアップ領域は、論理ボリューム毎に対する制御データ902Eを記憶している。
【0057】
制御部間共有制御情報902Cとは、複数の制御部に共有される制御情報のことである。これには、複数の制御部が共同で行うストレージサービスに必要な情報を含む。
【0058】
次に、スイッチLSIのアドレス変換部54(図4)が行うアドレス変換について説明する。図11はアドレス変換処理の原理を示すブロック図である。アドレス変換処理は、制御部のアドレス空間1100に属するアドレスを、変換手段1102が、ストレージサブシステムの実アドレス空間1104に属するアドレスに変換することである。
【0059】
ホストI/F部20、キャッシュメモリ22、ディスクI/F部24など、制御部からの制御を受ける被制御ユニットには、共通して、実アドレス空間が適用されている。これに対して、制御部には、実アドレス空間とは異なるように、例えば、PCI-Expressの規格に沿って、仮想的に設定されたアドレス空間が適用されている。
【0060】
例えば、ホストI/F部のアドレスは、
0×0000000_00000000〜0×1FFFFFFF_FFFFFFFF の範囲である。同様に、ディスクI/F部のアドレス、キャッシュメモリ部のアドレス、他の被制御ユニット部のアドレスは図11に示す通りである。このようにユニット毎に実アドレスが割り当てられている。
【0061】
これに対して、制御部については、プロセッコア毎に仮想アドレスが割り当てられている。例えば、0×3_00000000〜0×5_FFFFFFFFのアドレスがプロセッサコア♯1に割り当てられている。プロセッサコアがパケットをスイッチLSI18に出力する場合には、この範囲内でアドレスを選択してパケット搭載する。その他のプロセッサコアに割り当てられているアドレスは図11に記載したとおりである。
【0062】
アドレス変換部54が実現する変換処理1102は、変換テーブルによって、制御部の仮想アドレスを実アドレスに変換する。変換テーブルは、プロセッサコア毎に割り当ててあり、かつ、プロセッサコアの仮想アドレス毎に割り当てられている。たとえば、プロセッサコア♯1について、0×3_00000000〜0×3_1FFFFFFFのアドレス範囲には、変換テーブル1が割り当てられ、
【0063】
0×3_20000000〜0×3_3FFFFFFFのアドレス範囲には、変換テーブル2が割り当てられている。以後、制御部のアドレス範囲の均等分について、変換テーブル3以降が割り当てられている。複数のプロセッサコアはそれぞれ異なる論理アドレスを使用するために、変換テーブルも各プロセッサコアに対してそれぞれ異なるものとなる。変換テーブルの何が異なるかというと、仮想アドレスから実アドレスへ変換する際に使用される設定値が異なる。
【0064】
アドレス変換部54は、制御部からパケットを受信すると、パケットに含まれるアドレスを判定し、対応する変換テーブルの設定値をこのアドレスに対して適用して実アドレスを求め、パケットのアドレスを実アドレスに変更する。
【0065】
制御部は、実アドレス空間内の目的の実アドレスにアクセスしようとする際、変換後に実アドレスになるように、変換テーブルと特定の仮想アドレスとを決定し、この特定のアドレスが割り当てられたプロセッサコアから、パケットに特定の仮想アドレスを加えて、このパケットをスイッチLSIに出力する。
【0066】
既述のとおり、変換テーブルは、制御部の仮想アドレスに対応して存在し、仮想アドレスを実アドレスに変換するための設定値を備えている。図10は、変換テーブルの例を示す表である。この例では、変換テーブルに実アドレスの特定値が設定されている。例えば、テーブル1は、プロセッサコア♯1用であり、これには、ホストI/F部のアドレスの一部
(0×1000000_400000000)が設定されている。また、テーブル2は、テーブル1と同様に、プロセッサコア♯1用であって、これには、ホストI/F部のアドレスの他の一部(0×2000000_400000000)が設定されている。さらに、テーブル3もプロセッサコア♯1用であって、これには、キャッシュメモリ部のアドレスの一部(0×4000040_800000000)が設定されている。この表は、ローカルメモリ部30に、アドレス変換部変換テーブル情報(図3)として、登録されている。
【0067】
次に、アドレス変換の処理を、フローチャートを利用して説明する。図12は、制御部16の動作である。ホストI/F部12から、コマンドをリードした担当制御部の複数のプロセッサコアのうち、最初にコマンドを受信したプロセッサコアは、ローカルメモリ部30のアドレス変換部変換テーブル情報(図3)を参照し、アクセスしたい実アドレス空間に割り当てられた、変換テーブルがあるか否かをチェックする(1200)。例えば、ライトコマンドを処理するプロセッサコアがプロセッサコア♯1であるとし、アクセス先がホストI/F部20の実アドレス0×1000000_40000000〜0×1000000_5FFFFFFFである場合、プロセッサコア♯1は、テーブル1(図10)の存在を判定して、ステップ1200を肯定する。
【0068】
次いでプロセッサコア♯1は、テーブル1に割り当てられている仮想アドレス範囲から最適な仮想アドレスを選択して、この最適仮想アドレスを用いて、スイッチLSIにアクセスする(1204)。
【0069】
プロセッサコアがアクセスしたい実アドレスは一意に決まっている。そして、テーブルの設定値には基底アドレスを設定する。例えば、アクセスしたい実アドレスが0×201235_6789abcdの場合、0×2012345_60000000を変換テーブルに設定する。さらに、例えば、テーブルにこの値が設定された場合、仮想アドレスは、0×3_0789abcdとなる。
【0070】
一方、ステップ1200において、プロセッサコア♯1が、アクセスしたい実アドレス空間に割り当てられたテーブルが存在しないと判定した場合には、例えば、プロセッサコア#1にはディスクI/F部24の実アドレスに割り当てられた変換テーブルが存在しない場合、プロセッサコア#1は、ステップ1202に移行し、自プロセッサコア用に割り当てられた変換テーブルの中で重要性が低いテーブルを選定し、このテーブルの設置値をディスクI/F部のメモリ領域の所定の実アドレスに書き換える。例えば、プロセッサコアは、スイッチLSIのアドレス変換部54からのアクセス履歴がもっとも最古のテーブルを、このテーブルがどの実アドレスを設定値として有するかは関係なく、選定する。プロセッサコアは、変換テーブルへのアクセス履歴を、ローカルメモリ部30のアドレス変換部変換テーブル情報格納領域(300D)に記録する。その後、プロセッサコア#1は、選択した変換テーブルに割り当てられた仮想アドレスを用いてスイッチLSIにアクセスする。
【0071】
図13は、スイッチLSIのアドレス変換部54の動作フローチャートである。アドレス変換部54が、制御部から受信した仮想パケットのアドレスをデコードする(1300)。そして、デコードしたアドレスに割り当てられた変換テーブルを選択する(1302)。
【0072】
次に、アドレス変換部は選択した変換テーブルに基づいてアドレス変換を行う。例えば、制御部から送信されたパケットの下位アドレス(例えば、0×3_1FFFFFFFの“0×1FFFFFFF”)を選択した変換テーブルの設定値に加算する(1304)。変換テーブルの設定値にはパケットが送信されるべき実アドレス空間の一部のアドレスが設定されているために、この設定値にデコードされたアドレスを加算することによって、スイッチLSIはパケットを目的の実アドレスに送信することができる。次いで、アドレス変換部54は、アドレス変換したパケットを転送可否判定部60に送信する(1306)。
【0073】
スイッチLSIのアクセス元プロセッサコア判定部58は、パケットを送信したプロセッサコアを特定する。図14はそのフローチャートである。判定部がパケットを受信すると、パケットのアドレスをデコードする(1400)。図11に示す様に、制御部の仮想アドレスは、複数のプロセッサコアに対して、重ならない様に割り当てられているために、判定部は、デコードしたアドレスからパケットを送信したプロセッサコアを判定することができる(1402)。
【0074】
割り当て情報は、スイッチLSIに存在する。仮に、ローカルメモリ部にあるとすると、プロセッサコアがスイッチLSIのアクセスの毎にローカルメモリを参照しなければならなくなるからである。
【0075】
さらに、判定部56は、判定されたプロセッサコアの識別情報をスイッチLSIの転送可否判定部60と、不当アクセスプロセッサコアレジスタ62に通知する(1404)。このように、スイッチLSIは、制御部の複数のプロセッサコアの中からパケットを送信したプロセッサコアを判定することができる。
【0076】
なお、制御部が異なっても、複数の制御部には同じ仮想アドレス空間が適用されるが、アクセス元プロセッサコア判定部56は、制御部との間のパスの違いから制御部を区別することができる。したがって、判定部56は、複数の制御部に渡って、複数のプロセッサコアのそれぞれをパケットのアドレスの違いから区別することができる。
【0077】
不当アクセスチェック部58は、制御部から受信したパケットが不当アクセスであるか否かをチェックする。その動作フローチャートを図15に基づいて説明する。判定部60は、パケットの保障コードをチェックする(1500)。保障コードとは、アドレスやデータを保障するためのコード(LRCなど)であり、プログラムによって生成される。
【0078】
次いで、不当アクセスチェック部58は、アドレス変換部54で変換された実アドレスを受信し、アドレスが所定範囲に属しているか否かをチェックする(1502)。さらに、チェック部58はパケットの転送長をチェックする(1504)。以後、チェック部58は他のパラメータに基づいて不当アクセスの有無を判定してもよい。チェック部58が少なくとも一つのパラメータの異常を検出すると、アクセスが不当であると判定する。不当アクセスチェック部58は、転送可否判定部60と不当アクセスプロセッサコア記憶レジスタ62にアクセスが正当であるか不当であるかの判定結果を通知する(1506)。
【0079】
図16は、不当アクセスプロセッサコア記憶レジスタ62の動作フローチャートある。記憶レジスタは、不当アクセスチェック部58からの通知内容が不当アクセスであるか否かを判定する(1600)。不当アクセスでない場合には、処理を終了する。一方、不当アクセスを判定すると、アクセス元プロセッサコア判定部56からの判定結果を参照して、不当アクセス元となったプロセッサコアに対応するレジスタ領域に、不当アクセスの検出を示すフラグを設定記憶する(1602)。
【0080】
図17は、転送可否判定部60の動作フローチャートである。判定部60は、不当アクセスチェック部58からの判定結果を受けて、不当アクセスの有無を判定する(1700)。不当アクセスを判定すると、パケットの転送を不可と判定し、パケットを破棄するとともに、アクセス元プロセッサコアにパケットを破棄したことを通知する(1702)。
【0081】
判定部がステップ1700を否定判定すると、不当アクセスプロセッサコア記憶レジスタを参照して、アクセス元プロセッサコアに不当アクセスを示すフラグが設定されているか否かをチェックする(1704)。不当アクセスを示すフラグの設定を判定すると、アクセスが不当でなくても、ステップ1702に移行して、パケットを破棄する。
【0082】
スイッチLSIが不当アクセスを発行したプロセッサコアをレジスタ62に登録し、このプロセッサコアからの以後のアクセスが正常であっても、転送可否判定部60がこのアクセスを遮断するのは、次の理由による。
【0083】
例えば、特定のプロセッサコアが、ホストI/F部20の一時メモリ502に転送パラメータを設定し、次のアクセスで、プロトコル制御部500を起動して、この転送パラメータをリードしてリードしたパラメータでデータをホストI/F部からホスト装置12に転送することがある。
【0084】
この間、転送パラメータをホストI/F部20の一時メモリ502に設定するアクセスが、不当であると判定された後、続く、アクセスをスイッチLSIが許容すると、古い転送パラメータにしたがってデータがホスト装置から転送されてしまう。そこで、スイッチLSIは、不当と判定されたアクセスに続くアクセスを通過させないようにしている。このことは、後述の図24にも示されている。
【0085】
さらに、図17に戻り説明を続けると、ステップ1704が否定判定されたアクセス(パケット)を、正常パケットとして、パケットルーティング部に送信する(1706)。
【0086】
なお、図18は、スイッチLSIを経由した、複数のコンポーネント間のアクセスの代表例を示したものである。ここには、既述のとおり、制御部(プロセッサコア)から被制御ユニットへのアクセスの具体例が示されている。
【0087】
図19は、制御部の障害処理を示すフローチャートである。制御部に属する、スイッチLSIから障害通知を受けたプロセッサコアが図19のフローチャートを実行する。
【0088】
スイッチLSIに障害が発生すると、障害情報がスイッチLSIに設定され、プロセッサコアは障害通知をスイッチLSIから受ける(1900)。この通知によって、フローチャートをスタートする。
【0089】
次いで、プロセッサコアがスイッチLSIの障害情報をリードする(1902)。障害情報には、既述の不当アクセスプロセッサコア記憶レジスタの格納情報の他に、スイッチ自体の障害情報も含まれている。
【0090】
次いで、プロセッサコアは、スイッチLSIの障害情報の内容を判定する(1904)。障害情報がスイッチLSIの故障であると判定すると、スイッチLSIを閉塞の処理を行う(1906)。続いて、プロセッサコアは、ストレージサブシステムの保守装置の保守画面にエラー内容の表示(スイッチLSIの故障の種別、位置などの表示)、スイッチLSIの閉塞状況及びスイッチLSIを交換すべきことを促す旨を表示する(1908)。
【0091】
ステップ1904において、スイッチLISの障害情報がスイッチLISの故障ではないと判定されると、プロセッサコアは、不当アクセスプロセッサコア記憶レジスタ62の情報を参照して、レジスタの情報が自分に対するものであるか否かをチェックする(1910)。
【0092】
プロセッサコアが、障害情報が自プロセッサに対するものではないと判定すると、設定された、スイッチLSIの障害情報をクリアする(1924)。そして、プロセッサコアは、閉塞部位はないと判定して、フローチャートを終了する。
【0093】
一方、ステップ1910において、自プロセッサの不当アクセスが記憶されていると判定すると、自プロセッサコアの不当アクセスの発生回数は累計で3回以上かを判定する(1912)。不当アクセスプロセッサコア記憶レジスタ62には不当アクセス発生の累計カウンタがプロセッサコア毎に存在する。自プロセッサコアの不当アクセスの発生回数が累計で3回未満のときは、閉塞部位はないと判定して一連の処理を終了する(1924)。
【0094】
一方、自プロセッサコアの不当アクセスの発生回数が3回以上である場合には、このプロセッサコアは閉塞され、このプロセッサコアを有する制御部は交換されるものであるために、先ず、ステップ1924と同様に、スイッチLSIの障害情報(不当アクセスプロセッサコア記憶レジスタ)をクリアする。
【0095】
さらに、プロセッサコアは、ホストI/F部の一時メモリ内ルーティングテーブル中の自制御部(自プロセッサコア属する制御部)の一部をフェイルオーバ制御部に変更する(1916)。
【0096】
すなわち、図6の符号502Bで示されるルーティングテーブルにおいて、自制御部の全てを規定の制御部にフェイルオーバすると、フェイルオーバされた制御部のプロセッサコアに負荷が集中する。そこで、プロセッサコアの負荷を均等にするために、ルーティングテーブルの複数ある自制御部の一部について、自制御部を他制御部にフェイルオーバする。
【0097】
この場合、自制御部はそのまま一部の論理ボリュームに対するライト/リード処理を継続する。この場合は、後に説明するように、不当アクセスを発行したプロセッサコアは閉塞されるので、閉塞されない他のプロセッサコアが自制御部として行う各種処理を継続する。ルーティングテーブルにおいて、どの程度自制御部をフェイルオーバするかは、自制御部・他制御部の正常なプロセッサコア(複数)の負荷が均等になるようにという観点から決定される。
【0098】
次いで、プロセッサコアは、保守画面にエラー内容とプロセッサの閉塞状況及び自制御部の交換指示を表示する(1918)。さらに、プロセッサコアは、自制御部のローカルメモリ部30に存在する構成情報を更新して、自プロセッサコアを無効にし(1920)、さらに自プロセッサコアを閉塞する(1922)。
【0099】
なお、ステップ1914において、不当アクセスプロセッサ記憶レジスタ62の情報をクリアするが、少なくとも不当アクセス判定直後のアクセスは転送可否判定部によって遮断される。図24にこのことが説明されている。
【0100】
図20は制御部を交換するための処理を説明するフローチャートである。保守端末への保守員からの入力により、制御部を交換するための処理が開始される(2000)。
【0101】
次に、保守員からの入力によって交換処理プログラムをスタートさせたプロセッサコアは、ホストI/F部20の一時メモリ502内のルーティングテーブル中の交換対象となる制御部の全てを決められた制御部に切り替える(2002)。
【0102】
次いで、プロセッサコアは、キャッシュメモリ部にある構成情報を更新して交換対象制御部を無効にする(2004)。次いで、交換対象となった制御部を閉塞する(2006)。さらに、保守画面に交換対象制御部と交換の指示を表示し、保守員による制御部の交換が終了(2008)した後、交換対象制御部に属するプロセッサコアについて、不当アクセス制御記憶レジスタに障害フラグが残ったままになっている場合には、これをクリアする(2010)。なお、ローカルメモリ部の構成情報は、プロセッサコアによって定期的にキャッシュメモリからリードした情報を反映させたものである。
【0103】
さらに、プログラムは構成情報を更新して、交換した制御部をフェイルオーバ制御部として有効にする(2012)。さらに、ホストI/F部の一時メモリ内のルーティングテーブルにおいて、他の制御部にフェイルオーバされることなく残ったままになっている交換対象制御部についても規定の制御部に変更して一連の動作を終了する(2014)。
【0104】
図21は保守画面の一例である。論理デバイス番号ごとに、論理デバイスに対するライト/リード処理を行う担当制御部が示されている。図22は、保守画面の他の例である。スイッチLSIによって不当アクセスが通知されたプロセッサコアについて、プロセッサコアが閉塞されたこと(図19のステップ1922)が保守員に明示される。この保守情報は、図19のステップ1920において更新された構成情報に基づいている。図23Aは保守画面のさらに他の例である。保守員に障害が発生したプロセッサコア#2を有する制御部B(図22)を交換することの要請が通知される(図19のステップ1918)。図23B及び図23Cはストレージサブシステムの閉塞情報であり、制御部Bが閉塞されたことが示されている。
【0105】
図24は、プロセッサコアに障害が発生した際でのストレージサブシステムの動作を示すシーケンスフローチャートである。ホストI/F部20(図1)がホスト装置12からライトコマンド(S1A)を受信すると、担当振り分け制御部508(図5)は、ライトコマンドの処理を担当する制御部を決定し(S1)、担当制御部にコマンドを送信する(S2)。
【0106】
担当制御部では、最初にコマンドを受信したプロセッサコアがライトコマンドの処理を担当する(S3)。担当プロセッサコア(♯2)は、ローカルメモリ部30(図1)にアクセスして制御データをリードし(S4)、ヒットミスの有無を判定する。さらに、担当プロセッサコアは、ローカルメモリにアクセスして制御データをリードし(S5)、データがクリーンデータであるか否かを判定する。次いで、担当プロセッサコアはローカルメモリの制御情報を更新する(S6)。
【0107】
担当プロセッサコアはキャッシュメモリ部22の制御データバックアップ情報を更新する(S7)。さらに、担当プロセッサコアは、ホストI/F部の一時メモリ502(図5)にプロトコル制御部500の転送パラメータ(プロトコル制御部がホスト装置にデータを転送することを要求するために必要なもの)を設定するためのアクセス(S8)と、プロトコル制御部にデータ転送を開始させる要求のためのアクセス(S9)をスイッチLSI18(図1)に送信する。
【0108】
スイッチLSIは、S8のアクセスが不当アクセスであることを検出し、アクセスS8のアドレスから担当プロセッサコア#2を判定・特定する(S9A)。スイッチLSIは、不当アクセス(S8)に続いて、キュー処理に伴い担当プロセッサから発行された、プロトコル制御部を起動するアクセス(S9)を破棄し(S9A)、担当プロセッサコア#2に障害通知を割り込み処理にて実行する(S10)。
【0109】
担当プロセッサコアは、スイッチLSIの不当アクセスプロセッサコア記憶レジスタをリードし(S11)、自プロセッサの障害を判定し(S12)、さらに自プロセッサコアを閉塞することを判定する(S13)。そして、担当プロセッサコアは、不当アクセスプロセッサコア障害レジスタの障害フラグをクリアする(S14)。さらに、担当プロセッサコアはキャッシュメモリ上の構成情報を更新する(S15)。続いて、担当プロセッサコアは保守画面に自プロセッサコアを閉塞すること表示し、制御部の交換を保守員に促す(S17)。そして、自プロセッサコアを閉塞する(S17)。
【0110】
一方、ホスト装置は、既述の工程の間、ライトコマンドに対する応答がストレージサブシステムから帰ってこないために、ライトコマンドの発行をリトライする(S18A)。S18からS23までの動作は、既述のS1からS7までと同様である。この動作は、プロセッサコア#2が閉塞されているために、稼働状態にあるプロセッサコア#1によって実行される。
【0111】
担当プロセッサコア#1による、パラメータ設定のためのアクセス(S24:S8に対応)は不当アクセスではないことにより、このアクセスは、ホストI/F部のプロトコル制御部500までスイッチLSIによって転送される。プロトコル制御部を起動するためのアクセス(S25:S9に対応)もスイッチLSIによって遮断されることなくプロトコル制御部まで転送される。
【0112】
プロトコル制御部500は一時メモリ502から転送パラメータをリード(S26)し、ホスト装置14にユーザデータの転送要求を送信する(S27)。プロトコル制御部はユーザデータ受信して一時メモリに格納する(S28)。次いで、プロトコル制御部は担当プロセッサコアに転送完了を通知する(S29)。この通知を受けた担当プロセッサコアは、一時メモリ502に転送パラメータ(一時メモリからキャッシュメモリ部22にユーザデータを転送するために必要なもの)を設定し、DMA510を起動するためのアクセスをホストI/F部に送信する(S30)。
【0113】
DMAは、一時メモリ502から転送パラメータをリードし(S31)、ユーザデータをキャッシュメモリ部にライトする(S32)。キャッシュメモリ部はユーザデータを格納し、ホストI/F部にステータスを返信する(S33)。DMA504は、転送終了ステータスを担当プロセッサコア宛に送信する(S34)。担当プロセッサコアはプロトコル制御部に終了ステータスを通知し(S35)、ローカルメモリ30上のLRU制御情報を更新する(S37)。転送終了ステータスを受けたプロトコル制御部はホスト装置に終了ステータスを送信する(S36)。
【0114】
既述の実施形態では、変換テーブルの設定値として、プロセッサコアからのアクセスの到達目標点としての実アドレスとしたが、これに限らず、所定の関数を用いて、スイッチLSIが仮想アドレスを実アドレスに変換するようにしてもよい。
【産業上の利用可能性】
【0115】
本発明は、マルチプロセッサコアに構成をストレージ制御部に適用したストレージサブシステムにおいて、障害が発生したプロセッサコアを特定し、他のプロセッサコアの処理に影響を与えることなく、データストレージサービスを遂行させるという用途に適用できる。
【符号の説明】
【0116】
10 ストレージサブシステム
12 ホスト装置
16(16A,16B) ストレージ制御部
18 スイッチ回路
20(20A,20B) ホストI/F回路
22(20A,20B) キャッシュメモリ
24(24A,24B) ディスクI/F回路
28 マルチコアプロセッサ
【技術分野】
【0001】
本発明は、ストレージサブシステム及びストレージサブシステムの制御方法に関するものである。
【背景技術】
【0002】
ストレージサブシステムは、ホスト装置に対してデータストレージサービスを提供する装置である。ホスト装置がストレージサブシステムに接続されることにより、ストレージシステムが構築される。ストレージサブシステムは、記憶デバイスとしての複数のハードディスクドライブからなるディスクアレイ装置と、ホスト装置とディスクアレイ装置との間でのデータの入出力を制御するコントローラと、を備えている。
【0003】
コントローラは、ストレージサブシステム全体を制御するためのプロセッサと、ホスト装置に対するホストインターフェースと、ディスクアレイ装置に対するディスクインターフェースとを備え、さらに、ユーザデータをキャッシイングするためのキャッシュメモリが両方のインターフェースの間に配置されている。
【0004】
この種のストレージサブシステムとして、例えば、特開2009−9200号公報に記載のものが存在する。このストレージサブシステムは、複数のプロセッサを有する制御部がスイッチLSIによって、ホストインターフェース、ディスクインターフェース、そして、キャッシュメモリに接続された構造を有している。
【0005】
このストレージシステムは、制御部内のいずれかのコンポーネントに障害が発生した場合に、制御部の入出力パスを遮断し、遮断された状態において障害が発生したコンポーネントを特定し、これを無効化する。そして、障害が発生したコンポーネントを無効化した後、正常なコンポーネントのみで、目的の処理を行うことができるか判断し、それが可能であると判断した場合に、入出力パスの遮断を解除(開放)して、再起動後動作を再開する。
【0006】
また、特開2007−207007号公報には、ディスクドライブと、ストレージコントローラと、を備えるストレージシステムであって、ストレージコントローラは、ホスト計算機に接続される一つ以上のインターフェースと、インターフェースに接続される複数のプロセッサと、を備え、プロセッサは、一つ以上の論理アクセスポートをホスト計算機に提供し、インターフェースは、論理アクセスポート宛てのアクセス要求を処理するプロセッサを示すルーティング情報を記憶し、アクセス要求をホスト計算機から受信すると、受信されたアクセス要求から宛先を抽出し、ルーティング情報及び抽出された宛先に基づいて、受信されたアクセス要求を処理するプロセッサを特定し、受信されたアクセス要求を、前記特定されたプロセッサに転送することが記載されている。
【0007】
さらに、米国特許公報7421532号公報には、スイッチLSIによるアドレス変換でマルチレート構造を実現する方法が記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−9200号公報
【特許文献2】特開2007−207007号公報
【特許文献3】米国特許公報7421532号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
大規模なストレージシステムでは、サブシステムの制御能力を向上させるために、マルチコアプロセッサが使用されるようになっている。既述の特開2009−9200号公報にも、プロセッサが複数のプロセッサコアを有することが記載されている。
【0010】
スイッチLSIはプロセッサコアからアクセスを受けると、アクセス先アドレスに基づいて、アクセスを、ホストインターフェース、ディスクインターフェース、又はキャッシュメモリにルーティングする。そして、スイッチLSIは、プロセッサコアから不当なアクセスを受けると、障害の発生をプロセッサコアに通知する。この通知を受けたプロセッサコアは、通常のストレージ制御処理に優先させて障害対応処理プログラムを実行する。
【0011】
ところで、従来のストレージサブシステムは、複数あるプロセッサコアを互いに判別することができないため、ある特定のプロセッサコアからスイッチLSIが不当アクセスを受信した場合、スイッチLSIは障害の発生を全てのプロセッサコアに通知する。
【0012】
これでは、正常なプロセッサコアまでも、障害対応処理に追われるために、その間、ストレージサブシステムは、I/O処理を行うことができない。それでは、ストレージサブシステムは、ホスト装置に対して、I/O処理の信頼性を維持することができなくなる。
【0013】
本発明は、このような課題を解決するために、プロセッサにマルチコア方式を適用して、プロセッサコアからスイッチ回路に不当なアクセスがあった場合でも、ホスト装置に対してI/O処理の信頼性を維持することができるストレージサブシステム、およびその制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【0014】
この目的を解決するために、本発明は、ストレージサブシステムにおいて、ホストインターフェースなど、プロセッサがアクセスする複数の被制御ユニットに対して共通に適用される第1の論理アドレス空間とは異なる第2論理アドレス空間をマルチコアプロセッサに適用する、ことを特徴とする。
【0015】
ストレージサブシステムは、各プロセッサコアに対して、共通アドレスとは異なる、第2の論理アドレスを、融通性を持って適用する。たとえば、各プロセッサコアに対して、それぞれ異なるアドレスを適用する。プロセッサコアはこのアドレスでスイッチLSIにアクセスする。スイッチ回路は、プロセッサコアからのアクセスに含まれる論理アドレスを判別し、アクセス元であるプロセッサコアを特定することができる。
【0016】
スイッチ回路は、プロセッサコアのアクセスに含まれる独自なアドレスを共通アドレスに変換する。この変換は変換テーブルを用いて行われる。複数のプロセッサコアはそれぞれ異なる論理アドレスを使用するために、変換テーブルも各プロセッサコアに対してそれぞれ異なるものとなる。変換方法の一例は、プロセッサコアのアクセスに含まるアドレスに変換テーブルに含まる設定値を加えて、プロセッサコアのアクセスが共有アドレスに到達できるようにすることである。複数のプロセッサコアを有するプロセッサは、目的とする特定の共有アドレスにアクセスできるように、特定のプロセッサコアを選択してアクセスを発信する。
【発明の効果】
【0017】
本発明によれば、プロセッサにマルチコア方式を適用して、プロセッサコアからスイッチ回路に不当なアクセスがあった場合でも、上位装置に対してI/O処理の信頼性を維持することができるストレージサブシステム及びその制御方法を提供することができる。
【図面の簡単な説明】
【0018】
【図1】ストレージシステムの実施形態を示したハードウエアブロック図である。
【図2】制御部のマルチコアプロセッサのハードウエアブロック図である。
【図3】制御部のローカルメモリ部の詳細な構成を示すブロック図である。
【図4】スイッチLSIの詳細構成を示すブロック図である。
【図5】ホストI/F部の構造を示すブロック図である。
【図6】一時メモリのブロック図である。
【図7】ディスクI/F部のブロック図である。
【図8】一時メモリのブロック図である。
【図9】キャッシュメモリ部の構造を示すブロック図である。
【図10】変換テーブルの例を示す表である。
【図11】アドレス変換処理の原理を示すブロック図である。
【図12】制御部のアクセス発行動作を示すフローチャートである。
【図13】スイッチLSIのアドレス変換部の動作フローチャートである。
【図14】スイッチLSIのアパケットを送信したプロセッサコアを特定するためのフローチャートである。
【図15】不当アクセスチェック部が、制御部から受信したパケットが不当アクセスであるか否かをチェックする動作を示すフローチャートである。
【図16】不当アクセスプロセッサコア記憶レジスタの動作フローチャートある。
【図17】転送可否判定部の動作フローチャートである。
【図18】スイッチLSIを経由した、複数のコンポーネント間のアクセスの代表例を纏めた表である。
【図19】制御部の障害処理を説明するフローチャートである。
【図20】制御部を交換するための処理を説明するフローチャートである。
【図21】ストレージサブシステムの保守画面の一例である。
【図22】その他の例である。
【図23A】保守画面のさらに他の例である。
【図23B】ストレージサブシステムの閉塞情報を表す保守画面の例である。
【図23C】その他の例である。
【図24】プロセッサコアに障害が発生した際でのストレージサブシステムの動作を示すシーケンスフローチャートである。
【発明を実施するための形態】
【0019】
次に本発明の実施形態について説明する。図1は、ストレージシステムの実施形態を示したハードウエアブロック図である。ストレージシステムは、ストレージサブシステム10と、これに接続するホスト装置12(12A,12B)とを備えている。ストレージサブシステム10は、ネットワーク14(14A,14B)を介してホスト装置12に接続されている。
【0020】
ストレージサブシステム10は、制御部16(16A,16B)と、制御部によって、データストレージのための動作が制御されるホストインターフェース(ホストI/F)などの被制御ユニット群と、両者を接続するスイッチ部18(18A,18B)とを備えている。スイッチ部18はスイッチLSIを備えている。
【0021】
被制御ユニット群は、ホスト装置12Aと接続するホストI/F部20Aと、ホスト装置12Bと接続するホストI/F部20Bと、キャッシュメモリ部22(22A,22B)と、ディスクI/F部24(24A,24B)と、からなる。被制御ユニット群のそれぞれ及びスイッチ部18は、内部ネットワーク26によって互いに接続されている。
【0022】
制御部16A及び16Bは、それぞれ、マルチコア構造からなるプロセッサ28と、ローカルメモリ部30と、チップセット32とを備えている。制御部16は、被制御ユニット群を制御することによって、ストレージサブシステム10の全体の動作を決定している。制御の中心は各制御部のマルチコアプロセッサ28である。マルチコアプロセッサの処理は、複数のプロセッサコアによって行われる並列処理である。
【0023】
ローカルメモリ部30は、キャッシュメモリ部22に格納されたユーザデータに関連付けられた制御データ、及びシステム構成情報などその他の情報を格納している。制御データは、ストレージサブシステム10がホスト装置12に対して提供するストレージサービスの遂行に必要な管理情報を含んでいる。
【0024】
図2は制御部16のマルチコアプロセッサ28のブロック図である。マルチコアプロセッサは、4つのプロセッサコア(#1−4)を備えている。各プロセッサコアは、その内部にL1キャッシュを備え、その外部には二つのプロセッサコアによって共有されるL2キャッシュ213が存在する。
【0025】
なお、各プロセッサコア211は、スイッチLSIからの障害通知を登録するレジスタを備えている。レジスタを参照して、障害通知を認識したプロセッサコアは、障害処理プログラムを呼び出して、これを実行して障害復帰処理を実行する。あるいは、プロセッサコアを閉塞する処理を行う。
【0026】
マルチコアプロセッサ28とチップセット32とは、フロントサイドバス(FSB)34で接続されている。チップセット32とローカルメモリ部30とはデータ信号線36によって接続されている。チップセット32は、マルチコアプロセッサ28、スイッチ部18、ローカルメモリ部30を互いに接続するためのブリッジとして機能する。
【0027】
制御部16Aのチップセット32とスイッチ部18(18A,18B)とは、PCI-Express38Aによって接続され、制御部16Bのチップセット32とスイッチ部18(18A,18B)とは、PCI-Express38Bによって接続されている。
【0028】
スイッチLSIは、制御部の各プロセッサコア(図2)と、ホストI/F部20、キャッシュメモリ部22、又はディスクI/F部24との接続をスイッチングする集積回路である。ホストI/F部20は、ホスト12からのライト又はリードコマンドを制御部16に振り分け、又は、制御部16からの要求を受けてホスト12とキャッシュメモリ部22間のデータ転送を実現する。
【0029】
キャッシュメモリ部22は、ユーザデータや、各制御部16が共有する制御データを一時記憶する。ディスクI/F部24は制御部16からの要求を受けてディスクアレイ部40とキャッシュメモリ部22間のデータ転送や、パリティ演算を実行する。なお、記憶デバイスにはハードディスクドライブに限らず、フラッシュメモリ駆動装置などの半導体メモリ装置も該当する。
【0030】
図3は、ローカルメモリ部30の詳細な構成を示すブロック図である。制御データ記憶領域300Aは、ストレージサブシステム10に割り当てられた論理ボリューム(LDEV)の制御データを記憶する領域で、例えば、キャッシュデータの在り無しと、ユーザデータが格納されているキャッシュメモリ部22のアドレス、キャッシュデータのLRU情報(アクセス履歴)、キャッシュデータがクリーンデータかダーティデータかの区別に関する情報を格納するものである。
【0031】
領域300Bは、ストレージサブシステム内の被制御ユニットの構成情報を格納し、領域300Cは、ホストI/F部からのコマンドを格納する。コマンドに対する処理を実行する権利を持つプロセッサコアは、格納されているコマンドを順番に処理する。領域300Dは、スイッチLSIのアドレス変換テーブルや、変換テーブルの使用履歴の情報を格納する。
【0032】
図4はスイッチLSIの詳細構成を示すブロック図である。スイッチLSIは、図示する各要素を備えている。パケット受信部(回路)50は、制御部16から被制御ユニットに対して宛てられたPCI-Expressパケットを受信する。パケット送信部52は、被制御ユニットから制御部(回路)16にPCI-Expressパケットを送信する。
【0033】
パケット受信部50はパケットをアドレス変換部(回路)54、アクセス元プロセッサコア判定部(回路)56、不当アクセスチェック部58(回路)に出力する。アドレス変換部54は、パケットに含まれる、プロセッサコアが指定した論理アドレスを被制御ユニットに共通に適用された実アドレスに変換する変換テーブルを備える。
【0034】
アクセス元プロセッサコア判定部56は、プロセッサコアが指定した論理アドレスからアクセス元プロセッサコアを判定する。不当アクセスチェック部58は、プロセッサコアからのアクセスが、判定プログラムにしたがって、正当なものであるか、不当なものであるかをチェックする。
【0035】
アドレス変換部54の変換結果と、アクセス元プロセッサコア判定部56の判定結果と、不当アクセスチェック部58のチェック結果は、転送可否判定部60に送られる。また、アクセス元プロセッサコア判定部56の判定結果と、不当アクセスチェック部58のチェック結果は、不当アクセスプロセッサコア記憶レジスタ62に送られている。不当アクセスプロセッサコア記憶レジスタ62の情報は、転送可否判定部60(回路)に送られる。
【0036】
不当アクセスプロセッサコア記憶レジスタ62は、不当アクセスを実施したプロセッサコア番号を記憶する。転送可否判定部60は、不当アクセスチェック部58の判定結果と、不当アクセス記憶レジスタ62の内容から、パケットの転送可否を判定する。
【0037】
転送可否判定部60から転送が許可されたパケットがパケットルーティング部64に送出される。パケットルーティング部(回路)64はルーティングテーブル66にしたがって、転送可否判定部60から送られたパケットの変換後の送信先アドレスに基き、パケットのデータを目的の被制御ユニットに、内部ネットワークパケット送信部68を介してデリバリーする。内部ネットワークパケット送信部68は、内部ネットワーク26に接続している。
【0038】
また、パケットルーティング部64は、内部ネットワークパケット受信部70(回路)から受信したパケットを制御部16のプロセッサコア28にルーティングする機能も備えている。パケットルーティング部64は、データを転送する際に、所定のプロトコル変換を行う。
【0039】
図5は、ホストI/F部20の構造を示すブロック図である。ホストI/F部は、プロトコル制御部500と、ルーティング部504と、一時メモリ502とを備えている。プロトコル制御部500はネットワーク14を介して上位装置12に接続される。ルーティング部504は内部ネットワーク26に接続している。
【0040】
プロトコル制御部500は、ホスト装置12とストレージシステム10との間でやりとりされるデータのプロトコル変換を行う。すなわち、プロトコル制御部は、ネットワーク14上を伝送されてきた、ホスト装置からの外部データとしてのI/O要求を、ストレージシステム内で処理するための内部データに変換し、また、I/O要求に対してホスト装置に送信すべき内部データをネットワーク14上に伝送するために適した外部データに変換する。
【0041】
ルーティング部504は、メモリコントローラ506、DMA510、担当制御部振り分け部508を備えている。一時メモリ502はキャッシュメモリ部とプロトコル制御部500との間で転送されるユーザデータを一時的に記憶する。
【0042】
メモリコントローラ506は、一時メモリを制御する。DMA510は、キャッシュメモリ部22と一時メモリ502間のデータ転送を実行する。担当制御部振り分け部508は、ホスト装置から送られたライト/リードコマンドの処理を担当する制御部を、ルーティングテーブルに基づいて決定し、決定された制御部のローカルメモリ部30にコマンドを送信する。
【0043】
図6は、一時メモリ502のブロック図である。一時メモリは、ユーザデータ格納領域502A、ルーティングテーブル設定領域502B、DMAパラメータ設定領域502C、プロトコル制御部転送パラメータ設定領域502Dを備えている。
【0044】
ルーティングテーブルは、担当制御部振り分け部508が、コマンドの送信先を識別するためのルーティング情報を備えたものである。ルーティングテーブルは、ホストS_ID(Source ID:フレーム送信側のN_Portアドレス識別子である。)と、LUN(Logical Unit Number)を有している。
【0045】
ディスクアレイ装置40を構成するディスクは、論理的に分割され、分割した区画をそれぞれ異なるRAIDレベルに設定することができる。この区画がRAIDグループである。このRAIDグループをさらに論理的に分割したSCSIのアクセス単位である領域をLU(Logical Unit)であり、その領域は、各々、LUNを持つ。
【0046】
“担当制御部”には、ホストS_IDとLUNとから特定される論理記憶領域に対するコマンドを処理すべき制御部の識別子が登録される。“フェイルオーバ制御部”には、担当制御部が障害状態になった際に、コマンド処理を引き継ぐ他の制御部の識別子が登録されている。“フェイルオーバ制御有効フラグ”には、フェイルオーバ制御部がコマンド処理を担当するか否かの情報が登録されている。
【0047】
DMAパラメータ設定領域502Cは、DMA510が一時メモリ502からデータを転送するために必要パラメータ(アドレス・転送長・ライト又はリードコマンドなど)を備える。プロトコル制御部転送パラメータ設定領域502Dは、プトロコル制御部500がホスト装置12と一時メモリ502との間でユーザデータの転送を行うためのパラメータを備える。プロセッサコアがプロトコル制御部500にパラメータを設定することで、プロトコル制御部がこのパラメータをリードしてユーザデータの転送を行う。
【0048】
図7はディスクI/F部24のブロック図である。ディスクI/F部24は、ディスク制御部700と、一時メモリ702と、プロトコル制御部704とを備えている。ディスク制御部700は内部ネットワーク26に接続している。ディスク制御部700はプロトコル制御部704を介してディスクアレイ部40に接続している。
【0049】
プロトコル制御部704は、ディスクアレイ部40との間のデータのプロトコル変換を行う。一時メモリ702は、キャッシュメモリ部22とプロトコル制御部704との間で転送されるユーザデータを一時記憶する。メモリコントローラ710は、一時メモリ702を制御する。DMA706はキャッシュメモリ部22と一時メモリ702間のデータの転送を行う。パリティ演算部708は、ディスクアレイ部40に格納されるデータに対してRAID5やRAID6などのパリティ演算を行う。
【0050】
ステータスルーティング部712は、プロトコル制御部704から送信されて来るステータス情報に含まれる情報から担当制御部16を判定し、担当制御部のローカルメモリ30に、ステータス情報を転送する。
【0051】
図8は、一時メモリ702のブロック図である。一時メモリはユーザデータ格納領域702Aと、DMAパラメータ設定領域702Bと、パリティ演算パラメータ設定領域702Cと、プロトコル制御部転送パラメータ設定領域702Dと、を備えている。
【0052】
パリティ演算パラメータ設定領域702Cは、パリティ演算パラメータのキュー構造から構成され、各キューのパリティ演算パラメータは、パリティ演算に必要な情報であって、各種コマンド(ライト/リードなど)、各種演算モード(RAID5/6のパリティ種別)、新・旧データの格納されている領域のアドレス、新・旧パリティの格納先アドレス、データが転送されるキャッシュメモリ部のアドレス、転送長などである。
【0053】
プロトコル制御部転送パラメータ設定領域702Dは、プロロコル制御パラメータのキュー構造から構成されている。各キューは、各種コマンド(リード/ライトなど)、HDDのアドレス、一時メモリ702のアドレス、転送長から構成されている。
【0054】
図9はキャッシュメモリ部22の構造を示すブロック図である。キャッシュメモリ部は、メモリコントローラ900と、キャッシュメモリ領域902とを備えている。メモリコントローラ900は、ストレージサブシステム10の他のユニットからアクセス要求を受け入れて、キャッシュメモリ902の適切な領域にアクセスするための制御を行う。
【0055】
キャッシュメモリ領域902は、ユーザデータ格納領域902A、構成情報902B、制御部間共有制御情報902C、制御データバックアップ領域902Dを備えている。
【0056】
制御データバックアップ領域902Dとは、ある制御部16に障害が発生した際に、別の制御部が、障害が発生した制御部の担当する処理を受け継ぐために必要な領域である。ここには、ローカルメモリ部30の制御情報のバックアップデータが格納されている。制御データバックアップ領域は、論理ボリューム毎に対する制御データ902Eを記憶している。
【0057】
制御部間共有制御情報902Cとは、複数の制御部に共有される制御情報のことである。これには、複数の制御部が共同で行うストレージサービスに必要な情報を含む。
【0058】
次に、スイッチLSIのアドレス変換部54(図4)が行うアドレス変換について説明する。図11はアドレス変換処理の原理を示すブロック図である。アドレス変換処理は、制御部のアドレス空間1100に属するアドレスを、変換手段1102が、ストレージサブシステムの実アドレス空間1104に属するアドレスに変換することである。
【0059】
ホストI/F部20、キャッシュメモリ22、ディスクI/F部24など、制御部からの制御を受ける被制御ユニットには、共通して、実アドレス空間が適用されている。これに対して、制御部には、実アドレス空間とは異なるように、例えば、PCI-Expressの規格に沿って、仮想的に設定されたアドレス空間が適用されている。
【0060】
例えば、ホストI/F部のアドレスは、
0×0000000_00000000〜0×1FFFFFFF_FFFFFFFF の範囲である。同様に、ディスクI/F部のアドレス、キャッシュメモリ部のアドレス、他の被制御ユニット部のアドレスは図11に示す通りである。このようにユニット毎に実アドレスが割り当てられている。
【0061】
これに対して、制御部については、プロセッコア毎に仮想アドレスが割り当てられている。例えば、0×3_00000000〜0×5_FFFFFFFFのアドレスがプロセッサコア♯1に割り当てられている。プロセッサコアがパケットをスイッチLSI18に出力する場合には、この範囲内でアドレスを選択してパケット搭載する。その他のプロセッサコアに割り当てられているアドレスは図11に記載したとおりである。
【0062】
アドレス変換部54が実現する変換処理1102は、変換テーブルによって、制御部の仮想アドレスを実アドレスに変換する。変換テーブルは、プロセッサコア毎に割り当ててあり、かつ、プロセッサコアの仮想アドレス毎に割り当てられている。たとえば、プロセッサコア♯1について、0×3_00000000〜0×3_1FFFFFFFのアドレス範囲には、変換テーブル1が割り当てられ、
【0063】
0×3_20000000〜0×3_3FFFFFFFのアドレス範囲には、変換テーブル2が割り当てられている。以後、制御部のアドレス範囲の均等分について、変換テーブル3以降が割り当てられている。複数のプロセッサコアはそれぞれ異なる論理アドレスを使用するために、変換テーブルも各プロセッサコアに対してそれぞれ異なるものとなる。変換テーブルの何が異なるかというと、仮想アドレスから実アドレスへ変換する際に使用される設定値が異なる。
【0064】
アドレス変換部54は、制御部からパケットを受信すると、パケットに含まれるアドレスを判定し、対応する変換テーブルの設定値をこのアドレスに対して適用して実アドレスを求め、パケットのアドレスを実アドレスに変更する。
【0065】
制御部は、実アドレス空間内の目的の実アドレスにアクセスしようとする際、変換後に実アドレスになるように、変換テーブルと特定の仮想アドレスとを決定し、この特定のアドレスが割り当てられたプロセッサコアから、パケットに特定の仮想アドレスを加えて、このパケットをスイッチLSIに出力する。
【0066】
既述のとおり、変換テーブルは、制御部の仮想アドレスに対応して存在し、仮想アドレスを実アドレスに変換するための設定値を備えている。図10は、変換テーブルの例を示す表である。この例では、変換テーブルに実アドレスの特定値が設定されている。例えば、テーブル1は、プロセッサコア♯1用であり、これには、ホストI/F部のアドレスの一部
(0×1000000_400000000)が設定されている。また、テーブル2は、テーブル1と同様に、プロセッサコア♯1用であって、これには、ホストI/F部のアドレスの他の一部(0×2000000_400000000)が設定されている。さらに、テーブル3もプロセッサコア♯1用であって、これには、キャッシュメモリ部のアドレスの一部(0×4000040_800000000)が設定されている。この表は、ローカルメモリ部30に、アドレス変換部変換テーブル情報(図3)として、登録されている。
【0067】
次に、アドレス変換の処理を、フローチャートを利用して説明する。図12は、制御部16の動作である。ホストI/F部12から、コマンドをリードした担当制御部の複数のプロセッサコアのうち、最初にコマンドを受信したプロセッサコアは、ローカルメモリ部30のアドレス変換部変換テーブル情報(図3)を参照し、アクセスしたい実アドレス空間に割り当てられた、変換テーブルがあるか否かをチェックする(1200)。例えば、ライトコマンドを処理するプロセッサコアがプロセッサコア♯1であるとし、アクセス先がホストI/F部20の実アドレス0×1000000_40000000〜0×1000000_5FFFFFFFである場合、プロセッサコア♯1は、テーブル1(図10)の存在を判定して、ステップ1200を肯定する。
【0068】
次いでプロセッサコア♯1は、テーブル1に割り当てられている仮想アドレス範囲から最適な仮想アドレスを選択して、この最適仮想アドレスを用いて、スイッチLSIにアクセスする(1204)。
【0069】
プロセッサコアがアクセスしたい実アドレスは一意に決まっている。そして、テーブルの設定値には基底アドレスを設定する。例えば、アクセスしたい実アドレスが0×201235_6789abcdの場合、0×2012345_60000000を変換テーブルに設定する。さらに、例えば、テーブルにこの値が設定された場合、仮想アドレスは、0×3_0789abcdとなる。
【0070】
一方、ステップ1200において、プロセッサコア♯1が、アクセスしたい実アドレス空間に割り当てられたテーブルが存在しないと判定した場合には、例えば、プロセッサコア#1にはディスクI/F部24の実アドレスに割り当てられた変換テーブルが存在しない場合、プロセッサコア#1は、ステップ1202に移行し、自プロセッサコア用に割り当てられた変換テーブルの中で重要性が低いテーブルを選定し、このテーブルの設置値をディスクI/F部のメモリ領域の所定の実アドレスに書き換える。例えば、プロセッサコアは、スイッチLSIのアドレス変換部54からのアクセス履歴がもっとも最古のテーブルを、このテーブルがどの実アドレスを設定値として有するかは関係なく、選定する。プロセッサコアは、変換テーブルへのアクセス履歴を、ローカルメモリ部30のアドレス変換部変換テーブル情報格納領域(300D)に記録する。その後、プロセッサコア#1は、選択した変換テーブルに割り当てられた仮想アドレスを用いてスイッチLSIにアクセスする。
【0071】
図13は、スイッチLSIのアドレス変換部54の動作フローチャートである。アドレス変換部54が、制御部から受信した仮想パケットのアドレスをデコードする(1300)。そして、デコードしたアドレスに割り当てられた変換テーブルを選択する(1302)。
【0072】
次に、アドレス変換部は選択した変換テーブルに基づいてアドレス変換を行う。例えば、制御部から送信されたパケットの下位アドレス(例えば、0×3_1FFFFFFFの“0×1FFFFFFF”)を選択した変換テーブルの設定値に加算する(1304)。変換テーブルの設定値にはパケットが送信されるべき実アドレス空間の一部のアドレスが設定されているために、この設定値にデコードされたアドレスを加算することによって、スイッチLSIはパケットを目的の実アドレスに送信することができる。次いで、アドレス変換部54は、アドレス変換したパケットを転送可否判定部60に送信する(1306)。
【0073】
スイッチLSIのアクセス元プロセッサコア判定部58は、パケットを送信したプロセッサコアを特定する。図14はそのフローチャートである。判定部がパケットを受信すると、パケットのアドレスをデコードする(1400)。図11に示す様に、制御部の仮想アドレスは、複数のプロセッサコアに対して、重ならない様に割り当てられているために、判定部は、デコードしたアドレスからパケットを送信したプロセッサコアを判定することができる(1402)。
【0074】
割り当て情報は、スイッチLSIに存在する。仮に、ローカルメモリ部にあるとすると、プロセッサコアがスイッチLSIのアクセスの毎にローカルメモリを参照しなければならなくなるからである。
【0075】
さらに、判定部56は、判定されたプロセッサコアの識別情報をスイッチLSIの転送可否判定部60と、不当アクセスプロセッサコアレジスタ62に通知する(1404)。このように、スイッチLSIは、制御部の複数のプロセッサコアの中からパケットを送信したプロセッサコアを判定することができる。
【0076】
なお、制御部が異なっても、複数の制御部には同じ仮想アドレス空間が適用されるが、アクセス元プロセッサコア判定部56は、制御部との間のパスの違いから制御部を区別することができる。したがって、判定部56は、複数の制御部に渡って、複数のプロセッサコアのそれぞれをパケットのアドレスの違いから区別することができる。
【0077】
不当アクセスチェック部58は、制御部から受信したパケットが不当アクセスであるか否かをチェックする。その動作フローチャートを図15に基づいて説明する。判定部60は、パケットの保障コードをチェックする(1500)。保障コードとは、アドレスやデータを保障するためのコード(LRCなど)であり、プログラムによって生成される。
【0078】
次いで、不当アクセスチェック部58は、アドレス変換部54で変換された実アドレスを受信し、アドレスが所定範囲に属しているか否かをチェックする(1502)。さらに、チェック部58はパケットの転送長をチェックする(1504)。以後、チェック部58は他のパラメータに基づいて不当アクセスの有無を判定してもよい。チェック部58が少なくとも一つのパラメータの異常を検出すると、アクセスが不当であると判定する。不当アクセスチェック部58は、転送可否判定部60と不当アクセスプロセッサコア記憶レジスタ62にアクセスが正当であるか不当であるかの判定結果を通知する(1506)。
【0079】
図16は、不当アクセスプロセッサコア記憶レジスタ62の動作フローチャートある。記憶レジスタは、不当アクセスチェック部58からの通知内容が不当アクセスであるか否かを判定する(1600)。不当アクセスでない場合には、処理を終了する。一方、不当アクセスを判定すると、アクセス元プロセッサコア判定部56からの判定結果を参照して、不当アクセス元となったプロセッサコアに対応するレジスタ領域に、不当アクセスの検出を示すフラグを設定記憶する(1602)。
【0080】
図17は、転送可否判定部60の動作フローチャートである。判定部60は、不当アクセスチェック部58からの判定結果を受けて、不当アクセスの有無を判定する(1700)。不当アクセスを判定すると、パケットの転送を不可と判定し、パケットを破棄するとともに、アクセス元プロセッサコアにパケットを破棄したことを通知する(1702)。
【0081】
判定部がステップ1700を否定判定すると、不当アクセスプロセッサコア記憶レジスタを参照して、アクセス元プロセッサコアに不当アクセスを示すフラグが設定されているか否かをチェックする(1704)。不当アクセスを示すフラグの設定を判定すると、アクセスが不当でなくても、ステップ1702に移行して、パケットを破棄する。
【0082】
スイッチLSIが不当アクセスを発行したプロセッサコアをレジスタ62に登録し、このプロセッサコアからの以後のアクセスが正常であっても、転送可否判定部60がこのアクセスを遮断するのは、次の理由による。
【0083】
例えば、特定のプロセッサコアが、ホストI/F部20の一時メモリ502に転送パラメータを設定し、次のアクセスで、プロトコル制御部500を起動して、この転送パラメータをリードしてリードしたパラメータでデータをホストI/F部からホスト装置12に転送することがある。
【0084】
この間、転送パラメータをホストI/F部20の一時メモリ502に設定するアクセスが、不当であると判定された後、続く、アクセスをスイッチLSIが許容すると、古い転送パラメータにしたがってデータがホスト装置から転送されてしまう。そこで、スイッチLSIは、不当と判定されたアクセスに続くアクセスを通過させないようにしている。このことは、後述の図24にも示されている。
【0085】
さらに、図17に戻り説明を続けると、ステップ1704が否定判定されたアクセス(パケット)を、正常パケットとして、パケットルーティング部に送信する(1706)。
【0086】
なお、図18は、スイッチLSIを経由した、複数のコンポーネント間のアクセスの代表例を示したものである。ここには、既述のとおり、制御部(プロセッサコア)から被制御ユニットへのアクセスの具体例が示されている。
【0087】
図19は、制御部の障害処理を示すフローチャートである。制御部に属する、スイッチLSIから障害通知を受けたプロセッサコアが図19のフローチャートを実行する。
【0088】
スイッチLSIに障害が発生すると、障害情報がスイッチLSIに設定され、プロセッサコアは障害通知をスイッチLSIから受ける(1900)。この通知によって、フローチャートをスタートする。
【0089】
次いで、プロセッサコアがスイッチLSIの障害情報をリードする(1902)。障害情報には、既述の不当アクセスプロセッサコア記憶レジスタの格納情報の他に、スイッチ自体の障害情報も含まれている。
【0090】
次いで、プロセッサコアは、スイッチLSIの障害情報の内容を判定する(1904)。障害情報がスイッチLSIの故障であると判定すると、スイッチLSIを閉塞の処理を行う(1906)。続いて、プロセッサコアは、ストレージサブシステムの保守装置の保守画面にエラー内容の表示(スイッチLSIの故障の種別、位置などの表示)、スイッチLSIの閉塞状況及びスイッチLSIを交換すべきことを促す旨を表示する(1908)。
【0091】
ステップ1904において、スイッチLISの障害情報がスイッチLISの故障ではないと判定されると、プロセッサコアは、不当アクセスプロセッサコア記憶レジスタ62の情報を参照して、レジスタの情報が自分に対するものであるか否かをチェックする(1910)。
【0092】
プロセッサコアが、障害情報が自プロセッサに対するものではないと判定すると、設定された、スイッチLSIの障害情報をクリアする(1924)。そして、プロセッサコアは、閉塞部位はないと判定して、フローチャートを終了する。
【0093】
一方、ステップ1910において、自プロセッサの不当アクセスが記憶されていると判定すると、自プロセッサコアの不当アクセスの発生回数は累計で3回以上かを判定する(1912)。不当アクセスプロセッサコア記憶レジスタ62には不当アクセス発生の累計カウンタがプロセッサコア毎に存在する。自プロセッサコアの不当アクセスの発生回数が累計で3回未満のときは、閉塞部位はないと判定して一連の処理を終了する(1924)。
【0094】
一方、自プロセッサコアの不当アクセスの発生回数が3回以上である場合には、このプロセッサコアは閉塞され、このプロセッサコアを有する制御部は交換されるものであるために、先ず、ステップ1924と同様に、スイッチLSIの障害情報(不当アクセスプロセッサコア記憶レジスタ)をクリアする。
【0095】
さらに、プロセッサコアは、ホストI/F部の一時メモリ内ルーティングテーブル中の自制御部(自プロセッサコア属する制御部)の一部をフェイルオーバ制御部に変更する(1916)。
【0096】
すなわち、図6の符号502Bで示されるルーティングテーブルにおいて、自制御部の全てを規定の制御部にフェイルオーバすると、フェイルオーバされた制御部のプロセッサコアに負荷が集中する。そこで、プロセッサコアの負荷を均等にするために、ルーティングテーブルの複数ある自制御部の一部について、自制御部を他制御部にフェイルオーバする。
【0097】
この場合、自制御部はそのまま一部の論理ボリュームに対するライト/リード処理を継続する。この場合は、後に説明するように、不当アクセスを発行したプロセッサコアは閉塞されるので、閉塞されない他のプロセッサコアが自制御部として行う各種処理を継続する。ルーティングテーブルにおいて、どの程度自制御部をフェイルオーバするかは、自制御部・他制御部の正常なプロセッサコア(複数)の負荷が均等になるようにという観点から決定される。
【0098】
次いで、プロセッサコアは、保守画面にエラー内容とプロセッサの閉塞状況及び自制御部の交換指示を表示する(1918)。さらに、プロセッサコアは、自制御部のローカルメモリ部30に存在する構成情報を更新して、自プロセッサコアを無効にし(1920)、さらに自プロセッサコアを閉塞する(1922)。
【0099】
なお、ステップ1914において、不当アクセスプロセッサ記憶レジスタ62の情報をクリアするが、少なくとも不当アクセス判定直後のアクセスは転送可否判定部によって遮断される。図24にこのことが説明されている。
【0100】
図20は制御部を交換するための処理を説明するフローチャートである。保守端末への保守員からの入力により、制御部を交換するための処理が開始される(2000)。
【0101】
次に、保守員からの入力によって交換処理プログラムをスタートさせたプロセッサコアは、ホストI/F部20の一時メモリ502内のルーティングテーブル中の交換対象となる制御部の全てを決められた制御部に切り替える(2002)。
【0102】
次いで、プロセッサコアは、キャッシュメモリ部にある構成情報を更新して交換対象制御部を無効にする(2004)。次いで、交換対象となった制御部を閉塞する(2006)。さらに、保守画面に交換対象制御部と交換の指示を表示し、保守員による制御部の交換が終了(2008)した後、交換対象制御部に属するプロセッサコアについて、不当アクセス制御記憶レジスタに障害フラグが残ったままになっている場合には、これをクリアする(2010)。なお、ローカルメモリ部の構成情報は、プロセッサコアによって定期的にキャッシュメモリからリードした情報を反映させたものである。
【0103】
さらに、プログラムは構成情報を更新して、交換した制御部をフェイルオーバ制御部として有効にする(2012)。さらに、ホストI/F部の一時メモリ内のルーティングテーブルにおいて、他の制御部にフェイルオーバされることなく残ったままになっている交換対象制御部についても規定の制御部に変更して一連の動作を終了する(2014)。
【0104】
図21は保守画面の一例である。論理デバイス番号ごとに、論理デバイスに対するライト/リード処理を行う担当制御部が示されている。図22は、保守画面の他の例である。スイッチLSIによって不当アクセスが通知されたプロセッサコアについて、プロセッサコアが閉塞されたこと(図19のステップ1922)が保守員に明示される。この保守情報は、図19のステップ1920において更新された構成情報に基づいている。図23Aは保守画面のさらに他の例である。保守員に障害が発生したプロセッサコア#2を有する制御部B(図22)を交換することの要請が通知される(図19のステップ1918)。図23B及び図23Cはストレージサブシステムの閉塞情報であり、制御部Bが閉塞されたことが示されている。
【0105】
図24は、プロセッサコアに障害が発生した際でのストレージサブシステムの動作を示すシーケンスフローチャートである。ホストI/F部20(図1)がホスト装置12からライトコマンド(S1A)を受信すると、担当振り分け制御部508(図5)は、ライトコマンドの処理を担当する制御部を決定し(S1)、担当制御部にコマンドを送信する(S2)。
【0106】
担当制御部では、最初にコマンドを受信したプロセッサコアがライトコマンドの処理を担当する(S3)。担当プロセッサコア(♯2)は、ローカルメモリ部30(図1)にアクセスして制御データをリードし(S4)、ヒットミスの有無を判定する。さらに、担当プロセッサコアは、ローカルメモリにアクセスして制御データをリードし(S5)、データがクリーンデータであるか否かを判定する。次いで、担当プロセッサコアはローカルメモリの制御情報を更新する(S6)。
【0107】
担当プロセッサコアはキャッシュメモリ部22の制御データバックアップ情報を更新する(S7)。さらに、担当プロセッサコアは、ホストI/F部の一時メモリ502(図5)にプロトコル制御部500の転送パラメータ(プロトコル制御部がホスト装置にデータを転送することを要求するために必要なもの)を設定するためのアクセス(S8)と、プロトコル制御部にデータ転送を開始させる要求のためのアクセス(S9)をスイッチLSI18(図1)に送信する。
【0108】
スイッチLSIは、S8のアクセスが不当アクセスであることを検出し、アクセスS8のアドレスから担当プロセッサコア#2を判定・特定する(S9A)。スイッチLSIは、不当アクセス(S8)に続いて、キュー処理に伴い担当プロセッサから発行された、プロトコル制御部を起動するアクセス(S9)を破棄し(S9A)、担当プロセッサコア#2に障害通知を割り込み処理にて実行する(S10)。
【0109】
担当プロセッサコアは、スイッチLSIの不当アクセスプロセッサコア記憶レジスタをリードし(S11)、自プロセッサの障害を判定し(S12)、さらに自プロセッサコアを閉塞することを判定する(S13)。そして、担当プロセッサコアは、不当アクセスプロセッサコア障害レジスタの障害フラグをクリアする(S14)。さらに、担当プロセッサコアはキャッシュメモリ上の構成情報を更新する(S15)。続いて、担当プロセッサコアは保守画面に自プロセッサコアを閉塞すること表示し、制御部の交換を保守員に促す(S17)。そして、自プロセッサコアを閉塞する(S17)。
【0110】
一方、ホスト装置は、既述の工程の間、ライトコマンドに対する応答がストレージサブシステムから帰ってこないために、ライトコマンドの発行をリトライする(S18A)。S18からS23までの動作は、既述のS1からS7までと同様である。この動作は、プロセッサコア#2が閉塞されているために、稼働状態にあるプロセッサコア#1によって実行される。
【0111】
担当プロセッサコア#1による、パラメータ設定のためのアクセス(S24:S8に対応)は不当アクセスではないことにより、このアクセスは、ホストI/F部のプロトコル制御部500までスイッチLSIによって転送される。プロトコル制御部を起動するためのアクセス(S25:S9に対応)もスイッチLSIによって遮断されることなくプロトコル制御部まで転送される。
【0112】
プロトコル制御部500は一時メモリ502から転送パラメータをリード(S26)し、ホスト装置14にユーザデータの転送要求を送信する(S27)。プロトコル制御部はユーザデータ受信して一時メモリに格納する(S28)。次いで、プロトコル制御部は担当プロセッサコアに転送完了を通知する(S29)。この通知を受けた担当プロセッサコアは、一時メモリ502に転送パラメータ(一時メモリからキャッシュメモリ部22にユーザデータを転送するために必要なもの)を設定し、DMA510を起動するためのアクセスをホストI/F部に送信する(S30)。
【0113】
DMAは、一時メモリ502から転送パラメータをリードし(S31)、ユーザデータをキャッシュメモリ部にライトする(S32)。キャッシュメモリ部はユーザデータを格納し、ホストI/F部にステータスを返信する(S33)。DMA504は、転送終了ステータスを担当プロセッサコア宛に送信する(S34)。担当プロセッサコアはプロトコル制御部に終了ステータスを通知し(S35)、ローカルメモリ30上のLRU制御情報を更新する(S37)。転送終了ステータスを受けたプロトコル制御部はホスト装置に終了ステータスを送信する(S36)。
【0114】
既述の実施形態では、変換テーブルの設定値として、プロセッサコアからのアクセスの到達目標点としての実アドレスとしたが、これに限らず、所定の関数を用いて、スイッチLSIが仮想アドレスを実アドレスに変換するようにしてもよい。
【産業上の利用可能性】
【0115】
本発明は、マルチプロセッサコアに構成をストレージ制御部に適用したストレージサブシステムにおいて、障害が発生したプロセッサコアを特定し、他のプロセッサコアの処理に影響を与えることなく、データストレージサービスを遂行させるという用途に適用できる。
【符号の説明】
【0116】
10 ストレージサブシステム
12 ホスト装置
16(16A,16B) ストレージ制御部
18 スイッチ回路
20(20A,20B) ホストI/F回路
22(20A,20B) キャッシュメモリ
24(24A,24B) ディスクI/F回路
28 マルチコアプロセッサ
【特許請求の範囲】
【請求項1】
複数のプロセッサコアを有する制御回路と、
前記制御回路からの制御を受けて、上位装置に対してデータストレージサービスを提供する被制御ユニットと、
前記制御回路を前記被制御ユニットに接続するスイッチ回路と、
を備え、
前記被制御回路には第1のアドレス空間が適用され、
前記制御回路には前記第1のアドレス空間とは異なる第2のアドレス空間が適用され、
前記第2のアドレス空間が、前記複数のプロセッサコアのそれぞれから前記スイッチ回路に対して発行されるアクセスに割り振られており、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスに基づいて、前記アクセスを発行したプロセッサコアを判定し、
前記プロセッサコアからのアクセスに含まれるアドレスを前記第1のアドレス空間のアドレスに変換に変換する、ストレージサブシステム。
【請求項2】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記第1のインターフェースと、前記第2のインターフェースと、前記キャッシュメモリのそれぞれの記憶領域に、前記第1のアドレス空間として、共通な論理アドレスが適用され、
前記制御回路と前記スイッチ回路とはPCI-Expressによって接続され、
前記第2のアドレス空間に属するアドレスが、前記複数のプロセッサコアそれぞれのアクセスに対して、互いに重複しないように割り振られており、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスを前記第1のアドレス空間に変換する変換テーブルを備え、
前記プロセッサコアから発行される前記アクセスのアドレス範囲に属する複数の領域のそれぞれに異なる変換テーブルが適用され、
前記プロセッサコアは、前記変換テーブルの設定値に、前記プロセッサコアから発行される前記アクセスのアドレスの少なくとも一部を加算して、前記第1のアドレス空間に属するアドレスを求め、当該アクセスのアドレスにしたがって、前記アクセスを目的とする被制御ユニットに転送し、
前記設定値は、前記プロセッサコアがアクセスしたい前記被制御ユニットに適用された前記第1のアドレス空間に属するアドレスからなり、
さらに、前記スイッチ回路は、前記プロセッサコアからのアクセスが不当であるか否かを検出し、不当なアクセスを発行したプロセッサコアを記録するレジスタを備え、当該レジスタに登録されたプロセッサコアからのアクセスを前記被制御ユニットに転送しない、請求項1記載のストレージサブシステム。
【請求項3】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記第1のインターフェースと、前記第2のインターフェースと、前記キャッシュメモリのそれぞれの記憶領域に、前記第1のアドレス空間として、共通な論理アドレスが適用され、
前記制御回路と前記スイッチ回路とはPCI-Expressによって接続されている、請求項1記載のストレージサブシステム。
【請求項4】
前記第2のアドレス空間に属するアドレスが、前記複数のプロセッサコアそれぞれのアクセスに対して、互いに重複しないように割り振られている、請求項3記載のストレージサブシステム。
【請求項5】
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスを前記第1のアドレス空間に変換する変換テーブルを備え、
前記プロセッサコアから発行される前記アクセスのアドレス範囲に属する複数の領域のそれぞれに異なる変換テーブルが適用され、
前記変換テーブルの設定値を、前記プロセッサコアから発行される前記アクセスのアドレスに適用して、当該アクセスのアドレスを前記第1のアドレス空間のアドレスに変換する、請求項4記載のストレージサブシステム。
【請求項6】
前記スイッチ回路は、前記プロセッサコアが発行したアクセスのアドレスの全部または一部に前記設定値を加算して前記第1のアドレス空間に属するアドレスを求め、このアドレスにしたがって、前記アクセスを目的とする被制御ユニットに転送する、請求項5記載のストレージサブシステム。
【請求項7】
前記設定値は、前記プロセッサコアがアクセスしたい前記被制御ユニットに適用された前記第1のアドレス空間に属するアドレスからなる、請求項5記載のストレージサブシステム。
【請求項8】
前記プロセッサコアは、アクセスしたい前記被制御ユニットのアドレス空間に自身が発行するアクセスのアドレスが変換されるように、前記変換テーブルの設定値を変更する、請求項5記載のストレージサブシステム。
【請求項9】
前記プロセッサコアは、アクセスしたい前記被制御ユニットのアドレス空間に変換されるように、前記変換テーブルを複数のものの中から選択し、選択した変換テーブルに対応するアドレスを用いてアクセスを前記スイッチ回路に発行し、当該スイッチ回路は選択された変換テーブルの設定値に前記アクセスのアドレスを適用する、請求項8記載のストレージサブシステム。
【請求項10】
前記プロセッサコアが、前記設定値を持った変換テーブルがないことを判定すると、当該プロセッサコアは、複数の変換テーブルの中から前記スイッチ回路が変換に使用した履歴が古い一つの変換テーブルを選択して、当該変換テーブルの設定値を変更する、請求項7記載のストレージサブシステム。
【請求項11】
前記スイッチ回路は、前記プロセッサコアからのアクセスが不当であるか否かを検出し、不当なアクセスを前記被制御ユニットに転送しない、請求項1記載のストレージサブシステム。
【請求項12】
前記スイッチ回路は、不当なアクセスを発行したプロセッサコアを記録するレジスタを備え、当該レジスタに登録されたプロセッサコアからのアクセスを前記被制御ユニットに転送しない、請求項11記載のストレージサブシステム。
【請求項13】
前記制御回路があり、
前記スイッチ回路は、前記プロセッサコアから発行されたアクセスに所定累計回数の不当があったことを判定すると、その判定結果を受けた制御部が当該不当であったアクセスを発行したプロセッサコアを閉塞し、
閉塞されたプロセッサコアを有する制御回路に代わって複数ある制御回路の中から他の制御回路がコマンド処理を行う、請求項12記載のストレージサブシステム。
【請求項14】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記スイッチ回路は、前記プロセッサコアからの第1アクセスが、前記第1のインターフェースのプロトコル制御部に、前記上位装置からのデータを転送するためのパラメータを設定するものであり、前記プロセッサコアからの第2のアクセスが前記プロトコル制御部を起動して前記上位装置から前記パラメータに基づいてデータを転送するものであり、
前記スイッチ回路が前記第1のアクセスが不当であると判定すると、当該第1のアクセスを発行したプロセッサコアを前記レジスタに記録し、
前記スイッチ回路は当該レジスタの記録内容を参照して、前記第2のアクセスを転送しない、請求項12記載のストレージ装置。
【請求項15】
複数のプロセッサコアを有する制御回路と、
前記制御回路からの制御を受けて、上位装置に対してデータストレージサービスを提供する被制御ユニットと、
前記制御回路を前記被制御ユニットに接続するスイッチ回路と、を備え、
前記被制御回路には第1のアドレス空間が適用され、
前記制御回路には前記第1のアドレス空間とは異なる第2のアドレス空間が適用されている、ストレージサブシステムの制御方法であって、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスに基づいて、
前記アクセスを発行したプロセッサコアを判定し、
前記プロセッサコアからのアクセスに含まれるアドレスを前記第1のアドレス空間のアドレスに変換に変換する、ストレージサブシステムの制御方法。
【請求項1】
複数のプロセッサコアを有する制御回路と、
前記制御回路からの制御を受けて、上位装置に対してデータストレージサービスを提供する被制御ユニットと、
前記制御回路を前記被制御ユニットに接続するスイッチ回路と、
を備え、
前記被制御回路には第1のアドレス空間が適用され、
前記制御回路には前記第1のアドレス空間とは異なる第2のアドレス空間が適用され、
前記第2のアドレス空間が、前記複数のプロセッサコアのそれぞれから前記スイッチ回路に対して発行されるアクセスに割り振られており、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスに基づいて、前記アクセスを発行したプロセッサコアを判定し、
前記プロセッサコアからのアクセスに含まれるアドレスを前記第1のアドレス空間のアドレスに変換に変換する、ストレージサブシステム。
【請求項2】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記第1のインターフェースと、前記第2のインターフェースと、前記キャッシュメモリのそれぞれの記憶領域に、前記第1のアドレス空間として、共通な論理アドレスが適用され、
前記制御回路と前記スイッチ回路とはPCI-Expressによって接続され、
前記第2のアドレス空間に属するアドレスが、前記複数のプロセッサコアそれぞれのアクセスに対して、互いに重複しないように割り振られており、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスを前記第1のアドレス空間に変換する変換テーブルを備え、
前記プロセッサコアから発行される前記アクセスのアドレス範囲に属する複数の領域のそれぞれに異なる変換テーブルが適用され、
前記プロセッサコアは、前記変換テーブルの設定値に、前記プロセッサコアから発行される前記アクセスのアドレスの少なくとも一部を加算して、前記第1のアドレス空間に属するアドレスを求め、当該アクセスのアドレスにしたがって、前記アクセスを目的とする被制御ユニットに転送し、
前記設定値は、前記プロセッサコアがアクセスしたい前記被制御ユニットに適用された前記第1のアドレス空間に属するアドレスからなり、
さらに、前記スイッチ回路は、前記プロセッサコアからのアクセスが不当であるか否かを検出し、不当なアクセスを発行したプロセッサコアを記録するレジスタを備え、当該レジスタに登録されたプロセッサコアからのアクセスを前記被制御ユニットに転送しない、請求項1記載のストレージサブシステム。
【請求項3】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記第1のインターフェースと、前記第2のインターフェースと、前記キャッシュメモリのそれぞれの記憶領域に、前記第1のアドレス空間として、共通な論理アドレスが適用され、
前記制御回路と前記スイッチ回路とはPCI-Expressによって接続されている、請求項1記載のストレージサブシステム。
【請求項4】
前記第2のアドレス空間に属するアドレスが、前記複数のプロセッサコアそれぞれのアクセスに対して、互いに重複しないように割り振られている、請求項3記載のストレージサブシステム。
【請求項5】
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスを前記第1のアドレス空間に変換する変換テーブルを備え、
前記プロセッサコアから発行される前記アクセスのアドレス範囲に属する複数の領域のそれぞれに異なる変換テーブルが適用され、
前記変換テーブルの設定値を、前記プロセッサコアから発行される前記アクセスのアドレスに適用して、当該アクセスのアドレスを前記第1のアドレス空間のアドレスに変換する、請求項4記載のストレージサブシステム。
【請求項6】
前記スイッチ回路は、前記プロセッサコアが発行したアクセスのアドレスの全部または一部に前記設定値を加算して前記第1のアドレス空間に属するアドレスを求め、このアドレスにしたがって、前記アクセスを目的とする被制御ユニットに転送する、請求項5記載のストレージサブシステム。
【請求項7】
前記設定値は、前記プロセッサコアがアクセスしたい前記被制御ユニットに適用された前記第1のアドレス空間に属するアドレスからなる、請求項5記載のストレージサブシステム。
【請求項8】
前記プロセッサコアは、アクセスしたい前記被制御ユニットのアドレス空間に自身が発行するアクセスのアドレスが変換されるように、前記変換テーブルの設定値を変更する、請求項5記載のストレージサブシステム。
【請求項9】
前記プロセッサコアは、アクセスしたい前記被制御ユニットのアドレス空間に変換されるように、前記変換テーブルを複数のものの中から選択し、選択した変換テーブルに対応するアドレスを用いてアクセスを前記スイッチ回路に発行し、当該スイッチ回路は選択された変換テーブルの設定値に前記アクセスのアドレスを適用する、請求項8記載のストレージサブシステム。
【請求項10】
前記プロセッサコアが、前記設定値を持った変換テーブルがないことを判定すると、当該プロセッサコアは、複数の変換テーブルの中から前記スイッチ回路が変換に使用した履歴が古い一つの変換テーブルを選択して、当該変換テーブルの設定値を変更する、請求項7記載のストレージサブシステム。
【請求項11】
前記スイッチ回路は、前記プロセッサコアからのアクセスが不当であるか否かを検出し、不当なアクセスを前記被制御ユニットに転送しない、請求項1記載のストレージサブシステム。
【請求項12】
前記スイッチ回路は、不当なアクセスを発行したプロセッサコアを記録するレジスタを備え、当該レジスタに登録されたプロセッサコアからのアクセスを前記被制御ユニットに転送しない、請求項11記載のストレージサブシステム。
【請求項13】
前記制御回路があり、
前記スイッチ回路は、前記プロセッサコアから発行されたアクセスに所定累計回数の不当があったことを判定すると、その判定結果を受けた制御部が当該不当であったアクセスを発行したプロセッサコアを閉塞し、
閉塞されたプロセッサコアを有する制御回路に代わって複数ある制御回路の中から他の制御回路がコマンド処理を行う、請求項12記載のストレージサブシステム。
【請求項14】
前記被制御ユニットは、
前記上位装置に対する第1のインターフェースと、
記憶デバイスに対する第2のインターフェースと、
前記第1と第2のインターフェースとの間でデータを一時記憶するキャッシュメモリと、を備え、
前記スイッチ回路は、前記プロセッサコアからの第1アクセスが、前記第1のインターフェースのプロトコル制御部に、前記上位装置からのデータを転送するためのパラメータを設定するものであり、前記プロセッサコアからの第2のアクセスが前記プロトコル制御部を起動して前記上位装置から前記パラメータに基づいてデータを転送するものであり、
前記スイッチ回路が前記第1のアクセスが不当であると判定すると、当該第1のアクセスを発行したプロセッサコアを前記レジスタに記録し、
前記スイッチ回路は当該レジスタの記録内容を参照して、前記第2のアクセスを転送しない、請求項12記載のストレージ装置。
【請求項15】
複数のプロセッサコアを有する制御回路と、
前記制御回路からの制御を受けて、上位装置に対してデータストレージサービスを提供する被制御ユニットと、
前記制御回路を前記被制御ユニットに接続するスイッチ回路と、を備え、
前記被制御回路には第1のアドレス空間が適用され、
前記制御回路には前記第1のアドレス空間とは異なる第2のアドレス空間が適用されている、ストレージサブシステムの制御方法であって、
前記スイッチ回路は、前記第2のアドレス空間に属するアドレスに基づいて、
前記アクセスを発行したプロセッサコアを判定し、
前記プロセッサコアからのアクセスに含まれるアドレスを前記第1のアドレス空間のアドレスに変換に変換する、ストレージサブシステムの制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23A】
【図23B】
【図23C】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23A】
【図23B】
【図23C】
【図24】
【公表番号】特表2012−519316(P2012−519316A)
【公表日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−537756(P2011−537756)
【出願日】平成21年4月6日(2009.4.6)
【国際出願番号】PCT/JP2009/057408
【国際公開番号】WO2010/116536
【国際公開日】平成22年10月14日(2010.10.14)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公表日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願日】平成21年4月6日(2009.4.6)
【国際出願番号】PCT/JP2009/057408
【国際公開番号】WO2010/116536
【国際公開日】平成22年10月14日(2010.10.14)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]