【実施例1】
【0014】
以下、
図1乃至
図18を参照して本発明の第一の実施例を説明する。本実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【0015】
図1は、本実施例における計算機システムの構成例を示すブロック図である。本実施例における計算機システムは、1つ以上のノード10を備える。ノード10は、ノード10に1つ以上のメモリ11、CPU(Central Processing Unit)12、I/O(Input/Output)デバイス13、NIC(Network Interface Card)14、ストレージデバイス群15及び16を備える。ここでストレージデバイス群15、16は、複数のストレージデバイスの集合である。また、ストレージデバイス群15と16とでは、種類が異なる。例えば、一方はHard Disk Drive(HDD)であり、一方はSolid State Drive(SSD)などである。また、I/Oデバイス13はHBA(Host Bus Adaptor)やCNA(Converged Network Adapter)、HCA(Host Channel Adaptor)、PCIeエクステンダなどである。なお、本実施例では、発明の好適な例として、高速なデバイスと低速なデバイスの2種類がノード10に接続する形で説明をするが、デバイスの種類は2種類に限られず、1種類でも3種類以上であっても良い。
【0016】
ノード10のメモリ11には、論理分割プログラム100、I/O制御プログラム110、ストレージ制御プログラム120、共有テーブル130、1つ以上のOS(Operating System)/アプリ150を備える。論理分割プログラム100は、1つ以上の論理区画をノード上に構築し、各論理区画では独立してOSを稼働できる。I/O制御プログラム110は、OS/アプリ150からのI/O要求を制御する。ストレージ制御プログラム120は、ストレージデバイス群15、16の管理機能とノード内およびノード外からのストレージI/Oを受け付け応答する共有ストレージ機能、およびデータ保護やデータコピー等の機能を提供する。共有テーブル130は、I/O制御プログラム110とストレージ制御プログラム120とで共有する情報を保持する。すなわち、メモリ11は、共有テーブル130を含む共用部分、コンピュート区画用の部分およびストレージ区画用の部分から構成されることになる。
【0017】
また、計算機システムには、ネットワーク20、および管理計算機30、管理計算機30のメモリ31、CPU32、NIC33、および管理プログラム35を備える。なお、管理計算機30およびネットワーク20は必須ではなく、例えばあるノード10に管理プログラム35を備え、計算機システム全体の管理を行っても良い。
【0018】
管理プログラム35は、本計算機システム全体を管理する。管理計算機30は、ネットワーク20を介して、ノード10から必要な情報の取得とノード10の制御ができる。
【0019】
また、ノード10には、ストレージ装置40が接続されている。ここでストレージ装置40とは、SAN(Storage Area Network)ストレージ装置40などの共有ストレージ装置である。なお、ストレージ装置40は必須でなない。なお、本実施例では、ストレージデバイスを記憶媒体として、ストレージ装置40を種々のストレージ機能を有する機器として用いる。
【0020】
図2は、ノード10の論理的な構成例を示す。本実施例では、ノード10には、論理分割プログラム100により論理区画としてコンピュート区画101とストレージ区画102が構築される。なお、ここで論理分割プログラム100は、ノード10の
備えるCPU12,メモリ11、I/Oデバイス13、ストレージデバイス群15、16などのハードウェアリソースを論理的に分割して各論理区画に割り当てることができる。なお、割り当て方法として、特定の論理区画に特定のハードリソースを優先して割り当てることで、該当リソースの性能保証や障害影響範囲の限定ができる。また、ハードリソースの共有も可能であり、特定の物理ハードリソースを複数の論理区画に対して共有に割り当てることにより実現する。
【0021】
本実施例では、コンピュート区画101においては、メモリ11上にI/O制御プログラム110およびOS/アプリ150を保持し、CPU12により実行される。ストレージ区画102にはストレージ制御プログラム120をメモリ11上に保持し、CPU12により実行される。また、ストレージ区画102には、ストレージデバイス群16が割り当てられている。また、コンピュート区画101、ストレージ区画102の両方に共有記憶部103およびストレージデバイス群15が割り当てられ、共有されている。ここで共有記憶部103はノード10のメモリ11の一部であり、共有テーブル130を保持する。なお、本実施例ではI/O制御プログラム110はコンピュート区画101に存在するが、I/O制御プログラム110が論理分割プログラム100の一部であっても良い。
【0022】
図3は、本実施例のストレージ制御プログラム120のブロック図を示す。
【0023】
デバイス管理部121は、ストレージ区画102に割り当てられたストレージデバイス群15及び16のデバイス構成とRAID(Redundant Array Inexpensive Disk)構成を管理する。ここでデバイス構成の管理とは、該当ストレージデバイスがストレージ区画102とコンピュート区画101とで共有可能か否か、該当ストレージデバイスをRAID構成で利用するか、及び直接アクセス(以下、Rawアクセスと呼ぶ)可能なデバイスとして利用するかを管理し、本管理情報はデバイス構成テーブル131に保持する。さらに、デバイス管理部121は、論理分割プログラム100に対して、ストレージデバイスの論理区画への割り当て変更を指示できる。また、RAID構成の管理とは、該当ストレージデバイスのRAIDレベルと構成を管理し、本管理情報はRAID構成テーブル132に保持する。なお、デバイス管理部121は、管理GUI(Graphical User Interface)やAPI(Application Programming Interface)を備える。
【0024】
I/O処理部122は、ホストからのI/O要求に対するキャッシュ制御とRAID構成部123および外部ストレージ接続部124へのI/OアクセスI/O要求と、ホストへの応答を実施する。さらに、I/O処理部122は、コピーやスナップショット、バックアップ、ミラーリング、ティアリングなどのストレージ装置特有の機能を備える。ここでホストとは、ノード10内のコンピュート区画101、または当該ストレージ制御プログラムを備えるノード10外部の別ノードやサーバである。
【0025】
RAID構成部123は、I/O要求に対して論理ブロックアドレスと物理ブロックアドレスへの変換処理を実施してストレージデバイスに対してI/O要求を実施する。
【0026】
外部ストレージ接続部124は、ストレージデバイスおよびストレージ装置40に対してRawアクセスを実施するため、該当ストレージデバイスおよびストレージ装置40に対応する論理ボリュームを構成し、I/O要求を該当ストレージデバイスおよびストレージ装置40に対して実施する。
【0027】
デバイスドライバ125は、ストレージデバイスのドライバ、コンピュート区画101との接続のためのドライバ、およびI/Oデバイス13のドライバである。
【0028】
図4は、本実施例の共有テーブル130のブロック図を示す。ボリューム構成テーブル126、デバイス構成テーブル131、RAID構成テーブル132、仮想デバイス構成テーブル133についてはそれぞれ
図7、
図5、
図6、および
図9にて詳細を述べる。
【0029】
図5は、本実施例のデバイス構成テーブル131を示す。カラム501は、ストレージデバイスの識別子501を保持する。ここでいうストレージデバイスは、たとえばSSD単位や、PCI-SSDボード単位、およびSR-IOV(Single Root I/O Virtualization)などでPCI-SSDボードを論理的に分割した単位である。ストレージデバイス識別子としては、たとえば該当デバイスのPCIのBus、Device、Functionなどの番号を利用する。もちろん識別が可能であれば、特定の識別子を付与しておき、これをストレージデバイス識別子としても良い。
【0030】
カラム502は、該当ストレージデバイスがストレージ区画102とコンピュート区画101とで共有可能か否かを保持する。本情報は、該当ストレージデバイスの仕様に基づき保持したり、APIにより取得したりする。カラム503は、該当ストレージデバイスをRAID構成で利用するか、Rawアクセスで利用するかを識別する。ここで“RAID”であればRAID構成、“Raw”であればRawアクセスで利用する。なお、本テーブル131はストレージ制御プログラム120やI/O制御プログラム110、管理プログラム35によって作成されても良いし、あらかじめ保存されていても良い。
【0031】
図6は、本実施例におけるRAID構成テーブル132を示す。カラム601は、アレイグループの識別子を保持する。カラム601は、該当アレイグループのRAIDレベル(RAID0,1,5,6等の情報)と、RAID構成としてデータドライブ数nとパリティドライブ数mを“nD+mP”として保持する。カラム603は、該当アレイグループに属するストレージデバイスの識別子を示す。このストレージデバイス識別子は、デバイス構成テーブル131のカラム501と対応する。なお、本テーブル132はストレージ制御プログラム120やI/O制御プログラム110、管理プログラム35によって作成されても良いし、あらかじめ保存されていても良い。
【0032】
図7は、本実施例におけるボリューム構成テーブル126を示す。カラム701はボリュームの識別子を保持する。カラム702は該当ボリュームに対応するストレージデバイスを保持する。ここで、RAID構成したストレージデバイスの場合であれば、アレイグループの識別子として“AG1”などと記載している。Rawアクセスのストレージデバイスの場合はストレージデバイスの識別子として“ストレージデバイス1”などと記載している。また、Rawアクセスのストレージでかつノード外部のストレージ装置40であれば“ストレージ装置x”などと記載している。さらに、特定のボリュームと同じ内容を持つミラーボリュームを論理的に構成する場合には、たとえばボリューム“VOL a”のミラーであれば“VOL aミラー”などと記載している。
【0033】
カラム703は割当先ホストの識別子を保持する。ここで割当とは、該当ボリュームが該当ホストからアクセス可能であることを示す。ここで、たとえばノード内のコンピュート区画101として、割当先の論理区画の識別子が“APP LPAR1”、さらに該当論理区画に対する論理的なボリュームの識別子(たとえばLUN(Logical Unit number)等)としてa,b,c…などの識別情報を組み合わせて、“APP LPAR1-a”などと記載している。また、ノード外のホストの場合は、WWNやSCSI Nameなどの識別子を保持する。さらに、割当先が存在しない場合は”なし”と記載している。なお、本テーブル126はストレージ制御プログラム120やI/O制御プログラム110、管理プログラム35によって作成されても良いし、あらかじめ保存されていても良い。
【0034】
図8は、本実施例のI/O制御プログラム110のブロック図を示す。
【0035】
仮想デバイス構成部111は、OS/アプリ150からアクセスするブロックデバイスとして、仮想デバイスを構成する。詳細フローは
図11に述べる。
【0036】
モード切り替え部112は、OS/アプリ150からストレージへのI/Oアクセスのパスを切り替える機能を備える。
【0037】
I/O振分部113は、ストレージへのI/Oアクセスをモードによって振り分ける機能を備える。詳細フローは
図12に述べる。
【0038】
RAID構成部114は、I/O要求に対して論理ブロックアドレスと物理ブロックアドレスへの変換処理を実施してストレージデバイスに対してI/O要求を実施する。
【0039】
デバイスドライバ115は、ストレージデバイスのドライバ、ストレージ区画102への接続のためのドライバ、およびストレージI/Oのドライバである。
【0040】
図9は、本実施例における仮想デバイス構成テーブル133を示す。カラム901は識別子として、ノード内のコンピュート区画101の論理区画の識別子を保持する。カラム902は該当論理区画における対象仮想デバイスの識別子を示す。この識別子は、I/O制御プログラム110の仮想デバイス構成部111が構成した仮想デバイスの識別子である。複数存在する場合は“,”により列挙する。カラム903は、該当仮想デバイスが複数パスを備えるか否かを保持する。本実施例では、備える場合は“あり”、備えない場合は“なし”と記載している。カラム904は該当仮想デバイスのモードを示す。
【0041】
ここで、“第一パス“とは、該当デバイスへのI/Oアクセスパスとして、ストレージ区画102のストレージ制御プログラム120を経由してストレージデバイスにアクセスする経路を利用する場合を示す。“第二パス”とは、コンピュート区画101から直接ストレージデバイスにアクセスする場合を示す。ここで、第一パスを利用する場合は、ストレージ制御プログラム120が備えるデータ保護機能やデータ制御機能などを活用できる。一方、第二パスを利用する場合は、ストレージ制御プログラム120をバイパスして直接ストレージデバイスにアクセスすることで、ストレージデバイスの性能を効果的に発揮できる。
【0042】
また、カラム905は、カラム904のパスで接続されるデバイスの識別子をI/Oのアクセス先として保持する。例えば、仮想デバイスBのI/Oのカラム904が第二パスであるため、送信先905は2bで識別されるデバイスとなる。
【0043】
カラム906は、該当仮想デバイスのRAIDレベルおよび構成を保持する。“Raw“であればRAID構成デバイスではない。RAIDが構成されているデバイスを対象とする場合、RAIDレベルと構成を”RAID5(4D+1P)”などと記載する。これはRAID構成テーブル132のカラム602と同等である。
【0044】
図10は、本実施例のストレージの論理的な構成を示す。ストレージデバイス群15には、RAIDが構成されたストレージデバイスの組としてRAID領域942と、直接アクセスが可能なストレージデバイスの組としてRaw領域943を備える。ストレージデバイス群16においても、RAID領域941を備える。RAID領域941、942、およびRaw領域943は、ストレージ区画102のストレージ制御プログラム120によりそれぞれボリューム931、932、および933に対応づけられる。さらに、ボリューム931、932、933は、それぞれコンピュート区画101のI/O制御プログラム110が認識するデバイス911、912、913に対応づけられる。また、RAID領域942、およびRaw領域943は、さらにコンピュート区画101のデバイス922、および923に対応づけられる。ここでRAID領域942およびデバイス922は複数のストレージデバイスであってもよい。
【0045】
I/O制御プログラム110が構成しOS/アプリ150に見せる仮想デバイス910はデバイス912、922が対応し、仮想デバイス920はデバイス913、923が対応し、仮想デバイス930はデバイス911が対応する。ここで、デバイス922が複数デバイスであった場合でも、I/O制御プログラム110のRAID構成部114により単一の仮想デバイス910へと変換される。仮想デバイス910と920は、第一パス1701、第二パス1702によるI/Oアクセス経路を備え、第一パスにおいてはI/O制御プログラム110はそれぞれデバイス912、913に対応づけたI/Oアクセスを実施し、第二パスにおいては、それぞれデバイス922、923に対応づけたI/Oアクセスを実施する。
【0046】
なお、図示はしていないが、デバイス922からRAID領域942のI/Oアクセスについては、コンピュート区画101上で動作するRAID構成部を介してRAID制御を行う。
【0047】
図11は、本実施例のI/O制御プログラム110における仮想デバイス構成部111の処理フローを示す。ステップ1001では、仮想デバイス構成部111は、デバイスの識別を実施する。ここでいう識別とは、該当コンピュート区画に対応づけられたデバイス(
図10の911、912、913,922,923)が、ストレージ区画102のストレージ制御プログラム120により構成されたボリュームに対応するデバイス(
図10の911、912、913)であるか、ストレージデバイスに直接対応づけられたデバイス(
図10の922、923)であるかを識別することを指す。ここでは、仮想デバイス構成部111は、たとえばボリューム構成テーブル126を参照し、カラム703の論理的なボリュームの識別子(LUN等)とOSまたはデバイスドライバ125が認識するデバイス情報に基づいて、ストレージ区画102のストレージ制御プログラム120により構成されたボリュームに対応するデバイスを識別する。次に、ステップ1002では、仮想デバイス構成部111が各デバイスのストレージデバイス識別子を取得する。ここではまず、仮想デバイス構成部111は、ストレージ制御プログラム120により構成されたボリュームに対応するデバイス(
図10の911、912、913)について、ボリューム構成テーブル126のカラム702と、RAID構成テーブル132のカラム601および603を参照し、ボリュームがアクセスするストレージデバイス識別子を特定する。たとえば、
図7のボリューム“VOL c”の対象は“ストレージデバイス1”であり、ボリューム“VOL b”の対象“AG1”は
図6のアレイグループ“AG1”に対応し、そのデバイス識別子は“ストレージデバイス3,4”である。次に、仮想デバイス構成部111は、ストレージデバイスに直接対応づけられたデバイス(
図10の922、923)について、該当デバイスのストレージデバイス識別子を取得する。取得方法としては、たとえばデバイスドライバ経由や、OS経由、およびBIOSやEFIなどのファームウェア経由で取得する。
【0048】
ステップ1003では、仮想デバイス構成部111は、複数パスで同一ストレージデバイスに対応するデバイスの組が存在するか判定する。ここでは、仮想デバイス構成部111は、ステップ1002にて取得したストレージデバイス識別子が、ストレージ制御プログラム120により構成されたボリュームに対応するデバイス(
図10の911、912、913)と、ストレージデバイスに直接対応づけられたデバイス(
図10の922、923)とで一致しているデバイスの組を取得する。
図10の例では、デバイス912と922、および913と923の組が該当する。もし、デバイスの組が存在する場合にはステップ1004へ移り、存在しない場合、仮想デバイス構成部111は、ステップ1005へ移る。ステップ1004では、仮想デバイス構成部111は、仮想デバイスを構成する。ここでは、仮想デバイス構成部111は、ステップ1003にて取得したデバイスの組に対応した仮想デバイスを構成する。
図10の例では、デバイス912と922の組に対しては仮想デバイス910を構成し、デバイス913と923の組に対しては仮想デバイス920を構成する。ステップ1005では、仮想デバイス構成部111は、該当デバイスに対応する仮想デバイスを構成する。
図10ではデバイス911に対応する仮想デバイス930を構成する。ただし、本ステップにおける仮想デバイスの構成は必須ではなく、デバイス911を直接OS/アプリ150が利用しても良い。
【0049】
ステップ1006では、仮想デバイス構成部111は、仮想デバイス構成テーブル133を更新する。ここで、カラム902には構成した仮想デバイスの識別子とし、ステップ1004にて仮想デバイスを構成した場合にはカラム903は“あり”、ステップ1005にて仮想デバイスを構成した場合にはカラム903は“なし”となる。また、カラム904および905については、ユーザ等が任意に設定するデフォルト設定に従ったパスを選択するものとする。カラム906にはRAIDレベル・構成を登録する。ステップ1004およびステップ1005で作成した仮想デバイスの対象デバイスに対してRAIDを構成している場合はRAIDレベルと構成を登録し、そうでない場合は“Raw“を登録する。ここでRAIDを構成しているか否かは、ステップ1001にて該当デバイスに対するボリューム構成テーブル126の対象(カラム702)がアレイグループ(“AG1”など)の場合である。ステップ1007では、仮想デバイス構成部111は、ステップ1001で検出したデバイスに対して、対応する仮想デバイスが構成されていない未構成のデバイスが存在する場合には、ステップ1002に移る。
【0050】
図12に本実施例におけるI/O振分部113の処理フローを示す。ステップ1101では、I/O振分部113は、OS/アプリ150より仮想デバイスに対するI/O要求を受信する。ステップ1102では、I/O振分部113は、該当仮想デバイスに対するアクセスモードを判定する。ここでは、I/O振分部113は、仮想デバイス構成テーブル133を参照し、該当仮想デバイスのモード(
図9のカラム904)が“第一パス”であればステップ1103へ、“第二パス”であればステップ1104へと移る。なお、カラム905を参照して、送信先の識別子から判定しても良い。ステップ1103では、I/O振分部113は、該当仮想デバイスに対応する第一パスのデバイスへとI/Oアクセスを振り分ける。ここで第一パスのデバイスとは、ストレージ区画102のストレージ制御プログラム120により構成されたボリュームに対応するデバイス(
図10のデバイス912、913)である。ステップ1104では、I/O振分部113は、アクセス先の仮想デバイスに対応するデバイスがRAIDを構成しているか否かを取得する。これには、仮想デバイス構成テーブル133の該当ホストの該当仮想デバイスに対するカラム906が“Raw”で無い場合を示す。
【0051】
なお、仮想デバイスに対するアクセスモードについて、システムの導入時はユーザがシステムのデータを利用するユースケースに応じてデータのアクセスパスを選択することが考えられる。“第一パス”を利用したい場合は、ユーザがストレージ制御プログラム120の備える機能を利用したい場合に選択する。ここでいう機能とは、主にスナップショット、バックアップ、ディザスタリカバリ、シンプロビジョニング、データ移行、及びストレージ階層の仮想化などが挙げられる。一方、“第二パス”を利用したい場合は、これら機能を利用せず、ユーザがデータアクセス機能を効果的に引出したい場合に選択する。
【0052】
ステップ1105では、I/O振分部113は、ステップ1104で取得した情報をもとに、RAIDが構成されている場合はステップ1106へ、そうでない場合はステップ1107へ移る。ステップ1106では、I/O振分部113は、該当仮想デバイスに対応する第二パスのデバイスに対して、RAID構成部123によるRAID領域アクセス処理を実施する。ここで第二パスのデバイスとは、ストレージデバイスに直接対応づけられたデバイスである。また、RAID領域アクセス処理においては、仮想デバイス構成テーブル133の該当ホストの該当仮想デバイスのカラム906が示すRAIDレベル・構成をもとに、I/Oアクセス要求をストレージデバイスの物理アドレスと論理アドレスとの変換、対象デバイスへのアクセス処理を適宜分割・集約の実施、書き込みアクセス時のパリティ計算とデバイスへの書き込み等の処理を実施する。これにより、RAIDが構成されたデバイスへの読み書きを実現する。ステップ1107では、I/O振分部113は、該当仮想デバイスに対応する第二パスのデバイスに対してI/Oアクセス要求を振り分ける。
【0053】
図13は、本実施例におけるストレージ制御プログラム120の論理的なブロック構成を示す。各ストレージデバイス群15、16に対応したデバイスドライバ125を経由して、RAIDを構成したストレージデバイス(図中941、942)に対してはRAID構成部123を経由してアクセスを実施し、Rawアクセスするストレージデバイス(図中943)や、外部のストレージ装置(図中ストレージ装置40)の場合は、外部ストレージ接続部124を経由してアクセスする。
【0054】
RawアクセスするVOL C(933)は、ストレージデバイス上でRaw領域943のため、RAID構成がない。そのため、RAID構成部123を介してRaw領域943にアクセスすると、データを正しく認識することができない。そのため、Raw領域943にアクセスする場合は本図のように、外部ストレージ接続部124を経由してアクセスすることで、ストレージ区画102を利用しながら、Raw領域943を利用することが可能となる。
【0055】
図14は、本実施例におけるI/Oアクセスのシーケンスを示す。OS/アプリ150からのI/O要求の対象仮想デバイスのモードが“第一パス”であり、RAID構成が“RAID“の場合(図中1301)はストレージ制御プログラム120を経由したストレージデバイスへのアクセスを実施する。一方I/O要求の対象仮想デバイスのモードが“第二パス”であり、RAID構成が“RAID”の場合(図中1302)は、ストレージ制御プログラム120を経由せず、I/O制御プログラム110のRAID構成部114を経由してストレージデバイスへのアクセスを実施する。また、I/O要求の対象仮想デバイスのモードが“第二パス”であり、RAID構成が“Raw”の場合(図中1303)は、ストレージ制御プログラム120やRAID構成部114を経由せずストレージデバイスにアクセスを実施する。これにより、I/Oアクセス性能は1301、1302、1303の順に高速となる一方、1301ではストレージ制御プログラム120の機能、1301,1302ではRAIDといった機能性を備える。
【0056】
図15は、本実施例のモード切り替え部112の処理フローを示す。ステップ1401では、モード切り替え部112は、モード切り替え要求を受け付ける。モード切り替え要求は、たとえばユーザやアプリケーションへのインタフェイス(GUI、APIなど)をモード切り替え部112が備え、該当インターフェイスにより要求を受け付ける。受付内容としては、モードの切り替えを実施する対象となる仮想デバイスと、切り替え先のモードの種類である。ステップ1402では、モード切り替え部112は、受け付けた要求が第二パスへのアクセスモードへの切り替えであればステップ1403へ移り、第一パスへの切り替えであればステップ1406へ移る。なお、仮想デバイス構成テーブル133を参照し、該当仮想デバイスのモードがすでに切り替え先のモードと同一であれば、モード切り替え部112の処理を終了する。
【0057】
ステップ1403では、モード切り替え部112は、コンピュート区画101におけるデバイスドライバ115のI/O完了をウエイトする。次に、ステップ1404では、モード切り替え部112は、ストレージ制御プログラム120において該当仮想デバイスに対応するボリュームに対するI/O要求の実行完了をウエイトする。ここで、完了通知はストレージ制御プログラム120とモード切り替え部112が情報交換インターフェイス等を通じて実施する。ステップ1405では、モード切り替え部112は、仮想デバイス構成テーブル133の該当仮想デバイスのモードを第二パスに変更する。一方、ステップ1406では、モード切り替え部112は、コンピュート区画101におけるデバイスドライバ115のI/O完了をウエイトする。次にステップ1407では、モード切り替え部112は、仮想デバイス構成テーブル133の該当仮想デバイスのモードを第一パスに変更する。
【0058】
なお、アクセスモードの切り替えは、I/O制御プログラム110が判別プログラムを有し、動的に変更するようにしてもよい。この場合、I/O制御プログラム110は、OS/アプリ150から仮想デバイスへのアクセス頻度や、OS/アプリ150、ファイルシステム、ドライバまたはストレージ制御プログラム120から性能情報を収集し、I/OキューやI/O処理ネックとなっている部分の検出を行う。これにより、予め定めた閾値よりI/Oアクセス頻度が高いデータやOS/アプリ150、ファイルシステム、ドライバにてI/O処理待ちが他と比較して多く発生しているデータに対して、第一パスから第二パスへ切り替えを行う。一方、予め定めた閾値よりI/Oアクセス頻度が低いデータや、I/O処理待ちが他と比較して少ないデータに対して、第二パスから第一パスへの切り替えを行う。これにより、データに応じてアクセスパスを最適化し、より高い性能向上を実現することができる。
【0059】
また、I/O制御プログラム110は、管理計算機30を介して、上記のパス切り替えを実施する閾値を指定するGUIをユーザに提供する。閾値の具体例としては、上記I/OキューやI/O処理ネックを判断する一指標としての閾値や、I/Oアクセス頻度の閾値である。
【0060】
ここまで、ストレージデバイス群15、16について、RAID領域941とRaw領域943として使い分ける方法を説明してきた。次に、RAID領域941やRaw領域943に保存したデータを、データ移動を行って別の領域に移動し、ストレージ制御プログラム120の利用の有無だけではなく、さらにデータの利用用途に従ってRAID領域941とRaw領域943まで使い分ける方法を、
図16及び
図17を用いて説明する。
【0061】
例えば、オンライントランザクション処理など、データ保護の重要性が高い処理や、コアシステムなどの重大処理のデータは、RAID領域941に保存し、これらのデータの一部を利用してデータ分析処理などを実施する場合に、データをRAID領域941からRaw領域943に移動するケースが考えられる。これにより、データの利用用途に応じた、さらに柔軟なシステムをユーザに提供することが可能となる。
【0062】
ここで、移行にあたってRAID領域941からRaw領域943へのデータ移行をする際、データ移行のためにシステムの処理は停止できないという課題がある。
図16及び
図17で説明する方法では、I/O制御プログラム110において、一時的に移行のためのデバイスに保持したデータをアクセスパスとして選定することでデータを無停止で移行し、上記課題も解決することが可能となる。
【0063】
図16は、本実施例における管理プログラム35において、データ移行処理を実施する処理フローである。ステップ1601では、管理プログラム35は、(1)ストレージ制御プログラム120に対して第一ボリュームのミラーボリュームとして第二ボリュームの作成を指示、ステップ1602では、管理プログラム35は、(2)I/O制御プログラム110に仮想デバイスを作成指示。ここで、該当仮想デバイスの第一パスとして第二ボリューム、第二パスとしてストレージデバイスのRaw領域943を対応付ける。ステップ1603では、管理プログラム35は、(3)ストレージ制御プログラム120にRaw領域943を外部ストレージとして接続した第三ボリュームを作成指示。ステップ1604では、管理プログラム35は、(4)ストレージ制御プログラム120に第二ボリュームと第三ボリュームの同期を指示。ステップ1605では、管理プログラム35は、(5)ステップ1604の同期完了後、I/O制御プログラム110に該当仮想デバイスの第一パスとして第三ボリュームへのマッピング変更を指示する。これにより、既存第一ボリュームに保存された内容をコンピュート区画101でアクセス可能としつつ、第二パスからアクセス可能な状態へと移行することができる。
【0064】
図17は、
図16に示したデータ移行処理のブロック図である。ここで、第一ボリュームは外部のストレージ装置40に対応するボリュームであっても良い。図中1701は
図16のステップ1601、1702はステップ1602、1703はステップ1604、1704はステップ1604、1705はステップ1605に対応する。
【0065】
また、Raw領域943からRAID領域941へデータを移行する場合も、同様の方法で実現が可能である。
【0066】
なお、図示はしていないが、上記のシステム及び装置は、例えばディスプレイやキーボードを代表とする入出力装置など、情報処理装置として処理を行う上で必要となる構成を備え、各部による処理はそれぞれのハードウェアが連関して行う。また、各処理は、集積回路化などして、それを行う処理部としてハードウェアで実現する事もできる。これについては以下の実施例についても同様である。