仮想化を調べることに終止符を打つ

# はじめに

「あれ、なんだっけ」に終止符を打つシリーズです。皆さんは「仮想化」という言葉を何度調べたことがありますか？ 仮想化は、現代のITインフラを支える重要な技術ですが、その仕組みは一見複雑に見えます。そこで今回は、仮想化検索に終止符を打つために、まとめます！

# 仮想化って何？
まずは仮想化についてAWSの記事を参照。

https://aws.amazon.com/jp/what-is/virtualization/

なるほど、前提知識がないと全く頭に入ってこない。
そもそものハードウェアとかインフラとかその辺の超基礎的なインプットから整理した方が良さそう。

# 仮想化の仕組みを図解  
最初に全体像を図式化します。その後、各構成要素を説明していきます。

![](https://storage.googleapis.com/zenn-user-upload/9bdd9f28e1f5-20241110.png)

このように、仮想化技術によって、1台の物理マシン上で複数の仮想マシンを動作させられます。

登場人物は6人！
物理マシン、ホストOS、仮想化ソフトウェア、ゲストOS、ミドルウェア、アプリさん。
それぞれ、見ていきます！

## 1. 物理マシン (Physical Machine)  
物理マシンとは、実際に存在するコンピュータやサーバーのことを指します。皆さんの自宅にあるパソコンや、データセンターにあるサーバーをイメージすると分かりやすいでしょう。物理マシンは、CPU、メモリ、ストレージなどのリソースを直接利用します。

## 2. ホストOS (Host Operating System)  
ホストOSは、物理マシン上で動作するオペレーティングシステム (OS) です。Windows 10やmacOS、Linuxなど、普段皆さんがパソコンで使っているOSと同じものを考えてください。ホストOSは、仮想化ソフトウェアを実行し、仮想マシン（VM）を管理します。つまり、仮想マシンを動かすための土台となるOSです。

## 3. 仮想化ソフトウェア (Virtualization Software)  
仮想化ソフトウェアは、物理マシンのリソースを分割し、複数の仮想マシンを作成・管理するためのソフトウェアです。例えるなら、大きなアパートを複数の部屋に区切って貸し出すようなイメージです。代表的な仮想化ソフトウェアには、VMware WorkstationやOracle VirtualBoxなどがあります。

## 4. ゲストOS (Guest Operating System)  
ゲストOSは、仮想マシン内で動作するオペレーティングシステムです。仮想マシンは、あたかも独立したコンピュータのように振る舞いますが、実際にはホストOS上で動作しています。そのため、ゲストOSはホストOSとは別のOSをインストールすることができます。例えば、ホストOSがWindows 10の場合でも、ゲストOSとしてUbuntu Linuxを動かすことが可能です。

## 5. ミドルウェア (Middleware)  
ミドルウェアは、オペレーティングシステムとアプリケーションの間に位置するソフトウェアです。アプリケーションがハードウェアやOSの機能を利用しやすくする役割を担っています。データベース管理システム (MySQL, PostgreSQL) やWebサーバー (Apache, Nginx) などがミドルウェアの例です。

## 6. アプリ (Application)  
アプリは、特定の目的や機能を持つソフトウェアプログラムです。ユーザーが直接操作するもので、業務や日常生活に役立つ機能を提供します。ワードプロセッサ (Microsoft Word, Google Docs) やWebブラウザ (Google Chrome, Mozilla Firefox) など、私たちが普段使っているソフトウェアの多くはアプリです。

# 仮想化がある時とない時
551のほーらいメソッドで、ある時とない時を比較します。

| 項目 | 仮想化なし | 仮想化あり |
|---|---|---|
| **ハードウェアリソース** | 各OSが物理ハードウェアを直接利用 | 物理ハードウェアを仮想化ソフトウェアが管理し、各OSに仮想環境を提供 |
| **リソースの利用効率** | 低い (リソースが余りがち) | 高い (リソースを効率的に活用可能) |
| **サーバー運用コスト** | 高い (サーバー台数増加に伴い、ハードウェア、設置場所、電力コストが増加) | 低い (サーバー集約により、上記コストを削減可能) |
| **システムの柔軟性** | 低い (OSやアプリケーションの追加・変更に時間がかかる) | 高い (仮想マシン単位での操作が可能になるため、迅速な対応が可能) |
| **災害対策** |  復旧に時間がかかる (物理サーバーの復旧が必要) |  比較的容易 (仮想マシンを別のサーバーへ移行) |
| **省電力性** | 低い (サーバー台数が多いほど消費電力が増加) | 高い (サーバー集約により消費電力を削減) |
| **システム管理の複雑さ** | 比較的容易 (ただし、サーバー台数が多い場合は複雑化) | 複雑 (仮想化ソフトウェアの知識・スキルが必要) |

まとめると、

* 仮想化することで、コスト削減、柔軟性・拡張性、省電力、災害対策でメリットがある
* 仮想化は万能ではなく、導入コストや運用負荷、セキュリティ対策など、考慮すべき点も

# サーバーだけじゃない仮想化の世界
これまで、仮想化の基本的な仕組みとメリットについて整理しましたが、 実は、仮想化はサーバーだけでなく、ストレージ、ネットワーク、デスクトップなど、様々な場面で応用されています。

![](https://storage.googleapis.com/zenn-user-upload/d4eb4ebbf3a1-20241110.png)

1. サーバー仮想化
これまで解説してきたように、1台の物理サーバー上に複数の仮想サーバー（仮想マシン）を構築する技術です。 サーバーの集約率向上、運用管理の効率化、コスト削減などの効果があります。

2. ストレージ仮想化
複数の物理ストレージを仮想化ソフトウェアで統合し、あたかも1つの大きなストレージのように見せかける技術です。 ストレージ容量の効率的な利用、データの統合管理、バックアップやリストア作業の簡素化などが可能になります。

3. ネットワーク仮想化
物理的なネットワーク機器を仮想化し、ソフトウェアでネットワークを構築・制御する技術です。 ネットワークの構成変更やリソース割り当てを柔軟に行えるようになり、ソフトウェアで定義されたネットワーク機能により、迅速なサービス展開が可能となります。

4. デスクトップ仮想化
パソコンのデスクトップ環境をサーバー上に集約し、ユーザーはネットワーク経由でアクセスして利用する技術です。 場所を選ばずに業務データへアクセスできる、セキュリティ管理を一元化できる、といったメリットがあります。

| 仮想化のカテゴリ | 代表的なツール | 活用例 |  
|---|---|---|  
| **サーバー仮想化** | VMware vSphere, Microsoft Hyper-V, KVM | ・開発環境と本番環境の分離<br>・レガシーシステムの維持 |  
| **ストレージ仮想化** | SAN, NAS, RAID | ・データセンターのストレージ管理<br>・バックアップシステムの構築<br>・データの災害対策 |  
| **ネットワーク仮想化** | VLAN, SDN, NFV | ・クラウドでのネットワーク構築<br>・マルチテナント環境の分離<br>・ネットワークサービスの提供 |  
| **デスクトップ仮想化** | VDI, DaaS, リモートデスクトップサービス | ・リモートワーク環境の提供<br>・セキュアな作業環境の確保 |  


# おわりに  
今回は、仮想化について、ハードウェアやネットワークなども踏まえて整理しました。サーバーだけじゃない仮想化の世界に気づけたのは、大きな収穫でした。AWSの記事を読んで、なるほど！と思えるようにもなりました。

本記事が、仮想化について理解を深めるきっかけとなれば幸いです！