(57)【特許請求の範囲】
【請求項１】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、
前記記憶装置と通信するための第２通信部（４，１４０）と、
前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、
前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）と、
前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、
を備え、 
前記共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が記憶されており、
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、
予め設定される所定の条件が成立した場合に、移動元の前記ローカルメモリに記憶されている前記第２ボリューム構成情報を、移動先の前記ローカルメモリに移動させるようになっており、
前記各マイクロプロセッサは、前記マイクロプロセッサをそれぞれ複数ずつ含む複数のマイクロプロセッサパッケージのいずれかに含まれており、
前記各マイクロプロセッサパッケージは、前記ホストコンピュータから発行されるコマンドを処理するための第１マイクロプロセッサと、前記コマンドの処理とは別の処理を担当する第２マイクロプロセッサとを含んでおり、
共通の前記マイクロプロセッサパッケージに含まれる前記各マイクロプロセッサは、そのマイクロプロセッサパッケージ内の前記ローカルメモリを共同使用し、
前記共有メモリには、前記各論理ボリュームの使用権限を示す第１使用権限情報が予め記憶されており、
前記第１使用権限情報では、前記論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、前記論理ボリュームを用いて前記コマンドを処理する権限を示す実行権情報とが、前記各論理ボリューム毎に予め対応付けられており、
前記各ローカルメモリには、前記第１使用権限情報のコピーである、第２使用権限情報が記憶されており、
前記振り分けテーブルには、前記第１使用権限情報のうち前記各論理ボリュームに関する前記受信権情報のコピーが記憶されており、
（１）前記各マイクロプロセッサパッケージのうち所定のマイクロプロセッサパッケージ内の前記第２マイクロプロセッサは、前記所定の条件が設立した場合に、
（1-1）前記振り分けテーブルに記憶されている前記各受信権情報のうち、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサパッケージから移動先のマイクロプロセッサパッケージに切り替えさせて、前記振り分けテーブルを更新し、
（1-2）前記第１使用権限情報において、前記移動対象の論理ボリュームに関する前記受信権情報を、前記移動元のマイクロプロセッサパッケージから前記移動先のマイクロプロセッサパッケージに切り替えさせて、前記第１使用権限情報を更新し、
（1-3）前記各第２使用権限情報を、更新された前記第１使用権限情報に一致させ、
（２）前記第１通信制御部は、前記ホストコンピュータから発行されるコマンドを、更新された前記振り分けテーブルに基づいて、前記移動先のマイクロプロセッサパッケージに送信し、
（３）前記移動元のマイクロプロセッサパッケージは、
（3-1）前記受信権情報が前記移動先のマイクロプロセッサパッケージに移動済の場合は、未処理のコマンドを蓄積するためのキューから取り出されるコマンドを、前記移動先のマイクロプロセッサパッケージに転送させ、
（3-2）処理中のコマンドが全て無くなった場合に、前記実行権情報を前記移動先のマイクロプロセッサパッケージに移動させ、
（3-3）前記移動対象の論理ボリュームに対応する前記第２ボリューム構成情報を、前記移動元のマイクロプロセッサパッケージ内の前記ローカルメモリから削除し、
（４）前記移動先のマイクロプロセッサパッケージは、
（4-1）前記実行権情報を前記移動元のマイクロプロセッサパッケージから取得するまでの間、前記第１通信部または前記移動元のマイクロプロセッサパッケージから受信されるコマンドを処理待ちコマンドとして蓄積し、
（4-2）前記実行権情報を前記移動元のマイクロプロセッサパッケージから取得した場合は、前記共有メモリ内の前記第１ボリューム構成情報に基づいて、前記移動対象の論理ボリュームに関する第２ボリューム構成情報を前記ローカルメモリに記憶させ、
（4-3）前記第２ボリューム構成情報を用いて、処理待ちの前記コマンドを処理し、
さらに、
（５）前記移動元のマイクロプロセッサパッケージの対応するホストコンピュータがメインフレームである場合において、
（5-1）前記実行権情報が前記移動先のマイクロプロセッサパッケージに移動済の場合、または、前記移動先のマイクロプロセッサパッケージに前記実行権情報を移動させるために設定される所定時間を経過した場合、のいずれかの場合に、
（5-2）未処理のコマンドを蓄積するための前記キューから取り出されるコマンドの処理を中止し、中止された前記コマンドの再発行を前記ホストコンピュータに要求する、
記憶制御装置。
【請求項２】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、
前記記憶装置と通信するための第２通信部（４，１４０）と、
前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、
前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）と、
前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、
を備え、 
前記共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が記憶されており、
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、
予め設定される所定の条件が成立した場合に、移動元の前記ローカルメモリに記憶されている前記第２ボリューム構成情報を、移動先の前記ローカルメモリに移動させるようになっており、
前記各論理ボリュームの使用権限を示す使用権限情報が前記各ローカルメモリに予め記憶されており、
前記使用権限情報では、前記論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、前記論理ボリュームを用いて前記コマンドを処理する権限を示す実行権情報とが、前記各論理ボリューム毎に予め対応付けられており、
予め設定される所定の条件が成立した場合、最初に、移動対象の論理ボリュームに関する前記受信権情報を移動先のマイクロプロセッサに対応付け、次に、前記移動対象の論理ボリュームに関する前記実行権情報を前記移動先のマイクロプロセッサに対応付けることにより、前記移動先のマイクロプロセッサの使用する前記ローカルメモリに、前記移動対象の論理ボリュームに関する前記第２ボリューム構成情報を移動させる、
記憶制御装置。
【請求項３】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、
前記記憶装置と通信するための第２通信部（４，１４０）と、
前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、
前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）と、
前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、
を備え、 
前記共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が記憶されており、
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、
予め設定される所定の条件が成立した場合に、移動元の前記ローカルメモリに記憶されている前記第２ボリューム構成情報を、移動先の前記ローカルメモリに移動させるようになっており、
前記共有メモリには、前記各論理ボリュームの使用権限を示す第１使用権限情報が予め記憶されており、
前記第１使用権限情報では、前記論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、前記論理ボリュームを用いて前記コマンドを処理する権限を示す実行権情報とが、前記各論理ボリューム毎に予め対応付けられており、
前記各ローカルメモリには、前記第１使用権限情報のコピーである、第２使用権限情報が記憶されており、
前記振り分けテーブルには、前記第１使用権限情報のうち前記各論理ボリュームに関する前記受信権情報のコピーが記憶されており、
（１）前記各マイクロプロセッサのうち所定のマイクロプロセッサは、前記所定の条件が設立した場合に、
（1-1）前記振り分けテーブルに記憶されている前記各受信権情報のうち、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサから移動先のマイクロプロセッサに切り替えさせて、前記振り分けテーブルを更新し、
（1-2）前記第１使用権限情報において、前記移動対象の論理ボリュームに関する前記受信権情報を、前記移動元のマイクロプロセッサから前記移動先のマイクロプロセッサに切り替えさせて、前記第１使用権限情報を更新し、
（1-3）前記各第２使用権限情報を、更新された前記第１使用権限情報に一致させ、
（２）前記第１通信制御部は、前記ホストコンピュータから発行されるコマンドを、更新された前記振り分けテーブルに基づいて、前記移動先のマイクロプロセッサに送信し、
（３）前記移動元のマイクロプロセッサは、
（3-1）前記受信権情報が前記移動先のマイクロプロセッサに移動済の場合は、未処理のコマンドを前記移動先のマイクロプロセッサに転送させ、
（3-2）処理中のコマンドが全て無くなった場合に、前記実行権情報を前記移動先のマイクロプロセッサに移動させ、
（3-3）前記移動対象の論理ボリュームに対応する前記第２ボリューム構成情報を、前記移動元のマイクロプロセッサの使用する前記ローカルメモリから削除し、
（４）前記移動先のマイクロプロセッサは、
（4-1）前記実行権情報を前記移動元のマイクロプロセッサから取得するまでの間、前記第１通信部または前記移動元のマイクロプロセッサから受信されるコマンドを処理待ちコマンドとして蓄積し、
（4-2）前記実行権情報を前記移動元のマイクロプロセッサから取得した場合は、前記共有メモリ内の前記第１ボリューム構成情報に基づいて、前記移動対象の論理ボリュームに関する第２ボリューム構成情報を前記ローカルメモリに記憶させ、
（4-3）前記第２ボリューム構成情報を用いて、処理待ちの前記コマンドを処理する、
記憶制御装置。
【請求項４】
（５）前記移動元のマイクロプロセッサの対応する前記ホストコンピュータがメインフレームである場合、前記移動元のマイクロプロセッサは、
（5-1）前記実行権情報が前記移動先のマイクロプロセッサに移動済の場合、または、前記移動先のマイクロプロセッサに前記実行権情報を移動させるために設定される所定時間を経過した場合、のいずれかの場合に、
（5-2）前記受信権情報を前記移動先のマイクロプロセッサに移動させるよりも前に受信され、かつ、処理が完了されていないコマンドの処理を中止し、その中止されたコマンドの再発行を前記ホストコンピュータに要求する、
請求項３に記載の記憶制御装置。
【請求項５】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、
前記記憶装置と通信するための第２通信部（４，１４０）と、
前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、
前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）と、
前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、
を備え、 
前記共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が記憶されており、
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、
予め設定される所定の条件が成立した場合に、移動元の前記ローカルメモリに記憶されている前記第２ボリューム構成情報を、移動先の前記ローカルメモリに移動させるようになっており、
前記所定の条件が成立した場合とは、前記各論理ボリュームのうちのいずれか複数を用いてコピーペアを生成する場合であり、
前記コピーペアの一方の論理ボリュームに関する第２ボリューム構成情報と、前記コピーペアの他方の論理ボリュームに関する第２ボリューム構成情報とが、同一のローカルメモリ内に存在するように、
前記一方の論理ボリュームに対応するローカルメモリから、前記他方の論理ボリュームに対応するローカルメモリに、前記第２ボリューム構成情報を移動させる、記憶制御装置。
【請求項６】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、
前記記憶装置と通信するための第２通信部（４，１４０）と、
前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、
前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）と、
前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、
を備え、 
前記共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が記憶されており、
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、
予め設定される所定の条件が成立した場合に、移動元の前記ローカルメモリに記憶されている前記第２ボリューム構成情報を、移動先の前記ローカルメモリに移動させるようになっており、
前記所定の条件が成立した場合とは、前記マイクロプロセッサに障害が発生した場合であり、
前記障害の発生したマイクロプロセッサで管理されている前記論理ボリュームに関する前記第２ボリューム構成情報を、前記障害の発生した前記マイクロプロセッサに代わって処理を行うためのマイクロプロセッサに対応付けられている前記ローカルメモリに移動させる、記憶制御装置。
【請求項７】
ホストコンピュータ（２，３０）と記憶装置（８，１５１）との間のデータ入出力を制御する記憶制御装置（１，１０）を制御するための方法であって、
前記ホストコンピュータと通信するための第１通信部（３，１１０）であって、前記ホストコンピュータからのコマンドを振り分けるための振り分けテーブル（Ｔ１０）を記憶する第１通信部と、前記記憶装置と通信するための第２通信部（４，１４０）と、前記第１通信部及び前記第２通信部を用いて、前記ホストコンピュータと前記記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサ（６Ａ，１２１）と、前記各マイクロプロセッサによって使用される共有メモリ（５，１３０）であって、複数の論理ボリュームを管理するための第１ボリューム構成情報（Ｔ３０）が少なくとも記憶されている共有メモリと、前記各マイクロプロセッサ毎に配置される複数のローカルメモリ（６Ｂ，１２２）と、を備えており、  
前記各ローカルメモリには、前記第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報（Ｔ２０）が記憶されており、さらに、
前記各ローカルメモリには、前記各論理ボリュームの使用権限を示す使用権限情報が予め記憶されており、
前記使用権限情報では、前記論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、前記論理ボリュームを用いて前記コマンドを処理する権限を示す実行権情報とが、前記各論理ボリューム毎に予め対応付けられており、
予め設定される所定の条件が成立したか否かを判定し、
前記所定の条件が成立した場合には、移動対象の論理ボリュームに関する前記受信権情報を移動先のマイクロプロセッサに対応付け、
前記移動対象の論理ボリュームに関する前記実行権情報を前記移動先のマイクロプロセッサに対応付け、
前記実行権情報の移動元のマイクロプロセッサにより使用されるローカルメモリから、前記移動対象の論理ボリュームに関する前記第２ボリューム構成情報を削除し、
前記実行権情報の移動先のマイクロプロセッサにより使用されるローカルメモリに、前記移動対象の論理ボリュームに関する前記第２ボリューム構成情報を前記共有メモリからコピーさせる、
記憶制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置の制御方法に関する。
【背景技術】
【０００２】
記憶制御装置は、ハードディスクドライブのような記憶装置を複数用いて、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）に基づく記憶領域をホストコンピュータに提供する。記憶制御装置は、複数のマイクロプロセッサを備えている。各マイクロプロセッサは、共有メモリに記憶されているボリューム構成情報を共有する。マイクロプロセッサが共有メモリに直接アクセスしてボリューム構成情報を使用すると、処理時間がかかる。そこで、共有されるボリューム構成情報の一部を、マイクロプロセッサの近傍に配置されるローカルメモリにコピーして使用する構成が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２８５７７８
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術では、マイクロプロセッサの近傍に位置するローカルメモリ内にボリューム構成情報を配置させるため、ボリューム構成情報へのアクセス時間を短縮して、処理性能を高めることができる。しかし、例えば、複数の論理ボリューム間でコピー処理を行う場合には、コピー元ボリュームに関するボリューム構成情報とコピー先ボリュームに関するボリューム構成情報とが、そのコピー処理を担当するマイクロプロセッサにより使用されるローカルメモリ内に配置されている必要がある。
【０００５】
もし、コピー元ボリュームのボリューム構成情報と、コピー先ボリュームのボリューム構成情報とが別々のローカルメモリに配置され、それらローカルメモリを参照する別々のマイクロプロセッサによってコピー処理が行われる場合、共有メモリへのアクセスが発生し、コピー処理に時間を要し、性能が低下する。
【０００６】
以上のように、所定の場合には、各ローカルメモリに記憶されているボリューム構成情報を再配置させる必要がある。しかし、前記文献では、ボリューム構成情報の再配置について考慮されていない。さらに、ホストコンピュータからのアクセスを停止させることなく、ボリューム構成情報を再配置させるための構成も、前記文献に記載されていない。
【０００７】
そこで、本発明の目的は、各ローカルメモリに記憶されているボリューム構成情報を適切に再配置させることのできる、記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、ホストコンピュータからのアクセスを停止させずに、各ローカルメモリに記憶されているボリューム構成情報を適切なタイミングで再配置させることができる、記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００８】
上記課題を解決すべく、本発明の第１観点に従う記憶制御装置は、ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、ホストコンピュータと通信するための第１通信部であって、ホストコンピュータからのコマンドを振り分けるための振り分けテーブルを記憶する第１通信部と、記憶装置と通信するための第２通信部と、第１通信部及び第２通信部を用いて、ホストコンピュータと記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサと、各マイクロプロセッサによって使用される共有メモリと、各マイクロプロセッサ毎に配置される複数のローカルメモリと、を備え、共有メモリには、複数の論理ボリュームを管理するための第１ボリューム構成情報が記憶されており、各ローカルメモリには、第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報が記憶されており、予め設定される所定の条件が成立した場合に、移動元のローカルメモリに記憶されている第２ボリューム構成情報を、移動先のローカルメモリに移動させる。
【０００９】
第２観点では、第１観点において、各マイクロプロセッサは、マイクロプロセッサをそれぞれ複数ずつ含む複数のマイクロプロセッサパッケージのいずれかに含まれており、各マイクロプロセッサパッケージは、ホストコンピュータから発行されるコマンドを処理するための第１マイクロプロセッサと、コマンドの処理とは別の処理を担当する第２マイクロプロセッサとを含んでおり、共通のマイクロプロセッサパッケージに含まれる各マイクロプロセッサは、そのマイクロプロセッサパッケージ内のローカルメモリを共同使用し、共有メモリには、各論理ボリュームの使用権限を示す第１使用権限情報が予め記憶されており、第１使用権限情報では、論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、論理ボリュームを用いてコマンドを処理する権限を示す実行権情報とが、各論理ボリューム毎に予め対応付けられており、各ローカルメモリには、第１使用権限情報のコピーである、第２使用権限情報が記憶されており、振り分けテーブルには、第１使用権限情報のうち各論理ボリュームに関する受信権情報のコピーが記憶されており、（１）各マイクロプロセッサパッケージのうち所定のマイクロプロセッサパッケージ内の第２マイクロプロセッサは、所定の条件が設立した場合に、（1-1）振り分けテーブルに記憶されている各受信権情報のうち、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサパッケージから移動先のマイクロプロセッサパッケージに切り替えさせて、振り分けテーブルを更新し、（1-2）第１使用権限情報において、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサパッケージから移動先のマイクロプロセッサパッケージに切り替えさせて、第１使用権限情報を更新し、（1-3）各第２使用権限情報を、更新された第１使用権限情報に一致させ、（２）第１通信制御部は、ホストコンピュータから発行されるコマンドを、更新された振り分けテーブルに基づいて、移動先のマイクロプロセッサパッケージに送信し、（３）移動元のマイクロプロセッサパッケージは、（3-1）受信権情報が移動先のマイクロプロセッサパッケージに移動済の場合は、未処理のコマンドを蓄積するためのキューから取り出されるコマンドを、移動先のマイクロプロセッサパッケージに転送させ、
（3-2）処理中のコマンドが全て無くなった場合に、実行権情報を移動先のマイクロプロセッサパッケージに移動させ、（3-3）移動対象の論理ボリュームに対応する第２ボリューム構成情報を、移動元のマイクロプロセッサパッケージ内のローカルメモリから削除し、（４）移動先のマイクロプロセッサパッケージは、（4-1）実行権情報を移動元のマイクロプロセッサパッケージから取得するまでの間、第１通信部または移動元のマイクロプロセッサパッケージから受信されるコマンドを処理待ちコマンドとして蓄積し、（4-2）実行権情報を移動元のマイクロプロセッサパッケージから取得した場合は、共有メモリ内の第１ボリューム構成情報に基づいて、移動対象の論理ボリュームに関する第２ボリューム構成情報をローカルメモリに記憶させ、（4-3）第２ボリューム構成情報を用いて、処理待ちのコマンドを処理し、さらに、（５）移動元のマイクロプロセッサパッケージの対応するホストコンピュータがメインフレームである場合において、（5-1）実行権情報が移動先のマイクロプロセッサパッケージに移動済の場合、または、移動先のマイクロプロセッサパッケージに実行権情報を移動させるために設定される所定時間を経過した場合、のいずれかの場合に、（5-2）未処理のコマンドを蓄積するためのキューから取り出されるコマンドの処理を中止し、中止されたコマンドの再発行をホストコンピュータに要求する。
【００１０】
第３観点では、第１観点において、各論理ボリュームの使用権限を示す使用権限情報が各ローカルメモリに予め記憶されており、使用権限情報では、論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、論理ボリュームを用いてコマンドを処理する権限を示す実行権情報とが、各論理ボリューム毎に予め対応付けられており、予め設定される所定の条件が成立した場合、最初に、移動対象の論理ボリュームに関する受信権情報を移動先のマイクロプロセッサに対応付け、次に、移動対象の論理ボリュームに関する実行権情報を移動先のマイクロプロセッサに対応付けることにより、移動先のマイクロプロセッサの使用するローカルメモリに、移動対象の論理ボリュームに関する第２ボリューム構成情報を移動させる。
【００１１】
第４観点では、第１観点において、共有メモリには、各論理ボリュームの使用権限を示す第１使用権限情報が予め記憶されており、第１使用権限情報では、論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、論理ボリュームを用いてコマンドを処理する権限を示す実行権情報とが、各論理ボリューム毎に予め対応付けられており、各ローカルメモリには、第１使用権限情報のコピーである、第２使用権限情報が記憶されており、振り分けテーブルには、第１使用権限情報のうち各論理ボリュームに関する受信権情報のコピーが記憶されており、（１）各マイクロプロセッサのうち所定のマイクロプロセッサは、所定の条件が設立した場合に、（1-1）振り分けテーブルに記憶されている各受信権情報のうち、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサから移動先のマイクロプロセッサに切り替えさせて、振り分けテーブルを更新し、（1-2）第１使用権限情報において、移動対象の論理ボリュームに関する受信権情報を、移動元のマイクロプロセッサから移動先のマイクロプロセッサに切り替えさせて、第１使用権限情報を更新し、（1-3）各第２使用権限情報を、更新された第１使用権限情報に一致させ、（２）第１通信制御部は、ホストコンピュータから発行されるコマンドを、更新された振り分けテーブルに基づいて、移動先のマイクロプロセッサに送信し、（３）移動元のマイクロプロセッサは、
（3-1）受信権情報が移動先のマイクロプロセッサに移動済の場合は、未処理のコマンドを移動先のマイクロプロセッサに転送させ、（3-2）処理中のコマンドが全て無くなった場合に、実行権情報を移動先のマイクロプロセッサに移動させ、（3-3）移動対象の論理ボリュームに対応する第２ボリューム構成情報を、移動元のマイクロプロセッサの使用するローカルメモリから削除し、（４）移動先のマイクロプロセッサは、（4-1）実行権情報を移動元のマイクロプロセッサから取得するまでの間、第１通信部または移動元のマイクロプロセッサから受信されるコマンドを処理待ちコマンドとして蓄積し、（4-2）実行権情報を移動元のマイクロプロセッサから取得した場合は、共有メモリ内の第１ボリューム構成情報に基づいて、移動対象の論理ボリュームに関する第２ボリューム構成情報をローカルメモリに記憶させ、（4-3）第２ボリューム構成情報を用いて、処理待ちのコマンドを処理する。
【００１２】
第５観点では、第４観点において、（５）移動元のマイクロプロセッサの対応するホストコンピュータがメインフレームである場合、移動元のマイクロプロセッサは、（5-1）実行権情報が移動先のマイクロプロセッサに移動済の場合、または、移動先のマイクロプロセッサに実行権情報を移動させるために設定される所定時間を経過した場合、のいずれかの場合に、（5-2）受信権情報を移動先のマイクロプロセッサに移動させるよりも前に受信され、かつ、処理が完了していないコマンドの処理を中止し、その中止されたコマンドの再発行をホストコンピュータに要求する。
【００１３】
第６観点では、第１観点において、各マイクロプロセッサは、マイクロプロセッサをそれぞれ複数ずつ含む複数のマイクロプロセッサパッケージのいずれかに含まれており、各マイクロプロセッサパッケージは、ホストコンピュータから発行されるコマンドを処理するための第１マイクロプロセッサと、コマンドの処理とは別の処理を担当する第２マイクロプロセッサとを含んでおり、共通のマイクロプロセッサパッケージに含まれる各マイクロプロセッサは、そのマイクロプロセッサパッケージ内のローカルメモリを共同使用し、各マイクロプロセッサパッケージのうち所定のマイクロプロセッサパッケージ内の第２マイクロプロセッサは、所定の条件が成立した場合に、移動元のローカルメモリに記憶されている第２ボリューム構成情報を、移動先のローカルメモリに移動させる。
【００１４】
第７観点では、第６観点において、処理すべきコマンドの数に応じて、第１マイクロプロセッサの数を増加させる。
【００１５】
第８観点では、第７観点において、第１マイクロプロセッサの数が予め設定される上限値に達した場合において、第２プロセッサを、コマンドの処理および別の処理の両方を担当することのできる第３マイクロプロセッサに変化させる。
【００１６】
第９観点では、第１観点において、所定の条件が成立した場合とは、コピーペアを生成する場合、または、マイクロプロセッサに障害が発生した場合、または、各マイクロプロセッサ間で負荷を分散させる場合、の少なくともいずれか一つである。
【００１７】
第１０観点では、第１観点において、所定の条件が成立した場合とは、各論理ボリュームのうちのいずれか複数を用いてコピーペアを生成する場合であり、コピーペアの一方の論理ボリュームに関する第２ボリューム構成情報と、コピーペアの他方の論理ボリュームに関する第２ボリューム構成情報とが、同一のローカルメモリ内に存在するように、一方の論理ボリュームに対応するローカルメモリから、他方の論理ボリュームに対応するローカルメモリに、第２ボリューム構成情報を移動させる。
【００１８】
第１１観点では、第１観点において、所定の条件が成立した場合とは、マイクロプロセッサに障害が発生した場合であり、障害の発生したマイクロプロセッサで管理されている論理ボリュームに関する第２ボリューム構成情報を、障害の発生したマイクロプロセッサに代わって処理を行うためのマイクロプロセッサに対応付けられているローカルメモリに移動させる。
【００１９】
第１２観点では、第１観点において、所定の条件が成立した場合とは、各マイクロプロセッサ間で負荷を分散させる場合であり、予め設定される所定値以上の負荷を有する高負荷マイクロプロセッサから、所定値未何の負荷を有する低負荷マイクロプロセッサに、第２ボリューム構成情報を移動させる。
【００２０】
第１３観点に従う、記憶制御装置の制御方法は、ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置を制御するための方法であって、ホストコンピュータと通信するための第１通信部であって、ホストコンピュータからのコマンドを振り分けるための振り分けテーブルを記憶する第１通信部と、記憶装置と通信するための第２通信部と、第１通信部及び第２通信部を用いて、ホストコンピュータと記憶装置との間のデータ入出力を制御する複数のマイクロプロセッサと、各マイクロプロセッサによって使用される共有メモリであって、複数の論理ボリュームを管理するための第１ボリューム構成情報が少なくとも記憶されている共有メモリと、各マイクロプロセッサ毎に配置される複数のローカルメモリと、を備えており、各ローカルメモリには、第１ボリューム構成情報のうち、当該ローカルメモリに対応するマイクロプロセッサにより管理される管理対象の論理ボリュームに関する情報のコピーである、第２ボリューム構成情報が記憶されており、さらに、各ローカルメモリには、各論理ボリュームの使用権限を示す使用権限情報が予め記憶されており、使用権限情報では、論理ボリュームに関するコマンドを受信する権限を示す受信権情報と、論理ボリュームを用いてコマンドを処理する権限を示す実行権情報とが、各論理ボリューム毎に予め対応付けられており、予め設定される所定の条件が成立したか否かを判定し、所定の条件が成立した場合には、移動対象の論理ボリュームに関する受信権情報を移動先のマイクロプロセッサに対応付け、移動対象の論理ボリュームに関する実行権情報を移動先のマイクロプロセッサに対応付け、実行権情報の移動元のマイクロプロセッサにより使用されるローカルメモリから、移動対象の論理ボリュームに関する第２ボリューム構成情報を削除し、実行権情報の移動先のマイクロプロセッサにより使用されるローカルメモリに、移動対象の論理ボリュームに関する第２ボリューム構成情報を共有メモリからコピーさせる。
【００２１】
本発明の各構成要素またはステップまたは手段は、コンピュータプログラムとして生成できる場合がある。そのようなコンピュータプログラムは、通信ネットワークまたは記録媒体を介して流通させることができる。さらに、本発明の観点は上記に明示されたもの以外に、種々組み合わせることもできる。そのような組合せも本発明の範囲に含まれる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態を示す概念図である。
【図２】記憶制御装置のブロック図である。
【図３】マイクロプロセッサパッケージの構成を模式的に示す図である。
【図４】通信ポートパッケージとマイクロプロセッサパッケージの構成を示す図である。
【図５】共有メモリの記憶内容とマイクロプロセッサパッケージ内のパッケージメモリの記憶内容との関係を示す図である。
【図６】共有メモリの別の記憶内容とマイクロプロセッサパッケージ内のパッケージメモリの別の記憶内容との関係を示す図である。
【図７】論理ボリュームの構成を管理するための情報を示す図である。
【図８】論理ボリュームを使用するための権限を管理するテーブルと、コマンドを振り分けるためのテーブルとを示す図である。
【図９】マイクロプロセッサの属性を管理するためのテーブルを示す図である。
【図１０】ジョブ管理を模式的に示す図である。
【図１１】リードコマンドを処理するフローチャートである。
【図１２】ライトコマンドを処理するフローチャートである。
【図１３】パッケージメモリ内のオーナ権管理テーブルを使用することができるか否かを確認するための処理を示すフローチャートである。
【図１４】マイクロプロセッサの属性を決定するための処理を示すフローチャートである。
【図１５】パッケージ内の各マイクロプロセッサの属性変化を示す図である。
【図１６】ボリューム構成情報を再配置させる処理の全体を示すフローチャートである。
【図１７】コピーペアを契機に先行オーナ権を移動させる処理を示すフローチャートである。
【図１８】移動元マイクロプロセッサパッケージの処理を示すフローチャートである。
【図１９】実オーナ権を移動させる処理を示すフローチャートである。
【図２０】移動先マイクロプロセッサパッケージの処理を示すフローチャートである。
【図２１】各マイクロプロセッサパッケージに障害が発生したか否かを調べるための処理を示すフローチャートである。
【図２２】正常なマイクロプロセッサパッケージが、障害で停止したマイクロプロセッサパッケージに代わって処理を担当するフローチャートである。
【図２３】肩代わりするマイクロプロセッサパッケージの優先順位を示す図である。
【図２４】肩代わりするマイクロプロセッサパッケージの優先順位を管理するためのテーブルを示す図である。
【図２５】図２４のテーブルを作成するための処理を示すフローチャートである。
【図２６】マイクロプロセッサパッケージの負荷増大を契機に、先行オーナ権を移動させる処理を示すフローチャートである。
【図２７】第２実施例に係り、移動元マイクロプロセッサパッケージがメインフレーム用のマイクロプロセッサパッケージである場合における、移動元マイクロプロセッサパッケージの処理を示すフローチャートである。
【図２８】移動先マイクロプロセッサパッケージがメインフレーム用のマイクロプロセッサパッケージである場合における、移動先マイクロプロセッサパッケージの処理を示すフローチャートである。
【符号の説明】
【００２３】
１：記憶制御装置
２：ホストコンピュータ
３：第１通信部
４：第２通信部
５：共有メモリ
６：マイクロプロセッサパッケージ
６Ａ：マイクロプロセッサ
６Ｂ：パッケージメモリ
Ｒ１：受信権情報
Ｒ２：実行権情報
７：スイッチ
８：記憶装置  
１０：記憶制御装置
１１０：通信ポートパッケージ
１２０：マイクロプロセッサパッケージ
１２１：マイクロプロセッサ
１２２：パッケージメモリ
１３０：メモリパッケージ
１３１：共有メモリ
１３２：キャッシュメモリ  
１４０：バックエンドパッケージ
１５１：記憶装置
１５２：論理ボリューム
Ｔ１０：Ｉ／Ｏ振り分けテーブル
Ｔ２０，Ｔ３０：ボリューム構成情報
Ｔ２１，Ｔ３１：オーナ権管理テーブル
【発明を実施するための最良の形態】
【００２４】
図１は、本発明の実施形態の概要を示す説明図である。図１に示す構成は、本発明の範囲を限定するものではなく、図１に示す構成以外の構成も本発明の範囲に含まれる。本実施形態では、以下に述べるように、記憶制御装置の作動を制御するために使用される管理用情報（ボリューム構成情報）を、各マイクロプロセッサのローカルメモリに記憶させる。さらに、本実施形態では、予め設定される所定の場合に、各ボリューム構成情報を、各場合に応じた位置に再配置させる。さらに、本実施形態では、コマンド発行元であるホストの種類に応じて、ボリューム構成情報を再配置させる処理を変える。
【００２５】
本実施形態に係る記憶制御装置１は、ホストコンピュータ（以下、「ホスト」と略記）２に接続されている。ホスト２としては、例えば、サーバコンピュータ、または、メインフレームコンピュータ等を挙げることができる。
【００２６】
図１は、記憶制御装置１の要部を示している。記憶制御装置１の詳細な構成は、図２で後述する。記憶制御装置１は、例えば、第１通信部３と、第２通信部４と、共有メモリ５と、複数のマイクロプロセッサパッケージ６（０），６（１）と、スイッチ７と、記憶装置８とを含む。なお、以下の説明では、特に区別する必要が無い場合、マイクロプロセッサパッケージ６（０），６（１）をマイクロプロセッサパッケージ６と呼ぶ。
【００２７】
第１通信部３は、ホスト２との通信を担当する制御回路である。第１通信部３は、スイッチ７を介して、第２通信部４と、共有メモリ５と、各マイクロプロセッサパッケージ６とに接続される。第１通信部３は、ホスト２から受信したコマンドを各マイクロプロセッサパッケージ６のいずれに送信するかを決定するために使用される、Ｉ／Ｏ振り分けテーブル（図４，図８参照）を有する。Ｉ／Ｏとは、Input/Outputの略である。
【００２８】
第１通信部３は、コマンド内の論理アドレスとＩ／Ｏ振り分けテーブルとに基づいて、そのコマンドを処理すべきマイクロプロセッサパッケージ６を決定する。第１通信部３は、そのコマンドを、決定されたマイクロプロセッサパッケージ６に送信する。さらに、第１通信部３は、マイクロプロセッサパッケージ６からの応答をホスト２に伝達する。
【００２９】
第２通信部４は、記憶装置８との通信を担当する制御回路である。第２通信部４は、スイッチ７を介して、第１通信部３と、共有メモリ４と、各マイクロプロセッサパッケージ６と
に接続される。図中では、一つの記憶装置８を示すが、実際には複数の記憶装置８が設けられる。記憶装置８の有する物理的記憶領域を用いて、論理的な記憶領域が生成される。その論理的な記憶領域は、論理ボリュームと呼ばれる（図２参照）。本実施形態では、論理ボリュームをＬＤＥＶ（Logical DEVice）と表示する場合がある。なお、一つの記憶装置８に一つまたは複数の論理ボリュームを設けることもできるし、または、複数の記憶装置８に一つまたは複数の論理ボリュームを設けることもできる。
【００３０】
記憶装置としては、例えば、ハードディスク装置、半導体メモリ装置、光ディスク装置、光磁気ディスク装置、磁気テープ装置等の、データを読み書き可能な種々の記憶装置を挙げることができる。ハードディスク装置を用いる場合、例えば、ＦＣ（Fibre Channel）ディスク、ＳＣＳＩ（Small Computer System Interface）ディスク、ＳＡＴＡディスク、ＡＴＡ（AT Attachment）ディスク、ＳＡＳ（Serial Attached SCSI）ディスク等を用いることができる。
【００３１】
また、例えば、フラッシュメモリ、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance RAM）、ＰＲＡＭ（Phase change RAM）等の記憶装置を用いることもできる。さらに、例えば、フラッシュメモリデバイスとハードディスクドライブのように、種類の異なる記憶装置を同一ストレージ装置内に混在させる構成でもよい。
【００３２】
共有メモリ５は、スイッチ７を介して、第１通信部３と、第２通信部４及び各マイクロプロセッサパッケージ６に接続される。共有メモリ５には、各回路３，４，６により使用される各種情報が記憶される。共有メモリ５の記憶内容は、図５，図６を用いて詳述する。
【００３３】
共有メモリ５には、少なくともボリューム構成情報とオーナ権管理テーブル（いずれも図５参照）とが記憶される。共有メモリ５に記憶される情報及びテーブルは、マスタ情報であり、例えば、それら情報及びテーブルが更新された場合、各回路３，４，６にコピーされている情報も更新される。
【００３４】
マイクロプロセッサパッケージ６は、記憶制御装置１の動作を制御する。各マイクロプロセッサパッケージ６は、スイッチ７を介して、第１通信部３と、第２通信部４と、共有メモリ５と、他方のマイクロプロセッサパッケージ６とに接続される。図１では、２つのマイクロプロセッサパッケージ６（０），６（１）を示すが、３個以上のマイクロプロセッサパッケージを設けることもできる。各マイクロプロセッサパッケージ６は、例えば、複数のマイクロプロセッサ６Ａと、パッケージメモリ６Ｂとを備える。
【００３５】
マイクロプロセッサ６Ａは、ホスト２から発行されるコマンドを処理する。処理結果は、第１通信部３を介してホスト２に返される。「マイクロプロセッサ毎に配置されるローカルメモリ」または「マイクロプロセッサパッケージ内のローカルメモリ」に該当するパッケージメモリ６Ｂは、例えば、「ボリューム構成情報」としてのＬＤＥＶ情報Ｔ１と、「使用権限情報」としての受信権情報Ｒ１及び実行権情報Ｒ２とを、記憶する。
【００３６】
マイクロプロセッサ６Ａの種類（属性）は、ホスト２からのコマンドを処理するための同期処理用プロセッサと、コマンド処理以外の別の処理を行うための非同期処理用プロセッサとに大別することができる。さらに、コマンド処理または別処理の両方を行うことができる混在型プロセッサという種類を設けてもよい。マイクロプロセッサ６Ａがいずれの属性を備えるかは、後述のプログラムで決定される。
【００３７】
同期処理用のマイクロプロセッサ６Ａは、ＬＤＥＶ情報Ｔ１を参照することにより、ホスト２からのコマンドを処理する。例えば、リードコマンドの場合、マイクロプロセッサ６Ａは、指定された論理ボリュームから指定されたデータを読み出して、そのデータをホスト２に送信させる。ライトコマンドの場合、マイクロプロセッサ６Ａは、指定された論理ボリュームにライトデータを書き込む。
【００３８】
受信権情報Ｒ１、実行権情報Ｒ２及びＬＤＥＶ情報Ｔ１の関係を説明する。受信権情報Ｒ１とは、コマンドを受領する権利を有することを示す情報である。実行権情報Ｒ２とは、コマンドを処理する権利を有することを示す情報である。ＬＤＥＶ情報Ｔ１は、マイクロプロセッサパッケージ６により管理される論理ボリュームの構成を管理する。ＬＤＥＶ情報Ｔ１は、実行権情報Ｒ２を有するマイクロプロセッサパッケージ６内のパッケージメモリ６Ｂに記憶される。通常の場合、受信権情報Ｒ１及び実行権情報Ｒ２は、同じマイクロプロセッサパッケージ６内のパッケージメモリ６Ｂに格納される。
【００３９】
マイクロプロセッサパッケージ６（０）が一方の論理ボリュームを管理している場合、マイクロプロセッサパッケージ６（１）は、一方の論理ボリュームについての受信権情報Ｒ１及び実行権情報Ｒ２を有する。従って、一方の論理ボリュームに関するＬＤＥＶ情報Ｔ１は、マイクロプロセッサパッケージ６（０）内のパッケージメモリ６Ｂに格納される。第１通信部３が、一方の論理ボリュームを処理対象とするコマンドを受信した場合、そのコマンドは、受信権情報Ｒ１を有するマイクロプロセッサパッケージ６（０）に転送される。実行権情報Ｒ２を有するマイクロプロセッサパッケージ６（０）は、一方の論理ボリュームを用いてコマンドを処理し、その処理結果をホスト２に返信する。
【００４０】
上記同様に、マイクロプロセッサパッケージ６（１）が他方の論理ボリュームを管理している場合、マイクロプロセッサパッケージ６（１）は、他方の論理ボリュームについての受信権情報Ｒ１及び実行権情報Ｒ２を有する。従って、他方の論理ボリュームに関するＬＤＥＶ情報Ｔ１は、マイクロプロセッサパッケージ６（１）内のパッケージメモリ６Ｂ内に記憶される。第１通信部３が、他方の論理ボリュームを処理対象とするコマンドを受信した場合、そのコマンドは、受信権情報Ｒ１を有するマイクロプロセッサパッケージ６（１）に転送される。実行権情報Ｒ２を有するマイクロプロセッサパッケージ６（１）は、他方の論理ボリュームを用いてコマンドを処理し、その処理結果をホスト２に返信する。
【００４１】
各マイクロプロセッサパッケージ６は、自分の担当する論理ボリュームに関するＬＤＥＶ情報Ｔ１をパッケージメモリ６Ｂに記憶させているため、共有メモリ５内のＬＤＥＶ情報（マスタ）にアクセスする必要が無い。従って、より高速にコマンドを処理できる。
【００４２】
各マイクロプロセッサパッケージ６の担当する論理ボリュームに変化が無い場合、つまり、管理対象の論理ボリュームが変わらない場合には、ＬＤＥＶ情報Ｔ１を移動させる必要が無い。しかし、所定の場合には、ＬＤＥＶ情報Ｔ１を別のマイクロプロセッサパッケージ内に移動させる必要がある。
【００４３】
例えば、コピーペアを形成する場合、コピー元の論理ボリューム（以下、コピー元ボリューム）及びコピー先の論理ボリューム（以下、コピー先ボリューム）は、処理時間を短縮するために、同一のマイクロプロセッサパッケージ６で担当されるのが好ましい。従って、コピーペアを形成する場合には、コピー元ボリュームのＬＤＥＶ情報Ｔ１を、コピー先ボリュームを担当するマイクロプロセッサパッケージ６内のパッケージメモリ６Ｂに移動させるか、または、コピー先ボリュームのＬＤＥＶ情報Ｔ１を、コピー元ボリュームを担当するマイクロプロセッサパッケージ６内のパッケージ６Ｂに移動させる必要がある。ここで、ＬＤＥＶ情報Ｔ１を移動させるとは、移動元から移動先にＬＤＥＶ情報Ｔ１をコピーさせ、次に、移動元のＬＤＥＶ情報Ｔ１を消去させることを意味する。
【００４４】
他の例として、マイクロプロセッサパッケージ６が障害で停止する場合を挙げることができる。マイクロプロセッサパッケージ６内の各マイクロプロセッサ６Ａが何らかの原因によって停止すると、そのマイクロプロセッサパッケージ６は閉塞処理される。この場合、閉塞されたマイクロプロセッサパッケージ６が担当していた論理ボリュームは、いずれかの正常なマイクロプロセッサパッケージ６が代わって担当する必要がある。
【００４５】
従って、障害発生時には、障害の発生したマイクロプロセッサパッケージ６に代わって処理を実行するマイクロプロセッサパッケージ６が、障害の発生したマイクロプロセッサパッケージ６で管理されていた論理ボリュームのＬＤＥＶ情報Ｔ１を取得する必要がある。そこで、共有メモリ５内のＬＤＥＶ情報Ｔ１を、障害の発生したマイクロプロセッサパッケージ６に代わって処理を行う正常なマイクロプロセッサパッケージ６のパッケージメモリ６Ｂにコピーさせる。なお、障害の発生したマイクロプロセッサパッケージ６に代わって処理を行う正常なマイクロプロセッサパッケージ６を、肩代わりするマイクロプロセッサパッケージ６と呼ぶ場合がある。
【００４６】
さらに、別の例として、各マイクロプロセッサパッケージ６間で負荷を分散させる場合を挙げることができる。例えば、マイクロプロセッサパッケージ６（０）が、第１論理ボリュームと第２論理ボリュームとを担当しており、マイクロプロセッサパッケージ６（１）が第３論理ボリュームと第４論理ボリュームとを担当しているとする。第１論理ボリューム及び第２論理ボリュームへのアクセス頻度及びアクセスサイズが大きく、第３論理ボリューム及び第４論理ボリュームへのアクセス頻度及びアクセスサイズが小さいとする。
【００４７】
この場合、第１論理ボリュームと第３論理ボリュームまたは第４論理ボリュームのいずれか一つとを交換するか、あるいは、第２論理ボリュームと第３論理ボリュームまたは第４論理ボリュームのいずれか一つを交換する。これにより、マイクロプロセッサパッケージ６（０）の負荷とマイクロプロセッサパッケージ６（１）の負荷との差を少なくできる。このように、負荷分散のために、各マイクロプロセッサパッケージ６が管理する論理ボリュームを、各マイクロプロセッサパッケージ６間で移動させる必要がある。
【００４８】
上述の理由によって、ＬＤＥＶ情報Ｔ１を移動させる場合、まず最初に、受信権情報Ｒ１を移動先のマイクロプロセッサパッケージ６に移し、次に、実行権情報Ｒ２を移動先のマイクロプロセッサパッケージ６に移す。
【００４９】
具体的には、例えば、第１通信部３内のＩ／Ｏ振り分けテーブルにおいて、受信権情報Ｒ１を移動先のマイクロプロセッサパッケージ６に対応付ける。図１（２）に示すように、その後にホスト２から発行されるコマンドは、第１通信部３によって、移動先のマイクロプロセッサパッケージ６に転送される。
【００５０】
しかし、その時点では、移動先のマイクロプロセッサパッケージ６は、実行権情報Ｒ２を有しておらず、ＬＤＥＶ情報Ｔ１も取得していないので、第１通信部３から受信したコマンドを処理することはできない。そこで、移動先のマイクロプロセッサパッケージ６は、受信したコマンドをキューに蓄積し、実行権情報Ｒ２を取得できるまで待機する。
【００５１】
移動元のマイクロプロセッサパッケージ６では、移動対象の論理ボリュームに関する、処理途中のコマンドが無くなったか否かを判定する。処理途中のコマンドが全て無くなった場合、移動元のマイクロプロセッサパッケージ６から移動先のマイクロプロセッサパッケージ６に、移動対象の論理ボリュームに関する実行権情報Ｒ２が移される。
【００５２】
移動先のマイクロプロセッサパッケージ６は、実行権情報Ｒ２を取得すると、共有メモリ５からＬＤＥＶ情報Ｔ１を読み出して、移動先マイクロプロセッサパッケージ６内のパッケージメモリ６Ｂに記憶させる。これにより、移動先のマイクロプロセッサパッケージ６は、移動対象の論理ボリュームに関するコマンドを処理することができる。
【００５３】
詳細は後述するが、ホスト２の種類に応じて、移動元マイクロプロセッサパッケージ６内に残っている未処理のコマンドの取り扱い方法を変えることもできる。いわゆるオープン系のホスト２の場合、受信権情報Ｒ１が移動先マイクロプロセッサパッケージ６に移動された後において、移動元マイクロプロセッサパッケージ６内のキューに残っている未処理のコマンドは、移動先マイクロプロセッサパッケージ６に転送される。処理中のコマンドは、移動元マイクロプロセッサパッケージ６により処理させ、未処理のコマンドのみを移動先マイクロプロセッサパッケージ６に転送する。
【００５４】
これに対し、ホスト２がメインフレームの場合、ホスト２から発行されるコマンドのサイズが大きい。そこで、移動元マイクロプロセッサパッケージ６が受信権情報Ｒ１を失った場合であっても、実行権情報Ｒ２を有している限りは、移動元マイクロプロセッサパッケージ６は、キューに残っているコマンド（ＣＣＷ（Channel Command Word）チェーン）を処理する。
【００５５】
移動元マイクロプロセッサパッケージ６内の処理中コマンドが全て無くならないと、実行権情報Ｒ２を移動先マイクロプロセッサパッケージ６に移動させることができない。移動元マイクロプロセッサパッケージ６が、メインフレームに特有の長いコマンドチェーンを長時間に亘って処理すると、論理ボリュームの移動完了に要する時間が長くなる。
【００５６】
そこで、実行権情報Ｒ２を強制的に移動させるための所定時間を予め設定する。その所定時間が経過した場合、移動元マイクロプロセッサパッケージ６は、ホスト２に対して、コマンドの再発行を要求する。つまり、移動元マイクロプロセッサパッケージ６は、メインフレームであるホスト２に、リトライを要求する。これにより、ホスト２は、コマンドを再発行する。再発行されたコマンドは、第１通信部３によって移動先マイクロプロセッサパッケージ６に転送される。
【００５７】
このように構成される本実施形態によれば、所定の場合に、各マイクロプロセッサパッケージ６内のパッケージメモリ６Ｂに記憶されているボリューム構成情報を、適切な場所に再配置させることができ、使い勝手及び信頼性が向上する。
【００５８】
本実施形態によれば、ホスト２からのアクセスを止めることなく、ボリューム構成情報を再配置させることができ、使い勝手が向上する。
【００５９】
さらに、本実施形態によれば、オープンホストとメインフレームの両方に適した方法で、ボリューム構成情報を再配置させることができ、オープン系ホスト２とメインフレームとが混在する情報処理システムに特に有効である。以下、本実施形態についてさらに詳細に説明する。
【実施例１】
【００６０】
図２は、記憶制御装置１０を含む情報処理システムの全体を示す。先に図１との対応関係を説明する。記憶制御装置１０は記憶制御装置１に、ホスト３０はホスト２に、通信ポートパッケージ（ＰＯＲＴ−ＰＫ）１１０は第１通信部３に、マイクロプロセッサパッケージ１２０はマイクロプロセッサパッケージ６に、共有メモリ１３１は共有メモリ５に、バックエンドパッケージ（ＢＥＰＫ）１４０は第２通信部４に、記憶装置１５１は記憶装置８に、スイッチ１６０はスイッチ７に、対応する。本実施例では、受信権Ｒ１を先行オーナ権と呼び、実行権Ｒ２を実行オーナ権と呼ぶ。
【００６１】
記憶制御装置１０は、例えば、通信ポートパッケージ１１０と、マイクロプロセッサパッケージ１２０と、メモリパッケージ１３０（図中、メモリＰＫ１３０）と、バックエンドパッケージ１４０と、記憶装置搭載部１５０と、スイッチ１６０と、サービスプロセッサ１７０（図中、ＳＶＰ１７０）と、電源装置１８０とを備える。
【００６２】
通信ポートパッケージ１１０は、ホスト３０との通信を担当する制御基板である。通信ポートパッケージ１１０は、複数の通信ポート１１１と、マイクロプロセッサ１１２と、ローカルメモリ１１３とを備える。マイクロプロセッサ１１２は、通信ポートパッケージ１１０の動作を制御する。ローカルメモリ１１３には、後述のＩ／Ｏ振り分けテーブルＴ１０が格納される。通信ポート１１１は、通信ネットワーク４１を介して所定のホスト３０に接続される。
【００６３】
図２中左側に示す通信ポートパッケージ１１０（０）は、いわゆるオープン系のホストに対応している。図２中右側に示す通信ポートパッケージ１１０（１）は、メインフレームに対応している。なお、一つの通信ポートパッケージ１１０が、オープン系ホスト及びメインフレームの両方に対応可能な構成としてもよい。通信ネットワーク４１としては、例えば、ＦＣ＿ＳＡＮ（Fibre Channel_Storage Area Network）または／及びＩＰ＿ＳＡＮ（Internet Protocol_SAN）を用いることができる。
【００６４】
ＦＣ＿ＳＡＮの場合、ホスト３０と通信ポートパッケージ１１０とは、ファイバチャネルプロトコルに従ってデータ通信を行う。ホスト３０がメインフレームの場合は、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従って、データ通信が行われる。ＩＰ＿ＳＡＮの場合、ホスト３０と通信ポートパッケージ１１０とは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）等のプロトコルに従って、データ通信を行う。
【００６５】
バックエンドパッケージ１４０は、記憶装置１５１との通信を担当するための制御基板である。バックエンドパッケージ１４０は、複数の通信ポート１４１と、マイクロプロセッサ１４２と、ローカルメモリ１４３とを備える。マイクロプロセッサ１４２は、バックエンドパッケージ１４０の動作を制御する。ローカルメモリ１４３には、マイクロプロセッサ１４２により使用される管理用データ等が格納される。各通信ポート１４１は、各記憶装置１５１に接続されている。
【００６６】
メモリパッケージ１３０は、共有メモリ領域１３１と、キャッシュメモリ領域１３２とを備える。共有メモリ領域１３１には、例えば、後述する管理用の各種情報が記憶される。キャッシュメモリ領域１３２には、例えば、ユーザデータ等が記憶される。以下、共有メモリ領域１３１を共有メモリ１３１と呼び、キャッシュメモリ領域１３２をキャッシュメモリ１３２と呼ぶ。説明の便宜上、本実施例では、キャッシュ管理テーブルＴ３２（図６参照）を共有メモリ１３１に記憶させる場合を示す。これに代えて、キャッシュ管理テーブルＴ３２をキャッシュメモリ１３２に格納させる構成でもよい。
【００６７】
マイクロプロセッサパッケージ１２０は、記憶制御装置１０の動作を制御するための制御基板である。マイクロプロセッサパッケージ１２０は、マイクロプロセッサ１２１と、パッケージメモリ１２２とを備える。
【００６８】
マイクロプロセッサパッケージ１２０は、ホスト３０から発行されたコマンドを実行し、その実行結果をホスト３０に送信する。通信ポートパッケージ１１０がリードコマンドを受信した場合、マイクロプロセッサパッケージ１２０は、要求されたデータをキャッシュメモリ１３２または記憶装置１５１から取得し、ホスト３０に送信させる。
【００６９】
通信ポートパッケージ１１０がライトコマンドを受信した場合、マイクロプロセッサパッケージ１２０は、ライトデータをキャッシュメモリ１３２に書き込み、ホスト３０に処理完了を通知する。キャッシュメモリ１３２に書き込まれたデータは、その後、記憶装置１５１に書き込まれる。マイクロプロセッサパッケージ１２０の構成については、図３でさらに詳述する。
【００７０】
記憶装置１５１は、例えば、ハードディスクドライブまたはフラッシュメモリデバイス等の記憶装置から構成される。複数の記憶装置１５１を一つのグループ１５０にまとめることができる。このグループ１５０は、例えば、ＲＡＩＤグループまたはパリティグループと呼ばれる。そして、グループ化された記憶領域には、一つまたは複数の論理ボリューム１５２が形成される。
【００７１】
スイッチ１６０は、各パッケージ１１０，１２０，１３０，１４０を接続するための回路である。通信ポートパッケージ１１０、バックエンドパッケージ１４０、マイクロプロセッサパッケージ１３０は、スイッチ１６０を介して、メモリパッケージ１３０にアクセスすることができる。
【００７２】
サービスプロセッサ１７０は、記憶制御装置１０内の各種情報を収集して管理端末２０に提供したり、管理端末２０から入力された設定値等を共有メモリ１３１に記憶させたりするための制御回路である。サービスプロセッサ１７０は、例えば、ＬＡＮ（Local Area Network）等の別の通信ネットワーク４２を介して、管理端末２０に接続されている。
【００７３】
電源装置１８０は、電力を消費する各回路１１０〜１７０に所定の電力を供給する装置である。電源装置１８０は、例えば、記憶制御装置１０の外部から入力される交流電源を直流電源に変換する回路と、その直流電源をさらに複数の直流電源に変換する回路と、バッテリ装置とを備えることができる。
【００７４】
図３は、マイクロプロセッサパッケージ１２０の構成を模式的に示す図である。マイクロプロセッサパッケージ１２０は、例えば４個のマイクロプロセッサ１２１と、一つのローカルメモリ１２３とを備える。
【００７５】
ローカルメモリ１２３内は、複数の専用領域１２４（０）〜１２４（３）と、一つの共同使用領域１２２とに区切られている。専用領域１２４（０）〜１２４（３）は、対応するマイクロプロセッサ１２１（＃０）〜１２１（＃３）に割り当てられる。例えば、専用領域１２４（０）は、マイクロプロセッサ１２１（＃０）だけが使用できる。専用領域１２４（１）は、マイクロプロセッサ１２１（＃１）のみが使用できる。同様に、専用領域１２４（２）は、マイクロプロセッサ１２１（＃２）のみが使用でき、専用領域１２４（３）は、マイクロプロセッサ１２１（＃３）だけが使用できる。
【００７６】
共同使用領域１２２は、各マイクロプロセッサ１２１（＃０）〜１２１（＃３）のいずれもが使用できる。同一マイクロプロセッサパッケージ１２０内の各マイクロプロセッサ１２１（＃０）〜１２１（＃３）によって共同使用される領域１２２を、本実施例では、パッケージメモリ１２２と呼ぶ。
【００７７】
パッケージメモリ１２２には、例えば、オープン系ホスト用のコマンドキューＱ２０と、メインフレーム用のコマンドキューＱ２１と、ジョブキューＱ２３と、ボリューム構成情報Ｔ２０と、オーナ権管理テーブルＴ２１と、キャッシュ管理テーブルＴ２２と、マイクロプロセッサ属性管理テーブルＴ２３と、が記憶される。
【００７８】
オープン系ホスト用のコマンドキューＱ２０は、オープン系ホストからのコマンドを蓄積する。メインフレーム用のコマンドキューＱ２１には、メインフレームからのコマンドが蓄積される。ジョブキューＱ２３は、論理ボリュームを使用する各ジョブを管理する。
【００７９】
「第２ボリューム構成情報」としてのボリューム構成情報Ｔ２０は、マイクロプロセッサパッケージ１２０で管理している論理ボリューム１５２の構成を示す情報である。その詳細は後述する。「第２使用権限情報」としてのオーナ権管理テーブルＴ２１は、記憶制御装置１０内の各論理ボリューム１５２について、どのマイクロプロセッサパッケージ１２０が使用する権利を有しているのかを管理する。キャッシュ管理テーブルＴ２２は、キャッシュメモリ１３３に記憶されているデータを管理する。マイクロプロセッサ属性管理テーブルＴ２３は、各マイクロプロセッサ１２１の属性を管理する。その詳細は後述する。  
【００８０】
図４は、通信ポートパッケージ１１０とマイクロプロセッサパッケージ１２０との関係を示す。通信ポートパッケージ１１０のローカルメモリ１１３には、出力管理キューＱ１０と、Ｉ／Ｏ振り分けテーブルＴ１０とが記憶されている。出力管理キューＱ１０は、マイクロプロセッサパッケージ１２０から受信した応答を管理するキューである。応答とは、ホスト３０から発行されたコマンドの処理結果等を示す情報である。
【００８１】
図５は、共有メモリ１３１と各パッケージメモリ１２２との関係を示す。共有メモリ１３１には、「第１使用権限情報」としてのオーナ権管理テーブルＴ３１が記憶される。各パッケージメモリ１２２には、オーナ権管理テーブルＴ３１のコピーである、「第２使用権限情報」としてのオーナ権管理テーブルＴ２１が記憶される。
【００８２】
共有メモリ１３１には、「第１ボリューム構成情報」としてのボリューム構成情報Ｔ３０も記憶されている。各パッケージメモリ１２２には、「第２ボリューム構成情報」としてのボリューム構成情報Ｔ２０が記憶されている。パッケージメモリ１２２内のボリューム構成情報Ｔ２０は、共有メモリ１３２内のボリューム構成情報Ｔ３０の一部分である。
【００８３】
つまり、ボリューム構成情報Ｔ３０のうち、マイクロプロセッサパッケージ１２０が管理している論理ボリューム１５２に関する情報のみが、パッケージメモリ１２２内のボリューム構成情報Ｔ２０としてコピーされる。図５の例では、パッケージメモリ１２２（０）には、２つの論理ボリューム（ＬＤＥＶ１，ＬＤＥＶ２）に関するボリューム構成情報Ｔ２０が記憶されており、パッケージメモリ１２２（１）には、別の２つの論理ボリューム（ＬＤＥＶ３，ＬＤＥＶ４）に関するボリューム構成情報Ｔ２０が記憶されている。
【００８４】
実行オーナ権は、論理ボリューム１５２を用いてコマンドを処理する権限を示す。従って、その論理ボリューム１５２の実行オーナ権を有するマイクロプロセッサパッケージ１２０が、その論理ボリューム１５２に関するボリューム構成情報Ｔ２０を有する。その論理ボリューム１５２を担当するマイクロプロセッサパッケージ１２０が変更される場合、実行オーナ権及びボリューム構成情報Ｔ２０の格納先も変更される。なお、実行オーナ権の移動に先立って、先行オーナ権が移動される。論理ボリューム１５２の移動が完了した後では、実行オーナ権と先行オーナ権及びボリューム構成情報Ｔ２０は、同一のパッケージメモリ１２２内に格納される。
【００８５】
図６は、共有メモリ１３１と各パッケージメモリ１２２との別の関係を示す。共有メモリ１３１には、障害発生時に肩代わりするマイクロプロセッサパッケージ１２０を決定するための管理テーブルＴ３３が記憶されている。そのテーブルＴ３３の作成方法及び使用方法は
後述する。
【００８６】
共有メモリ１３１には、キャッシュ管理テーブルＴ３２も記憶されている。各パッケージメモリ１２２には、キャッシュ管理テーブルＴ３２の一部分である、別のキャッシュ管理テーブルＴ２２が記憶されている。ボリューム構成情報Ｔ２０について述べたと同様に、各パッケージメモリ１２２には、マイクロプロセッサパッケージ１２０が管理している論理ボリューム１５２に関するキャッシュ情報のみが記憶される。
【００８７】
図５，図６で述べたように、共有メモリ１３１には、ボリューム構成情報Ｔ３０と、オーナ権管理テーブルＴ３１と、肩代わりマイクロプロセッサパッケージ管理テーブルＴ３３と、キャッシュ管理テーブルＴ３２とが記憶されている。
【００８８】
図７は、ボリューム構成情報Ｔ３０（Ｔ２０）の構成を示す。共有メモリ１３１内のボリューム構成情報Ｔ３０と各パッケージメモリ１２２内のボリューム構成情報Ｔ２０とは、基本的に同一である。そこで、図７に示すテーブルの符号をＴ３０（Ｔ２０）として、その構成を説明する。ボリューム構成情報Ｔ３０（Ｔ２０）は、例えば、ＬＤＥＶ番号Ｃ３００と、ＲＡＩＤグループ番号Ｃ３０１と、ＲＡＩＤ構成Ｃ３０２と、サイズＣ３０３と、タイプＣ３０４とを対応付けて管理する。
【００８９】
ＬＤＥＶ番号Ｃ３００は、記憶制御装置１０内の各論理ボリューム１５２を識別するための識別情報である。ＲＡＩＤグループ番号Ｃ３０１は、論理ボリューム１５２が設けられているＲＡＩＤグループを特定するための識別情報である。ＲＡＩＤ構成Ｃ３０２は、ＲＡＩＤグループの構成を示す情報である。ＲＡＩＤグループの構成を示す情報としては、ＲＡＩＤレベル（例えば、ＲＡＩＤ１，ＲＡＩＤ５，ＲＡＩＤ６等）及びドライブ構成（例えば、３Ｄ＋１Ｐ，６Ｄ＋２Ｐ等）を挙げることができる。ドライブ構成中の「Ｄ」とは、データを格納するドライブを示し、「Ｐ」とはパリティを格納するドライブを示す。
【００９０】
サイズＣ３０３は、論理ボリューム１５２の記憶容量を示す情報である。タイプＣ３０４は、論理ボリューム１５２を構成する記憶装置１５１の種類を示す情報である。図７中の「ＳＡＴＡ」及び「ＳＡＳ」はハードディスクドライブの種類を示し、「ＦＭ」はフラッシュメモリデバイスであることを示す。なお、図７に示す項目Ｃ３００〜Ｃ３０４以外の他の項目を管理する構成としてもよい。
【００９１】
図８は、オーナ権管理テーブルＴ３１（Ｔ２０）及びＩ／Ｏ振り分けテーブルＴ１０の構成を示す。上述のように、共有メモリ１３１内のオーナ権管理テーブルＴ３１と、各パッケージメモリ１２２内のオーナ権管理テーブルＴ２１とは、その記憶内容は異なるが、基本的構造は同じである。そこで、図８に示すテーブルの符号をＴ３１（Ｔ２１）として、その構成を説明する。
【００９２】
オーナ権管理テーブルＴ３１（Ｔ２１）は、例えば、ＬＤＥＶ番号Ｃ３１０と、実オーナ権を有するマイクロプロセッサパッケージ１２０の番号Ｃ３１１と、先行オーナ権を有するマイクロプロセッサパッケージ１２０の番号Ｃ３１２とを対応付けて管理する。
【００９３】
実オーナ権は、ＬＤＥＶ番号Ｃ３１０で特定される論理ボリューム１５２を用いてコマンドを処理することができる権限を示す。先行オーナ権は、ＬＤＥＶ番号Ｃ３１０で特定される論理ボリューム１５２を処理対象とするコマンドを受領できる権限を示す。
【００９４】
通常の場合、ある論理ボリューム１５２の実オーナ権を有するマイクロプロセッサパッケージ１２０と、その論理ボリューム１５２の先行オーナ権を有するマイクロプロセッサパッケージ１２０とは、同一である。しかし、後述する所定の場合には、一時的に、同一の論理ボリューム１５２に関する先行オーナ権と実オーナ権とが、それぞれ別々のマイクロプロセッサパッケージ１２０に存在する。
【００９５】
図８に示す例では、マイクロプロセッサパッケージ１２０（＃０）は、２つの論理ボリューム１５２（ＬＤＥＶ＃１００１，ＬＤＥＶ＃１００３）について、実オーナ権及び先行オーナ権を有する。他の論理ボリューム１５２（ＬＤＥＶ＃１００２）の実オーナ権及び先行オーナ権は、マイクロプロセッサパッケージ１２０（＃１）が有している。
【００９６】
図８の下側には、Ｉ／Ｏ振り分けテーブルＴ１０が示されている。上述のように、Ｉ／Ｏ振り分けテーブルＴ１０は、通信ポートパッケージ１１０のローカルメモリ１１３に記憶されており、ホスト３０から受信したコマンドの振り分け先（転送先）を決定するために用いられる。
【００９７】
Ｉ／Ｏ振り分けテーブルＴ１０は、例えば、ＬＤＥＶ番号Ｃ１００と、先行オーナ権を有するマイクロプロセッサパッケージ１２０の番号Ｃ１０１とを対応付けて管理する。通信ポートパッケージ１１０のマイクロプロセッサ１１２は、通信ポート１１１で受信されたコマンドから論理ボリューム１５２の番号（ＬＤＥＶ番号）を取り出し、そのＬＤＥＶ番号でＩ／Ｏ振り分けテーブルＴ１０を検索する。これにより、マイクロプロセッサ１１２は、そのコマンドを転送すべきマイクロプロセッサパッケージ１２０を特定し、その特定されたマイクロプロセッサパッケージ１２０にコマンドを転送する。
【００９８】
図９は、マイクロプロセッサ１２１の属性を管理するためのテーブルＴ２３を示す。管理テーブルＴ２３は、各マイクロプロセッサパッケージ１２０毎に用意される。管理テーブルＴ２３は、例えば、マイクロプロセッサ番号Ｃ２３０と、属性Ｃ２３１とを対応付けて管理する。
【００９９】
マイクロプロセッサ番号Ｃ２３０は、同一マイクロプロセッサパッケージ１２０内の各マイクロプロセッサ１２１を識別するための情報である。属性Ｃ２３１は、各マイクロプロセッサ１２１の使われ方を示す情報である。属性Ｃ２３１の種類としては、例えば、「同期処理」、「非同期処理」、「混在」の３つを挙げることができる。
【０１００】
「同期処理」属性は、ホスト３０から発行されるコマンドを処理するためのマイクロプロセッサ１２１であることを示す属性であり、第１属性と呼び変えることもできる。同期処理属性を有するマイクロプロセッサ１２１は、「第１マイクロプロセッサ」に該当する。
【０１０１】
「非同期処理」属性は、コマンド処理とは直接関係しない別の処理を行うためのマイクロプロセッサ１２１であることを示す属性である。非同期処理属性は、第２属性と呼び変えることもできる。非同期処理属性を有するマイクロプロセッサ１２１は、「第２マイクロプロセッサ」に該当する。
【０１０２】
コマンド処理と直接関係しない別処理としては、例えば、本実施例の一つの特徴であるボリューム構成情報を再配置する処理、デステージ処理、障害の有無を診断する処理等を挙げることができる。
【０１０３】
「混在」属性は、コマンド処理も別処理も両方行うことのできるマイクロプロセッサ１２１であることを示す属性である。混在属性は、第３属性と呼ぶこともできる。混在属性を有するマイクロプロセッサ１２１は、「第３マイクロプロセッサ」に該当する。
【０１０４】
各マイクロプロセッサパッケージ１２０内には、同期処理属性のマイクロプロセッサ１２１が少なくとも一つ以上存在する。如何なる時にもホスト３０からのコマンドを処理できるようにするためである。本実施例では、マイクロプロセッサパッケージ１２０の管理下にある論理ボリューム１５２へのアクセスが増加するにつれて、同期処理属性を有するマイクロプロセッサ１２１の数が次第に増加するよう、制御される。アクセスサイズ及びアクセス頻度の増大に応じて、コマンド処理を行うことのできるマイクロプロセッサ１２１を増加させることにより、応答性能の低下を防止する。
【０１０５】
混在属性は、マイクロプロセッサパッケージ１２０が高負荷状態になった場合でも、コマンド処理以外の別処理を行うことができるように、いずれか一つまたは複数のマイクロプロセッサ１２１に設定される。マイクロプロセッサ属性の変化については、図１４，図１５で後述する。
【０１０６】
図１０は、ジョブ処理の管理を模式的に示す。コマンド処理は、ジョブと呼ばれる処理単位で実施される。ボリューム構成情報Ｔ２０を使用する必要のあるジョブは、ボリューム構成情報Ｔ２０にアクセスする前に、ボリューム構成情報Ｔ２０の使用を宣言して確保しておき、処理を完了した後でボリューム構成情報Ｔ２０を解放する。
【０１０７】
マイクロプロセッサパッケージ１２０のパッケージメモリ１２２には、そのマイクロプロセッサパッケージ１２０が実オーナ権を有する各論理ボリューム１５２毎に、ジョブキューＱ２３が設けられる。つまり、マイクロプロセッサパッケージ１２０の管理下にある各論理ボリューム１５２のそれぞれについて、専用のジョブキューＱ２３が予め用意される。
【０１０８】
リードコマンドまたはライトコマンドのようなコマンド処理を行うジョブは、処理対象の論理ボリューム１５２に対応するジョブキューＱ２３に、自分を他のジョブと識別するためのジョブ番号をエンキューする。これにより、そのジョブは、処理対象の論理ボリューム１５２を確保する。
【０１０９】
ジョブは、ボリューム構成情報Ｔ２０及び論理ボリューム１５２を用いて、コマンドを処理する。ジョブは、コマンド処理を完了した後で、ジョブキューＱ２３から自分のジョブ番号をデキューする。
【０１１０】
図１０に示す例では、ある論理ボリューム１５２（＃０１００）に、２つのジョブ（＃１，＃５）が接続されており、別の論理ボリューム１５２（＃０１０５）には、一つのジョブ（＃３）が接続されている。つまり、これらの論理ボリューム１５２（＃０１００，＃０１０５）は、コマンドの処理のために使用されている。さらに別の論理ボリューム１５２（＃０１０２）は、どのジョブからも確保されていない。つまり、その論理ボリューム１５２（＃０１０２）は、今現在使用されていない。
【０１１１】
ジョブによって確保されているか否かを問わずに、論理ボリューム１５２の先行オーナ権を先に移動させることはできる。実オーナ権は、その論理ボリューム１５２を使用するジョブが一つも無い状態で、移動させる。なお、後述するように、メインフレームからのコマンドを処理する場合には、所定時間を経過したときには、たとえコマンド処理の途中であっても、実オーナ権を移動させる。以下、オープン系ホストからのコマンドを処理する場合を中心に説明する。
【０１１２】
図１１は、リード処理を示すフローチャートである。ホスト３０から発行されるリードコマンドは、通信ポートパッケージ１１０により受信される（Ｓ１０）。通信ポートパッケージ１１０のマイクロプロセッサ１１２は、Ｉ／Ｏ振り分けテーブルＴ１０を参照して、そのリードコマンドの転送先を決定する。マイクロプロセッサ１１２は、決定されたマイクロプロセッサパッケージ１２０に、そのリードコマンドを転送する（Ｓ１１）。所定の転送先にコマンドを転送することを、本実施例では、「コマンドを振り分ける。」と表現する場合がある。
【０１１３】
通信ポートパッケージ１１０から送出されたリードコマンドは、スイッチ１６０を介して、所定のマイクロプロセッサパッケージ１２０に到着する。そのリードコマンドは、コマンドキューＱ２０にエンキューされる（Ｓ１２）。
【０１１４】
リードコマンドを受領したマイクロプロセッサパッケージ１２０内の４個のマイクロプロセッサ１２１のうち、コマンド処理を担当するマイクロプロセッサ１２１（同期処理属性を有するマイクロプロセッサ、または混在属性を有するマイクロプロセッサ）は、コマンドキューＱ２０を周期的に確認する（Ｓ１３）。マイクロプロセッサ１２１は、コマンドキューＱ２０内に未処理のリードコマンドが有ることを発見すると、そのリードコマンドを解析する（Ｓ１４）。
【０１１５】
なお、オープン系ホストからのリードコマンドの場合、リードコマンドは、そのマイクロプロセッサ１２１の専用領域１２４に転送されてから、解析される。これに対し、メインフレームからのリードコマンドの場合、そのリードコマンドはパッケージメモリ１２２に置かれたままの状態で解析される。メインフレームの場合、複数のコマンドがチェーン状に繋がっており、コマンドサイズが大きいめである。
【０１１６】
マイクロプロセッサ１２１は、パッケージメモリ１２２内のボリューム構成情報Ｔ２０を参照する（Ｓ１５）。続いて、マイクロプロセッサ１２１は、パッケージメモリ１２２内のキャッシュ管理テーブルＴ２２を参照し、キャッシュヒットまたはキャッシュミスのいずれであるかを判定する（Ｓ１６）。
【０１１７】
キャッシュヒットとは、リードコマンドで要求されているデータがキャッシュメモリ１３２に格納されていることを意味する。以下、リードコマンドで要求されているデータを、リードデータと呼ぶ。キャッシュミスとは、リードデータがキャッシュメモリ１３２上に存在しないことを意味する。キャッシュミスであると判定された場合、リードデータは、リードコマンドで指定された論理ボリューム１５２内から読み出されて、キャッシュメモリ１３２に格納される。
【０１１８】
マイクロプロセッサ１２１は、通信ポートパッケージ１１０に、リードデータをキャッシュメモリ１３２から読み出してホスト３０に送信するように、指示する（Ｓ１７）。通信ポートパッケージ１１０のマイクロプロセッサ１１２は、キャッシュメモリ１３２から読み出したリードデータを、ホスト３０に送信する（Ｓ１８）。
【０１１９】
リードデータの送信が完了すると、通信ポートパッケージ１１０のマイクロプロセッサ１１３は、リードデータの転送が完了した旨の通知を受領する。マイクロプロセッサ１１３は、その通知をマイクロプロセッサパッケージ１２０に転送する（Ｓ１９）。その通知は、パッケージメモリ１２２内のコマンドキューＱ２０に登録される（Ｓ２０）。
【０１２０】
マイクロプロセッサ１２１は、コマンドキューＱ２０をチェックして（Ｓ２１）、転送完了通知を発見し、その通知を専用領域１２４にコピーする。マイクロプロセッサ１２１は、その通知により、リードデータの転送が正常に終了したことを確認する。マイクロプロセッサ１２１は、通信ポートパッケージ１１０に、「ＧＯＯＤ」を送信する（Ｓ２２）。なお、Ｓ１３〜Ｓ１７までを実行したマイクロプロセッサ１２１と、Ｓ２１，Ｓ２２を実行したマイクロプロセッサ１２１とは、異なる場合がある。その場合、Ｓ２１，Ｓ２２を実行したマイクロプロセッサ１２１は、Ｓ１３〜Ｓ１７を実行したマイクロプロセッサ１２１に、リードコマンドの処理が完了した旨を通知する。
【０１２１】
Ｓ１３〜Ｓ１７，Ｓ２１，Ｓ２２の一連の処理は、ジョブと呼ばれる単位で実行される。ジョブは多重で実行することができる。つまり、複数のリードコマンドを同時に処理することができる。後述するライトコマンドの場合も同様に、ライトコマンドを処理するためのジョブを複数実行させることができる。
【０１２２】
共有メモリ１３１内のボリューム構成情報Ｔ３０が更新されていない場合、パッケージメモリ１２２内のボリューム構成情報Ｔ２０を使用することができる。従って、図１１に示す処理では、マイクロプロセッサ１２１は、共有メモリ１３１にアクセスせずに、リードコマンドを処理する。
【０１２３】
図１２は、ライト処理を示すフローチャートである。通信ポートパッケージ１１０は、ホスト３０からライトコマンドを受信する（Ｓ３０）。通信ポートパッケージ１１は、Ｉ／Ｏ振り分けテーブルＴ１０を参照して、そのライトコマンドを転送すべきマイクロプロセッサパッケージ１２０を決定し、そのマイクロプロセッサパッケージ１２０にライトコマンドを転送する（Ｓ３１）。
【０１２４】
マイクロプロセッサパッケージ１２０は、受信したライトコマンドをコマンドキューＱ２０に登録する（Ｓ３２）。ライトコマンドを受信したマイクロプロセッサパッケージ１２０内の各マイクロプロセッサ１２１のうち、コマンド処理用のいずれか一つのマイクロプロセッサ１２１（同期処理属性を有するマイクロプロセッサ、または混在属性を有するマイクロプロセッサ）は、コマンドキューＱ２０内でライトコマンドを発見する（Ｓ３３）。
【０１２５】
ライトコマンドを発見したマイクロプロセッサ１２１は、そのライトコマンドを専用領域１２４にコピーして解析する（Ｓ３４）。なお、リード処理で述べたように、メインフレームからのライトコマンドの場合は、パッケージメモリ１２２に記憶させたままの状態で、解析される。
【０１２６】
マイクロプロセッサ１２１は、パッケージメモリ１２２内のボリューム構成情報Ｔ２０を参照する（Ｓ３５）。マイクロプロセッサ１２１は、キャッシュ管理テーブルＴ２２を参照し、キャッシュヒットまたはキャッシュミスのいずれであるかを判定する（Ｓ３６）。
【０１２７】
マイクロプロセッサ１２１は、通信ポートパッケージ１１０に、ライトデータの転送を要求する（Ｓ３７）。通信ポートパッケージ１１０は、ホスト３０からのライトデータを、キャッシュメモリ１３２に転送して記憶させる（Ｓ３８）。
【０１２８】
通信ポートパッケージ１１０は、ライトデータの転送完了を示す通知を、マイクロプロセッサパッケージ１２０に転送する（Ｓ３９）。マイクロプロセッサパッケージ１２０は、その通知をコマンドキューＱ２０に記憶させる（Ｓ４０）。リード処理で述べたと同様に、マイクロプロセッサ１２１は、その通知を発見し（Ｓ４２）、通信ポートパッケージ１１０にＧＯＯＤを送信する（Ｓ４２）。
【０１２９】
図１３は、オーナ権の移動をチェックするための処理を示すフローチャートである。マイクロプロセッサ１２１は、オーナ権が移動されたことを示す通知を受領したか否かを判定する（Ｓ５０）。共有メモリ１３１内のオーナ権管理テーブルＴ３１が更新された場合、共有メモリ１３１から各パッケージメモリ１２２に、オーナ権管理テーブルＴ３１が更新された旨が通知される。例えば、マイクロプロセッサパッケージ１２０内の特定のレジスタに、更新されたことを示すフラグをセットすることにより、オーナ権管理テーブルＴ３１の更新をマイクロプロセッサパッケージ１２０に通知できる。
【０１３０】
更新通知を受領していない場合（S50:NO）、マイクロプロセッサ１２１は、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を参照する（Ｓ５３）。これに対し、更新通知を受領している場合（S50:YES）、マイクロプロセッサ１２１は、共有メモリ１３１にアクセスする。マイクロプロセッサ１２１は、オーナ権管理テーブルＴ３１に記憶されている情報を読み出して、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１に記憶させる（Ｓ５１）。これにより、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１は、最新の内容に更新される。マイクロプロセッサ１２１は、更新通知を消去し（Ｓ５２）、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を参照する（Ｓ５３）。
【０１３１】
図１４は、同一マイクロプロセッサパッケージ１２０に存在する複数のマイクロプロセッサ１２１の属性を制御するための処理を示すフローチャートである。この処理は、各マイクロプロセッサ１２１のうちいずれかのマイクロプロセッサ１２１により、定期的にまたは不定期に、実行される。
【０１３２】
マイクロプロセッサ１２１は、同期処理属性を有するマイクロプロセッサ１２１の数（ＭＰｓ）を検出する（Ｓ６０）。マイクロプロセッサ１２１は、同期処理の負荷（Ｌｓｙｎｃ）を検出する（Ｓ６１）。同期処理の負荷は、例えば、受領しているコマンドの数、コマンドサイズ、コマンドの種類（シーケンシャルアクセスかランダムアクセスか等）に基づいて算出することができる。
【０１３３】
マイクロプロセッサ１２１は、同期処理の負荷（Ｌｓｙｎｃ）と予め設定される閾値Ｔｈとを比較し、同期処理の負荷（Ｌｓｙｎｃ）が閾値Ｔｈを超えているか否かを判定する（Ｓ６２）。同期処理の負荷（Ｌｓｙｎｃ）が閾値Ｔｈを超えている場合（S62:YES）、マイクロプロセッサ１２１は、同期処理属性を有するマイクロプロセッサ１２１の数ＭＰｓが３個未満であるか否かを判定する（Ｓ６３）。
【０１３４】
本実施例では、一つのマイクロプロセッサパッケージ１２０に含まれるマイクロプロセッサ１２１の数が４個である場合を説明している。従って、Ｓ６３では、ＭＰｓの値が、マイクロプロセッサの合計数よりも所定値だけ少ない値よりも小さいか否かを判定する。ここで、合計数は“４”、所定値は“１”である。
【０１３５】
同期処理属性を有するマイクロプロセッサ１２１の数ＭＰｓが３未満の場合（S63:YES）、マイクロプロセッサ１２１は、非同期属性を有するマイクロプロセッサ１２１の中からいずれか一つのマイクロプロセッサ１２１を選択する。マイクロプロセッサ１２１は、その選択されたマイクロプロセッサ１２１の属性を、同期処理に変更させる（Ｓ６４）。その後、
所定のタイミングで再び本処理が行われる。このように、処理すべきコマンドの数が増大した場合、同期処理属性を有するマイクロプロセッサ１２１の数が増加される。
【０１３６】
コマンドの数等に応じて、同期処理属性を有するマイクロプロセッサ１２１の数ＭＰｓが次第に増加する。同期処理属性を有するマイクロプロセッサ１２１の数ＭＰｓが、３以上になった場合（S64:NO）、マイクロプロセッサ１２１は、混在属性を有するマイクロプロセッサ１２１が存在するか否かを判定する（Ｓ６５）。
【０１３７】
上述のように、混在属性とは、コマンド処理を実行することもできるし、さらに、コマンド処理以外の別処理も行うことができる属性である。混在属性のマイクロプロセッサ１２１が無い場合（S65:NO）、マイクロプロセッサ１２１は、最後の非同期処理属性を有するマイクロプロセッサ１２１の属性を、混在属性に変更する（Ｓ６６）。本実施例では、マイクロプロセッサ番号の若い順番に属性を変更させるため、混在属性に設定されるマイクロプロセッサ１２１は、最も大きいマイクロプロセッサ番号（＃３）を有するマイクロプロセッサ１２１となる。
【０１３８】
このように、マイクロプロセッサパッケージ１２０の処理負荷が増加した場合には、４個のマイクロプロセッサ１２１のうち３個のマイクロプロセッサ１２１の属性が同期処理に設定される。最後の一つのマイクロプロセッサ１２１は、混在属性に設定される。これにより、コマンド処理以外の別処理も行うことができるようにしている。
【０１３９】
コマンドの処理が進んで、同期処理の負荷Ｌｓｙｎｃが閾値Ｔｈ以下になると（S62:NO）、マイクロプロセッサ１２１は、同期処理属性から非同期処理属性に戻すか否かを判定する（Ｓ６７）。例えば、非同期処理属性を有するマイクロプロセッサ１２１の負荷が所定値よりも高い場合、そのマイクロプロセッサ１２１の属性を同期処理に変更できる。あるいは、同期処理の負荷Ｌｓｙｎｃが閾値Ｔｈ以下となる状態が所定時間以上継続した場合に、マイクロプロセッサ１２１は、同期処理属性を有するマイクロプロセッサ１２１を非同期処理属性に変更することができる。
【０１４０】
図１５は、各マイクロプロセッサ１２１の属性が変化する様子を示す。図１５（ａ）は、初期状態を示す。初期状態では、一つのマイクロプロセッサ１２１だけが同期処理属性に設定されており、他の３個のマイクロプロセッサ１２１は非同期処理属性に設定される。
【０１４１】
図１５（ｂ）は、同期処理の負荷Ｌｓｙｎｃが増大したため、同期処理属性を有するマイクロプロセッサ１２１が１つ追加された状態を示す。図１５（ｃ）は、さらに、同期処理属性を有するマイクロプロセッサ１２１が１つ追加された状態を示す。これで、４個のマイクロプロセッサ１２１のうち、３個のマイクロプロセッサ１２１が同期処理属性を備えたことになる。非同期処理属性を有するマイクロプロセッサ１２１は、一つのみである。
【０１４２】
図１５（ｄ）は、非同期処理属性を有する最後のマイクロプロセッサ１２１が、混在属性に設定された状態を示す。混在属性に変更されたマイクロプロセッサ１２１は、コマンド処理及び別処理（ボリューム構成情報の再配置処理、診断処理等）の両方を実行できる。
【０１４３】
図１６は、ボリューム構成情報を適切なマイクロプロセッサパッケージ１２０に再配置させるための処理の概要を示す。ボリューム構成情報を再配置させる処理では、以下に述べるように、予め設定される所定の条件が成立した場合に、実行される。本処理は、非同期属性処理を有するマイクロプロセッサ１２１、または、混在属性を有するマイクロプロセッサ１２１のいずれか一つによって、実行される。
【０１４４】
マイクロプロセッサ１２１は、コピーペアの作成が指示されたか否かを判定し（Ｓ７０）、コピーペアの作成が指示された場合には（S70:YES）、コピーペアの作成を契機とするボム構成情報の再配置処理を実行させる（Ｓ７１）。Ｓ７１に示す処理は、図１７〜図２０で後述する。
【０１４５】
コピーペアの作成が指示されていない場合（S70:NO）、マイクロプロセッサ１２１は、マイクロプロセッサパッケージ１２０に障害が発生したか否かを判定する（Ｓ７２）。マイクロプロセッサパッケージ１２０に障害が発生していると判定された場合（S72:YES）、マイクロプロセッサ１２１は、障害発生を契機とするボリューム構成情報の再配置処理を開始させる（Ｓ７３）。Ｓ７３の処理については、図２１〜図２５で後述する。
【０１４６】
マイクロプロセッサパッケージ１２０に障害が発生していない場合（S72:NO）、マイクロプロセッサ１２１は、負荷分散を行うか否かを判定する（Ｓ７４）。負荷分散を行う場合（S74:YES）、マイクロプロセッサ１２１は、負荷分散を契機とするボリューム構成情報の再配置処理を開始させる（Ｓ７５）。Ｓ７５の処理については、図２６で後述する。
【０１４７】
なお、ボリューム構成情報を再配置させる契機として、図１６では３種類を挙げたが、それら以外の契機で、ボリューム構成情報を再配置させる構成としてもよい。また、判定の順番は、図１６に示す例に限らない。ボリューム構成情報を再配置させる処理を実行するマイクロプロセッサは、非同期処理属性または混在属性のいずれかを備える。
【０１４８】
図１７は、コピーペアの生成に応じて、ボリューム構成情報を再配置させる処理の一部を示すフローチャートである。図１７のフローチャートでは、ボリューム構成情報の移動に先立って、先行オーナ権を移動させる。
【０１４９】
ユーザ（システム管理者）は、管理端末２０を用いて、コピーペアの作成を指示する。マイクロプロセッサ１２１は、サービスプロセッサ１７０からペア作成リストを受領する（Ｓ８０）。そのペア作成リストには、コピーペアを形成する一方の論理ボリューム１５２である正ボリュームのＬＤＥＶ番号と、そのコピーペアを形成する他方の論理ボリューム１５２である副ボリュームのＬＤＥＶ番号とが、少なくとも記載されている。
【０１５０】
マイクロプロセッサ１２１は、ペア作成リストを解析し、正ボリューム（ＰＶＯＬ）のオーナ権と、副ボリューム（ＳＶＯＬ）のオーナ権とが、同一のマイクロプロセッサパッケージ１２０で管理されているか否かを判定する（Ｓ８１）。正ボリュームのオーナ権と副ボリュームのオーナ権とが同一のマイクロプロセッサパッケージ１２０内に存在しない場合（S81:NO）、マイクロプロセッサ１２１は、副ボリュームのオーナ権を移動対象リストに記録させる（Ｓ８２）。移動対象リストとは、移動させるべき論理ボリュームのボリューム構成情報を管理するためのリストである。ボリューム構成情報は、実オーナ権と結合しており、実オーナ権の存在するマイクロプロセッサパッケージ１２０にのみ配置可能である。
【０１５１】
マイクロプロセッサ１２１は、ペア作成リストに記載されている全てのコピーペアをチェックしたか否か判定する（Ｓ８３）。チェックとは、Ｓ８１の判定及びＳ８２の移動対象リストの作成を意味する。未チェックのコピーペアが残っている場合（S83:NO）、マイクロプロセッサ１２１は、Ｓ８１に戻る。
【０１５２】
ペア作成リストに記載された全てのコピーペアについてチェックが完了した場合（S83:YES）、マイクロプロセッサ１２１は、移動対象リストに基づいて、Ｉ／Ｏ振り分けテーブルＴ１０を更新させる（Ｓ８４）。マイクロプロセッサ１２１は、副ボリュームの先行オーナ権を正ボリュームのマイクロプロセッサパッケージ１２０に移動させる。これにより、副ボリュームに関するコマンドは、正ボリュームを管理するマイクロプロセッサパッケージ１２０に転送される。
【０１５３】
続いて、マイクロプロセッサ１２１は、共有メモリ１３１内のオーナ権管理テーブルＴ３１を更新させる（Ｓ８５）。共有メモリ１３１上のオーナ権管理テーブルＴ３１において、マイクロプロセッサ１２１は、副ボリュームの先行オーナ権を、正ボリュームを管理するマイクロプロセッサパッケージ１２０に移動させる。マイクロプロセッサ１２１は、共有メモリ１３１内のオーナ権管理テーブルＴ３１が更新された旨を、他の全てのマイクロプロセッサパッケージ１２０に通知させる（Ｓ８６）。その通知が、図１３のＳ５０で判定される更新通知である。
【０１５４】
図１８は、ボリューム構成情報の移動元であるマイクロプロセッサパッケージ１２０の処理を示す。以下、移動元マイクロプロセッサパッケージ１２０のマイクロプロセッサ１２１を、移動元マイクロプロセッサ１２１と呼び、移動先マイクロプロセッサパッケージ１２０のマイクロプロセッサ１２１を移動先マイクロプロセッサ１２１と呼ぶ場合がある。
【０１５５】
移動元マイクロプロセッサ１２１は、コマンドキューＱ２０からコマンドを一つ取り出し（Ｓ９０）、そのコマンドを解析し、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を参照する（Ｓ９１）。
【０１５６】
移動元マイクロプロセッサ１２１は、そのコマンドの処理対象となっている論理ボリューム１５２について、先行オーナ権を所有しているか否かを判定する（Ｓ９２）。先行オーナ権は、実オーナ権よりも先に移動される場合はあるが、その逆はない。つまり、移動元マイクロプロセッサ１２１が先行オーナ権を有しているということは、実オーナ権も有していることを意味する。
【０１５７】
移動元マイクロプロセッサ１２１が先行オーナ権を有している場合（S92:YES）、移動元マイクロプロセッサ１２１は、処理対象の論理ボリューム１５２を確保し（Ｓ９３）、コマンドを処理し（Ｓ９４）、その論理ボリューム１５２を解放する（Ｓ９５）。
【０１５８】
移動元マイクロプロセッサ１２１が先行オーナ権を有していない場合（S92:NO）、Ｓ９０でコマンドキューＱ２０から取り出されたコマンドを、移動先マイクロプロセッサパッケージ１２０に転送する（Ｓ９６）。既に、先行オーナ権が移動先マイクロプロセッサパッケージ１２０に配置済であるため、移動対象の論理ボリューム１５２に関するコマンドを、移動先マイクロプロセッサパッケージ１２０に送信する。移動元マイクロプロセッサパッケージ１２０は実オーナ権を有しているので、そのコマンドを処理可能であるが、移動先マイクロプロセッサパッケージ１２０に転送する。この時点では、移動先マイクロプロセッサパッケージ１２０は、実オーナ権を取得していないため、転送されてきたコマンドを処理することはできない。
【０１５９】
図１９は、実オーナ権を移動させる処理を示すフローチャートである。本処理は、移動元マイクロプロセッサ１２１により定期的に実行される。移動元マイクロプロセッサ１２１は、ジョブキューＱ２３を参照し、移動対象の論理ボリューム１５２に関するジョブの有無を確認する（Ｓ１００）。
【０１６０】
移動対象の論理ボリューム１５２を使用するジョブが残っている場合（S101:YES）、Ｓ１００に戻る。移動対象の論理ボリューム１５２を使用するジョブが残っていない場合（S101:NO）、移動元マイクロプロセッサ１２１は、パッケージメモリ１２２内の移動対象の論理ボリューム１５２に関する管理情報を破棄させる（Ｓ１０２）。移動対象の論理ボリューム１５２に関する管理情報としては、ボリューム構成情報Ｔ２１，キャッシュ管理テーブルＴ２２がある。
【０１６１】
最後に、移動元マイクロプロセッサ１２１は、移動対象の論理ボリューム１５２に関する実オーナ権を、移動先マイクロプロセッサパッケージ１２０に移動させる（Ｓ１０３）。移動元マイクロプロセッサ１２１は、実オーナ権が移動元マイクロプロセッサパッケージ１２０から移動先マイクロプロセッサパッケージ１２０に移されるように、共有メモリ１３１に記憶されているオーナ権管理テーブルＴ３１を更新させる。
【０１６２】
図２０は、移動先マイクロプロセッサパッケージ１２０の処理を示す。移動先マイクロプロセッサ１２１は、通信ポートパッケージ１１０または移動元マイクロプロセッサパッケージ１２０のいずれかから、コマンドを受領する（Ｓ１１０）。受領したコマンドは、コマンドキューＱ２０に登録される。
【０１６３】
移動先マイクロプロセッサ１２１は、受領したコマンドを解析し、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を参照する（Ｓ１１１）。移動先マイクロプロセッサ１２１は、そのコマンドの処理対象である論理ボリューム１５２の実オーナ権を所有しているか否かを判定する（Ｓ１１２）。
【０１６４】
移動先マイクロプロセッサパッケージ１２０が、移動対象の論理ボリューム１５２に関する実オーナ権を有していない場合（S112:NO）、移動先マイクロプロセッサ１２１は、所定時間待機する（Ｓ１１３）。つまり、移動先マイクロプロセッサ１２１は、移動元マイクロプロセッサパッケージ１２０から実オーナ権が移されてくるまでの間、待機する。
【０１６５】
移動先マイクロプロセッサパッケージが実オーナ権を取得した場合（S112:YES）、移動先マイクロプロセッサ１２１は、移動対象の論理ボリューム１５２についての管理情報をパッケージメモリ１２２内に構築する（Ｓ１１４）。つまり、移動先マイクロプロセッサ１２１は、共有メモリ１３１内のボリューム構成情報Ｔ３１及びキャッシュ管理テーブルＴ３２にアクセスし、それらから移動対象の論理ボリューム１５２に関する情報を取得する。移動先マイクロプロセッサ１２１は、共有メモリ１３１から取得した情報に基づいて、パッケージメモリ１２２内に、移動対象の論理ボリューム１５２に関するボリューム構成管理情報Ｔ２１及びキャッシュ管理テーブルＴ２２を構築する。
【０１６６】
移動先マイクロプロセッサ１２１は、コマンドの処理対象である論理ボリューム１５２について、ジョブキューＱ２３にジョブ番号を登録することにより、その論理ボリューム１５２を確保する（Ｓ１１５）。移動先マイクロプロセッサ１２１は、その論理ボリューム１５２を用いてコマンドを処理する（Ｓ１１６）。移動先マイクロプロセッサ１２１は、コマンド処理の完了後に、その論理ボリューム１５２を解放する（Ｓ１１７）。以上の説明が、コピーペアを契機とするボリューム構成情報の再配置である。次に、図２１〜図２５に基づいて、障害発生を契機とするボリューム構成情報の再配置を説明する。
【０１６７】
図２１は、各マイクロプロセッサパッケージ１２０の障害の有無を診断するための処理を示すフローチャートである。本処理は、非同期処理属性または混在属性を有するいずれかのマイクロプロセッサ１２１により、定期的に実行される。
【０１６８】
なお、各マイクロプロセッサパッケージ１２０内では、そこに含まれる４個のマイクロプロセッサ１２１が、互いの状態を互いに監視している。いずれかのマイクロプロセッサ１２１に障害が発生した場合には、正常な他のマイクロプロセッサ１２１が、障害の発生したマイクロプロセッサ１２１に代わって処理を行うようになっている。もしも、一つのマイクロプロセッサパッケージ１２０の各マイクロプロセッサ１２１が全て障害で停止した場合、そのマイクロプロセッサパッケージ１２０の全体が閉塞処理される。閉塞処理とは、障害の発生したパッケージの使用を中止し、システムから切り離すことを意味する。
【０１６９】
マイクロプロセッサ１２１は、診断対象のマイクロプロセッサパッケージ１２０の状態をチェックする（Ｓ１３０）。マイクロプロセッサ１２１は、診断対象のマイクロプロセッサパッケージ１２０が閉塞状態であるか否かを判定する（Ｓ１３１）。
【０１７０】
診断対象のマイクロプロセッサパッケージ１２０が正常な場合（S131:NO）、マイクロプロセッサ１２１は、記憶制御装置１０内の全てのマイクロプロセッサパッケージ１２０を診断したか否かを判定する（Ｓ１３６）。全てのマイクロプロセッサパッケージ１２０とは、正確には、そのマイクロプロセッサ１２１の属するマイクロプロセッサパッケージ１２０以外の他の各マイクロプロセッサパッケージ１２０である。
【０１７１】
未だ診断していないマイクロプロセッサパッケージ１２０が残っている場合（S136:NO）、マイクロプロセッサ１２１は、診断対象のマイクロプロセッサパッケージ１２０のパッケージ番号を１つ増加させて（Ｓ１３７）、Ｓ１３０に戻る。未診断のマイクロプロセッサパッケージ１２０が無い場合（S136:YES）、本処理は終了する。
【０１７２】
診断対象のマイクロプロセッサパッケージ１２０が閉塞状態の場合（S131:YES）、マイクロプロセッサ１２１は、図２４に示すテーブルＴ３３を参照し、自分の属するマイクロプロセッサパッケージ１２０が、肩代わりするマイクロプロセッサパッケージの第１候補であるか否かを判定する（Ｓ１３２）。テーブルＴ３３については、後述する。
【０１７３】
肩代わりするマイクロプロセッサパッケージとは、閉塞状態になったマイクロプロセッサパッケージ（以下、障害発生パッケージとも呼ぶ）に代わって、コマンド処理を行うマイクロプロセッサパッケージである。この肩代わりするマイクロプロセッサパッケージを、以下、肩代わりパッケージとも呼ぶ。
【０１７４】
マイクロプロセッサ１２１は、自分の属するマイクロプロセッサパッケージ１２０が肩代わりパッケージの第１候補になっている場合（S132:YES）、肩代わり処理を開始する（Ｓ１３３）。肩代わり処理の詳細は、図２２で後述する。
【０１７５】
診断対象のマイクロプロセッサパッケージ１２０が閉塞状態の場合において（S131:YES）、マイクロプロセッサ１２１の属するマイクロプロセッサパッケージ１２０が、肩代わりパッケージの第１候補では無い場合（S132:NO）、マイクロプロセッサ１２１は、他のマイクロプロセッサパッケージ１２０の状態をチェックする（Ｓ１３４）。他のマイクロプロセッサパッケージ１２０とは、本処理を実行しているマイクロプロセッサ１２１の属するマイクロプロセッサパッケージ１２０及び障害発生パッケージ以外の、他のマイクロプロセッサパッケージ１２０である。
【０１７６】
マイクロプロセッサ１２１は、他の各マイクロプロセッサパッケージ１２０の中に正常なマイクロプロセッサパッケージ１２０が有るか否かを判定する（Ｓ１３５）。正常なマイクロプロセッサパッケージ１２０が有る場合（S135:YES）、そのマイクロプロセッサパッケージ１２０は、マイクロプロセッサ１２１の属するマイクロプロセッサパッケージ１２０よりも肩代わり候補の優先度が高いので、本処理を終了する。その後、Ｓ１３５で発見されたマイクロプロセッサパッケージ１２０内のマイクロプロセッサ１２１が、図２１に示す処理を実行すると、Ｓ１３５で発見されたマイクロプロセッサパッケージ１２０が肩代わり処理を開始する（Ｓ１３３）。
【０１７７】
正常なマイクロプロセッサパッケージ１２０が無い場合（S135:NO）、マイクロプロセッサ１２１は、肩代わり処理を開始する（Ｓ１３３）。マイクロプロセッサ１２１の属するマイクロプロセッサパッケージ１２０以外に正常に動作しているマイクロプロセッサパッケージ１２０が存在しないためである。
【０１７８】
図２２は、肩代わり処理を示すフローチャートである。本処理は、肩代わりパッケージ１２０内のマイクロプロセッサ１２１（非同期処理属性または混在属性のいずれかを有するマイクロプロセッサ）により実行される。
【０１７９】
マイクロプロセッサ１２１は、通信ポートパッケージ１１０内のＩ／Ｏ振り分けテーブルＴ１０を更新させる（Ｓ１４０）。具体的には、障害発生パッケージで管理されている論理ボリューム１５２に関する先行オーナ権を、肩代わりパッケージに移動させる。
【０１８０】
マイクロプロセッサ１２１は、共有メモリ１３１内のオーナ権管理テーブルＴ３１を更新させる（Ｓ１４１）。つまり、マイクロプロセッサ１２１は、オーナ権管理テーブルＴ３１において、障害発生パッケージの管理する論理ボリューム１５２の先行オーナ権の欄Ｃ３１２に、肩代わりパッケージのパッケージ番号を登録させる。
【０１８１】
他の各マイクロプロセッサパッケージ１２０（肩代わりパッケージ及び障害発生パッケージ以外の全てのマイクロプロセッサパッケージ）は、共有メモリ１３１内のオーナ権管理テーブルＴ３１の更新に合わせて、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を更新させる（Ｓ１４２）。つまり、オーナ権管理テーブルＴ２１の内容を、共有メモリ１３１内のオーナ権管理テーブルＴ３１の内容に一致させる。
【０１８２】
マイクロプロセッサ１２１は、共有メモリ１３１内のオーナ権管理テーブルＴ３１において、障害発生パッケージで管理されている論理ボリューム１５２の実オーナ権の欄Ｃ３１１に、肩代わりパッケージのパッケージ番号を登録させる（Ｓ１４３）。その後、オーナ権管理テーブルＴ３１の更新が、他の各マイクロプロセッサパッケージ１２０に通知され、各パッケージメモリ１２２内のオーナ権管理テーブルＴ２１も更新される。
【０１８３】
図２３は、肩代わりパッケージとなる候補の優先順位を模式的に示す。記憶制御装置１０内には、複数の（２つの）クラスタＣＬ＃０，ＣＬ＃１が設けられている。各クラスタＣＬ＃０，ＣＬ＃１には、それぞれ複数ずつのマイクロプロセッサパッケージ１２０と、電源装置１８０とが所属する。図２３に示す例では、一方のクラスタＣＬ＃０に、マイクロプロセッサパッケージ１２０（＃０，＃１）と電源装置１８０（＃０）とが属している。他方のクラスタＣＬ＃１には、マイクロプロセッサパッケージ１２０（＃２，＃３）と電源装置１８０（＃１）とが属している。
【０１８４】
肩代わりパッケージとなる候補の優先順位は、信頼性をできるだけ維持するという観点に基づいて決定される。従って、同一クラスタ内の他のマイクロプロセッサパッケージ１２０よりも、相手方のクラスタ内のマイクロプロセッサパッケージ１２０の方に、高い優先順位が与えられる。
【０１８５】
従って、図２３に示すように、本実施例では、相手方クラスタ内の各マイクロプロセッサパッケージ１２０のうち、対応するマイクロプロセッサパッケージ１２０（例えば、パッケージ番号の小さいマイクロプロセッサパッケージ）に最も高い優先順位が与えられる。第２順位は、相手方クラスタ内の他のマイクロプロセッサパッケージ１２０に与えられる。第３順位は、同一クラスタ内の他のマイクロプロセッサパッケージ１２０に与えられる。
【０１８６】
図２４は、肩代わりパッケージとなる候補の優先順位を管理するためのテーブルＴ３３を示す。この管理テーブルＴ３３は、例えば、対象となるマイクロプロセッサパッケージのパッケージ番号Ｃ３３０と、肩代わりパッケージの第１候補のパッケージ番号Ｃ３３１と、第２候補のパッケージ番号Ｃ３３２と、第３候補のパッケージ番号Ｃ３３３とを対応付けて管理する。図２１に示す処理を実行するマイクロプロセッサ１２１は、図２４に示すテーブルＴ３３を参照することにより、肩代わりパッケージの優先順位を調べることができる。
【０１８７】
図２５は、図２４に示す管理テーブルＴ３３を作成するための処理を示すフローチャートである。本処理は、例えば、記憶制御装置１０の起動時、または、記憶制御装置１０の構成が変更された場合に、いずれかのマイクロプロセッサ１２１により実行される。
【０１８８】
マイクロプロセッサ１２１は、本処理の対象となるマイクロプロセッサパッケージ１２０を一つ選択する（Ｓ１５０）。マイクロプロセッサ１２１は、選択された対象マイクロプロセッサパッケージ１２０の属するクラスタとは別のクラスタ内のマイクロプロセッサパッケージ１２０を１番目の候補として選択する（Ｓ１５１）。
【０１８９】
マイクロプロセッサ１２１は、別のクラスタ内に未だ選択されていないマイクロプロセッサパッケージ１２０が有るか否かを判定する（Ｓ１５２）。未選択のマイクロプロセッサパッケージ１２０が有る場合（S152:YES）、マイクロプロセッサ１２１は、Ｓ１５１に戻って、その未選択のマイクロプロセッサパッケージ１２０を２番目の候補として選択する。
【０１９０】
別のクラスタ内に未選択のマイクロプロセッサパッケージ１２０が無い場合（S152:NO）、マイクロプロセッサ１２１は、対象マイクロプロセッサパッケージ１２０の属するクラスタ内の、他のマイクロプロセッサパッケージ１２０を３番目の候補として選択する（Ｓ１５３）。マイクロプロセッサ１２１は、対象マイクロプロセッサパッケージ１２０の属するクラスタ内に、未選択のマイクロプロセッサパッケージ１２０が有るか否かを判定する（Ｓ１５４）。未選択のマイクロプロセッサパッケージ１２０が有る場合（S154:YES）、マイクロプロセッサ１２１は、Ｓ１５３に戻り、その未選択のマイクロプロセッサパッケージ１２０を４番目の候補として選択する。
【０１９１】
マイクロプロセッサ１２１は、全てのマイクロプロセッサパッケージ１２０について肩代わりパッケージの優先順位を設定したか否かを判定する（Ｓ１５５）。未処理のマイクロプロセッサパッケージ１２０が有る場合（S155:NO）、マイクロプロセッサ１２１は、対象マイクロプロセッサパッケージのパッケージ番号を１つ増加させて、Ｓ１５０に戻る。全てのマイクロプロセッサパッケージ１２０について肩代わりパッケージの優先順位を設定した場合（S155:YES）、本処理は終了する。
【０１９２】
本実施例では、各マイクロプロセッサパッケージ１２０が必要とするボリューム構成情報を各マイクロプロセッサパッケージ１２０内のパッケージメモリ１２２に記憶し、かつ、所定の場合に、各ボリューム構成情報を再配置する。従って、記憶制御装置１０の性能、信頼性及び使い勝手を高めることができる。
【０１９３】
本実施例では、ホスト３０からのアクセスを停止させることなく、ボリューム構成情報
を適切な場所に配置することができ、使い勝手が向上する。
【０１９４】
本実施例では、マイクロプロセッサ１２１の属性を、コマンド処理用の属性（同期処理属性）と、コマンド処理以外の別処理（ボリューム構成情報の配置、診断処理、デステージ処理等）を行うための属性（非同期処理属性）とに分ける。さらに、本実施例では、マイクロプロセッサパッケージ１２０の負荷状態に応じて、各マイクロプロセッサ１２１の属性を動的に変更させることができる。従って、本実施例では、マイクロプロセッサパッケージ１２０の負荷状態に応じて、マイクロプロセッサパッケージ１２０に適切な処理能力を与えることができる。
【実施例２】
【０１９５】
図２７，図２８に基づいて第２実施例を説明する。本実施例は、第１実施例の変形例に相当する。従って、本実施例では、第１実施例との相違点を中心に説明する。本実施例では、
ホスト３０がメインフレームの場合において、Ｉ／Ｏ振り分けテーブルＴ１０が更新される前に受領していた、未処理のコマンドの取り扱い方法を述べる。
【０１９６】
図２７は、移動元マイクロプロセッサパッケージ１２０で実行される処理を示すフローチャートである。本処理は、図１８に示すオープン系ホストの場合の処理に対応している。
【０１９７】
マイクロプロセッサ１２１は、コマンドキューＱ２１から、未処理のコマンドを取り出す（Ｓ２００）。マイクロプロセッサ１２１は、コマンドを解析し、パッケージメモリ１２２上のオーナ権管理テーブルＴ２１を参照する（Ｓ２０１）。
【０１９８】
マイクロプロセッサ１２１は、そのコマンドが処理対象としている論理ボリューム１５２の実オーナ権を有するか否かを判定する（Ｓ２０２）。実オーナ権を有している場合（S202:YES）、マイクロプロセッサ１２１は、処理対象の論理ボリューム１５２を確保し（Ｓ２０３）、コマンドを処理し（Ｓ２０４）、その論理ボリューム１５２を解放する（Ｓ２０５）。
【０１９９】
マイクロプロセッサ１２１は、予め設定される所定時間が経過したか否かを判定する（Ｓ２０６）。つまり、タイムアウトしたか否かを判定する。所定時間が経過していない場合（S206:YES）、本処理を終了する。マイクロプロセッサ１２１は、コマンドキューＱ２１から別の新たなコマンドを取り出して、上述のステップを繰り返す。
【０２００】
所定時間が経過した場合（S206:NO）、マイクロプロセッサ１２１は、Ｓ２０７に移り、Ｉ／Ｏ振り分けテーブルＴ１０が更新されているか否かを確認する。Ｉ／Ｏ振り分けテーブルＴ１０が更新されていない場合（S207:NO）、マイクロプロセッサ１２１は、Ｉ／Ｏ振り分けテーブルＴ１０を更新させる（Ｓ２０８）。つまり、処理対象の論理ボリューム１５２の先行オーナ権を、移動先マイクロプロセッサパッケージ１２０に変更させる。
【０２０１】
Ｉ／Ｏ振り分けテーブルＴ１０が更新されている場合（S207:YES）、マイクロプロセッサ１２１は、メインフレームであるホスト３０にリトライを要求する（Ｓ２０９）。これにより、ホスト３０は、改めてコマンドを発行する。その再発行されたコマンドは、通信ポートパッケージ１１０によって、移動先のマイクロプロセッサパッケージ１２０に転送される。
【０２０２】
オーナ権を強制的に移動させるための所定時間（Ｓ２０６）は、例えば、処理対象の論理ボリューム１５２の先行オーナ権が移動先マイクロプロセッサパッケージ１２０に移動されてからの経過時間として定義することができる。つまり、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１が更新された時を開始時とし、その開始時からの経過時間として設定できる。
【０２０３】
図２８は、移動先マイクロプロセッサパッケージ１２０で実行される処理を示すフローチャートである。本処理は、図２０に示す処理に対応する。移動先マイクロプロセッサ１２１は、メインフレームであるホスト３０から発行されるコマンド（新規コマンド及び再発行コマンド）を受領する（Ｓ２２０）。本実施例では、移動元マイクロプロセッサパッケージ１２０から移動先マイクロプロセッサパッケージ１２０にコマンドが転送されることはない。受領したコマンドは、コマンドキューＱ２１に登録される。
【０２０４】
移動先マイクロプロセッサ１２１は、受領したコマンドを解析し、パッケージメモリ１２２内のオーナ権管理テーブルＴ２１を参照する（Ｓ２２１）。移動先マイクロプロセッサ１２１は、そのコマンドの処理対象である論理ボリューム１５２の実オーナ権を所有しているか否かを判定する（Ｓ２２２）。
【０２０５】
移動先マイクロプロセッサパッケージ１２０が、対象の論理ボリューム１５２に関する実オーナ権を有していない場合（S222:NO）、移動先マイクロプロセッサ１２１は、所定時間待機する（Ｓ２２３）。
【０２０６】
移動先マイクロプロセッサパッケージが実オーナ権を取得した場合（S222:YES）、移動先マイクロプロセッサ１２１は、対象の論理ボリューム１５２についての管理情報をパッケージメモリ１２２内に構築する（Ｓ２２４）。つまり、移動先マイクロプロセッサ１２１は、共有メモリ１３１から取得した情報に基づいて、パッケージメモリ１２２内に、対象の論理ボリューム１５２に関するボリューム構成管理情報Ｔ２１及びキャッシュ管理テーブルＴ２２を構築する。
【０２０７】
移動先マイクロプロセッサ１２１は、対象の論理ボリューム１５２を確保し（Ｓ２２５）、その論理ボリューム１５２を用いてコマンドを処理し（Ｓ２２６）、コマンド処理の完了後にその論理ボリューム１５２を解放する（Ｓ２２７）。
【０２０８】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例によれば、オープン系ホストの技術的性質とメインフレームの技術的性質との差異に応じて、ボリューム構成情報を移動させることができ、記憶制御装置１の使い勝手が向上する。
【０２０９】
オープン系ホストの場合は、そのコマンドサイズが相対的に小さいため、移動元マイクロプロセッサパッケージは、先行オーナ権を失った後において、受信済のコマンドを移動先マイクロプロセッサパッケージに転送する。
【０２１０】
これに対し、メインフレームの場合は、複数のコマンドが連なっており、そのサイズが大きい。そこで、移動元マイクロプロセッサパッケージは、先行オーナ権を失った後においても、受信済のコマンドを引き続き処理する。しかし、所定時間内にボリューム構成情報の移動を完了させるために、所定時間経過後には、受信済コマンドの処理を中止して、ホスト３０（メインフレーム）にコマンドの再発行を要求する。
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、各実施例を適宜組み合わせる構成としてもよい。
【図１】
0005236078.tif 000002
【図２】
0005236078.tif 000003
【図３】
0005236078.tif 000004
【図４】
0005236078.tif 000005
【図５】
0005236078.tif 000006
【図６】
0005236078.tif 000007
【図７】
0005236078.tif 000008
【図８】
0005236078.tif 000009
【図９】
0005236078.tif 000010
【図１０】
0005236078.tif 000011
【図１１】
0005236078.tif 000012
【図１２】
0005236078.tif 000013
【図１３】
0005236078.tif 000014
【図１４】
0005236078.tif 000015
【図１５】
0005236078.tif 000016
【図１６】
0005236078.tif 000017
【図１７】
0005236078.tif 000018
【図１８】
0005236078.tif 000019
【図１９】
0005236078.tif 000020
【図２０】
0005236078.tif 000021
【図２１】
0005236078.tif 000022
【図２２】
0005236078.tif 000023
【図２３】
0005236078.tif 000024
【図２４】
0005236078.tif 000025
【図２５】
0005236078.tif 000026
【図２６】
0005236078.tif 000027
【図２７】
0005236078.tif 000028
【図２８】
0005236078.tif 000029