サーバーの仮想化技術って、実は3種類あるってご存知でしたか?
その違いがわからなければ、サーバーの仮想化を語る上で、重大な誤解をしかねません。
初心者の方でも違いが明確にはっきりわかるよう、まとめました。
※違いを簡潔に明確にすることを主旨としていますので、厳密に仮想化の仕組みを学びたい方は途中のリンクか他のサイトで補強することを推奨しています。
前提知識
次の用語がわかれば、この記事は理解できるようになっていますので安心してください!
逆に、上記用語が怪しい方は、1つずつgoogle検索してみることをオススメします。上記以外の専門用語っぽいものはきちんと後半で解説(or 外部リンクを貼り付け)しています。
そもそもサーバーの仮想化って?
サーバーの仮想化とは「ソフトウェアを使って、コンピュータの中にサーバーを再現すること」です。
本来、サーバーを新しく立てようと思ったら、
「ハードウェア」+「ソフトウェア」
が必要です。つまりサーバーにするために新しいコンピューターを買って用意して、そこに必要なソフトを入れていくことが必要なわけです。
サーバーを仮想化すれば、それを
「既にある別のコンピュータ」+「仮想化用のソフトウェア」
で実現することができます。これにより、
- サーバー用ではない普通のパソコンにサーバーの環境を実現したり
- 同じハードウェアの上に、OSなどの環境が全く異なる複数のサーバーの環境を実現したり
といったことができます。
既存のコンピュータを利用できれば、新しくコンピューターを用意する必要がないため、サーバーを立てるのが非常に簡単ですね。例えば、自分のMacのパソコンで、Linuxを使ったりできちゃうわけです。流行って久しいクラウドも、詳細違えど大枠は同じ技術が使われています。
サーバーの仮想化3種類
そんな、今となってはIT技術に欠かせないサーバーの仮想化ですが、方法は大きく3種類に分かれます。似ているところも多いですが、どの方法でサーバーを仮想化しているかの前提が違うとコミュニケーションがとれないので、この3つの違いは押さえておく必要があります。
1.ホストOS型
「仮想化ソフト」をインストールして、その上に仮想マシンを起動し、各仮想マシン毎にゲストOSを入れていく方法。
ゲストOSもホストOSも使うため、カスタマイズが自由に出来るがその分重くなりがち。
2.ハイパーバイザー型(ベアメタル型)
ホストOSの代わりに「ハイパーバイザー」と呼ばれる仮想化のためのソフトウェアをサーバーに直接インストールし、その上に仮想マシンを起動、各仮想マシン毎にゲストOSを入れていく方法。
ホストOSを介さないのでその分高速でリソース効率が高いが、仮想環境を構築する以外のことはできなくなるし、通常ならあるホストOSがないため、より高度なスキルが必要。
3.コンテナ型
ホストOS上でコンテナエンジンを起動し、ゲストOSは使わずにコンテナイメージを作成することで、(不思議なことに)なんと1つのOSであたかも別のマシンが動いているかのようにサーバーを動かすことができます。(原理や仕組みを見ていくと、本当に上記2つとは異なることがわかります。初学者の方は心して学習されてください・・・)仮想マシンではなくコンテナを用いる、全く新しい概念です。
1つのOSで稼働するため高速で、コンテナイメージのコピーも簡単なので手軽にコンテナを起動可能。コンテナのデプロイ時にOSの再起動が必要ないため、デプロイも高速化できます。ただし、OSが限られるという不自由さがあります。
サーバーの仮想化3種類の比較表(違い)
まとめると、下図のとおり。中断の3段、ホストOS〜ゲストOSが差分(相違点)です。
比較表は下記のとおり。(究極的に簡単に書いています)
仮想化の種類 | 1.ホストOS型 | 2.ハイパーバイザー型 (ベアメタル型) | 3.コンテナ型 |
仮想環境の呼称 | 仮想マシン | 仮想マシン | コンテナ |
メリット | カスタマイズが自由 | 高速・リソース効率が高い | 高速・お手軽 |
デメリット | 重い | 専用・高度 | 不自由 |
ゲストOS | 必要 | 必要 | 不要 ※1 |
ホストOS | 必要 | 不要 | 必要 |
必要なソフト | 仮想化ソフト (広義ではこれもハイパーバイザーと呼ぶ) | ハイパーバイザー | コンテナ仮想化ツール |
ソフトの具体例 | ・VMware Workstation Player ・VMware Fusion ・Oracle VM Virtualbox | ・Vmware ESXi ・Linux KVM ・Microsoft Hyper-V ・Citrix Xen Server ・Red Hat Enterprise Virtualization(RHEV) | ・Docker ・Kubernetes |
※1 コンテナイメージから共有できるため、ゲストOSが不要。
参考にしたサイト:
仮想化技術について解説 ホスト・ハイパーバイザー・コンテナの違いとは?
要するに、ゲストOSが必要か否か、ホストOSが必要か否か、が違いで、それによって色々な特徴があると思っていただいて大筋大丈夫です。
用語解説
略語や専門用語を放置していましたので、モヤッとしている方は下記参照ください。
仮想環境・仮想化されたサーバー
「仮想化されたサーバー」とは、上記「サーバーの仮想化」によって構築されたサーバー(コンピューター)のこと。最初からサーバーを立てることを目的としてコンピューターを用意してそれをサーバーとする「物理サーバー」と区別するために使う用語。したがって、仮想環境とは、「仮想化されたサーバー」内の環境のこと。「仮想環境をつくる」=「仮想サーバーを立てる」はほぼ同じ意味合い。
クラウド
クラウドとは「仮想環境を、インターネットを通じて提供しているサービス」のこと。
利用者側からすれば、
「業者が管理している仮想環境を、インターネットを通じて借りられるサービス」
という認識でOKです。昔からあったレンタルサーバーもクラウドの一種と考えられます。現在はサーバーだけでなく、ストレージやデータベースなど、その他様々な仮想化されたサービスが提供されていますね。
VM(Virtual Machine)= バーチャルマシン = 仮想マシン = 仮想機械
VMとは仮想化ソフト(ハイパーバイザー)を使用して作られた仮想環境のこと。コンテナはVMとは呼ばないみたいです。タイトルのとおり様々な言い方がされますが、どれも同じ意味なので惑わされないように。笑
OS(Operating System) = オーエス
コンピューターに必要な最も基本的なソフトウェア。人間で言うと脳に当たるのかな?WindowsとかMacとかLinuxとか言ってる、あれです。仮想化の方法3種類はいずれも、ホストOSまたはゲストOSを有していることがわかると思います。OSがないとコンピューターやサーバーにならないからです。
もっと詳しく知りたい方は、こちらの記事を読んでみてください。
ホストOSとゲストOS
ホストOSとゲストOSの違いは、単純です。ハードウェアに直接インストールするのがホストOS、仮想化ソフト(ハイパーバイザー)の上にインストールするのがゲストOS、といった違いがあるだけです。あとはそうですね、ホストOSの上にゲストOSがある構造の場合、ゲストOS上ではホストOSの動きは無視できます(そのための仮想化ですから)。
そもそも「ホスト」って? という方はこちらもチェック!
ホストとは?デプロイ・リリースとの違いも初心者向けにわかりやすく解説
HV(hypervisor) = ハイパーバイザー
既に出てきているとおり、ハイパーバイザーとはコンピュータを仮想化するためのソフトウェアのこと。最近はホストOSがいらないことが多く、ホストOSなしでハイパーバイザーを使い仮想化する方法のことをハイパーバイザー型と呼ぶことが多いようですので、本記事ではそのようにまとめています。
参考:
わわわIT用語辞典「ハイパーバイザ (hypervisor)」
ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要
「ことが多い」みたいな曖昧な感じでしか説明できないのは、技術の進歩や流行と共に微妙に言葉の定義が変わってるみたいで、サイトによって書いてあることが違ったりするためです。
はっきりしてほしいなと思う気持ちもわかりますが、そんなもんだと思っていただく方が今後生きやすいかなあと・・・
「ハイパーバイザー」について詳しくは下記外部サイトをご覧ください。どちらも、「ホストOS型の仮想化ソフトもハイパーバイザーと呼ぶ」スタンスです。
仮想化 ハイパーバイザーとは
用語集|ハイパーバイザー
ベアメタル(bare metal)
「ベアメタル」とは、直訳で「むき出しの金属」や「金属の露出した面」といった意味。転じて、OSやソフトウェアなどがインストールされていないまっさらなハードディスク(物理サーバー)のことを指します。
ベアメタルサーバーの上にハイパーバイザーをインストールすることで仮想サーバーを立てられることから、ハイパーバイザー型はベアメタル型と呼ばれることも多いようです。
詳細はこちら:
MW(Middleware) = ミドルウェア
ミドルウェアとは、アプリケーションとOSの中間に存在するソフトウェア。あくまでOS上で動くソフトウェアだからアプリケーションの一種なんだけど、別のアプリケーションを動かすために必要なものだから普段エンドユーザーが直接触ることはない、といった類のアプリケーションです。複数のアプリケーションの共通部分を抽出したもの、と考えることもできます。
詳しくはこちらで解説しています。
サーバーの仮想化は3種類、その違いは把握しておくべし!
サーバーの仮想化の方法を3種類、解説して参りました。
初めて「仮想環境をつくろう!」となった方は、まずこの3種類に困惑すると思います。
私が色んな記事を読み漁って理解したところをこの記事一本で把握してもらえれば、本題の「どの仮想化の方法で」「実際どう環境構築するか?」という作業に時間を割けるはずです!
本記事がお役に立てば幸いです。
最後まで読んでくださってありがとうございました!
気軽にコメントくださいね!
コメント