バーシュ 、 Virの略 tual Sh ellは、仮想ゲストマシンを管理するためのコマンドラインユーザーインターフェイスです。 Virshを使用すると、VMの作成、一覧表示、編集、開始、再起動、停止、一時停止、再開、シャットダウン、および削除を行うことができます。現在、KVM、LXC、Xen、QEMU、OpenVZ、VirtualBox、VMwareESXをサポートしています。このガイドでは、 KVMの管理方法について説明します。 LinuxのVirsh管理ユーザーインターフェイスを備えた仮想マシン。
LinuxマシンにKVMとVirshユーティリティがインストールされていることを確認してください。次のガイドでは、DEBおよびRPMベースのシステムにKVMをインストールする方法について説明します。
- Ubuntu20.04ヘッドレスサーバーにKVMをインストールして構成する
- CentOS8サーバーにKVMをインストールして構成する
- OpenSUSETumbleweedにKVMをインストールして構成する
1。 VirshコマンドでKVM仮想マシンを管理する
VirshとKVMを初めて使用する場合は、ヘルプマニュアルを読むことから始めることをお勧めします。 Virshの基本的な使い方を説明します。
1.1。ヘルプを得る
次のコマンドを入力して、使用可能なコマンドのリストと簡単な説明を表示します。
$ virsh help
コマンドラインからKVM仮想マシンを管理するために使用できるvirshコマンドの広範なリストが表示されます。

すべてを暗記する必要はありません。実行したいコマンドの説明を読んで使用するだけです。
コマンドは次のセクションにグループ化されています:
- ドメイン管理、
- ドメインモニタリング
- ホストとハイパーバイザー、
- チェックポイント
- インターフェース
- ネットワークフィルター
- ネットワーキング
- ノードデバイス
- 秘密、
- スナップショット
- バックアップ
- ストレージプール
- ストレージボリューム
- バーシュ自体。
各セクションには、特定の一連のタスクの実行に関連するコマンドが含まれています。 ネットワーキングなど、グループのヘルプセクションを表示できます。 、以下のように:
$ virsh help Networking
ネットワークタスクの実行に関連するコマンドが表示されます:
Networking (help keyword 'network'): net-autostart autostart a network net-create create a network from an XML file net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file net-destroy destroy (stop) a network net-dhcp-leases print lease info for a given network net-dumpxml network information in XML net-edit edit XML configuration for a network net-event Network Events net-info network information net-list list networks net-name convert a network UUID to network name net-start start a (previously defined) inactive network net-undefine undefine a persistent network net-update update parts of an existing network's configuration net-uuid convert a network name to network UUID net-port-list list network ports net-port-create create a network port from an XML file net-port-dumpxml network port information in XML net-port-delete delete the specified network port
特定のコマンドのヘルプセクションをさらに表示することもできます。たとえば、 "net-name"のヘルプセクションを表示します コマンド:
$ virsh help net-name NAME net-name - convert a network UUID to network name SYNOPSIS net-name <network> OPTIONS [--network] <string> network uuid
1.2。仮想マシンの一覧表示
実行モードまたは一時停止モードのゲスト仮想マシンのリストを表示するには、次のコマンドを実行します。
$ virsh list Id Name State --------------------
ご覧のとおり、実行モードまたは一時停止モードのゲストはありません。
-非アクティブを使用できます 非アクティブなゲストを一覧表示するオプション。
すべてのゲストマシンを表示するには、次を実行します:
$ virsh list --all Id Name State -------------------------------- - centos8-uefi shut off - nginx_centos8 shut off
上記の出力でわかるように、「centos8-uefi」と「nginx_centos8」という2つの仮想マシンがあります。両方とも電源がオフになっています。
1.3。仮想マシンを起動する
「centos8-uefi」などの仮想マシンを起動するには、次のコマンドを実行します。
$ virsh start centos8-uefi
以下のような出力が表示されます:
Domain centos8-uefi started
VMが実行されているかどうかを確認するには、「リスト」を使用します コマンド:
$ virsh list Id Name State ------------------------------ 1 centos8-uefi running
1.4。仮想マシンを保存する
実行中のVMの現在の状態を保存するには、次を実行します。
$ virsh save centos8-uefi centos8-save Domain centos8-uefi saved to centos8-save
このコマンドは、「centos8-uefi」という名前のゲストを停止し、「centos8-save」という名前のファイルにデータを保存します。ゲストマシンで使用されているメモリの量に応じて、これには少し時間がかかります。
1.5。仮想マシンを復元する
以前に保存したVMの状態を復元するには、次のようにファイル名を指定します。
$ virsh restore centos8-save Domain restored from centos8-save
「list」コマンドを使用してVMが復元されているかどうかを確認します:
$ virsh list Id Name State ------------------------------ 4 centos8-uefi running
1.6。仮想マシンを再起動します
実行中のVMを再起動するには、次を実行します。
$ virsh reboot centos8-uefi Domain centos8-uefi is being rebooted
1.7。仮想マシンの一時停止/一時停止
実行中のVMを一時停止するには、次の手順を実行します。
$ virsh suspend centos8-uefi Domain centos8-uefi suspended
「list」コマンドで確認してください:
$ virsh list Id Name State ----------------------------- 1 centos8-uefi paused
1.8。仮想マシンを再開する
一時停止したVMを再開するには、次のコマンドを実行します:
$ virsh resume centos8-uefi Domain centos8-uefi resumed
1.9。アクティブな仮想マシンを停止する
アクティブなVMを強制的に停止し、非アクティブな状態のままにするには、次のコマンドを実行します。
$ virsh destroy centos8-uefi Domain centos8-uefi destroyed
以下のように強制する代わりに、VMを正常に停止することもできます。
$ virsh destroy centos8-uefi --graceful Domain centos8-uefi destroyed
1.10。仮想マシンをシャットダウンする
実行中のVMの電源をオフにするには、次の手順を実行します。
$ virsh shutdown centos8-uefi Domain centos8-uefi is being shutdown
1.11。仮想マシンのXMLダンプを取得する
VMのXML構成ファイルを標準出力に表示するには、次のコマンドを実行します。
$ virsh dumpxml centos8-uefi
このコマンドは、仮想マシンの完全な構成の詳細(ソフトウェアとハードウェア)を表示します。

以下のように標準出力に表示するだけでなく、XMLダンプをファイルにエクスポートすることもできます。
$ virsh dumpxml centos8-uefi > centos8.xml
このコマンドは、「centos8-uefi」XMLファイルを「centos8.xml」という名前のファイルにダンプし、現在の作業ディレクトリに保存します。
1.12。 XMLダンプを使用して仮想マシンを作成する
以前に作成したゲストの既存のXMLを使用して、新しい仮想ゲストマシンを作成できます。まず、上記のようにXMLダンプを作成してから、次のようにXMLファイルを使用して新しいVMを作成します。
$ virsh create centos8.xml Domain centos8-uefi created from centos8.xml
このコマンドは、新しいVMを作成し、すぐに起動します。コマンドを使用して確認できます:

1.13。仮想マシンのXML構成ファイルを編集する
ゲストマシンに変更を加えたい場合は、その構成ファイルを編集して、必要に応じて変更を加えることができます。ゲストは、実行中またはオフライン中に編集できます。
$ virsh edit centos8-uefi
このコマンドは、$EDITOR変数で設定したデフォルトのエディターでファイルを開きます。
1.14。仮想マシンのコンソールアクセスを有効にする
KVMゲストマシンを作成した後、SSH、VNCクライアント、Virt-viewer、Virt-manager、Cockpit Webコンソールなどを介してアクセスできます。ただし、「virshconsole」コマンドを使用してアクセスすることはできません。 consoleコマンドは、ゲストの仮想シリアルコンソールを接続するために使用されます。 「virshconsole」コマンドを使用してKVMゲストにアクセスするには、ゲストマシンでシリアルコンソールアクセスを有効にする必要があります。 virshコンソールアクセスを有効にするには、次のガイドを参照してください。
- KVMゲストのVirshコンソールアクセスを有効にする方法
1.15。仮想マシンの名前を変更する
仮想マシンの名前を変更したい場合は、次のガイドを参照してください。
- KVMゲスト仮想マシンの名前を変更する方法
1.16。仮想マシンのドメインIDを表示する
実行中のゲスト仮想マシンのドメインIDを見つけるには、次を実行します。
$ virsh domid centos8-uefi 2
ドメインIDを取得するには、ゲストが実行されている必要があることに注意してください。
1.17。仮想マシンのドメイン名を表示する
実行中のVMのドメイン名を取得するには、次のコマンドを実行します。
$ virsh domname <domain-id or domain-uuid>
例:
$ virsh domname 2 centos8-uefi
ここでは、 2 ドメインIDです。
1.18。仮想マシンのUUIDを表示する
ゲストマシンのUUIDを見つけるには、次を実行します:
$ virsh domuuid <domain-name or domain-id>
例:
$ virsh domuuid centos8-uefi
または、
$ virsh domuuid 2
出力例:
de4100c4-632e-4c09-8dcf-bbde29170268
1.19。仮想マシンの詳細を表示する
ゲストマシンの情報を表示するには、以下のようにドメイン名、ドメインID、またはドメインuuidを使用します。
$ virsh dominfo centos8-uefi
または、
$ virsh dominfo 2
または、
$ virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268
出力例:
Id: -
Name: centos8-uefi
UUID: de4100c4-632e-4c09-8dcf-bbde29170268
OS Type: hvm
State: shut off
CPU(s): 2
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: apparmor
Security DOI: 0

1.20。 KVMホスト情報を表示する
ホストシステムの情報を取得するには、次を実行します。
$ virsh nodeinfo
出力例:
CPU model: x86_64
CPU(s): 4
CPU frequency: 1167 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 8058840 KiB
1.21。仮想CPU情報を表示する
仮想CPU情報を表示するには、次を実行します。
$ virsh vcpuinfo <domain-id or domain-name or domain-uuid>
例:
$ virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy
VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy
1.22。仮想マシンのIPアドレスを検索する
仮想マシンのIPアドレスを見つけることは大したことではありません。仮想マシンへのコンソールアクセスがある場合は、「ip」コマンドを使用してそのIPアドレスを簡単に見つけることができます。ただし、コンソールにアクセスしなくても、KVMVMのIPアドレスを特定することもできます。次のガイドでは、KVM仮想マシンのIPアドレスを見つける方法について説明します。
- KVM仮想マシンのIPアドレスを見つける方法
1.23。仮想マシンを削除する
VMが不要になった場合は、次のように削除してください。
$ virsh destroy centos8-uefi
$ virsh undefine centos8-uefi
最初のコマンドは、VMがすでに実行されている場合、VMを強制的に停止します。そして、2番目のコマンドは定義を解除して完全に削除します。
さらに、次のオプションを使用して、ストレージボリュームとスナップショットも削除できます。
--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)
2。仮想ネットワークの管理
LinuxでVirshコマンドを使用してKVM仮想マシンを管理する方法を学んだことを願っています。このセクションでは、virshコマンドラインユーティリティを使用してLinuxでKVM仮想ネットワークを管理するための重要なコマンドを一覧表示します。
2.1。仮想ネットワークを一覧表示する
利用可能な仮想ネットワークのリストを表示するには、次を実行します。
$ virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
ご覧のとおり、デフォルトの仮想ネットワークは1つだけです。
2.2。仮想ネットワークの詳細を表示する
仮想ネットワークの詳細を表示するには、次を実行します。
$ virsh net-dumpxml default
上記のコマンドで「default」をネットワーク名に置き換えます。
出力例:
<network connections='1'>
<name>default</name>
<uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:ee:35:49'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
2.3。仮想ネットワークを開始する
非アクティブなネットワークを開始するには、次を実行します:
$ virsh net-start <Name-Of-Inactive-Network>
ネットワークを自動起動するには:
$ virsh net-autostart <network-name>
2.4。仮想ネットワークのXMLダンプを作成する
既存の仮想ネットワークのXML構成ファイルを作成するには、次のコマンドを実行します。
$ virsh net-dumpxml default > default.xml
上記のコマンドは、「デフォルト」ネットワークのXML構成を作成し、現在のディレクトリの「default.xml」という名前のファイルに保存します。
catコマンドを使用してXMLファイルを表示できます:
$ cat default.xml
<network connections='1'>
<name>default</name>
<uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:ee:35:49'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
2.5。 XMLファイルから新しい仮想ネットワークを作成する
既存のXMLファイルを使用して新しい仮想ネットワークを作成し、すぐに開始するには、次のコマンドを実行します。
$ virsh net-create <Name-of-XMLfile>
XMLファイルからネットワークを作成したいが、自動的に開始したくない場合は、次のコマンドを実行します。
$ virsh net-define <Name-of-XMLfile>
2.6。仮想ネットワークを非アクティブ化する
アクティブなネットワークを非アクティブ化するには、次のコマンドを実行します:
$ virsh net-destroy <network-name>
2.7。仮想ネットワークを削除する
仮想ネットワークを削除するには、上記のように最初に仮想ネットワークを非アクティブ化してから、次のコマンドを実行します。
$ virsh net-undefine <Name-Of-Inactive-Network>
Virshには多くのコマンドとオプションがあります。 Linuxで完全な仮想環境をセットアップするには、Virshコマンドラインツールの使い方を完全に学ぶだけで十分です。 GUIアプリケーションは必要ありません。
詳細については、virshのマニュアルページを参照してください。
$ man virsh
3。 KVMゲストをグラフィカルに管理する
すべてのvirshコマンドを覚えておくことはほぼ不可能であり、不要です。コマンドラインからすべてのKvm管理タスクを実行するのが難しい場合は、Virt-managerやCockpitなどのグラフィカルなKVM管理ツールを試すことができます。
- コックピットWebコンソールを使用してKVM仮想マシンを管理する
- Virt-Managerを使用してKVM仮想マシンを管理する方法
結論
LinuxでVirsh管理ユーザーインターフェイスを使用してKVM仮想マシンを管理する方法を知っている場合は、エンタープライズグレードの仮想化環境を管理する方法は途中です。 KVMのセットアップとvirshコマンドを使用したKVM仮想マシンの管理は、すべてのLinux管理者にとって非常に重要です。
エリアスSchによる注目の画像。 Pixabayから。