文系SEが考える仮想化とは

以前、以下のような記事で簡易的にインフラについて説明しました。

[文系SEが考えるサーバとは](https://qiita.com/ok2/items/3561e5b0560dfc106a86)
[文系SEが考えるネットワークとは](https://qiita.com/ok2/items/a5fb9b669b347bde2707)
[文系SEが考えるストレージとは](https://qiita.com/ok2/items/2ba909cd3c78b652b718)

コンピュータの登場により格段にできることが増えましたが、
運用していくうえでいくつもの問題が発生しました。

「機器のライフサイクル対応」や「機器増加に伴う運用の複雑化」などが挙げられます。
それらの問題を解決するための技術として『仮想化』が誕生しました。

本記事では、この『仮想化』について、自分用のメモを残します。

#お約束
以下の注意書きをよく読み、用法用量を守って正しくお使いくださいmm

* 文系SEが新入社員やIT業界初心者向けに執筆した記事です。
* 記載されている情報が必ずしも正しいとは限らないので、必ず自分でも調べ直してください。
* 日本生まれ日本育ちですが、日本語が怪しい箇所が多々あります。見つけた場合は、優しくご指摘いただければ幸いです。

#仮想化ってなに？
>仮想化とは、ソフトウェアによって複数のハードウェアを統合し、自由なスペックでハードウェアを再現する技術で、限られた数量の物理リソース（CPU、メモリ、ハードディスク、ネットワーク等）を、実際の数量以上のリソース（論理リソース）が稼働しているかのように見せかけることです。
出典：https://www.fsi.co.jp/solution/vmware/knowledge/virtualization.html

うーん、難しい。

『物理』や『論理』がなんなのかがわかりづらいです。

##物理と仮想
名称などでイメージするとわかりやすいかもです。

『物理名』と『論理名』というものを現場などではよく耳にします。
『物理名』は本名（コンピュータに通用する実際の名前）、『論理名』はあだ名（人間が勝手に決めた名前）です。

**『物理』は「実際に(の)」、『論理』は「見(せ)かけ上」**と訳すとイメージしやすいです。

『物理削除』は「実際にデータを削除すること」です。
『論理削除』は「実際にデータは消さないが、(削除済などの情報を付与することで)見かけ上は消えているようにすること」です。

#仮想化とは
『仮想化』とは「見せかける」技術であるといえます。
<img width="1081" alt="スクリーンショット 2020-05-14 15.20.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/855434c5-bff9-5fef-dc29-024eb71b960e.png">
これらの技術を『ソフト（ウェア）』を使用して『コンピュータ』上に実現したのが後述の『仮想化技術』です。

##仮想化技術について
サーバとはで説明したように、『コンピュータ』は『ハード（ウェア）』と『ソフト（ウェア）』で構成されています。

『仮想化技術』は『ソフト』の一種ですが、処理対象は『ハード』です。
まさに『ハード』と『ソフト』の中間、橋渡し的な存在になります。

###ソフトウェア定義（SD〜：Software Defined 〜）
『ハードウェア』を物理的な手作業ではなく、『ソフトウェア』で定義・制御する環境を構築する仕組みです。

『ソフトウェア』は各機器にインストールするだけでなく、
専用の『サーバ』をたてることで、機器ではなく『サーバ』にインストールして使用することもできます。

『SD~』は『サーバ』だけでなく『ストレージ』や『ネットワーク』に関しても対応が可能です。
それらも併せてここで紹介します。

###サーバ仮想化
『物理的』に1台のサーバを、仮想化ソフトを使用しリソースを『論理的』に分割することで、
複数のサーバがあるように見せかけることです。

論理的に分割され作成されたサーバを『仮想マシン(VM：Virtual Machine)』といいます。

1台の物理サーバ上に複数のサーバを集約できるため、管理のコストや負荷が削減できるメリットがあります。

####サーバ仮想化の手法
[文系SEが考えるサーバとは](https://qiita.com/ok2/items/3561e5b0560dfc106a86)で説明した『コンピュータ』の構成要素を元にイメージしてみました。
<img width="963" alt="スクリーンショット 2020-05-14 18.57.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/45203b41-6d28-6985-07f1-5015ba903a9d.png">
区切り方（仮想化）が異なるだけで、
やっていることは「1つしかないものを複数あるように見せかけている」だけです。

忘れてはいけないのは、**『サーバ仮想化』といっても物理サーバが必ず1台は存在する（必要）**ということです。
物理サーバの容量を超えた仮想サーバは絶対に作れないということを忘れないようにしましょう。


####サーバ仮想化のメリット

- **『物理サーバ』の設置スペースを省略できます**
    - 既存で『物理サーバ』(スペック：10)が5台あるとします。
    - 『物理サーバ』(スペック：50)を用意し、内部に『仮想サーバ』を5台立てれば同じスペックのものを提供できます。
    - これにより既存で借りていた5台分のスペースが1台で済みます。
- **『物理サーバ』のリソースを有効活用できます**
    - 既存の『物理サーバ』(使用率：20%)が5台あるとします。
    - 5台の『物理サーバ』を同一スペックのサーバに仮想化を用いて統合することができます。
    - 上記の設置スペース同様、管理するサーバの台数を減らせます。
    - 1台あたりの使用率をあげることで、資産としてのサーバを十全に使用できます。
- **『仮想サーバ』であれば増設が容易にできます**
    - 『物理サーバ』の増設はコストと時間がかかります。
    - 『物理サーバ』を自前で持っていれば、仮想サーバの増設にはコストがかかりません。
    - また、増設自体は『物理サーバ』の増設と比べて所要時間が圧倒的に少なくすみます。
- **BCP対策が容易に実現できます**
    - 上記のようにサーバの構築が『物理サーバ』に比べ迅速にできます。
    - 障害が発生した場合でも、サーバ復旧（再構築）などが早くできる点でBCP対策にむいています。

> BCPとは事業継続計画（Business Continuity Plan）の頭文字を取った言葉です。企業が、テロや災害、システム障害や不祥事といった危機的状況下に置かれた場合でも、重要な業務が継続できる方策を用意し、生き延びることができるようにしておくための戦略を記述した計画書です。
出典：https://www.nri.com/jp/knowledge/glossary/lst/alphabet/bcp

###ネットワーク仮想化
既設の物理的なネットワーク機器上に複数の異なる論理ネットワークを構築します。

構築された論理ネットワークのことを『**仮想ネットワーク(VLAN：Virtual Local Area Network)**』といいます。

『物理サーバ』やネットワーク設備を変更することなく、ソフトウェア的に複数の論理ネットワークに分割することで、
『仮想サーバ』の増加に応じたネットワークの割り当てをします。

####ネットワーク仮想化の手法
ネットワーク仮想化を実現するため、以下の2つの手段があります。

**SDN：Software Defined Network**
ネットワーク機器やケーブルなど物理的にどう繋ぐかで『ネットワーク』を構成するのではなく、
ネットワーク管理機能を提供する『ソフト』が導入されている機器をネットワークに接続することで通信処理を制御します。

**NFV：Network Function Virtualization**
ネットワーク機器が担っている役割（不要な通信の特定や遮断、アクセスの負荷を分散する機能）を
『仮想サーバ』にソフトウェアとして入れたうえでネットワークに配置します。

既存の『ネットワーク』と上記2つの手法をイメージにまとめると以下のようになります。
<img width="1081" alt="スクリーンショット 2020-05-15 0.09.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/6321c511-3681-3aee-da87-243ceb11704f.png">
『SDN』はネットワーク機器内の『ソフト』で仮想化を、『NFV』はネットワーク用『仮想サーバ』を構築することで仮想化を実現します。

####ネットワーク仮想化のメリット
- **『ネットワーク』を論理的に分割できます**
    - 物理的に1つのネットワーク配置になっていても、論理的に『ネットワーク』を分割することができます。
- **『ネットワーク』の細分化が容易のためネットワークセキュリティが向上します**
    - 役割毎に『ネットワーク』を構築できるため、不要なアクセスなどを事前に遮断することができます。

###ストレージ仮想化
『サーバ』や『ネットワーク』同様『ソフト』を使用して『ストレージ』を仮想化することができます。
この考えを『**SDS：Software Defined Storage**』といいます。

複数の『物理ストレージ』を『ソフト』を使用し、論理的に統合した1つの大きな『仮想(論理)ストレージ』を構築します。
統合された『仮想ストレージ』のことを『**ストレージプール**』と呼びます。

『ストレージプール』を利用することで、
『サーバ』に割り当てる『ストレージ』を実際の物理ディスク容量より大きく見せることもできます。
見せかけの容量は大きくても、実際はそれより少ない容量のストレージを割り当てるだけで済ませています。
この機能を『**シンプロビジョニング**』といいます。
※『シン(薄い)＋プロビジョニング(供給)』　→　薄く容量(ストレージ)を割り当てる

####ストレージ仮想化の手法
ストレージの仮想化を実現するための手法としては以下の3つが挙げられます。

**サーバベースストレージソフトウエア**
ソフトウエアとして提供され、複数の汎用サーバとその内蔵もしくは直結ストレージを束ねて大きな共有ストレージとして構成します。
ストレージ専用ハードウエアを使用せず、『サーバ』の追加により簡単にスケールアウトできるため、
システムやサービスをスモールスタートで迅速に立ち上げたいような場合に適しています。

**仮想ストレージアプライアンス**
ハードウエアとして提供されている『ストレージ』のOS/ソフトウエアを、
仮想化技術を用いて『仮想アプライアンス』として提供します。
※『仮想アプライアンス』とは、ハイパーバイザなどの仮想環境で、目的のアプリケーションがすぐに使えるようにあらかじめ構成してあるソフトウェアのことです。

**ストレージコントローラ**
ストレージ機能そのものは、従来のハードウエア製品を通じて提供しますが、
異なる機種のストレージの制御を一元管理するソフトウェアを導入します。
ストレージプールなどのリソースの抽象化や運用自動化を促進することができます。

ストレージ仮想化のイメージをまとめると以下のようになります。
<img width="1082" alt="スクリーンショット 2020-05-15 11.32.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/bacdc134-51a9-5a0e-2104-0b2dab58fd22.png">

####ストレージ仮想化のメリット
- 『ストレージ』を一元管理できます
    - 統合された仮想ストレージを集中で管理することで、ストレージ装置毎に空き容量を個別に管理する必要がなくなります。

###デスクトップ仮想化（VDI：Virtual Desktop Infrastructure）
サーバー上に、PC（デスクトップ）環境を構築することで、
PCの管理運用の省力化、セキュリティの向上、情報漏えいの対策などを可能にする技術です。

特にセキュリティに関してはデータそのものはサーバ内にあり、手元にあるPC端末にはデータがありません。
これによりPC端末を紛失してもデータ流出を防ぐことができます。


##仮想化のデメリット
ここまで仮想化の内容とメリットを説明しましたが、仮想化にはデメリットもあります。
主に今まで1台だったものが複数になることによるものです。

- 運用の複雑化
    - 仮想化を実施することで今まではなかった仮想化の運用が必要になります。
    - 複数サーバが1台のサーバ上で動いているため、バックアップなどのスケジュールを見直す必要があります。
- セキュリティ管理の刷新
    - 物理サーバとは別にセキュリティ対応をしなければなりません。
    - 仮想化はソフトウェアで実施するため、追加で専用のセキュリティ対応が必要になります。
    - また、一度ウイルス感染すると複数台のサーバに感染してしまう可能性があります。

#まとめ
- 『仮想化』とは「見せかける」技術のことを指します。
- 『仮想化』は『ソフト』で実現させ、そのことを『SD~：Software Defined~』といいます。
- 『サーバ仮想化』は『物理サーバ』上に複数の『仮想マシン(VM)』を構築させる技術です。
- 『ネットワーク仮想化』は『ネットワーク』を論理的に分割、統合させる技術です。
- 『ストレージ仮想化』は複数の『ストレージ機器』を統合し『ストレージプール』を構築する技術です。
- 『仮想化』のメリットは「リソースの有効活用」と「一元管理」です。
- 『仮想化』のデメリットは「運用やセキュリティの見直し」が必要になることです。

#最後に
理解が追いつかない場合は、再度以下の記事を読み直していただくと良いかと思います。
[文系SEが考えるサーバとは](https://qiita.com/ok2/items/3561e5b0560dfc106a86)
[文系SEが考えるネットワークとは](https://qiita.com/ok2/items/a5fb9b669b347bde2707)
[文系SEが考えるストレージとは](https://qiita.com/ok2/items/2ba909cd3c78b652b718)

#参考
[仮想化とは](https://www.fsi.co.jp/solution/vmware/knowledge/virtualization.html)
[そもそも仮想化とは](https://licensecounter.jp/engineer-voice/blog/articles/20190508_post_11.html)
[よくわかるIT新発見　第1回　「Software Defined xx」の潮流を読み解く！](https://www.ctc-g.co.jp/report/column/it_sdi/)
[サーバ仮想化って何？初心者向けに解説！](https://it-trend.jp/server-virtualization/article/beginners_course)
[ネットワーク仮想化とは](https://licensecounter.jp/engineer-voice/blog/articles/20190508_author.html)
[[第1回 SDS(Software Defined Storage)って何?](https://news.mynavi.jp/article/emcsds-1/)
[仮想アプライアンス（かそうあぷらいあんす）](https://www.itmedia.co.jp/im/articles/1008/14/news002.html)