GNU/Linux >> Linux の 問題 >  >> Linux

Linux KVM をインストールしてゲスト VM を作成する方法と例

KVM はカーネルベースの仮想マシンの略です。

名前が示すように、これは仮想化をサポートするハードウェア上の Linux OS 向けのカーネル ベースの仮想化テクノロジです。

ゲスト オペレーティング システムは、完全仮想化または準仮想化することができます。

準仮想化では、プロセッサやメモリなどのリソースを効果的に使用して、1 セットのハードウェア上で複数のオペレーティング システムを実行できます。準仮想化では、オペレーティング システムが仮想マシンで動作するように変更されます。これにより、仮想環境では実行が困難な操作の実行に必要な実行時間が最小限に抑えられます。

これは、KVM に関する進行中の一連の記事の最初の記事です。

1. VM を管理するツール

KVM パッケージは、仮想マシンを管理するためのハイパーバイザー固有のツールである qemu-kvm を提供します。

このツールの代わりに、仮想マシンを管理するためのより便利で推奨される方法である libvirt として知られるソフトウェア パッケージを使用できます。このソフトウェアには、API ライブラリ、デーモン (libvirtd)、およびコマンド ライン ユーティリティ (virsh) が含まれています。

この libvirt ツールを使用して、KVM、Xen、VMWARE ESX などで実行されている既存の仮想マシンを管理できます。サポートされているハイパーバイザーの完全なリストは、libvirt に記載されています。

ゲスト VM の管理に使用できるその他のツールはほとんどありません。

  • virt-manager (Virtual Machine Manager):VM ゲスト用のグラフィカルな管理ツール
  • vm-install:VM ゲストを定義し、そのオペレーティング システムをインストールする、スクリプト ベースのメニュー駆動型ユーティリティです。
  • virt-viewer:x509 証明書認証と SASL 認証の TLS/SSL 暗号化をサポートする VM ゲスト用の X ビューアー クライアント。

2.ハードウェアの仮想化サポートを確認してください

CPU がハードウェア仮想化をサポートしているかどうかを確認するには、次のコマンドを実行します。

# egrep '(vmx|svm)' /proc/cpuinfo

フラグ セクションの下の出力に vmx または svm が表示される場合、ハードウェア (CPU) は仮想化をサポートしています。

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm 
constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni 
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 
popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid
.

3. KVM パッケージのインストール

ディストリビューション固有のパッケージ管理ツール (RedHat や CentOS の yum など) を使用して KVM パッケージをインストールします。

# yum install kvm

メインの kvm パッケージをインストールしたら、システム上の VM の管理に役立つ次の KVM 関連パッケージをインストールします。

# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

以下は、私のマシンにインストールされている KVM 関連のパッケージです。システムのバージョン番号は若干異なる場合があります。

# rpm -qa | egrep "virt|kvm|qemu"
python-virtinst-0.600.0-18.el6.noarch
qemu-img-0.12.1.2-2.415.el6.x86_64
libvirt-0.10.2-29.el6.x86_64
virt-viewer-0.5.6-8.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64
libvirt-python-0.10.2-29.el6.x86_64
virt-manager-0.9.0-19.el6.x86_64
virt-top-1.0.4-3.15.el6.x86_64
libvirt-client-0.10.2-29.el6.x86_64
gpxe-roms-qemu-0.9.7-6.10.el6.noarch
virt-what-1.11-1.2.el6.x86_64

modprobe コマンドを使用して再ロードできますが、パッケージをインストールしたら、マシンを再起動してすべての KVM および libvirt モジュールをロードすることをお勧めします。

vm-install (SUSE Linux の場合) および virt-install (RedHat の場合) の仮想マシン マネージャーを使用して、ゲスト OS をインストールできます。

ディスプレイが設定されると (exceed、reflectionX、またはその他のディスプレイ マネージャーによって)、インストール プロセスをガイドする仮想マシン ウィザードを作成するためのグラフィカル インターフェイスが提供されます。表示が設定されていない場合、つまり、X11 転送なしで ssh を使用してマシンに接続している場合、vm-install は、インストール用に VM ゲストを対話的にセットアップするためのコマンド ライン ウィザードを提供します。

4.ゲスト VM を作成するためのネットワーク前提条件

デフォルトでは、VM は同じサーバー上の他の VM (およびホスト自体) へのネットワーク アクセスのみを持ちます。 VM が VLAN にアクセスできるようにするには、ここで説明するように、ホストにネットワーク ブリッジを作成する必要があります。

/etc/sysconfig/network-scripts/ifcfg-eth0 を編集し、「BRIDGE=br0」という行を追加します (静的 IP は必ず削除してください)。

ファイル /etc/sysconfig/network-scripts/ifcfg-br0 を作成し、以下に示すようにエントリを追加します。静的または dhcp を使用できます。この場合、静的 IP を使用しました。

DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

ファイアウォール (iptables など) を実行している場合は、ブリッジ トラフィックを許可するルールを作成します。

5.ゲスト VM を作成するための追加の前提条件

VM イメージ ファイルのデフォルトの場所は、/var/lib/libvirt/images の下です。このディレクトリの下に十分なスペースがあることを確認してください。そうでない場合は、VM の作成中にイメージ ファイルを別のディレクトリに指定できます。

次の行を追加して、/etc/sysctl.conf で IP 転送を有効にします:

inet.ipv3.ip_forward=1

テスト段階で、SELinux を実行している場合は、SELinux を許容モードに設定して無効にします。

上記の変更が完了したら、システムを再起動してください。

6. virt-install を使用して新しいゲスト VM を作成する

virt-install ツールを使用して VM を作成します。このツールは、インタラクティブ モードと非インタラクティブ モードの両方で使用できます。

次の例では、VM を作成するために必要なすべての値を、コマンド ライン パラメーターとして virt-install コマンドに渡しています。

# virt-install \
 -n myRHELVM1 \
 --description "Test VM with RHEL 6" \
 --os-type=Linux \
 --os-variant=rhel6 \
 --ram=2048 \
 --vcpus=2 \
 --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \
 --graphics none \
 --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \
 --network bridge:br0

上記の virt-install コマンドで:

  • いいえ 仮想マシンの名前
  • 説明 VM に関する有効な説明。例:アプリケーション サーバー、データベース サーバー、ウェブ サーバーなど
  • os-type OS の種類は、Linux、Solaris、Unix、または Windows です。
  • OS バリアント 上記の os-type の配布タイプ。たとえば、Linux の場合は rhel6、centos6、ubuntu14、suse11、fedora6 などになります。Windows の場合は win2k、win2k8、win8、win7 になります
  • ラム VM のメモリ (MB)
  • vcpu VM の仮想 CPU の総数。
  • ディスク パス =/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 VM イメージ ファイルが保存されるパス。サイズ (GB)。この例では、この VM イメージ ファイルは 10 GB です。
  • グラフィックなし これは、グラフィカル VNC ウィンドウの代わりに VM シリアル ポートでテキスト コンソールを使用するように virt-install に指示します。 xmanager をセットアップしている場合は、このパラメーターを無視できます。
  • cdrom インストール イメージの場所を示します。 NFS または http のインストール場所 (–cdrom の代わり) を指定できます。例:–location=http://.com/pub/rhel6/x86_64/
  • ネットワーク ブリッジ:br0 この例では、ブリッジ アダプター br0 を使用します。ブリッジ アダプターの代わりに、特定のポートに独自のネットワークを作成することもできます。 NAT を使用する場合は、VMnetwork1 と呼ばれる仮想ネットワーク名を持つネットワーク パラメーターに以下のようなものを使用します。すべてのネットワーク構成ファイルは、仮想マシンの /etc/libvirt/qemu/networks/ の下にあります。例:–network network=VMnetwork1

7.仮想マシンの一覧表示

「console=tty0 console=ttyS0,115200」で grub メニューを編集して、SSH ウィンドウでのインストール プロセス中に画面のコンソールを表示できます。これにより、ガイド付きインストールで OS をインストールできます。それ以外の場合は、表示に X サーバーを使用できます。

次のコマンドは、OS にインストールされているすべての仮想マシンを表示します。この例では、このシステムに 2 つの VM がインストールされています。

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     dev-dev-vm                     running
 2     myRHELVM1                      running

8. VM 構成ファイルの編集

VM が作成されると、次の場所に VM 構成ファイルが表示されます。構成ファイルの名前は、.xml 拡張子が付いた VM の名前になります。

# ls -l /etc/libvirt/qemu/myRHELVM1.xml
-rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml

このファイルを手動で編集することは避け、代わりにコマンド virsh edit を使用してください。ドメイン (仮想マシン) を編集するには、次の手順を実行します:

virsh edit myRHELVM1

9. VM コンソールに接続

仮想マシンのコンソールに接続するには、次のコマンドを使用します。 「ctrl + ]」を使用して、VM コンソールを終了できます。

virsh console myRHELVM1

ホストで X サーバーを実行していない場合、ネットワークが利用できない場合、VM のシリアル コンソールに接続することが VM にログインする唯一の方法である可能性があります。

VM のコンソールへのアクセスの設定は、適切なカーネル ブート パラメータを VM に追加するだけの物理サーバーと同じです。

たとえば、RHEL VM (または CentOS VM) の場合、次のパラメーターを /etc/grub.conf のカーネル ブート行に追加してから、VM を再起動します。

console=tty0 console=ttyS0,115200

または、次のエントリを /etc/grub.conf ファイルに追加することもできます。

serial --unit=0 --speed=115200
terminal --timeout=5 serial console

10. VM 情報の表示

VM 情報を表示するには、次のコマンドを使用します:

# virsh dominfo myRHELVM1
Id:             5
Name:           myRHELVM1
UUID:           58083ae7-51db-50c3-64d8-bc4c49f642d0
OS Type:        Linux
State:          running
CPU(s):         2
CPU time:       207.6s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)

11. VM の CPU とメモリの使用量を表示

仮想マシンの CPU とメモリの使用状況を表示するには、以下に示すように virt-top コマンドを使用します。

# virt-top
virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB
3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0
CPU: 0.1%  Mem: 4096 MB (4096 MB by guests)
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME
    5 R    0    0 1546    0  0.0  6.0   3:29.55 dev-dev-vm
    8 R    0    0 1546    0  0.0  6.0   1:42.17 myRHELVM2
    -

12. virsh を使用して VM をシャットダウン、再起動、または起動する

VM をシャットダウンするには、次の手順を実行します:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

VM を再起動するには、次の手順を実行します。

# virsh reboot myRHELVM1

仮想マシンを起動またはパワーオンするには、次の手順を実行します。 VM が起動したら、「virsh list –all」を実行して、実行中のすべての VM を表示します。

# virsh start myRHELVM1
Domain myRHELVM1 started

KVM シリーズの次の記事では、個々の VM の構成を編集および操作する方法について詳しく説明します。


Linux
  1. Linuxでの例で「cat」および「tac」コマンドを使用する方法

  2. LinuxにAnsibleをインストールしてテストする方法

  3. Linux上のFlatpak:それは何であり、それを使ってアプリをインストールする方法

  1. Linuxでファイルとディレクトリを圧縮する方法(例付き)

  2. Linuxでパイプと名前付きパイプを使用する方法(例付き)

  3. LinuxでFlatpakをインストールして使用する方法

  1. LinuxにElasticsearchとKibanaをインストールする方法

  2. コマンドを使用してLinux画面をインストールして使用する方法

  3. Linux サーバーに CVS をインストールして CVS リポジトリを作成する方法