(57)【特許請求の範囲】
【請求項１】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御方法であって、
Ｉ／Ｏ分析部が、前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する第１のステップと、
コントローラ部が、前記第１のステップの判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信する第２のステップと、
を備え、
前記設定情報は、データ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式とが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記Ｉ／Ｏ分析部は、前記仮想計算機のＩ／Ｏ要求と、前記設定情報と、前記仮想計算機のデータアクセス方式と、に基づいて、前記仮想計算機のＩ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する、
ことを特徴とするＩ／Ｏ制御方法。
【請求項２】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御方法であって、
Ｉ／Ｏ分析部が、前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する第１のステップと、
コントローラ部が、前記第１のステップの判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信する第２のステップと、
を備え、
前記設定情報は、データ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式と前記仮想計算機が使用するデータパスとが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記仮想計算機が使用するデータパスは、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記Ｉ／Ｏ分析部は、前記仮想計算機のＩ／Ｏ要求と、前記設定情報と、前記仮想計算機のデータアクセス方式と、前記仮想計算機が使用するデータパスと、に基づいて、前記仮想計算機のＩ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する、
ことを特徴とするＩ／Ｏ制御方法。
【請求項３】
管理装置が、前記設定情報を入力する第３のステップと、
前記管理装置が、前記設定情報を前記計算機に送信する第４のステップと、
を更に備えることを特徴とする請求項１または２に記載のＩ／Ｏ制御方法。
【請求項４】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御方法であって、
Ｉ／Ｏ分析部が、前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する第１のステップと、
コントローラ部が、前記第１のステップの判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信する第２のステップと、
を備え、
前記Ｉ／Ｏデバイスは、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）対応の物理ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であり、
前記データ冗長化機構は、ＥＣ（Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ）であり、
前記設定情報は、前記ＥＣによるデータ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式と前記仮想計算機が使用するデータパスとが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記仮想計算機が使用するデータパスは、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
Ｉ／Ｏポーリング部が、前記仮想計算機のＩ／Ｏ要求を取得し、
前記Ｉ／Ｏ分析部は、前記Ｉ／Ｏポーリング部で取得されたＩ／Ｏ要求がＲｅａｄ要求であるかＷｒｉｔｅ要求であるかを判定し、前記Ｉ／Ｏ要求がＷｒｉｔｅ要求であると判定した場合、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であるか否かを判定し、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であると判定したとき、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられていないデータパスであるか否かを判定し、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定したとき、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスであるか否かを判定し、
前記コントローラ部は、前記Ｉ／Ｏ分析部によりＷｒｉｔｅ要求であると判定され、かつ、
前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であると判定され、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられていないデータパスでないと判定された場合、または、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定され、前記仮想計算機のデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスであると判定された場合、前記ＥＣにＷｒｉｔｅコマンドを送信すると共に、前記Ｉ／Ｏデバイスに、前記Ｗｒｉｔｅ要求に係るＷｒｉｔｅコマンドを、前記ＥＣによるデータ冗長化処理が必要なデータを記憶するための記憶デバイスに送信させ、
前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定され、前記仮想計算機のデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスでないと判定された場合、前記ＥＣによるデータ冗長化処理が不要なデータを記憶するための前記記憶デバイスとは異なる記憶デバイスにＷｒｉｔｅコマンドを送信する、
ことを特徴とするＩ／Ｏ制御方法。
【請求項５】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御システムであって、
前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定するＩ／Ｏ分析部と、
前記Ｉ／Ｏ分析部の判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信するコントローラ部と、
を備え、
前記設定情報は、データ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式とが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記Ｉ／Ｏ分析部は、前記仮想計算機のＩ／Ｏ要求と、前記設定情報と、前記仮想計算機のデータアクセス方式と、に基づいて、前記仮想計算機のＩ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する、
ことを特徴とするＩ／Ｏ制御システム。
【請求項６】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御システムであって、
前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定するＩ／Ｏ分析部と、
前記Ｉ／Ｏ分析部の判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信するコントローラ部と、
を備え、
前記設定情報は、データ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式と前記仮想計算機が使用するデータパスとが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記仮想計算機が使用するデータパスは、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記Ｉ／Ｏ分析部は、前記仮想計算機のＩ／Ｏ要求と、前記設定情報と、前記仮想計算機のデータアクセス方式と、前記仮想計算機が使用するデータパスと、に基づいて、前記仮想計算機のＩ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する、
ことを特徴とするＩ／Ｏ制御システム。
【請求項７】
前記設定情報を入力する管理装置を更に備え、
前記管理装置は、前記設定情報を前記計算機に送信する、
ことを特徴とする請求項５または６に記載のＩ／Ｏ制御システム。
【請求項８】
Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御システムであって、
前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定するＩ／Ｏ分析部と、
前記Ｉ／Ｏ分析部の判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信するコントローラ部と、
を備え、
前記Ｉ／Ｏデバイスは、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）対応の物理ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であり、
前記データ冗長化機構は、ＥＣ（Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ）であり、
前記設定情報は、前記ＥＣによるデータ冗長化処理の実行可否と前記仮想計算機のデータアクセス方式と前記仮想計算機が使用するデータパスとが対応付けられた情報であり、
前記仮想計算機のデータアクセス方式は、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記仮想計算機が使用するデータパスは、前記仮想計算機に対応して設けられ、前記仮想計算機を特定することにより特定されるものであり、
前記仮想計算機のＩ／Ｏ要求を取得するＩ／Ｏポーリング部を更に備え、
前記Ｉ／Ｏ分析部は、前記Ｉ／Ｏポーリング部で取得されたＩ／Ｏ要求がＲｅａｄ要求であるかＷｒｉｔｅ要求であるかを判定し、前記Ｉ／Ｏ要求がＷｒｉｔｅ要求であると判定した場合、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であるか否かを判定し、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であると判定したとき、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられていないデータパスであるか否かを判定し、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定したとき、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスであるか否かを判定し、
前記コントローラ部は、前記Ｉ／Ｏ分析部によりＷｒｉｔｅ要求であると判定され、かつ、
前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式であると判定され、前記仮想計算機が使用するデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられていないデータパスでないと判定された場合、または、前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定され、前記仮想計算機のデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスであると判定された場合、前記ＥＣにＷｒｉｔｅコマンドを送信すると共に、前記Ｉ／Ｏデバイスに、前記Ｗｒｉｔｅ要求に係るＷｒｉｔｅコマンドを前記ＥＣによるデータ冗長化処理が必要なデータを記憶するための記憶デバイスに送信させ、
前記仮想計算機のデータアクセス方式が前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータアクセス方式でないと判定され、前記仮想計算機のデータパスが前記ＥＣによるデータ冗長化処理の実行に対応付けられたデータパスでないと判定された場合、前記ＥＣによるデータ冗長化処理が不要なデータを記憶するための前記記憶デバイスとは異なる記憶デバイスにＷｒｉｔｅコマンドを送信する、
ことを特徴とするＩ／Ｏ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩ／Ｏ制御方法およびＩ／Ｏ制御システムに関し、例えばＩ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御方法およびＩ／Ｏ制御システムに適用して好適なものである。
【背景技術】
【０００２】
近年、企業内ＩＴシステムの高度化に伴い、企業が蓄積・管理するデータ量は、飛躍的に増大している。各主要ＩＴベンダでは、多種・大量なデータを処理するシステムを迅速かつ効率的に導入するために、ハードウェア、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の全てを垂直統合した統合プラットフォームを提供している。【０００３】
統合プラットフォームでは、サーバ機能とストレージ機能とをソフトウェア化した上で、物理サーバ上に統合し、各サーバに対して必要に応じてリソースを割り当てるＨｙｐｅｒ  Ｃｏｎｖｅｒｇｅｄ  ＰＦ（ｐｌａｔｆｏｒｍ）が注目を集めている。このＨｙｐｅｒ  Ｃｏｎｖｅｒｇｅｄ  ＰＦでは、例えば、低コストの２Ｕサーバを用い、これをスケールアウトすることでストレージの大容量化を行うことができる。【０００４】
上述したＨｙｐｅｒ  Ｃｏｎｖｅｒｇｅｄ  ＰＦのような統合プラットフォームでは、ソフトウェアによりサーバおよびストレージを統合管理するため、例えば、本プラットフォームで仮想サーバを稼働させている場合に必要なリソースを容易に割り当てることができるためスケールアウトにより性能向上を提供し、更に高いアジリティを提供することができる。【０００５】
また、ストレージシステムにおいては、データを冗長化させるＭｕｌｔｉ−ｓｔａｇｅ  Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇの研究が進められ、高容量効率と信頼性の並立を図る技術が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１６／０５２６６５号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、ＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ）などの仮想環境では、エミュレーション処理等によりＩ／Ｏ処理を柔軟に制御すること、例えばＥＣ（Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ）と連携することが可能であるが、かかるＩ／Ｏ処理は、Ｉ／Ｏに対するストレージ処理がサーバ上で動作することになり、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）による仮想化のオーバヘッドの影響を受けてＩ／Ｏ性能が大幅に低下する可能性がある。【０００８】
この点、Ｉ／Ｏ処理をＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）側にオフロードさせることでＶＭＭの処理を省き、ハードウェアで処理を行うＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）が知られている。しかしながら、ＮＩＣのＶＦ（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）を割り当てたＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）では、書き込み先となるＦｌａｓｈ等のボリュームに直接Ｉ／Ｏを発行することしかできないため、特許文献１に記載の技術が開示されているにもかかわらず、ＥＣ等のストレージ機能との連携ができないという問題がある。【０００９】
本発明は以上の点を考慮してなされたもので、仮想化のオーバヘッドを抑え、かつ、ＥＣ等のデータ冗長化機構と連携可能なＩ／Ｏ制御方法およびＩ／Ｏ制御システムを提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明においては、Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御方法であって、Ｉ／Ｏ分析部が、前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定する第１のステップと、コントローラ部が、前記第１のステップの判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信する第２のステップと、を設けるようにした。【００１１】
また本発明においては、Ｉ／Ｏ処理を実行するＩ／Ｏデバイスを有する計算機で稼働する仮想計算機のＩ／Ｏ要求に係る制御を行うＩ／Ｏ制御システムであって、前記仮想計算機のＩ／Ｏ要求と、データ冗長化処理の実行可否を識別可能な設定情報とに基づいて、前記Ｉ／Ｏ要求についてのデータ冗長化処理の実行可否を判定するＩ／Ｏ分析部と、前記Ｉ／Ｏ分析部の判定結果に基づいてデータ冗長化処理を実行するデータ冗長化機構に前記Ｉ／Ｏ要求に係るＩ／Ｏコマンドを送信するコントローラ部と、を設けるようにした。【００１２】
本発明によれば、Ｉ／ＯデバイスによりＩ／Ｏ処理が行われ、仮想計算機のＩ／Ｏ要求に基づいてデータ冗長化処理が実行されるので、仮想化のオーバヘッドを抑え、かつ、データ冗長化機構と連携することができる。
【発明の効果】
【００１３】
本発明によれば、Ｉ／Ｏ処理の高速化とデータ冗長化とを並立するＩ／Ｏ制御方法およびＩ／Ｏ制御システムを実現することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態によるＩ／Ｏ制御システムの構成例を示す図である。
【図２】第１の実施の形態による物理ノードにおけるソフトウェアのスタック構成の一例を示す図である。
【図３】第１の実施の形態によるデータ管理テーブルの一例を示す図である。
【図４】第１の実施の形態によるＥＣ利用管理テーブルの一例を示す図である。
【図５】第１の実施の形態による仮想サーバにてＲｅａｄ要求が発生したときに行われるＲｅａｄ処理に係る概念図である。
【図６】第１の実施の形態による仮想サーバにてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理に係る概念図である。
【図７】第１の実施の形態による仮想サーバにてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理の詳細に係る概念図である。
【図８】第１の実施の形態によるＥＣ処理実行可否判定処理に係る処理内容の一例を示す図である。
【図９】第２の実施の形態による仮想サーバにてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理に係る概念図である。
【図１０】第２の実施の形態によるＥＣ処理実行可否判定処理に係る処理内容の一例を示す図である。
【図１１】第３の実施の形態によるＥＣ処理実行可否判定処理に係る処理内容の一例を示す図である。
【図１２】第４の実施の形態によるＥＣ処理実行可否判定処理に係る処理内容の一例を示す図である。
【図１３】第５の実施の形態によるＥＣ処理実行可否の設定処理に係る処理内容の一例を示す図である。
【図１４】第５の実施の形態による仮想サーバの構成情報およびＥＣの利用条件を管理するための管理画面の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下図面について、本発明の一実施の形態を詳述する。
【００１６】
以下に示す実施の形態のＩ／Ｏ制御システムでは、仮想化ソフトウェアによりサーバおよびストレージが統合された計算機と計算機に係る設定情報を管理する管理装置とがネットワークを介して接続される。
【００１７】
計算機は、物理的なネットワークデバイスであるＰＦ（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ）、およびＰＦに対応する仮想的なネットワークデバイスであるＶＦ（Ｖｕｌｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）を含む、Ｉ／Ｏ処理を実行するＩ／Ｏデバイス（例えばＳＲ−ＩＯＶ対応のＮＩＣ）を備える。
【００１８】
かかる計算機では、仮想計算機（ＶＭ）とＶＦ（ストレージデバイス）との間の通信処理でハイパバイザ（ＶＭＭ）の処理が省かれ、Ｉ／ＯデバイスでＩ／Ｏ処理が行われる。また、設定情報に含まれるデータ冗長化処理（例えばＥＣ処理）の実行可否を判定可能な情報とＶＭのＩ／Ｏ要求とに基づいてデータ冗長化処理の実行可否が判定され、Ｉ／Ｏ要求に応じて適切にデータの冗長化が行われる（バックアップが取得される）。
【００１９】
かかるＩ／Ｏ制御システムによれば、Ｉ／ＯデバイスでのＩ／Ｏ処理により仮想化によるオーバヘッドを削減させることが可能となり、かつ、ＶＭのＩ／Ｏ要求に基づいてデータ冗長化処理を適切に実行することができるようになる。
【００２０】
（１）第１の実施の形態
図１において、１は全体として第１の実施の形態によるＩ／Ｏ制御システムを示す。このＩ／Ｏ制御システム１では、サーバ機能とストレージ機能とが統合された仮想化基盤（ＨＣＩ：Ｈｙｐｅｒ  Ｃｏｎｖｅｒｇｅｄ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）である物理ノード１００（本例では、物理ノード１００−１〜物理ノード１００−ｎ）と管理サーバ１１２とがネットワーク１１１を介して接続される。なお、物理ノード１００−１〜１００−ｎは、同じ構成を有するので、以下では、物理ノード１００−１を例に挙げて説明し、その他の物理ノード１００−２〜１００−ｎについては、その説明を省略する。
【００２１】
物理ノード１００−１では、１つ以上のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０８（本例ではＣＰＵ１０８−１〜ＣＰＵ１０８−ｎ）と、メモリ１０６と、１つ以上のフラッシュメモリ（以下「Ｆｌａｓｈ」と適宜称する。本例では、Ｆｌａｓｈ１１０−１〜Ｆｌａｓｈ１１０−ｎ）１１０と、物理ＮＩＣ１０９とが、データの受け渡しを管理するＣｈｉｐＳｅｔ１０７と接続される。
【００２２】
ＣＰＵ１０８は、制御装置の一例であり、各種の処理を実行する。
【００２３】
メモリ１０６は、記憶装置の一例であり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等であり、各種のプログラム、テーブルなどを記憶する。メモリ１０６のプログラムをＣＰＵ１０８が実行することで、フラッシュドライバ１０１、ＥＣ１０２、ハイパバイザ１０３、およびハイパバイザ１０３が制御する仮想サーバ１０５で稼働するゲストＯＳ１０４が実現される。
【００２４】
Ｆｌａｓｈ１１０は、ストレージデバイスの一例であり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等であってもよい。なお、ストレージデバイスについては、１台のストレージデバイス、複数台のストレージデバイス、複数台のストレージデバイスを含むＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置、および複数のＲＡＩＤ装置など、適宜の構成を採用できる。
【００２５】
物理ＮＩＣ１０９は、仮想化をサポートする機能（例えばＳＲ−ＩＯＶ機能）を有し、デバイス共有処理を実装する。より具体的には、物理ＮＩＣ１０９は、１つの物理ＮＩＣに相当するＰＦと、ＰＦを介して外部と通信する１または複数の仮想ＮＩＣに相当するＶＦとを有する。かかる構成により、ソフトウェアによるＮＩＣ共有に比べ、ＰＦと同等の最大帯域を確保できる。また帯域は、ＶＦ毎に制限（例えば１００Mbps単位）を掛けることができ、性能確保が必要なポートに対し、リソースを確実に割り当てることができる。さらに、ＣＰＵ１０８（ハイパバイザ１０３）のデバイス共有処理に関わる負荷をゼロにできるため、広帯域通信が可能となる。
【００２６】
かかる物理ノード１００−１の構成によれば、例えば、１または複数の物理ノード１００のストレージデバイスによってストレージプールを実現する仮想的なストレージシステムを実現することができる。
【００２７】
管理サーバ１１２は、各物理ノード１００に各種の設定を行うための設定情報を管理する。例えば、管理サーバ１１２は、ユーザ操作に基づいて各種の設定情報（設定値など）を入力し、入力された設定情報を各物理ノード１００に送信する。各物理ノード１００は、設定情報を受信すると、メモリ１０６の所定の記憶領域に記憶する。なお、管理サーバ１１２の送信については、適宜のタイミングに行うことができ、例えば、リアルタイムに行われてもよいし、周期的に行われてもよいし、ユーザにより指定された時間に行われてもよし、その他のタイミングに行われてもよい。
【００２８】
図２は、物理ノード１００におけるソフトウェアのスタック構成の一例を示す図である。
【００２９】
図２に示すように、物理ノード１００では、ハイパバイザ１０３がメモリ１０６にロードされ、ハイパバイザ１０３により仮想サーバ１０５が制御される。より具体的には、ハイパバイザ１０３は、仮想化機構の一例であり、ＣＰＵ１０８、メモリ１０６、物理ＮＩＣ１０９などのハードウェアを論理的に分割してなる論理リソースを仮想サーバ１０５に仮想リソースとして割り当てる。これにより、仮想サーバ１０５が実現される。
【００３０】
仮想サーバ１０５には、物理ＮＩＣ１０９において論理的にパーティションが切られたＶＦ２０９（ＶＦ−１〜ＶＦ−ｍ）に対応してＶＦ２１０が割り当てられ、ゲストＯＳ１０４には、ＶＦドライバ２１１がインストールされる。
【００３１】
ゲストＯＳ１０４は、仮想サーバ１０５の仮想リソースを通常のリソースとして認識し、例えば、ＶＦ２１０を介して、Ｆｌａｓｈ１１０、ネットワーク１１１などに接続される。付言するならば、ハイパバイザ１０３がＶＦ２０９のリソースをＶＦ２１０として仮想サーバ１０５に割り当て、仮想サーバ１０５上のゲストＯＳ１０４に設けられるＶＦドライバ２１１により、ＶＦ２１０、ＶＦ２０９、およびＰＦ２０８を介して、Ｆｌａｓｈ１１０にＩ／Ｏコマンドが送信されたり（データ領域２０５のデータの読み書きが行われたり）、外部との通信が行われたりする。
【００３２】
また物理ノード１００には、フラッシュドライバ１０１が設けられる。フラッシュドライバ１０１は、仮想サーバ１０５のＩ／Ｏ要求をポーリングにより取得するＩ／Ｏポーリング部２００と、Ｉ／Ｏポーリング部２００で取得されたＩ／Ｏ要求を分析するＩ／Ｏ分析部２０１と、Ｉ／Ｏ分析部２０１の分析結果に基づいてＷｒｉｔｅキューを制御するキューコントローラ部２０２とを備える。
【００３３】
Ｉ／Ｏポーリング部２００は、ＶＦ２０９を管理するＰＦ２０８を監視（モニタリング）し、仮想サーバ１０５のＩ／Ｏ要求を取得する。
【００３４】
Ｉ／Ｏ分析部２０１は、Ｉ／Ｏの発行先となるＦｌａｓｈ１１０を特定可能な情報を記憶するデータ管理テーブル２０３と、ＥＣ処理の実行可否を判定可能な情報を記憶するＥＣ利用管理テーブル２０４とを備える。Ｉ／Ｏ分析部２０１は、データ管理テーブル２０３の情報と、ＥＣ利用管理テーブル２０４の情報とに基づいて、仮想サーバ１０５からのＩ／Ｏ要求を分析し、ＥＣ処理の実行可否を判定等する。なお、データ管理テーブル２０３については図３を用いて後述し、ＥＣ利用管理テーブル２０４については図４を用いて後述する。
【００３５】
キューコントローラ部２０２は、コントローラ部の一例であり、Ｉ／Ｏ分析部２０１の判定結果に基づいて、例えばＩ／Ｏ分析部２０１でＥＣ処理を実行すると判定された場合、Ｉ／Ｏ要求に係るデータをキューに格納（キューイング）し、適宜のタイミングでＥＣ１０２に送信する。
【００３６】
また物理ノード１００には、ＥＣ処理を実行するＥＣ１０２が設けられる。ＥＣ１０２は、データ冗長化機構の一例であり、ＥＣ処理において、（データ領域２０５に格納される）オリジナルデータからパリティを生成し、生成したパリティおよびオリジナルデータのフラグメント（以下「冗長化データ」と総称する。）を分散して保存する。より具体的には、ＥＣ１０２は、キューコントローラ部２０２から送信されたデータ（オリジナルデータ）をデータ領域２０５に格納し、当該データを符号化した冗長化データを所定のＦｌａｓｈ１１０の冗長化データ領域２０６に格納する。
【００３７】
例えば、仮想サーバ１０５においてＩ／Ｏ要求としてＷｒｉｔｅ要求が発生し、ＥＣ処理を実行すると判定される場合、ＶＦ２０９（ＰＦ２０８）は、Ｗｒｉｔｅ対象のデータを書き込むためのＷｒｉｔｅコマンドを仮想サーバ１０５に対応付けられたＦｌａｓｈ１１０に送信し、当該Ｆｌａｓｈ１１０は、Ｗｒｉｔｅ対象のデータをデータ領域２０５に書き込む。他方、ＥＣ１０２は、キューコントローラ部２０２より適宜のタイミングでＷｒｉｔｅ要求のデータを含むデータを受け取り、当該データから冗長化データを生成し、冗長化データを書き込むためのＷｒｉｔｅコマンドを上記Ｆｌａｓｈ１１０とは異なる他のＦｌａｓｈ１１０に送信し、他のＦｌａｓｈ１１０は、冗長化データを冗長化データ領域２０６に書き込む。
【００３８】
図３は、データ管理テーブル２０３の一例を示す図である。データ管理テーブル２０３は、物理ノード１００のコンソール等の入出力装置（図示せず。）、管理サーバ１１２などを介して入力される、Ｉ／Ｏ要求の発行先となるＦｌａｓｈ１１０を特定可能な情報を格納する。
【００３９】
より具体的には、データ管理テーブル２０３には、Ｎｏｄｅ＃３０１、ＶＭ＃３０２、ＨｏｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ３０３、ＧｕｅｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ３０４、およびＤａｔａＳｔｏｒｅｄＡｒｅａ３０５の情報が対応付けられて格納される。Ｎｏｄｅ＃３０１には、物理ノード１００を識別可能な情報が格納される。ＶＭ＃３０２には、仮想サーバ１０５を識別可能な情報が格納される。ＨｏｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ３０３には、物理ノード１００から見たメモリ１０６のホストメモリアドレスを示す情報が格納される。ＧｕｅｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ３０４には、ゲストＯＳ１０４から見た仮想メモリ（メモリ１０６で該当領域を仮想サーバ１０５に対して論理的に割り当てたメモリ領域）のアドレスを示す情報が格納される。ＤａｔａＳｔｏｒｅｄＡｒｅａ３０５には、データ領域２０５があるＦｌａｓｈ１１０を識別可能な情報が格納される。ここでの識別可能な情報とは、例えば、任意の通し番号でもよいし、各々を区別できる記号や識別子でもよい。
【００４０】
図４は、ＥＣ利用管理テーブル２０４の一例を示す図である。ＥＣ利用管理テーブル２０４は、物理ノード１００のコンソール等の入出力装置（図示せず。）、管理サーバ１１２などを介して入力される、ＥＣ処理の実行可否を判定可能な情報を格納する。
【００４１】
より具体的には、ＥＣ利用管理テーブル２０４には、Ｎｏｄｅ＃４０１、ＶＭ＃４０２、ＨｏｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ４０３、ＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４、ＤａｔａＰａｔｈ４０５、およびＥＣ  Ｆｌａｇ４０６の情報が対応付けられて格納される。Ｎｏｄｅ＃４０１には、物理ノード１００を識別可能な情報が格納される。ＶＭ＃４０２には、仮想サーバ１０５を識別可能な情報が格納される。ＨｏｓｔＭｅｍｏｒｙＡｄｄｒｅｓｓ４０３には、物理ノード１００から見たメモリ１０６のホストメモリアドレスを示す情報が格納される。ＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４には、データのアクセス方式を識別可能な情報が格納される。ＥＣ  Ｆｌａｇ４０６には、ＥＣ処理の実行可否を示す情報が格納される。ここでの識別可能な情報とは、例えば、任意の通し番号でもよいし、各々を区別できる記号や識別子でもよい。
【００４２】
ここで、ＥＣ  Ｆｌａｇ４０６の情報は、仮想サーバ１０５（ＶＭ＃４０２）と仮想サーバ１０５のデータアクセス方式（ＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４）と仮想サーバ１０５が使用するファイルパス（ＤａｔａＰａｔｈ４０５）とに対応して設けられる構成を示したが、この構成に限られるものではない。例えば、仮想サーバ１０５に対応して設けられてもよい（ＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４およびＤａｔａＰａｔｈ４０５の情報が設けられていなくてもよい）。また例えば、仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式とに対応して設けられてもよい（ＤａｔａＰａｔｈ４０５の情報が設けられていなくてもよい）。また例えば、仮想サーバ１０５と仮想サーバ１０５が使用するファイルパスとに対応して設けられてもよい（ＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４の情報が設けられていなくてもよい）。
【００４３】
本例では、データアクセス方式として、オブジェクト単位でのアクセスを可能にする「Ｏｂｊｅｃｔ」、ブロック単位でのアクセスを可能にする「Ｂｌｏｃｋ  Ｄｅｖｉｃｅ」、ファイル単位でのアクセスを可能にする「Ｆｉｌｅ  Ｓｙｓｔｅｍ」を示しているが、他のデータアクセス方式であってもよい。
【００４４】
図５は、仮想サーバ１０５にてＲｅａｄ要求が発生したときに行われるＲｅａｄ処理に係る概念図である。
【００４５】
仮想サーバ１０５にて発生したＩ／Ｏ要求について、ＶＦドライバ２１１は、ハイパバイザ１０３を介さずに、直接ＶＦ２０９にＩ／Ｏ要求を送信する。フラッシュドライバ１０１は、当該Ｉ／Ｏ要求がＲｅａｄ要求であるかＷｒｉｔｅ要求であるかを判定し、Ｒｅａｄ要求であると判定した場合、ＶＦ２０９は、Ｆｌａｓｈ１１０に対してＲｅａｄ要求（ＲｅａｄＳＱ：Ｒｅａｄ  Ｓｅｎｄ  Ｑｕｅｕｅ）を送信（Ｒｅａｄコマンドを発行）し、Ｒｅａｄ完了（ＲｅａｄＣＱ：Ｒｅａｄ  Ｃｏｍｐｌｅｔｅ  Ｑｕｅｕｅ）を受信することで、仮想サーバ１０５に対応付けられているＦｌａｓｈ１１０のデータ領域２０５からＲｅａｄ対象のデータを取得する。
【００４６】
図６は、仮想サーバ１０５にてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理に係る概念図である。
【００４７】
仮想サーバ１０５にて発生したＩ／Ｏ要求について、ＶＦドライバ２１１は、ハイパバイザ１０３を介さずに、直接ＶＦ２０９にＩ／Ｏ要求を送信する。フラッシュドライバ１０１は、当該Ｉ／Ｏ要求がＲｅａｄ要求であるかＷｒｉｔｅ要求であるかを判定し、Ｗｒｉｔｅ要求であると判定した場合、ＥＣ利用管理テーブル２０４を参照してＥＣ処理の実行可否を判定する。フラッシュドライバ１０１は、ＥＣ処理を実行すると判定した場合、Ｗｒｉｔｅ要求をＥＣ１０２に通知し、ＥＣ１０２は、Ｗｒｉｔｅ対象のデータについてＥＣ処理を行い、ＥＣ処理後のデータ（冗長化データ）を所定のＦｌａｓｈ１１０の冗長化データ領域２０６に書き込む。
【００４８】
また、フラッシュドライバ１０１によりＷｒｉｔｅ要求であると判定された場合、ＶＦ２０９は、Ｆｌａｓｈ１１０に対してＷｒｉｔｅ要求（ＷｒｉｔｅＳＱ：Ｗｒｉｔｅ  Ｓｅｎｄ  Ｑｕｅｕｅ）を送信（Ｗｒｉｔｅコマンドを発行）し、Ｗｒｉｔｅ完了（ＷｒｉｔｅＣＱ：Ｗｒｉｔｅ  Ｃｏｍｐｌｅｔｅ  Ｑｕｅｕｅ）を受信することで、仮想サーバ１０５に対応付けられているＦｌａｓｈ１１０のデータ領域２０５にＷｒｉｔｅ対象のデータを書き込む。
【００４９】
図７は、仮想サーバ１０５にてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理の詳細に係る概念図であり、特にフラッシュドライバ１０１の処理の詳細に係る概念図である。
【００５０】
フラッシュドライバ１０１のＩ／Ｏポーリング部２００は、ＶＦ２０９を管理するＰＦ２０８をポーリング（監視）し、仮想サーバ１０５にて発生したＩ／Ｏ要求を取得した場合、取得したＩ／Ｏ要求をＩ／Ｏ分析部２０１に通知する。
【００５１】
Ｉ／Ｏ分析部２０１は、データ管理テーブル２０３を参照してＩ／Ｏ要求の発行先となるＦｌａｓｈ１１０を特定し、当該Ｉ／Ｏ要求がＲｅａｄ要求であるかＷｒｉｔｅ要求であるかを判定し、Ｗｒｉｔｅ要求であると判定した場合、ＥＣ利用管理テーブル２０４のＥＣ  Ｆｌａｇ４０６を参照してＥＣ処理の実行可否を判定する。
【００５２】
Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行させると判定した場合、キューコントローラ部２０２にＩ／Ｏ要求と発行先となるＦｌａｓｈ１１０の情報とを通知する。
【００５３】
キューコントローラ部２０２は、Ｉ／Ｏ要求に対応するＷｒｉｔｅＱｕｅｕｅを生成してキューに入れ、所定のデータ量または所定数のＷｒｉｔｅＱｕｅｕｅが溜まると割込みを発生させて、ＥＣ１０２にＷｒｉｔｅコマンドを送信する。
【００５４】
なお、複数のＷｒｉｔｅ要求をまとめてＥＣ処理が行われるように、ＷｒｉｔｅＱｕｅｕｅをキューに格納する構成を示したが、この構成に限られるものではない。例えば、Ｗｒｉｔｅ要求を溜めることなく、Ｗｒｉｔｅ要求ごとにＥＣ処理が行われるように構成してもよい。また、例えば、仮想サーバ１０５ごとにキューを設け、同じ仮想サーバ１０５のＷｒｉｔｅ要求をまとめてＥＣ処理が行われるように、ＷｒｉｔｅＱｕｅｕｅをキューに格納する構成としてもよい。
【００５５】
ＥＣ１０２は、Ｗｒｉｔｅコマンドを受信すると、ＥＣ処理を行い、１または複数の冗長化データ（本例では、フラグメント「Ｄ１」、フラグメント「Ｄ２」、およびパリティ「Ｅ１」）を生成し、生成した冗長化データをデータ領域２０５が設けられていないＦｌａｓｈ１１０の冗長化データ領域２０６に格納する。この際、ＥＣ処理としては、例えば、上述の特許文献１に記載の技術を適用することができる。なお、データ領域２０５が設けられているＦｌａｓｈ１１０に一部または全部の冗長化データを格納するように構成してもよい。
【００５６】
また、Ｉ／Ｏ分析部２０１によりＷｒｉｔｅ要求であると判定された場合、ＶＦ２０９は、Ｆｌａｓｈ１１０に対してＷｒｉｔｅ要求を送信することで、仮想サーバ１０５に対応付けられているＦｌａｓｈ１１０のデータ領域２０５にＷｒｉｔｅ対象のデータを書き込む。
【００５７】
図８は、ＥＣ処理実行可否判定処理に係る処理内容の一例を示す。
【００５８】
まず、Ｉ／Ｏポーリング部２００は、仮想サーバ１０５のＩ／Ｏ要求を取得し、Ｉ／Ｏ分析部２０１に通知する（ステップＳ８０１）。
【００５９】
続いて、Ｉ／Ｏ分析部２０１は、仮想サーバ１０５のＩ／Ｏ要求のパケット内容を解析し、Ｉ／Ｏ要求がＲｅａｄ要求であるか否かを判定する（ステップＳ８０２）。このとき、Ｉ／Ｏ分析部２０１は、Ｒｅａｄ要求であると判定した場合、ステップＳ８０５に処理を移し、Ｒｅａｄ要求でないと判定した場合、ステップＳ８０３に処理を移す。
【００６０】
ステップＳ８０３では、Ｉ／Ｏ分析部２０１は、仮想サーバ１０５のＩ／Ｏ要求のパケット内容を解析し、仮想サーバ１０５を特定し、仮想サーバ１０５に対応するＥＣ利用管理テーブル２０４のＥＣ  Ｆｌａｇ４０６の値を参照し、値が「０」であるか否かを判定する。このとき、Ｉ／Ｏ分析部２０１は、値が「０」（ＥＣ処理を実行しないことを示す値）であると判定した場合、ステップＳ８０５に処理を移し、値が「０」でない、値が「１」（ＥＣ処理を実行することを示す値）であると判定した場合、ステップＳ８０４に処理を移す。
【００６１】
なお、ＥＣ  Ｆｌａｇ４０６の値が仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式とに対応して設けられている場合、例えば、Ｉ／Ｏ分析部２０１は、仮想サーバ１０５のＩ／Ｏ要求のパケット内容を解析し、仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式とを特定し、仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式とに対応するＥＣ利用管理テーブル２０４のＥＣ  Ｆｌａｇ４０６の値を参照する。
【００６２】
また、ＥＣ  Ｆｌａｇ４０６の値が仮想サーバ１０５と仮想サーバ１０５が使用するファイルパスとに対応して設けられている場合、例えば、Ｉ／Ｏ分析部２０１は、仮想サーバ１０５のＩ／Ｏ要求のパケット内容を解析し、仮想サーバ１０５と仮想サーバ１０５が使用するファイルパスとを特定し、仮想サーバ１０５と仮想サーバ１０５が使用するファイルパスとに対応するＥＣ利用管理テーブル２０４のＥＣ  Ｆｌａｇ４０６の値を参照する。
【００６３】
また、ＥＣ  Ｆｌａｇ４０６の値が仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式と仮想サーバ１０５が使用するファイルパスとに対応して設けられている場合、例えば、Ｉ／Ｏ分析部２０１は、仮想サーバ１０５のＩ／Ｏ要求のパケット内容を解析し、仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式と仮想サーバ１０５が使用するファイルパスとを特定し、仮想サーバ１０５と仮想サーバ１０５のデータアクセス方式と仮想サーバ１０５が使用するファイルパスとに対応するＥＣ利用管理テーブル２０４のＥＣ  Ｆｌａｇ４０６の値を参照する。
【００６４】
ステップＳ８０４では、キューコントローラ部２０２は、適宜のタイミングで割込みを発生させてＥＣ１０２にＷｒｉｔｅコマンドを送信し、ステップＳ８０５に処理を移す。
【００６５】
ステップＳ８０５では、フラッシュドライバ１０１は、ＶＦ２０９からＦｌａｓｈ１１０にＩ／Ｏ要求に対応するＩ／Ｏコマンドを送信させ、Ｉ／Ｏ処理を終了する。より具体的には、ＶＦ２０９は、仮想サーバ１０５のＩ／Ｏ要求がＲｅａｄ要求である場合、Ｒｅａｄ対象のデータの読込み先のＦｌａｓｈ１１０にＲｅａｄコマンドを送信し、仮想サーバ１０５のＩ／Ｏ要求がＷｒｉｔｅ要求である場合、Ｗｒｉｔｅ対象のデータの書込み先のＦｌａｓｈ１１０にＷｒｉｔｅコマンドを送信する。
【００６６】
付言するならば、ステップＳ８０５の処理は、ステップＳ８０２〜ステップＳ８０４の処理の後に行われる構成に限られるものではなく、ＶＦ２０９がＶＦドライバ２１１からＩ／Ｏ要求を受け取ったときに、フラッシュドライバ１０１の処理とは非同期に行われてもよい。
【００６７】
上述した本実施の形態によれば、物理ノード１００では、Ｉ／Ｏ処理を物理ＮＩＣ１０９にオフロードすることでハイパバイザ１０３によるオーバヘッドを削減しつつ、Ｉ／Ｏ要求をフラッシュドライバ１０１にて分析することでＩ／Ｏ要求ごとにＥＣ処理を制御できるので、Ｉ／Ｏ処理の高速化とデータ冗長化とを並立することができる。
【００６８】
（２）第２の実施の形態
本実施の形態では、仮想サーバ１０５のＷｒｉｔｅ要求時、データアクセス方式に基づいてＥＣ処理の実行可否を判定し、ＥＣ処理を実行しない場合、Ｗｒｉｔｅ対象のデータを中間データとして中間データ領域９００に格納する点が第１の実施の形態と異なるので、その点について主に説明する。
【００６９】
図９は、仮想サーバ１０５にてＷｒｉｔｅ要求が発生したときに行われるＷｒｉｔｅ処理に係る概念図である。
【００７０】
仮想サーバ１０５にて発生したＩ／Ｏ要求について、ＶＦドライバ２１１は、ハイパバイザ１０３を介さずに、直接ＶＦ２０９にＩ／Ｏ要求を送信する。
【００７１】
ここで、フラッシュドライバ１０１は、仮想サーバ１０５にて発生したＩ／Ｏ要求を取得した場合、ＥＣ利用管理テーブル２０４を参照してＥＣ処理の実行可否を判定する。より具体的には、フラッシュドライバ１０１は、仮想サーバ１０５のデータアクセス方式がＥＣ実行条件として指定されたデータアクセス方式であるか否かを判定する。
【００７２】
フラッシュドライバ１０１は、仮想サーバ１０５のデータアクセス方式がＥＣ実行条件として指定されたデータアクセス方式であると判定した場合、ＥＣ処理を行うようにＥＣ１０２にＷｒｉｔｅコマンドを送信する。また、ＶＦ２０９は、Ｆｌａｓｈ１１０に対してＷｒｉｔｅ要求を送信することで、仮想サーバ１０５に対応付けられているＦｌａｓｈ１１０のデータ領域２０５にＷｒｉｔｅ対象のデータを書き込む。
【００７３】
他方、フラッシュドライバ１０１は、仮想サーバ１０５のデータアクセス方式がＥＣ実行条件として指定されていないデータアクセス方式であると判定した場合、ＥＣ処理を行うように指示することなく、Ｗｒｉｔｅ対象のデータを中間データとして書き込む仮想サーバ１０５に対応して設けられる中間データ領域９００のあるＦｌａｓｈ１１０にＷｒｉｔｅコマンドを送信することで、当該中間データ領域９００にＷｒｉｔｅ対象のデータを中間データとして書き込む。
【００７４】
なお、詳細は後述するが、第３の実施の形態では、データアクセス方式に替えてデータパス形式を用いてＥＣ処理の実行可否を判定し、第４の実施の形態では、データアクセス方式に加えてデータパス形式を用いてＥＣ処理の実行可否を判定する。
【００７５】
図１０は、ＥＣ処理実行可否判定処理に係る処理内容の一例を示す。なお、ステップＳ１００１〜ステップＳ１００３、およびステップＳ１００６は、ステップＳ８０１、ステップＳ８０２、ステップＳ８０４、およびステップＳ８０５と同様の処理であるので、その説明を省略する。
【００７６】
ステップＳ１００４では、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５を特定し、少なくとも仮想サーバ１０５とデータアクセス方式とが対応付けられた情報を格納するＥＣ利用管理テーブル２０４より対象情報、より具体的には仮想サーバ１０５に対応するＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４の値（値は、１つしか設定されていないこともあるし、複数設定されていることもある。）を取得する。
【００７７】
続いて、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５のデータアクセス方式を特定し、仮想サーバ１０５のデータアクセス方式がＥＣ処理を実行すると指定（設定）されたデータアクセス方式（ステップＳ１００４で取得した値：本例では、「Ｏｂｊｅｃｔ」または「Ｆｉｌｅ  Ｓｙｓｔｅｍ」）であるか否かを判定する（ステップＳ１００５）。このとき、Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行すると指定されたデータアクセス方式であると判定した場合、ステップＳ１００６に処理を移し、ＥＣ処理を実行すると指定されたデータアクセス方式でないと判定した場合、ステップＳ１００７に処理を移す。
【００７８】
ステップＳ１００７では、キューコントローラ部２０２は、Ｗｒｉｔｅ対象のデータを中間データとして書き込む仮想サーバ１０５に対応して設けられる中間データ領域９００のあるＦｌａｓｈ１１０にＷｒｉｔｅコマンドを送信し、処理を終了する。
【００７９】
なお、中間データ領域９００のあるＦｌａｓｈ１１０については、仮想サーバ１０５と中間データ領域９００とが対応付けられる情報がメモリ１０６の所定の領域に記憶され、当該情報を用いて決定されていてもよいし、データ管理テーブル２０３に基づいてＩ／Ｏ要求の発行先となるＦｌａｓｈ１１０が特定され、特定されたＦｌａｓｈ１１０以外のＦｌａｓｈ１１０が決定されてもよいし、その他の方法により決定されてもよい。
【００８０】
上述した本実施の形態によれば、第１の実施の形態の効果を奏すると共に、仮想サーバ１０５のデータアクセス方式ごとにＥＣ処理を制御できるので、データアクセス方式に基づいてＥＣ処理が必要なデータ（実データとして書き込みたいデータ）と不要なデータ（分析用のデータ等として一時的に保管したい中間データ）とを切り分けてデータ冗長化を行うことができる。更に、上述した本実施の形態によれば、仮想サーバ１０５のデータアクセス方式に基づいてＥＣ処理が必要なデータと不要なデータとを切り分けて異なるＦｌａｓｈ１１０に記憶させることができる。
【００８１】
（３）第３の実施の形態
本実施の形態では、Ｗｒｉｔｅ要求時、データパスに基づいてＥＣ処理の実行可否を判定し、ＥＣ処理を実行しない場合、Ｗｒｉｔｅ対象のデータを中間データとして中間データ領域９００に格納する点が第１の実施の形態と異なるので、その点について主に説明する。
【００８２】
図１１は、ＥＣ処理実行可否判定処理に係る処理内容の一例を示す。なお、ステップＳ１１０１〜ステップＳ１１０３、およびステップＳ１１０６は、ステップＳ８０１、ステップＳ８０２、ステップＳ８０４、およびステップＳ８０５と同様の処理であるので、その説明を省略する。
【００８３】
ステップＳ１１０４では、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５を特定し、少なくとも仮想サーバ１０５とデータパスとが対応付けられた情報を格納するＥＣ利用管理テーブル２０４より対象情報、より具体的には仮想サーバ１０５に対応するＤａｔａＰａｔｈ４０５の値（値は、１つしか設定されていないこともあるし、複数設定されていることもある。）を取得する。
【００８４】
続いて、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５が使用するデータバスを特定し、仮想サーバ１０５が使用するデータパスがＥＣ処理を実行すると指定（設定）されたデータパス（ステップＳ１１０４で取得した値：本例では、「／ｄｅｖ／ｅｃｐｏｏｌ」）であるか否かを判定する（ステップＳ１１０５）。このとき、Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行すると指定されたデータパスであると判定した場合、ステップＳ１１０６に処理を移し、ＥＣ処理を実行すると指定されたデータパスでないと判定した場合、ステップＳ１１０７に処理を移す。
【００８５】
ステップＳ１１０７では、キューコントローラ部２０２は、Ｗｒｉｔｅ対象のデータを中間データとして書き込む仮想サーバ１０５に対応して設けられる中間データ領域９００のあるＦｌａｓｈ１１０にＷｒｉｔｅコマンドを送信し、処理を終了する。
【００８６】
上述した本実施の形態によれば、第１の実施の形態の効果を奏すると共に、仮想サーバ１０５が使用するデータパスごとにＥＣ処理を制御できるので、データパスに基づいてＥＣ処理が必要なデータ（実データとして書き込みたいデータ）と不要なデータ（分析用のデータ等として一時的に保管したい中間データ）とを切り分けてデータ冗長化を行うことができる。更に、上述した本実施の形態によれば、仮想サーバ１０５が使用するデータパスに基づいてＥＣ処理が必要なデータと不要なデータとを切り分けて異なるＦｌａｓｈ１１０に記憶させることができる。
【００８７】
（４）第４の実施の形態
本実施の形態では、Ｗｒｉｔｅ要求時、仮想サーバ１０５のデータアクセス方式および仮想サーバ１０５が使用するデータパスに基づいてＥＣ処理の実行可否を判定し、ＥＣ処理を実行しない場合、Ｗｒｉｔｅ対象のデータを中間データとして中間データ領域９００に格納する点が第１の実施の形態と異なるので、その点について主に説明する。
【００８８】
図１２は、ＥＣ処理実行可否判定処理に係る処理内容の一例を示す。なお、ステップＳ１２０１〜ステップＳ１２０３、およびステップＳ１２０７は、ステップＳ８０１、ステップＳ８０２、ステップＳ８０４、およびステップＳ８０５と同様の処理であるので、その説明を省略する。
【００８９】
ステップＳ１２０４では、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５を特定し、少なくとも仮想サーバ１０５とデータアクセス方式およびデータパスとが対応付けられた情報を格納するＥＣ利用管理テーブル２０４より対象情報、より具体的には仮想サーバ１０５に対応するＤａｔａＡｃｃｅｓｓＭｅｔｈｏｄ４０４の値、および仮想サーバ１０５に対応するＤａｔａＰａｔｈ４０５の値を取得する。
【００９０】
続いて、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５のデータアクセス方式を特定し、仮想サーバ１０５のデータアクセス方式がＥＣ処理を実行すると指定（設定）されたデータアクセス方式（ステップＳ１２０４で取得した値：本例では、「Ｏｂｊｅｃｔ」または「Ｆｉｌｅ  Ｓｙｓｔｅｍ」）であるか否かを判定する（ステップＳ１２０５）。このとき、Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行すると指定されたデータアクセス方式であると判定した場合、ステップＳ１２０６に処理を移し、ＥＣ処理を実行すると指定されたデータアクセス方式でないと判定した場合、ステップＳ１２０８に処理を移す。
【００９１】
ステップＳ１２０６では、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５が使用するデータパスを特定し、仮想サーバ１０５が使用するデータパスがＥＣ処理を実行しないと指定（設定）されたデータパス（本例では、「／ｄｅｖ／ｎｏｒｍａｌ」）であるか否かを判定する。このとき、Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行しないと指定されたデータパスであると判定した場合、ステップＳ１２０３に処理を移し、ＥＣ処理を実行しないと指定されたデータパスでないと判定した場合、ステップＳ１２０７に処理を移す。
【００９２】
ステップＳ１２０８では、Ｉ／Ｏ分析部２０１は、Ｉ／Ｏ要求を分析して仮想サーバ１０５が使用するデータパスを特定し、仮想サーバ１０５が使用するデータパスがＥＣ処理を実行すると指定（設定）されたデータパス（ステップＳ１２０４で取得した値：本例では、「／ｄｅｖ／ｅｃｐｏｏｌ」）であるか否かを判定する。このとき、Ｉ／Ｏ分析部２０１は、ＥＣ処理を実行すると指定されたデータパスであると判定した場合、ステップＳ１２０７に処理を移し、ＥＣ処理を実行すると指定されたデータパスでないと判定した場合、ステップＳ１２０９に処理を移す。
【００９３】
ステップＳ１２０９では、キューコントローラ部２０２は、Ｗｒｉｔｅ対象のデータを中間データとして書き込む仮想サーバ１０５に対応して設けられる中間データ領域９００のあるＦｌａｓｈ１１０にＷｒｉｔｅコマンドを送信し、処理を終了する。
【００９４】
上述した本実施の形態によれば、第１の実施の形態の効果を奏すると共に、仮想サーバ１０５のデータアクセス方式および仮想サーバ１０５が使用するデータパスごとにＥＣ処理を制御できるので、データアクセス方式およびデータパスに基づいてＥＣ処理が必要なデータ（実データとして書き込みたいデータ）と不要なデータ（分析用のデータ等として一時的に保管したい中間データ）とを詳細に切り分けてデータ冗長化を行うことができる。更に、上述した本実施の形態によれば、仮想サーバ１０５のデータアクセス方式および仮想サーバ１０５が使用するデータバスに基づいてＥＣ処理が必要なデータと不要なデータとを切り分けて異なるＦｌａｓｈ１１０に記憶させることができる。
【００９５】
（５）第５の実施の形態
本実施の形態では、上述した実施の形態のＥＣ利用管理テーブル２０４の情報を、管理画面を介して設定する点について説明する。
【００９６】
図１３は、管理サーバ１１２におけるＥＣ処理実行可否の設定処理に係る処理内容の一例を示す。
【００９７】
まず、管理サーバ１１２は、管理画面（例えば、図１４に示す仮想サーバ１０５の設定画面１４００）を介して、仮想サーバ１０５の構成情報（仮想リソースに係る情報）をユーザによる入力デバイス（図示せず。）の操作（ユーザ操作）に基づいて入力する（ステップＳ１３０１）。
【００９８】
続いて、管理サーバ１１２は、管理画面を介して、ＥＣ１０２の利用条件（ＥＣ処理の実行可否を識別可能な情報）をユーザ操作に基づいて入力する（ステップＳ１３０２）。
【００９９】
続いて、管理サーバ１１２は、ＥＣ利用管理テーブル２０４を記憶デバイス（図示せず。）に記憶（更新）する（ステップＳ１３０３）。
【０１００】
続いて、管理サーバ１１２は、ＥＣ利用管理テーブル２０４を物理ノード１００（フラッシュドライバ１０１）に送信し（ステップＳ１３０４）、処理を終了する。
【０１０１】
なお、管理サーバ１１２に記憶されるＥＣ利用管理テーブル２０４を更新する場合、または物理ノード１００によりＥＣ利用管理テーブル２０４が更新される構成を採用する場合、管理サーバ１１２は、ステップＳ１３０１の前に、最新のＥＣ利用管理テーブル２０４を取得する。
【０１０２】
図１４は、仮想サーバ１０５の構成情報およびＥＣ１０２の利用条件を管理するための管理画面の一例（仮想サーバ１０５の設定画面１４００）を示す図である。
【０１０３】
図１４に示すように、設定画面１４００では、仮想サーバ１０５の構成情報として、ＶＭ名称、ＣＰＵコア数、およびメモリ容量の情報を入力可能（設定可能）である。
【０１０４】
また、設定画面１４００では、仮想サーバ１０５の構成情報として、デバイス割当（Ｆｌａｓｈ１１０の割当）を行い、デバイス（「／ｄｅｖ／ｓｄａ」、「／ｄｅｖ／ｓｄｂ」等）ごとにデバイス名称（「／ｄｅｖ／ｅｃｐｏｏｌ０」、「／ｄｅｖ／ｎｏｒｍａｌ０」等）を入力可能である。この際、ユーザは、データパスに対応するようにデバイス名称を入力する。
【０１０５】
また、設定画面１４００では、ＥＣ実行条件として、仮想サーバ１０５においてＥＣ処理を利用するか否かを決定するためのＥＣ使用、ＥＣ処理の実行を行う対象を指定するためのデータアクセス方式、ＥＣ処理の実行を行う対象を指定するためのデータパスの情報を入力可能である。例えば、仮想サーバ１０５においてＥＣ処理を行いたい場合、ＥＣ使用にチェックを入れることで、データアクセス方式およびデータパスの入力欄が表示され、所望の条件を設定可能となる。
【０１０６】
本実施の形態によれば、上述した実施の形態の効果を奏すると共に、ＥＣ処理の実行可否を判定するための情報が管理画面に表示されるので、ユーザは、ＥＣ処理に係る設定を容易に行うことができるようになる。
【０１０７】
（６）他の実施の形態
なお上述の第１〜第５の実施の形態においては、本発明をＩ／Ｏ制御システム１に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のＩ／Ｏ制御システムに広く適用することができる。
【０１０８】
また上述の第１〜第５の実施の形態において、物理ノード１００の仮想環境としては、ハイパバイザ型、ホストＯＳ型、ＫＶＭ型など、様々な仮想環境を適用することができる。
【０１０９】
また上述の第１〜第５の実施の形態においては、フラッシュドライバ１０１をメモリ１０６に設ける場合について述べたが、本発明はこれに限らず、フラッシュドライバ１０１を回路等として物理ＮＩＣ１０９に設けるようにしてもよい。
【０１１０】
また上述の第１〜第５の実施の形態においては、Ｉ／Ｏポーリング部２００によりＩ／Ｏ要求を取得する場合について述べたが、本発明はこれに限らず、Ｉ／Ｏ要求が発行されるごとにＩ／Ｏ要求を受信するＩ／Ｏ受信部を物理ノード１００に設け、Ｉ／Ｏ受信部によりＩ／Ｏ要求を取得するようにしてもよい。Ｉ／Ｏ受信部は、ソフトウェアにより実現されてもよいし、ハードウェアにより実現されてもよい。
【０１１１】
また上述の第１〜第５の実施の形態においては、ＰＦ２０８がＶＦ２０９を管理し、Ｉ／Ｏポーリング部２００がＰＦ２０８をポーリングする場合について述べたが、本発明はこれに限らず、ＶＦ２０９を管理するＰＦ２０８とは異なるハードウェアをＩ／Ｏポーリング部２００がポーリングするようにしてもよい。
【０１１２】
また上述の第１〜第５の実施の形態においては、冗長化データを一の物理ノードに格納する場合について述べたが、本発明はこれに限らず、冗長化データを１または複数の他の物理ノードに格納するようにしてもよい。
【０１１３】
また上述の第５の実施の形態においては、仮想サーバ１０５の構成情報およびＥＣ１０２の利用条件を管理サーバ１１２が入力する場合について述べたが、本発明はこれに限らず、仮想サーバ１０５の構成情報を管理サーバ１１２が入力し、物理ノード１００（例えばフラッシュドライバ１０１）が当該構成情報に基づいてＥＣ１０２の利用条件を入力するようにしてもよい。
【符号の説明】
【０１１４】
１……Ｉ／Ｏ制御システム、１００……物理ノード、１０１……フラッシュドライバ、１０２……ＥＣ、１０３……ハイパバイザ、１０４……ゲストＯＳ、１０５……仮想サーバ、１０６……メモリ、１０７……ＣｈｉｐＳｅｔ、１０８……ＣＰＵ、１０９……物理ＮＩＣ、１１０……Ｆｌａｓｈ、１１１……ネットワーク、１１２……管理サーバ
【図１】
0006653786.tif 000002
【図２】
0006653786.tif 000003
【図３】
0006653786.tif 000004
【図４】
0006653786.tif 000005
【図５】
0006653786.tif 000006
【図６】
0006653786.tif 000007
【図７】
0006653786.tif 000008
【図８】
0006653786.tif 000009
【図９】
0006653786.tif 000010
【図１０】
0006653786.tif 000011
【図１１】
0006653786.tif 000012
【図１２】
0006653786.tif 000013
【図１３】
0006653786.tif 000014
【図１４】
0006653786.tif 000015