概要
仮想化とは、従来ハードウェアに拘束されていたリソースを活用することで、有用な IT サービスの作成を可能にするテクノロジーです。物理マシンのさまざまな能力を複数のユーザーや環境の間で分散することにより、その能力をフル活用できます。
具体的に説明すると、それぞれ目的の違う 3 つの物理サーバーがあるとします。1 つはメールサーバー、もう 1 つは Web サーバー、最後の 1 つが社内レガシーアプリケーションを実行するサーバーです。各サーバーでは、能力の約 30% が使用されていますが、これはそれぞれが持つ潜在的な運用能力の一部にすぎません。しかし、社内業務ではレガシーアプリケーションが引き続き重要な役割を果たしているため、レガシーアプリケーションとそれをホストしている第 3 のサーバーを維持しなければなりません。
これまでは、そのとおりでした。多くの場合、1 つのサーバー、1 つのオペレーティングシステム、1 つのタスクという原則に従って、サーバーごとに個別のタスクを実行する方法が、簡単かつ信頼性が高いと考えられていました。1 つのサーバーに複数の処理能力を備えることは容易ではありませんでした。しかし、仮想化を採用すれば、メールサーバーを 2 つの独立したサーバーに分割して、それぞれが独立したタスクを処理できるようにし、レガシーアプリケーションを移行することができます。同じハードウェアでありながら、より有効に活用できるようになります。
セキュリティを考慮しながら、第 1 のサーバーをさらに分割し、別のタスクを処理できるようにすれば、その利用率を 30% から 60% へ、さらには 90% へと高めることもできます。このようにすると、空いたサーバーを他のタスクに再利用することも、すべて処分して空調や保守のコストを節約することもできます。
仮想化の歴史概略
仮想化テクノロジーの歴史は、1960 年代までさかのぼることができますが、広く採用されるようになったのは 2000 年代初期になってからです。ハイパーバイザーなど、仮想化を可能にしたテクノロジーは何十年も前に開発され、それによりバッチ処理を実行するコンピュータに複数のユーザーが同時アクセスできるようになりました。バッチ処理は、給与処理など、ルーチンタスクを何千回も非常に高速に実行する事業部門において一般的なコンピューティング・スタイルでした。
しかし続く数十年には、複数ユーザーによる単一マシンの使用という問題に対しては、仮想化ではなく他のソリューションが一般的でした。そうした他のソリューションの 1 つ、タイムシェアリングは、オペレーティングシステム内でユーザーを分離するというものであり、それは期せずして UNIX などの他のオペレーティングシステムへとつながっていき、ついには Linux® への道を開くものとなりました。その間も仮想化はあまり採用されず、あくまで隙間テクノロジーでした。
時は流れて 1990 年代。多くの企業は物理サーバーと単一ベンダーの IT スタックを使用しており、レガシーアプリケーションを別のベンダーのハードウェアで実行することは不可能でした。企業が IT 環境を更新して、さまざまなベンダーに由来する廉価版サーバー、オペレーティングシステム、アプリケーションを採用するようになると、物理ハードウェアの使用率が低くなりました。各サーバーで実行できるタスクは 1 つのベンダー固有のタスクに限定されていました。
仮想化が実質的に始まったのは、ここからです。仮想化は、企業がサーバーを区分できるようにすること、そしてレガシーアプリケーションを複数のタイプやバージョンのオペレーティングシステムで実行することという、2 つの課題の必然的な解決策となりました。サーバーの使用効率が上がり (またはまったく使う必要がなくなり)、購入、セットアップ、冷却、メンテナンスのコストを節約できるようになりました。
仮想化は幅広く適用できるので、ベンダーロックインを減らすことに役立ち、それがクラウド・コンピューティングの基盤となりました。今では企業の間ですっかり普及したため、状況すべてを把握するには、そのために特化した仮想化管理ソフトウェアが必要になることが少なくありません。
仮想化の仕組み
ハイパーバイザーと呼ばれるソフトウェアにより、物理リソースと、それらのリソースを必要とする仮想化環境とが分離されます。ハイパーバイザーは、オペレーティングシステム上にインストールする (ラップトップの場合など) こともできますが、ハードウェア上に直接インストールする (サーバーの場合など) こともでき、多くの企業が仮想化しているのは後者の方法です。ハイパーバイザーは、物理リソースを分割して、仮想化環境で使用できるようにします。
リソースは、必要に応じて物理環境から多数の仮想化環境にパーティション分割されます。ユーザーは仮想化環境 (多くの場合、ゲストマシンまたは仮想マシンと呼ばれる) 内で対話し、計算を実行します。仮想マシンは、単一のデータファイルとして機能します。他のデジタルファイルと同様、あるコンピュータから別のコンピュータに移動でき、どちらのコンピュータでも開くことができ、同じように動作をすることが期待されます。
仮想化環境が稼働し、ユーザーまたはプログラムの発行する命令で物理環境のリソースが余分に必要になった場合、ハイパーバイザーはその要求を物理システムに渡し、変更内容をキャッシュに入れます。こうした処理すべては (特にその要求がカーネルベースの仮想マシン、すなわち KVM に基づくオープンソース・ハイパーバイザーによって送られる場合は) ほぼネイティブスピードで実行されます。
仮想化の種類
データ仮想化
さまざまな場所に分散しているデータを、単一のソースに統合することができます。データ仮想化により、企業はデータを動的供給として扱うことができます。つまり、複数のソースから取得したデータを 1 つにまとめ、新しいデータソースにスムーズに適合させ、ユーザーのニーズに合わせてデータを変換する処理機能を提供します。データ仮想化ツールは、複数のデータソースをまとめて 1 つのソースとして処理し、どのようなアプリケーションやユーザーに対しても、必要なデータを必要な形式で必要なときに提供できるようにします。
デスクトップ仮想化
デスクトップ仮想化は、単一のマシンに複数のオペレーティングシステムを導入できるオペレーティングシステムの仮想化と混同されがちです。デスクトップ仮想化では、中央の管理者 (または自動管理ツール) が、シミュレートされたデスクトップ環境を数百もの物理マシンに一度にデプロイできます。マシンごとに物理的にインストール、設定、およびアップデートする従来のデスクトップ環境とは異なり、デスクトップ仮想化では、管理者はすべての仮想デスクトップの設定、更新、およびセキュリティチェックを一括で実行できます。
サーバーの仮想化
サーバーは、大量の特定のタスクを円滑に処理するためコンピュータです。そのため、ラップトップやデスクトップなどの他のコンピュータは、それ以外のさまざまなタスクを実行できます。サーバーを仮想化すると、そうした特定の機能がより多く処理できるようになるだけでなく、仮想化したサーバーを分割し、そのコンポーネントを使用して複数の機能を提供できるようになります。
オペレーティングシステムの仮想化
オペレーティングシステムの仮想化は、カーネル、つまりオペレーティングシステムの中央タスクマネージャーで行われます。これは、Linux 環境と Windows 環境を並列に実行する手段として有効です。企業は仮想オペレーティングシステムをコンピュータに導入することにより、次のことも実現できます。
- それほど革新的なコンピュータ能力を必要としないため、ハードウェアコストが大幅に削減される
- すべての仮想インスタンスの監視と分離が可能なため、セキュリティが向上する
- ソフトウェア・アップデートなど、IT サービスにかかる時間を限定する
ネットワーク機能仮想化
ネットワーク機能の仮想化 (NFV) では、ネットワークの主要な機能 (ディレクトリサービス、ファイル共有、IP 設定など) を分割して、複数の環境に分散させることができます。ソフトウェア機能をそれがかつて実行されていた物理マシンから独立させれば、特定の機能を 1 つのパッケージにまとめて新しいネットワークとし、1 つの環境に割り当てることができます。ネットワークの仮想化により、複数の独立したネットワークを構築するために必要なスイッチ、ルーター、サーバー、ケーブル、ハブなどの物理コンポーネントの数を削減できます。そのため、特に通信業界では広く採用されています。
仮想インフラストラクチャを Red Hat に移行する理由
このような決断は、インフラストラクチャ以外の事項も考慮しなければなりません。インフラストラクチャに依存するテクノロジーをサポートするために何ができるか (できないか) も重要です。高額化するベンダーとの契約に縛られると、クラウド、コンテナ、自動化システムなど、先進的なテクノロジーに投資する余裕が制限されてしまいます。
しかし、オープンソース仮想化テクノロジーは、高騰するエンタープライズ向けライセンス契約に縛られません。Fortune 500 企業の 90% 以上が信頼する同じソースコードへのフルアクセスを提供します。* つまり、俊敏性の実現、ハイブリッドクラウドのデプロイ、自動化テクノロジーに導入を阻むものは何もないのです。
*Red Hat 顧客データとフォーチュン 500 リスト、2018 年 6 月