VMwareからKVMに移行する人のための機能比較 Vol.1 アーキテクチャ編
背景と目的
VMwareがBroadcomに買収されたことでVMwareの利用コストが大幅に上がるケースが出ております。
ITやビジネス関連の情報サイトでも多数の記事があり、脱VMwareのセミナーも多数開催されております。
筆者の所属部門もVMwareをかなり利用しており脱VMwareで注目されたセミナーを多数聴講しましたが、紹介しているのはNutanixやOpenShiftが中心、もしくは、これを機にオンプレからクラウドシフトしたらどうですか、といった内容のものが多かったです。
ビジネスによっては、今まで通りオンプレで、今まで通りのコストで、できればベンダーロックインは回避したいといった要望もあるはずです。その場合、オープンソースであるKVMが有力な選択肢となります。
KVMについてセミナーでの紹介は比較的少ない印象のため、特にVMwareとの比較の観点でKVMについて解説記事を書きます。ビジネス向けでは仮想マシンにRHELを使用しているシステムが多いと考えますので、Red Hat KVMを取り上げます。
現在VMwareを利用していてKVMに移行しようとされている方向けに、VMwareとKVMの違いを明らかにすることで移行にあたっての考慮点をわかるようにします。
おさらい
VMwareのライセンス体系の買収前後の主な変更点は以下の通りです。
買収前 買収後
①買い切り ⇒ サブスクリプション
②CPUソケット課金 ⇒ CPUコア課金
③利用エディションの選択可能 ⇒ 利用企業により選択できるエディションに制限
VMwareの利用形態によってコストが4倍、7倍、30倍などに上がる事例があります。
またVMwareのOEM製品についても再販パートナー契約を保有しているパートナーのみ取り扱い可能となったため、委託先によってはVMware製品を販売できなくなっていて、調達方法・委託先の見直しが必要になる事例もあります。
VMwareとKVMの主な違い
VMwareにはサーバ仮想化、ネットワーク仮想化、ストレージ仮想化、コンテナ基盤など多数の製品がありますが、ここではKVMとの比較として、サーバ仮想化のvSphereにフォーカスします。
VMware(vSphere)とKVMの違い概要を文章で解説すると次のようになります。
(1)VMware(vSphere)
VMwareでは、サーバ仮想化の基本機能がVMkernelに統合されており、各コンポーネントの結合度が高く、パフォーマンス面で最適化されています。
また、高可用性機能である 「vSphere HA」 が標準で備わっており、ホスト障害やゲストOSの無応答にも設定により自動対応が可能です。
(2)Red Hat KVM
KVMでは、サーバ仮想化を実現するために、ハイパーバイザーであるKVM、仮想ハードウェアを提供するQEMU、管理機能を担うlibvirtを組み合わせた構成です。
RHELにおいては、KVM・QEMU・libvirtはいずれもRed Hat社が提供しますが、それぞれもともとは別のオープンソースプロジェクトとして開発されたものであるため、コンポーネント間の結合度は比較的緩やかです。
(3)VMwareからKVMに移行する際の主な考慮点
性能要件が厳しいシステムでは、オーバーコミット(物理リソース以上の割当)を避け、必要なハードウェアリソースを事前に確保し、さらにQEMUのチューニングを行うことが望ましいです。
KVM単体では高可用性機能を標準で備えていないため、クラスタソフトウェアと、仮想マシンの起動・監視を行うスクリプトを組み合わせて運用設計する必要があります。
VMwareとKVMのアーキテクチャの違い
上記の文章での解説を図解します。まずは全体像を捉えると理解しやすいのでコンポーネントの構成を示します。
(1)VMware(vSphere)
①カーネル・ハイパーバイザ:VMKernel
ESXiホストで核となるコンポーネントです。
②管理機能:Hostd
仮想マシンのパワーオン、vCenterやvSphere Clientとの連携を行うコンポーネントです。
③HA機能:FDM(Fault Domain Manager)
クラスタ内のハートビートのやりとり、ホストや仮想マシンの死活監視、ネットワーク監視、ストレージ監視、仮想マシンの再起動を行うコンポーネントです。
④管理サーバ:vCenter
複数のESXiホストや仮想マシンを統合的に管理・監視するためのコンポーネントです。
⑤エージェント機能:VMware Tools
ゲスト OS の時刻をホスト OS の時刻と同期、ゲストOSとVMKernelのハートビート情報の送信などを行うコンポーネントです。
(2)Red Hat KVM
①カーネル:RHEL Kernel
ホストOSで核となるコンポーネントです。
②ハイパーバイザ:KVM(Kernel-based Virtual Machine)
QEMUと連携し仮想マシンを動作させるためのカーネルモジュールです。OSのカーネル空間で動作します。
③エミュレータ:QEMU(Quick Emulator)
仮想マシンに対してCPU等のハードウェアをエミュレーションします。OSのユーザ空間で動作します。
④管理機能:Libvirt
QEMUやKVMと連携し仮想マシンを制御するライブラリです。仮想マシンの作成、起動、停止などの管理が可能となります。
⑤HA機能:別途構築が必要
標準で備えていないため、別途クラスタソフトを導入する必要があります。
⑥エージェント機能:QEMU GA(Guest Agent)
ゲスト OS の時刻をホスト OS の時刻と同期などを行うコンポーネントです。
まとめ
コンポーネントの構成を見てわかる通り、VMware(vSphere)では仮想マシンを動作させる機能がVMKernelにまとまっています。
一方でKVMでは仮想マシンを動作させる機能がKVMとQEMUの連携することになります。
そのため、VMwareからKVMに移行する際にはパフォーマンス面に留意する必要があり、QEMUのチューニングを考慮する必要があります。パフォーマンスに関して、CPU、メモリ、ディスクに関するアーキテクチャの比較は別の記事で解説いたします。
またKVMにはHA機能が標準で備わっていない点も留意する必要があります。
参考資料
①仮想化の設定および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
②書籍:平初・森若和雄・鶴野隆一郎・まえだこうへい『KVM徹底入門 Linuxカーネル仮想化基盤 構築ガイド』翔泳社、2013年出版
③書籍:今井悟志『VMware vSphere7 インテグレーションガイド』インプレス、2021年出版
④書籍:ヴイエムウェア株式会社『VMware徹底入門』翔泳社、2016年出版
⑤VMware vSphere 8.0

NTT DATA公式アカウントです。 技術を愛するNTT DATAの技術者が、気軽に楽しく発信していきます。 当社のサービスなどについてのお問い合わせは、 お問い合わせフォーム nttdata.com/jp/ja/contact-us/ へお願いします。