Ubuntu 22.04 の KVM / libvirt 環境では、virt-install を使うと CLI から仮想マシンを作成できます。GUI で確認しながら作る virt-manager と違い、VM 名、CPU、メモリ、ディスク、ネットワーク、インストール方法をコマンドとして残せる点が利点です。
この記事では、KVM と libvirt がすでに使える Ubuntu 22.04 ホストを前提に、ISO から新規インストールする例と、既存 QCOW2 イメージを import する例を確認します。現在の新規構築手順ではなく、既存環境を保守するための確認記事です。
virt-installで指定する基本項目- ISO からの仮想マシン作成
- 既存 QCOW2 イメージの import
- ブリッジ、ディスク、コンソールの確認
virshによる作成後の確認
書籍
ストーリーで覚える Linux CLI 入門
Linux のコマンドライン操作やサーバー管理の基礎を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
virt-install で決める項目
virt-install は、libvirt に仮想マシン定義を作らせるための CLI です。最低限、名前、メモリ、CPU、ディスク、インストール方法を指定します。運用ではネットワークとコンソールも明示しておくと、あとから状態を追いやすくなります。
--nameで仮想マシン名を決める--memoryと--vcpusでリソースを指定する--diskで QCOW2 などのディスクを指定する--cdrom、--location、--importで起動方法を決める--networkで bridge や libvirt network を指定する--graphicsと--consoleで接続方法を決める
必要なパッケージを確認する
KVM / libvirt の基本環境が入っていることを確認します。virt-install は virtinst パッケージで提供されます。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst
virt-install --version
virsh versionlibvirt の接続先を確認する
通常の KVM ホストでは、system libvirt の qemu:///system を使います。作成先を曖昧にしないため、VM 一覧とストレージプールを先に確認します。
virsh -c qemu:///system list --all
virsh -c qemu:///system pool-list --all
virsh -c qemu:///system net-list --allブリッジを確認する
外部ネットワークへ直接接続する VM では、NAT 型の default network ではなく、ホスト側のブリッジインターフェイスを使うことがあります。ここでは br0 を例にします。
ip link show type bridge
networkctl status br0
virsh net-list --allISO から仮想マシンを作成する
Ubuntu Server の ISO からインストールする例です。ディスクは QCOW2 として作成し、ネットワークは br0 に接続します。
sudo virt-install \
--connect qemu:///system \
--name ubuntu2204-test \
--memory 4096 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu2204-test.qcow2,size=40,format=qcow2,bus=virtio \
--cdrom /var/lib/libvirt/images/ubuntu-22.04-live-server.iso \
--os-variant ubuntu22.04 \
--network bridge=br0,model=virtio \
--graphics none \
--console pty,target_type=serial \
--noautoconsoleコンソールへ自動接続しない場合でも、作成後に virsh console で接続できます。シリアルコンソールを使うには、ゲスト OS 側の console 設定も関係します。
既存 QCOW2 を import する
すでに作成済みの QCOW2 イメージを libvirt に登録する場合は、--import を使います。この場合は OS インストール処理をスキップし、既存ディスクから起動します。
sudo virt-install \
--connect qemu:///system \
--name imported-vm \
--memory 4096 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/imported-vm.qcow2,format=qcow2,bus=virtio \
--os-variant ubuntu22.04 \
--network bridge=br0,model=virtio \
--import \
--graphics none \
--console pty,target_type=serial \
--noautoconsole作成前に XML を確認する
本番に近いホストで試す場合は、いきなり VM を作らず、--print-xml で生成される定義を確認してから実行すると安全です。
virt-install \
--connect qemu:///system \
--name dryrun-vm \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/dryrun-vm.qcow2,size=20,format=qcow2,bus=virtio \
--cdrom /var/lib/libvirt/images/ubuntu-22.04-live-server.iso \
--os-variant ubuntu22.04 \
--network bridge=br0,model=virtio \
--graphics none \
--print-xml作成後に確認する
VM を作成したら、libvirt 上の定義、ディスク、ネットワークインターフェイス、起動状態を確認します。
virsh -c qemu:///system list --all
virsh -c qemu:///system domblklist ubuntu2204-test
virsh -c qemu:///system domiflist ubuntu2204-test
virsh -c qemu:///system dominfo ubuntu2204-testコンソールへ接続する
テキストインストールやトラブルシュートでは、シリアルコンソールへ接続します。抜けるときは Ctrl + ] を使います。
virsh -c qemu:///system console ubuntu2204-test削除するときの注意
作成に失敗した VM を削除する場合は、VM 定義とディスクを分けて扱います。ディスクを消す操作は戻せないため、対象パスを確認してから実行します。
virsh -c qemu:///system shutdown ubuntu2204-test
virsh -c qemu:///system undefine ubuntu2204-test
virsh -c qemu:///system vol-list default運用時に見るポイント
virt-install のコマンドは VM 作成の入口です。実際の運用では、どのブリッジへ接続するか、ディスクをどこに置くか、コンソールへどう入るか、バックアップ対象をどこまでにするかを決めておく必要があります。
- VM 名とディスク名を対応させる
- ブリッジ名を明示して、default network と混同しない
- QCOW2 の置き場所とストレージプールを確認する
- OS variant をできるだけ指定する
- 作成前に
--print-xmlで定義を確認する
まとめ
Ubuntu 22.04 の KVM ホストで virt-install を使うと、GUI に頼らず仮想マシンを作成できます。ISO からの新規インストールと、既存 QCOW2 の import では指定するオプションが異なります。
保守対象の KVM 環境では、VM 名、ディスク、ブリッジ、OS variant、コンソールを明示し、作成後に virsh で状態を確認します。手順をコマンドとして残せることが、virt-install を使う大きな利点です。

