(57)【要約】【課題】  ストレージ装置の外部の通信環境に応じて、ストレージ装置内で使用するパケットのサイズを可変に制御すること。【解決手段】  ストレージ装置２は、ホスト１との間のデータ転送を制御するCHA３と、ディスクドライブ６との間のデータ転送を制御するDKA５とを備えている。CHA３の上位Ｉ／Ｆ判別部３Ｂ１は、ホスト１が使用する通信プロトコルの種別及び通信帯域を判別し、パケットサイズ設定部３Ｂ２は、識別された通信プロトコルの種別等に基づいて、最適なパケットサイズを設定する。同様に、DKA５は、使用するディスクドライブ６の種別及びデータ処理速度に基づいて、最適なパケットサイズを設定する。これにより、ホストとキャッシュメモリ間及びディスクドライブとキャッシュメモリ間で、速やかにデータをパケットに移し替えることができ、データ転送効率を改善することができる。【選択図】        図１
2006085401.tif 000002
【特許請求の範囲】
【請求項１】
上位装置との間のデータ授受を制御する上位インターフェース制御部と、
記憶ドライブとの間のデータ授受を制御する下位インターフェース制御部と、
前記上位インターフェース制御部及び前記下位インターフェース制御部に共用されるメモリ部とを備え、
前記上位インターフェース制御部は、前記上位装置との間の通信環境に応じて、前記メモリ部との間で使用する第１パケットのサイズを可変に設定するストレージ装置。
【請求項２】
前記上位インターフェース制御部は、前記上位装置との間で使用される通信プロトコルの種類に基づいて、前記メモリ部との間で使用する前記第１パケットのサイズを可変に設定する請求項１に記載のストレージ装置。
【請求項３】
前記上位インターフェース制御部は、前記上位装置からのアクセス種別及び前記上位装置との間で使用される通信プロトコルの種類に基づいて、前記メモリ部との間で使用する前記第１パケットのサイズを可変に設定する請求項１に記載のストレージ装置。
【請求項４】
前記上位インターフェース制御部は、前記上位装置との間で使用される通信プロトコルの種類に基づいて前記上位装置との間のデータ授受が相対的に速いと判定した場合に、前記第１パケットのサイズを相対的に大きく設定する請求項２に記載のストレージ装置。
【請求項５】
前記上位インターフェース制御部は、前記上位装置との間で使用される通信プロトコルの種類に基づいて前記上位装置との間のデータ授受が相対的に遅いと判定した場合に、前記第１パケットのサイズを相対的に小さく設定する請求項２に記載のストレージ装置。
【請求項６】
前記上位装置との間で使用されうる複数種類の通信プロトコル毎にそれぞれ予め第１パケットのサイズが設定された第１パケットサイズ管理情報を記憶するパケットサイズ管理情報記憶部をさらに備え、
前記上位インターフェース制御部は、前記上位装置との間で使用される通信プロトコルの種類を判別して、前記第１パケットサイズ管理情報を参照することにより、前記判別された通信プロトコルの種類に応じた第１パケットのサイズを読出して設定する請求項２に記載のストレージ装置。
【請求項７】
前記上位インターフェース制御部は、
前記上位装置との間のデータ授受を所定の通信プロトコルに基づいて制御する上位側データ転送部と、
前記メモリ部との間のデータ授受を前記第１パケットを介して実行する下位側データ転送部と、
前記上位側データ転送部と前記下位側データ転送部との間に設けられ、前記上位側データ転送部と前記下位側データ転送部との間のデータ転送を制御する第１制御部と、
を備えており、
前記上位側データ転送部は、前記上位装置からのアクセスを受け付けた場合に、前記上位装置との間で使用される通信プロトコルの種類を前記第１制御部に通知し、
前記制御部は、前記上位側データ転送部からの通知に基づいて、前記通信プロトコルの種類に応じた第１パケットのサイズを設定し、
前記下位側データ転送部は、前記第１制御部により設定された第１パケットのサイズに従って前記メモリ部との間のデータ授受を行う請求項１に記載のストレージ装置。
【請求項８】
前記上位インターフェース制御部は、前記上位装置との接続がリセットされる毎に、前記第１パケットのサイズを設定する請求項１に記載のストレージ装置。
【請求項９】
前記上位インターフェース制御部は、前記上位装置からのアクセスを受け付けるたびに、前記第１パケットのサイズを設定する請求項１に記載のストレージ装置。
【請求項１０】
前記メモリ部は、データを一時的に記憶するものである請求項１に記載のストレージ装置。
【請求項１１】
それぞれ異なる種類の通信プロトコルを使用する前記上位装置がそれぞれ設けられており、
前記上位インターフェース制御部は、前記各種類の上位装置にそれぞれ対応して設けられ、前記各種の通信プロトコルに応じて前記第１パケットのサイズをそれぞれ個別に設定しており、
それぞれ異なるサイズの複数種類の前記第１パケットが同一システム内で共存して使用される請求項１に記載のストレージ装置。
【請求項１２】
前記下位インターフェース制御部は、前記記憶ドライブの種類に応じて、前記メモリ部との間で使用する第２パケットのサイズを可変に設定する請求項１に記載のストレージ装置。
【請求項１３】
前記下位インターフェース制御部は、前記記憶ドライブの種類が相対的に高性能な記憶ドライブであると判定した場合に、前記第２パケットのサイズを相対的に大きく設定する請求項１２に記載のストレージ装置。
【請求項１４】
前記下位インターフェース制御部は、前記記憶ドライブの種類が相対的に低性能な記憶ドライブであると判定した場合に、前記第２パケットのサイズを相対的に小さく設定する請求項１２に記載のストレージ装置。
【請求項１５】
複数種類の上位装置の使用する通信プロトコルに従って該各上位装置との間のデータ授受をそれぞれ制御する複数種類の上位インターフェース制御部と、
複数種類の記憶ドライブとの間のデータ授受をそれぞれ制御する複数個の下位インターフェース制御部と、
前記各上位インターフェース制御部及び前記各下位インターフェース制御部にそれぞれ共用されるキャッシュメモリ及び共有メモリとを備え、
（１）前記各上位インターフェース制御部は、
自身が接続される前記上位装置との間のデータ授受を所定の通信プロトコルに基づいて制御する上位側データ転送部と、
前記キャッシュメモリとの間のデータ授受を第１パケットを介して実行する下位側データ転送部と、
前記上位側データ転送部と前記下位側データ転送部との間に設けられ、前記上位側データ転送部と前記下位側データ転送部との間のデータ転送を制御する第１制御部と、
をそれぞれ備えており、
前記上位側データ転送部は、前記上位装置からのアクセスを受け付けた場合に、前記上位装置との間で使用される通信プロトコルの種類を前記第１制御部に通知し、
前記第１制御部は、前記上位側データ転送部からの通知に基づいて、前記通信プロトコルの種類に応じた前記第１パケットのサイズを設定し、
前記下位側データ転送部は、前記第１制御部により設定された前記第１パケットのサイズに従って前記キャッシュメモリとの間のデータ授受を行うものであり、
（２）前記各下位インターフェース制御部は、
自身が接続される前記記憶ドライブとの間のデータ授受を制御する記憶ドライブ側データ転送部と、
前記キャッシュメモリとの間のデータ授受を第２パケットを介して実行するメモリ側データ転送部と、
前記記憶ドライブ側データ転送部と前記メモリ側データ転送部との間に設けられ、前記記憶ドライブ側データ転送部と前記メモリ側データ転送部との間のデータ転送を制御する第２制御部と、
を備えており、
前記記憶ドライブ側データ転送部は、前記記憶ドライブからのデータが入力された場合に、前記記憶ドライブの種類を特定する情報を前記第２制御部に通知し、
前記第２制御部は、前記記憶ドライブ側データ転送部からの通知に基づいて、前記記憶ドライブの種類に応じた前記第２パケットのサイズを設定し、
前記メモリ側データ転送部は、前記第２制御部により設定された前記第２パケットのサイズに従って前記キャッシュメモリとの間のデータ授受を行うものである、
ストレージ装置。
【請求項１６】
上位装置との間のデータ授受を制御する上位インターフェース制御部と、
記憶ドライブとの間のデータ授受を制御する下位インターフェース制御部と、
前記上位インターフェース制御部及び前記下位インターフェース制御部に共用されるメモリ部とを備えたストレージ装置の内部パケットサイズを制御するためのパケットサイズ制御方法であって、
前記上位インターフェース制御部が前記上位装置から所定のコマンドを受領したか否かを判定するステップと、
前記上位インターフェース制御部が前記所定のコマンドを前記上位装置から受領したと判定された場合に、前記上位装置と前記上位インターフェース制御部との間の通信プロトコルを特定するステップと、
前記特定された通信プロトコルを検索キーとして、前記上位装置との間で使用されうる複数種類の通信プロトコル毎にそれぞれ予め第１パケットのサイズが設定された第１パケットサイズ管理情報を参照し、前記特定された通信プロトコルに対応する第１パケットのサイズを読み出して設定するステップと、
前記設定された第１パケットのサイズに基づいて、前記キャッシュメモリと前記上位インターフェース制御部との間のデータ授受を行うステップと、
を含み、
前記特定された通信プロトコルに従って前記上位装置と前記上位インターフェース制御部との間で使用されるパケットのサイズと、前記設定された第１パケットのサイズとを略等しくさせることを特徴とするストレージ装置のパケットサイズ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びストレージ装置のパケットサイズ制御方法に関する。
【背景技術】
【０００２】
ストレージ装置は、例えば、ハードディスクドライブ等のディスクドライブをアレイ状に配設し、RAID（Redundant Arrays of Inexpensive Disks）に基づく記憶領域を提供する。ホストコンピュータ（以下、「ホスト」）は、ストレージ装置により提供される論理的な記憶領域にアクセスし、データの読み書きを行う。ホストとストレージ装置との間のデータ転送は、パケット単位で行われる。パケットのサイズは、アクセス対象のボリュームに対する一回のアクセスで読み書きできる単位の整数倍に設定することができる（特許文献１）。
【特許文献１】特開平５−２４２００６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記文献に記載の技術では、ストレージ装置とホストとの間のパケットサイズを規定しているが、ストレージ装置内のパケットサイズについては何ら考慮されていない。例えば、ホストからストレージ装置に入力されたライトデータは、ホスト側のインターフェースからディスクドライブ側のインターフェースに内部的に伝達され、ディスクドライブ側のインターフェースから各ディスクドライブに書き込まれる。逆に、各ディスクドライブから読み出されたリードデータは、ディスクドライブ側のインターフェースからホスト側のインターフェースに内部的に伝達され、ホスト側のインターフェースからホストに転送される。
【０００４】
このように、ストレージ装置内でもパケットを用いてデータ転送を行うことができるが、ストレージ装置内のパケットサイズは、一律に固定されている。つまり、ストレージ装置とホストとの間の通信環境（通信帯域等）に拘わらず、最も高速の通信環境に対応させて、ストレージ装置内のパケットサイズを固定している。
【０００５】
従って、ストレージ装置の内外でそれぞれパケットサイズが異なるため、これら内外のパケット間でデータの移し替えを行う場合の効率が低下し、これにより、ストレージ装置のデータ転送効率が低下している。
【０００６】
ストレージ装置の場合は、例えば、いわゆるメインフレーム系ホストやオープン系ホストとして知られているように、種々の種類のホストが接続され得る。これら各ホストは、それぞれの通信プロトコルに従って、ストレージ装置との間でデータ転送を行う。従って、これら各種類のホストとストレージ装置との間の通信環境は、ホストの種類毎にそれぞれ相違する。ホストとストレージ装置との間で使用されるパケットのサイズが、ストレージ装置内のパケットサイズと一致または略等しいような場合、データは、内外のパケット間を速やかに移動可能である。しかし、内外のパケットサイズが大きく異なる場合、データの転送効率は低下する。
【０００７】
このように、多種多様なホストが同時に接続され得るストレージ装置においては、ホストの種類によって通信環境が大きく相違する可能性がある。しかし、従来技術では、このようなホストとストレージ装置との間の通信環境の多様性を何ら考慮せず、ストレージ装置内のパケットサイズを一律に固定して設定している。
【０００８】
同様の問題は、ストレージ装置と記憶ドライブとの間にも発生し得る。記憶ドライブは、その種類によってデータ処理速度等が相違する。しかし、従来は、記憶ドライブの種類を問わずに、一律に固定したパケットサイズを用いているため、記憶ドライブとストレージ装置との間のデータ転送効率を改善する余地がある。
【０００９】
そこで、本発明の一つの目的は、通信環境に応じてストレージ装置内のパケットサイズを可変に制御することにより、ストレージ装置と上位装置との間のパケットサイズとストレージ装置内のパケットサイズとを適合させて、データ転送効率を改善できるようにしたストレージ装置及びストレージ装置のパケットサイズ制御方法を提供することにある。本発明の他の目的は、上位装置の使用する通信プロトコルの種類に応じて上位側インターフェース制御部とメモリ部との間の第１パケットのサイズを可変に制御すると共に、記憶ドライブの種類に応じて下位側インターフェース制御部とメモリ部との間の第２パケットのサイズを可変に制御することにより、ストレージ装置内のデータ転送効率を改善できるようにしたストレージ装置及びストレージ装置のパケットサイズ制御方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１０】
上記課題を解決すべく、本発明に係るストレージ装置は、上位装置との間のデータ授受を制御する上位インターフェース制御部と、記憶ドライブとの間のデータ授受を制御する下位インターフェース制御部と、上位インターフェース制御部及び下位インターフェース制御部に共用されるメモリ部とを備え、上位インターフェース制御部は、上位装置との間の通信環境に応じて、メモリ部との間で使用するCHAパケットのサイズを可変に設定するようになっている。
【００１１】
上位インターフェース制御部は、上位装置との間で使用される通信プロトコルの種類に基づいて、CHAパケットのサイズを可変に設定することができる。また、上位インターフェース制御部は、上位装置からのアクセス種別及び上位装置との間で使用される通信プロトコルの種類に基づいて、CHAパケットのサイズを可変に設定することもできる。
【００１２】
例えば、上位インターフェース制御部は、上位装置との間で使用される通信プロトコルの種類に基づいて上位装置との間のデータ授受が相対的に速いと判定した場合に、CHAパケットのサイズを相対的に大きく設定し、上位装置との間のデータ授受が相対的に遅いと判定した場合に、CHAパケットのサイズを相対的に小さく設定することができる。
【００１３】
また、例えば、上位装置との間で使用されうる複数種類の通信プロトコル毎にそれぞれ予めCHAパケットのサイズが設定されたCHAパケットサイズ管理情報を記憶するパケットサイズ管理情報記憶部をさらに備え、上位インターフェース制御部は、上位装置との間で使用される通信プロトコルの種類を判別して、CHAパケットサイズ管理情報を参照することにより、判別された通信プロトコルの種類に応じたCHAパケットのサイズを読出して設定することができる。
【００１４】
上位インターフェース制御部と同様に、下位インターフェース制御部は、記憶ドライブの種類に応じて、メモリ部との間で使用するDKAパケットのサイズを可変に設定することができる。例えば、下位インターフェース制御部は、記憶ドライブの種類が相対的に高性能な記憶ドライブであると判定した場合に、DKAパケットのサイズを相対的に大きく設定し、記憶ドライブの種類が相対的に低性能な記憶ドライブであると判定した場合は、DKAパケットのサイズを相対的に小さく設定することができる。
【００１５】
本発明の手段、機能、ステップの少なくとも一部は、マイクロコンピュータにより読み込まれて実行されるコンピュータプログラムとして構成できる場合がある。このようなコンピュータプログラムは、例えば、ハードディスクや光ディスク等のような記憶媒体に固定して流通させることができる。または、インターネット等のような通信ネットワークを介して、コンピュータプログラムを供給することもできる。
【発明を実施するための最良の形態】
【００１６】
以下、図面に基づき、本発明の実施の形態を説明する。図１は、本実施形態の全体概念を示す説明図である。本実施形態では、複数種類のホスト１の使用する通信プロトコルに従って該各ホスト１との間のデータ授受をそれぞれ制御する複数種類のCHA（チャネルアダプタ）３と、複数種類のディスクドライブ６との間のデータ授受をそれぞれ制御する複数個のDKA（ディスクアダプタ）５と、各CHA３及び各DKA５にそれぞれ共用されるキャッシュメモリ４及び共有メモリ（図２参照）とを備えたストレージ装置２とがそれぞれ開示される。
【００１７】
そして、各CHA３は、自身が接続される前記ホスト１との間のデータ授受を所定の通信プロトコルに基づいて制御する上位側データ転送部３Ａと、キャッシュメモリ４との間のデータ授受をCHAパケットＰＳ２を介して実行する下位側データ転送部３Ｃと、上位側データ転送部３Ａと下位側データ転送部３Ｃとの間に設けられ、上位側データ転送部３Ａと下位側データ転送部３Ｃとの間のデータ転送を制御するチャネル制御部３Ｂと、をそれぞれ備えている。
【００１８】
上位側データ転送部３Ａは、ホスト１からのアクセスを受け付けた場合に、ホスト１との間で使用される通信プロトコルの種類をチャネル制御部３Ｂに通知し、チャネル制御部３Ｂは、上位側データ転送部３Ａからの通知に基づいて、前記通信プロトコルの種類に応じたCHAパケットＰＳ２のサイズを設定する。下位側データ転送部３Ｃは、チャネル制御部３Ｂにより設定されたCHAパケットＰＳ２のサイズに従ってキャッシュメモリ４との間のデータ授受を行う。
【００１９】
一方、各DKA５は、自身が接続されるディスクドライブ６との間のデータ授受を制御する下位側データ転送部（ディスクドライブ側データ転送部）５Ｃと、キャッシュメモリ４との間のデータ授受をDKAパケットＰＳ３を介して実行する上位側データ転送部（キャッシュメモリ側データ転送部）５Ａと、下位側データ転送部５Ｃと上位側データ転送部５Ａとの間に設けられ、下位側データ転送部５Ｃと上位側データ転送部５Ａとの間のデータ転送を制御するディスク制御部５Ｂと、を備えている。
【００２０】
そして、下位側データ転送部５Ｃは、ディスクドライブ６からのデータが入力された場合に、ディスクドライブ６の種類を特定する情報をディスク制御部５Ｂに通知し、ディスク制御部５Ｂは、下位側データ転送部５Ｃからの通知に基づいて、ディスクドライブ６の種類に応じたDKAパケットＰＳ３のサイズを設定し、上位側データ転送部５Ａは、ディスク制御部５Ｂにより設定されたDKAパケットＰＳ３のサイズに従ってキャッシュメモリ４との間のデータ授受を行う。
【００２１】
上記の各構成をより詳細に説明する。ホスト１としては、種々のものがストレージ装置２に接続可能である。ホスト１は、例えば、いわゆるオープン系ホストとメインフレーム系ホストとに大別できる。オープン系ホストとしては、例えば、Windows（登録商標）やUNIX（登録商標）等の汎用的なOS（Operating System）を搭載し、ＦＣ（Fibre Channel）、iSCSI（Internet SCSI）、TCP/IP（Transmission Control Protocol/Internet Protocol）等の比較的汎用性のある通信プロトコルを介してストレージ装置２にアクセスするサーバマシンを挙げることができる。メインフレーム系ホストとしては、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルを介してストレージ装置２にアクセスするメインフレームマシンを挙げることができる。ホスト１は、例えば、メタルケーブルや光ファイバケーブル、スイッチ等を含むことができる通信ネットワーク７を介して、ストレージ装置２のCHA３に接続される。図中では、ホスト１を１個だけ示しているが、実際には、異なる種類のホストをそれぞれストレージ装置２に接続することができる。換言すれば、ストレージ装置２は、複数種類のホスト１に対して、それぞれ独立したストレージサービスを提供可能である。
【００２２】
ストレージ装置２は、上述のように、複数のCHA３（１個のみ図示）と、キャッシュメモリ４と、複数のDKA５（１個のみ図示）と、複数のディスクドライブ６（１個のみ図示）と、共有メモリ（不図示）等を備えて構成することができる。なお、図に示す以外の構成として、CHA３の機能及びDKA５の機能を実現する単一のまたは複数のコントローラを設け、このコントローラによってホスト１及びディスクドライブ６とのデータ通信を制御するようにしてもよい。
【００２３】
CHA３は、例えば、メインフレーム系ホスト用のCHA、オープン系ホスト用のCHA等のように、ホスト１の種類毎にそれぞれ設けることができる。但し、これに限らず、一つのCHAが複数の通信プロトコルをサポートしている場合は、単一のCHAに種類の異なるホストをそれぞれ接続することもできる。
【００２４】
CHA３は、例えば、上位側データ転送部３Ａと、チャネル制御部３Ｂと、下位側データ転送部３Ｃとを含んで構成可能である。上位側データ転送部３Ａは、ホスト１の使用する通信プロトコルに従って、ホスト１との間のデータ転送を制御する。ホスト１と上位側データ転送部３Ａとの間では、所定のパケットＰＳ１を介してデータがやり取りされる。下位側データ転送部３Ｃは、キャッシュメモリ４との間のデータ転送を制御する。下位側データ転送部３Ｃは、CHAパケットＰＳ２を介して、キャッシュメモリ４との間でデータをやり取りする。
【００２５】
チャネル制御部３Ｂは、CHA３の全体動作を制御する。チャネル制御部３Ｂは、例えば、上位インターフェース（以下「Ｉ／Ｆ」）判別部３Ｂ１と、パケットサイズ設定部３Ｂ２とを含むことができる。上位Ｉ／Ｆ判別部３Ｂ１は、例えば、上位側データ転送部３Ａからの入力データに基づいて、ホスト１の使用する通信プロトコルの種類を判別し、判別結果をパケットサイズ設定部３Ｂ２に通知する。パケットサイズ設定部３Ｂ２は、上位Ｉ／Ｆ判別部３Ｂ１により特定された通信プロトコルに基づいて、CHAパケットＰＳ２のサイズを設定する。CHAパケットＰＳ２のサイズは、ホスト１との間で使用される通信プロトコルの種類に応じて、設定される。これにより、CHAパケットＰＳ２のサイズと、CHAパケットＰＳ２の相手方となるホスト側パケットＰＳ１のサイズとを適合させる。
【００２６】
ここで、パケットサイズが適合するとは、例えば、各パケットのサイズが略一致する場合や２倍以下の場合等のように、パケットＰＳ１，ＰＳ２間でのデータ移動が比較的滑らかに行われることを意味する。内外のパケットサイズが略一致する場合、外部のパケットＰＳ１から内部のパケットＰＳ２にデータを移し替えた直後に、パケットＰＳ２をキャッシュメモリ４に転送して記憶させることができる。逆に、内部のパケットＰＳ２から外部のパケットＰＳ１にデータを移し替えた直後に、外部のパケットＰＳ１をホスト１に向けて送り出すことができる。内部のパケットＰＳ２のサイズが外部のパケットＰＳ１のサイズのｎ（ｎ＞１）倍である場合、パケットＰＳ１，ＰＳ２間でのデータ移し替えに時間を要し、データ転送効率が低下する。しかし、例えば、ｎが２以下の場合は、データ転送効率の低下を許容可能な場合も考えられる。
【００２７】
キャッシュメモリ４は、ホスト１から書き込まれたライトデータや、ホスト１に読み出されたリードデータ等を記憶するものである。キャッシュメモリ４には、CHA３とDKA５とがそれぞれ独立して非同期にアクセスすることができる。
【００２８】
DKA５は、例えば、上位側データ転送部５Ａと、ディスク制御部５Ｂと、下位側データ転送部５Ｃとを含んで構成することができる。上位側データ転送部５Ａは、キャッシュメモリ４との間のデータ転送を制御する。キャッシュメモリ４とDKA５との間では、DKAパケットＰＳ３を介してデータがやり取りされる。下位側データ転送部５Ｃは、ディスクドライブ６との間のデータ転送を制御する。ディスクドライブ６とDKA５との間では、パケットＰＳ４を介してデータがやり取りされる。
【００２９】
ディスク制御部５Ｂは、DKA５の全体動作を制御する。ディスク制御部５Ｂは、下位Ｉ／Ｆ判別部５Ｂ１と、パケットサイズ設定部５Ｂ２とを含むことができる。下位Ｉ／Ｆ判別部５Ｂ１は、例えば、下位側データ転送部５Ｃからの入力データに基づいて、ディスクドライブ６の種類を判別し、この判別結果をパケットサイズ設定部５Ｂ２に通知する。パケットサイズ設定部５Ｂ２は、ディスクドライブ６の種類に応じて、DKAパケットＰＳ３のサイズを設定する。即ち、パケットサイズ設定部５Ｂ２は、ディスクドライブ６との間で使用されるパケットＰＳ４のサイズと、キャッシュメモリ４との間で使用されるDKAパケットＰＳ３のサイズとを適合させる。
【００３０】
ディスクドライブ６は、例えば、ハードディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、半導体メモリドライブ等のような記憶ドライブである。RAID構成によっても相違するが、例えば、３個や４個等の複数のディスクドライブ６から一つのグループが構成される。
【実施例１】
【００３１】
図２は、ストレージ装置１００の機能構成に着目したブロック図である。ストレージ装置１００は、通信ネットワークＣＮ１Ａ〜ＣＮ１Ｄを介して、複数のホスト１０Ａ〜１０Ｄにそれぞれ接続可能である。
【００３２】
ホスト１０Ａ〜１０Ｄ（以下、特に区別しない場合は「ホスト１０」）は、それぞれHBA（Host Bus Adapter）１１Ａ〜１１Ｄを備えている。各ホスト１０Ａ〜１０Ｄは、それぞれのHBA１１Ａ〜１１Ｄを介して、対応するCHA１１０Ａ〜１１０Ｄにそれぞれ接続されている。なお、図中では、各ホスト１０にそれぞれ一つずつのHBAを設けるかのように示しているが、実際には、各ホスト１０には、それぞれ複数のHBAを設けることができる。そして、各ホスト１０に、パス制御プログラムを実装している場合、このパス制御プログラムによって、複数のHBAのうちいずれを使用するか等を制御でき、これにより負荷分散や障害回避等を行うことができる。
【００３３】
例えば、ホスト１０Ａ〜１０Ｃはオープン系のホストであり、他のホスト１０Ｄはメインフレーム系のホストである。ホスト１０Ａは、例えば、ファイバチャネルプロトコル（ＦＣ）に基づいてデータ転送を行う。ホスト１０Ｂは、例えば、iSCSIに基づいてデータ転送を行う。ホスト１０Ｃは、例えば、TCP/IPに基づいてデータ転送を行う。なお、これらのオープン系ホスト１０Ａ〜１０Ｃとしては、例えば、サーバマシン、パーソナルコンピュータ、ワークステーション、携帯情報端末等を挙げることができる。これに対し、メインフレーム系のホスト１０Ｄは、例えば、ESCONに基づいてデータ転送を行う。このほか、メインフレーム系ホストは、FICON、ACONARC、FIBARC等の他の専用プロトコルを介して、ストレージ装置１００とデータ通信を行う場合もある。各ホストは、図外に位置する複数のクライアント端末と別の通信ネットワークを介して接続可能であり、これら各クライアント端末にそれぞれ情報処理サービスを提供することができる。
【００３４】
管理端末２０は、後述のサービスプロセッサ（SVP）１８０を介して、ストレージ装置１００の各種情報を収集したり、ストレージ装置１００に必要な指令を与えるための装置である。管理端末２０は、例えば、LAN（Local Area Network）等の通信ネットワークCN３を介して、SVP１８０に接続されている。管理端末２０は、例えば、ウェブブラウザをベースとしたGUI（Graphical User Interface）を備えており、SVP１８０が提供するWWW（World Wide Web）サーバにログインすることにより、各種情報の収集と指令の入力とを行う。
【００３５】
ストレージ装置１００は、複数のCHA１１０Ａ〜１１０Ｄ（以下、特に区別しない場合は「CHA１１０」）と、複数のDKA１２０Ａ〜１２０Ｄ（以下、特に区別しない場合は「DKA１２０」）と、キャッシュメモリ１３０と、共有メモリ１４０と、各接続制御部１５０，１６０と、記憶部１７０と、SVP１８０とを備えている。
【００３６】
ストレージ装置１００には、複数のCHA１１０を設けることができる。各CHA１１０は、各ホスト１０との間のデータ転送を制御するための専用パッケージである。CHA１１０の詳細はさらに後述するが、各CHA１１０は、複数の通信ポートを備えており、少なくとも一つ以上のホスト１０と接続可能である。各CHA１１０は、ホスト１０との間のデータ転送をそれぞれ個別に制御する。図に示す例では、CHA１１０Ａは、ファイバチャネルプロトコルに基づいて、ホスト１０Ａとの間のデータ転送を制御する。CHA１１０Ｂは、iSCSIに基づいて、ホスト１０Ｂとの間のデータ転送を制御する。CHA１１０Ｃは、TCP/IPに基づいて、ホスト１０Ｃとの間のデータ転送を制御する。なお、このCHA１１０Ｃに、ファイル管理プログラム等を搭載することにより、NAS（Network Attached Storage）機能を実現させることもできる。CHA１１０Ｄは、ESCONに基づいて、メインフレーム系のホスト１０Ｄとの間のデータ転送を制御する。
【００３７】
ストレージ装置１００には、複数のDKA１２０を設けることができる。各DKA１２０は、記憶部１７０とのデータ転送をそれぞれ制御するものである。各DKA１２０は、例えば、ホスト１０から指定された論理ブロックアドレス（LBA）を物理ディスクのアドレスに変換等することにより、各ディスクドライブ１７１にアクセスし、データの読出しまたはデータの書込みを行う。DKA１２０の詳細はさらに後述する。
【００３８】
キャッシュメモリ１３０は、ホスト１０から書き込まれたライトデータや、ホスト１０に読み出されたリードデータを記憶するものである。キャッシュメモリ１３０は、例えば、揮発または不揮発のメモリから構成可能である。キャッシュメモリ１３０が揮発性メモリを含んで構成される場合、図示せぬバッテリ電源等によりメモリバックアップを行うことが好ましい。なお、図示は省略するが、キャッシュメモリ１３０は、リードキャッシュ領域とライトキャッシュ領域との２つの領域から構成することができ、ライトキャッシュ領域に格納されたデータは、多重記憶することができる。つまり、同一のデータがディスクドライブ１７１にも存在するリードデータは、仮に失われたとしても再びディスクドライブ１７１から読み出せば足りるので、多重化する必要はない。これに対し、ライトデータは、ストレージ装置１００内においては、キャッシュメモリ１３０にのみ存在するため、多重化記憶させるのが信頼性の点で好ましい。もっとも、キャッシュデータを多重化して記憶させるか否かは、仕様による。
【００３９】
共有メモリ（あるいは制御メモリとも呼ばれる）１４０は、例えば、不揮発メモリから構成可能であるが、揮発メモリから構成してもよい。共有メモリ１４０には、例えば、制御情報や管理情報等が記憶される。これらの制御情報等の情報は、複数のメモリ１４０により多重管理することができる。
【００４０】
共有メモリ１４０及びキャッシュメモリ１３０は、それぞれ別々のメモリパッケージとして構成することもできるし、同一のメモリパッケージ内にキャッシュメモリ１３０及び共有メモリ１４０を設けてもよい。また、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。つまり、共有メモリとキャッシュメモリとは、同一のメモリとして構成することもできる。
【００４１】
CHA/DKA側の接続制御部（スイッチ部）１５０は、各CHA１１０と、各DKA１２０と、キャッシュメモリ１３０と、共有メモリ１４０とをそれぞれ相互に接続するものである。これにより、全てのCHA１１０，DKA１２０は、キャッシュメモリ１３０及び共有メモリ１４０にそれぞれ個別にアクセス可能である。接続制御部１５０は、例えば、超高速クロスバースイッチ等として構成することができる。ディスクドライブ側の接続制御部１６０は、各DKA１２０と記憶部１７０とをそれぞれ接続するためのものである。
【００４２】
記憶部１７０は、多数のディスクドライブ１７１を備えて構成される。記憶部１７０は、各CHA１１０及び各DKA１２０等のコントローラ部分と共に同一の筐体内に設けることもできるし、コントローラ部分とは別の筐体内に設けることもできる。
【００４３】
記憶部１７０には、複数種類のディスクドライブ１７１Ａ〜１７１Ｃ（特に区別しない場合は、「ディスクドライブ１７１」）を混在させることができる。例えば、第１のディスクドライブ１７１Ａは、ＦＣディスク（ファイバチャネルディスク）である。また、例えば、第２のディスクドライブ１７１Ｂは、SCSI（Small Computer System Interface）ディスクである。さらに、例えば、第３のディスクドライブ１７１Ｃは、SATA（Serial AT Attachment）ディスクである。ディスクの種類は、上記のものに限定されない。
【００４４】
ここで、一般的には、ＦＣディスク、SCSIディスク、SATAディスクの順番で、データ処理性能が低下する。現在最もデータ処理性能が高いのは、ＦＣディスクである。データ処理性能には、例えば、IOPS（input/output per second）性能やMB/秒性能、データへのアクセス時間等を含めることができる。例えば、高性能で信頼性の高いＦＣディスクは、ミッションクリティカルなデータに高速にアクセスする必要がある場合に使用され、ＦＣディスクほど高性能ではないSATAディスクは、高速アクセス等が要求されないアーカイブデータの保存等に使用される。
【００４５】
本実施例のストレージ装置１００は、このように多種類のディスクドライブ１７１Ａ〜１７１Ｃを混在させることができ、各ディスクドライブ１７１Ａ〜１７１Ｃの特性に応じた使い分けが可能である。
【００４６】
記憶部１７０には、複数のRAIDグループ１７２を設けることができる。各RAIDグループ１７２は、同一種類の物理ディスク１７１からそれぞれ構成される。即ち、あるRAIDグループ１７２は、ＦＣディスク１７１Ａのみから構成され、他のRAIDグループ１７２は、SATAディスク１７１Ｃのみから構成される。また、あるRAIDグループ１７２は、SCSIディスク１７１Ｂのみから構成される。そして、各RAIDグループ１７２がそれぞれ提供する論理的な記憶領域には、少なくとも一つ以上の論理ボリューム（LU：Logical Unit）を設けることができる。各ホスト１０は、この論理ボリュームに対してアクセスし、データの書込みまたは読出しを行う。なお、オープン系ホスト１０Ａ〜１０Ｃのアクセス対象ボリュームはＬＵであるが、メインフレーム系ホスト１０Ｄのアクセス対象ボリュームは、論理デバイス（LDEV）となる。
【００４７】
ところで、ストレージ装置１００が使用する記憶資源は、全てストレージ装置１００内に存在する必要はない。ストレージ装置１００は、ストレージ装置１００の外部に存在する記憶資源を、あたかも自己の記憶資源であるかのように取り込んで、利用することもできる。即ち、例えば、ストレージ装置１００は、ホスト１０を介さずに、外部に設置された自社の又は他社のストレージ装置（不図示）とSAN（Storage Area Network）等を介して直接的に接続することができる。そして、ストレージ装置１００は、外部のストレージ装置が有する論理ボリュームを、自己のＬＵやLDEVあるいは中間ボリュームにマッピングすることにより、外部の論理ボリュームを取り込むことができる。
【００４８】
SVP１８０は、LAN等の内部ネットワークＣＮ２を介して、各CHA１１０及び各DKA１２０とそれぞれ接続されている。SVP１８０は、ストレージ装置１００内部の各種状態を収集し、そのままで又は加工して、管理端末２０に提供する。
【００４９】
図３は、ストレージ装置１００の記憶構造に着目した構成説明図である。ストレージ装置１００の記憶構造は、物理的なディスクであるPDEV（Physical Device）１７１と、グループ化された複数のPDEV１７１が提供する仮想的な記憶領域であるVDEV（Virtual Device）１７２と、このVDEV１７２に設定されたLDEV（Logical Device）１７３とから構成することができる。ここで、PDEV１７１は、図２中のディスクドライブ１７１に対応し、VDEV１７２は、図２中のRAIDグループ１７２に対応する。
【００５０】
ここで、幾つかの論理ボリューム（LDEV）には、LUN（Logical Unit Number ）がそれぞれ割り当てられており、オープン系ホスト１０Ａ〜１０ＣからＬＵ１７４として認識される。オープン系ホスト１０Ａ〜１０Ｃは、ターゲットポート１１１Ａ〜１１１Ｃを介して、アクセス権限のある論理ボリューム（ＬＵ１７４）にそれぞれアクセスする。ターゲットポート１１１Ａ〜１１１Ｃは、図２中の各CHA１１０が提供する通信ポートである。一方、メインフレーム系ホスト１０Ｄ，１０Ｅは、ポート１１１Ｄ，１１１Ｅを介して、アクセス権限を有するLDEV１７３にそれぞれアクセスする。
【００５１】
図４は、図２中のCHA１１０の概略ブロック図である。CHA１１０は、例えば、プロトコル制御部２１０と、CHP（Channel Processor）２２０と、ローカルメモリ２３０と、DTA（Data Adapter）２４０及びMPA（MicroProgram Adapter）２５０とを備えることができる。
【００５２】
プロトコル制御部２１０は、所定の通信プロトコルに基づいてパケットデータの送受信を行う回路である。CHP２２０は、CHA１１０の全体制御を司る回路であり、バッファ２２１及びレジスタ２２２を有する。ローカルメモリ２３０は、CHP２２０に提供するための制御情報等を記憶する。ローカルメモリ２３０には、例えば、後述するパケットサイズ管理テーブルＴ１の全部または所定の一部が記憶されている。CHP２２０は、後述のように、プロトコル制御部２１０から入力されたデータに基づいて、パケットサイズ管理テーブルＴ１を参照することにより、キャッシュメモリ１３０との間で使用するパケットのサイズを決定する。決定されたパケットサイズは、レジスタ２２２に記憶される。
【００５３】
キャッシュメモリ１３０は、外部とのデータ転送を行うためのアダプタ１３１を備えている。同様に、共有メモリ１４０は、外部とのデータ転送を行うためのアダプタ１４１を備えている。
【００５４】
DTA２４０は、接続制御部１５０を介して、キャッシュメモリ１３０との間のデータ授受を行うものである。DTA２４０は、レジスタ２２２にセットされたパケットサイズに基づいて、バッファ２２１に格納されたデータを所定量ずつ読み出し、キャッシュメモリ１３０に転送させる。また、DTA２４０は、レジスタ２２２にセットされたパケットサイズに基づいて、キャッシュメモリ１３０から所定量ずつデータを読み込み、この読み込んだデータをバッファ２２１に格納する。バッファ２２１に格納されたデータは、ホスト１０の使用する通信プロトコルにより規定されるパケットサイズで所定量ずつ読み出され、プロトコル制御部２１０によりホスト１０に送信される。
【００５５】
MPA２５０は、接続制御部１５０を介して、共有メモリ１４０との間のデータ授受を行うものである。MPA２５０は、ホスト１０から受信したコマンドを共有メモリ１４０に書込む。また、CHP２２０は、MPA２５０を介して共有メモリ１４０を随時参照することにより、コマンド処理の進捗状況を把握する。また、CHP２２０は、MPA２５０を介して、ローカルメモリ２３０に記憶される制御情報と共有メモリ１４０に記憶される制御情報とを同期させることができる。例えば、共有メモリ１４０に記憶されている制御情報のうち、各CHA１１０で必要とする部分が各CHA１１０のローカルメモリ２３０内のパケットサイズ管理テーブルＴ１にそれぞれ記憶されている。各ローカルメモリ２３０に記憶されるテーブルと共有メモリ１４０に記憶されるテーブル（基準となるテーブル）とは、定期的にまたは必要に応じて、同期させることができる。
【００５６】
図５は、各CHA１１０で使用されるCHA用パケットサイズ管理テーブルＴ１の一例を示す説明図である。CHA用パケットサイズ管理テーブルＴ１は、例えば、項番と、プロトコル種別と、帯域と、パケットサイズとを含めて構成することができる。通信プロトコルの種別としては、例えば、メインフレーム系プロトコルＰＡ，ＰＢと、オープン系プロトコルＰＣ，ＰＤ，ＰＥとに大別することができる。メインフレーム系プロトコルとしては、既に述べたように、例えば、ESCON、FICON等が知られている。また、オープン系プロトコルとしては、既に述べたように、例えば、FIBRE、iSCSI及びNAS（TCP/IP）等が知られている。また、同一の通信プロトコルであっても、帯域等の個別仕様が相違する場合もある。そこで、本実施例では、各プロトコル種別の帯域まで含めて、パケットサイズを管理する。例えば、同じ種類のプロトコルＰＣであっても、１Gbpsの場合と２Gbpsの場合とでは、それぞれ異なる種類の通信プロトコルとして識別され、それぞれに応じたパケットサイズがパケットサイズ管理テーブルＴ１に予め設定されている。
なお、図５は、特定の具体的なプロトコルについてのパケットサイズを限定的に示すものではなく、プロトコルの種類に応じて外部パケットのサイズを可変に設定する様子を示すものである。
【００５７】
一つの例として、例えば、通信帯域２００Mbpsのメインフレーム系プロトコルＰＡには、８００バイト程度のパケットサイズを予め設定しておくことができる。また、他のメインフレーム系プロトコルＰＢについては、例えば、通信帯域が１Gbpsの場合に４ｋバイト程度のパケットサイズを、通信帯域が２Gbpsの場合に８ｋバイト程度のパケットサイズを、それぞれ予め設定しておくことができる。
【００５８】
オープン系のプロトコルＰＣについては、例えば、１Gbpsの場合に４ｋバイト程度のパケットサイズを、２Gbpsの場合に８ｋバイト程度のパケットサイズを、４Gbpsの場合に１６ｋバイト程度のパケットサイズを、１０Gbpsの場合に４０ｋバイト程度のパケットサイズを、それぞれ予め設定しておくことができる。
【００５９】
さらに別のオープン系プロトコルＰＤは、その通信帯域が１．２５Gbpsであるとすると、例えば、４ｋバイト程度のパケットサイズを予め設定可能である。またさらに別のオープン系プロトコルＰＥは、その通信帯域が１．２５Gbpsであるとすると、例えば、４ｋバイト程度のパケットサイズを予め設定しておくことができる。
【００６０】
このように、CHA用パケットサイズ管理テーブルＴ１には、各通信プロトコルの種類毎に、それぞれの通信プロトコルに適合するパケットサイズが予め設定されている。本実施例では、通信プロトコルのデータ通信速度が高くなるほど、パケットサイズも大きくなるように設定する。なお、上述の各帯域及び各パケットサイズの数値は、説明のための一例であって、本発明はこれらの数値に限定されない。
【００６１】
本発明の一つの特徴は、ホスト１０とCHA１１０との間のデータ通信速度に合わせて、CHA１１０とキャッシュメモリ１３０との間で使用されるパケットサイズを自動的に調節する点にある。本実施例では、ホスト１０とCHA１１０との間のデータ通信速度（外部データ通信速度）と、CHA１１０とキャッシュメモリ１３０との間のデータ通信速度（内部データ通信速度）とが適合するように、CHA用パケットサイズ管理テーブルＴ１の値を設定可能である。一つの例としては、ホスト１０とCHA１１０との間で使用されるパケットサイズと、CHA１１０とキャッシュメモリ１３０との間で使用されるパケットサイズとが等しいか又は略一致するように、CHA用パケットサイズ管理テーブルＴ１を構築することができる。もっとも、ストレージ装置１００の内外でそれぞれ使用されるパケットのサイズは、完全に一致している必要は必ずしもない。
【００６２】
次に、図６及び図７に基づいて、ストレージ装置１００の動作概略を説明する。まず、図６は、WRITEコマンドを処理する場合の概略フローチャートである。ホスト１０は、WRITEコマンド及びライトデータを、所定の通信プロトコルに従って、特定のCHA１１０に送信する（Ｓ１１）。ホスト１０からCHA１１０には、固定された通信帯域でデータが送信される。
【００６３】
CHA１１０は、プロトコル制御部２１０を介して、ホスト１０からのWRITEコマンド等を受信する（Ｓ１２）。プロトコル制御部２１０は、WRITEコマンド及びライトデータを、ホスト１０の使用する通信帯域に従って（ホスト１０の通信プロトコルが使用するパケットサイズに従って）、CHP２２０に転送する（Ｓ１３）。
【００６４】
ここで、プロトコル制御部２１０は、CHP２２０に転送するライトデータの先頭に、通信プロトコルの種類を示すための情報を付加する。この付加される情報は、例えば、プロトコル種類判別情報と呼ぶことができる。プロトコル種類判別情報には、例えば、プロトコル制御部２１０の種類を示す情報と、ホスト１０とCHA１１０との間の通信帯域を示す情報とを含めることができる。プロトコル制御部２１０の種類を示す情報とは、そのプロトコル制御部２１０が、どのような通信プロトコル（ESCONやFIBRE等）に対応する回路であるかを示す情報である。
【００６５】
CHP２２０は、プロトコル制御部２１０から受信したライトデータを、バッファ２２１に一時的に記憶させる（Ｓ１４）。そして、CHP２２０は、バッファ２２１に格納されたデータの先頭部分、即ち、プロトコル制御部２１０によって付加されたプロトコル種類判別情報を読み取り、ホスト１０との間の通信環境（通信プロトコルの種別と通信帯域）を識別する（Ｓ１５）。
【００６６】
CHP２２０は、識別された通信環境に基づいて、CHA用パケットサイズ管理テーブルＴ１を参照し、予め設定されているパケットサイズを読出し、この読み出されたパケットサイズをレジスタ２２２にセットする（Ｓ１６）。
【００６７】
CHP２２０は、レジスタ２２２に設定されたパケットサイズに従って、バッファ２２１に記憶されたデータを所定量ずつ読出し、DTA２４０からキャッシュメモリ１３０に向けて転送させる（Ｓ１７）。ここで、ホスト１０からプロトコル制御部２１０を介してCHP２２０に転送されるパケットのサイズ（外部パケットのサイズ）と、CHP２２０からDTA２４０を介して、キャッシュメモリ１３０に転送されるパケットのサイズ（内部パケットのサイズ）とは、適合している。従って、外部パケットから内部パケットへのデータの移し替えは速やかに行われ、CHA１１０に着信したパケットのデータは、直ちにキャッシュメモリ１３０に向けて転送される。なお、付加的な情報であるプロトコル種別判別情報は、キャッシュメモリ１３０に転送しない。
【００６８】
DTA２４０から送り出されたパケットは、接続制御部１５０を介して、キャッシュメモリ１３０のアダプタ１３１に送信される。ここで、接続制御部１５０は、DTA２４０から受信したパケットサイズを変えることなく、そのままキャッシュメモリ１３０に送信する。
【００６９】
キャッシュメモリ１３０のアダプタ１３１は、接続制御部１５０を介して、CHA１１０からのパケットを受信し、このパケットからデータを取り出して、所定の記憶領域に記憶させる（Ｓ１８）。キャッシュメモリ１３０への書込みが完了すると、アダプタ１３１は、書込み完了をCHA１１０に報告することができる（Ｓ１９）。
【００７０】
CHA１１０は、キャッシュメモリ１３０からの書込み完了報告を受信すると、ホスト１０に対して、WRITEコマンドの処理が完了した旨を報告する（Ｓ２０）。ホスト１０は、CHA１１０からの処理完了報告を受信する（Ｓ２１）。このように、キャッシュメモリ１３０にライトデータを格納した時点で、ホスト１０に処理完了を報告することにより、ストレージ装置１００の応答性を高めることができる。
【００７１】
なお、キャッシュメモリ１３０に書き込まれたライトデータは、適当な時期に、DKA１２０によって、所定のディスクドライブ１７１に書き込まれる。DKA１２０は、共有メモリ１４０を随時参照しており、未処理のWRITEコマンドを共有メモリ１４０上に発見すると、キャッシュメモリ１３０からライトデータを読出す。DKA１２０は、WRITEコマンドによって指定されたボリューム１７３を構成する所定のディスクドライブ１７１に、ライトデータを書き込む。DKA１２０がライトデータを所定のディスクドライブ１７１に書き込むまでの間、キャッシュメモリ１３０上では、ライトデータを多重記憶することができる。
【００７２】
次に、図７は、READコマンドを処理する場合の概略フローチャートである。まず、ホスト１０は、読出しを希望するデータのアドレスを指定してREADコマンドを発行する（Ｓ３１）。
【００７３】
CHA１１０のプロトコル制御部２１０は、ホスト１０からREADコマンドを受信すると（Ｓ３２）、このREADコマンドをCHP２２０に転送する（Ｓ３３）。このとき、プロトコル制御部２１０は、上述したプロトコル種類判別情報を、例えば、READコマンドの先頭に付加してCHP２２０に転送する。上述のように、プロトコル種類判別情報には、プロトコル制御部２１０のタイプ（どの通信プロトコルに対応しているかのタイプ）と、ホスト１０との通信帯域を示す情報とが含まれている。CHP２２０は、プロトコル制御部２１０から入力されたプロトコル種類判別情報に基づいて、ホスト１０が使用する通信プロトコルの種類と通信帯域とを特定する（Ｓ３４）。
【００７４】
CHP２２０は、この特定された通信プロトコル及び通信帯域を検索キーとしてCHAパケットサイズ管理テーブルＴ１を参照し、ホスト１０との間の通信環境に適合するパケットサイズを読出して、レジスタ２２２にセットする（Ｓ３５）。
【００７５】
CHP２２０は、レジスタ２２２にセットされたパケットサイズに従って、キャッシュメモリ１３０にデータの読出しを要求する（Ｓ３６）。キャッシュメモリ１３０のアダプタ１３１は、要求されたデータをキャッシュメモリ１３０から読出し、Ｓ３６で指定されたパケットサイズでCHA１１０に転送する（Ｓ３７）。要求されたデータがキャッシュメモリ１３０上に存在しない場合、要求されたデータは、DKA１２０を介してディスクドライブ１７１から読み出され、キャッシュメモリ１３０上に記憶される。
【００７６】
CHP２２０は、キャッシュメモリ１３０からデータを取得すると、このデータをバッファ２２１に一時的に記憶させる（Ｓ３８）。バッファ２２１に記憶されたデータは、プロトコル制御部２１０を介して、ホスト１０に転送される（Ｓ３９）。ホスト１０は、所定のパケットサイズでデータを受信する（Ｓ４０）。
【００７７】
本実施例は、上述のように、ホスト１０とCHA１１０との間のパケットサイズと、CHA１１０とキャッシュメモリ１３０との間のパケットサイズとを適合させるため、ストレージ装置１００内のデータ転送効率を高めて処理性能を改善することができる。この効果について、図８〜図１０を参照しつつ説明する。
【００７８】
図８は、ホスト１０とCHA１１０との間のパケット３１０のサイズＰＳ１０と、CHA１１０とキャッシュメモリ１３０との間のパケット３２０のサイズＰＳ２０とが不適合な場合を示す説明図である。CHA１１０とキャッシュメモリ１３０との間のパケットサイズＰＳ２０を固定化する場合は、最速の通信プロトコルに合わせて固定することが考えられる。このため、パケットサイズＰＳ２０は、比較的大きく設定される。
【００７９】
しかし、ストレージ装置１００は、種々多様なホスト１０に接続され、通信環境はそれぞれ相違する。従って、高速なホスト１０に合わせて調整済のCHA１１０が、もしも低速なデータ通信を行うホスト１０に接続された場合は、内外のパケットサイズＰＳ２０，ＰＳ１０が大きく異なる結果となる。
【００８０】
従って、ホスト１０からパケット３１０が着信した場合でも、このパケット３１０から取り出されたデータがパケット３２０を満たすまでの間、パケット３２０はキャッシュメモリ１３０に向けて転送されないことになる。図８中の（ａ）〜（ｅ）に示すように、ホスト１０から次々に着信するパケット３１０によって、ストレージ装置１００内のパケット３２０が所定量のデータで満たされるまで、パケット３２０は転送されない。そして、図８（ｆ）に示すように、パケット３２０が所定量のデータで満たされると、このパケット３２０は、キャッシュメモリ１３０に向けて転送され、キャッシュメモリ１３０に格納される。
【００８１】
図８では、ホスト１０からのWRITEコマンドを処理する場合の例であるが、READコマンドを要求する場合も同様の問題を生じる。READコマンドを処理する場合、大きなパケットサイズＰＳ２０で読み出されたデータは、小さなパケットサイズＰＳ１０で少しずつホスト１０に転送される。
【００８２】
このように、ホスト−CHA間のパケット３１０のサイズＰＳ１０と、CHA−キャッシュメモリ間のパケット３２０のサイズとが大きく異なる場合は、CHA１１０内でデータ転送が滞り、データ転送効率が低下する。
【００８３】
図９は、本実施例によるデータ転送の様子を模式的に示す説明図である。上述の通り、本実施例では、ホスト１０が使用する通信プロトコル及びその通信帯域に応じて、最適なパケットサイズを予め求めてあり、ホスト１０の使用するパケットサイズに適合するパケットサイズＰＳ２１を設定する。
【００８４】
図９（ａ）に示すように、ホスト１０からのWRITEコマンドを処理する前に、ホスト１０の使用するパケット３１０のサイズＰＳ１０に合わせて、パケット３２１のサイズＰＳ２１を設定する。ＰＳ１０とＰＳ２１とは、等しいか又は略一致するものとする。従って、図９（ｂ）〜（ｆ）にそれぞれ示すように、ホスト１０から着信したパケット３１０のデータは、速やかにパケット３２１に移し替えられ、直ちにキャッシュメモリ１３０に向けて送り出される。従って、パケット処理がCHA１１０内で滞ることがなく、効率的にデータ転送を行うことができる。
【００８５】
図１０は、READコマンドを処理する場合の模式図である。図９で述べたと同様に、ホスト１０の使用するパケット３１０のサイズＰＳ１０と、CHA１１０がストレージ装置１００の内部で使用するパケット３２１のサイズＰＳ２１とは適合している。従って、キャッシュメモリ１３０からパケット３２１を介して読み出されたデータは、速やかにパケット３１０に移し替えられて、ホスト１０に向けて送信される。
【００８６】
図９，図１０では、ホスト１０とCHA１１０との間で使用されるパケット３１０のサイズＰＳ１０が比較的小さい場合を例示したが、これに限らず、パケット３１０のサイズＰＳ１０が比較的大きい場合は、これに応じて、ストレージ装置１００内で使用されるパケット３２１のサイズＰＳ２１も大きく設定される。
【００８７】
以上の効果に加えて、本実施例では、ホスト１０との間で使用される通信プロトコルの種類に応じて最適なパケットサイズを予め求め、CHA用パケットサイズ管理テーブルＴ１に登録しておくため、通信プロトコルの種類を特定するだけで直ちに最適なパケットサイズを設定することができる。なお、これに限らず、ホスト１０との間のデータ転送速度に基づいて、所定の演算を行うことにより、内部パケット３２０のサイズを決定する構成としてもよい。また、トライアンドエラー方式のように、内部パケットのサイズを段階的に徐々に変化させて最適なパケットサイズを模索する構成でもよい。
【実施例２】
【００８８】
図１１〜図１６に基づいて、本発明の第２実施例を説明する。本実施例の特徴は、ディスクドライブ１７１の種類に応じて、DKA１２０とキャッシュメモリ１３０との間で使用するパケットのサイズを可変に制御する点にある。
【００８９】
図１１は、DKA１２０の構成を示すブロック図である。DKA１２０は、例えば、ディスク制御部４１０と、DKP（Disk Processor）４２０と、ローカルメモリ４３０と、DTA４４０と、MPA４５０とを備えて構成することができる。DKA１２０は、後述のように、CHA１１０と類似の構成を備える。従って、場合によっては、ホスト１０との間のデータ転送を司るCHA機能と、ディスクドライブ１７１との間のデータ転送を司るDKA機能とを、同一の制御パッケージにまとめることも可能である。
【００９０】
ディスク制御部４１０は、接続制御部１６０を介して、記憶部１７０の各ディスクドライブ１７１とデータ通信を行う回路である。DKP４２０は、DKA１２０の全体制御を司る制御回路であり、バッファ４２１及びレジスタ４２２を有する。ローカルメモリ４３０は、DKP４２０に提供するための制御情報等を記憶する。CHA１１０と同様に、ローカルメモリ４３０には、後述するDKA用パケットサイズ管理テーブルＴ２の全部または所定の一部が記憶される。
【００９１】
DKP４２０は、後述のように、ディスク制御部４１０から入力されたデータに基づいて、パケットサイズ管理テーブルＴ２を参照することにより、キャッシュメモリ１３０との間で使用するパケットのサイズを決定する。決定されたパケットサイズは、レジスタ４２２に記憶される。レジスタ４２２にセットされたパケットサイズに従って、DKA１２０とキャッシュメモリ１３０との間のデータ転送が行われる。
【００９２】
DTA４４０は、CHA/DKA側の接続制御部１５０を介して、キャッシュメモリ１３０との間のデータ授受を行う。DTA４４０は、レジスタ４２２にセットされたパケットサイズに基づいて、バッファ４２１に格納されたデータを所定量ずつ読み出し、キャッシュメモリ１３０に転送させる。また、DTA４４０は、レジスタ４２２にセットされたパケットサイズに基づいて、キャッシュメモリ１３０から所定量ずつデータを読み込み、この読み込んだデータをバッファ４２１に格納する。バッファ４２１に格納されたデータは、ディスク制御部４１０を介して、所定のディスクドライブ１７１に転送される。
【００９３】
MPA４５０は、CHA/DKA側の接続制御部１５０を介して、共有メモリ１４０との間のデータ授受を行う。DKP４２０は、MPA４５０を介して共有メモリ１４０にアクセスし、コマンド処理の結果等を記憶する。また、DKP４２０は、MPA４５０を介して、ローカルメモリ４３０に記憶される制御情報と共有メモリ１４０に記憶される制御情報とを同期させることができる。
【００９４】
図１２は、各DKA１２０で使用されるDKA用パケットサイズ管理テーブルＴ２の一例を示す説明図である。DKA用パケットサイズ管理テーブルＴ２は、例えば、項番と、ディスク種別ＤＡ〜ＤＣと、帯域と、パケットサイズとを含めて構成可能である
【００９５】
ディスク種別ＤＡ〜ＤＣとしては、例えば、ＦＣディスク、SCSIディスク、SATAディスク等を挙げることができるが、これらに限定されない。また、同一のディスク種別であっても、帯域等の個別仕様が相違する場合もある。そこで、本実施例では、各ディスク種別の帯域まで含めて、パケットサイズを管理する。例えば、２GbpsのディスクＤＡと４GbpsのディスクＤＡ及び１０GbpsのディスクＤＡとは、それぞれ異なる種類のディスク種別として識別され、それぞれに応じたパケットサイズがパケットサイズ管理テーブルＴ２に予め設定されている。
【００９６】
DKA用パケットサイズ管理テーブルＴ２の具体例を例示的に説明すると、例えば、ディスクＤＡについては、通信帯域が２Gbpsの場合に８ｋバイト程度のパケットサイズを、通信帯域が４Gbpsの場合に１６ｋバイト程度のパケットサイズを、１０Gbpsの場合に４０ｋバイト程度のパケットサイズを、それぞれ予め設定しておくことができる。また、通信帯域が３．２GbpsのディスクＤＢの場合は、例えば、１３ｋバイト程度のパケットサイズを予め設定しておくことができる。さらに、ディスクＤＣについては、例えば、通信帯域が１．５Gbpsの場合に６ｋバイト程度のパケットサイズを、通信帯域が３Gbpsの場合に１２ｋバイト程度のパケットサイズを、通信帯域が６Gbpsの場合に２４ｋバイト程度のパケットサイズを、それぞれ予め設定しておくことができる。
【００９７】
CHA用パケットサイズ管理テーブルＴ１と同様に、DKA用パケットサイズ管理テーブルＴ２には、各ディスク種別ＤＡ〜ＤＣ毎に、それぞれのディスク種別に適合するパケットサイズが予め設定されている。本実施例では、ディスクのデータ処理速度が高くなるほど、パケットサイズも大きくなるように設定する。ここで、ディスクの総合的なデータ処理速度は、ディスク回転数やシーク時間だけでなく、コマンドキューイング等の制御構造等によっても変化する。なお、テーブルＴ２に示す各数値は、説明のための一例であって、本発明はこれらの数値に限定されない。ディスクドライブ１７１とDKA１２０との間で使用されるパケットサイズと、DKA１２０とキャッシュメモリ１３０との間で使用されるパケットサイズとは、等しいか又は略一致するように設定することができる。
【００９８】
図１３は、DKA１２０によるWRITE処理のフローチャートである。DKA１２０から見た場合のWRITE処理とは、キャッシュメモリ１３０にデータを書き込む処理を言う。従って、CHA１１０におけるREAD処理に対応する処理となる。
【００９９】
DKA１２０は、共有メモリ１４０上に未処理のREADコマンドを発見すると、このREADコマンドに含まれる論理アドレスを物理アドレスに変換し、所定のディスクドライブ１７１からデータを読み出す（Ｓ５１）。ディスクドライブ１７１は、要求されたデータをDKA１２０に転送する（Ｓ５２）。ディスクドライブ１７１からのデータは、ディスク制御部４１０に入力される（Ｓ５３）。
【０１００】
ディスク制御部４１０は、例えば、ディスクドライブ１７１から読み込んだデータの先頭に、ディスク種類判別情報を付加して、DKP４２０に転送する（Ｓ５４）。このディスク種類判別情報には、例えば、ディスクの種別及びディスクの処理速度の情報を含めることができる。
【０１０１】
DKP４２０は、ディスク制御部４１０からデータを受信すると、この受信データをバッファ４２１に一時的に記憶させる（Ｓ５５）。そして、DKP４２０は、データの先頭を読み込み、ディスク種類判別情報に基づいて、ディスクドライブ１７１の種別と処理速度を特定する（Ｓ５６）。DKP４２０は、DKA用パケットサイズ管理テーブルＴ２を参照し、ディスクドライブ１７１に適合するパケットサイズを選択し、この選択されたパケットサイズをレジスタ４２２にセットする（Ｓ５７）。
【０１０２】
DTA４４０は、レジスタ４２２にセットされたパケットサイズに従って、バッファ４２１からデータを読み出し、キャッシュメモリ１３０に向けて転送する（Ｓ５８）。キャッシュメモリ１３０のアダプタ１３１は、DKA１２０からのデータを受信すると、このデータをキャッシュメモリ１３０の所定の場所に格納し（Ｓ５９）、書込み完了をDKA１２０に報告する（Ｓ６０）。DKA１２０は、キャッシュメモリ１３０のアダプタ１３１から書込み完了報告を受信すると、CHA１１０に報告する（Ｓ６１）。この報告は、例えば、共有メモリ１４０を介して行われる。なお、図中では、説明の便宜上、一つのブロックデータをキャッシュメモリ１３０に格納した時点で、DKA１２０からCHA１１０に報告するかのように示しているが、CHA１１０から要求されたデータの全体をキャッシュメモリ１３０に格納した時点で報告することができる。
【０１０３】
以下、DKA１２０は、ディスクドライブ１７１のデータ処理速度に適合したパケットサイズに基づいて、ディスクドライブ１７１から読出したデータをキャッシュメモリ１３０に転送する。全てのデータがキャッシュメモリ１３０にコピーされると、上述の通り、CHA１１０は、ホスト１０との通信環境に適合したパケットサイズでキャッシュメモリ１３０からデータを読み込み、ホスト１０に送信する。
【０１０４】
図１４は、DKA１２０によるREAD処理を示すフローチャートである。DKA１２０によるREAD処理とは、キャッシュメモリ１３０からデータを読み込んで所定のディスクドライブ１７１に書き込む処理を言う。従って、CHA１１０によるWRITE処理に続いて実行される処理である。
【０１０５】
DKA１２０は、MPA４５０を介して共有メモリ１４０を随時参照し、未処理のWRITEコマンドを発見する。ディスク制御部４１０は、DKP４２０に対し、キャッシュメモリ１３０からデータを読み込むよう要求する（Ｓ７１）。このデータ読み込み要求の際に、ディスク制御部４１０は、データを書き込むべきディスクドライブ１７１の種別及びデータ処理速度を含むディスク種類判別情報を合わせて通知する。
【０１０６】
DKP４２０は、ディスク制御部４１０からのリード要求の先頭に付加されたディスク種類判別情報に基づいて、データ格納先のディスクドライブ１７１の種別及びデータ処理速度を識別する（Ｓ７２）。DKP４２０は、DKA用パケットサイズ管理テーブルＴ２を参照することにより、ディスクの種別及びデータ処理速度に適合するパケットサイズを読出して、レジスタ４２２にセットする（Ｓ７３）。
【０１０７】
DKP４２０は、レジスタ４２２にセットしたパケットサイズに従って、キャッシュメモリ１３０からデータを読出す（Ｓ７４）。キャッシュメモリ１３０のアダプタ１３１は、要求されたデータを指定されたパケットサイズでDKA１２０に送信する（Ｓ７５）。
【０１０８】
DKP４２０は、キャッシュメモリ１３０から読み込んだデータをバッファ４２１に一時的に格納し（Ｓ７６）、バッファ４２１に格納したデータをレジスタ４２２にセットされたサイズのパケットによりディスク制御部４１０に転送する（Ｓ７７）。
【０１０９】
ディスク制御部４１０は、DKP４２０からデータを受信すると、RAID構成に基づいて、このデータを所定のディスクドライブ１７１に記憶させる（Ｓ７８）。例えば、RAID５の場合、パリティ計算を行い、データとパリティとを所定の各ディスクドライブ１７１にそれぞれ記憶させる。また、例えば、RAID１の場合、同一のデータをそれぞれ異なるディスクドライブ１７１に記憶させる。そして、所定の各ディスクドライブ１７１は、ディスク制御部４１０から受信したデータをそれぞれ記憶する（Ｓ７９）。
【０１１０】
本実施例でも、前記実施例と同様に、使用するディスクドライブ１７１の種類に応じてパケットサイズを可変に設定する構成のため、DKA１２０内部でデータ転送が滞るのを防止し、データ転送効率を高めることができる。
【０１１１】
例えば、図１５に示すように、ディスクドライブ１７１から読み込んだデータをキャッシュメモリ１３０に転送する場合、ディスク−DKA間のパケット３３０のサイズＰＳ３０と、DKA−キャッシュメモリ間のパケット３４０のサイズＰＳ４０とは、等しいか又は略一致している。従って、ディスクドライブ１７１から読み込んだデータを、速やかにパケット３４０に移し替えてキャッシュメモリ１３０に直ちに転送できる。
【０１１２】
図１６に示すように、キャッシュメモリ１３０から読み込んだデータをディスクドライブ１７１に転送する場合も同様である。DKA−キャッシュメモリ間のパケット３４０のサイズと、ディスク−DKA間のパケット３３０のサイズとは等しいか又は略一致するため、キャッシュメモリ１３０から読み込まれたデータは、速やかにパケット３３０に移し替えられてディスクドライブ１７１に転送される。
【０１１３】
このように、本実施例でも前記実施例と同様の効果を奏する。これに加えて、CHA１１０における内部パケットサイズの可変制御とDKA１２０における内部パケットサイズの可変制御とが有機的に結合することにより、ストレージ装置１００内部のデータ転送効率が第１実施例の場合よりも改善される。ここで、CHA１１０が使用するパケットサイズとDKA１２０が使用するパケットサイズとは、一致している必要はない。
【実施例３】
【０１１４】
図１７は、第３実施例に係るストレージ装置１００で使用されるパケットサイズ管理テーブルＴ１Ａ，Ｔ１Ｂを示す説明図である。本実施例では、コマンドの種類毎に、それぞれ別々のパケットサイズ管理テーブルを用意する。
【０１１５】
従って、例えば、READコマンドとWRITEコマンドとによって、それぞれ設定されるパケットサイズが異なる場合もある。このように、コマンドの種類及びホスト１０との通信環境に応じて最適なパケットサイズを可変に設定することにより、より柔軟にストレージ装置１００内のパケットサイズを制御することができ、コマンド種類に応じたデータ転送を行うことも可能となる。
【０１１６】
なお、図１７では、CHA用パケットサイズ管理テーブルＴ１Ａ，Ｔ１Ｂを例示したが、DKA用パケットサイズ管理テーブルＴ２においても、コマンド種類毎にそれぞれ別々のテーブルを設けることができる。
【０１１７】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、ストレージ装置の内部を論理的に分割し、仮想的なストレージ装置を複数個設ける場合も、各仮想ストレージ装置毎に、それぞれパケットサイズを可変に制御することができる。
【０１１８】
また、前記各実施例では、ホストまたはディスクドライブとの間のデータ転送を開始する度に、最適なパケットサイズを毎回設定する構成としたが、これに限らず、ひとかたまりのデータ転送（ファイバチャネルの場合のシーケンスまたはエクスチェンジ）毎に、最適なパケットサイズを設定する構成でもよい。あるいは、CHAの場合、最初のデータ転送開始時にパケットサイズを一回だけ設定し、パスの物理的障害が検出された場合にパケットサイズをリセットし、パスの障害が回復した後の最初のデータ転送時に、改めてパケットサイズを設定する構成としてもよい。
【図面の簡単な説明】
【０１１９】
【図１】本発明の実施形態の概念を示す説明図である。
【図２】ストレージ装置のハードウェア構成に着目したブロック図である。
【図３】ストレージ装置の論理的構成に着目した説明図である。
【図４】CHA周辺の概略構成を示すブロック図である。
【図５】CHA用パケットサイズ管理テーブルの一例を示す説明図である。
【図６】CHAによるWRITE処理を示すフローチャートである。
【図７】CHAによるREAD処理を示すフローチャートである。
【図８】パケットサイズが不適合の場合のデータ転送の様子を模式的に示す説明図である。
【図９】パケットサイズが適合する場合のホストからキャッシュへのデータ転送の様子を模式的に示す説明図である。
【図１０】パケットサイズが適合する場合のキャッシュからホストへのデータ転送の様子を模式的に示す説明図である。
【図１１】DKA周辺の概略構成を示すブロック図である。
【図１２】DKA用パケットサイズ管理テーブルの一例を示す説明図である。
【図１３】DKAによるWRITE処理を示すフローチャートである。
【図１４】DKAによるREAD処理を示すフローチャートである。
【図１５】パケットサイズが適合する場合のディスクからキャッシュへのデータ転送の様子を模式的に示す説明図である。
【図１６】パケットサイズが適合する場合のキャッシュからディスクへのデータ転送の様子を模式的に示す説明図である。
【図１７】コマンド種類毎にそれぞれ異なるパケットサイズ管理テーブルを用意する場合を示す説明図である。
【符号の説明】
【０１２０】
１…ホスト、２…ストレージ装置、３…CHA（チャネルアダプタ）、３Ａ…上位側データ転送部、３Ｂ…チャネル制御部、３Ｂ１…上位Ｉ／Ｆ判別部、３Ｂ２…パケットサイズ設定部、３Ｃ…下位側データ転送部、４…キャッシュメモリ、５…DKA（ディスクアダプタ）、５Ａ…上位側データ転送部、５Ｂ…ディスク制御部、５Ｂ１…下位Ｉ／Ｆ判別部、５Ｂ２…パケットサイズ設定部、５Ｃ…下位側データ転送部、６…ディスクドライブ、７…通信ネットワーク、８Ａ〜８Ｄ…パケットサイズ、１０，１０Ａ〜１０Ｅ…ホスト、１１Ａ〜１１Ｄ…HBA、２０…管理端末、１００…ストレージ装置、１１０，１１０Ａ〜１１０Ｄ…CHA、１１１Ａ〜１１１Ｃ…ターゲットポート、１１１Ｄ〜１１１Ｅ…ポート、１２０，１２０Ａ〜１２０Ｄ…DKA、１３０…キャッシュメモリ、１３１…アダプタ（キャッシュメモリ用）、１４０…共有メモリ、１４１…アダプタ（共有メモリ用）、１５０…接続制御部（CHA/DKA側），１６０…接続制御部（ディスクドライブ側）、１７０…記憶部、１７１，１７１Ａ〜１７１Ｃ…ディスクドライブ（PDEV）、１７２…RAIDグループ（VDEV）、１７３…論理ボリューム（LDEV）、１７４…ＬＵ、１８０…SVP、２１０…プロトコル制御部、２２０…CHP、２２１…バッファ、２２２…レジスタ、２３０…ローカルメモリ、２４０，４４０…DTA、２５０，４５０…MPA、３１０，３２０，３２１，３３０，３４０…パケット、４１０…ディスク制御部、４２０…DKP、４２１…バッファ、４２２…レジスタ、４３０…ローカルメモリ、ＣＮ１Ａ〜ＣＮ１Ｅ…通信ネットワーク、ＣＮ２…通信ネットワーク、ＣＮ３…通信ネットワーク、Ｔ１，Ｔ２…パケットサイズ管理テーブル、Ｔ１Ａ…WRITEコマンド用パケットサイズ管理テーブル、Ｔ１Ｂ…READコマンド用パケットサイズ管理テーブル、ＰＳ１０，ＰＳ２０，ＰＳ２１，ＰＳ３０，ＰＳ４０…パケットサイズ
【図１】
2006085401.tif 000003
【図２】
2006085401.tif 000004
【図３】
2006085401.tif 000005
【図４】
2006085401.tif 000006
【図５】
2006085401.tif 000007
【図６】
2006085401.tif 000008
【図７】
2006085401.tif 000009
【図８】
2006085401.tif 000010
【図９】
2006085401.tif 000011
【図１０】
2006085401.tif 000012
【図１１】
2006085401.tif 000013
【図１２】
2006085401.tif 000014
【図１３】
2006085401.tif 000015
【図１４】
2006085401.tif 000016
【図１５】
2006085401.tif 000017
【図１６】
2006085401.tif 000018
【図１７】
2006085401.tif 000019