説明

ストレージシステム及び通信方法

【課題】ストレージシステムの処理性能を向上させつつ、信頼性を保証するストレージシステムを提供することである。
【解決手段】ホスト計算機に接続され、ホスト計算機と通信可能であって、ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおいて、ホストインタフェース部又はディスクインタフェース部からメモリ部にデータを送信する場合に、送信元から格納することを要求されたデータが送信先に格納されると、送信先は送信先に応答を返す第1モードで通信することを特徴とするストレージシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホスト計算機と、ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおいて、ディスク制御装置内の内部ネットワーク上の通信モードを制御するストレージシステムに関する。
【背景技術】
【0002】
近年、プロセッサの処理性能が向上したこと、及びデータ伝送技術が進歩したことによって、ストレージシステムの処理性能の更なる向上が要求されている。従来のストレージシステムでは、ディスク装置を制御するディスク制御装置の各構成部を接続する内部ネットワークの通信方式として、コネクション通信を採用している(特許文献1参照)。
【0003】
しかし、コネクション通信では、コネクションの確立及びコネクションの解放等に時間を要するため、ストレージシステムの処理性能を向上させる点において限界に近づいている。
【0004】
ストレージシステムの処理性能を向上させる要求が高まる中で、従来のコネクション通信に代わる通信方式が必要不可欠であり、ストレージシステムの処理性能を向上させるために、ディスク制御装置の内部ネットワークの通信方式として、コネクションレス通信の採用したストレージシステムが知られている(特許文献1参照)。
【特許文献1】特開平11-175260号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
特許文献1に記載のストレージシステムでは、ディスク制御装置の内部ネットワークの通信方式として、コネクション通信及びコネクションレス通信を併用している。
【0006】
しかしながら、特許文献1に記載のストレージシステムでは、ディスク制御装置の構成部がコネクションレス通信で通信している場合、信頼性を低下させてしまう。具体的に以下に説明する。
【0007】
コネクション通信方式では、送信元は送信先とコネクションを予め確立してからデータを送信するため、コネクションの確立及び解放等の処理がストレージシステムの処理性能を低下させてしまう。
【0008】
例えば、種類及び性質が異なる複数のデータ群をコネクション通信で送信する場合について説明する。送信元が容量の大きい第1データを送信した後に容量の小さい第2データを送信する場合、送信元は、第1データを送信するためのコネクションを送信先と確立してから第1データを送信する。そして、第1データの送信が終了してから第2データの送信を開始する。
【0009】
この場合、第2データを送信する処理は第1データの送信にかかった時間だけ待機している。このため、レスポンス時間が長くなり、ストレージシステムの処理性能は低下してしまう。
【0010】
また、送信元と送信先との間でコネクションが確立している間、コネクションが確立している送信先は、確立しているコネクションが解放されるまで他の送信元と通信できない。これによって、送信元は、コネクションが確立している送信先に確実にデータを送信できる。
【0011】
つまり、コネクション通信は、ストレージシステムの処理性能を低下させてしまうが、信頼性を向上させることができる。
【0012】
一方、コネクションレス通信は、コネクションを確立せずにデータを送信するので、ストレージシステムの処理性能を向上させることができるが、信頼性を低下させてしまう。
【0013】
コネクションレス通信では、一つの送信先が複数の送信元から同時に通信要求を受け付けると、送信先は通信要求を受け付けた複数の送信元と通信しなければならない。
【0014】
この場合に、送信元と送信先との間の通信経路上でアクセス競合が発生している場合、この通信経路上に存在するスイッチが誤って設定されていた場合、又はハードウェアが故障した場合、本来の送信先とは異なる送信先に通信要求が送信されてしまう恐れがある。
【0015】
この誤送信を防止するために、送信元は、送信先からの応答を受信してから、受信した応答によってデータの順序性を確かめながらデータを送信する通信方法、送信先がデータを格納した場合に応答を送信元に送信し、データが正しく格納された確認する通信方法が考えられる。しかしながら、これらの通信方法は、送信元は送信先から応答を受信するまでの間、処理を待機させるので、ストレージシステムの処理性能を低下させてしまう。
【0016】
本発明の目的は、ストレージシステムの処理性能を向上させつつ、信頼性を保証するストレージシステムを提供することである。
【課題を解決するための手段】
【0017】
本発明の代表的な一例を示せば、以下の通りである。ホスト計算機と、前記ホスト計算機に接続され、前記ホスト計算機と通信可能であって、前記ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおいて、前記ディスク制御装置は、前記ホスト計算機に接続されるホストインタフェース部と、前記ディスク装置に接続されるディスクインタフェース部と、前記ホスト計算機との間で通信されるデータを一時的に格納するメモリ領域、及び前記ストレージシステムの制御データを格納する領域を含むメモリ部と、演算処理をするプロセッサ、及び前記プロセッサが実行するプログラムを格納する領域を備えるプロセッサ部と、を備え、前記ストレージシステムは、前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部にデータを送信する場合に、送信元から格納することを要求されたデータが送信先に格納されると、前記送信先は前記送信先に応答を返す第1モードで通信することを特徴とする。
【発明の効果】
【0018】
本発明の一実施態様によれば、ストレージシステムの処理性能を向上させつつ、信頼性も保証できる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施形態のストレージシステムを図1〜図15を用いて説明する。
【0020】
(第1実施形態)
本発明の第1実施形態のストレージシステムを図1〜図12を用いて説明する。
【0021】
図1は、本発明の第1実施形態のストレージシステムの構成を示すブロック図である。
【0022】
ストレージシステムは、ホスト計算機100、ホスト計算機100に接続されたディスク制御装置110、及びディスク制御装置110に接続されたディスク装置105を備える。
【0023】
一般に、SAN(Storage Area Network)では、ホスト計算機100とディスク制御装置110とは、図示しないスイッチ等によって構成されるネットワークを介して、ファイバチャネル又はイーサネット(登録商標)等によって接続される。
【0024】
ホスト計算機100は、ディスク制御装置110にデータの書き込み要求又は読み出し要求を送信する。
【0025】
ディスク制御装置110は、ホスト計算機100から書き込み要求を受信した場合、書き込みが要求されたデータをメモリ部130に格納した後に、書き込みが要求されたデータをディスク装置105に書き込む。
【0026】
一方、ディスク制御装置110は、ホスト計算機100から読み出し要求を受信した場合、読み出しが要求されたデータをディスク装置105から読み出し、読み出されたデータをメモリ部130に格納した後に、読み出されたデータをホスト計算機100に送信する。
【0027】
ディスク制御装置110は、ホストIF(Interface)部115、ディスクIF(Interface)部120、ネットワーク部125、メモリ部130、及びプロセッサ部135を備える。
【0028】
ホストIF部115は、ホスト計算機100に接続されるインタフェースを備える。ホストIF部115は、ホスト計算機100から受信したパケットに対してプロトコル処理を施す。具体的には、ホストIF部115は、プロトコル処理を実行することによって、受信したパケットのディスク装置105における格納場所、受信したパケットの容量、及び受信したパケットに含まれるコマンドを特定し、また、受信したパケットをディスク装置105に格納可能なデータの形に変換する。
【0029】
なお、ディスク制御装置110からホスト計算機100にデータを送信する場合には、ホストIF部115は、ホスト計算機100から受信したコマンドから得られる格納場所又はキャッシュメモリのディレクトリ情報等に基づいて、当該データの存在場所がメモリ部130かディスク装置105かを判定する。当該データがメモリ部130に存在する場合、プロセッサ部135の指示により、ホストIF部115は、メモリ部130からデータを読み出し、読み出されたデータにプロトコル処理を施す。
【0030】
具体的には、ホストIF部115は、ディスク制御装置110とホスト計算機100との間の通信プロトコルに基づいて、送信先となるホスト計算機100の識別データ、送信先となるホスト計算機100へのコマンドに関連する制御データ等を読み出されたデータに付加し、ホスト計算機100に送信可能なパケットを生成する。
【0031】
当該データがディスク装置105に存在する場合、プロセッサ部135の指示により、ディスクIF部120は、ディスク装置105から当該データを読み出し、メモリ部130の所定の領域に格納する。当該データがディスク装置105に存在する場合の以降の処理は、当該データがメモリ部130に存在する場合と同じである。
【0032】
ディスクIF部120は、ディスク装置105に接続されるインタフェースを備える。ディスクIF部120は、ホストIF部115と同じ機能を備える。具体的な例を示すと、ディスクIF部120は、ディスク装置105から受信したパケットに対してプロトコル処理を施す。また、ディスクIF部120は、ディスク装置105に格納可能な形にパケットを変換する。
【0033】
ネットワーク部125は、ディスク制御装置110の各構成部(ホストIF部115、ディスクIF部120、メモリ部130、及びプロセッサ部135)を接続し、各構成部の通信を中継する。
【0034】
メモリ部130は、ホスト計算機100との間で通信されるデータを一時的に格納するキャッシュメモリ領域、及びストレージシステムの制御データ、構成データ、及びディレクトリデータ等を格納するシステム領域を備える。
【0035】
プロセッサ部135は、ホストIF部115及びディスクIF部120等のディスク制御装置110の内部の各構成要素を制御する。例えば、ホストIF部115及びディスクIF部120のパラメータを設定する。また、プロセッサ部135は、ストレージシステムの障害を監視し、障害を検出した場合には障害に対応する処理を実行する。
【0036】
ホストIF部115の詳細を説明する。
【0037】
ホストIF部115は、モード管理部140、パケット送信処理部142、シーケンス番号付加部144、シーケンス番号確認部146、図示しないデータ転送制御部、及び図示しないバッファメモリを含む。
【0038】
モード管理部140は、ホストIF部115がデータを送信する場合に、どの通信モードでデータを送信するかを管理する。なお、通信モードについては、図2〜図5で詳細を説明する。パケット送信処理部142は、モード管理部140で管理している通信モードでパケットを送信する。
【0039】
シーケンス番号付加部144は、パケット送信処理部142によって送信されるパケットにシーケンス番号を付加する。シーケンス番号確認部146は、ホストIF部115が受信したパケットに付加されたシーケンス番号と、ホストIF部115が管理するシーケンス番号とが一致するか否かを判定する。
【0040】
データ転送制御部は、ホスト計算機100から書き込み要求されたデータをメモリ部130に転送する、又は、ホスト計算機100から読み出し要求があったデータをメモリ部130から読み出す。バッファメモリは、ホストIF部115が受信したパケットを一時的に格納する。
【0041】
次に、ディスクIF部120の詳細を説明する。
【0042】
ディスクIF部120は、モード管理部148、パケット送信処理部150、シーケンス番号付加部152、シーケンス番号確認部154、図示しないデータ転送制御部、及び図示しないバッファメモリを含む。なお、ディスクIF部120のモード管理部148、パケット送信処理部150、シーケンス番号付加部152、シーケンス番号確認部154、データ転送制御部、及びバッファメモリは、ホストIF部115のモード管理部140、パケット送信処理部142、シーケンス番号付加部144、シーケンス番号確認部146、データ転送制御部、及びバッファメモリと同じなので、説明を省略する。
【0043】
次に、メモリ部130について説明する。
【0044】
メモリ部130は、シーケンス番号確認部156、パケット受信処理部158、及びモード管理部160、図示しないデータ転送制御部、メモリモジュール、メモリコントローラを含む。
【0045】
シーケンス番号確認部156は、プロセッサ部135から受信するパケットに付加されたシーケンス番号と、メモリ部130が管理するシーケンス番号とが一致するか否かを判定する。
【0046】
パケット受信処理部158は、ホストIF部115、ディスクIF部120、及びプロセッサ部135から受信したパケットに対してプロトコル処理を施す。モード管理部160は、ホストIF部115のモード管理部140及びディスクIF部120と同じなので、説明を省略する。
【0047】
メモリモジュールは、ホスト計算機100から送信されたデータを格納するメモリ領域を備える。また、メモリコントローラは、メモリモジュールに対する入出力を制御する。
【0048】
なお、メモリ部130は、シーケンス番号付加部を備えなくてもよい。メモリ部130が送信元となって送信するパケットは、ホストIF部115、ディスクIF部120、及びプロセッサ部135からの要求に対応する応答パケットのみである。ホストIF部115、ディスクIF部120、及びプロセッサ部135は、応答パケットを受信した場合に、受信した応答パケットがどの要求に対応する応答であるかを特定できるので、メモリ部130が送信する応答パケットの順序が変わっても問題が生じないので、メモリ部130は、シーケンス番号付加部を備えなくてもよい。
【0049】
次に、プロセッサ部135の詳細を説明する。
【0050】
プロセッサ部135は、モード決定部162、パケット送信処理部164、シーケンス番号付加部166、モード管理テーブル168、シーケンス番号確認部170、図示しないプロセッサ、及び図示しない内部メモリを含む。
【0051】
パケット送信処理部164、シーケンス番号付加部166、及びシーケンス番号確認部170は、ホストIF部115のパケット送信処理部142、シーケンス番号付加部144、及びシーケンス番号確認部146と同じなので、説明を省略する。
【0052】
モード決定部162は、ディスク制御装置110の各構成部がどの通信モードで通信するかを決定するモード決定処理を実行する。なお、モード決定処理については、図7で詳細を説明する。
【0053】
モード管理テーブル168は、モード決定部162が通信モードを決定するために用いるテーブルである。なお、モード管理テーブル168は、図6で詳細を説明する。
【0054】
プロセッサは、各種プログラムを実行し、ディスク制御装置110の各構成部を制御する。内部メモリには、ディスク制御装置110の各構成部を制御するための制御プログラム、モード決定処理を実行するためのプログラム、制御プログラムを実行するために必要な制御データ、及びメモリ部130のディレクトリデータが格納される。
【0055】
次に、通信モードを図2〜図5を用いて説明する。
【0056】
図2は、本発明の第1実施形態の応答なしアクセスモード(第1モード)での通信を示すシーケンス図である。
【0057】
応答なしアクセスモードとは、送信元200が要求を送信先210に送信し、送信先210は要求を処理した後に、送信元200に応答を返さない通信モードである。
【0058】
具体的には、送信元200は、コマンド230(要求)及びデータ240を含むパケット220を送信先210に送信する。送信先210は、パケット220を受信した場合に、受信したパケット220を解析して、コマンド230によって指示された要求を特定する。そして、送信先210は、特定された要求に対応する処理を実行し、送信元200によって送信された次のパケット220を受信する。そして、送信先210は、受信したパケット220を解析する。
【0059】
応答なしアクセスモードでは、送信元200は、送信先210からの要求に対応する処理の実行が完了したことを示す応答を待たずに、次のパケット220を送信できるので、どの通信モードよりもレスポンス時間が速くなる。
【0060】
しかし、送信先210が要求に対応する処理を実行できなかった場合(つまり、何らかの障害が発生した場合)、送信元200は、発生した障害をすぐに検出できない。
【0061】
送信元200がすぐに障害を検出できなくても、送信元200が障害を検出した場合に、送信元200のプロセッサ等が当該障害をリカバリすることができる。
【0062】
応答なしアクセスモードは、例えば、ホストIF部115又はディスクIF部120の初期設定に用いられる。
【0063】
図3は、本発明の第1実施形態の応答ありアクセスモード(第2モード)での通信を示すシーケンス図である。
【0064】
応答ありアクセスモードとは、送信元300が要求を送信先310に送信し、送信先310は要求を処理した後に、送信元300に応答を返す通信モードである。
【0065】
具体的には、送信元300は、コマンド330(要求)及びデータ340を含むパケット320を送信先310に送信する。送信先310は、パケット320を受信した場合に、受信したパケット320を解析して、コマンド230によって指示された要求を特定する。そして、送信先310は、特定された要求に対応する処理を実行し、この特定された要求に対応する処理が完了すると、応答パケット350を送信元300に送信する。
【0066】
応答ありアクセスモードでは、送信元300は、送信先310が要求に対応する処理を正常にしたか否かを、送信先310によって送信される応答パケット350によって判定できる。送信元300は、応答パケット350を受信した場合、受信した応答パケット350の内容が正常を示す場合には、送信先310が要求に対応する処理を完了したと判定し、受信した応答パケット350の内容が異常を示す場合、又は応答パケット350を受信しない場合には、送信先310が要求に対応する処理の実行中に異常が発生したと判定する。
【0067】
したがって、応答ありアクセスモードは、高い信頼性が要求される通信に用いられることが望ましい。例えば、応答ありアクセスモードは、ホスト計算機100から受信したデータがメモリ部130のメモリ領域に格納される場合のホストIF部115とメモリ部130との間の通信に用いられる。
【0068】
ホスト計算機100は、ディスク制御装置110に基本的に一度しかデータを送信しないので、ディスク制御装置110がホスト計算機100から受信したデータをメモリ部130に格納する処理で異常が発生して、当該データを消失した場合には、ディスク制御装置110がリカバリできなくなる可能性がある。このため、ホストIF部115は、メモリ部130にデータが確実に格納されたことを確認しながら、データを送信しなければならない。したがって、ホスト計算機100から受信したデータがメモリ部130のメモリ領域に格納される場合のホストIF部115とメモリ部130との間の通信に応答ありアクセスモードを用いると、ホストIF部115は、メモリ部130からの応答パケット350を受信することによって、メモリ部130にデータが格納されたことを確認しながら、データを送信できる。
【0069】
図4は、本発明の第1実施形態のシーケンス番号付きアクセスモード(第3モード)での通信を示すシーケンス図である。
【0070】
シーケンス番号付きアクセスモードとは、送信元400が送信先410にパケット420を送信する場合に、通し番号であるシーケンス番号450をパケット420に付加する通信モードである。
【0071】
送信元400では、パケット420に付加されるシーケンス番号460が初期状態では「0」に設定されている。また、送信先410は、パケット420に付加されたシーケンス番号450と比較するためのシーケンス番号470を管理し、このシーケンス番号470は、初期状態では「0」に設定されている。
【0072】
まず、送信元400は、コマンド430、データ440、及びシーケンス番号450を含むパケット420を送信先410に送信する。なお、最初に送信されたパケット420に含まれるシーケンス番号450は「0」である。
【0073】
送信先410は、パケット420を受信した場合、受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致しているか否かを判定する。
【0074】
受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致していると判定された場合、送信先410は、受信したパケット420に含まれるコマンド430を解析して、コマンド430に対応する処理を実行する。
【0075】
一方、受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致していないと判定された場合、送信先410は、正しく受信していないパケット420が存在することを検出する。送信元400は、所定時間経過しても、送信先410が処理を完了したことの通知を受信できないため、送信先410でシーケンス番号が一致していない異常が発生していないことを検出する。
【0076】
シーケンス番号付きアクセスモードでは、ネットワーク部125でのルーティングミス、又はネットワーク部125の設定ミス等によって、本来送信されるべき送信先410でない送信先にパケット420が送信されたことを、送信先410が検出できる。シーケンス番号付きアクセスモードは、例えば、ホストIF部115がホスト計算機100から受信したデータをメモリ部130に書き込む場合のホストIF部115とメモリ部130との間の通信に用いられる。
【0077】
図5は、本発明の第1実施形態のシーケンス番号付き確定アクセスモード(第4モード)での通信を示すシーケンス図である。なお、図5に示す構成のうち図4と同じ構成は、同じ番号を付与し、説明を省略する。
【0078】
シーケンス番号付き確定アクセスモードとは、図4に示すシーケンス番号付きアクセスモードで、送信先410が、受信したパケット420に含まれるシーケンス番号と、送信先410が管理するシーケンス番号とが一致しない場合に、異常が発生したことを示す応答パケット500を送信元400に返し、送信元400は、応答パケット500を受信した場合、シーケンス番号460をリセットし、送信先410が管理するシーケンス番号470をリセットするコマンドパケット510を送信する通信モードである。
【0079】
具体的には、送信先410は、シーケンス番号450が「0」であるパケット420を送信先410に送信する。送信先410は、パケット420を受信した場合、受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致するか否かを判定する。この場合、受信したパケット420に含まれるシーケンス番号450が「0」であり、送信先410が管理するシーケンス番号470が「0」であるので、受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とは一致する。よって、送信先410は、受信したパケット420のコマンド430が示す要求に対応する処理を実行し、シーケンス番号470をインクリメントする。
【0080】
なお、送信元400は、シーケンス番号450が「0」であるパケット420を送信すると、送信元400が管理するシーケンス番号460をインクリメントする。以降これらの処理を繰り返す。
【0081】
ここで、シーケンス番号450が「2」であるパケット420が、ネットワーク部125上のルーティングミス等によって、送信先410に到達しなかったとする。この場合、送信先410は、シーケンス番号470をインクリメントしない。
【0082】
次に、送信元400は、シーケンス番号450が「3」であるパケット420を送信する。送信先410は、シーケンス番号450が「3」であるパケット420を受信すると、受信したパケット420に含まれるシーケンス番号450が「3」であり、送信先410が管理するシーケンス番号470が「2」であるため、受信したパケット420に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致しないと判定する。
【0083】
そこで、送信先410は、シーケンス番号が一致しない異常が発生したことを示す応答パケット500を送信元400に送信する。
【0084】
送信元400は、応答パケット500を受信した場合、送信元400が管理するシーケンス番号460をリセットし、送信先410が管理するシーケンス番号470をリセットさせるコマンドパケット510を送信先410に送信する。なお、送信先410は、コマンドパケット510を受信すると、シーケンス番号470をリセットする。
【0085】
この時点で、送信元400のシーケンス番号460及び送信先410のシーケンス番号470は、「0」にリセットされている。
【0086】
そして、送信元400は、パケット420を送信先410に再び送信する。そして、送信先410は、このパケット420に含まれるコマンド430が示す要求に対応する処理を実行するものとする。
【0087】
次に、送信元400は、シーケンス番号が一致しない異常が解消したか否かを明示的に確認するために、確定パケット520を送信先410に送信する。なお、確定パケット520のコマンド530は、確定パケット520に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致する場合には、正常であることを示す正常応答パケット540を返し、確定パケット520に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致しない場合には、異常応答パケット(図示省略)を返す要求を示す。
【0088】
送信先410は、確定パケット520を受信すると、確定パケット520に含まれるコマンド530が示す要求に対応する処理を実行する。具体的には、送信先410は、確定パケット520に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致するか否かを判定する。
【0089】
送信先410は、確定パケット520に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致する場合には、正常応答パケット540を送信元400に送信する。これによって、送信元400は、異常が解消したことを確認できる。
【0090】
一方、送信先410は、確定パケット520に含まれるシーケンス番号450と、送信先410が管理するシーケンス番号470とが一致しない場合には、異常応答パケットを送信元400に送信する。送信元400は、異常応答パケットを受信することによってシーケンス番号460及び470をリセットしたにもかかわらず、シーケンス番号が一致しないので、送信先410自体で異常が発生している可能性が高いと判定する。この場合、管理者等が送信先410を交換すればよい。
【0091】
なお、送信元400が異常応答パケットを受信した場合に、シーケンス番号460をリセットし、再度コマンドパケット510を送信するようにし、シーケンス番号460及び470を所定回数リセットしても、異常応答パケットを受信する場合に、管理者等が送信先410を交換するようにしてもよい。
【0092】
シーケンス番号付き確認アクセスモードの特徴を、シーケンス番号付きアクセスモードと比較して説明する。シーケンス番号付きアクセスモードでは、パケット420に含まれるシーケンス番号450と送信先410が管理するシーケンス番号470とが一致しないことを送信先410が検出しても、送信元400が当該異常を検出するまでには、所定時間必要である。通常、この所定時間は送信先がすべてのパケットに含まれるコマンドが示す要求に対応する処理を実行するために必要な時間である。
【0093】
これに対して、シーケンス番号付き確定アクセスモードでは、パケット420に含まれるシーケンス番号450と送信先410が管理するシーケンス番号470とが一致しない場合に、送信先410は応答パケット500を送信元400に送信し、送信元400は、シーケンス番号が正しく機能しているかを確認するための確定パケット520を送信先410に送信するので、異常が発生したパケットの次のパケットを送信した後、すぐに送信先410で異常が発生したことを検出できる。つまり、シーケンス番号付き確定アクセスモードでは、シーケンス番号付きアクセスモードよりも早く、シーケンス番号が一致しない異常を検出できる。
【0094】
次に、モード管理テーブル168について、図6A及び図6Bを用いて説明する。
【0095】
図6Aは、本発明の第1実施形態のモード管理テーブル168の説明図である。
【0096】
モード管理テーブル168は、開始アドレス1681、終了アドレス1682、及び通信モード1683を含む。
【0097】
開始アドレス1681及び終了アドレス1682は、一つの通信モードに属する送信先アドレスの範囲を示す。送信先アドレスは、ディスク制御装置110のある構成部が他の構成部に送信するパケットに含まれ、送信先の構成部のアドレスを示す。
【0098】
通信モード1683には、応答ありアクセスモード(図2参照)、応答なしアクセスモード(図3参照)、シーケンス番号付きアクセスモード(図4参照)、及びシーケンス番号付き確定アクセスモード(図5参照)が登録される。
【0099】
送信先が送信したパケットの送信先アドレスが「00000000」〜「10000000」の範囲内であれば、通信モードは「応答ありアクセスモード」に決定される。送信先が送信したパケットの送信先アドレスが「20000000」〜「30000000」の範囲内であれば、通信モードは「応答なしアクセスモード」に決定される。
【0100】
送信先が送信したパケットの送信先アドレスが「40000000」〜「50000000」の範囲内であれば、通信モードは「シーケンス番号付きアクセスモード」に決定される。送信先が送信したパケットの送信先アドレスが「60000000」〜「70000000」の範囲内であれば、通信モードは「シーケンス番号付き確定アクセスモード」に決定される。
【0101】
図6Bは、本発明の第1実施形態のモード管理テーブル168の変形例の説明図である。
【0102】
図6Aでは、送信先アドレスによって通信モードが決定されていたが、図6に示すモード管理テーブル168の変形例では、送信先の識別子によって通信モードが決定される。
【0103】
送信先識別子1684は、送信先が送信するパケットに含まれ、ディスク制御装置110の構成部のうち送信先となる構成部の一意な識別子が登録される。
【0104】
通信モード1683は、図6Aに示す通信モード1683と同じなので説明を省略する。
【0105】
送信先が送信したパケットの送信先識別子が「0001」であれば、通信モードは応答ありアクセスモードに決定される。送信先が送信したパケットの送信先識別子が「0002」であれば、通信モードは応答なしアクセスモードに決定される。
【0106】
送信先が送信したパケットの送信先識別子が「0040」であれば、通信モードはシーケンス番号付きアクセスモードに決定される。送信先が送信したパケットの送信先識別子が「0064」であれば、通信モードはシーケンス番号付き確定アクセスモードに決定される。
【0107】
なお、通信モードは、送信先アドレス又は送信先識別子に限定されることはなく、送信先を特定可能なデータであれば、他のデータを用いてもよい。
【0108】
次に、通信モード決定処理について図7を用いて説明する。
【0109】
図7は、本発明の第1実施形態の通信モード決定処理のフローチャートである。
【0110】
通信モード決定処理は、送信元の構成部がパケットを送信先の構成部に送信する前に、どの通信モードでパケットを送信すればよいかの問い合わせをプロセッサ部135が受けた場合に、プロセッサ部135によって実行される。
【0111】
まず、プロセッサ部135は、パケットを送信する送信先を特定する(701)。具体的には、送信元から問い合わせに送信先を特定するデータ(送信先アドレス又は送信先識別子)が含まれ、プロセッサ部135は、問い合わせに含まれる送信先を特定するデータに基づいて、送信先を特定する。送信先が特定された場合、プロセッサ部135は、モード管理テーブル168を参照して、通信モードを決定する。
【0112】
次に、プロセッサ部135は、ステップ701の処理で特定された送信先が、プロセッサ部135、ホストIF部115又はディスクIF部120(以下、IF部)、及びメモリ部130のいずれであるかを判定する(702)。
【0113】
ステップ701の処理で特定された送信先がプロセッサ部135であると、ステップ702の処理で判定された場合、プロセッサ部135は、応答なしアクセスモードで通信することを決定する(704)。プロセッサ部135へ送信されるデータは、送信先となるプロセッサ部135以外のプロセッサ部135が同じデータを格納しているため、送信先となるプロセッサ部135への送信が失敗しても、リカバリできる可能性が高いので、データが送信先に格納される信頼性よりもストレージシステムの処理性能の向上を重視して、応答なしアクセスモードで通信される。
【0114】
そして、プロセッサ部135は、応答なしアクセスモード送信処理を実行する(705)。具体的には、プロセッサ部135は、問い合わせを送信した送信元の構成部に、応答なしアクセスモードで送信先と通信することを指示し、送信元の構成部にパケットを送信先に送信させる。
【0115】
なお、ホスト計算機100又はディスク装置105からのコマンドをプロセッサ部135に通知する場合には、ホストIF部115又はディスクIF部120を送信元とし、プロセッサ部135を送信先として、シーケンス番号付きアクセスモードで通信される。これは、ホストIF115及びディスクIF部120の初期設定時に、プロセッサ部135を送信先とする場合には、シーケンス番号付きアクセスモードで通信することが設定される。
【0116】
一方、ステップ701の処理で特定された送信先がホストIF部115部又はディスクIF部120であると、ステップ702の処理で判定された場合、当該IF部へ送信されるパケットがIF部を初期設定する要求であるコマンドを含むか否かを判定するために、当該IF部へ送信されるパケットが、データをメモリ部130へ転送する要求のコマンドを含むか否かを判定する(706)。
【0117】
データをメモリ部130へ転送する要求とは、具体的には、ホスト計算機100からディスク制御装置110へ送信されたデータをホストIF部115からメモリ部130へ書き込む要求、メモリ部130に格納されたデータをディスクIF部120へ送信し、メモリ部130に格納されたデータをディスク装置105へ書き込む要求、ディスク装置105に格納されたデータをディスクIF部120からメモリ部130への読み出しを開始する要求、及びメモリ部130に格納されたデータをホストIF部115へ送信し、メモリ部130に格納されたデータをホスト計算機100へ読み出す要求である。つまり、データをメモリ部130へ転送する要求とは、ホスト計算機100又はディスク装置105のデータをメモリ部130へ送信する要求、又はメモリ部130に格納されたデータをホスト計算機100又はディスク装置105へ送信する要求である。
【0118】
IF部へ送信されるパケットがデータをメモリ部130へ転送する要求のコマンドを含む場合、IF部を初期設定する要求であるコマンドを含まないパケットであると判定される。つまり、この場合、ホスト計算機100からの書き込み要求又はホスト計算機100からの読み出し要求であるコマンドを含むパケットであると判定される。
【0119】
一方、IF部へ送信されるパケットがデータをメモリ部130へ転送する要求のコマンドを含まない場合、IF部を初期設定する要求であるコマンドを含むパケットであると判定される。
【0120】
ステップ706の処理で、IF部へ送信されるパケットがIF部を初期設定する要求であるコマンドを含むと判定された場合、初期設定するデータはプロセッサ部135に格納されているため、IF部への送信が失敗しても、リカバリできるので、データが送信先に格納される信頼性よりもストレージシステムの処理性能の向上を重視して、プロセッサ部135は、IF部への通信モードを応答なしアクセスモードに決定する(704)。
【0121】
次に、プロセッサ部135は、送信元となる構成部に送信先となるIF部に応答なしアクセスモードでパケットを送信させる(705)。
【0122】
一方、ステップ706の処理で、IF部へ送信されるパケットがIF部を初期設定する要求であるコマンドを含まないと判定された場合、プロセッサ部135は、通信モードをシーケンス番号付きアクセスモードに決定し(707)、シーケンス番号付きアクセスモード送信処理を実行し(708)、通信モード決定処理を終了する。なお、シーケンス番号付きアクセスモード送信処理については、図8で詳細を説明する。
【0123】
一方、ステップ701の処理で特定された送信先がメモリ部130であると、ステップ702の処理で判定された場合、プロセッサ部135は、メモリ部130へ送信されるパケットがメモリ部130を初期設定する要求であるコマンドを含むか否かを判定するために、メモリ部130へ送信されるパケットがメモリ部130のメモリ領域に送信されるか否かを判定する(709)。
【0124】
ステップ709の処理で、メモリ部130へ送信されるパケットがメモリ部130のメモリ領域に送信されないと判定された場合、メモリ部130へ送信されるパケットは、メモリ部130を初期設定するために送信されるパケットであるので、通信モードを応答なしアクセスモードに決定するために、ステップ704の処理に進む。
【0125】
一方、ステップ709の処理で、メモリ部130へ送信されるパケットがメモリ部130のメモリ領域に送信されると判定された場合、メモリ部130へ送信されるパケットがメモリ部103を初期設定するために送信されるパケットでないので、通信モードをシーケンス番号付き確定アクセスモードに決定する(710)。
【0126】
次に、プロセッサ部135は、シーケンス番号付き確定アクセスモード送信処理を実行し(711)、通信モード決定処理を終了する。なお、シーケンス番号付き確定アクセスモード送信処理については、図9で詳細を説明する。
【0127】
ここで、通信モードがシーケンス番号付きアクセスモードに決定される理由、及び通信モードがシーケンス番号付き確定アクセスモードに決定される理由について説明する。
【0128】
通信モードがシーケンス番号付きアクセスモードに決定される場合には、二つの場合がある。第1は、送信元がIF部で、送信先がプロセッサ部135であって、かつメモリ部130へデータ転送を要求する場合、第2は、送信先がIF部であって、かつメモリ部130へデータ転送を要求する場合である。
【0129】
第1の場合は、具体的には、ホストIF部115からメモリ部130へデータの書き込みを開始することをプロセッサ部130に通知する場合、メモリ部130に格納されたデータのホストIF部115への転送が終了したことをプロセッサ部135に通知する場合、メモリ部130に格納されたデータのディスク装置105への書き込みの終了を通知する場合等がある。
【0130】
第2の場合は、具体的には、ホストIF部115からメモリ部130へのデータの書き込みの開始の準備ができていることをホストIF部115に通知する場合、メモリ部130に格納されたデータのディスク装置105への書き込みをディスク装置105に指示する場合等がある。
【0131】
つまり、シーケンス番号付きアクセスモードは、ホスト計算機100から受信したデータをメモリ部130へ書き込む場合又はディスク装置105に格納されたデータをホスト計算機100に読み出す場合にIF部とプロセッサ部135との間における通信で用いられる。
【0132】
この通信では、一度送信先(IF部又はプロセッサ部135)がパケットを受信できない異常が発生した場合には、送信先における処理が実行されなくなるため、送信元では異常が発生したことを把握せずに次のパケットを送信しても、送信先における処理で異常が発生しない。したがって、送信元が異常を検出するタイミングがシーケンス番号付き確定アクセスモードよりも遅いシーケンス番号付きアクセスモードで通信する。
【0133】
一方、通信モードがシーケンス番号付き確定アクセスモードに決定される場合は、送信先がメモリ部130のメモリ領域である場合である。具体的には、プロセッサ部135がメモリ部130のメモリ領域に格納された制御データ等のデータの読み出しや書き込みを開始する場合等である。
【0134】
この場合、送信先であるメモリ部130がパケットを受信していない異常が発生した場合、送信先であるメモリ部130における処理が実行され続けてしまう。したがって、送信元が送信先で発生した異常を把握せずに、パケットを送信し続けてしまうと、送信先における処理にも異常を発生させてしまう場合がある。
【0135】
このため、送信元は、送信先で発生したパケット未受信の異常をできるだけ早く検出して、送信先が受信していないパケット以降のパケットを再度送信しなければならない。よって、この通信では、送信元が異常を検出するタイミングがシーケンス番号付きアクセスモードよりも早いシーケンス番号付き確定アクセスモードが用いられる。
【0136】
次に、シーケンス番号付きアクセスモード送信処理について、図8を用いて説明する。
【0137】
図8は、本発明の第1実施形態のシーケンス番号付きアクセスモード送信処理のフローチャートである。
【0138】
シーケンス番号付きアクセスモード送信処理は、図7に示すステップ707の処理で、プロセッサ部135のモード決定部162がパケットの送信元と送信先との通信をシーケンス番号付きアクセスモードに決定した場合に実行される。
【0139】
まず、プロセッサ部135は、プロセッサ部135が管理するシーケンス番号を読み出す(801)。
【0140】
次に、プロセッサ部135は、ステップ801の処理で読み出されたシーケンス番号を送信するパケットに付加する(802)。
【0141】
次に、プロセッサ部135は、ホストIF部115又はディスクIF部120から送信されたパケットをメモリ部130が受信した場合に、メモリ部130が、受信したパケットに含まれるコマンドの要求に対応する処理の実行後に応答パケットを受信したパケットの送信先に送信するコマンドを、パケットに付加する(803)。つまり、プロセッサ部135は、次にパケットを送信するホストIF部115又はディスクIF部120とメモリ部130との間の通信モードを応答ありアクセスモードに決定する。
【0142】
次に、プロセッサ部135は、パケットを送信先であるIF部へ送信する(804)。そして、プロセッサ部135は、プロセッサ部135が管理するシーケンス番号をインクリメントして、インクリメントされたシーケンス番号をプロセッサ部135のレジスタに格納して(805)、シーケンス番号付きアクセスモード送信処理を終了する。
【0143】
次に、シーケンス番号付き確定アクセスモード送信処理について、図9を用いて説明する。図9は、本発明の第1実施形態のシーケンス番号付き確定アクセスモード送信処理のフローチャートである。
【0144】
シーケンス番号付き確定アクセスモード送信処理は、図7に示すステップ710の処理で、プロセッサ部135のモード決定部162がパケットの送信元と送信先との通信をシーケンス番号付き確定アクセスモードに決定した場合に実行される。
【0145】
まず、プロセッサ部135は、プロセッサ部135が管理するシーケンス番号を読み出す(901)。
【0146】
次に、プロセッサ部135は、ステップ801の処理で読み出されたシーケンス番号を送信するパケットに付加する(902)。
【0147】
次に、プロセッサ部135は、パケットを送信先であるIF部へ送信する(903)。そして、プロセッサ部135は、プロセッサ部135が管理するシーケンス番号をインクリメントして、インクリメントされたシーケンス番号をプロセッサ部135のレジスタに格納して(904)、シーケンス番号付きアクセスモード送信処理を終了する。
【0148】
次に、メモリ部130のパケット受信処理部158によるパケット受信処理を、図10を用いて説明する。
【0149】
図10は、本発明の第1実施形態のパケット受信処理のフローチャートである。
【0150】
まず、メモリ部130は、パケットを受信した場合、受信したパケットがどの通信モードで送信されたかを解析する(1005)。具体的には、メモリ部130は、受信したパケットのヘッダを解析することによって、受信したパケットがどの通信モードで送信されたかを特定できる。
【0151】
次に、メモリ部130は、ステップ1005の処理で解析されたパケットの通信モードがシーケンス番号付き確定アクセスモードであるか否かを判定する(1010)。
【0152】
ステップ1005の処理で解析されたパケットの通信モードがシーケンス番号付き確定アクセスモードであると、ステップ1010の処理で判定された場合、メモリ部130は、受信したパケットに含まれるシーケンス番号(A)を抽出する(1015)。
【0153】
次に、メモリ部130は、メモリ部130が管理するシーケンス番号(B)をメモリ部130のレジスタから読み出す(1020)。
【0154】
そして、メモリ部130は、ステップ1015の処理で抽出されたシーケンス番号(A)とステップ1020の処理で読み出されたシーケンス番号(B)とを比較し、シーケンス番号(A)とシーケンス番号(B)とが一致するか否かを判定する(1025)。
【0155】
ステップ1025の処理で、シーケンス番号(A)とシーケンス番号(B)とが一致しないと判定された場合、送信元にシーケンス番号が一致しない異常が発生したことを示す応答パケットを送信し(1035)、メモリ部パケット受信処理を終了する。
【0156】
一方、ステップ1025の処理で、シーケンス番号(A)とシーケンス番号(B)とが一致すると判定された場合、メモリ部130は、受信したパケットが、シーケンス番号が一致しない異常が解消したか否かを明示的に確認するために、送信元から送信される確定パケットであるか否かを判定する(1030)。
【0157】
ステップ1030の処理で、受信したパケットが確定パケットであると判定された場合、メモリ部130は、シーケンス番号が一致しているので、異常が解消したことを送信元に通知する応答パケットを送信する(1040)。
【0158】
そして、メモリ部130は、メモリ部130が管理するシーケンス番号(B)をインクリメントして(1050)、メモリ部パケット受信処理を終了する。
【0159】
一方、ステップ1030の処理で、受信したパケットが確定パケットでないと判定された場合、メモリ部130は、受信したパケットに含まれるコマンドが示す要求に対応する処理を実行して(1045)、ステップ1050の処理に進む。
【0160】
一方、ステップ1005の処理で解析されたパケットの通信モードがシーケンス番号付き確定アクセスモードであると、ステップ1010の処理で判定された場合、ステップ1005の処理で解析されたパケットの通信モードが応答ありアクセスモードであるか否かを判定する(1060)。
【0161】
ステップ1005の処理で解析されたパケットの通信モードが応答ありアクセスモードであると、ステップ1060の処理で判定された場合、メモリ部130は、受信したパケットに含まれるコマンドが示す要求に対応する処理を実行する(1060)。そして、メモリ部130は、ステップ1060の処理で実行した処理が完了した場合に、応答パケットを送信元に送信して(1065)、メモリ部パケット受信処理を終了する。
【0162】
一方、ステップ1005の処理で解析されたパケットの通信モードが応答ありアクセスモードでないと、ステップ1060の処理で判定された場合、受信したパケットの通信モードは応答なしアクセスモードであるので、メモリ部130は、受信したパケットに含まれるコマンドが示す要求に対応する処理を実行して(1070)、メモリ部パケット受信処理を終了する。
【0163】
次に、ディスク制御装置110がホスト計算機100から書き込み要求を受信した場合のディスク制御装置110の各構成部の間におけるデータの送受信について、図11を用いて説明する。説明する。
【0164】
図11は、本発明の第1実施形態のディスク制御装置110がホスト計算機100からの書き込み要求を受信した場合のディスク制御装置110の各構成部のシーケンス図である。
【0165】
なお、図11において、実線が応答有りモード、一点鎖線がシーケンス番号付きアクセスモードを示す。
【0166】
まず、ホストIF部115を送信元とし、プロセッサ部135を送信先として、データが通信される(1105)。
【0167】
なお、ホストIF部115がプロセッサ部135に送信するデータは、ホストIF部115がホスト計算機100から何らかの要求(例えばデータの書き込み要求)を受信したことを通知するためのデータである。図11において、プロセッサ部135は、1105で通信されたデータから、ホスト計算機100からデータの書き込み要求を受けたとする。
【0168】
1105に示す通信は、プロセッサ部135を送信先とし、ホストIF部115を送信元とするため、図7に示すステップ707の処理でプロセッサ部135によってシーケンス番号付きアクセスモードに決定される。そして、ステップ708の処理で、プロセッサ部135は、シーケンス番号付きアクセスモードでデータを送信することを送信元となるホストIF部115に通知し、ホストIF部115のパケット送信処理部142がパケットをシーケンス番号付きアクセスモードで送信する。
【0169】
例えば、ホストIF部115がプロセッサ部135に1105に示す書き込みを開始するための通信を開始する前に、この書き込みを開始するデータのディスク装置105へのアクセス先と同じアクセス先を含む読み込み処理がディスク制御装置110で実行されていた場合、読み込み処理と書き込み処理とが逆に実行されてしまうと、1105の通信が開始される前に実行されていた読み込み処理において、本来読み込まれるべきデータと異なるデータが読み込まれる可能性がある。このため、ホストIF部115からプロセッサ部135への通信は、順序性を保証するためにシーケンス番号付きアクセスモードで実行されなければならない。
【0170】
次に、プロセッサ部135を送信元とし、ホストIF部115を送信として、データが通信される(1110)。
【0171】
なお、プロセッサ部135がホストIF部115に送信するデータは、ホスト計算機100から受信したデータがメモリ部130に書き込み可能であることをホスト計算機100に通知するためのデータである。
【0172】
1110に示す通信は、ホストIF部115を送信先とし、ホストIF部115を動作可能とするための設定に関する通信ではないので、図7に示すステップ707の処理でプロセッサ部135によってシーケンス番号付きアクセスモードに決定される。そして、ステップ708の処理で、プロセッサ部135のパケット送信処理部164は、パケットをシーケンス番号付きアクセスモードで送信する。なお、この処理でホストIF部115に送信されるパケットには、図8に示すステップ803の処理で、ホストIF部115とメモリ部130とは応答ありアクセスモードで通信するコマンドが付加されている。
【0173】
ホスト計算機100がディスク装置105へ書き込むためにディスク制御装置110に送信するライトデータはディスク制御装置110が保持しているデータではないので、ディスク制御装置110は、受信したデータがメモリ部130に確実に格納されたことを保証するために、ホストIF部115とプロセッサ部135との通信モードを応答ありアクセスモードにする。
【0174】
ホストIF部115が、1110に示す通信で受信したデータをホスト計算機100に送信すると、ホスト計算機100は、実際にディスク装置105へ書き込むデータ(ライトデータ)を、ホストIF部115に送信する。
【0175】
ホストIF部115は、ライトデータを受信すると、1110に示す通信でプロセッサ部135から受信したパケットに付加されたコマンドに基づいて、応答ありアクセスモードで、ホストIF部115が受信したライトデータを、メモリ部130に送信する(1115)。
【0176】
そして、メモリ部130は、受信したライトデータがメモリ領域に格納された場合に、応答パケットをホストIF部115に送信する(1115)。
【0177】
ホストIF部115は、ライトデータのメモリ部130への転送が終了すると、ホストIF部115を送信元とし、プロセッサ部135を送信先として、データを通信する(1120)。
【0178】
なお、ホストIF部115からプロセッサ部135に送信するデータは、メモリ部130へのライトデータの書き込みが終了したことをプロセッサ部135に通知するためのデータである。
【0179】
1120に示す通信は、プロセッサ部135を送信先とし、ホストIF部115を送信元とするため、図7に示すステップ707の処理でプロセッサ部135によってシーケンス番号付きアクセスモードに決定される。そして、ステップ708の処理で、プロセッサ部135は、シーケンス番号付きアクセスモードでデータを送信することを送信元となるホストIF部115に通知し、ホストIF部115のパケット送信処理部142がパケットをシーケンス番号付きアクセスモードで送信する。
【0180】
プロセッサ部135は、ライトデータの書き込み処理が完了したことをホスト計算機100に通知するために、プロセッサ部135を送信元とし、ホストIF部115を送信先としてデータをシーケンス番号付きアクセスモードで送信する(1125)。なお、シーケンス番号付きアクセスモードとする理由は、1110に示す通信と同じである。
【0181】
ライトデータがメモリ部130に格納された後、所定時間が経過すると、ディスク制御装置110は、メモリ部130に格納されたライトデータをディスク装置105に格納する。
【0182】
このため、プロセッサ部135を送信元とし、ディスクIF部120を送信先として、データが通信される(1130)。
【0183】
なお、プロセッサ部135がディスクIF部120に送信するデータは、メモリ部130に格納されたライトデータをディスクIF部120のバッファメモリに格納することをディスクIF部120に指示するデータである。
【0184】
1130に示す通信は、ディスクIF部120を送信先とし、ディスクIF部120を初期設定するために行われる通信ではないので、図7に示すステップ707の処理でプロセッサ部135によってシーケンス番号付きアクセスモードに決定される。そして、ステップ708の処理で、プロセッサ部135のパケット送信処理部164は、パケットをシーケンス番号付きアクセスモードで送信する。なお、この処理でディスクIF部120に送信されるパケットには、図8に示すステップ803の処理で、ディスクIF部120とメモリ部130とは応答ありアクセスモードで通信するコマンドが付加されている。
【0185】
なお、メモリ部130とディスクIF部120とが、応答ありアクセスモードで通信される理由は、1115に示す通信が応答ありアクセスモードで通信される理由と同じである。
【0186】
ディスクIF部120は、プロセッサ部135からのデータを受信すると、メモリ部130に格納されたライトデータを取得する要求を付加したコマンドを含むパケットを応答あり通信アクセスモードでメモリ部130に送信する(1135)。
【0187】
メモリ部130は、ライトデータを取得する要求を付加したコマンドを含むパケットを受信すると、メモリ部130のメモリ領域に格納されているライトデータをディスクIF部120へ送信する。そして、メモリ部130は、ライトデータの送信が完了した後に、応答パケットをディスクIF部120に送信する(1135)。
【0188】
そして、ディスクIF部120は、メモリ部130のメモリ領域に格納されたライトデータを取得すると、メモリ部130のメモリ領域に格納されたライトデータの取得が完了したことをプロセッサ部135に通知するためのデータをプロセッサ部135に送信する(1140)。
【0189】
1110に示す通信は、ディスクIF部120を送信先とし、ディスクIF部120を初期設定するために行われる通信ではないので、図7に示すステップ707の処理でプロセッサ部135によってシーケンス番号付きアクセスモードに決定される。
【0190】
その後、ディスクIF部120は、ディスク装置105に1135の通信で取得したライトデータを格納する。
【0191】
以上の処理によって、ホスト計算機100からディスク装置105への書き込みを要求されたデータがディスク装置105に格納される。
【0192】
次に、シーケンス番号付きアクセスモード及びシーケンス番号付きアクセス確定アクセスモードにおける通信において、シーケンス番号が一致しない異常が発生した場合の送信元によって実行される処理(シーケンス番号不一致処理)を、図12を用いて説明する。
【0193】
図12は、本発明の第1実施形態のシーケンス番号不一致処理のフローチャートである。
【0194】
まず、送信元は、送信したパケットに含まれるシーケンス番号と送信先が管理するシーケンス番号とが一致しない異常を検出し、検出した異常の内容を解析する(1205)。
【0195】
具体的には、シーケンス番号付きアクセスモードでパケットを送信した場合、一連の送信先に実行させる処理に対応するコマンドを含むパケットの送信終了後、所定時間経過した場合に、送信元はシーケンス番号が一致しない異常が発生したことを検出する。また、シーケンス番号付き確定モードでは、送信元は、シーケンス番号が一致しない異常が発生したパケットの次のパケットを送信した後に、異常を示す応答パケットを受信したタイミングで、送信先でシーケンス番号が一致しない異常が発生したことを検出する。
【0196】
次に、送信元は、シーケンス番号が一致しない異常が発生した送信先を特定し(1210)、特定された送信先がIF部である場合には、ステップ1215の処理に進み、特定された送信先がメモリ部130である場合には、ステップ1230の処理に進む。
【0197】
まず、シーケンス番号が一致しない異常が発生した送信先がIF部である場合について、説明する。
【0198】
シーケンス番号が一致しない異常が発生した送信先がIF部である場合には、シーケンス番号付きアクセスモードによる通信で、シーケンス番号が一致しない異常が発生したので、送信元は、シーケンス番号付きアクセスモードのシーケンス番号が一致しない異常に対応する処理を実行する。この場合、シーケンス番号付きアクセスモードによる通信で、例えば図11において、プロセッサ部135が送信元で、ホストIF部115又はディスクIF部120が送信先である通信が該当する。つまり、ホストIF部115を介してライトデータをメモリ部130に格納することを開始するための通信(1105、1110、1120、及び1125)、及びメモリ部130に格納されたデータをディスクIF部120を介して、ディスク装置105に格納を指示する通信(1130及び1140)である。
【0199】
具体的には、送信元は、ホスト計算機100から受信したライトデータのうち、格納されていないライトデータを抽出する(1215)。
【0200】
次に、送信元は、異常が発生したIF部に対して、IF部が管理するシーケンス番号をリセットする指示を送信する(1220)。
【0201】
次に、送信元は、ステップ1215の処理で格納されていないライトデータの書き込みを開始するリトライ要求を、異常が発生したIF部に送信して(1225)、シーケンス番号不一致処理を終了する。
【0202】
一方、ステップ1210の処理で特定された送信先がメモリ部である場合には、シーケンス番号付き確定アクセスモードによる通信で、シーケンス番号が一致しない異常が発生したので、送信元は、シーケンス番号付き確定アクセスモードのシーケンス番号が一致しない異常に対応する処理を実行する。この場合、シーケンス番号付き確定アクセスモードによる通信で、プロセッサ部135が送信元でメモリ部130が送信先である通信が該当する。
【0203】
まず、送信元は、メモリ部130への格納が完了していないデータ(Input/Output)を抽出する(1230)。
【0204】
そして、送信元は、ステップ1230の処理で抽出されたデータを書き込み前の状態に戻す(1235)。
【0205】
次に、送信元は、異常が発生したメモリ部130に対して、メモリ部130が管理するシーケンス番号をリセットする指示を送信する(1240)。メモリ部130は、ステップ1240で送信元が送信したリセット指示を受けて、シーケンス番号をリセットする。送信元は、ステップ1255の処理で格納されていないデータの書き込みを開始するリトライ要求を、異常が発生したメモリ部130に送信する(1245)。
【0206】
この場合、送信元は、送信先が管理するシーケンス番号をリセットする要求を含むコマンドパケットを送信先へ送信する(1250)。
【0207】
ステップ1250の処理でコマンドパケットを送信してから所定時間経過後に、送信元は、シーケンス番号が一致するようになったか否かを確認するための確定パケットを送信する(1255)。
【0208】
次に、送信元は、送信先から応答パケットを受信する(1260)。そして、送信元は、送信先から受信した応答パケットが、正常なシーケンス番号であったことを示す応答パケットであるか否かを判定する(1265)。
【0209】
ステップ1265の処理で、送信先から受信した応答パケットがシーケンス番号が正常であることを示す応答パケットでないと判定された場合、送信元は、シーケンス番号が一致しない異常が解消されていないので、送信先であるメモリ部130を使用できないようにして(1270)、シーケンス番号不一致処理を終了する。
【0210】
一方、ステップ1265の処理で、送信先から受信した応答パケットがシーケンス番号が正常であることを示す応答パケットであると判定された場合、シーケンス番号が一致しない異常は解消されたので、シーケンス番号不一致処理を終了する。
【0211】
本発明の第1実施形態によれば、ストレージシステムは、プロセッサ部135が、複数の通信モードを送信元及び送信先に基づいて、通信モードを適切に決定するので、ストレージシステムの処理性能を向上させつつ、信頼性も保証できる。
【0212】
(第2実施形態)
本発明の第2実施形態を、図13〜図15を用いて説明する。なお、第2実施形態の構成及び処理のうち、第1実施形態と同じ処理については、同じ番号を付与し、説明を省略する。
【0213】
第1実施形態では、各構成部がパケットを送信する場合に、プロセッサ部135が通信モードを決定したのに対して、第2実施形態では、各構成部が通信モードを決定してから、パケットを送信する。
【0214】
図13は、本発明の第2実施形態のストレージシステムの構成を示すブロック図である。
【0215】
ストレージシステムは、第1実施形態と同じく、ホスト計算機100、ホスト計算機100に接続されたディスク制御装置110、及びディスク制御装置110に接続されたディスク装置105を備える。
【0216】
第2実施形態のホストIF部115及びディスクIF部120は、通信モード決定処理を実行するので、モード管理テーブル168及びモード決定部162を備える。
【0217】
また、プロセッサ部135は、通信モード決定処理を実行しないので、モード管理テーブル168及びモード決定部162を備えない。プロセッサ部135が送信するパケットの通信モード決定処理は、ネットワークを構成するスイッチ部125によって実行される。
【0218】
したがって、スイッチ部125は、モード管理テーブル168、モード決定部162、シーケンス番号付加部1054、パケット解析部1055、及びシーケンス番号確認部1056を備える。
【0219】
パケット解析部1055は、スイッチ部125が受信したパケットを解析する。シーケンス番号付加部1054は、ホストIF部115のシーケンス番号付加部144と同じ構成なので、説明を省略する。シーケンス番号確認部1056は、ホストIF部115のシーケンス番号確認部146と同じ構成なので、説明を省略する。
【0220】
次に、ホストIF部115及びディスクIF部120のモード決定部162によって実行されるモード決定処理を図14を用いて説明する。
【0221】
図14は、本発明の第2実施形態のホストIF部115及びディスクIF部120によって実行されるモード決定処理のフローチャートである。以下、ホストIF部115及びディスクIF部120をIF部という。
【0222】
IF部が送信元となる場合、送信先となり得るのは、プロセッサ部135又はメモリ部130である。送信先がプロセッサ部135である場合は、ホスト計算機100から何らかの要求(例えば書き込みが要求)を受信したことをプロセッサ部135に通知する場合、又はメモリ部130からディスク装置105への書き込みが完了したことをプロセッサ部135に通知する場合等がある。
【0223】
また、送信先がメモリ部130である場合には、ホスト計算機100から書き込みが要求されたデータをメモリ部130に書き込む場合、又はホスト計算機100から読み出しが要求されたデータをメモリ部130から読み出す場合である。
【0224】
なお、通信モードの決定は、IF部がIF部に備わるモード管理テーブル168を参照して実行される。
【0225】
まず、IF部は、図示しないプロトコル処理部又はデータ転送制御部からIF部が受信したパケットに含まれるコマンドに対応する要求を解析する(1405)。
【0226】
次に、IF部は、ステップ1405の処理で、解析された要求に基づいて、パケットの送信先を判定する(1410)。
【0227】
ステップ1410の処理で、送信先がプロセッサ部135であると判定された場合、IF部は、通信モードをシーケンス番号付きアクセスモードに決定し(1415)、パケット送信処理部142又は148にシーケンス番号付きアクセスモード送信処理を実行させ(1420)、モード決定処理を終了する。シーケンス番号付きアクセスモード送信処理は、図15で詳細を説明する。
【0228】
一方、ステップ1410の処理で、送信先がメモリ部130であると判定された場合、IF部は、通信モードを応答ありアクセスモードに決定し(1425)、パケット送信処理部142又は148に応答ありアクセスモード送信処理を実行させ(1430)、モード決定処理を終了する。
【0229】
応答ありアクセスモード送信処理では、パケット送信処理部142又は148は、パケットに応答ありアクセスモードであることを示すデータを付加して、パケットをメモリ部130に送信する。
【0230】
なお、応答ありアクセスモード送信処理では、IF部は、パケットを送信した後、メモリ部130から応答パケットを受信した場合には、当該処理が完了したことをプロセッサ部135に通知する。IF部は、メモリ部130からの応答パケットを受信するまで、メモリ部130に対する別の要求を処理してもよい。
【0231】
次に、シーケンス番号付きアクセスモード送信処理について、図15を用いて説明する。図15は、本発明の第2実施形態のシーケンス番号付きアクセスモード送信処理のフローチャートである。
【0232】
まず、IF部は、IF部が管理するシーケンス番号を読み出す(1510)。
【0233】
次に、IF部は、ステップ1510の処理で読み出されたシーケンス番号を送信するパケットに付加する(1530)。
【0234】
次に、IF部は、パケットを送信先であるプロセッサ部135へ送信する(1535)。そして、IF部は、IF部が管理するシーケンス番号をインクリメントして、インクリメントされたシーケンス番号をIF部のレジスタに格納して(1540)、シーケンス番号付きアクセスモード送信処理を終了する。
【0235】
また、第2実施形態のプロセッサ部135は、シーケンス番号付加部166及びシーケンス番号確認部170を備えない。第1実施形態でプロセッサ部135が実行していたシーケンス番号の付加及びシーケンス番号の確認は、ネットワーク部125を構成するスイッチ部125のシーケンス番号付加部1054及びシーケンス番号確認部1056によって実行される。
【0236】
また、スイッチ部125は、パケット解析部1055によってプロセッサ部135から送信されたパケットの内容が解析され、解析されたパケットの内容から、このパケットの送信先に基づいて、通信モードを決定する。つまり、プロセッサ部135となる場合の通信モード決定処理をスイッチ部125が実行する。この通信モード決定処理は、図7に示す通信モード決定処理と同じであるので、説明を省略する。
【0237】
本発明の第2実施形態によれば、ストレージシステムは、プロセッサ部135が、複数の通信モードを送信元及び送信先に基づいて、通信モードを適切に決定するので、ストレージシステムの処理性能を向上させつつ、信頼性も保証できる。また、通信モード決定処理は送信元となる各構成部によって実行されるので、プロセッサ部135の処理の負荷を分散させることができる。
【0238】
なお、本発明は、上記の各実施例の形態に限定されるものではなく、例えば以下のような応用も可能である。
(1)各実施形態において、プログラムによって実現されていた機能の一部をハードウェアで実現してもよいし、ハードウェアで実現されていた機能の一部をソフトウェアで実現してもよい。なお、ストレージシステムは、ホスト計算機から要求されたデータを格納又は提供できる構成であれば、図1及び図13に示す構成に限定されるものではない。
(2)各実施形態において、ディスク制御装置110の各構成部間がスイッチ部125によって構成されるネットワークを介して接続される例を示したが、各構成要素間でデータが通信可能であればよく、例えば各構成部間がバスによって接続されていてもよい。
(3)各実施例において、ホスト計算機100とディスク装置105とのインタフェースを備える制御部を、ホストIF部115、ディスクIF部145として別々に備えるものであったが、ディスク制御装置110で双方のインタフェースを備えていればよく、例えばホストIF部115及びディスクIF部120の機能を兼ね備える制御部としてもよい。
(4)各実施例において、メモリ部130が、キャッシュメモリであるメモリ領域(図示せず)と、制御データ等が格納される共有メモリ(図示せず)とに区分された例を示したが、ディスク制御装置110内のいずれかの場所で管理されていればよく、例えば、ホストIF部115に備わるメモリで管理してもよい。
(5)各実施例において、必要とされる信頼性及び処理性能に応じて適切に通信モードを設定してもよい。例えば、適用範囲は制限されるが、処理性能重視とする場合は、すべての通信を応答なしアクセスモードとすることも技術的には可能である。本発明では、あくまでも信頼性と処理性能の両立を目指して、複数の動作モードを適切に選択することを主眼に置いている。
【図面の簡単な説明】
【0239】
【図1】本発明の第1実施形態のストレージシステムの構成を示すブロック図である。
【図2】本発明の第1実施形態の応答なしアクセスモードでの通信を示すシーケンス図である。
【図3】本発明の第1実施形態の応答ありアクセスモードでの通信を示すシーケンス図である。
【図4】本発明の第1実施形態のシーケンス番号付きアクセスモードでの通信を示すシーケンス図である。
【図5】本発明の第1実施形態のシーケンス番号付き確定アクセスモードでの通信を示すシーケンス図である。
【図6A】本発明の第1実施形態のモード管理テーブルの説明図である。
【図6B】本発明の第1実施形態のモード管理テーブルの変形例の説明図である。
【図7】本発明の第1実施形態の通信モード決定処理のフローチャートである。
【図8】本発明の第1実施形態のシーケンス番号付きアクセスモード送信処理のフローチャートである。
【図9】本発明の第1実施形態のシーケンス番号付き確定アクセスモード送信処理のフローチャートである。
【図10】本発明の第1実施形態のパケット受信処理のフローチャートである。
【図11】本発明の第1実施形態のディスク制御装置がホスト計算機からの書き込み要求を受信した場合のディスク制御装置の各構成部のシーケンス図である。
【図12】本発明の第1実施形態のシーケンス番号不一致処理のフローチャートである。
【図13】本発明の第2実施形態のストレージシステムの構成を示すブロック図である。
【図14】本発明の第2実施形態のホストIF部及びディスクIF部によって実行されるモード決定処理のフローチャートである。
【図15】本発明の第2実施形態のシーケンス番号付きアクセスモード送信処理のフローチャートである。
【符号の説明】
【0240】
100…ホストコンピュータ
105…ディスク装置
110…記憶装置
115…ホストIF部
120…ディスクIF部
125…スイッチ部
130…メモリ部
135…プロセッサ部
140…モード管理部
142…パケット送信処理部
144…シーケンス番号付加部
146…シーケンス番号確認部
162…モード決定部
164…パケット送信処理部
166…シーケンス番号付加部
168…モード管理テーブル
170…シーケンス番号確認部

【特許請求の範囲】
【請求項1】
ホスト計算機と、
前記ホスト計算機に接続され、前記ホスト計算機と通信可能であって、前記ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおいて、
前記ディスク制御装置は、
前記ホスト計算機に接続されるホストインタフェース部と、
前記ディスク装置に接続されるディスクインタフェース部と、
前記ホスト計算機との間で通信されるデータを一時的に格納するメモリ領域、及び前記ストレージシステムの制御データを格納する領域を含むメモリ部と、
演算処理をするプロセッサ、及び前記プロセッサが実行するプログラムを格納する領域を備えるプロセッサ部と、を備え、
前記ストレージシステムは、前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部にデータを送信する場合に、送信元から格納することを要求されたデータが送信先に格納されると、前記送信先は前記送信先に応答を返す第1モードで通信することを特徴とするストレージシステム。
【請求項2】
前記プロセッサ部から前記メモリ部のメモリ領域にデータを送信する場合に、送信元が送信先に格納されるデータに通し番号を付与し、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しなければ、前記送信先はエラー応答を前記送信元に返す第2モードで通信することを特徴とする請求項1に記載のストレージシステム。
【請求項3】
前記第2モードでは、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しない場合に、前記送信元及び前記送信先は、それぞれが管理する通し番号をリセットすることを特徴とする請求項2に記載のストレージシステム。
【請求項4】
前記プロセッサ部が、前記ホストインタフェース部、前記ディスクインタフェース部、及び前記メモリ部を動作可能とするための設定に関する指示を送信するために、前記ホストインタフェース部、前記ディスクインタフェース部、及び前記メモリ部と通信する場合には、送信先が送信元からのデータを格納しても、前記応答を前記送信元に返さない第3モードで通信することを特徴とする請求項1に記載のストレージシステム。
【請求項5】
前記プロセッサ部は、
前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部への通信モードを前記第1モードに決定し、
前記ホストインタフェース部又は前記ディスクインタフェース部に決定された通信モードを指示することを特徴とする請求項1に記載のストレージシステム。
【請求項6】
前記ホストインタフェース部又は前記ディスクインタフェース部は、前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部への通信モードを前記第1モードに決定することを特徴とする請求項1に記載のストレージシステム。
【請求項7】
前記ホストインタフェース部、前記ディスクインタフェース部、前記メモリ部、及び前記プロセッサ部は、スイッチを含むネットワークを介して接続され、
前記スイッチは、前記プロセッサ部から前記メモリ部のメモリ領域への通信を、前記第2モードに決定することを特徴とする請求項2に記載のストレージシステム。
【請求項8】
ホスト計算機と、
前記ホスト計算機に接続され、前記ホスト計算機と通信可能であって、前記ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおけるディスク制御装置に備わる各構成部間の通信方法において、
前記ディスク制御装置は、
前記ホスト計算機に接続されるホストインタフェース部と、
前記ディスク装置に接続されるディスクインタフェース部と、
前記ホスト計算機との間で通信されるデータを一時的に格納するメモリ領域、及び前記ストレージシステムの制御データを格納する領域を含むメモリ部と、
演算処理をするプロセッサ、及び前記プロセッサが実行するプログラムを格納する領域を備えるプロセッサ部と、を備え、
前記通信方法は、
前記ストレージシステムは、前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部にデータを送信する場合に、送信元から格納することを要求されたデータが送信先に格納されると、前記送信先は前記送信先に応答を返す第1モードで通信することを決定する第1ステップと、
前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部にデータを前記決定された第1モードで送信するステップと、を含むことを特徴とする通信方法。
【請求項9】
前記通信方法は、
前記プロセッサ部から前記メモリ部にデータを送信する場合に、送信元が送信先に格納されるデータに通し番号を付与し、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しなければ、前記送信先はエラー応答を前記送信元に返す第2モードで通信することを決定する第2ステップと、
前記プロセッサ部から前記メモリ部にデータを前記決定された第2モードで送信するステップと、を含むことを特徴とする請求項8に記載の通信方法。
【請求項10】
前記通信方法は、前記第2モードでは、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しない場合に、前記送信元及び前記送信先は、それぞれが管理する通し番号をリセットするステップを含むことを特徴とする請求項9に記載の通信方法。
【請求項11】
前記通信方法は、
前記プロセッサ部が、前記ホストインタフェース部、前記ディスクインタフェース部、及び前記メモリ部を動作可能とするための設定に関する指示を送信するために、前記ホストインタフェース部、前記ディスクインタフェース部、及び前記メモリ部と通信する場合には、送信先が送信元からのデータを格納しても、前記応答を前記送信元に返さない第3モードで通信することを決定するステップと、
前記プロセッサ部から前記ホストインタフェース部、前記ディスクインタフェース部、及び前記メモリ部にデータを前記決定された第3モードで送信するステップと、を含むことを特徴とする請求項8に記載の通信方法。
【請求項12】
前記第1ステップは、
前記プロセッサ部によって前記第1モードに決定され、
前記プロセッサ部は、通信モードが前記第1モードに決定されたことを前記ホストインタフェース部又は前記ディスクインタフェース部に指示するステップを含むことを特徴とする請求項8に記載の通信方法。
【請求項13】
前記第1ステップは、前記ホストインタフェース部又は前記ディスクインタフェース部によって前記第1モードに決定されることを特徴とする請求項8に記載の通信方法。
【請求項14】
前記ホストインタフェース部、前記ディスクインタフェース部、前記メモリ部、及び前記プロセッサ部は、スイッチを含むネットワークを介して接続され、
前記第2ステップは、
前記スイッチによって前記第2モードに決定されることを特徴とする請求項9に記載の通信方法。
【請求項15】
ホスト計算機と、
前記ホスト計算機に接続され、前記ホスト計算機と通信可能であって、前記ホスト計算機から書き込みを要求されたデータを格納するディスク装置を制御するディスク制御装置と、を備えるストレージシステムにおいて、
前記ディスク制御装置は、
前記ホスト計算機に接続されるホストインタフェース部と、
前記ディスク装置に接続されるディスクインタフェース部と、
前記ホスト計算機との間で通信されるデータを一時的に格納するメモリ領域、及び前記ストレージシステムの制御データを格納する領域を含むメモリ部と、
演算処理をするプロセッサ、及び前記プロセッサが実行するプログラムを格納する領域を備えるプロセッサ部と、を備え、
前記ホストインタフェース部又は前記ディスクインタフェース部から前記メモリ部にデータを送信する場合に、前記ホストインタフェース部又は前記ディスクインタフェース部は、送信元から格納することを要求されたデータが送信先に格納されると、前記送信先は前記送信先に応答を返す第1モードで通信することを決定し、
前記プロセッサ部から前記メモリ部のメモリ領域にデータを送信する場合に、送信元が送信先に格納されるデータに通し番号を付与し、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しなければ、前記送信先はエラー応答を前記送信元に返し、前記送信先が管理する通し番号と前記データに付与された通し番号とが一致しない場合に、前記送信元及び前記送信先は、それぞれが管理する通し番号をリセットする第2モードで通信することを特徴とするストレージシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−92336(P2010−92336A)
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願番号】特願2008−262684(P2008−262684)
【出願日】平成20年10月9日(2008.10.9)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】