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

仮想マシンモニター(ハイパーバイザーとも呼ばれる)を使用することで、仮想マシン(ゲストと呼ばれる)は、基礎となるハードウェアから仮想リソース(CPU、RAM、ストレージ、ネットワークインターフェースなど)を提供されます。
このように考えると、仮想化の主な利点の1つは、コストの節約(機器やネットワークインフラストラクチャ、およびメンテナンスの努力の面で)と、必要なすべてのハードウェアを収容するために必要な物理的スペースの大幅な削減です。
この簡単な手順では、すべての仮想化方法を網羅することはできませんので、この件に関する詳細については、要約にリストされているドキュメントを参照することをお勧めします。
この記事は、RHEL 7での仮想化の基本を学ぶための出発点であり、コマンドラインユーティリティを使用したKVM(Kernel-based Virtual Machine)の詳細な議論ではないことに留意してください。
ハードウェア要件の確認とパッケージのインストール
仮想化を設定するためには、CPUがそれをサポートしている必要があります。次のコマンドを使用して、システムが要件を満たしているかどうかを確認できます:
# grep -E 'svm|vmx' /proc/cpuinfo
次のスクリーンショットでは、現在のシステム(AMD マイクロプロセッサーを搭載)が svm によって仮想化をサポートしていることがわかります。Intelベースのプロセッサーを使用している場合、上記のコマンドの結果には vmx が表示されます。

さらに、ホストのファームウェア(BIOS または UEFI)で仮想化機能を有効にする必要があります。
必要なパッケージをインストールしてください:
- qemu-kvm は、KVMハイパーバイザーのためのハードウェアエミュレーションを提供するオープンソースの仮想化ソフトウェアであり、qemu-img はディスクイメージを操作するためのコマンドラインツールを提供します。
- libvirt には、オペレーティングシステムの仮想化機能とやり取りするためのツールが含まれています。
- libvirt-python には、Pythonで書かれたアプリケーションが libvirt が提供するインターフェースを使用できるモジュールが含まれています。
- libguestfs-tools:仮想マシンのためのさまざまなシステム管理者向けコマンドラインツール。
- 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に通知する必要があるかもしれません。この操作が必要な場合は、このシリーズの記事(Part 11: Network Traffic Control Using FirewallD and Iptables)を参照してください。
Source:
https://www.tecmint.com/kvm-virtualization-basics-and-guest-administration/