この記事では、AlmaLinux 10上でKVM仮想マシンを管理するための基盤となる libvirt のインストールと初期設定を行います。
AlmaLinux 10にlibvirtをインストールする
libvirtとは
libvirtは、KVM、QEMU、Xenなど複数の仮想化技術を統一的に管理するためのAPIおよびデーモンです。
以下のようなツールがlibvirtを利用しています:
| ツール | 用途 |
|---|---|
| virsh | コマンドラインでのVM管理 |
| virt-manager | GUIでのVM管理(デスクトップ向け) |
| cockpit-machines | WebブラウザでのVM管理 |
検証環境
本記事の作業手順は、以下の環境にて検証を行いました。
| OS | アーキテクチャ | 稼働環境 |
|---|---|---|
| AlmaLinux 10.1 | x86_64 | 物理サーバー |
前提条件:仮想化支援機能の確認
libvirtをインストールする前に、CPUが仮想化をサポートしているか確認します。
$ grep -E '(vmx|svm)' /proc/cpuinfo- vmx: Intel VT-x(Intel製CPU)
- svm: AMD-V(AMD製CPU)
何も出力されない場合は、BIOSで仮想化支援機能が無効になっている可能性があります。
libvirtのインストール
パッケージのインストール
dnfコマンドでlibvirtとqemu-kvmをインストールします。
インストール完了後はマシンを再起動してください。
$ sudo dnf install libvirt qemu-kvm2つのパッケージは次の表のようなものです。
| パッケージ | 説明 |
|---|---|
| libvirt | 仮想化管理デーモンとAPI |
| qemu-kvm | KVM用のQEMUエミュレータ |
起動確認
以下のコマンドで、仮想マシンの操作に必要な主要デーモンが動作しているか確認します。
$ systemctl list-units "virt*"以下のように、各専門デーモン(virtqemud など)やソケットが active running または active listening と表示されれば正常です。
UNIT LOAD ACTIVE SUB DESCRIPTION virtinterfaced.socket loaded active listening libvirt interface daemon socket virtlockd.socket loaded active listening libvirt locking daemon socket virtlogd.socket loaded active listening libvirt logging daemon socket virtnetworkd.socket loaded active listening libvirt network daemon socket virtnodedevd.socket loaded active listening libvirt nodedev daemon socket virtnwfilterd.socket loaded active listening libvirt nwfilter daemon socket virtproxyd.socket loaded active listening libvirt proxy daemon socket virtqemud.socket loaded active listening libvirt QEMU daemon socket virtsecretd.socket loaded active listening libvirt secret daemon socket virtstoraged.socket loaded active listening libvirt storage daemon socket... (他、ネットワークやストレージのユニット)
Legend: LOAD → Reflects whether the unit definition was properly loaded. ACTIVE → The high-level unit activation state, i.e. generalization of SUB. SUB → The low-level unit activation state, values depend on unit type.
28 loaded units listed. Pass --all to see loaded but inactive units, too.To show all installed unit files use 'systemctl list-unit-files'.libvirtd.socket (レガシーなモノリシック型) は古い仕組みであり、モジュラー型が有効な環境では inactive (dead) のままで問題ありません。

モジュラー型であることは先ほどのコマンドsystemctl list-units "virt*"でvirt*.socketが表示されていることで確認できます。
動作確認
virshコマンドでの接続テスト
$ sudo virsh list --all初期状態では何も表示されませんが、エラーなく実行できれば成功です。
Id Name State--------------------デフォルトネットワークの確認
libvirtはデフォルトでNATネットワーク(default)を提供します。
$ sudo virsh net-list --all Name State Autostart Persistent-------------------------------------------- default active yes yesinactiveの場合は以下で起動します:
$ sudo virsh net-start default$ sudo virsh net-autostart defaultユーザーをlibvirtグループに追加(任意)
毎回sudoを使わずにlibvirtを操作したい場合は、ユーザーをlibvirtグループに追加します。
$ sudo usermod -aG libvirt $USER変更を反映するには、一度ログアウトして再ログインしてください。
トラブルシューティング
virshコマンドが「接続できない」とエラーを出す場合
virshコマンドを実行した際にfailed to connect to socket等のエラーが出る場合は、総合窓口であるvirtproxydが動いていない可能性があります。
# 状態を確認$ systemctl status virtproxyd.socket
# 停止している場合は起動$ sudo systemctl enable --now virtproxyd.socket仮想化が無効と表示される場合
$ sudo virt-host-validateこのコマンドで各項目がPASSになっているか確認してください。
IOMMUやSecure Guestの項目で WARN が出ることがありますが、物理デバイスの直接割り当て(パススルー)などの特殊な操作を行わない限り、無視しても問題ありません。
次のステップ
libvirtの準備が完了したら、以下の方法でVMを作成できます:
- GUI(Webブラウザ)で管理したい場合 cockpit-machinesのインストール
まとめ
本記事では、最新のLinuxディストリビューションで標準となっている 「モジュラー型デーモン」 を用いたlibvirtのインストールと設定方法を解説しました。
従来の libvirtd サービスを一括起動する方式から、機能ごとに分離されたデーモン(virtqemud 等)を使用する方式に移行することで、システムの安定性とセキュリティが向上しています。
クイックリファレンス:コマンド一覧
| 手順 | 実行コマンド | 備考 |
|---|---|---|
| インストール | sudo dnf install libvirt qemu-kvm | 仮想化に必要な基本パッケージ |
| ホストの適合性確認 | sudo virt-host-validate | KVMや仮想化支援機能のチェック |
| 動作確認 | sudo virsh list --all | 仮想マシン一覧が表示されれば成功 |