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:高速データ転送などをアピールしている。