oVirtとGlusterFSで作るハイパーコンバージドインフラ(1)

# 想定読者
* ハイパーコンバージドインフラ(HCI)に興味がある人
* oVirtに興味がある人
* 無償の仮想化基盤に興味がある人
* 本格的だけど省スペースな仮想化基盤を作りたい人

# はじめに
ハイパーコンバージドインフラが流行しています。本格的な仮想化基盤を拡張性を担保しつつ、省スペースで実現できるために中堅・中小企業で採用が進んでいるとのことです。

拡張性が確保でき、スモールスタートができる。省スペースで場所に困らない。あれ、これってホームラボ環境に最適ですよね。調べると「oVirt」と「GlusterFS」というOSSを使っても実現できそうです。

というわけで、実際にホームラボ環境としてHCIを構築してみました。興味のある方ややってみようとしている方の助けになればと、構築の様子を記事にしておきたいと思います。

# ハイパーコンバージドインフラ概要
## ハイパーコンバージドインフラとは
ハイパーコンバージドインフラ(Hyper Converged Infrastructure: HCI)は直訳すると「超集中型基盤」となります。その名の通りHCIとは、2U程の筐体に複数サーバとストレージを詰め込んでアプライアンス化した仮想化基盤です。これにより従来の仮想化基盤よりもコンパクトさを実現しています。

より詳細に見ていきましょう。従来の仮想化基盤は以下のような構成をしていました。

![3Tier.png](https://qiita-image-store.s3.amazonaws.com/0/151015/c5be9b89-2d00-f277-4b74-ba3079cbffdd.png)


従来の仮想化基盤は物理サーバが乱立していた状態からサーバ統合により、省スペース化、リソースの利用効率アップを実現しました。しかし、まだ以下のような問題を抱えています。

* 構成要素が多く、複雑で、保守性が低い
* ストレージのスケールアウトが難しく、容量・性能共に頭打ちになりうる
* 初期構築時に将来性を見据えた慎重なサイジングが必要
* 余裕を持ったサイジングをするため、初期コストが高くなりがち
* 余裕を持ったサイジングや構成要素が多いために、スペースを食う

一方、HCIは以下のような構成をしています。

![HCI.png](https://qiita-image-store.s3.amazonaws.com/0/151015/0f739257-5d20-9bc9-666e-b7d80aa659d6.png)


HCIではストレージに各サーバのローカルストレージを使います。サーバ間でデータ共有ができないため、クラスタを組めないではないかと思われるかもしれません。しかし、HCIでは分散ストレージソフトウェアを用いて、各サーバに分散したローカルストレージをあたかも一つの共有ストレージであるかのように見せています。これにより、機能的には従来の仮想化基盤と同等に、省スペース性や拡張性を確保しています。

従来の仮想化基盤と比較して、HCIには以下のようなメリットがあります。

* 構成要素が少なく、シンプルで、保守性が高い
* サーバ、ストレージ共にスケールアウトが容易
* 将来性を見据えた慎重なサイジングが不要
* 今必要な分だけサイジングすればよく、スモールスタートができる
* 今必要な分だけのサイジングや構成要素が少ないため、省スペース

先ほどHCIは「2U程のアプライアンス」と述べましたが、HCIの本質は「分散ストレージソフトウェアを使って各サーバのローカルストレージを束ね、共有ストレージとして使う」ところにあります。したがって、以降はこの本質を備えているシステムをHCIと呼ぶことにします。

さて、「はじめに」で「oVirt」と「GlusterFS」というOSSがHCIを実現するのに使えそうだと書きましたが、この二つのOSSについて次から見ていきたいと思います。

## oVirtとは
「oVirt」とはOSSの仮想化基盤統合管理サーバです。仮想化基盤の統合管理サーバはVMware社の「vCenter Server」が有名ですが、oVirtはこの代替製品として開発されているOSSであり、vCenter Serverに引けを取らない機能を搭載しています。

oVirtの最大の特徴は何といっても無償であることです。vCenter ServerはライブマイグレーションやHAといった少し凝った機能を付けると、それだけでライセンス料が跳ね上がってしまいます。vCenter Serverは個人では手を出しづらい製品なのです。

![vsphere_price.png](https://qiita-image-store.s3.amazonaws.com/0/151015/889145a6-2d89-5807-8b31-9bf265de5eab.png)

これに対し、oVirtはライブマイグレーションやHA、アフィニティグループといった機能までついているにも関わらず無償です。個人でもこれだけリッチな機能が使えるのならば、ホームラボ環境の選択肢としてoVirtを外すことはできないでしょう。

またoVirtの特徴として、メモリの最小要件が低いことがあります。vCenter Serverですとメモリの最小要件は8GB(vSphere 6の場合)ですが、oVirtは4GBです。ホームラボ環境ではサーバに搭載できるメモリ量がそもそも多くないことが考えられるので、この差は大きいです。統合管理サーバが大量にメモリを食ってしまい、仮想マシンに割り当てられるメモリ量が少なくなってしまっては元も子もありません。

## GlusterFSとは
GlusterFSとはOSSの分散ストレージソフトウェアです。Red Hat社が開発しています。GlusterFSを使うと、複数サーバに分散して搭載されているストレージをネットワーク経由で論理的に統合することができます。GlusterFSでは各サーバに搭載されているストレージ(厳密にはストレージに構築されたファイルシステム内のあるディレクトリ)を「ブリック」、論理的に統合された1つのストレージを「ボリューム」と言います。ボリュームにはそれを構成するブリックに対してどのようにファイルを格納するかで以下のタイプがあります。

* Distributed
* Replicated
* Striped

Distributedでは、データはファイル単位で保存され、いずれかのブリックに配置されます。この方式では総容量の100%をユーザが利用することができます。一方でブリックが停止するとそこに格納されているファイルにはアクセスできなくなります。

![Distributed_Volume.png](https://qiita-image-store.s3.amazonaws.com/0/151015/275fde63-e81b-e687-2656-5a5d5d5ea678.png)

Replicatedでは、データはファイル単位で保存され、すべてのブリックにコピーされます。この方式では総容量の 1/(ブリック数) しかユーザは利用できません。しかし、1つ以上のブリックが生きていれば、全ファイルにアクセスすることができます。

![Replicated_Volume.png](https://qiita-image-store.s3.amazonaws.com/0/151015/3bb602ab-7b85-9a9d-aafc-14b784fa02b3.png)

Stripedでは、ファイルは細切れにされ、各ブリックに分散して配置されます。この方式でもDistributedと同様、総容量の100%をユーザが利用することができます。さらに単一ファイルへのアクセスが集中する環境では性能の向上を見込むことができます。一方でどれか1つでもブリックが停止すると、全ファイルにアクセスすることができなくなります。

![Striped_Volume.png](https://qiita-image-store.s3.amazonaws.com/0/151015/79a32421-7b06-122f-4e32-20b39d4e3a3a.png)

さらにGlusterFSではこれらのボリュームタイプの組み合わせとなる、以下のボリュームタイプもサポートしています。

* Distributed Replicated
* Distributed Striped
* Striped Replicated
* Distributed Striped Replicated

以上までがHCI、oVirtおよびGlusterFSの概要となるお話でした。では早速HCIの構築作業に入りたいところですが、それは次回にいたします。