前置き
講義で機器・サーバー管理を学ぶ際、いくつかの仮想化技術について教えを得た。また、Dockerなど仮想化技術に関する記事を最近読み、多様な仮想化の知識をまとめておきたいというのが記事作成の動機である。内容は基礎的で初学者向けである。
非仮想化(物理的)
上図の通り、この記事では図に木構造を用いる。
物理サーバー(物理マシン)に一つのOSがぶら下がり、そのOSに一つのサービスがぶら下がっている状態。
当然ながら 一つのホストに対し、一つのサービスを提供する。
問題点
- OSがクラッキングされる、又は物理マシンに故障が生じると、サービスが使えなくなる。
- 物理マシンをサービスの数だけ用意しなければならないのでコストがかかる。
ホスト(Host)型
一つの物理マシンに複数OS、複数サービスがぶら下がる。よって、必要な物理マシンの数は減り、コストを抑えることができる。
また、一つのゲストOSがハッキングされても他のサービスは動かし続けることができる。
さらに仮想化プログラム上で動く仮想サーバーはデータの移行が容易である。単純にコピーして別の物理サーバーに移行することが可能。そのため物理マシンが故障してもサービスの復旧に要する時間は仮想化しない場合と比べ、大幅に縮小される。
ただ、実際にはこの形態はサーバーにおいては使用されず、主に開発向けである。サーバー向けには次項で述べるハイパーバイザー型が代替技術となる。
具体的な仮想化プログラムはVMware社のWorkstation Playerなどが有名である。
ハイパーバイザー(Hypervisor)型
こちらもホスト型同様一つの物理マシンに複数サービスがぶら下がり、大きくは違わない。だがホストOSを必要せず、Hypervisorと呼ばれる仮想化ソフトを物理マシン上に直接置き、その上で仮想サーバーを複数立てる。
ホスト型と比較した大きな利点は物理マシンのリソースをより各仮想サーバーに使用できるので処理速度が向上することだ。
HyperVisorソフトの一例としてMicrosoft社のHyper-Vがある。
コンテナ(Container)型
ゲストOSなしで仮想化する技術。OSをダウンロードする手間を省くことができる。また、容易に開発環境を整えられる。さらにホスト型やハイパーバイザー型と比べ動作が軽量で、高速な開発を実現することができる。
こちらもホスト型同様、サーバーではなく開発に使用される技術である。
各仮想環境上のミドルウェア、アプリケーションを合わせてコンテナと呼ぶ。
有名なコンテナエンジンにはDockerがある。
CPUの性能と仮想化技術
現在CPUの性能は計算系のサーバーなどの速い処理速度が必要なサーバーを除き、一つのサービスのみを提供するには十分すぎる性能を持つ。そのため、仮想化技術を用い、複数サービスを一つの物理マシン(CPU)で処理させることが促進されている。
仮想化によるサーバー管理における変化
従来、機器・サーバーは一つの物理ホスト(物理マシン)で一つのサービスのみを提供してきた。そのため、サーバーの物理的な管理としては各ブレードのサービスは何であるかのみを一覧にしておけば問題はなかった。例えば、一つのラックにA,B,Cの三つのブレードがあり、それぞれWebサーバー、FTPサーバー、メールサーバーなどと記載しておけば良かった。しかし現在のように一つの物理ホストが複数のサービスを提供する場合、それぞれのサーバーに対しても一覧を作成し管理しておかなければならない。
所感
仮想サーバーを利用しない利点としては管理が単純である点があるが、それ以上に高コストや低効率なCPUの扱い方といった不利な点が目立つ。仮想サーバーでは上述した通り、移行も簡単であるため運用・保守の面で仮想化技術は優れている。
最後に
記事を読んでいただきありがとうございます。内容に間違い等があればご指摘願います。