(57)【要約】【課題】仮想マシン（ＶＭ）と、ＶＭにサービス提供するストレージデバイスとの間の仲介役としてのハイパーバイザの立場を利用して、ＶＭの全体的なＩ／Ｏ性能の改善を促進する、入力／出力動作（ＩＯ）のための管理技法を提供すること。【解決手段】このＩ／Ｏ管理技法では、ハイパーバイザ１１０は、ストレージデバイス用のＶＭ１２０からの書込み要求を、ライトバックモードでＩ／Ｏステージングデバイス１３０にキャッシュするために、ストレージデバイス１４１、１４２よりも高いＩ／Ｏ性能を提供するＩ／Ｏステージングデバイス１３０に送る。Ｉ／Ｏステージングデバイスが書込み要求を受け取り、これに肯定応答すると、ハイパーバイザは直ちに肯定応答を要求元のＶＭに提供する。その後、ＶＭからの書込み要求に対して非同期的に、ハイパーバイザは、Ｉ／Ｏステージングデバイスから書込みデータを読み取り、その書込みデータをストレージデバイスに送り、記憶する。【選択図】図１
2014102823.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストコンピュータを有するコンピュータシステムであって、該複数のホストコンピュータの各々が、該ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、コンピュータシステムにおいて、
該複数のホストコンピュータの各々に接続された第１の共有ストレージデバイスと、
該第１の共有ストレージデバイスよりも大きい容量および高い入力／出力遅延を有する第２の共有ストレージデバイスとを備え、
該システムソフトウェアが、該第２の共有ストレージデバイスに書き込まれるデータを、該第１の共有ストレージデバイスにライトバックモードでキャッシュするように構成される、コンピュータシステム。
【請求項２】
前記第１の共有ストレージデバイスにキャッシュされたデータが、データが前記第１の共有ストレージデバイスにキャッシュされた場合に対し、前記システムソフトウェアによって前記第２の共有ストレージデバイスに非同期的にコピーされる、請求項１に記載のコンピュータシステム。
【請求項３】
ＶＭをサポートするシステムソフトウェアが、書込み要求を前記第１の共有ストレージデバイスに出し、前記第１の共有ストレージデバイスから書込み肯定応答を受け取ると、該書込み肯定応答を該ＶＭに転送することによって、該ＶＭの書込み入力／出力動作を処理するように構成される、請求項２に記載のコンピュータシステム。
【請求項４】
ＶＭをサポートするシステムソフトウェアが、読取りデータが前記第１の共有ストレージデバイスにキャッシュされているかどうかに基づいて、読取り要求を前記第１の共有ストレージデバイスおよび前記第２の共有ストレージデバイスのうちの一方に出すことによって、該ＶＭの読取り入力／出力動作を処理するように構成される、請求項２に記載のコンピュータシステム。
【請求項５】
前記複数のホストコンピュータの各々における前記システムソフトウェアが、前記第１の共有ストレージデバイスにキャッシュされたデータを、前記システムソフトウェアがデータを前記第１の共有ストレージデバイスにキャッシュしたレートに基づく第２のレートに実質的に一致した第１のレートで、前記第２の共有ストレージデバイスにコピーするように構成される、請求項２に記載のコンピュータシステム。
【請求項６】
前記第２のレートが、前記システムソフトウェアがデータを前記第１の共有ストレージデバイスにキャッシュした前記レートの移動平均である、請求項５に記載のコンピュータシステム。
【請求項７】
前記第１の共有ストレージデバイスがソリッドステートドライブアレイであり、前記第２の共有ストレージデバイスが回転ディスクベースのストレージアレイである、請求項１に記載のコンピュータシステム。
【請求項８】
第１のホストコンピュータおよび第２のホストコンピュータを含む複数のホストコンピュータを有するコンピュータシステムであって、該複数のホストコンピュータの各々が、該ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、コンピュータシステムにおいて、
該複数のホストコンピュータの各々に接続された第１の共有ストレージデバイスと、
該第１の共有ストレージデバイスよりも大きい容量および高い入力／出力遅延を有し、該ホストコンピュータで動作する該ＶＭ用のデータストアで構成される第２の共有ストレージデバイスとを備え、
各々のホストコンピュータにおける該システムソフトウェアが、該データストアに書き込まれるデータを該第１の共有ストレージデバイスにキャッシュし、該第１の共有ストレージデバイスにキャッシュされた該データを、該システムソフトウェアが該データを該第１の共有ストレージデバイスにキャッシュしたレートに基づく第２のレートに実質的に一致した第１のレートで、該第２の共有ストレージデバイスにコピーするように構成される、コンピュータシステム。
【請求項９】
前記第１のホストコンピュータの前記システムソフトウェアが、すべての前記ホストコンピュータの前記システムソフトウェアによって前記第１のホストコンピュータの前記システムソフトウェアに報告されたレートの平均に基づいて、すべての前記ホストコンピュータに対する前記第２のレートを計算するように構成される、請求項８に記載のコンピュータシステム。
【請求項１０】
前記システムソフトウェアによって報告された各々のレートが、該システムソフトウェアがデータストアに書き込まれるデータを前記第１の共有ストレージデバイスにキャッシュしたレートの移動平均である、請求項９に記載のコンピュータシステム。
【請求項１１】
各々のホストコンピュータにおける前記システムソフトウェアが、別のシステムソフトウェアが故障した場合に、該別のシステムソフトウェアによって前記第１の共有ストレージデバイスにキャッシュされたデータを前記第２の共有ストレージデバイスにコピーするようにさらに構成される、請求項８に記載のコンピュータシステム。
【請求項１２】
前記第１の共有ストレージデバイスにキャッシュされたデータが、最も長く使用されていないか、または最も使用された頻度が少ないポリシーに従ってエビクトされる、請求項８に記載のコンピュータシステム。
【請求項１３】
データが優先順位を用いて前記第１の共有ストレージデバイスにキャッシュされ、該優先順位に従って前記第１の共有ストレージデバイスからエビクトされる、請求項８に記載のコンピュータシステム。
【請求項１４】
第１のＶＭからのデータが、該第１のＶＭに比べて低い優先順位が与えられている第２のＶＭからのデータよりも高い優先順位を用いてキャッシュされる、請求項１３に記載のコンピュータシステム。
【請求項１５】
仮想マシン（ＶＭ）から入力／出力動作（ＩＯ）の書込みデータをキャッシュする方法であって、該方法は、複数のホストコンピュータを有するコンピュータシステムにおいて使用するためのものであり、該複数のホストコンピュータの各々が、該ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、方法において、
該書込みデータを含むＶＭから書込みＩＯを受け取ると、該書込みデータを書き込む要求を第１のストレージデバイスに出すこと、
該第１のストレージデバイスが該書込みデータの書込みに成功したという肯定応答を該第１のストレージデバイスから受け取ると、書込み肯定応答を該ＶＭに転送すること、
該転送の後に、書込みデータの読取り要求を該第１のストレージデバイスに出し、次いで該書込みデータを書き込む書込み要求を第２のストレージデバイスに出すことを備え、
該第１および第２のストレージデバイスが、該ホストコンピュータによって共有され、該第２のストレージデバイスが、該第１のストレージデバイスよりも大きい容量および高い入力／出力遅延を有する、方法。
【請求項１６】
前記第１のストレージデバイスがソリッドステートドライブアレイであり、前記第２のストレージデバイスが回転ディスクベースのストレージアレイである、請求項１５に記載の方法。
【請求項１７】
前記第１のストレージデバイスへの成功した書込みのレートを追跡すること、
追跡されたレートに基づいて、前記第２のストレージデバイスに出される書込み要求を制御することをさらに備える、請求項１５に記載の方法。
【請求項１８】
前記第２のストレージデバイスに出される前記書込み要求における書込みのレートが、前記追跡されたレートに実質的に一致する、請求項１７に記載の方法。
【請求項１９】
前記第１のストレージデバイスへの成功した書込みのレートを追跡すること、
追跡されたレートを調整ホストコンピュータに報告すること、
すべての前記複数のホストコンピュータによって報告された追跡されたレートに基づく目標レートを受け取ること、
該目標レートに基づいて、前記第２のストレージデバイスに出される書込み要求を制御することをさらに備える、請求項１５に記載の方法。
【請求項２０】
故障したシステムソフトウェアによって前記第１のストレージデバイスに書き込まれた書込みデータの読取り要求を出し、次いでそのような書込みデータを書き込む書込み要求を前記第２のストレージデバイスに出すことをさらに備える、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化コンピュータシステムに関し、詳しくは、外部キャッシュデバイスでのハイパーバイザのＩ／Ｏステージングに関する。
【背景技術】
【０００２】
仮想化コンピュータシステムにおいて、特に、仮想化コンピュータシステムで動作する１つまたは複数の仮想マシン（Virtual Machines:ＶＭ）およびＶＭ用のシステムソフトウェア（一般に「ハイパーバイザ」と呼ばれる）を各々が有する、ホストコンピュータのクラスタで構成されたシステムにおいて、入力／出力動作を管理するという難しい課題がある。従来のストレージデバイスは、ホストコンピュータのクラスタで動作する数百または数千ものＶＭによって生成されたストレージＩ／Ｏ要求のフローに対処するのが困難なことが多い。
【０００３】
この問題を解決するための従来の技法としては、特別に設計されたキャッシング機構を備えたストレージデバイス、およびホストコンピュータの近くに配置された１つまたは複数の高速ストレージデバイスを備えた多層ストレージデバイスを使用することが挙げられる。これらのシステムはストレージＩ／Ｏ要求のフローを処理するのに適切であり得るが、高価であり、複雑な実装を必要とする可能性がある。このような理由により、従来のシステムは、ホストコンピュータのクラスタで動作するＶＭの数に合わせて十分に拡張していない。また、これらのシステムは、これらのシステムに対して指定されたサービスレベルアグリーメント（Service Level Agreements:ＳＬＡ）を満たすようにピーク作業負荷を処理するように設計され、結果として、長期間にわたって十分に活用されないのが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００８／１８９４６８号明細書
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明によれば、特許請求の範囲にあるようなコンピュータシステムおよび方法が提供される。本発明の他の特徴は、従属請求項および以降の説明に記載されている。
一態様では、複数のホストコンピュータを有するコンピュータシステムであって、複数のホストコンピュータの各々が、ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、コンピュータシステムが提供され、コンピュータシステムは、ホストコンピュータの各々に接続された第１の共有ストレージデバイスと、第１の共有ストレージデバイスよりも大きい容量および高い入力／出力遅延を有する第２の共有ストレージデバイスとを備え、システムソフトウェアは、第２の共有ストレージデバイスに書き込まれるデータを、第１の共有ストレージデバイスにライトバックモードでキャッシュするように構成される。
【０００６】
１つの例では、第１の共有ストレージデバイスにキャッシュされたデータは、データが第１の共有ストレージデバイスにキャッシュされた場合に対し、システムソフトウェアによって第２の共有ストレージデバイスに非同期的にコピーされる。
【０００７】
１つの例では、ＶＭをサポートするシステムソフトウェアは、書込み要求を第１の共有ストレージデバイスに出し、第１の共有ストレージデバイスから書込み肯定応答を受け取ると、書込み肯定応答をＶＭに転送することによって、ＶＭの書込み入力／出力動作を処理するように構成される。
【０００８】
１つの例では、ＶＭをサポートするシステムソフトウェアは、読取りデータが第１の共有ストレージデバイスにキャッシュされているかどうかに基づいて、読取り要求を第１の共有ストレージデバイスおよび第２の共有ストレージデバイスのうちの一方に出すことによって、ＶＭの読取り入力／出力動作を処理するように構成される。
【０００９】
１つの例では、ホストコンピュータの各々におけるシステムソフトウェアは、それによって第１の共有ストレージデバイスにキャッシュされたデータを、システムソフトウェアがデータを第１の共有ストレージデバイスにキャッシュしたレートに基づく第２のレートに実質的に一致した第１のレートで、第２の共有ストレージデバイスにコピーするように構成される。
【００１０】
１つの例では、第２のレートは、システムソフトウェアがデータを第１の共有ストレージデバイスにキャッシュしたレートの移動平均である。
１つの例では、第１の共有ストレージデバイスはソリッドステートドライブアレイであり、第２の共有ストレージデバイスは回転ディスクベースのストレージアレイである。
【００１１】
１態様では、第１のホストコンピュータおよび第２のホストコンピュータを含む複数のホストコンピュータを有するコンピュータシステムであって、複数のホストコンピュータの各々が、ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、コンピュータシステムが提供され、コンピュータシステムは、ホストコンピュータの各々に接続された第１の共有ストレージデバイスと、第１の共有ストレージデバイスよりも大きい容量および高い入力／出力遅延を有し、ホストコンピュータで動作するＶＭ用のデータストアで構成される第２の共有ストレージデバイスとを備え、各々のホストコンピュータにおけるシステムソフトウェアは、データストアに書き込まれるデータをキャッシュし、第１の共有ストレージデバイスにキャッシュされたデータを、システムソフトウェアがデータを第１の共有ストレージデバイスにキャッシュしたレートに基づく第２のレートに実質的に一致した第１のレートで、第２の共有ストレージデバイスにコピーするように構成される。
【００１２】
１つの例では、第１のホストコンピュータのシステムソフトウェアは、すべてのホストコンピュータのシステムソフトウェアによって第１のホストコンピュータのシステムソフトウェアに報告されたレートの平均に基づいて、すべてのホストコンピュータに対する第２のレートを計算するように構成される。
【００１３】
１つの例では、システムソフトウェアによって報告された各々のレートは、システムソフトウェアがデータストアに書き込まれるデータを第１の共有ストレージデバイスにキャッシュしたレートの移動平均である。
【００１４】
１つの例では、各々のホストコンピュータにおけるシステムソフトウェアは、別のシステムソフトウェアが故障した場合に、該別のシステムソフトウェアによって第１の共有ストレージデバイスにキャッシュされたデータを第２の共有ストレージデバイスにコピーするようにさらに構成される。
【００１５】
１つの例では、第１の共有ストレージデバイスにキャッシュされたデータは、最も長く使用されていないまたは最も使用された頻度が少ないポリシーに従ってエビクトされる。
１つの例では、データは優先順位を用いて第１の共有ストレージデバイスにキャッシュされ、優先順位に従って第１の共有ストレージデバイスからエビクトされる。
【００１６】
１つの例では、第１のＶＭからのデータは、第１のＶＭに比べて低い優先順位が与えられている第２のＶＭからのデータよりも高い優先順位を用いてキャッシュされる。
１態様では、ＶＭから入力／出力動作（ＩＯ）の書込みデータをキャッシュする方法であって、方法は複数のホストコンピュータを有するコンピュータシステムに用いられるものであり、複数のホストコンピュータの各々が、ホストコンピュータで動作する１つまたは複数の仮想マシン（ＶＭ）と、ＶＭをサポートするシステムソフトウェアとを有する、方法が提供され、該方法は、書込みデータを含むＶＭから書込みＩＯを受け取ると、書込みデータを書き込む要求を第１のストレージデバイスに出すこと、第１のストレージデバイスが書込みデータの書込みに成功したという肯定応答を第１のストレージデバイスから受け取ると、書込み肯定応答をＶＭに転送すること、該転送の後に、書込みデータの読取り要求を第１のストレージデバイスに出し、次いで書込みデータを書き込む書込み要求を第２のストレージデバイスに出すことを備え、第１および第２のストレージデバイスは、ホストコンピュータによって共有され、第２のストレージデバイスは、第１のストレージデバイスよりも大きい容量および高い入力／出力遅延を有する。
【００１７】
１つの例では、第１のストレージデバイスはソリッドステートドライブアレイであり、第２のストレージデバイスは回転ディスクベースのストレージアレイである。
１つの例では、方法は、第１のストレージデバイスへの成功した書込みのレートを追跡すること、追跡されたレートに基づいて、第２のストレージデバイスに出される書込み要求を制御することをさらに含む。
【００１８】
１つの例では、第２のストレージデバイスに出される書込み要求における書込みのレートは、追跡されたレートに実質的に一致する。
１つの例では、方法は、第１のストレージデバイスへの成功した書込みのレートを追跡すること、追跡されたレートを調整ホストコンピュータに報告すること、すべてのホストコンピュータによって報告された追跡されたレートに基づく目標レートを受け取ること、目標レートに基づいて、第２のストレージデバイスに出される書込み要求を制御することをさらに含む。
【００１９】
１つの例では、方法は、故障したシステムソフトウェアによって第１のストレージデバイスに書き込まれた書込みデータの読取り要求を出し、次いでそのような書込みデータを書き込む書込み要求を第２のストレージデバイスに出すことをさらに含む。
【００２０】
本明細書に開示される１つまたは複数の実施形態は、一般に、ＶＭと、ＶＭにサービス提供するストレージデバイスとの間の仲介役としてのハイパーバイザの立場を利用して、ＶＭの全体的なＩ／Ｏ性能の改善を促進する、新しいＩ／Ｏ管理技法を提供する。この新しいＩ／Ｏ管理技法によれば、ハイパーバイザは、ストレージデバイス用のＶＭからの書込み要求を、ストレージデバイスよりも高いＩ／Ｏ性能を提供するＩ／Ｏステージングデバイスに送る。Ｉ／Ｏステージングデバイスが書込み要求を受け取り、これに肯定応答すると、ハイパーバイザは直ちに肯定応答を要求元のＶＭに提供する。その後、ハイパーバイザは、本明細書でデステージングと呼ばれることにおいて、Ｉ／Ｏステージングデバイスから書込みデータを読み取り、その書込みデータをストレージデバイスに送り、ストレージデバイスに記憶する。
【図面の簡単な説明】
【００２１】
【図１】一実施形態による、Ｉ／Ｏ管理技法をサポートするようにＩ／Ｏステージングデバイスで構成された仮想化コンピュータシステムのブロック図。
【図２】ＶＭからの書込み要求に応答して、データをＩ／Ｏステージングデバイスに書き込むために、図１の仮想化コンピュータシステム内のハイパーバイザによって実行される方法工程の流れ図。
【図３】ＶＭからの読取り要求に応答して、Ｉ／Ｏステージングデバイスまたはバックアップ用ストレージデバイスのいずれかからデータを読み取るために、図１の仮想化コンピュータシステム内のハイパーバイザによって実行される方法工程の流れ図。
【図４】Ｉ／Ｏステージングデバイス内のスペースを解放するためにＩ／Ｏステージングデバイスに書き込まれたデータをデステージする（de-staging）工程を示す概略図。
【図５】データをＩ／Ｏステージングデバイスにステージしたハイパーバイザが故障した場合にＩ／Ｏステージングデバイスに書き込まれたデータをデステージする工程を示す概略図。
【発明を実施するための形態】
【００２２】
図１は、一実施形態による、Ｉ／Ｏ管理技法をサポートするようにＩ／Ｏステージングデバイスで構成された仮想化コンピュータシステムのブロック図である。図１の仮想化コンピュータシステムは、ホストコンピュータの第１および第２のクラスタ１１、１２を含む。第１のクラスタ１１は、第１のクラスタ１１で動作する１つまたは複数のＶＭ（例えば、ＶＭ１２０）と、ＶＭの実行をサポートするためのハイパーバイザ（例えば、ハイパーバイザ１１０）とを各々が有する、複数のホストコンピュータ（そのうちの１つは１００と標示されている）を含む。第１のクラスタ１１のホストコンピュータ用の永続ストレージは、１つまたは複数のデータストアによって提供され、これらのデータストアは、ストレージアレイ１４１、１４２に、例えば、ストレージエリアネットワークデバイス内の論理ユニット（ＬＵＮ）として設けられる。第２のクラスタ１２も、複数のホストコンピュータを含み、第１のクラスタ１１と同様に構成することができ、第２のクラスタ１２のホストコンピュータ用の永続ストレージは、１つまたは複数のデータストアによって提供され、これらのデータストアは、第１のクラスタ１１と同じストレージアレイに設けられ得る。Ｉ／Ｏステージングデバイス１３０は、この実施形態では、第１のクラスタ１１のホストコンピュータ１００および第２のクラスタ１２のホストコンピュータによって共有されるソリッドステートドライブ（ＳＳＤ）アレイとして示されている。クラスタの数は１つのみ、または２つ以上であってもよく、データストアは、Ｉ／Ｏステージングデバイス１３０よりも容量当たりのコストが低い１つまたは複数のストレージアレイ（典型的には、回転ディスクベースのストレージアレイ）に設けられ得ることを認識されたい。
【００２３】
従来の仮想化コンピュータシステムでは、ＶＭが、ハイパーバイザによって作成される、仮想ディスク等の仮想デバイスからのＩ／Ｏ動作を要求する。今度は、ハイパーバイザが、Ｉ／Ｏ要求のフローを、下位物理ストレージデバイスに向けて送る。ハイパーバイザは、ハイパーバイザが肯定応答をＶＭに提供することができるようになるまでは、下位物理ストレージデバイスからの書込みの肯定応答を待たなければならない。この肯定応答をＶＭにより速く届けることができる場合、ＶＭのオペレーティングシステムおよびアプリケーションが動作する際の遅延はより低くなる。
【００２４】
１つまたは複数の実施形態による仮想化コンピュータシステムでは、ＶＭ（例えば、ＶＭ１２０）によって要求されたＩ／Ｏ動作に応答して、ハイパーバイザ（例えば、ハイパーバイザ１１０）、特にハイパーバイザのステージングモジュール（例えば、ハイパーバイザ１１０のステージングモジュール１１１）は、Ｉ／Ｏ要求のフローを最初にＩ／Ｏステージングデバイス１３０に向けて送り、Ｉ／Ｏステージングデバイス１３０は、一実施形態では、ストレージアレイ１４１、１４２に比べて高いＩ／Ｏ性能およびＩ／Ｏの低い遅延配信を有するＳＳＤアレイである。ＳＳＤアレイはソリッドステート媒体に基づいているので、回転ディスク媒体に関連するシークタイムペナルティを回避し、強力なランダム書込み性能を提供する。結果として、ＩＯＰＳ（１秒当たりのＩ／Ｏ動作）当たりのコストから見ると、ＳＳＤアレイは回転ディスクベースのストレージアレイよりも安価である。しかし、ＳＳＤアレイは、容量ベース（ギガバイトの容量当たりの価格）でははるかにより高価であるので、まだ回転ディスクベースのストレージアレイに取って代わっていない。したがって、本明細書に開示される実施形態では、ＳＳＤアレイはＩ／Ｏステージングデバイスとして用いられる。
【００２５】
書込みＩ／Ｏ要求の場合、Ｉ／Ｏステージングデバイス１３０が書込み要求を受け取り、この書込み要求に肯定応答すると、ハイパーバイザは直ちに肯定応答を要求元の仮想マシンに提供する。その後、ハイパーバイザのデステージングモジュール（例えば、ハイパーバイザ１１０のデステージングモジュール１１２）によって実行される最適化されたデステージングアルゴリズムに基づいて、ハイパーバイザはＩ／Ｏステージングデバイス１３０からのデータを要求し、そのデータを書込みＩ／Ｏ要求で対象とされているデータストアに送る。ハイパーバイザは、書込みＩ／Ｏ要求を行うＶＭから出たデータと同じ順序でデータが確実にデータストアに書き込まれるように書込み順序を維持する方法で、データをデータストアにデステージすることを認識されたい。例えば、データは先入れ先出し（ＦＩＦＯ）方法に従ってデステージされてもよい。
【００２６】
ストレージデバイスへの同期書込みを非同期の「レイジー（lazy）なデステージ」に変換するこの能力は、ストレージデバイスの性能要件を根本的に変え、そのようなデバイスに対するＩ／Ｏ要求のフローの非持続性（volatility）を激的に下げる。Ｉ／Ｏステージングデバイス１３０は、すべてのバーストＩ／Ｏを処理することが可能であり、バーストＩ／Ｏに関連するＩＯＰＳの高い標準偏差に対応させるために、汎用ストレージデバイスに対して高価な修正を行う必要性がなくなる。また、本明細書に記載される方法でＩ／Ｏステージングを提供することで、コストの問題を解決する。上述したように、特製品ＳＳＤアレイのギガバイト当たりのコストは高い。長期ストレージデバイスの代わりにＳＳＤアレイをＩ／Ｏステージングデバイスとして使用することによって、最小限の容量を購入することができ、程よいサイズのＳＳＤアレイにより長期ストレージデバイスとして用いられるレガシーなストレージデバイスのＩ／Ｏ性能を促進することが可能となる。要するに、ハイパーバイザのＩ／Ｏステージング機能は、３つの構成要素、すなわち、（１）レガシーなストレージデバイス、（２）Ｉ／Ｏステージングデバイス、および（３）ハイパーバイザを含む、メタストレージシステムを作り出す。一緒に動作するこれらの構成要素は、ランダムなバースト書込みＩ／Ｏを処理する改善された能力を備えた新しい高性能ストレージシステムを作り出す。
【００２７】
ホストコンピュータ上でハイパーバイザに提供されるＳＳＤリソース（本明細書において「ローカルＳＳＤ」と呼ばれる）でのキャッシングは、本明細書に記載される機能的な目標を達成することができないことを認識されたい。この理由は、ハイパーバイザ用のホストコンピュータが複数の単一障害点を有し、したがって、ローカルＳＳＤにキャッシュされたデータをストレージデバイスにデステージするのにハイパーバイザを信頼することができないからである。このため、ローカルＳＳＤでのキャッシングは、ハイパーバイザが肯定応答を要求元の仮想マシンに提供することができるようになるまでは、書込みがローカルＳＳＤとストレージデバイスの両方で肯定応答されることを要求する「ライトスルーモード」として知られているもので実行される必要がある。ストレージデバイスは、依然として、バーストＩ／Ｏの完全な非持続性に対処しなければならないので、「ライトスルー」キャッシングは本明細書に記載されるＩ／Ｏステージングの利点を提供することができない。
【００２８】
図２は、ＶＭからの書込み要求に応答して、データをＩ／Ｏステージングデバイス１３０に書き込むために、図１の仮想化コンピュータシステム内のハイパーバイザによって実行される方法工程の流れ図である。実質上、Ｉ／Ｏステージングデバイス１３０は、「ライトバックモード」でストレージデバイスのためのキャッシングを実行している。「ライトバック」キャッシングは、適切なレジリエンシ属性（resiliency attributes）を備えた外部ＳＳＤアレイを用いて、本明細書に記載される実施形態で実現される。一実施形態では、内部フェイルオーバ機構を有する、イーエムシーコーポレーション社（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）から入手可能なＸｔｒｅｍＩＯフラッシュアレイが、Ｉ／Ｏステージングデバイス１３０として用いられる。他の考えられるものとしては、ウィップテール社（Ｗｈｉｐｔａｉｌ）およびヴァイオリンメモリ社（Ｖｉｏｌｉｎ  Ｍｅｍｏｒｙ）が挙げられる。このようなＩ／Ｏステージングデバイスを使用する結果として、ＶＭはＩ／Ｏ遅延の著しい改善を実現し、ストレージデバイスへのデータのフローレートは最小のフローレートおよび最小の非持続性に制御され、このことは、より安価なストレージデバイスを配備して、永続ストレージサポートをＶＭに提供することができるということを意味する。
【００２９】
図２に示される方法は、ハイパーバイザがＶＭから書込みＩ／Ｏ要求を受け取る工程２１０で始まる。工程２１２で、ハイパーバイザは書込みＩ／ＯをＩ／Ｏステージングデバイス１３０に出す。工程２１４で判定された通り、ハイパーバイザがＩ／Ｏステージングデバイス１３０から書込み肯定応答を受け取った場合、工程２１６で、ハイパーバイザは書込み肯定応答をＶＭに転送する。ハイパーバイザがＩ／Ｏステージングデバイス１３０から書込み肯定応答を所定の時間内に受け取らなかった場合、工程２１７で、ハイパーバイザはエラーメッセージをＶＭに返す。
【００３０】
図３は、ＶＭからの読取り要求に応答して、Ｉ／Ｏステージングデバイス１３０またはバックアップ用ストレージデバイスのいずれかからデータを読み取るために、図１の仮想化コンピュータシステム内のハイパーバイザによって実行される方法工程の流れ図である。一般に、読取りＩ／Ｏ要求は、以前に書き込まれた任意のデータブロックのＩ／Ｏステージングデバイスに向けて送られる。これらのデータブロックは時にはＩ／Ｏステージングデバイス１３０からエビクトされている（evicted）ことがあるが、そうでない場合はＩ／Ｏステージングデバイス１３０に存在し得る。Ｉ／Ｏステージングデバイス１３０に存在するデータブロックを、バックアップ用ストレージデバイスからデータを取り出すよりもはるかに低い遅延で取り出すことができる。
【００３１】
図３に示される方法は、ハイパーバイザがＶＭから読取りＩ／Ｏ要求を受け取る工程３１０で始まる。工程３１２で、ハイパーバイザは、当技術分野で知られているいくつかの考えられるキャッシュ検索方法のいずれかを使用してＩ／Ｏステージングデバイス１３０を調べて、要求された読取りデータがＩ／Ｏステージングデバイス１３０に存在するかどうかを判定する。要求された読取りデータが存在しない場合、工程３１３で、読取りＩ／Ｏがバックアップ用ストレージデバイスに出される。要求された読取りデータがＩ／Ｏステージングデバイス１３０に存在する場合、工程３１４で、読取りＩ／ＯがＩ／Ｏステージングデバイス１３０に出される。工程３１３および３１４の後で実行される工程３１６で、ハイパーバイザは要求された読取りデータの受取りを待つ。工程３１６で判定された通り、ハイパーバイザが要求された読取りデータをバックアップ用ストレージデバイスまたはＩ／Ｏステージングデバイス１３０のいずれかから受け取った場合、工程３１８で、ハイパーバイザは読取りデータをＶＭに転送する。ハイパーバイザが要求された読取りデータを所定の時間内に受け取らなかった場合、工程３１９で、ハイパーバイザはエラーメッセージをＶＭに返す。
【００３２】
ハイパーバイザは、Ｉ／Ｏステージングデバイス１３０が決してスペースを使い切らないようにするために、デステージング工程を行う。同様に重要なことは、Ｉ／Ｏステージングデバイス１３０からバックアップ用ストレージデバイスに設けられたデータストアの各々へのデータのフローレートが必ず、可能な限り最も低いレートおよびデータのフローレートにおける最も小さい非持続性で始まるようにすることである。結果として、バックアップ用ストレージデバイスの性能要件を下げて、より低いコストおよびより古い世代のストレージアレイを使用することを可能にすることができる。
【００３３】
クラスタ内の各々のハイパーバイザによって行われるデステージングの目的は、Ｉ／Ｏステージングデバイス１３０が決してスペースを使い切らないようにしながら、Ｉ／Ｏステージングデバイス１３０からハイパーバイザのためのバックアップ用ストレージデバイスに設けられた１つまたは複数のデータストアへのデータのフローレートを最小限に抑えることである。理想的なデステージデータレートを実現するために、所与のデータストアにデータを書き込む各々のハイパーバイザは、同じデータストアに書込み中である、同じクラスタ内の他のハイパーバイザのデステージデータレートに加算されたときに、共通の平均データレートにならなければならないデータレートで、データストアに書き込むことを試みなければならない。そのようなデータレートは、同じクラスタ内のハイパーバイザ間で調整することによって実現される。
【００３４】
一実施形態では、各々のハイパーバイザは、一定の分数にわたる１分当たりの書込みレートの移動平均に基づいて、データストア毎のデステージデータレートを確立することができる。例えば、１５分間にわたるＭＢ／分平均が２０ＭＢに等しい場合、過度に単純化した手法では、ハイパーバイザが２０ＭＢ／分のレートでデータをデータストアにデステージすることになる。これは、時間とともに、Ｉ／Ｏステージングデバイス１３０でインバウンドデータをステージするのに必要なスペースの量のいかなる著しい増加も妨げるはずである。このようにして、データストア毎に、各々のハイパーバイザに対して個別に、適切なデステージレートを計算することができる。
【００３５】
データストアから非持続性をできる限り軽減するという目的を達成するために、クラスタ全体でのハイパーバイザ全体のデステージレートは、標準偏差が低い共通の平均にできるだけ近く維持される。これは、各々のハイパーバイザが、単なる共通のハイパーバイザ平均よりもデータストア毎の安定したクラスタレベル平均を促進するレートでデータを書き込む場合に、最も良く実現することができる。これを実現する１つの方法は、クラスタ上の単一のホストコンピュータが調整機能を実行することである。クラスタ内の無作為のホストコンピュータを、調整ホストコンピュータとして選ぶことができる。クラスタ内の各々のホストコンピュータは、上記に記載したような個々の移動平均データレートを調整ホストコンピュータに伝える。調整ホストコンピュータは、個々のホストコンピュータの移動平均の合計をクラスタ内のホストコンピュータの数で割った、クラスタの移動平均を追跡する。結果として得られたデータレートは平均の平均であり、個々のハイパーバイザに存在し得る変動を回避し、クラスタ内の各々のハイパーバイザに対する目標デステージレートとして使用される。
【００３６】
各々のハイパーバイザが、各々のデータストアに共通の目標レートでデステージすると、ステージされたデータは、所与のハイパーバイザに対して完全にデステージされるようになり得る。これが生じるとき、影響を受けたハイパーバイザがこのことを調整ホストコンピュータに伝え返すことが重要である。所与のハイパーバイザが所与のデータストアにデステージするデータをもう有していないことを通知すると、調整ホストコンピュータは、データをデステージすることが可能なクラスタ内の残りのホストコンピュータに対する目標デステージレートを再計算する。
【００３７】
例えば、データストアＸに対する１０ノードクラスタの目標デステージレートが１分当たり２００ＭＢである場合、各々のハイパーバイザは１分当たり２０ＭＢの個別のデステージレートを有する。１０台のホストコンピュータのうちの１つがデステージすべきデータを使い切った場合、調整ホストコンピュータは単に、データをデステージすることが可能な残りの９台のホストコンピュータに、その有効目標デステージレートを２００／９すなわち１分当たり２２ＭＢに上げるように通知する。他の３台のホストコンピュータがデステージすべきデータを使い切った場合、残りのホストコンピュータのレートは２００／６すなわち１分当たり３３ＭＢまで上がる。他のホストコンピュータが定義された最小限のデステージすべきデータを有すると、これらのホストコンピュータは調整ホストコンピュータに通知し、デステージグループに再び入ることで、ホストコンピュータ毎の有効目標レートを下げる。このようにして、調整ホストコンピュータは、各々のデータストアに対するデータの総計フローレートが経時的にほぼ一定のままであり、個々のハイパーバイザのデータの可変フローレートがマスクされることを保証する。
【００３８】
図４は、Ｉ／Ｏステージングデバイス内のスペースを解放するためにＩ／Ｏステージングデバイスに書き込まれたデータをデステージする工程を示す概略図である。調整ホストコンピュータ１０１は、ホストコンピュータ１００−１から１００−Ｎのうちのいずれか１つであり得る。矢印４０１、４０２、４０３は、ホストコンピュータが各々、一定の分数にわたる１分当たりの書込みレートのその移動平均を調整ホストコンピュータ１０１に伝えることを表す。矢印４１１、４１２、４１３は、調整ホストコンピュータ１０１が、ホストコンピュータによって調整ホストコンピュータ１０１に伝えられた移動平均の平均をホストコンピュータの各々に伝えることを表す。矢印４２１、４２２、４２３は、Ｉ／Ｏステージングデバイス１３０で以前にステージされたデータが、ホストコンピュータによってＩ／Ｏステージングデバイス１３０の各々の領域１３１、１３２、１３３から読み取られることを表し、矢印４３１、４３２、４３３は、ホストコンピュータによって読み取られた、以前にステージされたデータの書込みを表す。以前にステージされたデータの書込みは、調整ホストコンピュータ１０１によってホストコンピュータに伝えられた目標デステージレートで、ホストコンピュータの各々によって行われる。所与のホストコンピュータが所与のデータストアに対するそのステージされたデータを使い果たした場合、このことは調整ホストコンピュータ１０１に伝えられ、調整ホストコンピュータ１０１は、クラスタ内に残っている、所与のデータストアに対するデステージの準備ができたデータを引き続き有しているホストコンピュータの数に基づいて、所与のデータストアに対する目標レートを再計算する。
【００３９】
ハイパーバイザが故障した場合、別のホストコンピュータのハイパーバイザが故障したハイパーバイザからデステージングを引き継ぐことができるように、故障したハイパーバイザのホストコンピュータからのステージされたデータを、クラスタ内のすべての残りのホストコンピュータに見えるようにしなければならない。ステージされたデータの可視性は、ヴイエムウェア社（ＶＭｗａｒｅ）のＶＭＦＳ（Virtual Machine File System:仮想マシンファイルシステム）などの、クラスタにまたがる共有ファイルシステムを用いることによって実現される。加えて、ハイパーバイザが故障したとき、故障したハイパーバイザのホストコンピュータで動作するＶＭは別のホストコンピュータに移動され、故障したハイパーバイザからデステージングを引き継ぐのは、この新しいホストコンピュータのハイパーバイザである。ハイパーバイザの故障は、その内容全体を本願明細書に援用する２００８年１月２１日に出願された「Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｌｕｓｔｅｒ」という表題の米国特許出願第１２／０１７，２５５号に記載された技法を含む、任意の数の方法で検出され得る。
【００４０】
図５は、データをＩ／Ｏステージングデバイスにステージしたハイパーバイザが故障した場合にＩ／Ｏステージングデバイスに書き込まれたデータをデステージする工程を示す概略図である。図５に与えられた例では、ホストコンピュータ１００−２が故障したものとして示されており、ホストコンピュータ１００−２で動作するＶＭは、矢印５１０によって示されるように、ホストコンピュータ１００−１に移動される。加えて、ホストコンピュータ１００−１のハイパーバイザは、矢印５２０によって示されるように、故障したホストコンピュータのハイパーバイザによってＩ／Ｏステージングデバイス１３０の領域１３２でステージされたデータを読み取る。次いで、矢印５３０によって示されるように、ホストコンピュータ１００−１のハイパーバイザは、調整ホストコンピュータ１０１によって伝えられた目標デステージレートで、Ｉ／Ｏステージングデバイス１３０の領域１３２でステージされたデータを書き込む。
【００４１】
図５は、単一のＶＭがホストコンピュータの各々で動作している、簡略化された例を提供している。より一般的には、１つまたは複数のＶＭがホストコンピュータの各々で動作している場合がある。したがって、ＶＭに対するステージされたデータは、ＶＭ毎に追跡される。一実施形態では、各々のＶＭに対するステージされたデータは、ＶＭＦＳなどの共有ファイル化されたシステム上のそのＶＭに関連する１つまたは複数のキャッシュファイルに記憶され、その結果として、故障したホストコンピュータで動作するＶＭを、ＶＭ毎にＩ／Ｏステージングデバイス１３０にアクセスすることができるライブのホストコンピュータに移動することができる。次いで、各々のそのようなライブのホストコンピュータは、移動の結果としてそのホストコンピュータが実行しているＶＭに関連するキャッシュファイルからデータをデステージする責務を引き継ぐ。
【００４２】
さらなる実施形態では、各々のＶＭに対するステージされたデータは、ＶＭＦＳなどの共有ファイル化されたシステム上のそのＶＭに関連する１つまたは複数のキャッシュファイルに記憶され、その結果として、キャッシュファイルが設定されたサイズに達するとすぐに、各々のそのようなキャッシュファイルにおけるデータのデステージングを任意のホストコンピュータのハイパーバイザによって行うことができる。例えば、ＶＭのキャッシュファイルが設定されたサイズに達すると、そのＶＭに対して新しいキャッシュファイルが開始され、Ｉ／Ｏステージングデバイス１３０にアクセスすることができるホストコンピュータのクラスタ内の無作為のホストコンピュータが選択されて、より古いキャッシュファイルをデステージする。より古いキャッシュファイルのデステージが完了すると、そのキャッシュファイルは削除される。次のキャッシュファイルの準備ができる（すなわち、設定されたサイズに達する）と、新しい無作為のホストコンピュータが選択されて、そのキャッシュファイル内のデータをデステージする。デステージングを実行するためのホストコンピュータの選択は、ヴイエムウェア社（ＶＭｗａｒｅ）のＤＲＳ（Distributed Resource Scheduler）などの負荷分散アルゴリズムに従って行われ得る。書込み順序が維持されるように、任意の所与のＶＭに対して、ＶＭに関連する１つだけのキャッシュファイルが一度にデステージすることが許可されるようにすべきであることを認識されたい。デステージング中にホストコンピュータが故障した場合、新しいホストコンピュータが選択されて、ＶＭ毎にデステージングを再開する。
【００４３】
任意のデステージングとは別に、データがＩ／Ｏステージングデバイス１３０からエビクトされることを認識されたい。いくつかの考えられるエビクションポリシーのうちの１つに基づいて、データはＩ／Ｏステージングデバイス１３０からエビクトされる。そのようなポリシーの例としては、ＬＲＵ（Least Recently Used）またはＬＦＵ（Least Frequently Used）またはこれら２つの何らかの組合せが挙げられる。加えて、様々なＶＭからのステージされたデータは異なる優先順位を有することがあり、その結果として、いくつかのＶＭからのデータは、他のＶＭのデータに比べて、Ｉ／Ｏステージングデバイス１３０において延長された常駐期間（residency）を有することがある。
【００４４】
諸実施形態では、任意のステージングデバイスを任意のバックアップ用ストレージデバイスとともに使用することができるように、ハイパーバイザはアービトレーション機能を提供する。もちろん、本明細書に記載される利益を得るために、ステージングデバイスは、バックアップ用ストレージデバイスと比べてより良いＩ／Ｏ性能を提供しなければならない。アービトレータとして、ハイパーバイザは、上記に記載されたように、データストア毎に最適なデステージングフロー制御システムを課すことができ、このことは、バックアップ用データストア上のバーストＩ／Ｏの低減および最終的にはバーストＩ／Ｏを処理することができるストレージシステムの導入コストの低減につながる。加えて、アービトレータとしてのハイパーバイザの立場を使用して、書込みのキューイングとキャッシュエビクションの両方について、ＶＭ毎にＩ／Ｏ要求の優先順位付けを課すことができる。
【００４５】
本明細書に記載される様々な実施形態は、コンピュータシステムに記憶されたデータを伴う、コンピュータによって実施される様々な動作を用いることができる。例えば、これらの動作は、通常、必ずというわけではないが、物理的な量の物理的な操作を必要とすることがあり、これらの量は電気信号または磁気信号の形を取ることができ、この場合、これらの量またはそれを表現したものを記憶、転送、結合、比較、またはそれ以外の方法で操作することができる。さらに、そのような操作は、生成する（producing）、識別する（identifying）、判定する（determining）、または比較する（comparing）などの用語で呼ばれることが多い。本発明の１つまたは複数の実施形態の一部を形成する、本明細書に記載される任意の動作は、有益なマシン動作であってもよい。加えて、本発明の１つまたは複数の実施形態は、これらの動作を実行するためのデバイスまたは装置にも関する。この装置を特定の必要な目的のために特別に構成することができ、または、この装置をコンピュータに記憶されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータとすることができる。特に、様々な汎用マシンを、本明細書における教示に従って記述されたコンピュータプログラムとともに使用することができ、または、必要な動作を実行するためのより特殊な装置を構成することがより好都合であり得る。
【００４６】
本明細書に記載される様々な実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能なコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成とともに実施され得る。
【００４７】
本発明の１つまたは複数の実施形態は、１つまたは複数のコンピュータプログラムとして、あるいは１つまたは複数のコンピュータ可読媒体に組み込まれた１つまたは複数のコンピュータプログラムモジュールとして、実装され得る。コンピュータ可読媒体という用語は、後でコンピュータシステムに入力することができるデータを記憶することができる、任意のデータストレージデバイスを指す。コンピュータ可読媒体は、コンピュータによって読み取られることを可能にする方法でコンピュータプログラムを組み込むための、任意の既存のまたは後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワークアタッチトストレージ（Network Attached storage:ＮＡＳ）、読取り専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、またはＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、ならびに他の光学および非光学データストレージデバイスが挙げられる。また、コンピュータ可読コードが分散的に記憶され、実行されるように、コンピュータ可読媒体をネットワーク結合コンピュータシステムに分散することができる。
【００４８】
理解が明瞭になるように、本発明の１つまたは複数の実施形態を多少詳しく説明してきたが、ある一定の変更および修正を特許請求の範囲の範囲内で行うことができることは明らかであろう。したがって、記載された実施形態は限定的なものではなく例示的なものとみなすべきであり、特許請求の範囲の範囲は本明細書において与えられた詳細に限定されるものではないが、特許請求の範囲の範囲および均等物内で修正され得る。特許請求の範囲では、要素および／または工程は、特許請求の範囲で明示的に記載されない限り、動作の任意の特定の順序を暗に示すものではない。
【００４９】
加えて、記載された仮想化方法では、仮想マシンが特定のハードウェアシステムと整合性があるインターフェースを提示すると一般に想定しているが、当業者であれば、記載された方法を、任意の特定のハードウェアシステムに直接的に対応しない仮想化と併せて使用することができることを認識されよう。ホスト実施形態、非ホスト実施形態として、またはこれら２つの実施形態間の区別をあいまいにする傾向がある実施形態として実装される、様々な実施形態による仮想化システムがすべて想到される。さらに、様々な仮想化動作を全体的にまたは部分的にハードウェアに実装することができる。例えば、ハードウェア実装は、ストレージアクセス要求の修正にルックアップテーブルを用いて、非ディスクデータを安全にすることができる。
【００５０】
仮想化の程度にかかわらず、多くの改変、修正、追加、および改善が可能である。したがって、仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムの構成要素を含むことができる。単一のインスタンスとして本明細書に記載される構成要素、動作または構造に、複数のインスタンスを提供することができる。最後に、様々な構成要素、動作およびデータストア間の境界はどちらかと言えば任意のものであり、特定の動作は特定の例示的な構成の文脈において示されている。機能の他の割当てが想到され、これは本発明の範囲内に入り得るものである。一般に、例示的な構成において別個の構成要素として提示される構造および機能は、組み合わされた構造または構成要素として実施され得る。同様に、単一の構成要素として提示される構造および機能は、別個の構成要素として実施され得る。これらおよび他の変形、修正、追加、および改良は、添付の特許請求の範囲の範囲内に入り得るものである。
【符号の説明】
【００５１】
１００…ホストコンピュータ、１１０…ハイパーバイザ、１２０…仮想マシン、１３０…ステージングデバイス、１４１…ストレージデバイス、１４２…ストレージデバイス。
【図１】
2014102823.tif 000003
【図２】
2014102823.tif 000004
【図３】
2014102823.tif 000005
【図４】
2014102823.tif 000006
【図５】
2014102823.tif 000007