仮想化、仮想マシン、VM、サーバの仮想化、デスクトップ仮想化、VDI、仮想デスクトップ、画面転送型、SBC、ネットワークブート型、ホスト型、ハイパーバイザ型、サーバーコンソリデーション、スケールアウト、ライブマイグレーション、ホットマイグレーション
仮想マシン(Virtual Machine、VM)
仮想化(Virtualization)とは、ハードウエアリソース(CPU、メモリ、ディスクなど)を抽象化し、物理的な制限にとらわれず、ソフトウエア的に統合・分割できるようにする技術です。ここで仮想とは「存在しない」という意味ではなく、「そのもの自体ではないがソフトウェアにより実質的にそのものとして稼働する」という意味で用いられます。
仮想マシンは、仮想化の技術を用いてコンピュータを異なる環境で動作させることです。
仮想マシンは、大きく3つの形態があります。
- パソコンの仮想化
Windows PC上でMacを動かす、 Windows PC上でLinuxを動かすなど。JavaやC言語などで記述したソースコードをコンパイラで中間コードにしたものを、個々のOSの機械語に変換できる仮想実行システムをもつパソコンを仮想マシンということもあります。
- デスクトップ仮想化
サーバ・クライアント系において、利用者パソコン(クライアント=デスクトップ)の機能をサーバに集中し、デスクトップには基本的な機能だけに絞り込むことにより、デスクトップの種類を問わなくすること
- サーバの仮想化
クライアントの仮想化は、裏返せば、サーバの仮想化でもあります。1台のサーバを論理的(仮想的)に分割して、Webサーバやメールサーバなど多様な機能をもたせる技術があります。それとは逆に、データを持つサーバ、アプリケーションを持つサーバなど物理的には複数のサーバを、論理的に組み合わせて1台のサーバとして用いる技術があります。
サーバの仮想化により、多様なOSやアプリケーションを動作させることはできます。しかし、処理効率やディスクなどの資源の効率の向上には無関係です。仮想サーバの全体が物理サーバの全体と同じことになります。
仮想化技術の面では、クライアントやサーバで互いに共通していることが多く、実際の利用はサーバ・クライアント系であることが多いので、以降はこの区別に捉われない記述にします。
プロビジョニング
プロビジョニング(provisioning)とは、「準備」「提供」などの意味です。プロビジョニングには、サーバーリソースを供給する「サーバープロビジョニング」、ユーザーアカウントやアクセス権限などを供給する「ユーザープロビジョニング」、サービスを供給する「サービスプロビジョニング」などの種類があります。
仮想化の分野では、ストレージを仮想化し(仮想ディスク)、領域を確保して必要な事態に備えて準備・供給することを指します。複数のストレージ装置を束ねて単一の領域にまとめたストレージプールから、実際に特定の容量の領域を確保して割り当てます。
- シックプロビジョニング(Thick Provisioning)
仮想ディスク作成時に指定したサイズ分の領域を確保します。領域の増減はできず固定化されます。
- シンプロビジョニング(Thin Provisioning)
当初に最低限の領域のみ確保し、必要に応じて増加します。
VDI(仮想デスクトップ基盤)
VDI(Virtual Desktop Infrastructure)とは、クライアント端末からサーバまでを含んだ仮想化のことですが、ここでの仮想サーバの仕組みを指すこともあります。
仮想サーバの設置場所
仮想サーバは、社内からの利用のために社内ネットワークに設置するのは当然ですが、社員が、社外からインターネットを介して利用することも多いので、ファイアウォールで保護したDMZに置くのが多くなってきました。
仮想化の区分
サーバとクライアントの処理分担による区分
- 画面転送型
- SBC(Server-Based Computing)ともいいます。すべての資源はサーバにあり処理も
サーバで行います。クライアントはWebブラウザとマウス・キーボードがあるだけという環境です。完全なシンクライアントにできるので、クライアントの管理が容易ですし、紛失や盗難などのセキュリティに強いメリットがあります。
- ネットワークブート型
- 画面転送型では、すべての処理がサーバで行われるので、サーバの性能が十分でないと応答がおそくなります。ネットワークブート型では、基本的なソフトウェアはクライアントにおき、サーバから必要なデータだけを送り付け、その後の処理はクライアント側で行う方式です。
OSやアプリケーションを使用時にサーバからダウンロードする型もあります。
仮想化の制御による区分
仮想サーバは、制御方法により、コンテナ型、ホスト型、ハイパーバイザ型に区分されます。
その制御は、仮想化レイヤ(数の緑部分)で行います。
- コンテナ型
-
シンプルな形式です。ホストOSの管理下で互いに独立したコンテナという空間を置き、それをコンテナエンジンというソフトでデータやアプリを管理します。しかし、ゲストOSを置けないので、物理サーバのOSがサポートする仮想環境に限定されます。
- ホスト型
- ホストに特定のOS(ホストOS)をおき、ホストOSの下で他のOS(ゲストOS)を稼働させて仮想環境を実現する方式です。身近な例ではWindowsの下にLinuxを稼働させることがあります。ゲストOSはホストOSのアプリケーションとして稼働します。
ホスト型ではすでに利用しているサーバにインストールできるので手軽に実現できる利点がありますが、ハードウェアへのアクセスはホストOSを経由するので、オーバーヘッドがかかり十分な性能が得られない欠点があります。
- ハイパーバイザ型
- ホストOSを持たず、ハイパーバイザという制御ソフトウエアをもち、その下にゲストOSを置きます。ゲストOSがハードウェアを直接制御することができます。また、ハイパーバイザ型の仮想サーバ間では、複数の仮想サーバを効率よく稼働させる仕組みがあります。
サーバ仮想化のメリット・デメリット
- サーバーコンソリデーション
仮想化ソフトウェアを利用して、論理的な複数のサーバを物理的に1台のサーバにまとめる技術です。設置サーバ台数を少なくすることによって、サーバ機器の管理コストが削減できます。
用途別にサーバを設置していると、一方ではサーバの余力がないのに他方のサーバでは余裕があるアンバランスが生じます。それを仮想化により1台のサーバに統合できれば、各用途での相互転用ができます。また、集約することにより設置スペースが節減できます。
仮想化ソフトウェアが介在することによって、物理サーバーと比較するとオーバーヘッドが生まれ性能が低くなります。そのため、小規模な場合やサーバ用途が限定されている場合は、かえってコスト高になることもあります。
- 拡張・変更の容易性
複数のパソコンを結合して1台の仮想サーバになっています。ブレード方式では、ブレードという薄い記憶装置を一つの機器に格納した方式もあります。必要に応じてパソコンやブレードを追加するスケールアウトが容易になります。また、それらのパソコンやブレードが新旧の機種が混在しても論理的には1台のサーバと考えることができるので、一度に全体の機種変更をする必要がなく、ハードウェアの進歩に柔軟に対応できます。
- 事故時の切り替えの容易性
ハードウェアが異なっても論理的に同じ仮想サーバ間では、一方のサーバが故障したときに他方のサーバに切り替えることが容易です。しかも、外部記憶装置を双方でアクセスできる環境にしておけば、遠隔地間でも即時に切り替えることができるので、業務を中断せずに続行することが可能になります。
このように、サーバ仮想化環境で動いている仮想マシンを、OSやアプリケーションを停止させることなく、丸ごと別の物理サーバへと移動できることをライブ マイグレーションといいます。
しかし、1台のサーバとして考えたとき、その中の一部の要素(ハードやソフト)の故障が多くの用途に影響を与えることがありますし、そのときの対処には物理サーバよりも高度な能力をもつ運用管理者が必要になります。
ライブマイグレーション
仮想サーバを構成しているハードウェアの構成変更、部品交換などメンテナンスが必要になったとき、仮想サーバ機能を他のハードウェアに移行する(マイグレーション)ことになります。
ライブマイグレーションとは、マイグレーションの際に、仮想マシンで稼働しているOSやソフトウェアを停止させずに、丸ごと別の物理コンピュータに移動させること。あるいは、その機能です。ホットマイグレーションともいいます。
仮想サーバAからBへライブマイグレーションを行うには、両者を高速LANで接続しており、それを用いて、
動作中のプログラムが利用しているメモリの内容
仮想マシンが利用している仮想ディスク
を転送する必要があります。
ここで、Aのメモリは頻繁にロールイン/ロールアウトが行われているので、Bへの転送中にAの内容が変化することがあります。それを矛盾なく行う仕組みが必要になります。
それがライブマイグレーション機能であり、VMware や Hyper-V などの仮想マシンOSではこの機能を持っています。