仮想基盤 入門編1

# はじめに
サーバー仮想化はもはや現在では枯れた技術とされています。枯れたと聞くと嫌な感じですが、ITの世界での枯れたというのは製品の動作やその質が安定していると言えます。(つまりはとても良いことです。)
また、企業で利用されているシステムを構成するアプリケーションのほとんどは仮想化されたサーバーの上で動作していることがほとんどでしょう。AWSやAzureやGCP等のパブリッククラウドでもサーバーと言えば仮想化サーバーをプロビジョニングして利用するというのが普通です。
ここでは仮想基盤について入門者向けに解説できたらと思います。
# 筆者について
私はVMware仮想化基盤の提案から設計構築の導入までをすることを主な生業としています。これにはサーバー上で動かすアプリケーションによって、物理サーバーが何台必要かのサイジングやネットワーク構成をどうするかとか、ストレージはローカルストレージで行くのか、共有ストレージにするとか、コスト面含めてこれが良いとかあれが良いとか、まあ色々考えるのがお仕事です。
# 有名な仮想化ソフトウェア
ここではクラウドではなく、オンプレの仮想化で利用される有名なものを少し紹介しようかと思います。
オンプレとはシステムを稼働させるサーバーを自社で保有して運用する方法です。データセンターや企業内のサーバールームで物理的なサーバーを稼働させます。

**VMware vSphere**
* 概要: VMware vSphereは、業界標準のサーバ仮想化プラットフォームで、高いパフォーマンスと信頼性を提供します。
* 特徴: vMotionによるライブマイグレーション、HA（高可用性）、DRS（Distributed Resource Scheduler）などの高度な機能を備えています。

**Microsoft Hyper-V**
* 概要: Microsoftが提供する仮想化プラットフォームで、Windows Serverに組み込まれています。
* 特徴: Windows環境との統合が容易で、コストパフォーマンスが高い。ライブマイグレーションやレプリケーション機能をサポート。

**Linux KVM**
* 概要: Linuxカーネルに組み込まれたオープンソースの仮想化技術で、Linuxベースのシステムで広く使用されています。
* 特徴: 高いパフォーマンスとスケーラビリティを提供し、Red HatやUbuntuなどのディストリビューションでサポートされています。

**Citrix Hypervisor (旧XenServer)**
* 概要: Citrixが提供する商用仮想化プラットフォームで、オープンソースのXenプロジェクトをベースにしています。
* 特徴: 高いパフォーマンスとセキュリティを提供し、VDI（仮想デスクトップインフラストラクチャ）環境で広く使用されています。

**Proxmox VE**
* 概要: オープンソースの仮想化管理プラットフォームで、KVMとLXC（Linuxコンテナ）をサポートしています。
* 特徴: Webベースの管理インターフェースを提供し、バックアップやリストア、クラスター機能をサポート。

**Red Hat Virtualization (RHV)**
* 概要: Red Hatが提供する仮想化プラットフォームで、KVMをベースにしています。
* 特徴: エンタープライズ向けのサポートと統合が強化されており、Red Hat Enterprise Linuxとの相性が良い。

これらの仮想化ソフトウェアは、それぞれ異なる特徴と利点を持っており、導入する環境やニーズに応じて選択されます。
エンタープライズ環境では、サポートや統合性、パフォーマンスが重要視されるため、VMware vSphereやMicrosoft Hyper-Vがよく選ばれます。一方で、オープンソースソリューションを求める場合は、Linux KVMやProxmox VEが人気です。最近ではProxmox VEがVeeam等のバックアップソフトで正式にサポートされましたので、今後エンタープライズ環境でも利用が増えるのではと思ってます。
# サーバー仮想化とは
サーバー仮想化とは1つの物理サーバーの上に複数の仮想サーバーを稼働させる技術です。
以下図ではもともと6台のあった物理サーバーを2台の物理サーバーに集約した例になります。
仮想サーバーは仮想ホストのリソース(CPU,メモリ,ディスク)を共有して利用します。
メリットとしてはコスト削減(サーバ物品調達コスト、スペースコスト、電力コストの削減等)や運用性の向上(サーバメンテナンス時の容易性やサービス継続性、OS パッチ適用の切り戻し容易性等)が見込めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3918637/adfd2e15-0cc7-47f9-62fe-4f8302e74b2e.png)
# 仮想ホストと仮想マシンと仮想サーバ
先に仮想環境で登場する名称を説明しておきますね。
ハイパーバイザソフト (VMware ESXi 等) をインストールした物理サーバを「仮想ホスト」と呼びます。
ハイパーバイザは仮想ホストの上に仮想マシンを作ることができます。
ハイパーバイザは OS を仮想化するのではなく 、物理サーバ上の CPU/メモリ/HDD/NIC 等のハードウェアのリソースを切り出して「仮想マシン = VM (Virtual Machine)」を作ります。
その仮想マシン (VM) 上に Windows や Linux 等のサーバ OS をインストールした結果が「仮想サーバ」になります。
VM にインストールされた OS を「ゲストOS」と呼びます。ハイパーバイザがホスト、OS (スーパーバイザ) がゲストです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3918637/31f406cb-363d-3680-766e-12ab8ef0dab6.png)
# ハイパーバイザの機能と役割
ハイパーバイザはサーバー仮想化にとっては必須の機能です。基本これがないと仮想化できません。
ハイパーバイザの主機能の 1 つは、仮想ホストの CPU/Memory/HDD/NIC といったコンポーネントの一部を切り出し、仮想マシンを作ることです。
仮想マシンを作成した時点では OS はインストールされていませんが、仮想マシンに OS をインストールすることでゲストOSとして仮想サーバが稼働します。つまり、仮想マシンとは仮想リソースの塊でそこにOSをインストールして一台のマシンとして利用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3918637/0fdf147d-94f7-6877-56a6-cdcf599356a3.png)

# 仮想サーバの標準的な構成例
以下は標準的な構成例の一つになります。
VM 用の CPU とメモリは、仮想ホストが自身のリソースを切り出して提供するのが一般的です。一方、VM 用の Disk (HDD や SSD) は、共有ストレージで提供されることが多いです。
仮想ホストとストレージ間はFibre ChannelやiSCSI等で接続します。必要応じてSAN(Storage Area Network)を構成することもあります。
ストレージは共有ストレージとすることで、仮想ホストが電源障害で落ちた際に、その上で稼働していた仮想サーバーを別ホストで再起動させ、システムを復旧させることも可能です。(高可用性機能=HA)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3918637/232505e0-781c-ae3d-a93f-d5c014287ec7.png)
# 終わりに
仮想化は現代では必須の知識なので予備知識の一つとしていただければ幸いです。
今後内容追加していく予定ですが、一旦この辺りで終わりとさせていただきます。