2019年1月17日

誰もが犯す仮想化における10の間違い

適切に設定して熟考しなければ、仮想化は誰にとっても悩みの種になる可能性があります。この記事では、仮想化で最も多く見られる10の間違いとそれらを防ぐ方法を紹介します。

仮想化は、新しいテクノロジーとして議論されることが少なくありませんが、コンピューティング自体と同じように古くからニーズがあり、その歴史は1960年代にまで遡ります。私たちの業界では、常に片方のシステムをもう一方のシステムで稼働できるようにしておかなければならず、仮想化は、クライアントPC、サーバー、クラウド、そして本質的には仮想化の別の形態である、ゲームエミュレーションなどの一見無関係なテクノロジーで使用されています。

仮想化はさまざまなタスクを容易にする一方、仮想マシンを別の仮想マシンで実行する(場合によっては、Nested Virtualization (入れ子になった仮想化)のように、それをさらに別の仮想マシンで実行する)マトリョーシカ人形の原則により、一部のコンピューティングタスクを複雑化させます。そしてタスクが複雑になると、実際面と概念レベルの間違いの両方で必ずエラーが起きる可能性が高くなります。ではここから、一般的な間違いとそれらを防ぐ方法を見ていきましょう (ここで紹介する例では主にWindowsを使用していますが、Linuxにおける仮想化でも同じようなことが言えます)。

 

No. 1. 仮想CPU (vCPU)をオーバープロビジョニングする

あなたは、ほぼ容量無制限のRAMを搭載した新しい32コアサーバーのラックを上機嫌で箱から取り出したところです。サーバーが仮想化専用に設計されたものであったとしても、特にCPUリソースに関しては、すべてのVMに必要以上のコアを割り当てる必要はないかもしれませんが、たとえば、「マルチタスキングが重要」、または「もう2003年ではないのだから、コアが1個だとパフォーマンスが確実に低下する」といった曖昧な理由からそれぞれのVMに2個のvCPUコアが割り当てられることがあります。

ここで少し考えてみましょう。まず、すべてのVMに多数のvCPUを割り当てると、物理サーバーでサポートできるVMの数が制限されます。

次に、このVMで実際どのような処理が必要なのかを考えてから、「物理的な」ハードウェアで仮想化して実行したいアプリケーションやサービスのインストールとテスト駆動を行う必要があります。その後、「このアプリケーションで本当に2個のコアが必要なのか、また実際に常時CPUが使用されているのか」という点を確認し、そうでない場合は、必要以上の割り当てを行ってはなりません。

そして、割り当てるvCPUが増えるとVMが「CPU待機」状態になり、実際のCPUですべてのワークロードの処理が完了するまで待つようになる可能性が高くなる、CPU待機時間という大きな問題が生じます。これについてもう少し詳しく知りたい場合は、こちらの解説をご覧ください。

 

No. 2. VMに必要以上の(仮想) RAMを割り当てる

メモリに関しても同じことが言えます。VMにさらに数ギガバイトのメモリを割り当てれば、リソース不足に陥ることがなくなると思われるかもしれませんが、必要以上に資金を投じたり、仮想化を進めたり、RAMを使用したりしてはなりません。

実際、VMに必要以上のRAMを割り当てるのではなく、ユーザーやアプリケーション環境がどれだけのメモリを必要としているのかを把握しようとすることが重要です。たとえば、Windows 7、Microsoft Office、そしていくつかのビジネスアプリケーションだけを使用する従業員で構成される小規模なチームをサポートするためにVMをプロビジョニングしている場合、ユーザーが多くのタスクを同時に実行したり、大容量のファイルを使用したりしない限り、2~4GBのメモリで十分です。

パフォーマンスモニター、アプリケーションログファイル、およびリソース稼働率を確認し、長期間にわたってシステムのパフォーマンスと使用率を比較する必要があります(これに関しては、タスクマネージャーが役に立ちます)。万が一に備えて、VMには平均で200~500MBのメモリを余分に割り当てることが可能ですが、VMで実際に使用されるメモリと割り当てたメモリの総容量の差は、ごくわずかにしなければなりません。

 

No. 3. 不適切なストレージを選択する: 回転式とソリッド

処理が速く超低レイテンシであるという理由から、ソリッドステートドライブ(SSD)は仮想化ワークロードに最適です。ただし、最速のストレージが予算内に収まるとは限らず、IT予算の制約からすべてをSSDにできない場合は、引き続きハードディスクドライブ(HDD)を使用する必要があります。

これについては取捨選択をし、2つを組み合わせてはなりません。私は以前、管理者が容量の小さい(したがって価格の低い) SSDにホストOSを、そして古いもののパフォーマンスが高い回転式のHDDにゲストOSをインストールしているのを目にしました。このケースの場合、ホストはすべてのワークロードを実行するためきわめて高速でなければならず、HDDは大容量で多数のゲストを稼働させることができる、という当初の考え方は理にかなっていました。しかし実際には、処理速度が10分の1のHDDがデータを何度も移動させるのを待たなければならなかったため、ホスト側の高速のSSDはほとんど使い物にならず、処理が早く終わるのを待つしかありませんでした。

そして最終的に、SSDのパフォーマンスのメリットをほとんど得ることができませんでした。これについては、同じような間違いを犯さないよう、すべてをSSDにするか、予算を確保して最適なハードウェアを購入できるようになるまでHDDを使用し続けることが重要です。

 

No. 4. ホストシステムを無駄にする

仮想化サーバーは専用のマシンとして使用し、そのままにしておかなければなりません。私の経験では、仮想化サーバーは仮想化のためだけに実行し、それ以外の目的に使用すべきではありません。

システムに2つの役割を持たせようとすることに意味はありません。もちろん、ハードウェアに5~6桁もの金額を支払ったことから、できる限り多くのことを行わせたいと思う気持ちはわかりますが、それは間違いです。また、性能の高いハードウェアを個人のワークステーション、メールサーバー、またはレンダリングマシンに転用しようとしてはならず、たとえごく少数のVMをサポートするために128GBのRAMを搭載した強力な32コアのサーバーが必要だったとしても、そのように考えてはなりません。

私は以前、このような誘惑に駆られた結果、8台のVMをクラッシュさせ、処理速度を大幅に低下させてしまったことがあったのですが、このとき、私が使用していたホストOSのプロセスが変化し、ランダムなうえにきわめて特定するのが難しいWindowsのハンドルリークが発生していることがわかりました。何万ものハンドルが開いているプロセスでは、パフォーマンスと信頼性が損なわれるうえ、Windowsで何の警告も表示されないため、問題を検出するのは困難です。もちろん、軽量のサーバー管理ツールや推奨のセキュリティソリューションをインストールすることも可能ですが、できることはそれくらいしかありません。

 

No. 5. ライセンスのことを忘れる

会社のコンプライアンス部門からの電話で目が覚めたり、最後の監査で誰かが使用可能なラインセンスの数を超えていたことに気付いて多額の罰金を科せられたことを知ったり、「でもその料金はすでに支払ったはず」と言い訳したりしたい人はいないでしょう。

そのような事態に陥らないようにするには、インフラストラクチャを担当する人物(おそらくあなた)が、ゲストオペレーティングシステムとホストオペレーティングシステムの両方だけでなく、インストールされているすべてのアプリケーションのライセンスのことをわかっているかどうかを確認しておくことが重要です。

ゲストOSがWindows Server 2016 Standardのライセンスキーを受け入れたからといって、無数のVMでキーを使用できるというわけではないため、必ず細事部分に目を通さなければなりません。ライセンスは通常、ハードウェアに紐付けられており、(VMで定期的に行われるように)ハードウェアを移動または変更する場合は、法的な問題を解決する必要があります。

そのため、適切な調査を行ったうえで、リセラーやITパートナーに必要なラインセンスを確認するようにしてください。たとえば、Windowsで多数のVMを実行する必要がある場合は、Windows Server Datacenterのライセンスを選択しなければなりません (HPEが提供するこちらのデータセンターコスト計算ツールも参考にしてください)。

 

No. 6. 使用すべきではないタイミングで仮想化を使用する

そもそも仮想化環境を構築してはならない場合もあります。互換性など、さまざまな理由からすべてのタスクを仮想化すべきではなく、場合によっては「物理的な」マシンの特性やパフォーマンスが必要になります。この数年の間に仮想化とサーバーハードウェアはかなり進化しましたが、特定のハードウェアドングルが必要なGPUを多用するアプリケーションやサービスは通常、仮想環境でうまく機能しません。

ここでも複雑性が問題になります。前述のように、仮想環境ではトラブルシューティングが難しいため、必要ない場合は仮想環境を構築してはなりません。

具体例として、私は、(セキュリティやプライバシーなど)さまざまな理由で実環境のOSから切り離すために仮想化したOS上に今使用中の暗号通貨取引システムをインストールしましたが、システムの処理に必要な仮想OSはこの1つだけだったため、それ以外は何も仮想化しませんでした。

ただし私は、ゲストOS内のタイムクロックが(ミリ秒レベルで)ごくわずかにずれ、時間とともにそのずれが大きくなっていたことに気付かなかったのですが、それよってソフトウェアが取引を停止し、その後クラッシュしたことがわかりました。

 

No. 7. 古いハードウェアで仮想化を行う

主要なプロセッサーはどれも世代ごとに全面的な見直しを行い、パフォーマンスや(Nested VirtualizationをサポートするIntel社のVT-xといった)新しい仮想化機能のサポートなどの点で仮想化を強化しています。古いコンピューターで一部のタスクを処理することは可能ですが、多数のWindows 10クライアントを仮想化して膨大なワークロードを実行したいと思っている場合は、一番安上がりな方法を取って10~15年前のサーバーを使用し続けてはなりません。事前に計画を立て、ハードウェアが基準に達しているかどうかを確認することが重要です。

 

No. 8. 設定だけして放置する

仮想マシンは物理マシンと同じように扱わなければならず、微調整した環境をプロビジョニングすれば、長期休暇を取れるなどと思ってはなりません。

ゲストOSは実在するものではありませんが、一切のメンテナンスが不要というわけではなく、パフォーマンスを監視したり、ログをチェックしたり、インストールしたアプリケーションを更新したり、クライアントのセキュリティサービスがすべて動作していることを確認したりする必要があります。例を挙げればきりがありませんが、手短に言うと、少なくともソフトウェア側では、VMを物理的に存在するものと同じように扱わなければなりません。

 

No. 9. 定期的にベンチマークを行わない

仮想環境で特定のタスクを実行するときのパフォーマンスは、できる限りネイティブのマシンのパフォーマンスに近づけるのが理想的です。それを実現できているかどうかをテストするには、目指す状態に非常に近いベンチマークを実行する必要があり、予算に収まるのであれば、SPECvirtを使用して、さまざまな実環境のシナリオにおける仮想化環境のエンドツーエンドのパフォーマンスを測定します。小規模なVMのシナリオでは、Netperf、PassMark、Cinebench、PCMark Vantageなどの実証済みのベンチマークツールを使用してパフォーマンスを比較することも可能です。

ゲストOSとホストOSは、できる限り同じように構成しなければなりません。たとえば、あるベンチマークシナリオでは、展開する予定のゲストマシンのRAMとCPUリソースに合わせるために、(BIOS/UEFIユーティリティやさまざまな設定ユーティリティを使用して)ホストマシンのRAMとCPUリソースを制限する必要があります。そして予期しないパフォーマンスのスパイクや干渉をなくすために3~5回テストを繰り返します。

 

No. 10. ゾンビ(アイドル状態の) VMを作り出す

業務の中で「ゾンビVM」を作り出す理由は何もないため、VMが必要なくなったら、適切にプロビジョニング解除が行えるシステムを実行します。仮想環境は、特定の基幹業務アプリケーションなどのソフトウェアやサービスを1週間から1か月にわたってテストし、それが全社的に展開するのにふさわしいものであるかどうかを確認するのに最適です。

また、管理者がこれらのマシンのことを忘れてしまっている場合を除けば、高い評価結果が得られますが、多くの管理者はシステムをシャットダウンせず、いつまでも稼働させ続けることさえあります。このような状況は、リソースが十分にあってコストがかからず、部門間のコミュニケーションが十分に取れていない(そのため、常に誰かがフォローアップしなければならない)大規模な組織で多く見られます。

たとえ稼働していなかったとしても、すべてのVMがリソースを消費するということを忘れてはなりません。VMは、テストのために使用する必要がなくなった時点で削除し、デジタルゾンビに変異しないようにする必要があります。

この記事/コンテンツは、記載されている個人の著者が執筆したものであり、必ずしもヒューレット・パッカード エンタープライズの見解を反映しているわけではありません。

enterprise.nxt

ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。

ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。