- 1 virshコマンドとは?
- 2 検証環境
- 3 オプション一覧
- 4 仮想マシンの各種情報を表示する方法
- 5 仮想マシンの起動、停止方法
- 6 仮想マシンの一時停止、再開方法
- 7 仮想マシン名の変更方法
- 8 仮想マシンのインタフェース情報の参照、変更方法
- 9 仮想マシンのインタフェース追加、削除方法
- Z 参考情報
1 virshコマンドとは?
仮想マシンとハイパーバイザを管理するコマンドです。
2 検証環境
[root@kvm ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
カーネル版数は以下のとおりです。
[root@kvm ~]# uname -r 3.10.0-957.el7.x86_64
NetworkManagerサービスの状態を確認します。activeであることを確認します。
[root@kvm ~]# systemctl is-active NetworkManager active
3 オプション一覧
virshコマンドのオプションは非常に多いので、ここでは、ネットワークに関する設定をおもに試したいと思います。なお、オプションは、virsh helpを実行すると表示されます。
[root@kvm ~]# virsh help グループ別コマンド: Domain Management (ヘルプのキーワード 'domain'): attach-device XML ファイルによるデバイスの接続 attach-disk ディスクデバイスの接続 attach-interface ネットワークインターフェースの接続
さらに、オプションの詳細を表示するには、以下のように実行します。
[root@kvm ~]# virsh help net-autostart 名前 net-autostart - ネットワークの自動起動 形式 net-autostart <network> [--disable] 詳細 システム起動時にネットワークを自動的に起動するよう設定します。 オプション [--network] <string> ネットワークの名前または UUID --disable 自動起動の設定解除
4 仮想マシンの各種情報を表示する方法
4.1 仮想マシン一覧を表示する方法(list)
listは実行中の仮想マシンを表示するオプションです。
[root@kvm ~]# virsh list Id 名前 状態 ---------------------------------------------------- 1 server 実行中
--allオプションを付けると、シャットオフの仮想マシンも表示します。 serverが実行中で、routerがシャットオフであることがわかります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 - router シャットオフ
4.2 設定ファイルの出力方法(dumpxml)
dumpxmlは、仮想マシンの設定ファイルを出力するオプションです。
[root@kvm ~]# virsh dumpxml server <domain type='kvm' id='1'> <name>server</name> -snip-
4.4 情報の表示方法(dominfo)
dominfoは、仮想マシンの名前やPCU数等の情報を表示するオプションです。
[root@kvm ~]# virsh dominfo server Id: 1 名前: server UUID: 66d60e60-2221-49d1-9939-d9a82b848a4e OS タイプ: hvm 状態: 実行中 CPU: 4 CPU 時間: 66.9s 最大メモリー: 4194304 KiB 使用メモリー: 4194304 KiB 永続: はい (yes) 自動起動: 無効にする 管理済み保存: いいえ (no) セキュリティモデル: selinux セキュリティ DOI: 0 セキュリティラベル: system_u:system_r:svirt_t:s0:c351,c394 (enforcing)
4.5 状態の表示方法(domstate)
domstateは、仮想マシンの状態を表示するオプションです。
serverは実行中であることがわかります。
[root@kvm ~]# virsh domstate server 実行中
routerはシャットダウン中であることがわかります。
[root@kvm ~]# virsh domstate router シャットオフ
4.6 UUIDの表示方法(domuuid)
domuuidは、UUIDの表示すりオプションです。
[root@kvm ~]# virsh domuuid server 66d60e60-2221-49d1-9939-d9a82b848a4e
5 仮想マシンの起動、停止方法
5.1 起動方法(start)
仮想マシン一覧を確認します。serverが実行中、routerがシャットオフの状態であることがわかります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 - router シャットオフ
routerを起動します。
[root@kvm ~]# virsh start router ドメイン router が起動されました
仮想マシン一覧を確認します。routerが実行中になったことがわかります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 2 router 実行中
5.2 停止方法(shutdown)
routerを停止してみます。
[root@kvm ~]# virsh shutdown router ドメイン router はシャットダウン中です
仮想マシン一覧を確認します。routerがシャットオフになったことがわかります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 - router シャットオフ
6 仮想マシンの一時停止、再開方法
6.1 一時停止(suspend)
仮想マシン一覧を確認します。serverが実行中であることがわかります。
[root@kvm ~]# virsh list Id 名前 状態 ---------------------------------------------------- 1 server 実行中
serverを一時停止にします。
[root@kvm ~]# virsh suspend server ドメイン server は一時停止されました
仮想マシン一覧を確認します。serverが停止中であることがわかります。
[root@kvm ~]# virsh list Id 名前 状態 ---------------------------------------------------- 1 server 一時停止中
6.2 再開(resume)
serverを再開します。
[root@kvm ~]# virsh resume server ドメイン server が再開されました
仮想マシン一覧を確認します。serverが実行中になったことがわかります。
[root@kvm ~]# virsh list Id 名前 状態 ---------------------------------------------------- 1 server 実行中
7 仮想マシン名の変更方法
仮想マシンの名前(ドメイン名)を変更してみます。名前を変更するには、仮想マシンをシャットオフにして行う必要があります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 - router シャットオフ
routerの名前をbridgeに変更してみます。
[root@kvm ~]# virsh domrename router bridge Domain successfully renamed
仮想マシン一覧を確認します。routerがbridgeに変更されたことがわかります。
[root@kvm ~]# virsh list --all Id 名前 状態 ---------------------------------------------------- 1 server 実行中 - bridge シャットオフ
8 仮想マシンのインタフェース情報の参照、変更方法
8.1 仮想マシンのIPアドレスを表示する方法(domifaddr)
serverのvnet0に設定されているIPアドレスを表示してみます。
[root@kvm ~]# virsh domifaddr server 名前 MAC アドレス Protocol Address ------------------------------------------------------------------------------- vnet0 52:54:00:98:4d:5d ipv4 192.168.122.55/24
8.2 インタフェース名等の取得方法(domiflist)
仮想マシンのインタフェースを確認してみます。実行中でもシャットオフ中の仮想マシンに対しても実行することができます。
[root@kvm ~]# virsh domiflist server インターフェース 種類 ソース モデル MAC ------------------------------------------------------- vnet0 network default virtio 52:54:00:98:4d:5d
8.3 統計情報の取得方法(domifstat)
domifstatは、統計情報を表示するオプションです。
[root@kvm ~]# virsh domifstat server --interface vnet0 vnet0 rx_bytes 99883 vnet0 rx_packets 1746 vnet0 rx_errs 0 vnet0 rx_drop 0 vnet0 tx_bytes 21596 vnet0 tx_packets 276 vnet0 tx_errs 0 vnet0 tx_drop 0
8.4 リンク状態の取得方法(domif-getlink)
vnet0の状態を確認します。アップしていることがわかります。
[root@kvm ~]# virsh domif-getlink server --interface vnet0 vnet0 up
8.5 リンク状態の変更方法(domif-setlink)
vnet0の状態を確認します。リンクアップしていることがわかります。
[root@kvm ~]# virsh domif-getlink server --interface vnet0 vnet0 up
serverのインタフェース(vnet0)をDOWNします。
[root@kvm ~]# virsh domif-setlink server vnet0 down デバイスが正常に更新されました
インタフェースの状態を確認します。リンクダウンしていることがわかります。
[root@kvm ~]# virsh domif-getlink server --interface vnet0 vnet0 down
9 仮想マシンのインタフェース追加、削除方法
ここでは、仮想マシンにインタフェースの追加、削除の方法だけ説明します。追加したインタフェースにIPアドレスを設定し、仮想マシン同士で通信をするための環境作成手順は、仮想マシンにNICを追加する方法 - hana_shinのLinux技術ブログを参照してください。
9.1 事前準備
KVMホストに仮想ブリッジ(br1)を作成します。ifnameにはデバイス名、con-nameにはプロファイル名を指定します。プロファイルとは設定ファイルのことです。デバイスに設定したIPアドレスやデフォルトルータのIPアドレス等を定義したもので、/etc/sysconfig/network-scripts配下にいいいい作成されます。
[root@kvm ~]# nmcli connection add type bridge ifname br1 con-name br1-profile 接続 'br1-profile' (3bbbaf0a-9b0d-4b4c-9762-f1db0be5575b) が正常に追加されました。
デバイスの状態を確認します。仮想ブリッジが追加されたことがわかります。ただし、この時点では、仮想ブリッジは、まだシステムに接続されていません。
[root@kvm ~]# nmcli device |grep br1 br1 bridge 接続中 (IP 設定を取得中) br1-profile
作成した仮想ブリッジに、管理用のIPアドレスを設定します。
[root@kvm ~]# nmcli connection modify br1-profile ipv4.method manual ipv4.addresses "10.0.0.1/24"
仮想ブリッジをシステムに接続します。
[root@kvm ~]# nmcli device connect br1 デバイス 'br1' が '3bbbaf0a-9b0d-4b4c-9762-f1db0be5575b' で正常にアクティベートされました。
デバイスの状態を確認します。仮想ブリッジがシステムに接続されたことがわかります。
[root@kvm ~]# nmcli device |grep br1 br1 bridge 接続済み br1-profile
9.2 追加方法(attach-interface)
実行中の仮想マシンを確認します。これらの仮想マシンにインタフェースを追加していきます。
[root@kvm ~]# virsh list Id 名前 状態 ---------------------------------------------------- 1 server 実行中 2 router 実行中
サーバにはインタフェースを2つ追加してみます。
[root@kvm ~]# virsh attach-interface --type bridge --source br1 --model e1000 server インターフェースが正常に接続できました [root@kvm ~]# virsh attach-interface --type bridge --source br1 --model e1000 server インターフェースが正常に接続できました
サーバのインタフェースを確認します。vnet2とvnet3の2つのインタフェースが追加されたことがわかります。
[root@kvm ~]# virsh domiflist server インターフェース 種類 ソース モデル MAC ------------------------------------------------------- vnet0 network default virtio 52:54:00:98:4d:5d vnet2 bridge br1 e1000 52:54:00:4e:da:11 vnet3 bridge br1 e1000 52:54:00:8c:68:92
次にルータにインタフェースを追加してみます。
[root@kvm ~]# virsh attach-interface --type bridge --source br1 --model e1000 router インターフェースが正常に接続できました
ルータのインタフェースを確認します。vnet4が追加されたことがわかります。
[root@kvm ~]# virsh domiflist router インターフェース 種類 ソース モデル MAC ------------------------------------------------------- vnet1 network default virtio 52:54:00:09:62:b0 vnet4 bridge br1 e1000 52:54:00:5a:d8:d1
brctlコマンドを使っても、仮想ブリッジに追加されたインタフェースを確認することができます。
[root@kvm ~]# brctl show br1 bridge name bridge id STP enabled interfaces br1 8000.fe54004eda11 no vnet2 vnet3 vnet4
9.3 削除方法(detach-interface)
ルータのインタフェースを確認します。ルータからvnet4を削除します。
[root@kvm ~]# virsh domiflist router インターフェース 種類 ソース モデル MAC ------------------------------------------------------- vnet1 network default virtio 52:54:00:09:62:b0 vnet4 bridge br1 e1000 52:54:00:5a:d8:d1
vnet4を削除します。
[root@kvm ~]# virsh detach-interface --type bridge --mac 52:54:00:5a:d8:d1 router インターフェースが正常に切断されました
ルータのインタフェースを確認します。vnet4が削除されたことがわかります。
[root@kvm ~]# virsh domiflist router インターフェース 種類 ソース モデル MAC ------------------------------------------------------- vnet1 network default virtio 52:54:00:09:62:b0
同様に、ホストのvnet2とvnet4を削除します。
[root@kvm ~]# virsh detach-interface --type bridge --mac 52:54:00:4e:da:11 server インターフェースが正常に切断されました [root@kvm ~]# virsh detach-interface --type bridge --mac 52:54:00:8c:68:92 server インターフェースが正常に切断されました
ブリッジのインタフェースを確認します。サーバ、ルータに接続していたインタフェースが削除されていることがわかります。
[root@kvm ~]# brctl show br1 bridge name bridge id STP enabled interfaces br1 8000.000000000000 no
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ