ウェブサイト検索

RHCSA シリーズ: KVM を使用した仮想化とゲスト管理の要点 - パート 15


virtualize という言葉を辞書で調べると、「 何かの(実際ではなく) 仮想的なバージョンを作成すること」を意味することがわかります。コンピューティングにおける仮想化という用語は、仮想化スキーマではホストと呼ばれる、同じ物理 (ハードウェア) システム上で複数のオペレーティング システムを同時に実行し、互いに分離できることを指します。

仮想マシン モニター (ハイパーバイザーとも呼ばれます) の使用を通じて、仮想マシン (ゲストと呼ばれます) に仮想リソース (CPU、RAM、ストレージ、ネットワークなど) が提供されます。いくつか例を挙げると、基盤となるハードウェアからのインターフェイスなど)。

これを念頭に置くと、仮想化の主な利点の 1 つは、コストの削減 (機器とネットワーク インフラストラクチャ、およびメンテナンスの労力の点で) と、必要なすべてのハードウェアを収容するために必要な物理スペースの大幅な削減であることがわかります。

この簡単なハウツーではすべての仮想化方法をカバーできるわけではないため、この主題の詳細については、概要にリストされているドキュメントを参照することをお勧めします。

この記事は、KVM (カーネルベースの仮想マシン) とコマンドライン ユーティリティを使用したRHEL 7 での仮想化の基礎を学ぶための出発点となることを目的としたものであり、仮想化の基礎を学ぶことを目的としたものではないことに注意してください。 - トピックについての深い議論。

ハードウェア要件の確認とパッケージのインストール

仮想化をセットアップするには、CPU が仮想化をサポートしている必要があります。次のコマンドを使用して、システムが要件を満たしているかどうかを確認できます。


grep -E 'svm|vmx' /proc/cpuinfo

次のスクリーンショットでは、svm で示されているように、現在のシステム (AMD マイクロプロセッサを搭載) が仮想化をサポートしていることがわかります。 Intel ベースのプロセッサを使用している場合、上記のコマンドの結果には代わりに vmx が表示されます。

さらに、ホストのファームウェア (BIOS または UEFI) で仮想化機能を有効にする必要があります。

次に、必要なパッケージをインストールします。

  1. qemu-kvm は KVM ハイパーバイザーのハードウェア エミュレーションを提供するオープン ソースのバーチャライザーですが、qemu-img はディスク イメージを操作するためのコマンド ライン ツールを提供します。
  2. libvirt には、オペレーティング システムの仮想化機能と対話するためのツールが含まれています。
  3. libvirt-python には、Python で作成されたアプリケーションが libvirt によって提供されるインターフェイスを使用できるようにするモジュールが含まれています。
  4. libguestfs-tools: 仮想マシン用のその他のシステム管理者コマンド ライン ツール。
  5. virt-install: 仮想マシン管理用のその他のコマンドライン ユーティリティ。

yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

インストールが完了したら、libvirtd サービスを開始して有効にしてください。


systemctl start libvirtd.service
systemctl enable libvirtd.service

デフォルトでは、各仮想マシンは同じ物理サーバー内の残りの仮想マシンおよびホスト自体とのみ通信できます。ゲストが LAN 内の他のマシンやインターネットにアクセスできるようにするには、ホストにブリッジ インターフェイス (br0 など) をセットアップする必要があります。

1. メイン NIC 構成に次の行を追加します (おそらく /etc/sysconfig/network-scripts/ifcfg-enp0s3)。


BRIDGE=br0

2. これらの内容を含む br0 の構成ファイル (/etc/sysconfig/network-scripts/ifcfg-br0) を作成します ( IP アドレス、ゲートウェイ アドレス、および DNS 情報を変更する必要がある場合があります):


DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4

3. 最後に、/etc/sysctl.conf で次のようにしてパケット転送を有効にします。


net.ipv4.ip_forward = 1

そして、現在のカーネル構成に変更をロードします。


sysctl -p

この種のトラフィックを許可する必要があることを firewalld に指示する必要がある場合もあることに注意してください。サポートが必要な場合は、同じシリーズのそのトピックに関する記事 (パート 11: FirewallD と Iptables を使用したネットワーク トラフィック制御) を参照してください。