(57)【要約】【課題】  シンプロビジョニング技術等によりストレージ装置が仮想化されている環境においては、仮想ボリューム全体のＩ／Ｏ特性を静的に見積もることは困難であり、仮想ボリューム単位の特性に基づくＩ／Ｏスケジューリングでは、計算機による入出力制御の効果を十分には得られないという課題があった。【解決手段】  仮想ボリュームにアクセスする際にアクセス対象となる仮想ボリュームの記憶領域に対応する実記憶領域が存在するストレージ装置の特性情報を取得し、仮想ボリュームに対するＩ／Ｏ要求が複数のストレージ装置に跨る場合にＩ／Ｏ要求をストレージ装置ごとに分割し、取得した実領域の特性情報に基づいてＩ／Ｏスケジューリングを行い、Ｉ／Ｏスケジューリング結果に従ってストレージ装置に直接Ｉ／Ｏ要求を発行する。【選択図】図１
2011081580.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する計算機システムにおいて、
計算機と、
前記計算機と接続され、少なくとも１以上の物理ボリュームを有する複数のストレージ装置と、
前記複数のストレージ装置の物理ボリュームを仮想ボリュームとして、前記計算機に提供する仮想化装置とを備え、
前記仮想化装置は、前記計算機から送付される入出力要求に対応する物理ボリュームの記憶領域の一部を割り当て、
前記計算機は、前記仮想ボリュームに関連付けられた物理ボリュームの特性情報を取得し、
前記仮想ボリュームに対するＩ／Ｏ要求が前記複数のストレージ装置に跨る場合、Ｉ／Ｏ要求をストレージ装置ごとに分割し、
前記特性情報に基づいてＩ／Ｏスケジューリング行うことを特徴とする計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
前記計算機は、前記Ｉ／Ｏスケジューリングの結果に従って、前記複数のストレージ装置の各々の物理ボリュームに対して、Ｉ／Ｏ要求を発行することを特徴とする計算機システム。
【請求項３】
請求項２記載の計算機システムであって、
前記仮想化装置は、仮想ボリュームと物理ボリュームとの対応情報を含むプロビジョニング情報と、物理ボリュームの特性情報を含むストレージ装置特性情報と、を備え、
前記計算機からの問い合わせに応じて仮想ボリュームに対するＩ／Ｏ要求をストレージ装置の実記憶領域へのＩ／Ｏ要求に変換し、
前記変換したＩ／Ｏ要求の対象となる物理ボリュームのＩ／Ｏ帯域幅、ＩＯＰＳ、遅延をストレージ装置特性情報として付加して、前記計算機に応答することを特徴とする計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
前記計算機は、複数のI/O要求がそれぞれのI/O優先度を、前記計算機のＯＳ内の実行
優先度および実行ファイル名を用いて決定し、実記憶領域の特性情報とあわせてＩ／Ｏスケジューリングを行うことを特徴とする計算機システム。
【請求項５】
請求項４記載の計算機システムであって、
前記計算機は、アプリケーションソフトウェアにより定められたデッドラインおよび前記特性情報に基づいて、Ｉ／Ｏスケジューリングを行い、
デッドラインミスの発生する場合、エラー応答を行うことを特徴とする計算機システム。
【請求項６】
請求項４記載の計算機システムであって、
前記計算機は、前記仮想I/O要求に基づいて発行した前記複数の実I/O要求を、前記ストレージ装置から複数の実I/O要求の結果を受け取り、前記複数のI/O要求の結果から仮想I/O要求の結果を再構成し、前記計算機に応答することを特徴とする計算機システム。
【請求項７】
計算機と、前記計算機と接続され、少なくとも１以上の物理ボリュームを有する複数のストレージ装置と、前記複数のストレージ装置の物理ボリュームを仮想ボリュームとして、前記計算機に提供する仮想化装置と、を有し、データを処理する計算機システムの入出力方法において、
前記仮想化装置は、前記計算機から送付される入出力要求に対応する物理ボリュームの記憶領域の一部を割り当て、
前記計算機は、前記仮想ボリュームに関連付けられた物理ボリュームの特性情報を取得し、
前記仮想ボリュームに対するＩ／Ｏ要求が前記複数のストレージ装置に跨る場合、Ｉ／Ｏ要求をストレージ装置ごとに分割し、
前記特性情報に基づいてＩ／Ｏスケジューリング行うことを特徴とする計算機システムの入出力方法。
【請求項８】
請求項７記載の計算機システムの入出力方法であって、
前記計算機は、前記Ｉ／Ｏスケジューリングの結果に従って、前記複数のストレージ装置の各々の物理ボリュームに対して、Ｉ／Ｏ要求を発行することを特徴とする計算機システム。
【請求項９】
請求項８記載の計算機システムの入出力方法であって、
前記仮想化装置は、仮想ボリュームと物理ボリュームとの対応情報を含むプロビジョニング情報と、物理ボリュームの特性情報を含むストレージ装置特性情報と、を備え、
前記計算機からの問い合わせに応じて仮想ボリュームに対するＩ／Ｏ要求をストレージ装置の実記憶領域へのＩ／Ｏ要求に変換し、
前記変換したＩ／Ｏ要求の対象となる物理ボリュームのＩ／Ｏ帯域幅、ＩＯＰＳ、遅延をストレージ装置特性情報として付加して、前記計算機に応答することを特徴とする計算機システムの入出力方法。
【請求項１０】
請求項９記載の計算機システムの入出力方法であって、
前記計算機は、複数のI/O要求がそれぞれのI/O優先度を、前記計算機のＯＳ内の実行
優先度および実行ファイル名を用いて決定し、実記憶領域の特性情報とあわせてＩ／Ｏスケジューリングを行うことを特徴とする計算機システムの入出力方法。
【請求項１１】
請求項１０記載の計算機システムの入出力方法であって、
前記計算機は、アプリケーションソフトウェアにより定められたデッドラインおよび前記特性情報に基づいて、Ｉ／Ｏスケジューリングを行い、
デッドラインミスの発生する場合、エラー応答を行うことを特徴とする計算機システムの入出力方法。
【請求項１２】
請求項１０記載の計算機システムの入出力方法であって、
前記計算機は、前記仮想I/O要求に基づいて発行した前記複数の実I/O要求を、前記ストレージ装置から複数の実I/O要求の結果を受け取り、前記複数のI/O要求の結果から仮想I/O要求の結果を再構成し、前記計算機に応答することを特徴とする計算機システムの入出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化されたストレージ装置に対する計算機の入出力性能向上技術に関する。
【背景技術】
【０００２】
計算機とストレージ装置をネットワークで接続し、計算機からストレージ装置に対するデータの入出力（Ｉ／Ｏ, Input/Output）をネットワーク経由で行う計算機システムが実用化されている。これら計算機とストレージ装置を結ぶネットワークはＳＡＮ（Storage Area Network）と呼ばれ、装置間の通信プロトコルにはＦＣ（Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）等が用いられている。
【０００３】
ＳＡＮ環境において、複数のストレージ装置に分かれて存在する記憶領域をまとめてひとつの仮想的なボリューム（仮想ボリューム）として計算機に提供する計算機システムが、特許文献１に開示されている。さらに、仮想ボリュームへの実記憶領域の割り当てを動的に行うシンプロビジョニング（Thin Provisioning）と呼ばれる技術が、特許文献２に記載されている。シンプロビジョニング技術では、初期段階で割り当てたストレージ装置の実記憶領域よりも大きな容量を持つ仮想ボリュームを計算機に提供することがき、将来、実際の使用状況に応じて仮想ボリュームに割り当てる実記憶領域を追加することにより、仮想ボリュームへの実記憶領域の過剰割り当て（オーバープロビジョニング, Over Provisioning）を防止することができる。
【０００４】
また、複数のＨＤＤ（Hard Disk Drive）等のディスク装置を備えるディスクアレイ装置において、各ＨＤＤのシーク時間等をもとに外部からのＩ／Ｏ要求の実行順序の並び替えるＩ／Ｏスケジューリングを行うことにより、データ転送処理速度等を向上する技術が特許文献３に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３１６６１６号公報
【特許文献２】特開２００９−４３０５５号公報
【特許文献３】特開平９−１６０７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記仮想化技術により提供される仮想ボリュームは、複数のストレージ装置の記憶領域から構成される可能性がある。特に、シンプロビジョニング環境下では、仮想ボリュームの記憶領域は、プロビジョニングのブロック単位で複数のストレージ装置の実記憶領域に細粒度で分散配置される可能性がある。したがって、計算機からみた仮想ボリュームの連続領域は、複数のストレージ装置の記憶領域の不連続な領域となる可能性があり、計算機から仮想ボリュームに対するシーケンシャルアクセスは、仮想ボリュームを構成する複数のストレージ装置に対するランダムアクセスとなる場合がある。さらに、仮想ボリュームを構成するストレージ装置は均質である必要はなく、ひとつの仮想ボリュームが、データ転送帯域幅やＩＯＰＳ（Input Output Per Second）等の特性の異なる複数のストレージ装置から構成される可能性があり、仮想ボリュームに対するＩ／Ｏの特性は、プロビジョニングのブロック単位で異なる場合がある。
【０００７】
このような仮想化ストレージ環境下においては、仮想ボリューム全体のＩ／Ｏ特性を静的に見積もることは困難であり、単一仮想ボリュームに対するＩ／Ｏでアクセスであってもアクセスする領域によってＩ／Ｏ特性に差異が生じる。したがって、計算機においてリアルタイム性の向上やデータ転送処理の効率化のために入出力制御を行う場合、仮想ボリューム単位の特性に基づくＩ／Ｏスケジューリングでは、Ｉ／Ｏ実行時間等の見積もり精度が低くなり、入出力制御の効果を十分には得られないという課題があった。
【０００８】
本発明は、前記課題を解決する、仮想ボリュームを提供する仮想化されたストレージ装置に対する計算機のＩ／Ｏスケジューリングの精度を高めることにより、Ｉ／Ｏ性能を向上する方法および装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記目的を達成するために、仮想ボリュームにアクセスする際にアクセス対象となる仮想ボリュームの記憶領域に対応する実記憶領域が存在するストレージ装置の特性情報を取得し、仮想ボリュームに対するＩ／Ｏ要求が複数のストレージ装置に跨る場合にＩ／Ｏ要求をストレージ装置ごとに分割し、取得した実領域の特性情報に基づいてＩ／Ｏスケジューリングを行い、Ｉ／Ｏスケジューリング結果に従ってストレージ装置に直接Ｉ／Ｏ要求を発行する。
【発明の効果】
【００１０】
本発明によれば、シンプロビジョニング技術を用いたストレージ仮想化環境下で、計算機におけるＩ／Ｏスケジューリングの精度を高めることができ、さらに、仮想化されたストレージ装置に対する計算機のＩ／Ｏ性能を向上する方式および装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、計算機システムの構成を表す図である。
【図２】図２は、計算機１００の構成を表す図である。
【図３】図３は、仮想化装置２００の構成を表す図である。
【図４】図４は、ストレージ装置３００の構成を表す図である。
【図５】図５は、プロビジョニング情報２２０の詳細を表す図である。
【図６】図６は、仮想ボリューム構成情報２２１の詳細を表す図である。
【図７】図７は、仮想ボリューム情報２２２の詳細を表す図である。
【図８】図８は、マッピング情報２２３の詳細を表す図である。
【図９】図９は、物理ボリューム使用状況情報２２４の詳細を表す図である。
【図１０】図１０は、ストレージ装置特性情報２３０の詳細を表す図である。
【図１１】図１１は、装置間メッセージ５００の詳細を表す図である。
【図１２】図１２は、Ｉ／Ｏスケジューラ１３０のモジュール構成を表す図である。
【図１３】図１３は、Ｉ／Ｏスケジューラ１３０における仮想Ｉ／Ｏ受付処理のフローチャートを表す図である。
【図１４】図１４は、Ｉ／Ｏスケジューラ１３０における実Ｉ／Ｏ発行処理のフローチャートを表す図である。
【図１５】図１５は、Ｉ／Ｏスケジューラ１３０における仮想Ｉ／Ｏ応答処理のフローチャートを表す図である。
【図１６】図１６は、仮想化装置２００における仮想Ｉ／Ｏ変換処理のフローチャートを表す図である。
【図１７】図１７は、実施例２の計算機システムの構成を表す図である。
【図１８】図１８は、実施例３の計算機システムの構成を表す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための最良の形態について、図面を用いて説明する。なお、各図面で同様の構成には同じ符号を付しその説明を省略する。
【実施例１】
【００１３】
図１は、本実施例の計算機システムの構成を表す図である。本実施例の計算機システムは、計算機１００、仮想化装置２００、および、ストレージ装置３００を有し、それぞれネットワーク４００と、管理ネットワーク８００により相互に接続されている。
【００１４】
計算機１００は、制御部１１０を有する。制御部１１０は、計算機１００の動作を制御する。制御部１１０では、アプリケーションソフトウェア１２０、Ｉ／Ｏスケジューラ１３０、ＯＳ（Operating System）１４０が動作する。計算機１００は本システムのユーザにアプリケーションソフトウェア１２０によるサービスを提供する。
【００１５】
仮想化装置２００は、制御部２１０を有する。制御部２１０は、仮想化装置２００の動作を制御する。制御部２１０には、プロビジョニング情報２２０およびストレージ装置特性情報２３０が格納されている。仮想化装置２００は、計算機１００に対して、ストレージ装置３００を利用して、仮想化機能を提供する。
【００１６】
ストレージ装置３００は、制御部３１０と、記憶領域３２０を有する。制御部３１０は、ストレージ装置３００の動作を制御する。ストレージ装置３００は、記憶領域３２０の一部あるいは全部を、物理ボリュームとして計算機１００に提供する。仮想化装置２００の仮想化機能により計算機１００に提供される仮想ボリューム３３０は、複数のストレージ装置３００の記憶領域３２０上の物理ボリュームから構成される。
【００１７】
ネットワーク４００は、例えば、ＳＡＮ、ＬＡＮ（Local Area Network）、WAN（Wide Area Network）、または、それらを組み合わせたもので構成される。計算機１００は、仮想化装置２００と、ネットワーク４００を介して装置間メッセージ５００を通信し、仮想化装置２００の提供するストレージ装置３００の仮想化機能を利用する。計算機１００は、また、ストレージ装置３００とネットワーク４００を介して実Ｉ／Ｏ要求６００を通信し、ストレージ装置３００の記憶領域３２０に格納されるデータにアクセスする。
【００１８】
管理端末７００は、各ストレージ装置３００の構成情報を保持し、計算機や仮想化装置に対して、構成情報を管理ネットワーク８００を介して、送受信する。
【００１９】
図２は、計算機１００の構成図である。制御部１１０は、ＣＰＵ（Central Processing Unit）１１１、Ｉ／Ｏインタフェース１１２、および、メモリ１１３を有する。なお、計算機１００は、ディスプレイやキーボード等の入出力手段を有する。
【００２０】
ＣＰＵ１１１は、メモリ１１３上のプログラムを実行することにより、計算機１００を制御し、ユーザにサービスを提供する。
【００２１】
ホストバスアダプタ１１２は、ネットワーク４００に接続するためのインタフェースであり、ＳＡＮ等のＦＣ接続に使用される。なお、FC接続に限られず、ＬＡＮ、ＷＡＮ等のＩＰ（Internet Protocol）接続の場合はＮＩＣ（Network Interface Card）や、Infiniband等を使用できることができる。
【００２２】
ネットワークインタフェース１１７は、管理ネットワーク８００と接続され、仮想化装置２００やストレージ装置３００との間で、管理情報の送受信に使用され、本実施例では、NICを使用しているが、他のインタフェースを使用できる。本実施例では、ネットワークインタフェース１１７を用いてアウトオブバンド接続しているが、これに限られず、ホストバスアダプタ１１２を利用して、構成情報を送受信するインバンド接続等を用いることができる。
【００２３】
メモリ１１３は、ＲＡＭ（Random Access Memory）等の記憶領域であり、アプリケーションプログラム１１４、Ｉ／Ｏスケジューラプログラム１１５、および、ＯＳプログラム１１６を格納する。これらのプログラムは、実行ファイルとして計算機１００上のＲＯＭ（Read Only Memory）等の不揮発記憶領域、内臓ＨＤＤ、または、ストレージ装置３００上の記憶領域３２０に格納されており、計算機１００の起動時に、メモリ１１３に読み込まれる。
【００２４】
アプリケーションプログラム１１４は、アプリケーションソフトウェア１２０を実現するプログラムであり、例えば、映像配信サービスを提供するストリーミングサーバプログラム、データベースサービスを提供するＤＢＭＳ（Data Base Management Service System）プログラム、バックアップサービスを提供するバックアッププログラム等がある。これらのプログラムが発行するＩ／Ｏ要求には、例えば、ストリーミングサーバプログラムは映像データを読み出すＩ／Ｏ要求に期限（デッドライン）を設定しており期限内に終了しなかったＩ／Ｏ結果を配信せずに破棄する、バックアップサービスのＩ／Ｏ要求の優先度は低くＤＢＭＳプログラム等の他のプログラムのＩ／Ｏ要求の後回しにしてもよい、等の性質がある。
【００２５】
Ｉ／Ｏスケジューラプログラム１１５は、Ｉ／Ｏスケジューラ１３０を実現するプログラムである。Ｉ／Ｏスケジューラ１３０の構成および動作の詳細は後述する。
【００２６】
ＯＳプログラム１１６は、ＯＳ１４０を実現するプログラムである。ＯＳ１４０は、Ｉ／Ｏインタフェース１１２を制御するデバイスドライバ、仮想化装置２００およびストレージ装置３００との通信を制御する通信プロトコルスタック、アプリケーションソフトウェア１２０の実行を制御するプロセススケジューラ等からなり、計算機１００を制御する基本的な機能を提供する。
【００２７】
図３は、仮想化装置２００の構成図である。基本的に、計算機１００と同様の構成であるが、メモリ１１３上に格納されるプログラムとして、プロビジョニング情報２２０と、ストレージ装置特性情報２３０を有する点が計算機１００と異なる。プロビジョニング情報２２０とストレージ装置特性情報２３０の詳細は、後述する。
【００２８】
図４は、ストレージ装置３００の構成図である。ストレージ装置３００は、制御部３１０、キャッシュメモリ３２、共有メモリ３３、物理ボリューム３４、電源スイッチ３５及び電源３６を有する。物理ボリューム３４は、たとえば、ＨＤＤ、ＳＳＤ（Solid State Drive）等の記憶装置である。HDDは、FC、SATA(Serial Advanced Technology Attachment)、PATA（Parallel Advanced Technology Attachment)やSAS(Serial Attached SCSI)用のHDD等を使用できる。SSDもSLC(Single Level Cell）タイプやMLC(Multi Level Cell)タイプのほか、半導体記憶素子を利用したものを使用できる。コントローラ３１０は、単体又は、複数の物理ボリューム３４によるRAID（Redundant Arrays of Inexpensive/Independent Disks）構成により、データを格納する。キャッシュメモリ３２は、物理ボリューム３４に読み書きされるデータを一時的に格納する。共有メモリ３３は、コントローラ３１や物理ボリューム３４の構成情報が格納される。物理ボリューム３４は、計算機１００や仮想化装置２００に対して、記憶領域３２０を提供する。電源３６は、ストレージ装置３０の各部に電力を供給する。電源スイッチ３５は、電源３６から電力の供給を制御するスイッチである。
【００２９】
制御部３１０は、ホストアダプタ３９０、ネットワークアダプタ３２０、ネットワークアダプタ３２０、不揮発性メモリ３３０、電源制御部３４０、メモリ３５０、プロセッサ３６０、ストレージアダプタ３７０及び共有メモリアダプタ３８０によって構成される。
【００３０】
ホストアダプタ３１０は、ストレージネットワーク５０を介して計算機１００や仮想化装置２００との間でデータを送受信する。ネットワークアダプタ３２０は、管理ネットワーク８００を介して計算機１００又は仮想化装置２００との間でデータを送受信する。
【００３１】
不揮発性メモリ３３０は、ハードディスクやフラッシュメモリで構成され、コントローラ３１で動作するプログラムや構成情報等が格納される。電源制御部３４０は、電源３６から供給される電力を制御する。
【００３２】
メモリ３５０は、例えばRAM等で構成され、プログラムやデータ等が格納される。プロセッサ３６０は、不揮発性メモリ３３０に格納されているプログラムをメモリ３５０に読み込んで、そのプログラムに規定された処理を実行する。
【００３３】
ストレージアダプタ３７０は、物理ボリューム３４及びキャッシュメモリ３２との間でデータを送受信する。
【００３４】
外部ストレージ装置３０１は、直接、Fibre Channel などの通信線３７、あるいは、ネットワーク４００を介して、ストレージ３００と接続される。ストレージ装置３００は、外部ストレージ装置３０１の物理ボリューム３４を装置内の物理ボリューム３４と同様に、使用することができる。
【００３５】
図５は、仮想化装置２００の制御部２１０上に格納されるプロビジョニング情報２２０の詳細を示す図である。プロビジョニング情報２２０は、仮想ボリューム構成情報２２１、仮想ボリューム情報２２２、マッピング情報２２３、物理ボリューム使用状況情報２２４からなる。これらの情報を用いて、制御部２１０上のシンプロビジョニングプログラムは、ストレージ装置３００上の記憶領域３２０を仮想化した仮想ボリューム３３０を計算機１００に提供する。
【００３６】
図６は、仮想ボリューム構成情報２２１の詳細を示す図である。仮想ボリューム構成情報２２１は、仮想ボリューム名、ストレージ装置名、物理ボリューム名、物理容量からなる。ここで、仮想ボリューム名および物理ボリューム名は、ボリュームを識別するＩＤであり、例えば、ＬＵ（Logical Unit）番号に関連付けられる。同様に、ストレージ装置名は、ストレージ装置３００を識別するＩＤであり、例えば、ＦＣ接続の場合はＷＷＮ（World Wide Name）に、ＩＰ接続の場合はＩＰアドレスに関連付けられる。物理容量は、ストレージ装置名と物理ボリューム名で特定される物理ボリュームの容量である。
【００３７】
本システムの管理者は、仮想ボリューム構成情報２２１に、新たな仮想ボリューム名と、それを構成するストレージ装置名と物理ボリューム名を追加することにより、仮想ボリューム３３０を作成する。管理者は、また、仮想ボリューム３３０の運用中に、ストレージ装置名と物理ボリューム名で指定される新たな物理ボリューム追加することで、仮想ボリューム３３０の物理容量を増加することができる。
【００３８】
本図の例では、仮想ボリュームＶ１は、４ＴＢの容量を持つストレージ装置Ｓ１の物理ボリュームＰ１と、８ＴＢの容量を持つストレージ装置Ｓ２の物理ボリュームＰ２と、４ＴＢの容量を持つストレージ装置Ｓ３の物理ボリュームＰ１からなることを表す。
【００３９】
図７は、仮想ボリューム情報２２２の詳細を表す。仮想ボリューム情報２２２は、仮想ボリューム名、仮想容量、物理容量、使用容量からなる。仮想ボリューム名は、仮想ボリューム構成情報２２１の仮想ボリューム名と対応する。仮想容量は、計算機１００に見せる仮想ボリューム３３０の容量であり、管理者が、仮想ボリューム３３０の構成時に設定する。物理容量は仮想ボリューム３３０を構成する物理ボリュームの物理容量の合計である。使用容量は、仮想ボリューム３３０の実際の使用容量を表し、仮想ボリューム３３０を構成する物理ボリュームの使用容量の合計と等しい。
【００４０】
本図の例では、仮想ボリュームＶ１は２０ＴＢの仮想容量を持ち、その物理容量は１６ＴＢであり、実際の使用容量は１０ＴＢであることを表す。
【００４１】
図８は、マッピング情報２２３の詳細を表す。マッピング情報２２３は、仮想ボリューム名、仮想ブロック番号、ストレージ装置名、物理ボリューム名、ブロック番号からなり、仮想ボリューム３３０の仮想ブロック番号で指定される領域が、実際にどのストレージ装置３００の物理ボリュームのブロック番号で指定される記憶領域３２０に配置されているかを表す。ここで、仮想ブロック番号およびブロック番号は、それぞれ、仮想ボリューム３３０および物理ボリュームの領域を、先頭からプロビジョニングのブロックサイズ、例えば６４ＫＢ単位で区切った領域の番号を表す。したがって、仮想ボリューム３３０毎の仮想ブロック番号の最大値は、対応する仮想ボリューム情報２２２の仮想容量をブロックサイズで除した商である。なお、使用されていない、すなわち、一度もアクセスされていない仮想ブロック番号については、ストレージ装置名に無効な値（例えばヌル）が設定されていればよい。使用されている仮想ブロックの数に、ブロックサイズを乗じた値が、仮想ボリューム情報２２２の使用容量となる。
【００４２】
本図の例では、仮想ボリュームＶ１の仮想ブロック番号１の領域は、ストレージ装置Ｓ１の物理ボリュームＰ１のブロック番号１の領域に配置されていることを表す。
【００４３】
図９は、物理ボリューム使用状況情報２２４の詳細を表す。物理ボリューム使用状況情報２２４は、ストレージ装置名、物理ボリューム名、ブロック番号、使用状況からなり、ストレージ装置名および物理ボリューム名で指定される物理ボリュームについて、領域のプロビジョニングのブロック単位での使用状況を表す。物理ボリューム毎のブロック番号の最大値は、対応する仮想ボリューム構成情報２２１の物理容量をブロックサイズで除した商である。物理ボリュームの使用されている領域、すなわち、マッピング情報２２３に記載があるブロック番号に対応する使用状況は済となる。
【００４４】
本図の例では、ストレージ装置Ｓ１の物理ボリュームＰ１について、ブロック番号１の領域は使用済みであるが、ブロック番号４の領域は未使用であることを表す。
【００４５】
図１０は、仮想化装置２００の制御部２１０上に格納されるストレージ装置特性情報２３０の詳細を示す図である。ストレージ装置特性情報２３０は、ストレージ装置名、物理ボリューム名、Ｉ／Ｏ帯域幅、ＩＯＰＳ、遅延を有し、ストレージ装置３００および物理ボリュームの特性を表す。ここで、Ｉ／Ｏ帯域幅はおよびＩＯＰＳは、対応する物理ボリュームの実効Ｉ／Ｏ帯域幅および実効ＩＯＰＳを、遅延は、Ｉ／Ｏ要求の処理遅延を格納する。これらの値は、仮想ボリューム３３０を構築する際に、管理者が、カタログ値等に基づき指定してもよく、計算機１００からストレージ装置３００に実際にＩ／Ｏアクセスを行った実測値を用いてもよい。また、例えば、Ｉ／Ｏ帯域幅を対応するストレージ装置３００の接続ポートのリンクスピードとしてもよく、遅延に計算機からストレージ装置に対する往復通信遅延を加味してもよい。
【００４６】
本図の例では、ストレージ装置Ｓ１の物理ボリュームＰ１のＩ／Ｏ帯域幅は４Ｇｂｐｓであり、ＩＯＰＳは１００ｋ、遅延は５ｍｓであることを表す。
【００４７】
図１１は、装置間メッセージ５００の詳細を表す。装置間メッセージ５００には、仮想Ｉ／Ｏ変換要求５１０、仮想Ｉ／Ｏ変換応答５２０、キャッシュ破棄要求５３０がある。仮想Ｉ／Ｏ変換要求５１０は、計算機１００から仮想化装置２００に対して送信されるメッセージであり、仮想ボリューム３００に対するＩ／Ｏ要求を、ストレージ装置３００の記憶領域３２０に対する実Ｉ／Ｏ要求６００に変換するために使用する。仮想Ｉ／Ｏ変換応答５２０は、仮想化装置２００から計算機１００に対し送信されるメッセージであり、仮想Ｉ／Ｏ変換要求５１０に対応する応答に使用する。キャッシュ破棄要求５３０は、仮想化装置２００から計算機１００に対して送信されるメッセージであり、計算機１００に、制御部１１０にキャッシュされている対応する仮想Ｉ／Ｏ変換に関する情報を破棄させるために使用する。
【００４８】
仮想Ｉ／Ｏ変換要求５１０は、仮想ボリューム名、オフセット、レングス、タイプからなる。仮想ボリューム名はアクセス対象となる仮想ボリューム３３０の識別名であり、オフセット、レングスは、アクセスする仮想ボリューム３３０の領域の範囲を、例えば、セクタサイズ単位のＬＢＡ（Logical Block Address）とセクタ数で表す。ＬＢＡおよびセクタ数は、仮想化装置２００内部では、プロビジョニングのブロックサイズの仮想ブロック番号に変換されて処理される。タイプは、読み出しＲ（Read）、書き込みＷ（Write）、消去Ｃ（Clear）がある。タイプが消去Ｃの場合、仮想ボリューム３３０の対応する領域、すなわち、マッピング情報２２３によりそこに割り当てられていた物理ボリュームの領域が未使用として扱われるようになる。本図の例では、仮想ボリュームＶ１に対するＬＢＡオフセット１２０番地から３２セクタ分の読み込みアクセス要求であることを表す。
【００４９】
仮想Ｉ／Ｏ変換応答５２０は、ストレージ装置名、物理ボリューム名、オフセット、レングス、Ｉ／Ｏ帯域、ＩＯＰＳ、遅延からなる。ここで、ストレージ装置名、物理ボリューム名、オフセット、および、レングスは、対応する仮想Ｉ／Ｏ変換要求５３０で指定された仮想ボリューム３３０の領域を、マッピング情報２２３を用いて対応する物理ボリュームの領域に変換することで求められ、さらに、Ｉ／Ｏ帯域、ＩＯＰＳ、遅延は、対応する物理ボリュームのストレージ装置特性情報２３０に格納されている値から求められる。なお、仮想Ｉ／Ｏ変換要求５１０で指定される領域が、プロビジョニングのブロックの境界を跨ぐ場合等に、仮想Ｉ／Ｏ変換応答５２０は、複数の物理ボリュームに対する情報を格納する可能性がある。本図の例では、ストレージ装置Ｓ１の物理ボリュームＰ１のＬＢＡオフセット１２０番地から８セクタ分のアクセスと、ストレージ装置Ｓ２の物理ボリュームＰ２のＬＢＡオフセット０番地から２４セクタ分のアクセスと、それぞれの物理ボリュームの特性情報からなる応答であることを表す。
【００５０】
キャッシュ破棄要求５３０は、仮想ボリューム名からなる。計算機１００は、キャッシュ破棄要求５３０を受け取った場合、キャッシングしている仮想ボリューム名に対応する仮想ボリューム３３０に関する仮想Ｉ／Ｏ変換の情報を破棄する。キャッシュ破棄要求５３０は、仮想化装置２００が、例えば、シャドウコピー技術等を用いて仮想ボリューム３３０を構成する物理ボリュームの内容を別の物理ボリュームにマイグレーションした等でマッピング情報２２３を差し替えた場合に発行する。
【００５１】
図１２は、計算機１００のＩ／Ｏスケジューラ１３０のモジュール構成及び、本実施例の動作概要を示す図である。Ｉ／Ｏスケジューラ１３０は、仮想Ｉ／Ｏ要求受付部１３１、仮想Ｉ／Ｏ変換要求発行部１３２、仮想Ｉ／Ｏ分割部１３３、Ｉ／Ｏスケジューリング部１３４、実Ｉ／Ｏ発行待ち行列１３５、実Ｉ／Ｏ要求発行部１３６、仮想Ｉ／Ｏ再構成部１３７、仮想Ｉ／Ｏ完了待ち行列１３８、仮想Ｉ／Ｏ結果応答部１３９を有する。以下、フローチャートを用いてＩ／Ｏスケジューラ１３０の処理の流れ、ならびに、各モジュールの動作を説明する。
【００５２】
図１３は、Ｉ／Ｏスケジューラ１３０における仮想Ｉ／Ｏ受付処理のフローチャートを表す図である。
【００５３】
最初に、仮想Ｉ／Ｏ要求受付部１３１は、アプリケーションソフトウェア１２０から仮想ボリューム３３０に対する仮想Ｉ／Ｏ要求を受け付ける（ステップＳ１１００）。この際、アプリケーションソフトウェア１２０がストリーミングサーバアプリケーションのように、Ｉ／Ｏのデッドラインを考慮する場合は、デッドラインをあわせて受け取り、仮想Ｉ／Ｏ要求にデッドラインを関連付ける。アプリケーションソフトウェア１２０がＤＢＭＳアプリケーションのようにデッドラインを指定しない場合は、仮想Ｉ／Ｏ要求のデッドラインは無期限として扱えばよい。また、アプリケーションソフトウェア１２０が明示的に優先度を指定した場合は、優先度を合わせて受け取り、仮想Ｉ／Ｏ要求に関連付ける。アプリケーションソフトウェア１２０が明示的に優先度を指定しなかった場合は、ＯＳ１４０内のプロセススケジューラで、アプリケーションソフトウェア１２０に割り当てられている実行優先度を用いてもよい。また、仮想Ｉ／Ｏ要求受付部１３１内で、実行ファイル名とＩ／Ｏ優先度からなる表を管理しておき、仮想Ｉ／Ｏ要求を受け付ける際に、仮想Ｉ／Ｏ要求を発行したアプリケーションソフトウェア１２０の実行ファイル名をＯＳ１４０から取得し、実行ファイル名とＩ／Ｏ優先度からなる表から対応するＩ／Ｏ優先度を決定してもよい。この表は、例えば、バックアップアプリケーションの実行ファイル名に一致する場合はＩ／Ｏ優先度が最低となるような値を格納している。この表の内容は、広く用いられているアプリケーションソフトウェア１２０の実行ファイル名とその性質に基づいてＩ／Ｏスケジューラプログラム１１５にあらかじめ組み込まれていてもよいし、管理者が計算機１００の構築時に設定してもよい。仮想Ｉ／Ｏ要求受付部１３１は、受け取った仮想Ｉ／Ｏ要求を、デッドライン、優先度等の情報とあわせて仮想Ｉ／Ｏ変換要求発行部１３２に渡す。
【００５４】
次に、仮想Ｉ／Ｏ変換要求発行部１３２は、仮想Ｉ／Ｏ要求受付部１３１から受け取った仮想Ｉ／Ｏ要求から、仮想Ｉ／Ｏ変換要求５１０を生成し、生成した仮想Ｉ／Ｏ変換要求５１０を仮想化装置２００に送信する（ステップＳ１１１０）。仮想Ｉ／Ｏ変換要求発行部１３２は、仮想化装置２００から仮想Ｉ／Ｏ変換応答５２０を受け取り、仮想Ｉ／Ｏ要求とあわせて仮想Ｉ／Ｏ分割部１３３に渡す。ここで、仮想Ｉ／Ｏ変換要求発行部１３２は、仮想Ｉ／Ｏ変換応答５２０の内容を内部の記憶領域にキャッシングしておいてもよい。この場合、仮想Ｉ／Ｏ変換要求発行部１３２は、受け取った仮想Ｉ／Ｏ要求が、すでにキャッシュされている内容の領域と一致する場合は、仮想化装置２００と通信せずに、キャッシュされている内容から仮想Ｉ／Ｏ変換応答５２０に相当する内容を生成し、仮想Ｉ／Ｏ分割部１３３に渡してもよい。キャッシングを行う場合、仮想Ｉ／Ｏ変換要求発行部１３２は、仮想化装置２００からキャッシュ破棄要求５３０を受け取った場合、キャッシュされている内容のうち対象となる仮想ボリューム３３０に関連する情報を破棄する。
【００５５】
次に、仮想Ｉ／Ｏ分割部１３３は、仮想Ｉ／Ｏ変換要求発行部１３２から受け取った仮想Ｉ／Ｏ要求を、同じく仮想Ｉ／Ｏ変換要求発行部１３２から受け取った仮想Ｉ／Ｏ変換応答５２０の内容に応じて実Ｉ／Ｏ要求に変換する（ステップＳ１１２０）。ここで、ひとつの仮想Ｉ／Ｏ要求が複数の実Ｉ／Ｏ要求に分割される場合がある。実Ｉ／Ｏ要求には、元の仮想Ｉ／Ｏ要求と、デッドライン、優先度、発行対象となる物理ボリュームの特性等の情報が関連付けられる。仮想Ｉ／Ｏ分割部１３３は、変換した実Ｉ／Ｏ要求を仮想Ｉ／Ｏスケジューリング部１３４に渡す。
【００５６】
次に、Ｉ／Ｏスケジューリング部１３４は、仮想Ｉ／Ｏ分割部１３３から受け取った新たな実Ｉ／Ｏ要求について、例えば、デッドラインスケジューリングを行う場合、発行対象となる物理ボリュームのＩ／Ｏ帯域幅、遅延特性、レングス等の情報に基づき新たな実Ｉ／Ｏ要求の実行時間を見積もる（ステップＳ１１３０）。
【００５７】
次に、Ｉ／Ｏスケジューリング部１３４は、すでに実Ｉ／Ｏ発行待ち行列１３５に入っている実Ｉ／Ｏ要求の実行時間の見積もりと比較しつつ、それぞれのデッドラインを満たすかどうか判定する（ステップＳ１１４０）。
【００５８】
デッドラインを満たす場合（ステップＳ１１４０においてＹＥＳ）、Ｉ／Ｏスケジューリング部１３４は、必要に応じて実Ｉ／Ｏ発行待ち行列１３５内の実Ｉ／Ｏ要求の実行順序を並び替えつつ、実Ｉ／Ｏ発行待ち行列１３５に新たな実Ｉ／Ｏ要求を加え（ステップＳ１１５０）、処理を終了する。Ｉ／Ｏスケジューリング部１３４は、実Ｉ／Ｏ要求を実Ｉ／Ｏ発行待ち行列１３５に加える際に、見積もった実行時間とデッドラインに基づき、例えば、異なるストレージ装置３００への実Ｉ／Ｏ要求と並列に実行するように実行予定時刻を付加することで、計算機１００のＩ／Ｏ性能の向上を図ることがきる。
【００５９】
デッドラインを満たさない、すなわち、新たな実Ｉ／Ｏ要求とすでに実Ｉ／Ｏ発行待ち行列１３５に入っている実Ｉ／Ｏ要求を合わせると、例えば、対象となる実ボリュームのＩ／Ｏ帯域、あるいは、ＩＯＰＳを超過する等のために、デッドラインを満たせないと予想される場合（ステップＳ１１４０においてＮＯ）、Ｉ／Ｏスケジューリング部１３４は、元の仮想Ｉ／Ｏ要求のデッドラインミスとして処理し、実Ｉ／Ｏ要求を発行することなく仮想Ｉ／Ｏ要求を発行したアプリケーションソフトウェア１２０にエラー応答する（ステップＳ１１６０）。これにより、すでに実Ｉ／Ｏ発行待ち行列１３５に入っている実Ｉ／Ｏ要求に影響を与えずに済む。この時、新たな実Ｉ／Ｏ要求をデッドラインミスとして処理するのではなく、Ｉ／Ｏの優先度を考慮し、すでに実Ｉ／Ｏ発行待ち行列１３５に入っている同じ物理ボリュームを対象とする実Ｉ／Ｏ要求の内優先度の低いものをデッドラインミスとして処理してもよい。
【００６０】
図１４は、Ｉ／Ｏスケジューラ１３０における実Ｉ／Ｏ発行処理のフローチャートを表す。
【００６１】
最初に、実Ｉ／Ｏ要求発行部１３６は、実Ｉ／Ｏ発行待ち行列１３５から実Ｉ／Ｏ要求を実行順序順に取り出す（ステップＳ１２００）。
【００６２】
次に、実Ｉ／Ｏ要求発行部１３６は、取り出した実Ｉ／Ｏ要求を、対象となる物理ボリュームをもつストレージ装置３００に対して実Ｉ／Ｏ要求６００として直接発行する（ステップＳ１２１０）。
【００６３】
最後に、実Ｉ／Ｏ要求発行部１３６は、ストレージ装置３００より実Ｉ／Ｏ要求の結果を受け取ると、実Ｉ／Ｏ結果として仮想Ｉ／Ｏ再構成部１３７へ渡し（ステップＳ１２２０）、処理を終了する。
【００６４】
図１５は、Ｉ／Ｏスケジューラ１３０における仮想Ｉ／Ｏ再構成処理のフローチャートを表す。
【００６５】
最初に、仮想Ｉ／Ｏ再構成部１３７は、実Ｉ／Ｏ要求発行部１３６から実Ｉ／Ｏ結果を受け取る（ステップＳ１３００）。
【００６６】
次に、仮想Ｉ／Ｏ再構成部１３７は、受け取った実Ｉ／Ｏ結果の元の仮想Ｉ／Ｏ要求に関連する全ての実Ｉ／Ｏ要求が完了しているかを判定する（ステップＳ１３１０）。ここで、元の仮想Ｉ／Ｏ要求が複数の実Ｉ／Ｏ要求に分割されている場合は、仮想Ｉ／Ｏ完了待ち行列１３８を参照し、元の仮想Ｉ／Ｏ要求に関連する他の全ての実Ｉ／Ｏ結果が格納されているかを検査する。
【００６７】
元の仮想Ｉ／Ｏ要求に関連する実Ｉ／Ｏ要求のうち完了していないものがある場合（ステップＳ１３１０においてＮＯ）、仮想Ｉ／Ｏ再構成部１３７は、受け取った実Ｉ／Ｏ結果を仮想Ｉ／Ｏ完了待ち行列１３８に追加し（ステップＳ１３２０）、処理を終了する。
【００６８】
元の仮想Ｉ／Ｏ要求に関連する全ての実Ｉ／Ｏ要求が完了している場合（ステップＳ１３１０においてＹＥＳ）、仮想Ｉ／Ｏ再構成部１３７は、仮想Ｉ／Ｏ完了待ち行列１３８から元の仮想Ｉ／Ｏ要求に関連する全ての実Ｉ／Ｏ結果を取り出し、受け取った実Ｉ／Ｏ結果とあわせて、元の仮想Ｉ／Ｏ要求の結果として再構成する（ステップＳ１３３０）。仮想Ｉ／Ｏ再構成部１３７は、再構成した仮想Ｉ／Ｏ要求の結果を、仮想Ｉ／Ｏ結果応答部１３９に渡す。
【００６９】
最後に、仮想Ｉ／Ｏ結果応答部１３９は、仮想Ｉ／Ｏ再構成部１３７から受け取った仮想Ｉ／Ｏ要求の結果を、仮想Ｉ／Ｏ要求を発行したアプリケーションソフトウェア１２０に応答し（ステップＳ１３４０）、処理を終了する。
【００７０】
以上の処理により、本実施例の計算機１００のＩ／Ｏスケジューラ１３０は、アプリケーションソフトウェア１２０の発行する仮想Ｉ／Ｏ要求を実Ｉ／Ｏ要求に分割、変換し、元の仮想Ｉ／Ｏ要求を発行したアプリケーションソフトウェア１２０の性質およびストレージ装置３００の物理ボリュームの特性を利用してＩ／Ｏスケジューリングを行い、Ｉ／Ｏスケジューリング結果に応じてストレージ装置３００に直接実Ｉ／Ｏ要求６００を発行する。
【００７１】
図１６は、仮想化装置２００における仮想Ｉ／Ｏ変換処理のフローチャートを表す図である。
【００７２】
最初に、仮想化装置２００の制御部２１０は、計算機１００より仮想Ｉ／Ｏ変換要求５１０を受信する（ステップＳ１４００）。
【００７３】
次に、制御部２１０は、受信した仮想Ｉ／Ｏ変換要求５１０のオフセットおよびレングスで指定される領域をプロビジョニングのブロックサイズである仮想ブロック単位のＩ／Ｏ要求に変換する（ステップＳ１４１０）。この時、仮想Ｉ／Ｏ変換要求５１０で指定される領域がプロビジョニングのブロック境界を跨ぐ場合は、複数の仮想ブロックに対するＩ／Ｏ要求に分割される。
【００７４】
次に、制御部２１０は、分割した仮想ブロックに対するＩ／Ｏ要求のそれぞれについて、マッピング情報２２３を参照して既に物理ボリュームの実ブロックが割り当てられているか判定する（ステップＳ１４２０）。
【００７５】
実ブロックが割り当てられていない場合（ステップＳ１４２０においてＮＯ）、制御部２１０は、仮想ボリューム構成情報２２１および物理ボリューム使用状況情報２２４を参照し、仮想ボリューム３３０を構成する物理ボリュームの未使用ブロックを、マッピング情報２２３の対応する仮想ブロック番号の欄に追加することで、仮想ボリューム３３０に新たな実ブロックを割り当てる（ステップＳ１４３０）。この時、制御部２１０は、仮想ボリューム情報２２３、物理ボリューム使用状況情報２２４を合わせて更新する。仮想ボリューム３３０を構成する物理ボリュームの未使用ブロックがない場合は、仮想化装置１００に対してエラー応答を行う。この時、制御部２１０は、例えば、仮想化装置２００のシステムログ等を用いて、管理者に仮想ボリューム３３０に割り当てられている物理ボリュームの領域を使い切ったことをエラーとして通知してもよい。また、制御部２１０は、全ての未使用ブロックを使い切る前に、例えば、未使用実ブロック数が仮想ボリューム３３０に割り当てられている実ブロック数の１０％を切った時点で、管理者に未使用実ブロック数が少なくなっていることを警告として通知してもよい。または、未使用の物理ボリュームを追加するようにしてもよい。
【００７６】
実ブロックが割り当てられていた場合（ステップＳ１４２０においてＹＥＳ）、および、新たな実ブロックを割り当てた後、制御部２１０は、マッピング情報２２３、および、ストレージ装置特性情報２３０を参照し、仮想Ｉ／Ｏ変換応答情報を生成する（ステップＳ１４４０）。
【００７７】
全ての仮想ブロックについて仮想Ｉ／Ｏ変換応答５２０を生成した後、制御部２１０は、全ての仮想Ｉ／Ｏ変換応答情報をまとめてひとつの仮想Ｉ／Ｏ変換応答５２０とし、計算機１００に返信する（ステップＳ１４５０）。
【００７８】
以上の処理により、仮想化装置２００の制御部２１０は、計算機１００より仮想Ｉ／Ｏ変換要求５１０を受信し、仮想ボリューム３３０へのＩ／Ｏ要求を対応するストレージ装置３００の物理ボリュームへのＩ／Ｏ要求へ変換し、仮想Ｉ／Ｏ変換応答５２０として計算機１００に返信する。
【００７９】
以上に説明したように、本実施例の計算機システムでは、仮想化装置２００によってストレージ装置３００の記憶領域３２０が仮想ボリューム３３０として仮想化されている場合であっても、計算機１００のＩ／Ｏスケジューラ１３０において、対応するストレージ装置３００の物理ボリュームの領域および特性情報を取得することができ、ストレージ装置３００の物理ボリュームに対するＩ／Ｏスケジューリングを行うことによりその精度を高めることができ、計算機１００のＩ／Ｏ性能を向上することができる。
【００８０】
本実施例のＩ／Ｏスケジューラ１３０は、アプリケーションソフトウェア１２０に関するプロセス実行優先度、実行ファイル名等のＯＳ１４０内部の情報を用いることができるため、アプリケーションソフトウェア１２０が仮想Ｉ／Ｏ要求発行時に明示的に優先度等を指定していない場合であっても、アプリケーションソフトウェア１２０の性質に応じた優先度を設定することができる。また、Ｉ／Ｏスケジューラ１３０は、ストレージ装置３００の物理ボリュームの特性情報を用いたスケジューリングが可能であり、デッドラインミスの発生が予想される場合に、実Ｉ／Ｏ要求６００を発行することなく仮想Ｉ／Ｏ要求をエラーとしてアプリケーションソフトウェア１２０に返すことができ、ストレージ装置３００で既に実行されている実Ｉ／Ｏ要求に影響を与えることによる性能低下を防止することができる。
【００８１】
さらに、本実施例の計算機１００は、実Ｉ／Ｏ要求６００を直接ストレージ装置３００に対して発行するため、仮想化装置２００が実Ｉ／Ｏ実行のボトルネックとなることを防止することができる。
【００８２】
以上により、本実施例を説明したが、本発明は、本実施形態に限らず、様々な変更を行っても適用できる。
【実施例２】
【００８３】
図１７は、実施例２の計算機システムの構成を表す図である。実施例１と異なるのは、Ｉ／Ｏスケジューラ１３０が計算機１００の中ではなく仮想化装置２００の中にあることである。その他は、実施例１と同様である。実施例２における処理も実施例１と同様である。ただし、仮想Ｉ／Ｏを仮想化装置２００に送受信する必要があるため、通信上のボトルネックを避ける必要がある。ボトルネックを避けるため、ネットワーク４００を使用せずに、専用線１７００を使用することもできる。あるいは、ネットワーク４００と専用線１７００の二つを併用することも可能である。
【００８４】
以上により、本実施例の計算機システムでは、仮想化装置２００によってストレージ装置３００の記憶領域３２０が仮想ボリューム３３０として仮想化されている場合であっても、計算機１００のＩ／Ｏスケジューラ１３０において、対応するストレージ装置３００の物理ボリュームの領域および特性情報を取得することができ、ストレージ装置３００の物理ボリュームに対するＩ／Ｏスケジューリングを行うことによりその精度を高めることができ、計算機１００のＩ／Ｏ性能を向上することができる。
【００８５】
また、Ｉ／Ｏスケジューラ１３０は、仮想化装置２００の中にあるため、計算機の処理速度が遅い場合であっても、処理することができる。
【００８６】
また、本実施例のＩ／Ｏスケジューラ１３０は、アプリケーションソフトウェア１２０に関するプロセス実行優先度、実行ファイル名等のＯＳ１４０内部の情報を用いることができるため、アプリケーションソフトウェア１２０が仮想Ｉ／Ｏ要求発行時に明示的に優先度等を指定していない場合であっても、アプリケーションソフトウェア１２０の性質に応じた優先度を設定することができる。また、Ｉ／Ｏスケジューラ１３０は、ストレージ装置３００の物理ボリュームの特性情報を用いたスケジューリングが可能であり、デッドラインミスの発生が予想される場合に、実Ｉ／Ｏ要求６００を発行することなく仮想Ｉ／Ｏ要求をエラーとしてアプリケーションソフトウェア１２０に返すことができ、ストレージ装置３００で既に実行されている実Ｉ／Ｏ要求に影響を与えることによる性能低下を防止することができる。
【実施例３】
【００８７】
図１８は、実施例３の計算機システムの構成を表す図である。実施例１及び実施例２と異なるのは、仮想化装置２００が存在しない代わりに、計算機１００内に仮想化制御部２１１がある点である。その他の処理は、同様であるが、装置間メッセージ５００が存在せずに、計算機１００の内部ネットワークのみで、処理する。
【００８８】
本実施例の計算機システムでは、仮想化制御部２１１によってストレージ装置３００の記憶領域３２０が仮想ボリューム３３０として仮想化されている場合であっても、計算機１００のＩ／Ｏスケジューラ１３０において、対応するストレージ装置３００の物理ボリュームの領域および特性情報を取得することができ、ストレージ装置３００の物理ボリュームに対するＩ／Ｏスケジューリングを行うことによりその精度を高めることができ、計算機１００のＩ／Ｏ性能を向上することができる。
【００８９】
本実施例のＩ／Ｏスケジューラ１３０は、アプリケーションソフトウェア１２０に関するプロセス実行優先度、実行ファイル名等のＯＳ１４０内部の情報を用いることができるため、アプリケーションソフトウェア１２０が仮想Ｉ／Ｏ要求発行時に明示的に優先度等を指定していない場合であっても、アプリケーションソフトウェア１２０の性質に応じた優先度を設定することができる。また、Ｉ／Ｏスケジューラ１３０は、ストレージ装置３００の物理ボリュームの特性情報を用いたスケジューリングが可能であり、デッドラインミスの発生が予想される場合に、実Ｉ／Ｏ要求６００を発行することなく仮想Ｉ／Ｏ要求をエラーとしてアプリケーションソフトウェア１２０に返すことができ、ストレージ装置３００で既に実行されている実Ｉ／Ｏ要求に影響を与えることによる性能低下を防止することができる。
【００９０】
さらに、本実施例の計算機１００は、実Ｉ／Ｏ要求６００を直接ストレージ装置３００に対して発行するため、仮想化装置２００が実Ｉ／Ｏ実行のボトルネックとなることを防止することができる。
【００９１】
さらに、装置間メッセージを使用する必要がないので、ネットワーク４００の通信帯域を節約することができる。
【００９２】
以上により、発明実施するための形態を説明したが、本発明は、実施の形態に限らず、様々な変更を行っても適用できる。
【符号の説明】
【００９３】
１００：計算機
１１０：制御部
１１１：ＣＰＵ
１１２：Ｉ／Ｏインタフェース
１１３：メモリ
１１４：アプリケーションプログラム
１１５：Ｉ／Ｏスケジューラプログラム
１１６：ＯＳプログラム
１２０：アプリケーションソフトウェア
１３０：Ｉ／Ｏスケジューラ
１３１：仮想Ｉ／Ｏ要求受付部
１３２：仮想Ｉ／Ｏ変換要求発行部
１３３：仮想Ｉ／Ｏ分割部
１３４：Ｉ／Ｏスケジューリング部
１３５：実Ｉ／Ｏ発行待ち行列
１３６：実Ｉ／Ｏ要求発行部
１３７：仮想Ｉ／Ｏ再構成部
１３８：仮想Ｉ／Ｏ完了待ち行列
１３９：仮想Ｉ／Ｏ結果応答部
１４０：ＯＳ
２００：仮想化装置
２１０：制御部
２２０：プロビジョニング情報
２２１：仮想ボリューム構成情報
２２２：仮想ボリューム情報
２２３：マッピング情報
２２４：物理ボリューム使用状況情報
２３０：ストレージ装置特性情報
３００：ストレージ装置
３１０：制御部
３２０：記憶領域
３３０：仮想ボリューム
４００：ネットワーク
５００：装置間メッセージ
５１０：仮想Ｉ／Ｏ変換要求
５２０：仮想Ｉ／Ｏ変換応答
５３０：キャッシュ破棄要求
６００：実Ｉ／Ｏ要求
【図１】
2011081580.tif 000003
【図２】
2011081580.tif 000004
【図３】
2011081580.tif 000005
【図４】
2011081580.tif 000006
【図５】
2011081580.tif 000007
【図６】
2011081580.tif 000008
【図７】
2011081580.tif 000009
【図８】
2011081580.tif 000010
【図９】
2011081580.tif 000011
【図１０】
2011081580.tif 000012
【図１１】
2011081580.tif 000013
【図１２】
2011081580.tif 000014
【図１３】
2011081580.tif 000015
【図１４】
2011081580.tif 000016
【図１５】
2011081580.tif 000017
【図１６】
2011081580.tif 000018
【図１７】
2011081580.tif 000019
【図１８】
2011081580.tif 000020