[CentOS][Linux] oVirt4.1で楽々(?)仮想マシン管理を始めてわかったこと

[oVirt4.1で始める楽々(?)仮想マシン管理](http://qiita.com/sengoku/items/9dd2af723d791f0da4fb) で、oVirtをセットアップしました。

oVirt 4.1をセットアップしてみて、事前にはよくわかっていなかったことをまとめます。

# oVirtを始めるのに必要なもの

oVirtを始めるにあたって、どうしたって必要なものはひとつです。

- 仮想マシンホストとなるコンピュータ一台

oVirtの管理ツール(「エンジン」と言います）は、仮想マシンホストと同居できるので、まず一台あれば動かせます。

# oVirt用語

oVirtに触れていて出てきた用語です。

## 全体に関係する用語

### エンジン

仮想マシンホスト、仮想マシン、ネットワーク等を管理するツールです。
Web UIといくつかのCLIコマンドを持ちます。

Javaでできていて、JBoss上で動いているっぽいです。

### クラスター

仮想マシンホストと、仮想マシンを束ねる単位です。

### ストレージ

共有ストレージです。あるいはDASです。
使いみちによって、Data、ISO、Exportの3種類があります。

### データセンター

クラスター、ストレージ、ネットワークを束ねる単位です。

## ストレージ関係の用語

### ドメイン

ストレージの管理単位です。
使いみちとして、Data、ISO、Exportの3種類があります。
Dataは仮想マシン等の格納用、ISOはISOイメージファイルの格納用、Exportはdeprecateだそうです。

## 仮想マシン関係の用語

### テンプレート

仮想マシンを作る元となるものです。OSインストール済みの仮想ディスクを含んだりします。
初期状態では何もない「Blank」テンプレートのみがあります。

## データセンター関係

### ストレージタイプ

データセンター毎に、使用するストレージのタイプを設定できます。
共有と、ローカルの2種類があります。
ローカルにすると、仮想マシンホストにあるファイルシステムを直接使えます。


# 共有ストレージはなくてもいい

仮想マシンに直結したファイルシステムをマウントして使用できます。
そのときは、仮想マシンホスト一台がデータセンターとなります。

初期インストール状態では、共有ストレージを使うデータセンターが設定されていますので、別途データセンターを作成するところから始めます。

# エンジンから共有ストレージへアクセスできなくてもいいかもしれない

ストレージのDataドメインにはアクセスできなくても大丈夫かもしれません。

ISOドメインは、ISOイメージファイルをアップロードするときにエンジンが動くマシンへNFSマウントするので、アクセスできる必要があります。

# Web UIはけっこう重たい

JavaScriptが速いブラウザ必須です。

# 仮想マシンホストはすっぴん（プレーン?バニラ?）状態がいい

oVirtに仮想マシンを追加すると、oVirtが仮想マシンホストにssh接続して必要なものを一式インストールしてくれて、さらにはいろいろ設定してくれます。
たぶんに何も設定しておかないほうがよさそうに思えます。


# テンプレートの作り方

1. 仮想マシンを作ります
2. OSをインストールします。
3. ドライバやアプリをインストールします。
4. OSの初期設定が走るようにします（Windowsならsysprepです）。
5. 仮想マシンをテンプレート化します(メニューから[Make Template]を選ぶだけです)。

# テンプレートから仮想マシンを作ると、テンプレートを削除できない

テンプレートから仮想マシンを作るとき、何もしないとテンプレートを元にしたものが出来上がります。そうすると、テンプレートを削除したくてもできません。

仮想マシンを作るとき、テンプレートをクローンすると回避できます。

# 新規追加するストレージは空っぽでないといけない

既存のNFSサーバを使おうと、いろいろ入っている共有をストレージとして追加したくてもできません。
空っぽである必要があります。

# 最初に追加するDataドメインストレージが重要

最初に追加するDataドメインストレージは「main」扱いとなり、移行しない限り変更/削除できません。

後悔ないようにしたいものです。

# Windowsな仮想マシンを作るとき、仮想フロッピーをアタッチできない

仮想ディスクの接続方法として、一番効率がいいのはVirtIO-SCSIです。
しかし、Windowsインストーラはこのデバイスを知らないのでディスクを発見できません。
そんなとき、フロッピーから追加ドライバを読み込むようにできるのですが、なぜか仮想マシン起動時に仮想フロッピーを選択できません。

仕方がないので以下の手順を踏みます。

1. 仮想ディスクをIDE接続にしてOSをインストール
2. VirtIO-SCSI接続の仮想ディスクを追加
3. VirtIO-SCSIのドライバをインストール
4. VirtIO-SCSI接続の仮想ディスクを削除
5. IDE接続をVirtIO-SCSIにする

なぜこんな面倒な手順を踏むかというと、WindowsにVirtIO-SCSIのデバイスドライバを認識させるためです。
このあたりは他の仮想マシン管理ソフトウェアでも一緒ですね。

# 仮想マシンのコンソールへの接続は簡単

ただしWebブラウザがLinuxで動いているのならばなっ。

Webブラウザから仮想マシンのコンソール接続メニューを選ぶと、拡張子「.vv」のファイルがダウンロードされます。
このファイルを開くと、仮想マシンビューアが立ち上がってコンソールへ接続できます。ちょー簡単。

# Windowsから仮想マシンのコンソールへ接続したい

[Windows用仮想マシンビューア](https://virt-manager.org/download/)をダウンロードしてインストールします。

ただ、手元のWindows 10 Pro Version 1607だと、クラッシュして動かないです。
もしかすると、実験実装であるところのHTML5クライアントが結構使えるかもしれません。

# なにもしなくても結構メモリを食う

2〜3GBくらいは使うようです。

# あまり他の人がやらないようなことをやると、内部データに不整合が生じてハマるかも

自分がやらかしたこと

1. 仮想マシンホストを追加
2. ローカルファイルシステムも使えるんだ。やってみよー
3. ひとつの仮想マシンホストが、2つのデータセンターに現れる
4. なんじゃこりゃ！？片方消そう
5. う、消えない。。。

仕方がないので、データベース（PostgreSQLです)を消すところから再インストールしました。

# エンジンを動かすマシンは、メモリいっぱいあったほうがいい

PostgreSQL、JBoss、Apache httpdが動きます。

16GB推奨ですが、4GBでも今のところは足りています。

# エンジンも仮想化したかった

oVirtが管理する仮想マシン上でエンジンも動かしたかったのですが、それはできない相談ですね。

エンジンがoVirtで管理されたら、誰がエンジンの電源をONにするのだという。。。