【KVMの仮想化入門②】virshでVMをデプロイしてみる

virshでVMをデプロイしてみる

前回はKVMの仮想化基盤を用意するところまでをやってみました。今回はvirshを用いてCLIから仮想マシンを構築するところまでをやってみます

virshとは

  • KVMやQEMUを利用した仮想化基盤の管理をコマンドラインから行うためのツール
  • Libvirtという仮想化管理ツールをバックエンドに利用
  • 仮想マシンの作成、削除、起動、停止、リソースの管理などをシンプルなコマンドで実行可能

virshで利用できる参照コマンド

virshには仮想化リソースを参照するための多くのコマンドが用意されています。
まずはよく利用しそうなコマンドを使ってみようと思います

仮想マシンの参照コマンド

  • virsh list --all
    • 稼働中、停止中を問わずすべてのVMを表示します(今回はまだVMを作成できていないので表示なし)
1
2
3
ubuntu@kvm001:~$ virsh list --all
 Id   Name   State
--------------------

仮にVMが存在した場合、以下のような表示になります

1
2
3
4
5
$ virsh list --all
 Id   Name            State
--------------------------------
 12   ubuntu001       running
 -    ubuntu002       shut off
  • virsh dominfo <VM名>
    • 指定したVMの詳細情報を表示(別途用意した環境で確認)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ virsh dominfo ubuntu001
Id:             12
Name:           ubuntu001
UUID:           bdce429c-1284-463b-8af4-f538374a3b2d
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       10368.9s
Max memory:     3145728 KiB
Used memory:    3145728 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0
Messages:       tainted: running with undesirable elevated privileges

仮想ネットワークの参照コマンド

  • virsh net-list
    • 現在有効な仮想ネットワークの一覧を表示します。
    • default という名前の仮想ネットワークがすでに作成されていることがわかります
1
2
3
4
ubuntu@kvm001:~$ virsh net-list --all
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
  • virsh net-dumpxml <ネットワーク名>
    • 指定したネットワークの設定を表示します。
1
2
3
4
5
6
7
ubuntu@kvm001:~$ virsh net-info default
Name:           default
UUID:           61c20183-757b-402f-a92e-677072b910d0
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

この仮想ネットワークについては、今後もう少し詳細を書きたいと思っています

仮想ストレージの参照コマンド

  • virsh pool-list
    • 現在利用可能なストレージプールの一覧を表示します。(今回はまだ作成できていないので表示なし)
1
2
3
ubuntu@kvm001:~$ virsh pool-list --all
 Name   State   Autostart
---------------------------

すでに作成されていた場合、以下のような表示になります

1
2
3
4
5
$ virsh pool-list
 Name           State    Autostart
------------------------------------
 default        active   yes
 ubuntu         active   yes
  • virsh pool-info <プール名>
    • 指定したストレージプールの詳細情報を表示します。
1
2
3
4
5
6
7
8
9
$ virsh pool-info default
Name:           default
UUID:           fa63badf-324b-4fa9-992c-81581e9c307f
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       456.35 GiB
Allocation:     72.34 GiB
Available:      384.00 GiB

virsh仮想マシンを構築する

前置きが長くなりましたが、いよいよ仮想マシンの構築に入ります。

isoの準備

今回は、ubuntuのVMを作成しようと思うので、wgetでubuntuのisoをダウンロードしておきます

1
2
mkdir /iso
sudo wget -P /iso https://releases.ubuntu.com/24.04.1/ubuntu-24.04.1-live-server-amd64.iso                 

ディスクイメージの準備

仮想マシン用のディスクイメージを作成します。

1
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu001.qcow2 20G

仮想マシンのXMLファイルを作成

libvirtでは、XMLを用いてVMの構成管理が行われます
そのため、以下の仮想マシンの構成を定義するXMLファイルを用意します

1
vi ubuntu001.xml

ファイルには以下内容を記載します

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<domain type='kvm'>
  <name>ubuntu001</name>
  <memory unit='MiB'>4096</memory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-6.2'>hvm</type>
    <boot dev='cdrom'/>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/ubuntu001.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/iso/ubuntu-24.04.1-live-server-amd64.iso'/>
      <target dev='sda' bus='sata'/>
    </disk>
    <interface type='network'>
      <source network='default'/>
    </interface>
    <graphics type='vnc' port='-1' autoport='yes'/>
  </devices>
</domain>

XMLに記載している内容について、細かい内容は省略しますが下記設定を盛り込んでいます

  • 基本情報
    • <name>ubuntu001</name>: vm名をubuntu001とする
    • <memory unit='MiB'>4096</memory>: 仮想マシンに割り当てるメモリ量を4096MB=2GBとする
    • <vcpu placement='static'>2</vcpu>: 割り当てるvCPUの数を2にする
  • OSの設定 (<os>)
    • <boot dev='cdrom'/>: 仮想マシン起動時にCD-ROMを最初のブートデバイスとして使用するように設定
  • ストレージの設定 (<disk>)
    • 仮想ディスク
      • <source file='/var/lib/libvirt/images/ubuntu001.qcow2'/>: 作成した仮想ディスクのパスを指定
    • ISOイメージ(<disk>
      • <disk type='file' device='cdrom'>: ISOイメージを光学ドライブに割り当てる設定
      • <source file='/iso/ubuntu-24.04.1-live-server-amd64.iso'/>: ダウンロードしたISOイメージをソースに設定
  • ネットワーク設定 (<interface>)
    • <interface type='network'>: 仮想マシンのネットワークインターフェイスを設定 (NATを用いた接続)
    • <source network='default'/>: 事前定義されたdefaultネットワークを使用

詳細は下記サイトにまとまっています

仮想マシンの定義を読み込む

用意したXMLファイルを読み込み、仮想マシンを定義します。

1
virsh define ubuntu001.xml

ちなみに、この時点で仮想マシンが作成された状態となり、virsh list --allでその状態が確認できます。

1
2
3
4
ubuntu@kvm001:~$ virsh list --all
 Id   Name        State
----------------------------
 -    ubuntu001   shut off

仮想マシンを起動

定義した仮想マシンを起動します。

1
virsh start ubuntu001

起動後、以下のコマンドで仮想マシンの状態を確認します。

1
2
3
4
ubuntu@kvm001:~$ virsh list --all
Id   Name   State
----------------------
3    myvm   running

以上で仮想マシンを構築するところまでが完了しました。
次回はcockpitを使ってwebのGUIからVMを操作するところまでを実施します

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。