virtual-machine

仮想化・仮想サーバーについての覚書。

仮想化 (Virtualization) とは

仮想化とは、物理的な環境にとらわれることなく、ハードウェアに含まれるCPU、メモリなどのリソースを倫理的に分割・統合する技術のことで、サーバ仮想化、ストレージ仮想化、ネットワーク仮想化……など、いくつかの種類がある。

仮想マシン (Virtual Machine, VM) とは

仮想マシンとは、仮想化の一つ、「サーバ仮想化」の事で、1台のコンピューターで複数のコンピューターを動かす技術のこと。

1つのサーバを分割して、複数サーバがあるように動作させる事ができる。

仮想マシンのそれぞれに違うOSを起動させる事ができるので、WindowsのPCでLinuxのOSを動かすなども可能。

ホストOSとゲストOS

ホストOSとは、仮想マシンに置いてベースとなるコンピューターに搭載されているOSの事。

ゲストOSとは、仮想マシン環境にインストールして稼働するOSの事。

例えば、WindowsのPCに仮想マシンでLinuxを動かす時は、WindowsがホストOS、LinuxがゲストOSとなる。

仮想マシンのメリットとデメリット

仮想マシンを使うメリット

コスト削減

仮想マシンを活用することで、物理的なパソコンやサーバなどのハードウェアが不要。

機器の追加購入やメンテナンスの維持費などのコストも押さえられる。

大きな仮想マシン1台で複数のシステムを稼働させられるため、物理的なハードウェアの台数を削減することができる。

セキュリティ面で安心

1台のコンピューターに1台のOSだと、万が一、セキュリティホールと突破された場合、全て乗っ取られてしまう危険性があるが、仮想マシンにしておけばそのリスクを分散させることができる。

ただし、ホストOSもゲストOSも万全のセキュリティ対策をしておく必要がある。

複数のOSで確認できる

Windowsでうまく work しても、Mac や Linux では work しないこともある。

この場合、仮想マシンを利用して、複数のOSで動作確認することができる。

仮想マシンを使うデメリット

物理環境よりも性能が劣る

元のホストOSの物理環境よりも性能が劣る事がある。

特に、1台の物理マシンで複数の仮想マシンを実行すると、パフォーマンスが不安定になることがある。

技術がいる

仮想化の知識や技術を必要とする。

仮想マシンの種類

仮想マシンには、主にホスト型、ハイパーバイザー型の2種類の他、最近、コンテナ型と呼ばれる仮想化システムも躍進中。

ホスト型仮想マシン

物理マシンにOSをインストールし、その上に仮想ソフトウェアとなるアプリケーションをインストールして仮想マシンを実現させる。

既に利用しているPCやサーバーにも簡単にインストールできるため、導入しやすい。

virtual-machine-host

ホスト型仮想マシンの例

  • VMware Workstation Player
  • VMware Fusion
  • Microsoft Virtual PC
  • Oracle VM Virtualbox

ハイパーバイザー型仮想マシン (ベアメタル型)

仮想化のためのOSのようなもので、サーバにインストールし、そのOSのの上で仮想マシンを稼働させる。

ホストのOSが不要で、直接サーバーにソフトウェアをインストールして仮想マシンを実現させるため、処理速度低下を最小限に抑えられる。

現在、ホスト型VMよりもハイパーバイザー型VMの方が主流。

仮想マシンリソースはホスト・オペレーティングシステムに対してスケジューリングされ、ハードウェアに対して実行される。

virtual-machine-hypervisor

ハイパーバイザー型仮想マシンの例

  • VMware vSphere ESXi
  • Citrix XenServer
  • Microsoft Hyper-V
  • Linux KVM
  • Red Hat Enterprise Virtualization(RHEV)

コンテナ型

ホストOSにコンテナエンジンと呼ばれる仮想化ソフトウェアをインストールし、その上にコンテナを置くことで、複数のアプリケーションを同じOS上で動かす。

コンテナの中で各ユーザーのアプリケーションが独立して動作するため、仮想サーバーというよりは、隔離された別々のアプリケーション実行環境というイメージで、ホスト型やハイパーバイザー型とは全く異なる概念。

アプリケーションやソフトウェアを実行環境と共にコンテナイメージとして包括することから、コンテナ型と呼ばれる。

1つのOSで稼働するので、プロセッサやメモリの消費が少なく、ストレージの使用もわずか。

コンテナイメージやソフトウェアそのものが軽量で、立ち上がりが速い。

virtual-machine-container

コンテナ型仮想マシンの例

  • Docker
  • Kubernetes

3つの仮想マシン比較

仮想マシン メリット デメリット
ホスト型
  • 既存マシンが利用できる
  • 仮想化に必要なソフトウェアが扱いやすく、手軽
  • 検証環境など何パターンも環境が必要な時や、すぐにクリーンな開発環境を用意したい時に便利
  • 動作速度が遅い
  • ホストOSを動作させるための物理リソースが必要
  • ゲストOSを運用する場合にホストOSでの処理速度が限定的になる
ハイパーバイザー型
  • ホストOSが不要で、ハードウェアを直接制御できる
  • 各仮想マシンのゲストOSを自由に選べる
  • カスタマイズが柔軟に行える
  • システム全体の観点からみてリソースの使用効率が良い
  • 管理するサーバの台数削減が可能
  • 仮想化環境の高度な管理を実現するツールが標準装備されなかったりする
  • ハードウェアのスペックが低かった場合は処理能力不足となる場合がある
  • 頻繁なアップデートなどがあるため、専門的な知識や技術が必要
コンテナ型
  • コンテナエンジンさえあればどこでも起動できる
  • 必要最小限のCPUやメモリしか使用しないので、負荷が小さく高速な動作が実現可能
  • 比較的容易でコピーも簡単なので、作業時間の大幅な短縮が可能
  • テスト環境で動いたものをそのまま本番環境にもっていくことができるため、環境要因によるトラブルを減らすことができる
  • 異なるOSを同一基盤上で動かせない(コンテナ環境のホストは1つしかないため)
  • 複数のホストでのコンテナ運用が煩雑になる
  • コンテナエンジンをインストールしている基盤自体は共有しているため、カーネルなどの変更を個別に変更できない
  • 比較的新しい技術のため、ノウハウを持った技術者が多くなく、導入・運用のための学習コストが比較的高くかかる

References

にほんブログ村 子育てブログ ワーキングマザー育児へ