3.4. 仮想化ハードウェアデバイス

Red Hat Enterprise Linux 7 上の仮想化により、仮想マシンは以下の 3 種の異なるデバイスとして、ホストの物理ハードウェアを使用できるようになります。
  • 仮想化デバイスおよびエミュレートされたデバイス
  • 準仮想化デバイス
  • 物理共有デバイス
これらのハードウェアデバイスはすべて、仮想化マシンに物理的にアタッチされたように表示されますが、デバイスドライバーの機能の仕方が異なります。

3.4.1. 仮想化デバイスおよびエミュレートされたデバイス

KVM は、ソフトウェアに多くの仮想マシン向けコアデバイスを実装します。これらのエミュレートされたハードウェアデバイスは、オペレーティングシステムの仮想化に必須のものです。エミュレートされたデバイスは、完全にソフトウェア内に存在する仮想デバイスのことです。
さらに、エミュレートされたドライバーは、物理デバイスまたは仮想ソフトウェアデバイスを使用することができます。エミュレートされたドライバーは、仮想マシンと (ソースデバイスを管理する) Linux カーネルの間の変換層です。デバイスレベルの指示は KVM ハイパーバイザーによって完全に変換されます。Linux カーネルで認識される、(ストレージやネットワーク、キーボード、マウスなど) 同じタイプのデバイスはいずれも、エミュレートされたドライバーのバッキングソースデバイスとして使用可能です。
仮想 CPU (vCPUS)
Red Hat Enterprise Linux 7.2 以降では、ホストの CPU の数にかかわらず、ホストシステムに最大 240 個の仮想 CPU (vCPU) を設定して、ゲストで使用できるように公開できます。この数は、Red Hat Enterprise Linux 7.0 の 160 個から増加しています。
エミュレートされたシステムコンポーネント
以下のコアシステムコンポーネントは基本的なシステム機能を提供するためにエミュレートされます。
  • Intel i440FX ホスト PCI ブリッジ
  • PIIX3 PCI to ISA ブリッジ
  • PS/2 マウスおよびキーボード
  • EvTouch USB グラフィックタブレット
  • PCI UHCI USB コントローラーおよび仮想化 USB ハブ
  • エミュレートされたシリアルポート
  • EHCI コントローラー、仮想化 USB ストレージ、USB マウス
  • USB 3.0 xHCI ホストコントローラー (Red Hat Enterprise Linux 7.3 のホストコントローラー)
エミュレートされたストレージドライバー
ストレージデバイスとストレージプールは、これらのエミュレートされたドライバーを使用してストレージデバイスを仮想マシンにアタッチすることができます。ゲストは、エミュレートされたストレージドライバーを使用してストレージプールにアクセスします。
すべての仮想デバイスと同様、ストレージドライバーはストレージデバイスではない点に注意してください。 バッキングストレージデバイスやファイル、 ストレージプールボリュームなどを仮想ゲストにアタッチするために使用するのがドライバーです。対応する任意のタイプのストレージデバイス、ファイル、ストレージプールボリュームをバッキングストレージデバイスにすることができます。
エミュレートされたIDE ドライバー
KVM は 2 種類のエミュレートされた PCI IDE インターフェースを提供します。エミュレートされた IDE ドライバーを使用して、最大 4 つの仮想 IDE ハードディスクまたは仮想 IDE CD-ROM ドライブの組み合わせを仮想マシンにアタッチすることができます。エミュレートされた IDE ドライバーは、仮想CD-ROM および DVD-R ドライブにも使用できます。
エミュレートされたフロッピーディスクドライブドライバー
エミュレートされたフロッピーディスクドライブドライバーは、仮想フロッピードライブの作成に使用されます。
エミュレートされたサウンドデバイス
エミュレートされた (Intel) HDA サウンドデバイスである intel-hda は以下のゲストオペレーティングシステムでサポートされます。
  • Red Hat Enterprise Linux 7 (AMD64 および Intel 64 アーキテクチャー)
  • Red Hat Enterprise Linux 4、5、6 (32-bit AMD および Intel アーキテクチャーと AMD64 および Intel 64 アーキテクチャー)

注記

以下のエミュレートされたサウンドドライバーも利用可能ですが、特定のゲストオペレーティングシステムとの互換性の問題で推奨されません。
  • ac97 エミュレートされた Intel 82801AA AC97 Audio 互換サウンドカード
エミュレートされたグラフィックカード
以下のエミュレートされたグラフィックカードが提供されています。
  • Cirrus CLGD 5446 PCI VGA カード
  • Bochs VESA 拡張を搭載している標準的な VGA グラフィックカード (すべての非標準モードを含むハードウェアレベル)
ゲストは、Simple Protocol for Independent Computing Environments (SPICE) プロトコルまたは Virtual Network Computing (VNC) システムを使用してこれらのデバイスに接続できます。
エミュレートされたネットワークデバイス
以下のように、エミュレートされたネットワークデバイスが 2 種類提供されます。
  • e1000 デバイスは、Intel E1000 ネットワークアダプター (Intel 82540EM、82573L、82544GC) をエミュレートします。
  • rtl8139 デバイスは、 Realtek 8139 ネットワークアダプターをエミュレートします。
エミュレートされたウォッチドッグデバイス
ウォッチドッグは、仮想マシンがオーバーロードするか、または応答しない場合に仮想マシンを自動的に再起動するために使用できます。
Red Hat Enterprise Linux 7 には、以下のエミュレートされたウォッチドッグデバイスが含まれます。
  • i6300esb エミュレートされた Intel 6300 ESB PCI ウォッチドッグデバイス。 Red Hat Enterprise Linux versions 6.0 以降のゲストオペレーティングシステムに対応しており、使用が推奨されているデバイスです。
  • ib700 エミュレートされた iBase 700 ISA ウォッチドッグデバイス。ib700 ウォッチドッグデバイスは、Red Hat Enterprise Linux 6.2 以降を使用するゲストにのみ対応しています。
両方のウォッチドッグデバイスは、Red Hat Enterprise Linux 6.2 以降のゲストオペレーティングシステム向けの 32 ビットおよび 64 ビット AMD および Intel アーキテクチャーでサポートされます。

3.4.2. 準仮想化デバイス

準仮想化は、ゲストがホストマシン上のデバイスを使用するための高速かつ効率的な通信手段を提供します。KVM は、ハイパーバイザーとゲスト間のレイヤーとして Virtio API を使用し、準仮想化されたデバイスを仮想マシンに提供します。
準仮想化デバイスは、I/O のレイテンシーを短縮し、I/O スループットをベアメタルレベル近くにまで高めるものもあれば、その他の方法では利用できない機能を仮想マシンに追加するものもあります。I/O 集約型アプリケーションを稼働している仮想マシンには、エミュレートされたデバイスの代わりに準仮想化ドライバーの使用が推奨されます。
すべての virtio デバイスは、ホストデバイスとゲストドライバーの 2 つの部分から構成されます。準仮想化デバイスドライバーにより、ゲストのオペレーティングシステムはホストシステム上の物理デバイスにアクセスできます。
このデバイスを使用するには、準仮想化デバイスドライバーをゲストオペレーティングシステムにインストールする必要があります。デフォルトでは、Red Hat Enterprise Linux 4.7 以降、Red Hat Enterprise Linux 5.4 以降、および Red Hat Enterprise Linux 6.0 以降に準仮想化デバイスドライバーが含まれています。

注記

準仮想化デバイスおよびでドライバーの使用に関する詳しい情報は、Red Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。
準仮想化ネットワークデバイス (virtio-net)
準仮想化ネットワークデバイスは、仮想マシンにネットワークアクセスを提供する仮想ネットワークデバイスであり、入出力パフォーマンスを強化し、レイテンシーを短縮します。
準仮想化ブロックデバイス (virtio-blk)
準仮想化ブロックデバイスは、高パフォーマンスの仮想ストレージデバイスであり、これにより、I/O パフォーマンスが強化され、レイテンシーが短縮されます。準仮想化ブロックデバイスはハイパーバイザーによってサポートされ、仮想マシンにアタッチされます (フロッピーディスクドライブは例外で、これにはエミュレートが必要になります)。
準仮想化コントローラーデバイス (virtio-scsi)
準仮想化 SCSI コントローラーデバイスは、virtio-blk に代わる、より柔軟でスケーラブルな選択肢を提供します。virtio-scsi ゲストはターゲットデバイスの機能一式を継承でき、わずか 28 デバイスしか処理できない virtio-blk に比べて数百ものデバイス処理が可能です。
virtio-scsi は以下のゲストオペレーティングシステムに完全対応しています。
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6.4 以降
準仮想化クロック
タイムスタンプカウンター (TSC) をクロックソースとして使用するゲストは、時間管理の問題に直面することがあります。一定したタイムスタンプカウンターを持たないホストに関しては、KVM はゲストに準仮想化クロックを提供することで対処します。さらに、準仮想化クロックは、ゲストによるスリープ (S3) の実行または RAM へのサスペンド操作の後に必要な時間の調整を支援します。
準仮想化シリアルデバイス (virtio-serial)
準仮想化シリアルデバイスは、 バイトストリーム指向の文字ストリームデバイスで、ホストのユーザー領域とゲストのユーザー領域をつなぐシンプルな通信インターフェースを提供します。
バルーンデバイス (virtio-balloon)
バルーンデバイスは仮想マシンの RAM の一部を未使用として指定することが可能で (バルーン 膨張)、これによりメモリーが解放されて、ホスト (またはホスト上の他の仮想マシン) が使用できるようになります。仮想マシンが再度メモリーを必要とした際には、バルーンを 収縮 させて、ホストが RAM を仮想マシンに配分し直すことができます。
準仮想化乱数ジェネレーター (virtio-rng)
準仮想化乱数ジェネレーターにより、仮想マシンがホストから直接、エントロピーまたは乱数を収集して暗号化データやセキュリティーに使用することができます。仮想マシンは (ハードウェアの使用状況など) 一般的なインプットを入手できないため、エントロピーが不足することが頻繁にあります。エントロピーの調達には多大な時間を要することがあるため、virtio-rng はホストからゲスト仮想マシンに直接エントロピーを注入することで、このプロセスを高速化します。
準仮想化グラフィックカード (QXL)
準仮想化グラフィックカードは、QXL ドライバーと連携して機能し、リモートホストから仮想マシンのグラフィックスを表示する効率的な方法を提供します。SPICE を使用するには QXL ドライバーが必要です。

3.4.3. 物理ホストデバイス

一部のハードウェアプラットフォームでは、仮想マシンが直接ハードウェアデバイスやコンポーネントにアクセスすることができます。仮想化におけるこのプロセスは、デバイス割り当て または パススルー として知られています。
VFIO デバイス割り当て
Virtual Function I/O (VFIO) は、Red Hat Enterprise Linux 7 の新しいカーネルドライバーであり、これにより、仮想マシンが高パフォーマンスで物理ハードウェアにアクセスできるようになります。
VFIO は、ホストシステム上の PCI デバイスを直接仮想マシンにアタッチするため、ゲストはさまざまなタスクで PCI デバイスへの排他的アクセスが可能になります。これにより、PCI デバイスはゲスト仮想マシンに物理的にアタッチされているかのように表示され、動作します。
VFIO は、KVM ハイパーバイザーからデバイス割り当てを移動して、カーネルレベルでデバイスの分離を強制的に行うことで、これまでの PCI デバイス割り当てのアーキテクチャーを向上します。VFIO は、セキュリティーが強化されており、セキュアブートとの互換性があります。VFIO は Red Hat Enterprise Linux 7 におけるデフォルトのデバイス割り当てメカニズムです。
VFIO は、Red Hat Enterprise Linux 6 の最大 8 デバイスから、Red Hat Enterprise Linux 7 の割り当てデバイス数を 32 に増やしました。VFIO は、NVIDIA GPU の割り当てもサポートします。

注記

VFIO デバイス割り当てに関する詳しい情報はRed Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。
USB、PCI、SCSI パススルー
KVM ハイパーバイザーは、ホストシステム上にある USB、PCI、SCSI デバイスの仮想マシンへのアタッチをサポートします。USB、PCI、SCSI デバイスを割り当てることで、これらのデバイスが仮想マシンに物理的にアタッチされているかのように表示され、動作します。このように、ゲストがさまざまなタスクで、これらのデバイスに排他的にアクセスできるようになります。

注記

USB、PCI、SCSI パススルーに関する詳しい情報はRed Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。
SR-IOV
SR-IOV (シングルルート I/O 仮想化) は、単一の物理 PCI 機能を拡張して PCI リソースを個別の 仮想機能 (VF) として共有する PCI Express (PCI-e) 規格です。PCI デバイスを割り当てることで、別の仮想マシンは各機能を使用できます。
SR-IOV 対応 PCI-e デバイスは、シングルルート機能 (例えば、単一イーサネットポート) を提供し、複数の個別の仮想デバイスを固有の PCI デバイス機能として提示します。仮想デバイスはそれぞれ、固有の PCI 設定領域、メモリーマップドレジスター、個別の MSI ベースの割り込みを備えている場合があります。

注記

SR-IOV に関する詳細については、Red Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。
NPIV
N_Port ID Virtualization (NPIV) とは、ファイバーチャネルデバイスの一部で利用可能な機能です。NPIV では単一の物理的な N_Port を複数の N_Port ID として共有します。SR-IOV が PCIe インターフェースに提供するファイバーチャネル Host Bus Adaptor (HBA) に対して同様の機能を提供します。NPIV を使用すると、ストレージエリアネットワーク (SAN) への仮想ファイバーチャネルイニシエーターを仮想マシンに提供できます。
NPIV は、エンタープライズレベルのストレージソリューションで高密度の仮想化環境を提供できます。

注記

NPIV に関する詳細は、Red Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。

3.4.4. ゲスト CPU モデル

CPU モデル は、ゲストオペレーティングシステムに公開するホスト CPU 機能を定義します。KVMlibvirt には、複数の現行プロセッサーモデルの定義が含まれ、これによりユーザーは新しい CPU モデルでのみ利用できる CPU 機能を有効にすることができます。ゲストに公開できる CPU 機能のセットは、ホスト CPU、カーネル、および qemu-kvm コードのサポートによって異なります。
異なる CPU 機能のセットを持つ複数のホスト間で仮想マシンを安全にマイグレーションできるように、デフォルトでは KVM により、ホスト CPU の全機能がゲストオペレーティングシステムに公開されず、その代わりに、CPU 機能は選択された CPU モデルに基づいて公開されます。仮想マシンで所定の CPU 機能が有効にされている場合には、この機能をゲストへ公開するようにサポートしていないホストに移行することはできません。

注記

ゲスト CPU モデルに関する詳しい情報はRed Hat Enterprise Linux 7 仮想化の導入および管理ガイドを参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。