Ubuntuで本格仮想化!KVMによる環境構築・運用・トラブル対策ガイド【初心者~中級者向け】

目次

はじめに

Ubuntuは、世界中で広く利用されているLinuxディストリビューションのひとつです。個人ユーザーからエンタープライズ環境まで幅広いシーンで支持されており、サーバー構築や開発環境にも多用されています。そんなUbuntuで本格的な仮想化を実現したい場合、非常に強力なのが「KVM(Kernel-based Virtual Machine)」です。

KVMは、Linuxカーネルに標準で組み込まれているハイパーバイザー型の仮想化技術で、ハードウェアの仮想化支援機能(Intel VTやAMD-V)を活用することで高いパフォーマンスと安定性を実現します。KVMはオープンソースであり、コストを抑えつつ本格的な仮想化基盤を構築できる点が大きな特徴です。

仮想化技術というと、難しそうな印象を持つ方も多いかもしれません。しかし、UbuntuとKVMの組み合わせであれば、初心者でも比較的簡単に仮想マシンを作成・運用することができます。もちろん、既存の物理サーバー資源を効率よく使いたい中級者や、実際に業務システムを仮想化したいという現場のエンジニアにもおすすめです。

この記事では、Ubuntu上でKVMを使った仮想化環境の構築方法から、基本的な使い方、実践的な活用ノウハウ、よくあるトラブルの対処法までを丁寧に解説します。「これからKVMを導入したい」「Ubuntuの仮想化環境をもっと便利に活用したい」と考えている方は、ぜひ最後までご覧ください。

KVMと他の仮想化技術の比較

仮想化技術にはさまざまな種類がありますが、Ubuntu環境でよく利用されるものとしては、KVMのほかにVirtualBoxやVMwareがあります。ここでは、それぞれの特徴や違い、KVMを選ぶメリット・デメリットについて詳しく解説します。

主な仮想化技術の種類

  • KVM(Kernel-based Virtual Machine)
    KVMはLinuxカーネルに組み込まれている仮想化機能で、ホストOSがLinuxであることが前提です。ハードウェアの仮想化支援機能(Intel VTやAMD-V)を利用することで、仮想マシンの性能が高く、実運用にも十分耐えうることが大きな特徴です。コマンド操作や管理ツール(virt-manager等)を使い、柔軟に運用できます。
  • VirtualBox
    VirtualBoxはOracle社が提供するデスクトップ向けの仮想化ソフトウェアで、Windows、Mac、Linuxなど様々なプラットフォームで動作します。インターフェースがわかりやすく、個人用途や学習目的でよく利用されています。ただし、KVMに比べると商用環境や高負荷用途にはやや不向きな面もあります。
  • VMware(VMware Workstation/ESXi等)
    VMwareは業務用途にも多く使われている商用仮想化製品です。機能が豊富でサポートも充実していますが、有償ライセンスが必要となる点が大きな違いです。特に大規模な企業環境で使われることが多い一方、コスト面の負担があります。

KVMのメリット

  • 高いパフォーマンスと安定性
    KVMはLinuxカーネルの一部として動作するため、リソース効率が良く、仮想マシンごとに割り当てるCPUやメモリの制御も細かく行えます。実際の業務システムの運用にも耐えうる安定性が魅力です。
  • オープンソースでコストがかからない
    KVMは完全にオープンソースであり、ライセンス料がかかりません。低コストで仮想化基盤を構築したい場合にも最適です。
  • 豊富な管理ツールと自動化
    コマンドラインツール(virshやvirt-install)や、GUI管理ツール(virt-manager)など、用途に応じた多彩な管理方法があります。自動化やスクリプト化もしやすく、DevOpsやインフラ管理にも向いています。

KVMのデメリット

  • ホストOSがLinux限定
    KVMはLinuxカーネルが前提となるため、WindowsやMacのホスト環境では利用できません。
  • 初期設定やトラブル対応にLinuxの知識が必要
    GUIツールも用意されていますが、ネットワーク設定や細かなチューニングにはコマンド操作やLinux固有の知識が求められる場合があります。

どんな場合にKVMを選ぶべきか?

  • 物理サーバーのリソースを効率良く活用したい場合
  • 本格的な業務システムやサーバー用途で仮想化を利用したい場合
  • コストを抑えつつ、本格的な仮想化基盤を構築したい場合
  • Linuxサーバー運用やインフラ管理を自動化したい場合

KVMは、Linuxに慣れているユーザーやエンジニアはもちろん、「今後本格的なサーバー運用にチャレンジしたい」と考えている方にもおすすめの仮想化技術です。

UbuntuでのKVM環境構築【インストールと初期設定】

KVMをUbuntu上で活用するためには、いくつかの前提条件や準備、そして実際のインストール作業が必要です。この章では、KVMの導入に必要な手順を順番に解説します。初心者でもスムーズに環境構築ができるよう、ポイントごとに詳しく説明します。

必要な要件と事前確認

KVMを利用するには、パソコンやサーバーのCPUが「仮想化支援機能(Intel VTまたはAMD-V)」に対応している必要があります。
まず、次のコマンドで仮想化支援機能が有効か確認しましょう。

egrep -c '(vmx|svm)' /proc/cpuinfo

1以上の値が表示されれば、仮想化機能が利用できます。
また、64ビット版のUbuntuであることも必要条件です。

KVMおよび必要なパッケージのインストール

KVM本体と関連ツール(libvirtやvirt-managerなど)をインストールします。
以下のコマンドを順番に実行してください。

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
  • qemu-kvm:KVM仮想化の本体
  • libvirt-daemon-system, libvirt-clients:仮想マシンの管理サービス
  • bridge-utils:ネットワークブリッジ用ツール
  • virt-manager:GUIで仮想マシンを管理できるツール

ユーザーのグループ設定と権限付与

インストール後、現在のユーザーをKVMやlibvirtのグループに追加しましょう。これにより、管理者権限なしで仮想マシンを操作できるようになります。

sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)

反映のため、ログアウト・再ログインまたは再起動を行ってください。

KVMサービスの動作確認

KVMが正しくインストールされ、サービスが起動しているかを確認します。

sudo systemctl status libvirtd

「active (running)」と表示されていれば正常です。
また、次のコマンドでKVMが有効かどうかも確認できます。

virsh list --all

仮想マシンの一覧が(現時点では空ですが)表示されれば、KVM環境は正しく構築されています。

仮想マシンの作成・基本操作

KVM環境の準備ができたら、いよいよ実際に仮想マシンを作成し、操作してみましょう。KVMでは、グラフィカルな管理ツール(virt-manager)とコマンドライン操作(virt-installやvirsh)を状況に応じて使い分けることができます。ここでは、両方のアプローチを紹介します。

virt-manager(GUI)を使った仮想マシンの作成

virt-managerは、仮想マシンの作成や管理を直感的なGUIで行えるツールです。Linuxのデスクトップ環境を使っている場合は、virt-managerの利用がとても便利です。

  1. 「アプリケーション」やコマンドラインからvirt-managerを起動します。
  2. 画面左上の「新規」ボタンをクリックします。
  3. インストールメディア(ISOイメージなど)の場所を指定し、ゲストOSの種類(例:Ubuntu、Windows)を選択します。
  4. 仮想マシンに割り当てるCPU数やメモリ、ディスク容量などを設定します。
  5. 設定内容を確認し、「完了」をクリックすると、仮想マシンが作成され、インストール画面が表示されます。

virt-managerでは、仮想マシンの起動・停止・再起動、スナップショットの取得、ネットワークやディスクの追加なども簡単に行えます。

virt-install(CLI)による仮想マシンの作成

サーバー用途やリモート環境では、コマンドラインから仮想マシンを作成する方が便利な場合も多いです。
以下はvirt-installコマンドの基本的な使い方の例です。

sudo virt-install \
  --name ubuntu-vm \
  --memory 2048 \
  --vcpus 2 \
  --disk size=20 \
  --cdrom /path/to/ubuntu.iso \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network network=default \
  --graphics vnc
  • --name:仮想マシンの名前
  • --memory:割り当てるメモリ(MB単位)
  • --vcpus:割り当てるCPUコア数
  • --disk size=20:仮想ディスク容量(GB単位)
  • --cdrom:インストールに使用するISOイメージのパス
  • --os-type, --os-variant:OSの種類やバージョン指定
  • --network:接続するネットワーク
  • --graphics:グラフィックモード(VNCなど)

コマンド実行後、仮想マシンが自動的に起動し、インストール画面がVNC経由などで表示されます。

仮想マシンの起動・停止・削除・スナップショット取得

KVMでは、作成した仮想マシンの操作も簡単です。代表的なコマンドは以下の通りです。

  • 仮想マシンの起動
  virsh start <仮想マシン名>
  • 仮想マシンの停止
  virsh shutdown <仮想マシン名>
  • 仮想マシンの強制停止
  virsh destroy <仮想マシン名>
  • 仮想マシンの削除(ディスクも消す場合は注意)
  virsh undefine <仮想マシン名>
  • スナップショットの作成
  virsh snapshot-create-as <仮想マシン名> <スナップショット名>

これらの操作はvirt-managerのGUIからも同様に行うことができます。

ネットワーク設定と拡張

KVMで仮想マシンを運用する際、ネットワーク設定は非常に重要です。デフォルトの設定でも多くの用途で利用できますが、業務用途や本格的なサーバー運用では、カスタマイズが必要になることもあります。この章では、KVMのネットワークの基本から、よく使われる拡張設定まで解説します。

デフォルトのNAT(virbr0)とブリッジネットワークの違い

KVMをインストールすると、自動的に「virbr0」という仮想ネットワークブリッジが作成されます。これはNAT(Network Address Translation)方式のネットワークで、以下のような特徴があります。

  • virbr0(NAT方式)の特徴
  • 仮想マシンは外部インターネットにアクセスできる
  • ただし、ホストや他のネットワークから仮想マシンへ直接アクセスするにはポートフォワード等の設定が必要
  • 自宅や開発環境、テスト用途に適している

一方、「ブリッジネットワーク」は、仮想マシンに物理ネットワークと同等のアクセス権を与える方式です。

  • ブリッジネットワークの特徴
  • 仮想マシンがホストと同じネットワークセグメントに参加できる
  • 物理PCや他のサーバーからも仮想マシンに直接アクセス可能
  • 社内サーバーやサービス公開など、本格運用に最適

カスタムブリッジの構築・設定手順(LANアクセス用)

本番サーバーや他のPCから直接仮想マシンへアクセスしたい場合は、ブリッジネットワークを作成します。以下は一般的な手順です(例:ホスト側の物理NICがeth0の場合)。

  1. bridge-utilsのインストール(すでにインストール済みの場合は不要)
   sudo apt install bridge-utils
  1. ネットワーク設定ファイルの編集
    Ubuntu 18.04以降はNetplanが使われます。
    /etc/netplan/01-netcfg.yamlなどの設定ファイルを編集します。 例:
   network:
     version: 2
     renderer: networkd
     ethernets:
       eth0:
         dhcp4: no
     bridges:
       br0:
         interfaces: [eth0]
         dhcp4: yes
  1. 設定の適用
   sudo netplan apply
  1. KVM側で新しいブリッジ(br0)をネットワークに追加
    virt-managerやvirshで仮想マシンのネットワークアダプタをbr0に切り替えます。

仮想マシンのIPアドレス固定・ポートフォワード設定

  • IPアドレスの固定
    仮想マシンのOS側で静的IPアドレスを設定するか、DHCPサーバーでMACアドレスごとに固定割り当てを行うのが一般的です。
  • ポートフォワード設定(NAT利用時)
    virshコマンドやlibvirtのXML設定で、特定のポート(例:SSHやWebサーバー)をホスト→仮想マシンへ転送できます。 例(SSHを22番ポートで転送):
  virsh nat-forward --network default --add-port tcp:2222:22

※細かな設定はlibvirtの設定ファイル編集やfirewalldによる制御も可能です。

ストレージ管理とディスク操作

KVMで仮想マシンを運用する際、ストレージの設計やディスクの管理も非常に重要です。ここでは、仮想ディスクの種類や作成方法、ストレージプールの管理、さらにディスクの拡張やスナップショットの活用について解説します。

仮想ディスク(qcow2, raw)の種類と用途

KVMの仮想ディスクには、主に次の2種類があります。

  • qcow2形式
  • KVMの標準的な仮想ディスクフォーマット
  • スナップショットの取得やディスクの圧縮、省スペース化に対応
  • 柔軟な運用や検証環境に最適
  • raw形式
  • データの変換や圧縮が行われないシンプルなフォーマット
  • パフォーマンス重視の場合や、ストレージのIO性能を最大化したい場合に有効

通常はqcow2形式が推奨されますが、用途によって使い分けましょう。

ストレージプールの作成・管理

KVMでは「ストレージプール」という仕組みで、仮想マシンが利用するディスク領域を管理します。

  • デフォルトのストレージプール
    インストール直後は、/var/lib/libvirt/images/がデフォルトのストレージプールです。
    仮想ディスクはこのディレクトリ内に作成されます。
  • 新しいストレージプールの作成(例)
  1. ディレクトリを用意
    sudo mkdir /data/kvm-images sudo chown libvirt-qemu:kvm /data/kvm-images
  2. virt-managerまたはvirshコマンドで新しいプールを追加 virshの場合: virsh pool-define-as --name mypool --type dir --target /data/kvm-images virsh pool-autostart mypool virsh pool-start mypool

仮想ディスクの拡張・スナップショットの活用

  • 仮想ディスクの拡張
    ディスク容量を増やしたい場合、qemu-imgコマンドで拡張が可能です(qcow2, raw両方対応)。
  sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G

その後、仮想マシンのOS上でパーティションやファイルシステムを拡張する必要があります。

  • スナップショットの活用
    qcow2形式のディスクでは、スナップショットを作成して任意の時点の状態を保存できます。
  virsh snapshot-create-as <仮想マシン名> <スナップショット名>

スナップショットは、設定ミスやアップデート前のバックアップ、テスト環境のロールバックなどに非常に便利です。

ゲストOSのインストール・運用

KVMの仮想マシンに実際のOSをインストールし、快適に運用するためのポイントを解説します。ここでは代表的なゲストOSのインストール手順や、ISOイメージの扱い方、運用時のパフォーマンス向上策まで取り上げます。

代表的なゲストOSの導入手順

KVMでは、UbuntuやCentOS、WindowsなどさまざまなOSを仮想マシンとして動作させることができます。ここではUbuntuとWindowsのインストール例を紹介します。

  • Ubuntuの場合
  1. Ubuntu公式サイトから最新版のISOイメージをダウンロードします。
  2. virt-managerを使う場合は「新規仮想マシン作成」画面で「ローカルインストールメディア」を選択し、ダウンロードしたISOファイルを指定します。
  3. 仮想マシンのCPU・メモリ・ディスク容量を設定し、インストールを開始します。
  4. 画面の指示に従い、通常のUbuntuインストール作業を進めます。
  • Windowsの場合
  1. Microsoft公式からWindowsの評価版ISOイメージ等を取得します。
  2. virt-managerやvirt-installで新規仮想マシンを作成し、ISOファイルを選択します。
  3. Windowsの場合は「virtioドライバ」をインストールするとディスクやネットワークのパフォーマンスが向上します。virtio ISOも仮想CDドライブにマウントして、セットアップ時に適用するとよいでしょう。

ISOイメージ取得と読み込み

  • ゲストOSのインストールには、公式サイトからダウンロードしたISOイメージを利用します。
  • 仮想マシン作成時、ISOファイルのパスを指定すれば、仮想CD/DVDとしてマウントできます。
  • 必要に応じて、複数のISO(OSとドライバ)を同時にマウントすることも可能です。

ゲストOS運用時のTips・パフォーマンス向上策

  • リソース割り当ての最適化
    仮想マシンに割り当てるCPUやメモリを適切に設定しましょう。必要以上にリソースを割り当てると、ホストOSや他の仮想マシンに影響が出ます。
  • virtioドライバの導入
    ゲストOSがWindowsや古いLinuxの場合は、virtioドライバをインストールすることでディスクやネットワークのパフォーマンスが大幅に向上します。
  • 不要なサービスの停止
    ゲストOS上で使わないサービスや常駐プログラムを無効化することで、リソースを有効活用できます。
  • KVMゲストツールの活用
    QEMU Guest Agentを導入することで、仮想マシンの情報取得やシャットダウン等の操作がより正確になります。

実践活用例と自動化Tips

KVMは単なる仮想マシンの作成・運用にとどまらず、さまざまな業務や開発シーンで活用されています。また、スクリプトや自動化ツールと組み合わせることで、管理作業の効率化も可能です。この章では、KVMの実践的な活用事例や、自動化のヒントを紹介します。

サーバー用途の活用事例

  • 開発・テスト環境の分離
    プロジェクトごとに仮想マシンを用意し、ソフトウェアのバージョンや構成を自由に切り替えられる環境を実現できます。新しいバージョンのOSやソフトウェアを試す際にも、本番環境に影響を与えず検証できるのが大きなメリットです。
  • 社内サービスの構築
    ファイルサーバー、Webサーバー、データベースサーバーなど、複数のサービスを仮想マシン単位で分離して運用することで、障害発生時の影響範囲を限定できます。
    また、仮想マシン単位でのバックアップやスナップショットも容易です。

CLIやAnsible等による自動構築例

  • CLIによる仮想マシン自動作成
    スクリプトを使ってvirt-installvirshコマンドを自動実行すれば、複数の仮想マシンを一括で作成・管理できます。 例:シェルスクリプトによる仮想マシン作成
  for i in {1..5}
  do
    virt-install --name test-vm-$i --memory 1024 --vcpus 1 \
      --disk size=10 --cdrom /path/to/ubuntu.iso \
      --os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole
  done
  • Ansibleによる仮想環境の構築
    インフラ自動化ツール「Ansible」を利用すれば、プレイブックを書くだけで、KVM仮想マシンの作成や初期設定、アプリの導入まで一括で自動化できます。
    サーバー台数が多い場合や、構成管理の一貫性を重視する場合に特に有効です。

クラウドライクな運用をするヒント

  • 仮想マシンのテンプレート化
    よく使う初期状態の仮想マシンをテンプレートとして保存しておけば、新しいサーバーの展開が一瞬で終わります。
  • API連携・Webベース管理ツールの活用
    libvirtにはAPIも用意されているため、独自ツールや他の管理システムと連携することも可能です。大規模環境ではWebベースの管理ツール(Cockpitなど)を活用すると、視覚的に仮想環境を管理できます。

トラブルシューティング・よくあるエラー解決

KVM環境を運用していると、仮想マシンの起動失敗やネットワーク接続不良など、さまざまなトラブルに直面することがあります。この章では、よくある問題のパターンやその解決方法、さらにログの確認手順とサポートリソースの活用法について解説します。

KVMで発生しやすい問題例

  • 仮想マシンが起動しない/作成できない
  • 仮想化支援機能(Intel VT, AMD-V)が無効になっている
  • 割り当てるメモリやディスク容量が不足している
  • ストレージプールやISOイメージのパスが間違っている
  • ネットワーク接続ができない
  • 仮想マシンのネットワークアダプタが正しく設定されていない
  • ブリッジやNATの設定ミス、DHCP割り当て不良
  • ファイアウォールやセキュリティ設定の影響
  • パフォーマンスが極端に低い
  • リソースの割り当て過多/不足
  • Virtioドライバが導入されていない(特にWindowsゲスト)
  • ディスクI/Oがボトルネックになっている

ログ確認方法・基本的な解決フロー

トラブルが発生した場合は、まずログの確認が重要です。

  • システムログの確認
  sudo journalctl -xe

KVMやlibvirtに関連するエラーメッセージが出ていないか確認します。

  • libvirtログの確認
    /var/log/libvirt/ 配下にあるログファイル(例:libvirtd.log)も有効です。
  • 仮想マシンごとのログ
    virt-managerやvirshで仮想マシンの状態を確認し、「詳細」や「ログ」タブでエラー内容を調べます。
  • ネットワーク状態の確認
  ip a
  brctl show
  virsh net-list --all

でネットワークの接続状況やブリッジの設定を確認します。

トラブル対応の基本フロー

  1. 状況を整理し、いつから問題が発生したか特定する
  2. 上記のログや設定を確認
  3. 必要に応じて設定ファイルを修正し、サービスの再起動や仮想マシンの再作成を試す

公式ドキュメントやコミュニティの活用法

困ったときは、以下の情報源が大いに役立ちます。

セキュリティ・パフォーマンス最適化

KVM環境を安全かつ快適に運用するためには、セキュリティ対策とパフォーマンスの最適化が欠かせません。ここでは、仮想化基盤を守るためのポイントと、効率的なリソース活用のための実践的なノウハウを紹介します。

仮想化環境のセキュリティ強化策

  • 不要なサービスの停止・最小限構成
    仮想マシン内で使わないサービスは無効化し、攻撃対象を最小限に絞りましょう。また、ホストOSも同様に不要なサービスを停止します。
  • ファイアウォールとアクセス制限の徹底
    ホスト・ゲスト双方でファイアウォール(例:ufwやfirewalld)を適切に設定し、外部からの不正アクセスを遮断します。
    SSHアクセスはポート番号の変更や公開鍵認証、fail2ban等で保護するのがおすすめです。
  • 仮想マシン間の隔離(ネットワークセグメント分離)
    重要なサーバー同士は仮想ネットワークを分ける、もしくは物理的にネットワークを分離することで、万が一の侵害時の被害拡大を防げます。
  • 定期的なアップデートの徹底
    ホストOS・ゲストOSともに、セキュリティパッチやソフトウェアのアップデートを欠かさず行いましょう。

リソース割り当て最適化(CPU/メモリ/ディスクI/O)

  • リソース管理の基本
    仮想マシンごとにCPUやメモリを適切に配分し、ホスト側に余裕を残すことで全体の安定性を保ちます。
    過剰なリソース割り当ては、ホスト・他の仮想マシン双方のパフォーマンス低下を招きます。
  • ディスクI/Oの最適化
    ストレージ性能がボトルネックになりやすいため、重要な仮想マシンには高速なSSDストレージを割り当てると効果的です。
    また、qcow2形式でのスナップショット多用はパフォーマンス低下の原因となる場合があるため、運用バランスを考えましょう。
  • virtioドライバの活用
    ゲストOSにvirtioドライバを導入することで、ディスクやネットワークのパフォーマンスが大幅に向上します。

バックアップ・スナップショットの自動化

  • スナップショットの定期取得
    本番運用中の仮想マシンは、定期的にスナップショットを取得しておくことで、障害時の迅速なリカバリーが可能です。
  • 仮想ディスクや設定ファイルのバックアップ
    仮想ディスクイメージ(qcow2やrawファイル)やlibvirtの設定XMLファイルは、定期的に別ストレージや外部サーバーにバックアップしましょう。
  • 自動化ツールとの連携
    cronやAnsible等の自動化ツールを使えば、バックアップやスナップショット取得を定期実行することができます。

まとめ・今後の学習リソース

この記事では、Ubuntu上でKVMを使った仮想化環境の構築から運用、実践的な活用法やトラブルシューティング、そしてセキュリティやパフォーマンス最適化まで、幅広く解説してきました。最後に、これまでの内容を振り返りつつ、さらなるスキルアップに役立つ学習リソースを紹介します。

本記事のまとめ

  • KVMの概要とメリット
    KVMはオープンソースかつ高性能な仮想化技術であり、Ubuntuサーバーを中心に多くのシーンで利用されています。
  • インストールから運用までの流れ
    CPU仮想化支援機能の確認から、必要パッケージのインストール、ユーザー権限の設定、仮想マシンの作成と基本操作まで、手順を順を追って解説しました。
  • ネットワーク・ストレージ・運用の実践ポイント
    デフォルトNATやブリッジなど用途に応じたネットワーク構成、ストレージプールの管理やディスクの拡張、スナップショットの活用方法も学びました。
  • トラブル対応とセキュリティ
    よくあるエラーへの対処法、ログの見方、そして安全・効率的な運用のためのセキュリティ・最適化のポイントも紹介しました。

今後のステップ・おすすめ学習リソース

KVMは、基本を押さえれば個人から企業まで幅広く活用できる仮想化基盤です。ぜひ今回の内容を参考に、ご自身の目的や環境に合わせたKVM活用を深めてください。

コマンド早見表&よく使う設定例(チートシート)

KVMやlibvirtを利用する際、よく使うコマンドや設定例を手元にまとめておくと非常に便利です。この章では、日常的な仮想マシン管理に役立つ代表的なコマンドや、ネットワーク・ディスクの設定例をコンパクトに紹介します。

KVM/virsh/virt-managerの主なコマンド一覧

  • 仮想マシンの一覧表示
  virsh list --all
  • 仮想マシンの起動
  virsh start <仮想マシン名>
  • 仮想マシンのシャットダウン
  virsh shutdown <仮想マシン名>
  • 仮想マシンの強制停止
  virsh destroy <仮想マシン名>
  • 仮想マシンの作成(virt-install)
  virt-install --name <名前> --memory <MB> --vcpus <コア数> \
    --disk size=<GB> --cdrom <ISOファイルパス> \
    --os-type linux --os-variant ubuntu20.04
  • 仮想マシンの削除(設定のみ)
  virsh undefine <仮想マシン名>

ネットワーク・ブリッジ関連の設定例

  • 現在のネットワーク一覧表示
  virsh net-list --all
  • 新しいネットワークの作成(XML例)
    /etc/libvirt/qemu/networks/配下にXMLファイルを配置し、
    virsh net-define <ファイル名>virsh net-start <ネットワーク名>で有効化

ストレージ管理・ディスク操作例

  • ストレージプール一覧
  virsh pool-list --all
  • 仮想ディスクの拡張
  sudo qemu-img resize /path/to/disk.qcow2 +10G
  • スナップショット作成
  virsh snapshot-create-as <仮想マシン名> <スナップショット名>

よく使うその他のTips

  • 仮想マシンの自動起動設定
  virsh autostart <仮想マシン名>
  • 仮想マシンの詳細情報取得
  virsh dominfo <仮想マシン名>
  • virt-managerの起動(GUI環境)
  virt-manager

FAQ(よくある質問)

KVMやUbuntu仮想化環境の構築・運用について、読者からよく寄せられる質問とその回答をまとめました。トラブル対応や運用のヒントとしてご活用ください。

Q1: KVMとVirtualBoxやVMwareの違いは何ですか?

A1: KVMはLinuxカーネルに統合された高性能な仮想化基盤で、サーバー用途や本格運用に適しています。VirtualBoxはデスクトップ用途向け、VMwareは商用サポートや大規模運用向けに機能が豊富ですが、KVMはコストを抑えて高いパフォーマンスを得たい場合におすすめです。

Q2: 仮想マシンのバックアップと復元はどうすれば良いですか?

A2: 仮想ディスクイメージ(qcow2やrawファイル)をコピーすることで簡単にバックアップできます。また、virshのスナップショット機能や、仮想マシンのXML設定ファイルも一緒に保存しておくと復元がスムーズです。

Q3: USBデバイスを仮想マシンで使いたい時は?

A3: virt-managerの「ハードウェア追加」機能や、virshでUSBパススルー設定を行えば、USBメモリや外付けHDD、プリンタなどを仮想マシンで認識させることが可能です。

Q4: 仮想マシンをホスト起動時に自動で立ち上げたい場合は?

A4: virsh autostart <仮想マシン名>コマンドを実行すると、その仮想マシンはホストOSの起動と同時に自動起動するよう設定できます。

Q5: 仮想マシンの動作が遅い場合、どうすればいいですか?

A5: CPU・メモリのリソース配分見直し、ディスクI/Oの最適化(高速なストレージの利用やqcow2→rawへの切り替え)、ゲストOSへのvirtioドライバ導入などでパフォーマンスを改善できる場合があります。

Q6: ネットワークの設定がうまくいきません。どうしたら?

A6: まずはvirshやbrctlコマンドでネットワークの状態を確認しましょう。必要に応じて仮想ネットワークの再作成や、ブリッジの設定ファイル(NetplanやNetworkManager)を見直すことが重要です。

Q7: KVMでクラスタやHA構成はできますか?

A7: 可能です。PacemakerやCorosync、共有ストレージ(NFS、iSCSI等)と組み合わせることで、仮想マシンの高可用性(HA)構成やライブマイグレーションも実現できます。ただし、専門的な知識が必要となります。

侍エンジニア塾