仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

virshコマンドでCLIからKVM仮想マシンを管理する方法【実践ガイド】

前回の記事では、KVMハイパーバイザーのインストール方法と仮想マシンの作成手順について解説しました。しかし1回の記事ではKVM仮想マシン管理の詳細まではカバーしきれませんでした。今回は、コマンドラインからvirshを使って仮想マシンを管理する方法を詳しく紹介します。具体的には、VM設定の変更、仮想デバイスの追加、そしてLinux上でKVM仮想マシンを操作するための主要コマンドについて解説していきます。

virsh(Virtual Shell)コマンドによるKVM仮想マシンの管理

まずは、登録済みのKVM仮想マシンの一覧表示、起動・停止・削除の方法を見ていきましょう。virsh(libvirt APIベース)を使用すると、LinuxコンソールからKVM仮想マシンを直接管理できます。

# virsh list — 実行中のVMの一覧を表示
# virsh list --all — 登録されているすべての仮想マシンの一覧を表示(シャットダウン状態のVMも含む)

前者のコマンドでは、停止中のVMは一覧に表示されない点に注意してください。

仮想マシンの電源操作コマンド

# virsh shutdown <vm名> — 仮想マシンを正常にシャットダウン
# virsh start <vm名> — 仮想マシンを起動
# virsh suspend <vm名> — 仮想マシンを一時停止
# virsh resume <vm名> — 一時停止中の仮想マシンを再開
# virsh reboot <vm名> — 仮想マシンを再起動
# virsh destroy <vm名> — 強制的に即時停止させる(ゲストOSが応答しない場合に使用。通常のシャットダウンではないため注意)
# virsh undefine <vm名> — VMの登録を解除し、ストレージボリュームを削除

仮想マシン情報の取得コマンド

# virsh vcpuinfo <vm名> — VMのvCPUに関する情報を表示

その他にも、仮想マシンに関するさまざまな情報を取得できるコマンドがあります。

# virsh domid <vm名> — 仮想マシンのIDを取得
# virsh domuuid <vm名> — 仮想マシンのUUIDを表示
# virsh dominfo <vm名> — 仮想マシンの詳細情報を表示
# virsh domstate <vm名> — VMの現在の状態を確認
# virsh dumpxml <vm名> — 仮想マシンの設定ファイルをXML形式で出力

KVM仮想マシンにメモリとvCPUを追加する方法

KVMでは、VMに割り当てるCPUやメモリのリソースを変更する方法が2つあります。

  • virshコマンドを使用する方法
  • VMの設定XMLファイルを編集する方法

仮想マシンが稼働中の場合は、まずシャットダウンします。

# virsh shutdown test-centos
Domain test-centos is being shutdown

次に、virshでvCPU数を6に変更してみます。

# virsh setvcpus <vm名> <vCPU数> --config

例:

# virsh setvcpus test-centos 6 --config

このコマンドを実行すると、次のようなエラーが表示される場合があります。

error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4

vCPU数は最大許容値を超えて設定できません。最大許容vCPU数を引き上げるには、以下のコマンドを実行します。

# virsh setvcpus test-centos 6 --config --maximum

その後、再度先ほどのコマンドを実行し、仮想マシンを起動してください。

VM設定に反映されたvCPU数を確認してみましょう。

# virsh dumpxml test-centos

<domain type='kvm'>
<name>test-centos</name>
<uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>

同様の手順で、仮想マシンにメモリ(RAM)を追加することもできます。

# virsh setmem <vm名> <メモリサイズ> --config

例:

# virsh setmem test-centos 4G --config

ここでも同じ理由でエラーが発生する可能性があります。

error: invalid argument: cannot set memory higher than max memory.

その場合は、まず最大メモリ量を増やします。

# virsh setmaxmem test-centos 6G --config

これでVMにメモリを追加できるようになります。

重要: 設定変更を行う際は、必ず仮想マシンを一度シャットダウンし、変更後に起動するようにしてください。

XMLファイルを直接編集してリソースを変更する

XML設定ファイルを編集してリソース量を変更することも可能です。オンラインで直接編集するか、XMLファイルをバックアップして修正し、VMに適用する方法があります。

まずはオンラインでVMのXMLファイルを編集する方法です。

# virsh edit <vm名>

開いたviエディタで、「Insert」キーを押して編集モードに切り替え、必要な変更を加えます。

以下のブロックを変更します。

<domain type='kvm'>
<name>test-centos</name>
<uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>6</vcpu>
<os>

たとえば、VMに2つのプロセッサコアと1GBのメモリを割り当てる場合は次のように編集します。

なお、メモリサイズはキロバイト単位で指定される点に注意してください。

変更を保存し、VMを再起動します。

# virsh reboot <vm名>

XMLファイルをバックアップしてから編集する方法もあります。

# virsh dumpxml <vm名> > /root/test.xml
# vi /root/test.xml

必要な設定を変更してファイルを保存したら、仮想マシンに適用します。

# virsh shutdown test-centos
Domain test-centos is being shutdown
# virsh define /root/test.xml
Domain test-centos defined from /root/test.xml
# virsh start test-centos
Domain test-centos started

なお、オンラインでVM設定ファイルを変更した場合、再起動後に割り当てたリソースがリセットされることがあります。その場合は、仮想マシンを一度停止してから起動し直してください。

既存のKVM仮想マシンにディスクを追加する

以前の記事でKVM仮想マシンのディスク容量の拡張・縮小方法については解説しましたが、追加ディスクの接続方法には触れていませんでした。ここでは、既存のVMに新しいディスクを追加する手順を紹介します。

まず、仮想マシン用の新しいディスクファイルを作成します。

# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img

qcow2以外の任意のディスクフォーマットを指定できます。また、ファイルパスは環境に合わせて指定してください。ここではディスクストレージが/vz/disk/にあるものとします。

次に、仮想ディスクデバイスをVMに追加します。

# virsh attach-disk <vm名> /vz/disk/test.img vdb --type disk --persistent

VMをシャットダウンして再起動し、結果を確認しましょう。

# virsh shutdown test-centos
Domain test-centos is being shutdown
# virsh start test-centos
Domain test-centos started
# virsh dumpxml test-centos
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vz/disk/test.img'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>

このように、ディスクが正しく追加されていることがわかります。

KVM仮想マシンに2つ目のNICを追加する方法

続いて、VMにネットワークインターフェースを追加してみましょう。まず、Linuxホスト上のネットワークインターフェースを確認します。

# brctl show

ここでは、KVMホスト上に1つのネットワークインターフェースを持つ仮想マシンが1台ある状況を想定します。br0ブリッジに対してもう1つの仮想ネットワークインターフェースを追加したい場合は、以下のコマンドを実行します。

# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos

VM内に新しいネットワークインターフェースが追加されたことを確認してください。

<interface type='bridge'>
<mac address='52:54:00:7e:c1:9f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:2f:23:79'/>
<source bridge='br0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>

また、XMLファイルを直接編集してネットワーク設定を変更することもできます。

# virsh edit test-centos

最初のネットワークインターフェースの記述の後に、以下の行を追加します。

<interface type='bridge'>
<source bridge='br0'/>
</interface>

ファイルを保存してVMを起動すると、KVMがMACアドレスなどの残りの設定を自動的に追加してくれます。

本記事では、LinuxサーバーのコンソールからKVM仮想マシンを管理するために必要な基本操作を解説しました。次回の記事では、virt-managerのGUIを使った仮想マシン管理方法について紹介する予定です。

  1. 仮想マシンでの3Dアクセラレーション パート2:VirtualBoxとOpenGLの設定方法チュートリアル

    本記事は、仮想マシンにおける3D仮想化の設定と活用方法を解説する全3回シリーズの第2回です。今回は、WindowsまたはLinuxホスト上にインストールしたVirtualBoxで動作するWindows仮想マシンに対して、OpenGLアプリケーション(およびゲーム)向けの3Dアクセラレーションを有効にする方法を学びます。前回の第1回では、VMware製品を使ってWindows上のDirectXプログラムに3Dアクセラレーションを有効化する手順をご紹介しました。このときはホストOSがWindowsでもLinuxでも問題なく動作しました。そして最終回となる第3回では、LinuxホストとLinux仮想

  2. 仮想マシンで3Dアクセラレーションを実現する方法 パート1:VMwareとDirectXの設定チュートリアル

    既存のホストマシンの上で仮想化されたOSを動かすのは、とても魅力的なアイデアです。楽しく、クールで、実際のプラットフォームに導入する前にソフトウェアを試せるだけでなく、通常はためらってしまうような操作にも挑戦できます。さらに大きな柔軟性を得られ、展開コストも大幅に削減できます。しかし、ほとんどの仮想化ソフトウェアに欠けていたのが、ゲストOS向けの3Dアクセラレーションでした。あるいは「欠けていた」と言うべきでしょう……今や、仮想マシンでの3Dアクセラレーションは現実のものとなっています。はじめにこの連載記事では、ゲストOSで3Dアクセラレーションを有効にするために必要な簡単な設定テクニックを紹