仮想化

KVM とは

KVM (Kernel-based Virtual Machine:カーネルベースの仮想マシン) は、Linux® に組み込まれたオープンソースの仮想化テクノロジーです。具体的には、KVM を使用すると、Linux をハイパーバイザーに変貌させることができます。これによりホストマシンは、ゲストや仮想マシン (VM) と呼ばれる複数の独立した仮想化環境を稼働させることができます。

KVM は Linux の一部です。Linux 2.6.20 以降をお持ちの場合は、KVM が搭載されています。KVM は 2006 年に初めて発表され、1 年後にメインラインの Linux カーネルバージョンに統合されました。KVM は既存の Linux コードの一部であるため、追加のエンジニアリングを必要とせず、Linux の新機能、修正、拡張機能をすぐに利用できます。


KVM の仕組み

KVM は Linux を Type 1 (ベアメタル) ハイパーバイザーに変換します。すべてのハイパーバイザーには、VM を稼働するために、メモリーマネージャー、プロセス・スケジューラー、入出力 (I/O) スタック、デバイスドライバー、セキュリティ・マネージャー、ネットワークスタックなど、オペレーティング・システム・レベルのコンポーネントが必要です。KVM は Linux カーネルの一部であるため、これらのコンポーネントをすべて備えています。すべての VM が、ネットワークカード、グラフィックス・アダプター、CPU、メモリ、ディスクなどの専用の仮想ハードウェアを使用し、標準 Linux スケジューラーによってスケジュールされた通常の Linux プロセスとして実装されます。


KVM の実装

KVM の実装に必要なのは、要約すると 2007 年以降にリリースされたバージョンの Linux を実行すること、仮想化機能をサポートする X86 ハードウェアにインストールすることです。この 2 つの条件をどちらも満たしていれば、既存の 2 つのモジュール (ホスト・カーネル・モジュールとプロセッサー固有のモジュール)、エミュレータ、および追加のシステムの実行をサポートするドライバーをロードするだけで済みます。

KVM の機能

KVM とは、要するに Linux です。KVM は Linux の一部であり、Linux は KVM の一部です。Linux に備わっているものは、KVM にも備わっています。しかし、企業はハイパーバイザーとして KVM を好む傾向があります。この背後には、いくつかの機能的なメリットが存在します。

セキュリティ

KVM は、Security-Enhanced Linux (SELinux)セキュア仮想化 (sVirt) を組み合わせて使用し、VM のセキュリティと独立性を強化します。SELinux は VM の周囲にセキュリティ境界を設定します。sVirt は SELinux の機能を拡張し、強制アクセス制御 (MAC) セキュリティをゲスト VM に適用できるようにして、手動によるラベル付けのエラーを防ぎます。

ストレージ

KVM は、一部のローカルディスクやネットワーク接続型ストレージ (NAS) など、Linux がサポートするすべてのストレージを使用できます。マルチパス I/O を使用すると、ストレージが向上し、冗長性がもたらされます。KVM はさらに、共有ファイルシステムもサポートしているため、複数のホストで VM イメージを共有できます。ディスクイメージは、シンプロビジョニングをサポートしており、事前割り当てではなく、オンデマンドでストレージを割り当てます。

ハードウェアのサポート

KVM は、さまざまな認定済みの Linux 対応ハードウェア・プラットフォームを使用できます。ハードウェアベンダーは定期的にカーネル開発に貢献しているため、最新のハードウェア機能がいち早く Linux カーネルに採用されることも珍しくありません。

メモリ管理

KVM は、不均一メモリアクセスや Kernel Samepage Merging など、Linux のメモリ管理機能を継承しています。VM のメモリは、スワップされ、パフォーマンスを向上させるために大規模なボリューム単位でバックアップされ、ディスクファイルによって共有またはバックアップされます。

ライブ・マイグレーション

KVM は、ライブ・マイグレーションをサポートしています。ライブ・マイグレーションとは、実行中の VM をサービスの中断なしに物理ホスト間で移動する機能です。VM の再配置中には、VM の電源を入れたままにして、ネットワーク接続をアクティブのまま維持し、アプリケーションを実行し続けます。KVM は VM の現在の状態も保存するため、後からそれを保管して再開することができます。

パフォーマンスと拡張性

KVM は Linux のパフォーマンスを継承し、ゲストマシンとリクエストの数が増えると、負荷需要に合わせてスケーリングします。KVM を使用すると、最も需要の多いアプリケーション・ワークロードを仮想化することができます。KVM は、データセンターやプライベートクラウド (OpenStack® 経由) などの多くのエンタープライズ仮想化セットアップの基礎となります。

スケジューリングとリソース制御

KVM モデルでは、VM は Linux プロセスであり、カーネルによってスケジューリングおよび管理されます。Linux スケジューラーは、Linux プロセスに割り当てられたリソースを細かく制御し、特定のプロセスのサービス品質を保証します。KVM ではこれに、完全に公平なスケジューラー、制御グループ、ネットワーク名前空間、リアルタイム拡張などが含まれます。

レイテンシー短縮と優先順位向上

Linux カーネルはリアルタイム拡張機能を備えているため、VM ベースのアプリケーションを (ベアメタルよりも) 低いレイテンシーかつ高い優先順位で実行できます。カーネルはまた、計算時間が長いプロセスを小規模のコンポーネントに分割します。コンポーネントはそれに応じてスケジューリングされ、処理されます。

KVM の管理

単一のワークステーションで起動された数個の VM を、管理ツールを使用せずに手動で管理することも可能ですが、大企業は仮想化管理ソフトウェアを使用します。このソフトウェアは、仮想化環境やその基盤にある物理ハードウェアとインタフェースして、リソース管理を簡素化し、データ分析を向上させ、運用を効率化します。Red Hat は、この目的のために Red Hat Virtualization を作成しました。


KVM と Red Hat

Red Hat は KVM のメリットを高く認め、すべての Red Hat 製仮想化製品のハイパーバイザーとして KVM を採用しています。また、Red Hat は KVM コミュニティのコントリビューターとして、継続的にカーネルコードを改善しています。しかし、KVM は Linux の一部であるため、すでに Red Hat Enterprise Linux にも含まれています。では、なぜ Red Hat Virtualization が必要なのでしょうか。

Red Hat は 2 つのバージョンの KVM を提供しています。Red Hat Enterprise Linux に付属する KVM は、すべてのハイパーバイザー機能と基本的な管理機能を備えており、単一のホスト上で最大 4 つの独立型仮想マシンを実行できます。Red Hat Virtualization には、無制限のゲストマシンのエンタープライズ管理を可能にする高度なバージョンの KVM が付属しています。これは、データセンター仮想化、テクニカル・ワークステーション、プライベートクラウドでの利用に最適で、開発環境にもプロダクション環境にも適しています。

旧式のオペレーティング・システムを必要とするレガシー・アプリケーションをご利用ですか?低リスクの環境で新しいアプリケーションを試してみたいとお考えですか?Red Hat Enterprise Linux は、1 つのホスト上で最大 4 つの独立型 VM を実行するための基本的なハイパーバイザーとして構成することができます。

1 つのソリューションで、幅広いニーズに対応。ベアメタル・ハードウェアから、オープンソース・システム、プロプライエタリー・システムに至るまで、あらゆる環境にインストールすることができます。何十、何百という仮想マシンのデプロイ作業を、高度なハイパーバイザーによって実現し、管理プラットフォームによって簡単にしましょう。

OpenStack® ワードマークと Square O Design は個別に、または一体として米国とその他の国における OpenStack Foundation の商標または登録商標であり、OpenStack Foundation の許諾の下に使用されています。Red Hat は、OpenStack Foundation と OpenStack コミュニティのいずれにも所属しておらず、公認や出資も受けていません。