VIRTUALIZATION DETAILS

仮想環境の詳細

ハイパーバイザ型仮想環境、ホスト型仮想環境、コンテナ型仮想環境、及び主要なパブリッククラウド サービスの比較をまとめました。

CONSTRUCTION 各仮想環境の構造

各仮想環境の構造を比較すると、以下のように表すことができます。この構造の違いが主な用途の違いをもたらします。

ハイパーバイザ型仮想環境

独自の仮想化管理ソフトであるハイパーバイザをサーバへ直接導入し、サーバ全体を仮想化に利用する。仮想環境上のアプリケーションからサーバまでの経路がホスト型仮想化製品よりも短いため、高いレスポンスが得られる。立ち上げられるVM数は、コンテナと比較すると少なくなるが、自由度の高い仮想化環境を提供できる。

  • ハイパーバイザでマシン全体を仮想環境とする
  • 仮想環境上で仮想マシンを作成しOSを導入する
  • 仮想OS上でアプリケーションを動かす

製品

  • Microsoft Hyper-V
  • VMwareESXi (vSphere)
  • Xen オープンソース
  • Proxmox VE オープンソース
  • KVM(Kernel-based Virtual Machine)
    Linux Kernel自体をハイパーバイザとする仕組み。ホスト型での利用も可能です。

ホスト型仮想環境

ホストOS上で仮想化ソフトを実行させ、その上にゲストOSを稼働させる。
オーバーヘッドが高くなる傾向にあるが、ホストOS上で直接実行しているアプリと並行利用できるため、個人環境での利用に人気がある。

  • ホストOS上に仮想化ソフトを動かす
  • 仮想化環境上で仮想マシンを作成しOSを導入する
  • 仮想OS上でアプリケーションを動かす

製品

  • Oracle VM VirtualBox
    Windows、macOS、Linux上で動作する
  • Parallels Desktop for Mac
    macOS上で動作する
  • クライアント Hyper-V
    Windows8以降の64ビット版Professional、Enterprise、およびEducationで動作する。

コンテナ型仮想環境

ホストOS上でコンテナプロセスを実行しておき、その上にコンテナが稼働してアプリケーショ ンが実行される。
コンテナはホストOSから見ると一つのプロセスとして認識されている。
またコンテナはホスト型の一形態ともみえるが、ホストOSのカーネル部分を共有するため、各コンテナにはOSは導入されていないため、コンパクトで起動/停止も早く、複製も簡単である。VMware製品などの完全仮想化を行うハイパーバイザ型仮想環境と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。

  • ホストOS上でコンテナサーバを動かす
  • コンテナが稼働してアプリケーションが実行される
  • コンテナはホストOSから見ると一つのプロセス
  • ホストOSとコンテナでカーネルを共有している
  • 基本的にLinuxでのサポート(他のOSでも要件次第で利用可能)
  • ゲストコンテナへのリソース割当が苦手
    (1つのコンテナの誤りによって、ホストOS全体が高負荷状態になることも)

製品

Linux環境

  • Docker
    コンテナープラットフォーム。Docker Hubなどで、多くのDockerイメージが公開されている。NVIDIA-Dockerを用いて、NGIDIA GPU Cloudのイメージを利用できる。コンテナの実行にはroot権限が必要。コミュニティ版(CE; Community Edition)とエンタープライズ版(EE;EnterpriseEdition)の2つのエディションがある。
  • Singularity
    科学および高性能コンピューティング(HPC)環境向けに設計されたオープンソースベースのコンテナープラットフォーム。singularityのリポジトリに加え、dockerのリポジトリから、イメージを取得して実行可能。ユーザ権限でコンテナを実行でき、MPIを使って並列処理も可能。
  • Docker Desktop(Windows)(旧Docker for Windows)
    64bitのWindows 10 Pro以上のエディション(Pro、Enterprise、Education)でHyper-Vの有効化が必要。WindowsのホストOS上でHyper-Vを使ってLinuxの仮想マシン(ゲストOS)を起動し、その上でLinuxのコンテナを起動する。
  • Docker Toolbox
    64bitのWindows 7以降のWindowsをサポートしLinux仮想マシンの起動のためにHyper-VではなくOracle VM VirtualBoxを使っているため Hyper-Vを使えないHomeエディションもサポートしている。
  • Docker for Mac
    OS X El Capitan 10.11以降、4GBのRAMが必要。DockerHubからダウンロードしてインストール。

Docker(コンテナ実装の一つ)を使うことで、LinuxのホストOS上で複数のコンテナー(実体はLinuxのプロセス)を実行できます。
Dockerには、コンテナの「イメージ」という概念があります。イメージは実行可能なソフトウェアのパッケージであり、アプリケーションの実行に必要となるすべてのコード、ランタイム、ツール、ライブラリー、設定情報が含まれています。
ホストOSのカーネル部分を共有するため、各コンテナにはOSは導入されていません。
ゲストOSのすべてのバイナリが含まれている仮想マシンイメージがGBクラスになるのとは違い、コンテナのイメージは小さければ数十MB程度になります。
実行したいコンテナーイメージさえ準備しておけば、ローカルマシン、オンプレミス(社内設置型)のサーバ環境、パブリッククラウドなど、Dockerを実行できる多様な環境で、そのコンテナーイメージを実行できます。アプリケーションをコンテナとして実行することで、柔軟性とポータビリティが得られます。

CHARACTERISTIC 各仮想環境の特徴

コンテナ型仮想化 ハイパーバイザ型仮想化 ホスト型仮想化
製品例 Docker
SIngulanty
VMWare ESXi
Microsoft Hyper-V
Xen
Linux KVM
Oracle VM VirtualBox
Paralles Desktop for mac
クライアント Hyper-V
Linux KVM
仮想マシン OS部分を一部ホストOSと共有するため、VMごとにOSインストールをする必要はない VMごとにOSをインストールする必要がある
稼動OSの種類 Linuxのみ稼動可能。
Windows上では現状稼動しないが、クライアント Hyper-VやOracle VM MirtualzBox上のLinuxVMを用いて稼動可能
Windows、Linux、一部のUnixも稼動可能
仮想環境の構築時間 プロセスとしてイメージを稼働させるだけ。
OSインストール不要。
ネットワーク・OSインストール等の構築作業が必要
ネットワーク 標準では、ホスト側に作成されたDocker専用のNICとしか通信できない。
(コンテナにポートフォワーディングでアクセスすることは可能)
ネットワークの作成が可能で、VIMにも任意の数のvNICを付与可能。
リソース 標準ではHDDリソースの指定が出来ない。CPU、メモリについてはリソース割り当て上限を指定可能 CPU、メモリ、HDDのリソースについて割り当てを指定する必要がある。
オーバーヘッド コンテナはホストOSから見ると単一のプロセスであり、オーバーヘッドはほぼない VMから機器までのアクセス経路がハイパーバイザのみなので、ホスト型仮想化に比べるとオーバーヘッドは少ない VMから機器までのアクセス経路が他の仮想化技術に比べ長いため、比較した場合には一番オーバーヘッドが大きくなる
主な用途 アプリケーションの実行 サーバ環境の仮想化、VDIなど ワークステーション上で、別OSを稼働させる

PUBLIC CLOUD パブリッククラウド

HPC分野での利用を念頭に、IaaS(Infrastructure as a Service)、SaaS(Software as a Service)をご紹介します。

  • Rescale

    HPCクラウドをSaaSとして利用が可能。AWS、AZUREなどをインフラ基盤として、そこにアプリケーションインストール、Rescale独自のワークフローを被せSaaSとして提供。利用可能なHPCアプリケーションは100種類以上で、一部の商用アプリケーションは従量課金で利用が可能。

  • Microsoft Azure

    Windowsに加えLinuxが使え、HPC分野向けにInfiniBand(IB)が利用可能。ただ仮想環境でのIB利用のため IP over RDMAとなり、実機環境のパフォーマンスには及ばない。Azure CycleCloudにより、HPCワークロードのクラスタ運用管理機能を提供開始しました。計算ノードをオートスケールすることができます。

  • AWS(Amazon Web Services)

    パブリッククラウドのデファクトスタンダードとも言えるサービス。サービス系アプリやビッグデータ分析、ストレージなど、幅広い利用に適した性能を誇る。HPC分野向けには高性能インスタンスが利用可能。インターコネクトは10Gのみ。Amazon EC2 に CfnCluster を使用して伸縮自在な HPC クラスタを設定し、実効することができる。

  • Google Cloud Platform

    強固なインフラを持ち、カスタムマシンにより、コア数、メモリ、ディスクを別々に設定可能など、自由度も高い。わずか数分でテラバイト単位のビッグデータを処理できるBigQueryや、ディープラーニング用サービスのCloud Machine Learningなども優れているため、機械学習を活用したビッグデータ解析に活用できる。

  • IBM Clude

    システム構成は物理環境(ベアメタル)。一部のリージョンではInfiniBandもかなり高価。POWER8もクラウドインフラとして利用可能。特長として「Designed for your Data」「Ready for AI」「Secure to the Core」の3点を謳っており、データの完全性、低レイテンシー、並列処理が必要なAI集約型のワークロードを強化すると謳っているほか、IBM Watson®と機械学習の幅広いAPIを提供している。HPC向けにSpectrum LSF:Job管理、Object Storage:オブジェクトストレージ、Aspera:高速データ転送などをアピールしている。