(58)【調査した分野】(Int.Cl.,DB名)
複数の記憶デバイスを有し、各前記記憶デバイスがそれぞれ提供する記憶領域を1つのプールとして管理し、前記プールの一部を切り出した論理デバイスを論理ユニットと対応付けて、当該論理ユニットを上位装置に記憶領域として提供するストレージ装置において、
前記上位装置との間でコマンド及びデータを送受するチャネル制御部と、
それぞれ前記上位装置からのコマンドを処理する複数のコマンド処理部と
を備え、
前記論理デバイスごとに、当該論理デバイスのオーナ権を有する前記コマンド処理部が予めそれぞれ設定され、前記論理デバイスと対応付けられた前記論理ユニットを対象とする前記上位装置からの前記コマンドを、当該論理ユニットの前記オーナ権を有する前記コマンド処理部が実行し、
複数の前記論理ユニットが1つのグループとして管理されると共に、当該グループ内の1つの前記論理ユニットが当該グループを代表する論理ユニットとして定義され、
前記グループを代表する前記論理ユニットを対象とする前記コマンドのフォーマットと、当該論理ユニット以外の当該グループ内の前記論理ユニットを対象とする前記コマンドのフォーマットとが異なり、
前記チャネル制御部は、
前記上位装置から与えられた前記コマンドのフォーマットを解析し、
解析結果に基づいて、当該コマンドが対象とする前記論理ユニットが、前記グループ内の当該論理ユニットを代表する前記論理ユニット以外の前記論理ユニットである場合には、当該コマンドの対象となる前記論理ユニットと対応付けられた前記論理デバイスの前記オーナ権を有する前記コマンド処理部に当該コマンドを転送する
ことを特徴とするストレージ装置。
複数の記憶デバイスを有し、各前記記憶デバイスがそれぞれ提供する記憶領域を1つのプールとして管理し、前記プールの一部を切り出した論理デバイスを論理ユニットと対応付けて、当該論理ユニットを上位装置に記憶領域として提供するストレージ装置の制御方法であって、
前記ストレージ装置は、
前記上位装置との間でコマンド及びデータを送受するチャネル制御部と、
それぞれ前記上位装置からのコマンドを処理する複数のコマンド処理部と
を有し、
前記論理デバイスごとに、当該論理デバイスのオーナ権を有する前記コマンド処理部が予めそれぞれ設定され、前記論理デバイスと対応付けられた前記論理ユニットを対象とする前記上位装置からの前記コマンドを、当該論理ユニットの前記オーナ権を有する前記コマンド処理部が実行し、
複数の前記論理ユニットが1つのグループとして管理されると共に、当該グループ内の1つの前記論理ユニットが当該グループを代表する論理ユニットとして定義され、
前記グループを代表する前記論理ユニットを対象とする前記コマンドのフォーマットと、当該論理ユニット以外の当該グループ内の前記論理ユニットを対象とする前記コマンドのフォーマットとが異なり、
前記チャネル制御部が、前記上位装置から与えられた前記コマンドのフォーマットを解析する第1のステップと、
前記チャネル制御部が、解析結果に基づいて、当該コマンドが対象とする前記論理ユニットが、前記グループ内の当該論理ユニットを代表する前記論理ユニット以外の前記論理ユニットである場合には、当該コマンドの対象となる前記論理ユニットと対応付けられた前記論理デバイスの前記オーナ権を有する前記コマンド処理部に当該コマンドを転送する第2のステップと
を備えることを特徴とするストレージ装置の制御方法。
【発明を実施するための形態】
【0014】
以下図面について、本実施の形態を詳述する。
【0015】
(1)本実施の形態による情報処理システムの構成
図1において、1は全体として本実施の形態による情報処理システムを示す。この情報処理システム1は、ホスト計算機2と、第1及び第2のストレージ装置3A,3Bとを備えて構成されている。
【0016】
ホスト計算機2は、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホスト計算機2は、ネットワーク4を介して第1のストレージ装置3Aと接続されており、当該第1のストレージ装置3Aに対してリードコマンドやライトコマンドなどのI/Oコマンドを送信することにより、所望するデータを第1のストレージ装置3Aにリード/ライトする。
【0017】
第1及び第2のストレージ装置3A,3Bは、1又は複数のチャネル制御部10、1又は複数のディスク制御部11、接続部12、キャッシュメモリ13、及び、複数のマイクロプロセッサパッケージ14と、各ディスク制御部11にそれぞれ接続された1又は複数の記憶デバイス15とを備えて構成される。
【0018】
チャネル制御部10は、ホスト計算機2や自ストレージ装置以外の他のストレージ装置(第2又は第1のストレージ装置3B,3A)との通信時におけるインタフェースとして機能するハードウェアであり、1又は複数のポート10Aと、マイクロプロセッサ20、ポート制御部21、ローカルルータ22及びバッファメモリ23とを備える。
【0019】
各ポート10Aには、それぞれIP(Internet Protocol)アドレスやWWN(World Wide Name)などの固有のアドレスが割り当てられる。第1及び第2のストレージ装置3A,3Bに対するアクセスは、アクセス元に許可された特定のポート10Aのアドレスを指定して行われる。
【0020】
マイクロプロセッサ20は、チャネル制御部10全体としての動作制御を司る機能を有するハードウェアであり、制御プログラム24を実行することによりチャネル制御部10全体としての各種処理が行われる。またポート制御部21は、ホスト計算機2との通信時におけるプロトコル制御を行うインタフェースである。
【0021】
ローカルルータ22は、マイクロプロセッサ20が制御プログラム24を実行することにより具現化される仮想的なルータであり、受信したI/Oコマンドを適切なマイクロプロセッサパッケージ14に転送するI/Oコマンド転送機能を有する。なお「適切なマイクロプロセッサパッケージ」の詳細については、後述する。さらにバッファメモリ23は、チャネル制御部10及びホスト計算機2間におけるデータ転送時のデータバッファとして利用される。このバッファメモリ23には、後述する各種の制御情報25も格納される。
【0022】
ディスク制御部11は、記憶デバイス15に対するインタフェースとして機能するハードウェアである。ディスク制御部11は、チャネル制御部10を介して与えられるホスト計算機2からのI/Oコマンドに基づいて対応する記憶デバイス15にアクセスし、当該記憶デバイス15内のそのI/Oコマンドにおいて指定された記憶領域にデータをリード/ライトする。
【0023】
接続部12は、例えば超高速クロスバススイッチなどから構成され、すべてのチャネル制御部10、ディスク制御部11、キャッシュメモリ13及びマイクロプロセッサパッケージ14が接続される。これらチャネル制御部10、ディスク制御部11、キャッシュメモリ13及びマイクロプロセッサパッケージ14間におけるデータや各種コマンドの授受は、この接続部12を介して行われる。
【0024】
キャッシュメモリ13は、それぞれ1又は複数の半導体記憶素子(例えばDRAM(Dynamic Random Access Memory))から構成される。キャッシュメモリ13には、ホスト計算機2からのI/Oコマンドに基づいてチャネル制御部10及びディスク制御部11間でやり取りされるデータ(つまり記憶デバイス15にリード/ライトされるデータ)が一時的に格納される。
【0025】
マイクロプロセッサパッケージ14は、メモリコントローラハブ30及びローカルメモリ31と、複数のマイクロプロセッサ32とを備えて構成される。メモリコントローラハブ30は、複数のマイクロプロセッサ32をローカルメモリ31に接続するハブである。またローカルメモリ31は、例えば、制御プログラム(マイクロプログラム)33を保持するために利用される。
【0026】
マイクロプロセッサ32は、その第1又は第2のストレージ装置3A,3B全体の動作制御を司る機能を有するハードウェアである。マイクロプロセッサ32は、メモリコントローラハブ30を介してローカルメモリ31から制御プログラム(マイクロプログラム)33を読み出し、当該制御プログラム33に従って、チャネル制御部10及び接続部12を介して与えられる上位装置(第1のストレージ装置3Aの場合にはホスト計算機2、第2のストレージ装置3Bの場合には第1のストレージ装置3A)からのI/Oコマンドを処理する。なおI/Oコマンドの処理は、複数のマイクロプロセッサ32のうち、そのときそのI/Oコマンドを処理可能な余裕のあるマイクロプロセッサ32が実行する。
【0027】
記憶デバイス15は、例えばSCSI(Small Computer System Interface)ディスク等の高価なディスクや、SATA(Serial AT Attachment)ディスク又は光ディスク等の安価なディスクなどから構成される。
【0028】
図2に示すように、1又は複数の記憶デバイス15がそれぞれ提供する記憶領域がプール40と呼ばれる1つの記憶領域として管理され、プール40上の一部領域が切り出されて論理デバイス(以下、LDEV(Logical Device)と呼ぶ)41として管理される。そして、これらのLDEV41がそれぞれそのLDEV41と同じ容量を有する論理ユニット42と対応付けられ、これらの論理ユニット42がホスト計算機2に記憶領域として提供される。なお、同一のホスト計算機2に割り当てられた複数の論理ユニット42がホストグループ43として管理される。
【0029】
各論理ユニット42には、それぞれ固有の識別子(LUN)が付与される。そして各論理ユニット42に対するデータのリード/ライトは、このLUNと、論理ユニット42内の所定大きさのブロック(以下、これを論理ブロックと呼ぶ)にそれぞれ付与されたその論理ブロックに固有の番号(LBA:Logical Block Address)とを組み合わせたものをアドレスとして、当該アドレスをI/Oコマンドで指定することにより行われる。なお論理ユニット42へのデータのリード/ライトは、実際には、その論理ユニット42と対応付けられたLDEV41内のI/Oコマンドにおいて指定されたアドレスと対応付けられた記憶領域に対して行われる。
【0030】
かかる構成に加えて、本実施の形態の第1及び第2のストレージ装置3A,3Bには、ホスト計算機2により第1のストレージ装置3A内のある論理ユニット42にライトされたデータを、当該論理ユニット42とペア設定された第2のストレージ装置3B内の論理ユニット42にレプリケート(複製)するレプリケーション機能が搭載されている。
【0031】
このため本情報処理システム1の場合、第1のストレージ装置3Aの特定のチャネル制御部10と、第2のストレージ装置3Bの特定のチャネル制御部10とがケーブル又はネットワーク等の通信路5を介して接続されている。
【0032】
そして第1のストレージ装置3Aは、ホスト計算機2により論理ユニット42にデータがライトされた場合であって、その論理ユニット42が第2のストレージ装置3B内のいずれかの論理ユニット42とペア設定されているときには、かかるライトと同期して又は非同期に、そのデータをI/Oコマンドと共に通信路5を介して第2のストレージ装置3Bに転送する。
【0033】
また、このデータ及びI/Oコマンドを受信した第2のストレージ装置3Bは、このI/Oコマンドに基づいて、そのときデータがライトされた第1のストレージ装置3A内の論理ユニット42とペア設定された自ストレージ装置内の論理ユニット42にこのデータをライトする。
【0034】
(2)LDEVオーナ権
(2−1)LDEVオーナ権の概要
次に、LDEVオーナ権について説明する。本実施の形態の場合、第1及び第2のストレージ装置3A,3Bでは、LDEV41ごとに、そのLDEV41に対するI/Oコマンドを処理する権限を有するマイクロプロセッサパッケージ14が予め設定される。本明細書においては、この権限をそのLDEVに対するLDEVオーナ権と呼ぶものとする。このLDEVオーナ権は、LDEV41の作成時に、外部からの指示に従って、外部からの指示がない場合には自動的にいずれかのマイクロプロセッサパッケージ14に設定される。
【0035】
LDEVオーナ権は、第1又は第2のストレージ装置3A,3Bを停止することなく他のマイクロプロセッサパッケージ14に移動することができる。従って、LDEV41へのI/Oアクセスの状況や、マイクロプロセッサパッケージ14内の各プロセッサ32の稼働率等のモニタリング情報を見ながら適宜LDEVオーナ権を移動させることにより、マイクロプロセッサパッケージ14間での負荷分散を行うことができる。
【0036】
またマイクロプロセッサパッケージ14が障害等で閉塞した場合、そのマイクロプロセッサパッケージ14が有していたすべてのLDEVオーナ権が他のマイクロプロセッサパッケージ14に移動されて、対応するLDEV41に対するI/O処理がLDEVオーナ権の移動先のマイクロプロセッサパッケージ14により継続して処理される。
【0037】
(2−2)LDEVオーナ権に関するローカルルータの機能
第1及び第2のストレージ装置3A,3Bのチャネル制御部に搭載されたローカルルータ22(
図1)は、受信したI/Oコマンドを上述のように適切なマイクロプロセッサパッケージ14に転送するI/Oコマンド転送機能を有する。
【0038】
このI/Oコマンド転送機能は、ホスト計算機2からのI/Oコマンドを適切なマイクロプロセッサパッケージ14に転送する第1のI/Oコマンド転送機能(以下、これをホストI/Oコマンド転送機能と呼ぶ)と、第1及び第2のストレージ装置3A,3B間でデータのレプリケーションが行われている場合に、レプリケーション元の第1のストレージ装置3AからのI/Oコマンドをレプリケーション先の第2のストレージ装置3Bにおいて適切なマイクロプロセッサパッケージ14に転送する第2のI/Oコマンド転送機能(以下、これをストレージ装置間I/Oコマンド転送機能と呼ぶ)とに分けることができる。
【0039】
そしてローカルルータ22は、上述のホストI/Oコマンド転送機能を実現するための手段として、チャネル制御部10(
図1)の各ポート10A(
図1)にそれぞれ対応させて、
図3に示すようなホストターゲット用マイクロプロセッサパッケージ検索テーブル(以下、これをホストターゲット用MPPK検索テーブルと呼ぶ)50を作成して管理している。
【0040】
このホストターゲット用MPPK検索テーブル50は、チャネル制御部10のバッファメモリ23(
図1)に格納された上述の制御情報25(
図1)の一部を構成するもので、SCSI規格に従って上位装置が指定するソースID(SID)と、そのソースIDで管理されるグループを構成する各論理ユニット42と、これらの論理ユニット42とそれぞれ対応付けられた各LDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14との対応関係を管理するために用いられる。
【0041】
実際上、ホストターゲット用MPPK検索テーブル50は、
図3に示すように、SID欄50A、LUN欄50B及び先頭プロセッサ番号欄50Cを備えて構成される。そしてSID欄50Aには、ソースIDが格納され、LUN欄50Bには、対応するグループを構成する各論理ユニット42のLUNがそれぞれ格納される。また先頭プロセッサ番号欄50Cには、対応する論理ユニット42と対応付けられたLDEV41のLDVEオーナ権を有するマイクロプロセッサパッケージ14内のマイクロプロセッサ32(
図1)のうち、その識別番号(以下、これをプロセッサ番号と呼ぶ)が最も小さいマイクロプロセッサ(以下、これを先頭マイクロプロセッサと呼ぶ)32のプロセッサ番号が格納される。
【0042】
そしてローカルルータ22は、ホスト計算機2からのI/Oコマンドを受信した場合には、そのI/OコマンドからソースIDと、当該論理ユニット42のLUNとを取得し、取得したこれらソースID及びLUNの組合せをキーとしてホストターゲット用MPPK検索テーブル50上でその論理ユニット42のLDEVオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32のプロセッサ番号を検索する。またローカルルータ22は、かかる検索により検出した先頭プロセッサ番号に対応するマイクロプロセッサパッケージ14をさらに検索して、そのマイクロプロセッサパッケージ14にそのI/Oコマンドを転送する。
【0043】
一方、ローカルルータ22は、上述のストレージ装置間I/Oコマンド転送機能を実現するための手段として、
図4に示すようなストレージ装置間I/Oコマンド用マイクロプロセッサパッケージ検索テーブル(以下、これをストレージ装置間I/OコマンドMPPK検索テーブルと呼ぶ)51を作成して管理している。
【0044】
このストレージ装置間I/OコマンドMPPK検索テーブル51は、チャネル制御部10(
図1)のバッファメモリ23(
図1)に格納された上述の制御情報25(
図1)の一部を構成するもので、自ストレージ装置内の各LDEV41(
図2)のLDEVオーナ権を管理するために用いられる。
【0045】
実際上、ストレージ装置間I/OコマンドMPPK検索テーブル51は、
図4に示すように、LDEV番号欄51A及び先頭プロセッサ番号欄51Bを備えて構成される。そしてLDEV番号欄51Aには、自ストレージ装置内に定義された各LDEV41のLDEV番号がそれぞれ格納され、また先頭プロセッサ番号欄51Bには、対応するLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32のプロセッサ番号が格納される。
【0046】
ここで、ストレージ装置間のレプリケーションにおいて正側のストレージ装置及び副側のストレージ装置間で転送されるI/Oコマンドは、ベンダユニークなフォーマットでやり取りされることがある。この場合、ホスト計算機2からのI/Oコマンドでは、I/O対象とする論理ユニット42がLUNで指定されており、このI/Oコマンドを受信したストレージ装置において、LUNをLDEV番号に変換することでアクセス先のLDEVを特定するが、ストレージ装置間でのI/Oコマンドのやり取りではI/O対象とする論理ユニットと対応付けられたLDEVのLDEV番号をそのまま正側のストレージ装置から副側のストレージ装置に送信する。
【0047】
本実施の形態においても、第1及び第2のストレージ装置3A,3B間で転送されるI/Oコマンドでは、
図11について後述するSCSIコマンドのLUNフォーマットのうちのバイト0,ビット5〜バイト1,ビット0に、I/O対象とする論理ユニットのLUNに代えて、当該論理ユニットが対応付けられたLDEV41のLDEV番号を格納したベンダユニークなLUNフォーマットが適用される。
【0048】
そして、第1のストレージ装置3AからのI/Oコマンドを受信した第2のストレージ装置3Bは、受信したI/Oコマンドから対象とするLDEV41のLDEV番号を取得し、取得したLDEV番号をキーとして、そのLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32のプロセッサ番号をストレージ装置間I/OコマンドMPPK検索テーブル51上で検索する。また第2のストレージ装置3Bは、この検索により検出した先頭プロセッサ番号と対応付けられているマイクロプロセッサパッケージ14を検索し、そのマイクロプロセッサパッケージ14にそのI/Oコマンドを転送する。
【0049】
(2−3)LDEVオーナ権に関する処理の流れ
図5は、かかるLDEVオーナ権に関連して、I/Oコマンドを受信した第1又は第2のストレージ装置3A,3Bにおいて実行される一連のI/O処理の流れを示す。
【0050】
第1又は第2のストレージ装置3A,3Bのチャネル制御部10は、上位装置(第1のストレージ装置3Aの場合にはホスト計算機2、第2のストレージ装置3Bの場合には第1のストレージ装置3A)からI/Oコマンドが与えられると(SP1)、まず、受信したI/Oコマンドをローカルルータ22により解析し、I/O対象の論理ユニット42を特定する。
【0051】
そしてローカルルータ22は、特定した論理ユニット42と対応付けられたLDEV41(
図2)のLDEVオーナ権を有するマイクロプロセッサパッケージ14を、上述のようにホストターゲット用MPPK検索テーブル50又はストレージ装置間I/OコマンドMPPK検索テーブル51を用いて特定し、特定したマイクロプロセッサパッケージ14にそのI/Oコマンドを転送する(SP2)。
【0052】
かくして、このI/Oコマンドの転送を受けたマイクロプロセッサパッケージ14によりそのI/Oコマンドが処理される(SP3)。
【0053】
一方、
図6は、マイクロプロセッサパッケージ14にI/Oコマンドが転送された直後に、当該I/OコマンドにおいてI/O対象とする論理ユニット42と対応付けられたLDEV41のLDEVオーナ権が他のマイクロプロセッサパッケージ14に移動された場合における処理の流れを示す。
【0054】
このケースでは、上位装置からのI/Oコマンドを受信したチャネル制御部10がそのI/OコマンドをI/O対象のマイクロプロセッサパッケージ14に転送するまでの処理(SP10,SP11)の流れは
図5の場合と同様である。
【0055】
ただし、このケースの場合には、そのI/Oコマンドの転送を受けたマイクロプロセッサパッケージ14がI/O対象のLDEV41のLDEVオーナ権を既に有していないため、そのI/Oコマンドを当該LDEVオーナ権の移動先のマイクロプロセッサパッケージ14に転送する(SP12)。
【0056】
かくして、このI/Oコマンドの転送を受けたマイクロプロセッサパッケージ14によりそのI/Oコマンドが処理される(SP13)。
【0057】
他方、
図7は、第1及び第2のストレージ装置3A,3B間でデータのレプリケーションを実行している場合における処理の流れを示す。
【0058】
このケースでは、ホスト計算機2からのI/Oコマンドを受信した第1のストレージ装置3Aのチャネル制御部10がそのI/OコマンドをI/O対象のマイクロプロセッサパッケージ14に転送するまでの処理(SP20,SP21)の流れは
図5の場合と同様である。
【0059】
ただし、このケースの場合、ホスト計算機2からのI/Oコマンドが転送されたマイクロプロセッサパッケージ14は、I/Oコマンドに従って論理ユニット42にデータをライトした後に(SP22)、そのI/Oコマンド及びそのデータをチャネル制御部10及び通信路5(
図1)を介して第2のストレージ装置3Bに転送する(SP23,SP24)。
【0060】
そして、このI/Oコマンド及びデータを受信した第2のストレージ装置3B側では、
図5について上述した場合と同様にして、そのI/OコマンドにおいてI/O対象として指定された論理ユニット42と対応付けられたLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14に当該I/Oコマンドが転送されて処理される(SP25,SP26)。
【0061】
(3)ロジカル・ユニット・コングロメリット(Logical Unit Conglomerate)
(3−1)コングロメリットLUN(Conglomerate LUN)方式の概要
次に、コングロメリットLUN方式について説明する。コングロメリットLUN方式は、SPC(SCSI Primary Commands)の4r36hにおいて提案されている論理ユニット42の管理方式である。
【0062】
コングロメリットLUN方式では、
図8に示すように、複数の論理ユニット42をロジカル・ユニット・コングロメリットと呼ばれるグループにグループ化し、そのロジカル・ユニット・コングロメリット60内において1つの論理ユニット42をそのロジカル・ユニット・コングロメリット60の代表の論理ユニット42(以下、これをALU(Administrative Logical Unit)42Aと呼ぶ)として定義すると共に、当該グループ内の他の論理ユニット42をそのALU42Aの配下の論理ユニット42(以下、これをSLU(Subsidiary Logical Unit)42Sと呼ぶ)として、そのロジカル・ユニット・コングロメリット60内のALU42Aに関連付ける。
【0063】
この場合、ALU42Aには通常の論理ユニット42と同様にパス定義を行うことで、コングロメリットLUN方式において、上位装置は、ALU42AをSCSIデバイスとして認識し、その配下にあるSLU42Sと同一のロジカル・ユニット・コングロメリット60に属するALU42Aを対象とした
図12について後述するLUNフォーマットのI/Oコマンドにより行う。
【0064】
またロジカル・ユニット・コングロメリット60を構成する各論理ユニット42(ALU42A及びSLU42S)に対しては、それぞれ独立にLDEVオーナ権を設定することができる。従って、例えば
図9に示すように、同一のロジカル・ユニット・コングロメリット60を構成する論理ユニット42のうちの一部に対してあるマイクロプロセッサパッケージ14のLDEVオーナ権を設定し、残りの論理ユニット42に対して他のマイクロプロセッサパッケージ14のLDEVオーナ権を設定することができる。
【0065】
ALU42A及びSLU42Sの対応関係は、
図10(A)に示すALU−SLU関連テーブル62を用いて管理する。このALU−SLU関連テーブル62は、システム内に設定可能なSLU数と同数のALUインデックス欄62Aを備える。そして各ALUインデックス欄62Aは、それぞれいずれかのSLU42Sが対応付けられたLDEV41のLDEV番号と関連付けられる。
【0066】
また各ALUインデックス欄62Aには、それぞれシステム内に設定可能なALU42Aの数と同じビット数を有するビットマップが格納される。そして、これらのビットマップでは、そのALUインデックス欄62Aに対応するSLU42Sが属するロジカル・ユニット・コングロメリット60のALU42Aに対応するビットが「1」に設定され、他のビットが「0」に設定される。なお、以下においては、ビットマップの左端のビットの番号を「0」として、当該ビットからそのビットマップの「1」に設定されたビットまでのビットの数をそのビットマップに対応するALU42Aのインデックス番号と呼ぶものとする。
【0067】
ALU42Aのインデックス番号は、便宜的にALU42Aに付与されるものであり、そのALU42Aが対応付けられるLDEV41のLDEV番号とは異なる。このためALU42Aのインデックス番号と、そのALU42Aが対応付けられたLDEV41のLDEV番号との対応関係は、
図10(B)に示すALU−LDEV関連テーブル63を用いて管理する。
【0068】
このALU−LDEV関連テーブル63は、システム内に設定可能なALU数と同数のLDEV番号欄63Aを備える。そして各LDEV番号欄63Aは、それぞれいずれかのALU42Aのインデックス番号と関連付けられる。また各LDEV番号欄63Aには、それぞれ対応するインデックス番号のALU42Aと対応付けられたLDEV41のLDEV番号が格納される。
【0069】
従って、例えば
図10(A)及び(B)の例の場合、例えば、「2」というLDEV番号のLDEV41と対応付けられたSLU42Sが属するロジカル・ユニット・コングロメリット60のALU42Aのインデックス番号は「1」であり、そのALU42Aと対応付けられたLDEV41のLDEV番号が「0000」であることが示されている。
【0070】
なお本実施の形態の場合、これらALU−SLU関連テーブル62及びALU−LDEV関連テーブル63は、マイクロプロセッサパッケージ14のローカルメモリ31(
図1)に格納されて保持され、マイクロプロセッサ32がI/Oコマンドを処理する際に利用される。
【0071】
(3−2)本情報処理システムの特徴
ここで、上述のように各LDEV41にLDEVオーナ権が設定された第1及び第2のストレージ装置3A,3Bにおける論理ユニット42の管理方式としてこのようなコングロメリットLUN方式を適用する場合について考える。
【0072】
この場合、上述のようにホスト計算機2は、ロジカル・ユニット・コングロメリット60を構成する論理ユニット42のうちのALU42AのみをSCSIデバイスとして認識できるため、ホスト計算機2は、ロジカル・ユニット・コングロメリット60を構成するALU42A及びSLU42Sのいずれにアクセスする場合においても、常にALU42AをI/O対象としてI/Oコマンドで指定することになる。
【0073】
一方、このI/Oコマンドを受信した第1のストレージ装置3A側では、そのI/Oコマンドにおいて指定されたI/O対象がロジカル・ユニット・コングロメリット60のALU42Aやロジカル・ユニット・コングロメリット60を構成しない通常の論理ユニット42であるときには、そのI/OコマンドがそのALU42Aや、その通常の論理ユニット42のLDEVオーナ権を有するマイクロプロセッサパッケージ14に転送される。
【0074】
そして、このI/Oコマンドを受信したマイクロプロセッサパッケージ14は、受信したI/Oコマンドを解析し、自己がLDEVオーナ権を有するLDEV41と対応付けられたALU42Aや通常の論理ユニット42をI/O対象としている場合には、そのI/Oコマンドを処理し、他のマイクロプロセッサパッケージ14がLDEVオーナ権を有するLDEV41と対応付けられた論理ユニット42をI/O対象としている場合には、そのI/Oコマンドを当該他のマイクロプロセッサパッケージ14に転送し、当該他のマイクロプロセッサパッケージ14においてそのI/Oコマンドを処理することになる。
【0075】
ところが、このようなI/Oコマンドの処理方法によると、ロジカル・ユニット・コングロメリット60のALU42Aと対応付けられたLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14と、そのロジカル・ユニット・コングロメリット60に属するSLU42Sと対応付けられたLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14とが異なる場合(
図9参照)に、そのSLU42Sを対象とするI/Oコマンドが、常にそのALU42AのLDEVオーナ権を有するマイクロプロセッサパッケージ14からそのSLU42SのLDEVオーナ権を有するマイクロプロセッサパッケージ14に転送されることになるため、I/Oコマンドに対する応答性能が低下する問題がある。
【0076】
また、かかる状況のもとでは、第1のストレージ装置3A内部におけるデータの転送量を増大させるため、そのI/Oコマンドについての処理だけでなく、他のI/Oコマンドについての処理や、別のオペレーションにも悪影響を与え得る問題がある。
【0077】
そこで本情報処理システム1では、第1及び第2のストレージ装置3A,3Bのチャネル制御部10が上位装置からのI/Oコマンドを受信した場合に、ローカルルータ22(
図1)においてそのI/Oコマンドを解析し、I/O対象の論理ユニット42がロジカル・ユニット・コングロメリット60のSLU42Sである場合には、そのI/OコマンドをそのSLU42Sと対応付けられたLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14に直接転送するI/Oコマンド転送機能が第1及び第2のストレージ装置3A,3Bに実装されていることを特徴の1つとしている。
【0078】
そのための手段として、本情報処理システム1の場合、上位装置から第1又は第2のストレージ装置3A,3Bに送信されるI/Oコマンドにおいて、ALU42AをI/O対象とする場合と、SLU42SをI/O対象とする場合とでI/O対象の論理ユニット42を指定するフィールドのフォーマット(以下、これをLUNフォーマットと呼ぶ)が異なっており、これにより第1のストレージ装置3Aや第2のストレージ装置3Bのローカルルータ22(
図1)がI/OコマンドのLUNフォーマットに基づいて、そのI/OコマンドのI/O対象がALU42A及びSLU42Sのいずれであるかを容易に判別し得るようになされている。
【0079】
実際上、本情報処理システム1の場合、I/O対象としてALU42A(及びロジカル・ユニット・コングロメリット60を構成しない通常の論理ユニット42)を指定するI/OコマンドにおけるLUNフォーマットとしては、
図11に示すようなLUNフォーマットが用いられる。
【0080】
このLUNフォーマットは、SCSI規格において仕様として定義されたフォーマットであり、バイト0,ビット7−6には、「ADDR METHOD」として固定値である「00b」が格納される。またバイト0,ビット5〜バイト1,ビット0には、I/O対象とする論理ユニットのLUNが格納され、バイト2−バイト7には「リザーブ(Reserved)」として「0」が格納される。
【0081】
一方、本情報処理システム1の場合、I/O対象としてSLU42Sを指定するI/OコマンドにおけるLUNフォーマットとしては、
図12に示すようなLUNフォーマットが用いられる。
【0082】
このLUNフォーマットもSCSI規格で定義されたフォーマットであり、バイト0−1において、同一ロジカル・ユニット・コングロメリット60に属するALU42AのLUNが
図12のバイト0−1と同様のフォーマットで指定される。
【0083】
またこのLUNフォーマットにおいてバイト2,ビット7〜バイト7,ビット0はSLU42Sを指定するための領域であり、バイト2,ビット7−6に「ADDR METHOD」として固定値である「11b」が、バイト2,ビット5−4に「LENGTH」として固定値である「10b」が、バイト2,ビット3−0に「EXTENDED ADDRESS METHOD」として固定値である「2h」がそれぞれ格納される。
【0084】
さらにバイト3−6は、I/O対象のSLU42Sを特定するための識別情報として、そのSLU42Sと対応付けられたLDEV41のLDEV番号が格納される。このフィールドのSLU42SのLDEV番号を指定することにより、ローカルルータ22(
図1)においてLUNフォーマットを解析したときに、従以来のストレージ装置間I/OコマンドMPPK検索テーブル51を使用することができ、I/Oコマンドの転送先のマイクロプロセッサパッケージ14を容易に特定することができる。またバイト7には「リザーブ(Reserved)」として「0」が格納される。
【0085】
(3−3)I/Oコマンド転送機能に関するローカルルータの処理
図13は、上述した本実施の形態によるI/Oコマンド転送機能に関する第1及び第2のストレージ装置3A,3Bのローカルルータ22(
図1)の具体的な処理内容を示す。ローカルルータ22は、上位装置からのI/Oコマンドを受信すると、この
図13に示す処理手順従って、受信したI/Oコマンドを適切なマイクロプロセッサパッケージ14に転送する。
【0086】
実際上、ローカルルータ22は、I/Oコマンドを受信するとこの
図13に示すI/Oコマンド転送処理を開始し、まず、受信したI/Oコマンドのコマンドディスクリプタブロック(CDB:Command Descriptor Block)を解析し(SP30)、解析結果に基づいて、そのI/OコマンドがSCSIコマンドであるか否かを判断する(SP31)。
【0087】
ここで、上述のように本実施の形態による情報処理システム1においては、第1及び第2のストレージ装置3A,3B間におけるI/Oコマンドのフォーマットはベンダユニークなフォーマットであり、従って、この判断で否定結果を得ることは、そのI/Oコマンドが第1のストレージ装置3Aから第2のストレージ装置3Bに送信されたI/Oコマンドであり、当該I/Oコマンドを受信したのが第2のストレージ装置3Bであることを意味する。
【0088】
かくして、このときローカルルータ22は、ステップSP30の解析により得られたLDEV番号をキーとして、当該LDEV番号のLDEV41のLDEVオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32(
図1)のプロセッサ番号をストレージ装置間I/OコマンドMPPK検索テーブル51(
図4)上で検索する(SP34)。
【0089】
そしてローカルルータ22は、この検索により検出したマイクロプロセッサパッケージ14にそのI/Oコマンドを転送し(SP36)、この後、このI/Oコマンド転送処理を終了する。
【0090】
一方、ステップSP31の判断で肯定結果を得ることは、そのI/Oコマンドが(A)第1のストレージ装置3A内のALU42A、(B)当該ALU42Aと同じロジカル・ユニット・コングロメリット60に属し第1のストレージ装置3A内に存在するSLU42S、及び、(C)ロジカル・ユニット・コングロメリット60を構成しない通常の論理ユニット42のいずれかを対象とするI/OLコマンドであることを意味する。
【0091】
かくして、このときローカルルータ22は、そのI/OコマンドのLUNフォーマットのバイト2−7を参照して、そのI/OコマンドがSLU42SをI/O対象とするI/Oコマンドであるか否か(LUNフォーマットが
図11のLUNフォーマットではなく、
図12のLUNフォーマットであるか否か)を判断する(SP32)。
【0092】
そしてローカルルータ22は、この判断で否定結果を得るとそのI/OコマンドのLUNフォーマットのバイト3−6からI/O対象のSLUが対応付けられたLDEV41のLDEV番号を取得する(SP33)。
【0093】
またローカルルータ22は、取得したLDEV番号をキーとして、当該LDEV番号のLDEV41と対応付けられた論理ユニット42のLDEVオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32のプロセッサ番号をストレージ装置間I/OコマンドMPPK検索テーブル51上で検索する(SP34)。
【0094】
そしてローカルルータ22は、この検索により検出したマイクロプロセッサパッケージ14にそのI/Oコマンドを転送し(SP36)、この後、このI/Oコマンド転送処理を終了する。
【0095】
これに対して、ローカルルータ22は、ステップSP32の判断で否定結果を得ると、そのI/OコマンドのLUNフォーマットのバイト0−1からLUNを取得し、取得したLUNが付与されたALU42Aと対応付けられたLDEV41のオーナ権を有するマイクロプロセッサパッケージ14の先頭マイクロプロセッサ32のプロセッサ番号をホストターゲット用MPPK検索テーブル50(
図3)上で検索する(SP35)。
【0096】
そしてローカルルータ22は、この検索により検出したマイクロプロセッサパッケージ14にそのI/Oコマンドを転送し(SP36)、この後、このI/Oコマンド転送処理を終了する。
【0097】
(4)複数のホスト計算機が1つのSLUを共有する場合の排他処理
図14に示すように、1つのSLU42Sに対して複数のALU42Aが関連付けられており(つまりそのSLU42Sが複数のロジカル・ユニット・コングロメリット60に属しており)、各ALU42Aがそれぞれ異なるホスト計算機2に割り当てられている場合、これらのホスト計算機2がそのSLU42Sを共有している状況となり、そのSLU42Sに対して複数の経路でI/Oコマンドが発行されることになる。このような状況のもとでは、そのSLU42Sに対する複数のホスト計算機2からのI/Oコマンドが競合する事態が発生し得る。
【0098】
そこで本実施の形態においては、1つのSLU42Sに複数のALU42Aが関連付けられた場合に、これらのALU42Aに当該ALU42A間での優先度を設定でき、当該SLU42SをI/O対象とするI/Oコマンドが複数のホスト計算機2から同時に与えられた場合(I/O処理が競合した場合)に、マイクロプロセッサパッケージ14のマイクロプロセッサ32(
図1)が、そのI/Oコマンドが経由したALU42Aに設定された優先度に応じた順番でこれらのI/Oコマンドを処理するようになされている。
【0099】
このような処理を実現するための手段として、各マイクロプロセッサパッケージ14のローカルメモリ31(
図1)には、
図15に示すような優先度管理テーブル70が格納されている。優先度管理テーブル70は、対応するSLU42Sについて予め設定されたALU42Aの優先度を管理するために利用されるテーブルであり、SLU42Sごとに用意される。
【0100】
この優先度管理テーブル70は、LUN欄70A及び優先度欄70Bを備えており、LUN欄70Aには、その第1又は第2のストレージ装置3A,3B内に存在する各ALU42Aに対してそれぞれ付与されたLUNがそれぞれ格納され、優先度欄70Bには、対応するSLU42Sについて、当該SLU42Sが関連付けられた各ALU42Aに対してそれぞれ設定されたそのALU42Aの優先度を表す値が格納される。なお
図15の例では、優先度の値が小さいものほど優先度が高いものとする。
【0101】
かくしてマイクロプロセッサパッケージ14のマイクロプロセッサ32は、チャネル制御部10から転送されるSLU42Sに対するI/Oコマンドが競合した場合には、そのSLU42Sに対応する優先度管理テーブル70を参照して、I/OコマンドのLUNフォーマット(
図12)のバイト0−2にLUNが格納されたALU42Aの優先度がより高いI/Oコマンドをより優先的に処理する。
【0102】
この機能は、同一のSLU42Sを共有する複数のホスト計算機2に対して優先度を設定することと同等であり、従って、このような機能を第1のストレージ装置3Aに搭載することによって、より重要な処理を行うホスト計算機2からのI/Oコマンドをより優先的に処理させることができる。
【0103】
なお、上記構成に加えて、例えばSLU42Sごとに、
図16に示すようなそのSLU42Sに対応付けられたALU42Aごとのキュー71を各マイクロプロセッサパッケージ14のローカルメモリ31(
図1)上に用意し、マイクロプロセッサパッケージ14において、チャネル制御部10から転送されてきたI/OコマンドをそのLUNフォーマット(
図12)のバイト0−2に格納されたLUNに対応するALU42Aのキュー71に格納し、これらのキュー71に格納されたI/Oコマンドを、対応するALU42Aの優先度に応じた個数ずつ順番にかつ繰り返し処理するようにしても良い。なお、「優先度に応じた個数」とは、より優先度が高いALU42Aに対応するキュー71に格納されたI/Oコマンドほどより多く処理することを意味する。
【0104】
例えば、
図15のようにLUNが「0」〜「3」であるALU42Aが4つ存在し、LUNが「2」、「3」及び「1」のALU42Aにこの順番でより高い優先度が設定されている場合、まず、優先度が最も高い「ALU2」というALU42Aに対応するキュー71に格納されたI/Oコマンドを例えば3個処理した後、次に優先度が高い「ALU3」というALU42Aに対応するキュー71に格納されたI/Oコマンドを2個処理し、さらに最も優先度が低い「ALU1」というALU42Aに対応するキュー71に格納されたI/Oコマンドを1個処理し、この後、上述の処理を繰り返すようにすれば良い。
【0105】
このようにしても、上述と同様に、より重要な処理を行うホスト計算機2からのI/Oコマンドをより優先的に処理させることができる。
【0106】
さらに以上の方式は、例えば
図17に示すように、単一のALU42Aが複数のポート10Aにパス定義されている環境においても適用することができる。この場合、優先度管理テーブル70や、キュー71は、SLU42S単位ではなく、ALU42A単位で用意され、ポート10Aごとの当該ポート10A間での優先度を設定することになる。
【0107】
(5)本実施の形態の効果
以上のように本実施の形態による情報処理システム1では、上位装置からのI/Oコマンドが対象とする論理ユニット42がSLU42Sである場合には、その論理ユニット42と対応付けられたLDEV41のオーナ権を有するマイクロプロセッサパッケージ14にそのコマンドを直接転送するため、第1及び第2のストレージ装置3A,3B内においてマイクロプロセッサパッケージ14間でのI/Oコマンドの転送が発生するのを防止することができる。かくするにつき、かかる第1及び第2のストレージ装置3A,3B内におけるマイクロプロセッサパッケージ14間でのI/Oコマンドの転送に起因してI/Oコマンドに対する応答性能が低下するのを有効に防止することができる。
【0108】
(6)他の実施の形態
なお上述の実施の形態においては、本発明を
図1のように構成された情報処理システム1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の形態の情報処理システムに広く適用することができる。
【0109】
また上述の実施の形態においては、上位装置からのI/Oコマンドを処理するコマンド処理部としてのマイクロプロセッサパッケージ14を
図1のように構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を広く適用することができる。この場合、かかるコマンド処理部が有するマイクロプロセッサ32(
図1)の数は1つであっても良い。