Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

KVM + oVirtによる仮想化環境構築を試みて,挫折したメモ

表題のままです.oVirtは個人で扱うには重すぎて使えませんでした.素直にGUI環境でvirt-managerを使うことにします.

そもそもoVirtを導入しようと思ったきっかけはサーバの仮想化でした.KVMを導入し,FreeBSDなどを入れて遊んだりファイルサーバにしようと思ったのが始まりです. 僕の結論はoVirtは個人で使うものではないということです.簡単にWebベースで設定できると思って導入するとえらい目に遭うでしょう. いくつかの理由を挙げてみようと思います.

そもそもoVirtとは

oVirtとは,仮想化基盤を構築するためのソフトウェアです.もともとRedHatが開発していたものがオープンソース化しました. Webベースでの操作が可能で,一度セットアッップすればクリック操作で仮想マシンを作ったり捨てたりできます.

僕はWeb環境で動かせる仮想化環境を探していたので,さっそく導入してみようと思ったのですが,これが茨の道でした. このソフトウェアはただのダッシュボードを提供するものではなく,仮想化プラットフォームを作成するIaaSソフトウェアです.

oVirtは重い

とにかくoVirtは重いです.個人の自宅サーバで動かせるようなものではありません.CentOS7の上で(ZFSと)oVirtを稼動させたところ,数GiBものメモリがあっというまに無くなりました.oVirtはjavapostgreSQLのプロセスをいくつも立ち上げます.さらに仮想マシンが使うメモリがこれに上乗せされるので,自宅サーバでは相当潤沢なメモリがないとまともな運用は不可能です.ZFSが消費しているメモリもある程度あるはずなので,あまり正確なことは言えませんが・・・正直ここまでメモリを食うとは思っていなかったのでびっくりしました(導入当時はこれほど大規模なソフトウェアだとは思っていませんでした).

oVirtは抽象度が高い

oVirtはOpenStackと同じ仮想化基盤なので,ストレージも仮想化します.複数のホストが存在する状況が前提となって稼動するため,ホストのボリュームを直接マウントするのは困難です.ストレージはNFSなどで通信することになっています.ホスト1台の場合もNFSを経由する(さらにその上にゲストがファイルシステムを作る!)ことになるので,ここがボトルネックになりえます.

ストレージの仮想化は大規模環境では有用ですが,個人が持っている1台のサーバで動かすにはオーバーヘッドにしかなりませんでした. おかげでホストのZFSが持つ速度が完全に殺されてしまい,ホストでは100MiB/sec出ていた書き込み速度が1MiB/secになっていました.グエー

oVirtサーバとホストとの関係

oVirtでは,oVirtがインストールされるホストと,仮想マシンが稼動するホストとは分離して考えられます.複数のホストをかかえる仮想化プラットフォームを構築するソフトウェアなのでなので当然ですね.ただのダッシュボードとの主たる違いです.

oVirtに管理されるホストはSSH経由で従属することになり,ほぼ専用ノードのような振舞いになります.たとえばNICにも自動的にブリッジが設定され,仮想マシンが占有します.ファイアウォールも自動設定されます.すべてがoVirtの管理に入ります.

このような理由から,仮想マシンの他に何かアプリケーションを動作させたいのであれば,oVirtによる管理の導入はおすすめできません.

virt-managerへの移行

僕は素直にWebではなくGUIで操作するvirt-managerを使うことにしました.oVirtよりもはるかに小規模で,素直な動作をしてくれます. 個人で自宅サーバで動作させるのに丁度良い抽象化が行えます.ホストのディスクをマウントさせたりするのも簡単です.

CentOS7で最小限のインストールからMATEをインストール – the2g

マシンの身の丈に合った環境が大事ですね.

参考資料

ここを見て導入しました.詳しくて分かりやすい資料です.ありがとうございました.

qiita.com

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?