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

VirshプログラムでKVM仮想マシンを管理する

バーシュ 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から。


Linux
  1. キムチ(Webインターフェース)でKVM(QEMU)を管理する

  2. 毎週の仮想マシン、ビルド スクリプト付き

  3. Linux マシンのエンタープライズ ネットワークを管理する方法は?

  1. Virshコマンドを使用してKVM仮想マシンスナップショットを作成する方法

  2. コックピットWebコンソールを使用してKVM仮想マシンを管理する方法

  3. virsh を使用して KVM VM の名前を変更する方法

  1. コマンドラインを介してKVM仮想マシンを作成および管理する方法

  2. コマンドラインを使用してFirewalldでネットワークセキュリティを管理する

  3. Virt-Managerを使用してKVM仮想マシンを管理する方法