背景
最近、VMwareがBroadcom社に買収され話題になっていますね。
販売モデルの変更や値上げについて注目されています。
- https://xtech.nikkei.com/atcl/nxt/column/18/00001/09307/
- https://www.nikkei.com/article/DGXZQOUC036NN0T00C24A7000000/
こうした話を受けてVMwareから別のソリューションへの移行を検討している人もいるという話を聞きます。候補になるのは例えば以下のような製品でしょうか?
- Nutanix Cloud Infrastructure
- OpenShift Virtualization
- Windows Server(Hyper-V)
- OpenStack
- Proxmox
- oVirt
このうち自分はOpenStackについてはそれなりの期間(9年ほど)運用しています。この経験をもとにVMwareからOpenStackへの移行が可能なのかについてざっくり見解をまとめておこうかなと思って筆を執りました。
結論
まず結論ですが、「VMwareの利用状況によっては移行は可能であるがおススメはしない」というのが自分の見解です。以降ではどういった点が移行時の課題になるかを簡単に説明しようかと思います
移行上の課題
色々課題はあるのですが、ざっくり列挙すると以下の点が課題になってくると考えています。
- 仮想マシンの前提の違い
- Windowsのサポート
- 運用上の知識
それぞれについて見ていきましょう。
仮想マシンの前提の違い
自分がVMwareからOpenStackに移行しようとして最初に気が付くのはこの仮想マシンの前提の違いです。
OpenStackでは起動する仮想マシンにcloud-initがインストールされていることを想定しています。cloud-initはAWSなどのパブリッククラウドを利用したことがあれば聞いたことがあるかもしれません、仮想マシン起動時にインスタンスの初期設定(ssh鍵の設定など)を行ってくれるソフトウェアになります。このため仮想マシンのセットアップの手順からVMwareとOpenStackでは大幅に異なります。
VMwareでは稼働させるVMにあらかじめ何かをインストールしておくという仕組みになっていません。そもそも仮想マシンを作成した後、利用者がISOイメージなどをマウントしインストーラを使ってOSをインストールして利用するという形態です。
cloud-initが前提になっているOpenStackでは最初に起動させる仮想マシンイメージを選択し、それをもとにVMを作成してその仮想マシンイメージが前提とするユーザでリモートログインして利用するという形態になります。
VMwareからOpenStackに移行するということを考えるとこの違いは無視できないものになります。新規に仮想マシンを作成する場合は運用で吸収できるでしょう。利用者からするとOSのインストールの手間がなくなり場合によっては感謝されるかもしれません。問題はVMwareで現在稼働している仮想マシンをどうするか?ということになります、具体的には以下の手順で移行は可能でしょう(自分は未検証です)。
- VMware上の仮想マシンにcloud-initをインストール(省略可能)
- VMwareのディスクイメージ(vmdk)を取得
- vmdkをqcow2に変換
- OpenStackのglanceにイメージを取り込み
- OpenStackの仮想マシンを起動する
この手順のうち、cloud-initのインストールを実施しないという選択も可能ですがその場合はいくつかの制約を受けます。OpenStackで動作させる仮想マシンイメージの前提は公式ドキュメントにもまとまっています。
Windowsのサポートの違い
先ほどの仮想マシンイメージのページに言及がないなどから分かるかもしれませんが、OpenStackでのWindowsのサポートは手厚くはありません。イメージの入手元の情報や仮想マシンイメージの作成手順などは提供されているので、完全に無視しているわけではないのです。ただし利用形態としてWindowsは事例の数も多くないということは認識しておく必要があります。
運用上の知識
ひょっとしたらここが一番課題になるのではないでしょうか。VMwareとOpenStackで顕著に違うのはこの運用上必要になる知識の違いではないかと考えています。
VMwareは基本的にVMwareで完結するように製品が作られています。しかしOpenStackはそうではありません、OpenStackは仮想化技術を提供しません、仮想ネットワークも提供しません、仮想ストレージも提供しません、それぞれ仮想化技術のKVM、仮想ネットワークのOpenvSwitchなど、仮想ストレージとしてのiSCSIとLVMといった基礎となるOSSの集合体がありそれらを統合する基盤としてOpenStackがあります。
VMwareで実現できていたあの機能をOpenStackで実現したい場合やOpenStackで何かトラブルが発生したときにはこれらの技術を広く浅く知っている必要があります。
例えばVMwareで特定の仮想マシンにGPUを追加して機械学習などで利用していたとします、OpenStackでもこれは実現できます。しかしGUI上で手軽にはできません、CPUの機能でVT-dという技術がありデバイスの仮想化でこれを実現することができるということを認識し、それを活用したPCIのパススルーという技術があり、それをnovaで設定するということを知らなければなりません。
トラブルの発生時にも、OpenStackが生成したログを読んで(読んでも原因が分からないことがほとんど…)、仮想マシンの状況とOpenStackのホストの状況を確認し、予測を立てて該当しそうなOpenStackのモジュールのマニュアルや機能を提供しているOSSのマニュアルなどを調査することになります。場合によってはソースコードを読むことになります。(OpenStack運用当初はOpenStackのソースコードを読む調査は自分も良く実施していました)
OpenStack移行のメリット
移行するというだけの観点で述べたのでOpenStackに移行するとうれしい事も書いておきます。
- OSSなのでソースコードなどは開示されており、VMwareのように買収されてビジネス上の課題になる懸念はほとんどない
- OpenStackはNASAやCERNといった団体が初期の立ち上げから強く関係しているのでどこかの企業が独占して提供する形態にはならないでしょう
- ハードウェア選択が自由になる
- VMwareは動作させるハードウェアに強い要件があります、OpenStackではそういったことはありません
サポート期間や有償サポートが欲しい場合
Ubuntuを利用している場合は対象となっているバージョンを選ぶとサポート期間は比較的長いです(https://ubuntu.com/openstack/docs/supported-versions)。UbuntuのLTSをインストールしたときの安定バージョンは長期サポートになっています。Ubuntu 22.04が公開された時のOpenStackの安定バージョンであるYogaは2027年の4月まで、Ubuntu Proに加入していれば2032年の4月までのサポートとなっています。もし有償のサポートが欲しいという場合であればCanonical社が色々提供してくれています(https://jp.ubuntu.com/openstack)。
まとめ
ここまで書いてきたことが問題にならないと考えられた人はOpenStackに移行しても問題ないのではないでしょうか。なお今回書いた問題はOpenStackに限らずKVMベースの仮想マシンマネージャでは発生するものがあるかと思います。例えばNutanix AHVではOpen vSwitchが採用されていたりするのでネットワークのトラブルの時にはOpen vSwitchの知識が必要になる可能性があります。
コミケで本にしても良いかなと思ってこのような投稿 をしたりしていますが、本にするよりBlogの記事の方が世の中の役にたつかもしれないと思ったので記事にしてみました。