KVM、VirtualBox、VMwareの比較:目的に合ったハイパーバイザーの選び方

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

背景:ハイパーバイザーの選択ミスで余計な手間が倍になる

homelabのセットアップを始めた頃、「みんなが使っている」という理由でVirtualBoxを使い続けていました。ところが3ヶ月後に6〜7台のVMを同時に起動すると、マシンがほぼフリーズ状態に。KVMに乗り換えたところ、ハードウェアをアップグレードせずにパフォーマンスが大幅に向上しました。正しいツールを選ぶことの重要性を身をもって学んだ最初の教訓です。

現在はProxmox VEで12台のVMとコンテナを管理するhomelabを運用しており、本番環境に移行する前にあらゆるものをテストするplaygroundとして活用しています。ProxmoxはKVMをベースにしているため、ドキュメントを読むだけでなく、実際の運用を通じてこの3つのハイパーバイザーの違いを深く理解する機会を得られました。

この3つはよく同じカテゴリで競合しているかのように比較されますが、実際はそうではありません。KVM、VirtualBox、VMwareはそれぞれ異なるユースケースに最適化されており、選択を誤ってもマシンが壊れるわけではありませんが、必要以上に処理が遅くなるのは確かに苛立たしいものです。

クイックオーバービュー:ハイパーバイザーの世界における各製品の位置づけ

KVM (Kernel-based Virtual Machine)

KVMはLinuxカーネルのバージョン2.6.20(2007年)から直接組み込まれています。LinuxホストをType-1ハイパーバイザーとして機能させ、VMはカーネルモジュールを通じて中間レイヤーなしに直接ハードウェア上で動作します。デバイスエミュレーションの処理にはQEMUと組み合わせて使用します。

  • ライセンス: オープンソース(GPL)
  • プラットフォーム: Linuxのみ
  • タイプ: Type-1(ベアメタル方式)
  • GUI: virt-manager, Cockpit, Proxmox VE, oVirt

VirtualBox

OracleのVirtualBoxはType-2ハイパーバイザーで、ホストOS上の通常のアプリケーションとして動作します。最大の利点はクロスプラットフォーム対応(Windows/macOS/Linux)と、初めて起動した瞬間から使いやすいことです。

  • ライセンス: 無料(GPLv2)、拡張パックは別途有料
  • プラットフォーム: Windows, macOS, Linux, Solaris
  • タイプ: Type-2

VMware — 2つの異なる製品を区別する必要がある

  • VMware Workstation Pro: Type-2、Windows/Linux上で動作。VirtualBoxより安定しており、特にWindowsゲストで優れています。2024年5月以降、BroadcomによるVMware買収とライセンスポリシー変更により、個人利用は無料になりました。
  • VMware ESXi (vSphere): Type-1ベアメタル、サーバーハードウェアに直接インストール。エンタープライズ向けです。重要:ESXiスタンドアロン無料版は2024年初頭にBroadcomにより廃止されました。現在使用するにはVMware vSphere Foundationの購入が必要で、実質的にエンタープライズ価格となり、個人のhomelabには適していません。

各ハイパーバイザーのクイックインストール

Ubuntu/DebianへのKVMインストール

まずCPUが仮想化をサポートしているか確認します:

egrep -c '(vmx|svm)' /proc/cpuinfo
# 結果が > 0 = OK
# 結果が = 0 = BIOSでIntel VT-xまたはAMD-Vを有効にする必要があります
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients \
  bridge-utils virt-manager

# sudoなしで使用するためにユーザーをグループに追加
sudo usermod -aG libvirt,kvm $USER
newgrp libvirt

# サービスを有効化して確認
sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd

VirtualBox

# Ubuntu 22.04 — 最も簡単な方法
sudo apt install -y virtualbox

# または最新バージョンを入手するために公式リポジトリを追加
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc \
  | sudo gpg --dearmor -o /usr/share/keyrings/oracle-virtualbox.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox.gpg] \
  https://download.virtualbox.org/virtualbox/debian jammy contrib" \
  | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt update && sudo apt install -y virtualbox-7.1

VMware Workstation Pro(Linux)

# Broadcomのサイト(個人利用は無料)から.bundleファイルをダウンロード後:
chmod +x VMware-Workstation-*.bundle
sudo ./VMware-Workstation-*.bundle

# インストール後にカーネルモジュールをビルド
sudo vmware-modconfig --console --install-all

Windowsホストを使用する場合の重要な注意事項: VirtualBoxまたはVMware Workstationをインストールする前にHyper-Vを無効にしてください。これらは同時に正常に動作しません(特にVirtualBox 6.1以前):

# 管理者権限でPowerShellを実行
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

詳細設定と実際の比較

パフォーマンス:数字は嘘をつかない

ベンチマークはスペックシートでは表しきれないことを語ります。Type-2ハイパーバイザーはホストOSを経由する必要があり、VM1台あたりのオーバーヘッドは小さくても、5〜6台同時起動すると積み重なって無視できない差になります。

同じハードウェア(Intel i7-12700、32GB RAM)でsysbenchを使ってテストしました。各VMには4 vCPU + 8GB RAMを割り当てています:

# 各VMで実行
sysbench --test=cpu --cpu-max-prime=20000 run

# 実際の結果(時間が短いほど良い):
# KVM (virtio):       12.4秒
# VMware Workstation: 15.8秒  (約27%遅い)
# VirtualBox:         18.2秒  (約47%遅い)

KVMを使う場合、VMがVirtIOドライバーを使用しているか常に確認してください。初回セットアップ時に多くの人が見落とすポイントです:

# VMが使用しているドライバーを確認
lspci | grep -i ethernet
# 表示されるべき内容:"Red Hat, Inc. Virtio network device" ← 正しい
# "Intel Corporation 82540EM"が表示された場合 → エミュレート使用中、パフォーマンスが低下

# ディスクインターフェースを確認
lsblk -o NAME,TYPE,TRAN
# TRAN列にVM用ディスクの"virtio"が表示されるべき

スナップショット:CLI vs GUI

3つすべてがスナップショットをサポートしていますが、使い心地は大きく異なります:

# KVM — virshを使用
virsh snapshot-create-as myvm snap-before-upgrade \
  "カーネルアップグレード前" --disk-only --atomic

# スナップショット一覧を表示
virsh snapshot-list myvm

# 特定のスナップショットに戻す
virsh snapshot-revert myvm snap-before-upgrade

# 古いスナップショットを削除
virsh snapshot-delete myvm snap-before-upgrade

VirtualBoxとVMware WorkstationはGUIのスナップショットツリーが視覚的でわかりやすく、初心者やデモが必要な場合に適しています。KVMはCLIまたはvirt-managerが必要ですが、ワークフローの自動化が必要な場合はスクリプト化がはるかに容易です。

ネットワーク:ラボ環境で最も柔軟なKVM

# 現在の仮想ネットワークを表示
virsh net-list --all

# ラボ用の隔離ネットワークを作成(インターネットに接続しない)
cat > /tmp/labnet.xml << 'EOF'

  labnet
  
  
    
      
    
  

EOF

virsh net-define /tmp/labnet.xml
virsh net-start labnet
virsh net-autostart labnet

ラボ内のVMが自由にpingし合える隔離されたラボネットワークを作成するためにこの方法をよく使っています。実際のネットワークには一切影響しません。

ゲスト統合:KVMが明らかに劣るWindowsゲスト

KVM上のWindowsゲストは動作しますが、他の2つのような「out of the box」とはいきません。VirtualBoxとVMware Workstationはこの点でより丁寧に磨き上げられており、特にVM内のGUIで直接作業する必要がある場合に違いが出ます:

  • VirtualBox Guest Additions: ドラッグ&ドロップ、クリップボード共有、シームレスモード、ウィンドウサイズに合わせた自動画面リサイズ
  • VMware Tools: 同様の機能ですが、より安定しており、Windowsゲストでのバグが少なく、時刻同期がより正確です
  • KVM + SPICE: SPICEプロトコルを通じたクリップボード共有とUSBリダイレクトをサポート。追加設定は必要ですが、良好な結果が得られます

確認とモニタリング

KVMでVMリソースをモニタリング

# すべてのVMを表示(停止中も含む)
virsh list --all

# リアルタイムモニタリング — topのVM版
virt-top

# VMごとの詳細統計
virsh domstats myvm --cpu-total --balloon --vcpu --interface --block

# VMが実際に使用しているRAMを確認
virsh dommemstat myvm

ホストとVM間のネットワークスループットを確認

# ホストとVM両方にiperf3をインストール
sudo apt install -y iperf3

# ホスト側:サーバーを起動
iperf3 -s

# VM内:ホストへのスループットをテスト
iperf3 -c 192.168.122.1 -t 10
# libvirtネットワークのデフォルトゲートウェイは通常192.168.122.1

# virtio NICでの期待値:> 8 Gbps(内部では回線速度に近い)

VirtualBox Guest Additionsの確認

# Linuxゲスト内で実行
VBoxControl --version
lsmod | grep vboxguest

# インストールされていない場合
sudo apt install -y virtualbox-guest-utils virtualbox-guest-x11
sudo reboot

まとめ:どの場面でどれを使うべきか?

「どれが優れているか」という質問には常に後半が欠けています:何に対して優れているのか?実際の経験から:

  • KVM:LinuxサーバーまたはHomeLab向け。最高のパフォーマンスとスクリプト化が必要な場合に最適です。homelabにはProxmox VEをお勧めします。美しいWeb UI、大きなコミュニティ、そして完全無料です。
  • VirtualBox:Windows/macOS上でクイックテストが必要な開発者、またはクロスプラットフォームが必要な場合に適しています。Vagrantと組み合わせると、開発環境として非常に強力です。
  • VMware Workstation Pro:Windowsゲストを多用する場合、日常業務に安定したVMが必要な場合、または複雑なラボでネストされた仮想化をテストする場合に適しています。個人利用は無料になったので、もはや使わない理由がありません。
  • VMware ESXi:ライセンス予算を持つ企業の本番サーバー向け。2024年にBroadcomが無料版を廃止して以来、個人のhomelabには適さなくなりました。

実際には、クイックテストとクライアントへのデモ用にWindowsラップトップにVirtualBoxを残してあります。homelabサーバーはProxmox/KVMをフルタイムで動かしており、変更する理由は何もありません。この2つを並行して使う——正しいツールを正しい目的に使うということです。

Share: