JP5532980B2 - スイッチ装置、スイッチ制御方法、及びストレージシステム - Google Patents

スイッチ装置、スイッチ制御方法、及びストレージシステム Download PDF

Info

Publication number
JP5532980B2
JP5532980B2 JP2010020725A JP2010020725A JP5532980B2 JP 5532980 B2 JP5532980 B2 JP 5532980B2 JP 2010020725 A JP2010020725 A JP 2010020725A JP 2010020725 A JP2010020725 A JP 2010020725A JP 5532980 B2 JP5532980 B2 JP 5532980B2
Authority
JP
Japan
Prior art keywords
virtual disk
storage
command
unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010020725A
Other languages
English (en)
Other versions
JP2011159132A (ja
JP2011159132A5 (ja
Inventor
利明 竹内
眞和 坂元
徹哉 木下
順 竹内
敦史 篠原
祐輔 倉澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010020725A priority Critical patent/JP5532980B2/ja
Priority to US13/014,375 priority patent/US8713219B2/en
Publication of JP2011159132A publication Critical patent/JP2011159132A/ja
Publication of JP2011159132A5 publication Critical patent/JP2011159132A5/ja
Application granted granted Critical
Publication of JP5532980B2 publication Critical patent/JP5532980B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、スイッチ装置、スイッチ制御方法、及びストレージシステムに関する。
近年、複数の記憶媒体を用いて大容量のデータ記憶を実現するストレージシステムが一般的になっている。このストレージシステムには、例えばストレージエリアネットワーク(Storage Area Network : SAN)と呼ばれるものがある。ストレージシステムでは、計算装置と記憶装置との間に、スイッチ装置(以下では単に「スイッチ」と呼ぶ。)やケーブルなどによるネットワークが構築される。この計算装置は、例えばデータを処理するサーバなどであり、ホストとも呼ばれる。また、記憶装置はハードディスクなどの記憶媒体を有する装置であり、ストレージ装置とも呼ばれる。そして、データやコマンドを含むフレームが計算装置と記憶装置の間のネットワーク上で送受信されることにより、データの書き込みや読み出しが行われる。このとき、計算装置は、イニシエータとして、データの書き込みまたは読み出しのターゲットとなる記憶装置へコマンドを送信する。すなわち、計算装置がストレージシステム内の処理を主導しており、記憶装置は受動的に動作する。
また、近年では、計算装置とストレージ装置との間のデータの送受信を光で行うために、ファイバチャネル(Fibre Channel : FC)が接続ケーブルとして使われることもある。ファイバチャネルを用いた場合、計算装置には、データの光伝送の送受信のポートを有するHost Bus Adopter(HBA)が配置される。またストレージ装置には、Channel Adapter (CA)が設けられており、このCAを介してデータの光伝送の送受信が行われる。このファイバチャネルを用いた構成に用いられるスイッチは特に、ファイバチャネルスイッチ(FCスイッチ)と呼ばれる。
さらに、FCスイッチの中でも、物理的な記憶媒体である物理ディスクを仮想化して1つ又は複数の仮想ディスクを構成する機能を備えた仮想化FCスイッチが提案されている。具体的には、仮想化FCスイッチは、自装置に接続されたストレージ装置の任意の記憶領域を仮想ディスクとして構成する。そして、仮想化FCスイッチは、構成した仮想ディスクを仮想ターゲット(Virtual Target : VT)を通してホストに提供する機能を有する。ここで、1つの仮想ターゲットによって提供される複数の仮想ディスクを集めた構成を「仮想ストレージ」という。以下では、単にストレージ装置といった場合、物理的なストレージ装置を指すものとする。また、仮想化FCスイッチには、稼働中の仮想ディスクから他の仮想ディスクへデータを移行する機能を有するものも提案されている。
ここで、ストレージ装置は、一般的にI/O性能を上げるために計算装置から複数のコマンドを同時に受け付け、その受け付けたコマンドを待ち行列に入れる機能を有する。これをコマンドキューングという。ここで、I/O性能とは、例えばデータの入出力の性能を指す。図8は、コマンドキューイングを説明するための図である。また、図9は、コマンドキューイング時のシーケンス図である。図9の縦軸は図面に向かって左側から、ホスト2、CA303、キャッシュメモリ301、ディスク302の経時的な動作を表している。また、各縦軸はいずれも図面の下に向かって時間が経過していることを表している。また、ディスク302、キャッシュメモリ301、及びCA303は記憶装置であるストレージ3に含まれる。
図8において、ホスト2からディスクのブロックAという領域のデータの読み出しコマンド(Read コマンド)を発行した(ステップS301)場合を説明する。この場合、キャッシュメモリ301に要求されたデータがなければ、ストレージ3は、ブロックAのデータをディスク302から読み出してキャッシュメモリ301に記憶させる(ステップS302)。その後、ストレージ3は、キャッシュメモリ301が記憶したデータをホスト2に転送する(ステップS305)。そのため、ストレージ3からホスト2にブロックAのデータが送られるまでに、データを読み込んでキャッシュメモリ301に記憶させる間の待ち時間ができてしまう。
そこで、ブロックAのデータをディスク302から読み出している間(ステップS302)に、ホスト2はディスク302の別の領域であるブロックBへの書き込みコマンド(Write コマンド)を発行する(ステップS303)。書き込みコマンドのデータは、まずキャッシュメモリ301に記憶される。このように、書き込みコマンドの処理は、ハードディスクからの読み出しの必要が無いので、ブロックAのデータの読み出しを待つことなく直ちに実行される(ステップS304)。
さらに、図9を参照してコマンドキューイングの各装置の動作を時系列的に説明する。ホスト2は、CA303に対して読み出しコマンドを送信する(ステップS401)。CA303は、キャッシュメモリ301に対して読み出しコマンドを送信する(ステップS402)。この時、キャッシュメモリ301に要求されたデータがない場合、すなわちキャッシュミスの場合、CA303は、ディスク302に対しキャッシュメモリ301への読み出しコマンドを送信する(ステップS403)。ここで、ホスト2は、CA303に対し書き込みコマンドを送信する(ステップS404)。すると、CA303を介してキャッシュメモリ301に対しデータが書き込まれる(ステップS405)。そして、書き込みが完了すると、CA303は、書き込み成功の通知をホスト2へ送信する(ステップS406)。この間にCA303は、ステップS403で読み出し要求があったデータをディスク302からキャッシュメモリ301へ送信させ、キャッシュメモリ301に記憶させる(ステップS407)。次に、ストレージ3は、キャッシュメモリ301に記憶されたデータをCA303へ送信する(ステップS408)。CA303は、受信したデータをホスト2へ送信する(ステップS409)。そして、CA303は、ホスト2に対し読み出し成功の通知(全処理完了の通知を含む)を出力する(ステップS410)。以上により、読み出しコマンドがキャッシュメモリ301に対して送られてから(ステップS402)、キャッシュメモリ301に対してデータが書き込まれる(ステップS407)までの時間を有効利用できる。
ここで、格納できる処理待ちの実行命令(コマンド)の上限値であるコマンドキューイング数はストレージ装置によって異なる。「格納」とは処理を実行するまでその実行命令をストレージ装置が記憶しておくことである。また、実行命令とは、ストレージに対し読み書きなどの処理を実行させる命令を指す。操作者は、計算装置に接続する各ストレージ装置のコマンドキューイング数を計算装置のデバイスドライバに設定した後、各ストレージを使用する。
仮想ストレージでは、ストレージ装置の種別によらず複数種類のストレージ装置の記憶領域を併せて1つの仮想ディスクに見せることができる。この場合、計算装置のデバイスドライバに設定するコマンドキューイングの数は、仮想ディスクを構成する各ストレージ装置のコマンドキューイング数を超えることができない。
ここで、図10を参照して、コマンドキューイング数が異なるストレージ3a、3bによって仮想ディスクが構築されている場合の各仮想ディスクのコマンドキューイング数について説明する。図10はコマンドキューイング数が異なるストレージ装置により構築された仮想ストレージシステムの構成図である。ホスト2は、FCスイッチ1を介してストレージ3a及びストレージ3bとデータの送受信を行う。FCスイッチ1は、仮想ストレージシステム800として各仮想ストレージ及び仮想ディスクを管理する。仮想ストレージシステム800は、図10において点線で囲われて示されている。仮想ディスク801、802とストレージ3a、3bとを繋ぐ点線は、各仮想ディスクがどのストレージ装置の物理ディスクで構成されているかを示している。
ここで、ストレージ3aのコマンドキューイング数は30、ストレージ3bのコマンドキューイング数は10であるものとする。そうすると、仮想ディスク801は、ストレージ3aの物理ディスクで構成されているのでコマンドキューイング数は30が上限となる。これに対し、仮想ディスク802は、ストレージ3bの物理ディスクで構成されているのでコマンドキューイング数は10が上限となる。このように、仮想ディスクのコマンドキューイング数は、その仮想ディスクを構成するストレージ装置のコマンドキューイング数によって決まるものである。
従来、このように異なる性能を有するストレージを管理する技術として、それぞれの専用ストレージ装置の管理方法が定義されている一つの管理ルールを用いて、異なるストレージ装置タイプを有する専用ストレージ装置を管理する技術が提案されている。
特表2006−524864号公報
ここで、操作者は仮想ディスクを構成するストレージ装置の組み合わせを自由に決めることができる。すなわち、設定可能なコマンドキューイング数は、仮想ディスク毎に異なる場合がある。これに対して従来は、仮想ストレージシステム単位で、仮想ディスクのコマンドキューイング数を設定していた。すなわち、仮想ストレージシステムに含まれる仮想ディスク全体で同一のコマンドキューイング数が設定されていた。このように、従来の方法では、ストレージシステムを構成するストレージ装置のコマンドキューイングの性能を有効活用することは困難であった。
また、上述した一つの管理ルールを用いて複数の専用ストレージ装置を管理する技術は、物理的なストレージ装置それぞれをそのストレージ装置タイプに合わせて管理する技術である。そのため、この様な技術を用いても、仮想ストレージシステムを構成するストレージ装置のコマンドキューイングの性能の有効活用は困難であった。
開示の技術は、上記に鑑みてなされたものであって、各仮想ディスクを構成している記憶装置のコマンドキューイング数の最小値を、該仮想ディスクのコマンドキューイング数に自動的に設定するスイッチ装置、スイッチ制御方法、及びストレージシステムを提供することを目的とする。
本願の開示するスイッチ装置は、一つの態様において、複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行するデータ移行部と、前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する仮想ディスクの状態変更を通知する変更通知部と、前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得するキュー数取得部と、前記データの移行先の前記仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択する最小キュー数選択部と、前記キュー数設定部により選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する前記仮想ディスクのコマンドキューイング数として前記データの移行先の仮想ディスク毎に設定するキュー数設定部とを備える。
また、本願の開示するスイッチ制御方法は、一つの態様において、複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行し、前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する前記仮想ディスクの状態変更を通知し、前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受け、前記要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得し前記データの移行先の仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択し、選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する仮想ディスクのコマンドキューイング数として前記データの移行先の前記仮想ディスク毎に設定する。
また、本願の開示するストレージシステムは、一つの態様において、計算装置、スイッチ装置、及び複数の記憶装置を有するストレージシステムであって、前記計算装置は、前記記憶装置に対するデータの読み書きの命令を前記スイッチ装置へ出力するコマンド出力部を備え、前記スイッチ装置は、複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行するデータ移行部と、前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する仮想ディスクの状態変更を通知する変更通知部と、前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得するキュー数取得部と、前記データの移行先の前記仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択する最小キュー数選択部と、前記キュー数設定部により選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する前記仮想ディスクのコマンドキューイング数として前記データの移行先の仮想ディスク毎に設定するキュー数設定部とを備え、前記記憶装置は、入力された前記命令を格納する命令格納部と、前記格納された前記命令を順次処理する処理実行部とを備え、前記コマンド出力部は、前記設定されたコマンドキューイング数を各前記仮想ディスクの処理待ちの前記命令の数の上限として、前記命令を出力する。
本願の開示するスイッチ装置、スイッチ制御方法、及びストレージシステムの一つの態様によれば、各仮想ディスクを構成している記憶装置のコマンドキューイング数の最小値を、該仮想ディスクのコマンドキューイング数として自動的に設定できる。すなわち、本願の開示する各態様によれば、各仮想ディスクで使用できる最大のコマンドキューイング数を自動的に設定できる。これにより、ストレージシステムを構成するストレージ装置のコマンドキューイングの性能を有効活用できるという効果を奏する。
図1は、実施例1に係るスイッチ装置を用いたストレージシステムのブロック図である。 図2は、実施例2に係るスイッチ装置を用いたストレージシステムのブロック図である。 図3は、実施例2に係るスイッチ装置を用いたストレージシステムのコマンドキューイング数設定及びアプリケーションの実行のフローチャートである。 図4は、実施例2に係るスイッチ装置を用いたストレージシステムの構成図である。 図5は、実施例3に係るスイッチ装置を用いたストレージシステムのブロック図である。 図6は、実施例3に係るスイッチ装置を用いたストレージシステムの構成図である。 図7は、実施例3に係るスイッチ装置においてコマンドキューイング数を再設定する際のシーケンス図である。 図8は、コマンドキューイングを説明するための図である。 図9は、コマンドキューイング時のシーケンス図である。 図10は、コマンドキューイング数が異なるストレージ装置により構築された仮想ストレージシステムの構成図である。
以下に、本願の開示するスイッチ装置、スイッチ制御方法、及びストレージシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係るスイッチ装置を用いたストレージシステムのブロック図である。
本実施例に係るスイッチ装置を用いたストレージシステムは、図1に示すように、スイッチ装置であるFCスイッチ1、計算装置であるホスト2、及び複数の記憶装置(ストレージ装置)であるストレージ3a〜3bを備えている。ここで、記憶装置は複数であれば台数に制限はない。また、以下の説明では、ストレージ3a〜3bをそれぞれ区別しない場合、単に「ストレージ3」と呼ぶ。
FCスイッチ1とホスト2との間は、ファイバチャネルによって接続されている。そして、FCスイッチ1とホスト2とは、ファイバチャネルを用いてデータの送受信を行う。また、FCスイッチ1とストレージ3との間も、ファイバチャネルによって接続されており、FCスイッチ1とストレージ3の間でデータの送受信が行われる。
FCスイッチ1は、キュー数取得部12、最小キュー数選択部13、及びキュー数設定部14を備えている。
キュー数取得部12は、各仮想ディスクの識別情報、及び各仮想ディスクを構成する物理ディスクを有するストレージ3の識別情報を、外部から取得する。以下の説明では、仮想ディスクを構成する物理ディスクを有するストレージ3を、「仮想ディスクを構成するストレージ3」と言う。そして、この仮想ディスクの数は1つであっても複数であっても良い。以下の説明では、仮想ディスクが複数ある場合で説明する。
さらに、キュー数取得部12は、取得した識別情報を有するストレージ3それぞれからコマンドキューイング数を取得する。ここで、コマンドキューイング数とは、ストレージ3が格納できる処理待ちの実行命令(コマンド)の上限値を指す。ここで、実行命令とは、ストレージに対し読み書きなどの処理を実行させる命令を指す。キュー数取得部12は、各仮想ディスクを構成するストレージ3のコマンドキューイング数、及び仮想ディスクの識別情報を最小キュー数選択部13へ出力する。
最小キュー数選択部13は、仮想ディスク毎に、仮想ディスクを構成する各ストレージ3のコマンドキューイング数の中から最小値であるコマンドキューイング数を選択する。この最小値のコマンドキューイング数を、以下では「最小キュー数」と呼ぶ。そして、最小キュー数選択部13は、仮想ディスクの識別情報をキュー数設定部14へ出力する。また、最小キュー数選択部13は、選択した最小キュー数を、識別情報を出力した仮想ディスクの最小キュー数としてキュー数設定部14へ出力する。
キュー数設定部14は、仮想ディスクの識別情報及びその仮想ディスクの最小キュー数の入力を最小キュー数選択部13から受ける。キュー数設定部14は、ホスト2に仮想ディスクの識別情報及びその仮想ディスクの最小キュー数を通知する。これにより、キュー数設定部14は、最小キュー数選択部13から入力された識別情報を有する仮想ディスクのコマンドキューイング数として最小キュー数を設定する。
上述してきたように、本実施例では、各仮想ディスクを構成しているストレージのコマンドキューイング数の最小値を、該仮想ディスクのコマンドキューイング数として自動的に設定できる。このように、キュー数設定部14は、ストレージシステム全体に対して1つのコマンドキューイング数を定めるのではなく、仮想ディスク毎にコマンドキューイング数を定めている。そのため、仮想ディスク毎に使用できる最大のコマンドキューイング数を自動的に設定できるという効果を奏する。これにより、ストレージシステムを構成するストレージ装置のコマンドキューイングの性能を有効活用できる。
図2は、実施例2に係るスイッチ装置を用いたストレージシステムのブロック図である。図2に示すように、本実施例に係るストレージシステムには、FCスイッチ1、ホスト2、及びストレージ3a〜3b(以下では、それぞれのストレージ装置を区別しない場合、単に「ストレージ3」という。)を備える。ここで、図2では例示として2台のストレージ3を記載しているが、このストレージ3は何台あっても良い。また、本実施例も実施例1と同様に、FCスイッチ1、ホスト2、及びストレージ3がそれぞれファイバチャネルで接続されているものとする。
FCスイッチ1は、仮想ディスク構成部11、キュー数取得部12、最小キュー数選択部13、キュー数設定部14、命令出力部15、及び応答出力部16を備える。また、ホスト2は、コマンド出力部21及び実行部22を備える。さらに、ストレージ3a〜3bは、それぞれ命令格納部31a〜31b、処理実行部32a〜32bを備える。
仮想ディスク構成部11は、メモリやハードディスクなどの記憶媒体を有している。仮想ディスク構成部11は、ストレージ3a〜3bからそれぞれの物理ディスクの構成情報を取得する。そして、仮想ディスク構成部11は、ストレージ3a〜3bそれぞれの物理ディスクの構成情報を自己が有する記憶媒体に記憶する。
さらに、仮想ディスク構成部11は、ホスト2から仮想ディスクの構成情報の指定とともに仮想ディスク作成命令の入力を受ける。ここでの説明では、一例としてホスト2から仮想ディスク作成命令の入力を受けているが、仮想ディスク構成部11は、図示されていない他の管理端末などから作成命令の入力を受けても良い。ここで、仮想ディスクの構成の指定には、少なくとも、仮想ディスクを構成するストレージ3の指定、ストレージ3内における使用するハードディスクの指定、及び仮想ディスクの記憶容量の指定が含まれる。そして、仮想ディスク構成部11は、指定された仮想ディスクの構成を満たすように仮想ディスクを作成する。具体的には、仮想ディスク構成部11は、作成する仮想ディスクに適当な識別情報を割り当てる。そして、仮想ディスク構成部11は、その識別情報に対応させて、仮想ディスクを構成するストレージ3の情報、ストレージ3内における使用するハードディスクの情報、及び仮想ディスクの記憶容量を記憶する。一例として、ストレージ3aのハードディスクとストレージ3bのハードディスクとを組み合わせて識別情報00xの仮想ディスクを構成する場合を説明する。仮想ディスク構成部11は、作成命令を受けて、作成する仮想ディスクに対して識別情報00xを発行する。そして、仮想ディスク構成部11は、識別情報00xに対応させて、ストレージ3a及びストレージ3bの識別情報、並びにストレージ3a及びストレージ3b内で使用するハードディスクの識別情報を自己が有する記憶媒体に記憶する。さらに、仮想ディスク構成部11は、指定された記憶容量を記憶するとともに、各ハードディスクにおける使用する記憶容量を決定し記憶する。ここで、複数のハードディスクを使用する場合、仮想ディスク構成部11は、例えば指定された記憶容量をそのハードディスクの個数で等分するなどして各ハードディスクで使用する記憶容量を決定する。
そして、仮想ディスク構成部11は、仮想ディスクの識別情報とともに、その仮想ディスクを構成するストレージ3の識別情報をキュー数取得部12へ出力する。以下では、ストレージ3a及びストレージ3bで構成された識別情報00xを有する仮想ディスクについて説明する。
ここで、本実施例では、FCスイッチ1に設けられた仮想ディスク構成部11によって仮想ディスクが作成される構成としている。しかし、この仮想ディスク構成部11は、FCスイッチ1に設けられていなくてもよい。その場合には、以下で説明するキュー数取得部12は、仮想ディスク構成部11を有する外部の装置から各仮想ディスクの識別情報及びその仮想ディスクを構成するストレージの識別情報を取得する。
キュー数取得部12は、キュー数設定部14から各仮想ディスクのコマンドキューイング数の取得命令を受信する。このコマンドキューイング数の取得命令を受けて、キュー数取得部12は、仮想ディスク構成部11から仮想ディスクの識別情報00xとともに、その仮想ディスクを構成するストレージ3a、3bの識別情報を取得する。キュー数取得部12は、取得した識別情報を有するストレージ3aの命令格納部31aに対し、コマンドキューイング数の問い合わせを行う。同様に、キュー数取得部12は、取得した識別情報を有するストレージ3bの命令格納部31bに対し、コマンドキューイング数の問い合わせを行う。例えば、キュー数取得部12は、SCSI(Small Computer System Interface )コマンドであるMode Sense コマンドをストレージ3a、3bへ出力することでそれぞれのコマンドキューイング数を問い合わせる。そして、キュー数取得部12は、命令格納部31a、31bから応答を受けて、ストレージ3a、3bのそれぞれのコマンドキューイング数を取得する。本実施例では、ストレージ3aのコマンドキューイング数が30、ストレージ3bのコマンドキューイング数が10である場合で説明する。
キュー数取得部12は、識別情報00xの仮想ディスクを構成するストレージ3a、3bについて取得したコマンドキューイング数を、識別情報00xに対応させて、最小キュー数選択部13へ出力する。
最小キュー数選択部13は、仮想ディスクの識別情報00xとともに、ストレージ3a及びストレージ3bのコマンドキューイング数の入力をキュー数取得部12から受ける。本実施例では、最小キュー数選択部13は、ストレージ3aのコマンドキューイング数として30の入力を受ける。また、最小キュー数選択部13は、ストレージ3bのコマンドキューイング数として10の入力を受ける。そして、最小キュー数選択部13は、入力されたコマンドキューイング数のうち最も小さい値のコマンドキューイング数を最小キュー数として選択する。ここでは、最小キュー数選択部13は、最小キュー数としてストレージ3bのコマンドキューイング数である10を選択する。そして、最小キュー数選択部13は、選択した最小キュー数を各仮想ディスクの識別情報に対応させてキュー数設定部14へ出力する。ここでは、最小キュー数選択部13は、最小キュー数として10を識別情報00xに対応させてキュー数設定部14へ出力する。
キュー数設定部14は、各仮想ディスクのコマンドキューイング数の問い合わせをコマンド出力部21から受ける。この問い合わせは、例えば、SCSIのMode Sense コマンドが使用される。キュー数設定部14は、各仮想ディスクのコマンドキューイング数の取得命令をキュー数取得部12に出力する。
また、キュー数設定部14は、最小キュー数選択部13から、各仮想ディスクの識別情報とともに該仮想ディスクに対応する最小キュー数の入力を受ける。そして、キュー数設定部14は、受信した最小キュー数をコマンドキューイング数として仮想ディスクの識別情報と対応させてコマンド出力部21へ出力する。例えば、キュー数設定部14は、識別情報00xである仮想ディスクのコマンドキューイング数として10を識別情報00xに対応させてコマンド出力部21へ出力する。
ここの説明は、ストレージ3a、3bで構成された仮想ディスクにおけるコマンドキューイング数の設定についての説明なので、そのコマンドキューイング数は、コマンドキューイング数が少ない方のストレージ3bのコマンドキューイング数に設定される。これに対し、例えば、ストレージ3aだけで構成された仮想ディスクの場合、最小キュー数はストレージ3aのコマンドキューイング数に一致する。そのため、この様な場合には、キュー数設定部14は、仮想ディスクのコマンドキューイング数をストレージ3aのコマンドキューイング数である30に設定する。このように、仮想ディスクのコマンドキューイング数を、その仮想ディスクで使用できる最大の値に設定することができる。したがって、ストレージシステムを構成するストレージ3のコマンドキューイングの性能を有効活用することが可能となる。
命令出力部15は、仮想ディスクに対するデータの読み書きなどの実行命令の入力をコマンド出力部21から受ける。この実行命令には仮想ディスクの識別情報なども含まれている。命令出力部15は、入力された識別情報に対応する仮想ディスクを特定する。そして、命令出力部15は、特定した仮想ディスクを構成するストレージ3に実行命令を出力する。例えば、データの読み出し命令であれば、命令出力部15は、仮想ディスクを構成するストレージ3のうち、指定されたデータが実際に記憶されているハードディスクを有するストレージ3に対し実行命令を出力する。また、データの書き込み命令であれば、命令出力部15は、仮想ディスクを構成するストレージ3の中から適当なストレージ装置を選択し、その選択したストレージ3に実行命令を出力する。例えば、このストレージ装置の選択は、仮想ディスクを構成するストレージ3のうち、仮想ディスクに使用しているハードディスクの容量が最も多く残っている装置を選択することで行われる。
応答出力部16は、ストレージ3から実行命令に対する応答の入力を受ける。応答出力部16は、受信した応答を実行部22へ出力する。また、応答出力部16は、応答を出力した旨の通知をコマンド出力部21へ出力する。ここで、本実施例では、応答出力部16がコマンド出力部21へ応答を出力した旨の通知を行っているが、応答出力部16より応答を受信した実行部22がコマンド出力部21へ通知する構成でも良い。
コマンド出力部21は、メモリやハードディスクなどの記憶媒体を有している。コマンド出力部21は、キュー数設定部14に対し、コマンドキューイング数を問い合わせる。この問い合わせは、例えばコマンド出力部21がSCSIのMode Sense コマンドを出力することで実行される。この問い合わせのタイミングは、例えばホスト2に電源が投入されたタイミングなどである。そして、コマンド出力部21は、仮想ディスクの識別情報に対応した各仮想ディスクのコマンドキューイング数の入力をキュー数設定部14から受ける。そして、コマンド出力部21は、各仮想ディスクのコマンドキューイング数を仮想ディスクの識別情報に対応させて記憶する。
また、コマンド出力部21は、仮想ディスクに対するデータの読み書きなどの実行命令を命令出力部15へ出力する。このとき、コマンド出力部21は、キュー数設定部14から入力されたコマンドキューイング数を上限として、各仮想ディスクへの実行命令の出力を行う。具体的には、コマンド出力部21は、仮想ディスクに対する実行命令を出力し、出力した実行命令の数がその仮想ディスクのコマンドキューイング数に達すると、その仮想ディスクへの実行命令の出力を停止する。その後、コマンド出力部21は、その仮想ディスクへの実行命令に対する応答を出力した旨の通知を応答出力部16から受けると、その仮想ディスクへの実行命令の出力を再開する。
実行部22は、ストレージ3を用いるアプリケーションを実行する。このとき、実行部22は、応答出力部16よりストレージ3からの応答を取得しアプリケーションの実行に用いる。
次にストレージ3a、3bについて説明するが、ストレージ3a及びストレージ3bは同じ構成の機能部を備え、命令格納部31a、31b、及び処理実行部32a、32bはそれぞれ同じ動作を行う。そこで、以下の説明では、ストレージ3aについて説明する。ただし、各機能部の動作や構成はストレージ3bについても同様である。
処理実行部32aは、命令出力部15から実行命令の入力を受ける。処理実行部32aは、自己がその実行命令を処理できる場合、入力された実行命令に従ってデータの読み書きなどの処理を行う。これに対し、現在処理を行うなどしているため、新たに入力された実行命令を処理できない場合、処理実行部32aは、その新たに入力された実行命令を命令格納部31aへ出力する。
処理実行部32aは、実行命令の処理を行った後、その実行命令に対する応答を応答出力部16へ出力する。
命令格納部31aは、メモリやハードディスクなどの記憶媒体を有している。命令格納部31aは、ストレージ3aのコマンドキューイング数を予め記憶している。命令格納部31aは、コマンドキューイング数の問い合わせをキュー数取得部12から受信する。そして、命令格納部31aは、コマンドキューイング数の問い合わせに対し、自己が記憶しているストレージ3aのコマンドキューイング数を、キュー数取得部12へ出力する。
また、命令格納部31aは、処理実行部32aから実行命令の入力を受ける。命令格納部31aは、入力された実行命令を自己の記憶領域に格納していく。この時、命令格納部31aは、自己が記憶しているコマンドキューイング数を上限として実行命令の格納を行う。例えば、命令格納部31aは、コマンドキューイング数と同数の実行命令を格納している状態で、新たに実行命令が入力された場合、処理不可といった応答を処理実行部32aに返信する。ただし、本実施例では、コマンド出力部21は各仮想ディスクのコマンドキューイング数を把握している。そのため、命令格納部31aが、コマンドキューイング数を超えて実行命令の入力を受けることはない。
さらに、命令格納部31aは、処理実行部32aからの実行命令の出力要求に対し、適切な実行命令を出力する。ここで、適切な実行命令とは、処理の優先順位が高い実行命令や一番古く格納された実行命令などである。この実行命令の選択方法は、運用条件に合わせて設定されることが好ましい。また、本実施形態では、処理実行部32aで実行命令をまず受けて、その実行命令が処理できない場合に命令格納部31aへ格納する構成としているが、これは他の構成でも良い。例えば、命令格納部31aで実行命令を一旦受けてから、処理実行部32aが処理を行える状態か否かを判断し、処理が行える状態の場合に、処理実行部32aに実行命令を出力する構成でも良い。
次に図3を参照して、実施例2に係るスイッチ装置を用いたストレージシステムのコマンドキューイング数の設定及びアプリケーションの実行の動作について説明する。図3は、実施例2に係るスイッチ装置を用いたストレージシステムのコマンドキューイング数の設定及びアプリケーションの実行のフローチャートである。図3の処理を行う前提として、仮想ディスク構成部11は、各ストレージ3の物理ディスクを用いて仮想ディスクを予め構成している。また、仮想ディスク構成部11は、構成した仮想ディスクの識別情報及び各仮想ディスクを構成するストレージ3の識別情報を記憶している。
まず、操作者が、ホスト2の電源を入れる(ステップS101)。電源が入れられると、コマンド出力部21は、各仮想ディスクのコマンドキュー数をキュー数設定部14に問い合わせる(ステップS102)。キュー数設定部14は、キュー数取得部12に対して各仮想ディスクのコマンドキュー数の取得命令を出力する(ステップS103)。
キュー数取得部12は、キュー数設定部14からのコマンドキュー数の問い合わせを受けて、各仮想ディスクの識別情報及び各仮想ディスクを構成するストレージ3の識別情報を仮想ディスク構成部11から取得する(ステップS104)。
キュー数取得部12は、仮想ディスク毎に、仮想ディスクを構成する各ストレージ3のコマンドキューイング数をそれぞれのストレージ3に問い合わせる。そして、キュー数取得部12は、仮想ディスク毎に、仮想ディスクを構成するストレージ3のそれぞれのコマンドキューイング数を取得する(ステップS105)。
最小キュー数選択部13は、仮想ディスク毎に、仮想ディスクを構成するストレージ3のコマンドキューイング数の最小値を最小キュー数として選択する。そして、最小キュー数選択部13は、仮想ディスクの識別情報とその仮想ディスクの最小キュー数とを対応させてキュー数設定部14へ出力する(ステップS106)。
キュー数設定部14は、各仮想ディスクの識別情報に対応させた該仮想ディスクの最小キュー数の入力を最小キュー数選択部13から受ける。そして、キュー数設定部14は、受信した最小キュー数をコマンドキューイング数として各仮想ディスクの識別情報に対応させてコマンド出力部21へ出力する(ステップS107)。
コマンド出力部21は、各仮想ディスクの識別情報と該仮想ディスクのコマンドキューイング数との対応をキュー数設定部14から受信する。そして、コマンド出力部21は、各仮想ディスクのコマンドキューイング数と該仮想ディスクの識別情報とを対応させて記憶する(ステップS108)。
操作者は、仮想ディスクに対してデータの読み書きなどを行うアプリケーションを実行部22に起動させる(ステップS109)。
コマンド出力部21は、実行命令の出力の対象となる仮想ディスクにおいて、定められたコマンドキューイング数だけ実行命令が蓄積したかを判断する(ステップS110)。コマンドキューイング数の実行命令が蓄積していると判断した場合(ステップS110Yes)、ステップS110の判断を繰り返す。ここで、コマンド出力部21は、応答出力部16から実行命令を処理した旨の通知を受けると、蓄積している実行命令の数が減ったことが分かる。そして、コマンドキューイング数の実行命令が蓄積した状態のときに、蓄積している実行命令の数が減ると、コマンド出力部21は、蓄積している実行命令がコマンドキューイング数より少ないと判断できる。
一方、蓄積している実行命令が定められたコマンドキューイング数より少ないと判断した場合(ステップS110No)、コマンド出力部21は、命令出力部15へ実行命令を出力する(ステップS111)。
実行部22は、アプリケーションの実行が終了したか否かを判断する(ステップS112)。アプリケーションがまだ実行中の場合(ステップS112No)、ステップS1110へ戻る。
一方、アプリケーションの実行が終了した場合(ステップS112Yes)、実行部22及びコマンド出力部21による実行命令の出力は終了する。
次に、図4を参照して本実施例に係るスイッチ装置を用いたストレージシステムの動きを具体的に説明する。図4は、実施例2に係るスイッチ装置を用いたストレージシステムの構成図である。ここでは、論理ユニット番号(Logical Unit Number : LUN)0を有する仮想ディスク102とLUN1を有する仮想ディスク103との2つの仮想ディスクが構成されている。そして、ストレージ3aのコマンドキューイング数は30であり、ストレージ3bのコマンドキューイング数は10である。
FCスイッチ1は、スイッチの動作制御を行うソフトウェアである制御ファームウェア120を記憶している。そして、FCスイッチ1は、制御ファームウェア120によって動作が制御される。以下の説明のFCスイッチ1の各動作は、実際には制御ファームウェア120によって制御されているものである。また、ホスト2におけるデータの送受信はデバイスドライバ200によって制御される。以下の説明のホスト2の各動作は、実際にはデバイスドライバ200によって制御されているものである。
VT101は、仮想化ターゲット(Virtual Target : VT)である。仮想化ターゲットとは、ホスト2とのデータの送受信を行う仮想的な入出力ポートである。ホスト2は、VT101を経由して仮想ディスク102又は仮想ディスク103に接続する。ホスト2は、この接続が確立した状態でFCスイッチ1に対し実行命令を送信して、仮想ディスク102又は仮想ディスク103へのデータの読み出しや書き込みを行う。
図4の仮想ディスク102、103とストレージ3a、3bとを結ぶ点線は、各仮想ディスクを構成しているストレージを表している。仮想ディスク102は、ストレージ3a及びストレージ3bによって構成されている。仮想ディスク103は、ストレージ3aのみで構成されている。そして、VT101、仮想ディスク102、及び仮想ディスク103で1つの仮想ストレージが構成されている。FCスイッチ1は、仮想ストレージシステム100として仮想ストレージを管理する。仮想ストレージシステム100は、図4において点線で囲んで示されている。
電源が入れられると、ホスト2は、LUN0である仮想ディスク102及びLUN1である仮想ディスク103のコマンドキューイング数を問い合わせる。FCスイッチ1は、問い合わせを受けて、まずLUN0である仮想ディスク102を構成しているストレージ3a及びストレージ3bに対してコマンドキューイング数の問い合わせを行う。そして、FCスイッチ1は、ストレージ3a、3bからの応答により、ストレージ3aのコマンドキューイング数が30であり、ストレージ3bのコマンドキューイング数が10であることを把握する。そして、FCスイッチ1は、最小キュー数を取得する。ここでは、ストレージ3bのコマンドキューイング数の方が小さいので、FCスイッチ1は、最小キュー数として10を取得する。同様にして、FCスイッチ1は、LUN1である仮想ディスク103を構成しているストレージ3aに対してコマンドキューイング数の問い合わせを行う。そして、FCスイッチ1はストレージ3aからの応答により、ストレージ3aのコマンドキューイング数が30であることを把握する。そして、ストレージ3aのコマンドキューイング数が最も小さいコマンドキューイング数であるので、FCスイッチ1は、最小キュー数として30を取得する。ここで、本実施例では、FCスイッチ1は、ホスト2の問い合わせを契機として最小キュー数の取得をおこなっているが、FCスイッチ1は、最小キュー数を予め取得しておいても良い。
そして、FCスイッチ1は、ホスト2に対して、LUN0である仮想ディスク102のコマンドキューイング数として10をホスト2に出力する。また、FCスイッチ1は、ホスト2に対して、LUN1である仮想ディスク103のコマンドキューイング数として30をホスト2に出力する。ホスト2は、LUN0である仮想ディスク102のコマンドキューイング数を10として記憶する。また、ホスト2は、LUN1である仮想ディスク103のコマンドキューイング数を30として記憶する。
次に、ホスト2が、仮想ディスク102又は仮想ディスク103へ実行命令を出力する場合について説明する。
ホスト2は、記憶している仮想ディスク102のコマンドキューイング数である10を、待機させることができる実行命令の数の上限として、仮想ディスク102に対し実行命令を出力する。また、ホスト2は、記憶している仮想ディスク103のコマンドキューイング数である30を、待機させることができる実行命令の数の上限として、仮想ディスク103に対し実行命令を出力する。
すなわち、ホスト2は、実行命令の出力の対象が仮想ディスク102(LUN0)の場合はコマンドキューイング数を10として実行命令の出力を行える。また、ホスト2は、実行命令の出力の対象が仮想ディスク103(LUN1)の場合はコマンドキューイング数を30として実行命令の出力を行える。このように、ホスト2は、仮想ディスク毎、すなわち論理ユニット単位で、それぞれ異なるコマンドキューイング数の実行命令を出力することができる。
上述してきたように、本実施例では、仮想ディスクを構成するストレージの中で最もコマンドキューイング数が少ないものを取得し、その仮想ディスクのコマンドキューイング数として設定する。これにより、本実施例では、仮想ディスク毎に使用できる最大の値のコマンドキューイング数を設定することができる。そして、その設定したコマンドキューイング数を上限としてホストは仮想ディスクに対し実行命令を出力することができる。したがって、ストレージシステムを構成するストレージのコマンドキューイングの性能を有効活用することが可能となる。
図5は、実施例3に係るスイッチ装置を用いたストレージシステムのブロック図である。本実施例に係るFCスイッチ1は実施例2に係るFCスイッチ1においてデータ移行部17及び変更通知部18をさらに備えたものである。本実施例に係る各機能部において、実施例2と同様の符号を有する機能部は特に説明のない限り同様の機能を有するものとする。
本実施例に係るFCスイッチ1は、稼働中の仮想ディスクに記憶されているデータを他の仮想ディスクへ移行し、さらに、データの移行先の仮想ディスクのコマンドキューイング数をホスト2に通知する構成が実施例2と異なる。ここで、仮想ディスクが稼働中とは、その仮想ディスクを構成する物理ディスクがオンラインの状態にあることを指す。このデータの移行は「マイグレーション」と呼ばれることもある。そこで、以下では、仮想ディスク間のデータの移行及びデータの移行に伴うコマンドキューイング数の通知について主に説明する。
ここで、本実施例においても、FCスイッチ1に設けられた仮想ディスク構成部11によって仮想ディスクが作成される構成としている。しかし、この仮想ディスク構成部11は、FCスイッチ1に設けられていなくてもよい。
データ移行部17は、仮想ディスク構成部11が構成した仮想ディスクのうちの稼働中の1つの仮想ディスクからデータを読み出す。以下では、このデータを「移行対象データ」と呼ぶ。データ移行部17は、読み出した移行対象データを他の仮想ディスクへ書き込む。
さらに、データ移行部17は、移行対象データを移行した移行先の仮想ディスクの識別情報を命令出力部15へ出力する。また、データ移行部17は、移行対象データを他の仮想ディスクに移行して、論理ユニットを構成する仮想ディスクを変更した旨の通知を変更通知部18へ出力する。
命令出力部15は、移行先の仮想ディスクの識別情報をデータ移行部17から受信する。命令出力部15は、移行後の初めての実行命令をコマンド出力部21から受けると、変更通知部18へ変更の通知命令を出力する。また、命令出力部15は、移行対象データに対する実行命令の入力をコマンド出力部21から受けると、その移行対象データに対する実行命令を移行先の仮想ディスクを構成するストレージ3へ出力する。ここで、上述した始めての実行命令が、移行対象データに対する実行命令であっても良い。
変更通知部18は、データ移行部17から論理ユニットを構成する仮想ディスクの変更が行われた旨の通知を受信する。そして、変更通知部18は、仮想ディスクの変更によるコマンドキューイング数の変更をシステムの新たな状態情報として記憶する。ここで、状態情報とは、システムの構成などの状態を表す情報であり、例えばコマンドキューイング数の変更などの情報が含まれている。そして、変更通知部18は、命令出力部15から変更の通知命令を受けて、コマンド出力部21へシステムの新たな状態情報を有している旨の通知を出力する。そして、変更通知部18は、状態情報の取得要求をコマンド出力部21から受けて、コマンドキューイング数の変更の通知をコマンド出力部21へ出力する。
コマンド出力部21は、変更通知部18からコマンドキューイング数の変更の通知を受けると、キュー数設定部14に対し、各仮想ディスクのコマンドキューイング数を問い合わせる。そして、コマンド出力部21は、キュー数設定部14から各仮想ディスクのコマンドキューイング数の入力を受ける。この、コマンド出力部21によるコマンドキューイング数の取得は、実施例1で説明したコマンドキューイング数の取得と同じ動作が実行される。
そして、移行対象データに対する処理の実行命令を実行部22から受信した場合、コマンド出力部21は、移行先の仮想ディスクのコマンドキューイング数を上限として命令出力部15に対し実行命令を出力する。このとき、本実施例では、コマンド出力部21は、実行命令を出力する対象として移行前の仮想ディスクに格納されている移行対象データを指定する。このように、コマンド出力部21が、移行前の仮想ディスクに格納されている移行対象データを実行命令の対象として指定しても、命令出力部15は移行先の仮想ディスクに格納されている移行対象データを対象として実行命令を出力するので問題はない。
ここで、図6を参照して本実施例に係るスイッチ装置を用いたストレージシステムの動きを具体的に説明する。図6は、実施例3に係るスイッチ装置を用いたストレージシステムの構成図である。ここでは、ストレージ3aで構成される仮想ディスク104から、ストレージ3bで構成される仮想ディスク107へデータが移行された場合で説明する。ストレージ3aはコマンドキューイング数が30であり、ストレージ3bはコマンドキューイング数が10である。FCスイッチ1は、仮想ストレージシステム110として各仮想ストレージを管理する。仮想ストレージシステム110は、図6において点線で囲われて示されている。
FCスイッチ1は、制御ファームウェア120を記憶している。そして、FCスイッチ1は、制御ファームウェア120によって動作が制御される。以下の説明のFCスイッチ1の各動作は、実際には制御ファームウェア120によって制御されているものである。また、ホスト2におけるデータの送受信はデバイスドライバ200によって制御される。以下の説明のホスト2の各動作は、実際にはデバイスドライバ200によって制御されているものである。
VT101は、仮想化ターゲットである。ホスト2は、VT101を経由してLUN0である仮想ディスク104、LUN1である仮想ディスク105、及びLUN2である仮想ディスク106に接続する。ホスト2は、この接続が確立した状態でFCスイッチ1に対し実行命令を送信して、仮想ディスク104〜106へのデータの読み出しや書き込みを行う。
図6の仮想ディスク104〜106とストレージ3aとを結ぶ点線、及び仮想ディスク107とストレージ3bとを結ぶ点線は、各仮想ディスクを構成しているストレージを表している。仮想ディスク104〜106は、ストレージ3aによって構成されている。仮想ディスク107は、ストレージ3bによって構成されている。
まず、データの移行前の状態では、LUN0である仮想ディスク104が、移行対象データを記憶している。仮想ディスク104〜106のコマンドキューイング数は、ストレージ3aのコマンドキューイング数である30である。この状態では、ホスト2は、待機させておける実行命令の上限値を30として、仮想ディスク104に記憶されている移行対象データに対する実行命令を出力する。また、ホスト2は、待機させる実行命令の上限値を30として、仮想ディスク105及び仮想ディスク106に対する実行命令の出力を行う。
そして、仮想ディスク104の稼働中に、仮想ディスク104から仮想ディスク107への移行対象データの移行が行われる。これにより、仮想ディスク107がLUN0となる。そして、仮想ディスク107が移行対象データを記憶する。
仮想ディスク107は、ストレージ3bのみで構成されているので、そのコマンドキューイング数はストレージ3bのコマンドキューイング数と同じく10である。したがって、移行することで移行対象データはコマンドキューイング数が10の仮想ディスク107に記憶されることになる。この移行が行われると、仮想ディスク107がLUN0である仮想ディスクとしてVT101を介してホスト2と接続することになる。すなわち、移行後の状態では、LUN0に記憶されている移行対象データに対する実行命令をホスト2が出力した場合、仮想ディスク107が実際の実行命令の入力を受ける相手となる。
FCスイッチ1は、仮想ディスク104から仮想ディスク107へのデータの移行を行った後、データに対する読み出し命令などをホスト2から受けると、データの移行の発生の情報をホスト2に通知する。そして、ホスト2は、データの移行が発生した場合、LUN0である仮想ディスク107、LUN1である仮想ディスク105、及びLUN2である仮想ディスク106のそれぞれのコマンドキューイング数をFCスイッチ1から取得する。このとき、ホスト2は、仮想ディスク107のコマンドキューイング数として10を取得する。これにより、ホスト2は、仮想ディスク107のコマンドキューイング数である10を待機させておける実行命令の上限値として、移行対象データに対する実行命令を出力することができる。また、ホスト2は、仮想ディスク105及び仮想ディスク106のコマンドキューイング数として30を取得する。これにより、ホスト2は、仮想ディスク105及び仮想ディスク106に対しては、待機させておける実行命令の上限値を30として実行命令を出力することができる。ここで、本実施例ではホスト2は、仮想ストレージシステム110に含まれるすべての論理ドライブ(LUN0〜2)についてのコマンドキューイング数を取得している。これは他の方法でも良く、ホスト2は、コマンドキューイング数が変更された論理ドライブ(LUN0)のコマンドキューイング数のみを取得し、他の論理ドライブ(LUN1、2)については既に取得しているコマンドキューイング数を用いてもよい。
次に、図7を参照して、実施例3に係るスイッチ装置のコマンドキューイング数の設定の動作の流れについて説明する。図7は、実施例3に係るスイッチ装置のコマンドキューイング数の設定のシーケンス図である。図7は紙面に向かって左端からホスト2、VT101、仮想ディスク104又は仮想ディスク107、仮想ディスク105、及び仮想ディスク106の経時的な動作を表している。ここで、仮想ディスク104及び仮想ディスク107は、移行対象データの移行により途中で入れ替わることでともにLUN0となるので1つの縦軸で表している。そして、それぞれの縦軸は下に向かって時間が経過していることを表している。また、以下で説明するVT101の動作とは、実際にはVT101を介してFCスイッチ1が動作することを表している。また、以下の説明では、読み出しコマンドを例に説明しているが、使用されるコマンドは書き込みコマンド(Write Command)など他のコマンドでもよい。さらに、各ステップにおいて使用するコマンドが異なってもよい。そして、図7においても、図6と同様に、仮想ディスク104〜106はストレージ3aで構成されており、仮想ディスク107はストレージ3bで構成されているものとする。また、このシーケンス図の前提として、ホスト2には、LUN0〜2である仮想ディスク104〜106のそれぞれのコマンドキューイング数が設定されているものとする。
ホスト2は、VT101に対して、読み出しコマンド(Read Command)を送信する(ステップS201)。この場合、仮想ディスク104〜106のいずれもストレージ3aから構成される仮想ディスクであり、コマンドキューイング数は30である。したがって、ホスト2は、VT101を介して接続できるLUN0〜2である仮想ディスク104〜106のコマンドキューイング数を全て30に設定している。VT101は、指定されたデータを仮想ディスク104〜106のいずれかから読み出し、ホスト2へ出力する。これにより、ホスト2はデータの読み出し(Read Data)が行える(ステップS202)。ここで、ステップS201及びステップS202の動作は、データの移行前、もしくはデータの移行後でコマンドキューイング数の設定が終わった後の動作である。そこで、このステップS201及びステップS202の動作はデータの移行が発生するまで繰り返される。
LUN0である仮想ディスク104から仮想ディスク107にデータが移行され、仮想ディスク107がLUN0となる(ステップS203)。ここで、LUN0のデータの移行中に、ホスト2からLUN0に対するコマンドが入力された場合、FCチャネル1は、仮想ディスク104のデータに対してコマンドを実行する。そして、FCチャネル1は、実行したコマンドがデータの書き込みや変更などであった場合、データの移行の完了後に、仮想ディスク107のデータに対して、データ移行中に行われたデータの更新を反映させる。
ホスト2は、データの移行後の最初の読み出しコマンドをVT101に対して出力する(ステップS204)。VT101は、データの移行後の最初の読み出しコマンドを受信すると、新たなシステムの状態(Status)情報を保持していることを通知する応答を出力する(ステップS205)。この応答は、例えばUnit Attention ステータスなどである。Unit Attention ステータスとは、取り外し可能な媒体の変更の可能性、あるいは、実行命令の対象がリセットされたことを示す応答である。
ホスト2は、VT101からの通知を受けて、状態情報の取得要求を出力する(ステップS206)。これは、Request Senseといったコマンドを使用してなされる。すると、VT101は、使用されていない特定のSCSIコマンドを用いて仮想ディスクのコマンドキューイング数に変更があったことを通知する(ステップS207)。
ホスト2は、VT101に対して、LUN0の仮想ディスク107のコマンドキューイング数の問い合わせを行う(ステップS208)。これに対し、VT101は、LUN0である仮想ディスク107からコマンドキューイング数を取得する(ステップS209)。ここで、実際には、FCスイッチ1は、仮想ディスク107を対象にして、実施例1で説明したコマンドキューイング数の取得の動作を行う。仮想ディスク107は、ストレージ3bのみで構成されているため、コマンドキューイング数は10である。そこで、VT101は、仮想ディスク107のコマンドキューイング数として10を取得する。そして、VT101は、仮想ディスク107のコマンドキューイング数として10をホスト2に通知する(ステップS210)。
次に、ホスト2は、VT101に対して、LUN1の仮想ディスク105のコマンドキューイング数の問い合わせを行う(ステップS211)。これに対し、VT101は、LUN1である仮想ディスク105からコマンドキューイング数を取得する(ステップS212)。ここでも、実際には、FCスイッチ1は、仮想ディスク105を対象にして、実施例1で説明したコマンドキューイング数の取得の動作を行う。仮想ディスク105は、ストレージ3aのみで構成されているため、コマンドキューイング数は30である。そこで、VT101は、仮想ディスク105のコマンドキューイング数として30を取得する。そして、VT101は、仮想ディスク105のコマンドキューイング数として30をホスト2に通知する(ステップS213)。
次に、ホスト2は、VT101に対して、LUN2の仮想ディスク106のコマンドキューイング数の問い合わせを行う(ステップS214)。これに対し、VT101は、LUN2である仮想ディスク106からコマンドキューイング数を取得する(ステップS215)。ここでも、実際には、FCスイッチ1は、仮想ディスク106を対象にして、実施例1で説明したコマンドキューイング数の取得の動作を行う。仮想ディスク106は、ストレージ3aのみで構成されているため、コマンドキューイング数は30である。そこで、VT101は、仮想ディスク106のコマンドキューイング数として30を取得する。そして、VT101は、仮想ディスク106のコマンドキューイング数として30をホスト2に通知する(ステップS216)。
ホスト2は、LUN0〜2である仮想ディスク105〜107のそれぞれのコマンドキューイングを取得した後に、再度読み出しコマンドをVT101へ出力する(ステップS217)。VT101は、受信した読み出しコマンドで指定されているデータを仮想ディスク105〜107のいずれかから取得し、ホスト2へ出力する。これにより、ホスト2は、データの読み出し(Read Data)が行える(ステップS218)。
この点、従来は、データの移行が行われても、デバイスドライバは移行対象データの格納先を同じ仮想ディスクとして把握していた。そのため、デバイスドライバは、仮想ディスクを構成するストレージ装置が変更されたことは把握できなかった。したがって、従来は仮想ディスク間のデータの移行に合わせてコマンドキューイング数を変更することはできなかった。
これに対し、上述してきたように、実施例3では、稼働中の仮想ディスクから他の仮想ディスクへデータの移行が行われたときに、ホストは、移行先の仮想ディスクのコマンドキューイング数の変更を把握することができる。これにより、ホストは移行先の仮想ディスクのコマンドキューイング数を上限としてそのデータに対する実行命令を出力することができる。したがって、データの移行が発生した場合にも、ストレージシステムを構成するストレージのコマンドキューイングの性能を有効活用することが可能となる。
ここで、本実施例では、いずれの仮想ディスクも1つのストレージのみで構成される場合で説明したが、実際には仮想ディスクを構成するストレージの数はいくつでも良い。その場合には、各仮想ディスクを構成するストレージのコマンドキューイング数のうち最小の値が、その仮想ディスクのコマンドキューイング数となる。この各仮想ディスクにはデータ移行後の移行先の仮想ディスクも含まれる。
1 FCスイッチ
2 ホスト
3a、3b ストレージ
11 仮想ディスク構成部
12 キュー数取得部
13 最小キュー数選択部
14 キュー数設定部
15 命令出力部
16 応答出力部
17 データ移行部
18 変更通知部
21 コマンド出力部
22 実行部
31a、31b 命令格納部
32a、32b 処理実行部

Claims (4)

  1. 複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行するデータ移行部と、
    前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する仮想ディスクの状態変更を通知する変更通知部と、
    前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得するキュー数取得部と、
    前記データの移行先の前記仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択する最小キュー数選択部と、
    前記キュー数設定部により選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する前記仮想ディスクのコマンドキューイング数として前記データの移行先の仮想ディスク毎に設定するキュー数設定部と
    を備えることを特徴とするスイッチ装置。
  2. 複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行し、
    前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する前記仮想ディスクの状態変更を通知し、
    前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受け、
    前記要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得し
    前記データの移行先の仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択し
    選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する仮想ディスクのコマンドキューイング数として前記データの移行先の前記仮想ディスク毎に設定する
    ことを特徴とするスイッチ制御方法。
  3. 計算装置、スイッチ装置、及び複数の記憶装置を有するストレージシステムであって、
    前記計算装置は、前記記憶装置に対するデータの読み書きの命令を前記スイッチ装置へ出力するコマンド出力部を備え、
    前記スイッチ装置は、
    複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行するデータ移行部と、
    前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する仮想ディスクの状態変更を通知する変更通知部と、
    前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得するキュー数取得部と、
    前記データの移行先の前記仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択する最小キュー数選択部と、
    前記キュー数設定部により選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する前記仮想ディスクのコマンドキューイング数として前記データの移行先の仮想ディスク毎に設定するキュー数設定部とを備え、
    前記記憶装置は、
    入力された前記命令を格納する命令格納部と、
    前記格納された前記命令を順次処理する処理実行部とを備え、
    前記コマンド出力部は、前記設定されたコマンドキューイング数を各前記仮想ディスクの処理待ちの前記命令の数の上限として、前記命令を出力する
    ことを特徴とするストレージシステム。
  4. スイッチ装置を介して計算装置に接続される複数の記憶装置を有するストレージ装置であって、
    前記スイッチ装置は、
    複数の記憶装置を用いて構成される仮想の記憶媒体である仮想ディスクから他の前記仮想ディスクへデータを移行するデータ移行部と、
    前記データの移行が行われた場合、自装置に接続されている計算装置に、前記データを記憶する仮想ディスクの状態変更を通知する変更通知部と、
    前記状態変更の通知を受けた前記計算装置からデータの移行先の仮想ディスクのコマンドキューイング数の設定の要求を受けて、前記データの移行先の仮想ディスクを構成する前記記憶装置のそれぞれが格納できる処理待ちの命令の数の上限値であるコマンドキューイング数を前記記憶装置毎にそれぞれ取得するキュー数取得部と、
    前記データの移行先の前記仮想ディスクを構成する前記記憶装置の前記コマンドキューイング数のうちの最小値を最小キュー数として選択する最小キュー数選択部と、
    前記キュー数設定部により選択された前記最小キュー数を、当該最小キュー数が選択された記憶装置が構成する前記仮想ディスクのコマンドキューイング数として前記データの移行先の仮想ディスク毎に設定するキュー数設定部とを備え、
    前記記憶装置は、
    前記計算装置から前記スイッチ装置を経由して入力された前記記憶装置に対するデータの読み書きの命令を格納する命令格納部と、
    前記格納された前記命令を順次処理する処理実行部とを備える
    ことを特徴とするストレージ装置。
JP2010020725A 2010-02-01 2010-02-01 スイッチ装置、スイッチ制御方法、及びストレージシステム Expired - Fee Related JP5532980B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010020725A JP5532980B2 (ja) 2010-02-01 2010-02-01 スイッチ装置、スイッチ制御方法、及びストレージシステム
US13/014,375 US8713219B2 (en) 2010-02-01 2011-01-26 Switching device, switch control method, and storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010020725A JP5532980B2 (ja) 2010-02-01 2010-02-01 スイッチ装置、スイッチ制御方法、及びストレージシステム

Publications (3)

Publication Number Publication Date
JP2011159132A JP2011159132A (ja) 2011-08-18
JP2011159132A5 JP2011159132A5 (ja) 2012-11-15
JP5532980B2 true JP5532980B2 (ja) 2014-06-25

Family

ID=44342626

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010020725A Expired - Fee Related JP5532980B2 (ja) 2010-02-01 2010-02-01 スイッチ装置、スイッチ制御方法、及びストレージシステム

Country Status (2)

Country Link
US (1) US8713219B2 (ja)
JP (1) JP5532980B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101899719B1 (ko) * 2017-04-26 2018-09-17 세종대학교산학협력단 가상 머신에 대한 입출력 성능 제한 방법
JP2025145677A (ja) * 2024-03-22 2025-10-03 株式会社東芝 磁気ディスク装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0969367A3 (en) * 1998-05-28 2001-07-11 Compaq Computer Corporation System and method used in a computer system for distributing tasks between multiprocessing I/O subsystems
US6732193B1 (en) * 2000-06-09 2004-05-04 International Business Machines Corporation Method, system, and program for determining a number of write operations to execute
US6606630B1 (en) * 2000-08-21 2003-08-12 Hewlett-Packard Development Company, L.P. Data structure and method for tracking network topology in a fiber channel port driver
US6952734B1 (en) * 2000-08-21 2005-10-04 Hewlett-Packard Development Company, L.P. Method for recovery of paths between storage area network nodes with probationary period and desperation repair
US6922414B1 (en) * 2000-08-21 2005-07-26 Hewlett-Packard Development Company, L.P. Apparatus and method for dynamic command queue depth adjustment for storage area network nodes
US6745286B2 (en) * 2001-01-29 2004-06-01 Snap Appliance, Inc. Interface architecture
US7237021B2 (en) 2003-04-04 2007-06-26 Bluearc Uk Limited Network-attached storage system, device, and method supporting multiple storage device types
JP2006285809A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd ストリーミング向け性能保証を行うストレージ装置
US7797468B2 (en) * 2006-10-31 2010-09-14 Hewlett-Packard Development Company Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing
JP2008112399A (ja) * 2006-10-31 2008-05-15 Fujitsu Ltd ストレージ仮想化スイッチおよびコンピュータシステム
US7606944B2 (en) * 2007-05-10 2009-10-20 Dot Hill Systems Corporation Dynamic input/output optimization within a storage controller
US7849167B2 (en) * 2008-04-15 2010-12-07 International Business Machines Corporation Dynamic distributed adjustment of maximum use of a shared storage resource

Also Published As

Publication number Publication date
JP2011159132A (ja) 2011-08-18
US8713219B2 (en) 2014-04-29
US20110191519A1 (en) 2011-08-04

Similar Documents

Publication Publication Date Title
JP4383132B2 (ja) 仮想化制御装置及び計算機システム
JP5147584B2 (ja) ストレージサブシステム及びコントローラによるコマンド実行方法
JP4917174B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作用の入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法
US7979604B2 (en) Methods and apparatus for assigning performance to data volumes on data storage systems
EP2399190B1 (en) Storage system and method for operating storage system
CN101064656B (zh) 存储集群系统和数据处理方法
JP5159901B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作に関するi/o処理を容易にするための方法
US8694727B2 (en) First storage control apparatus and storage system management method
EP1837751B1 (en) Storage system, storage extent release method and storage apparatus
US8307171B2 (en) Storage controller and storage control method for dynamically assigning partial areas of pool area as data storage areas
US8285929B2 (en) Management computer
WO2013160958A1 (en) Information storage system and method of controlling information storage system
JP2009146106A (ja) 物理的な通信ポートに付加される仮想的な通信ポートを移行する機能を有したストレージシステム
JP2007280319A (ja) 記憶領域動的割当方法
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
WO2014167716A1 (ja) 計算機システムの管理システム及び管理方法
WO2014141466A1 (ja) 計算機システム
US8732428B2 (en) Computer system and its control method
US8904119B2 (en) Method and structures for performing a migration of a logical volume with a serial attached SCSI expander
US20170039002A1 (en) Memory device that changes execution order of commands
US10691357B2 (en) Consideration of configuration-based input/output predictions in multi-tiered data storage system management
JP5532980B2 (ja) スイッチ装置、スイッチ制御方法、及びストレージシステム
US9798661B2 (en) Storage system and cache control method
JP2008146536A (ja) ストレージ装置及びこれを用いたデータ管理方法
JP2019164510A (ja) ストレージシステム及びio処理の制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121001

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5532980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414

LAPS Cancellation because of no payment of annual fees