仮想化

仮想化について解説します。

仮想化とは

コンピュータリソースそのものをソフトウェア化(抽象化)することで、1台の物理サーバ上で複数のサーバーやOSを、自由に切り替えて使えるようにすることを仮想化と言います。ハードウェアとは切り離して、ソフトウェア上でコンピュータのそのものの構成を設定できるため、作業時間の短縮や、物理的に難しい作業を行うことができるようになります。一般的にソフトウェア化されたコンピュータを仮想マシン、ハードウェアを物理マシンと区別します。

仮想化の仕組み

通常、1つの物理マシンには1つのOSがインストールされています。一方、仮想化はゲストOSと呼ばれる複数のOSを1つのコンピューター上で立ち上げます。例えば、1つのWindowsマシンの中に、Mac OSとWindows OSを共存させたりします。

仮想化の種類

仮想化にはホストOS型・ハイパーバイザー型の2種類があります。

狭義の仮想化

ホストOS型

ホストOS型は、ホストとなるOS上で仮想化ソフトウェアを動作させ、そのソフトウェア内でゲストOSを立ち上げる方法です。例えば、Mac OSに仮想化ソフトをインストールして、Windowsの仮想サーバを立ち上げるような時に使います。

ホストOS型のメリットは、既存OSに仮想化ソフトをインストールするだけで、どんな環境でも仮想化を行えるという点です。一方でデメリットとして、ゲストOSを動かすためにホストOSを経由させてハードウェアを動かす必要があるので、後述のハイパーバイザー型に比べて動作が遅くなります。

ハイパーバイザー型

ハイパーバイザー型は、ホストOSを介さず直接マシンにゲストOSを立ち上げる方法です。

ハイパーバイザー型のメリットは、直接ハードウェアを制御できるため、ホストOS型に比べて動作が速いという点です。ハイパーバイザー型のデメリットは、ハイパーバイザーという仮想サーバを立ち上げるためのソフトが入ったマシンを使う必要があるので、ゲストOS型に比べて手軽には扱えないという点です。

広義の仮想化

プラットフォーム仮想化

プラットフォーム仮想化とは、ハードウェア上でホストプログラムが擬似的なコンピューターを作り出す技術のことを言います。ここで作られた擬似的なコンピューターはそれ自体がOSとして振舞うことで、ホストOSとは独立したマシンとなります。仮想化という用語はハードウェアとソフトウェアの組合せによって実現された仮想機械(Virtial Machine)という概念とともに1960年代に生まれました。

ネイティブ仮想化はホストとなるコンピューターと同じ機能のコンピューターを仮想マシンとして生成する仮想化のことです。Parallels Workstation、Parallels Desktop、VirtualBox、Virtual PC、VMware Workstation、VMware Server、QEMU、Adeos、Mac-on-Linux、VirtualLogix VLX Virtualizer for VT などがあります。

リソース仮想化

補助記憶装置のボリューム、名前空間、ネットワークリソースといった特定のシステムリソースの仮想化はリソース仮想化と呼ばれます。この技術を活用することで、大きいストレージを分割して複数のものとして扱ったり、小さいストレージを複数集めて1つの大きいリソースを作ることができます。(仮想記憶、RAID)

仮想化のメリット

リソースの有効活用

余っているリソースをゲストOSに割り当てることによって、使われていない無駄なコンピューターリソースを別の方法で活用することができます。

1つのサービスに対して1つのサーバを割り当てた場合、サーバーはそのリソースの一部のみを利用するため、使われずに眠ったサーバーリソースが少なからず発生します。例えば、サーバーに64GBのストレージがあるのに、実際に使われているのは5GBのみといったケースが想定されます。ここで余っているリソースを仮想サーバに割り当てることによって、同一のサーバー上で異なる複数のサービス運用が可能となります。

独立した開発環境の構築

仮想サーバーではホストOSとは独立した開発環境を一つの物理マシン上で提供可能にします。

複数人で開発を行った際に発生するマシン間での環境の差分の問題、開発を行うマシン自体のホストOSで扱うライブラリやパッケージのバージョン・依存関係の管理の問題など、開発環境の運用は組織開発において避けては通れない問題を抱えています。

これらの問題に対して、開発するアプリケーション毎にサーバの仮想化を行い、関連するパッケージの依存関係を環境毎に管理すれば、物理マシンのホストOSに依存することなく組織開発を進めることができます。

OSの柔軟な切り替え

サービス運用にあたって、物理マシンに直接OSをインストールした場合、OSのアップデートやサービス切り替えの際に、物理マシンに対して都度OSを再インストールする必要性が発生します。一方で仮想化を行っていれば、物理マシンに直接手を加えることなく、ソフトウェア上だけでOSの切り替え作業やバージョンアップの対応を行うことが可能になります。

仮想化のデメリット

専門知識の拡大

仮想化では物理マシンとは別に、仮想化専用のソフトウェアが存在しており、その学習コストが発生します。昨今ではソフトウェアの種類も多岐にわたっており、それら一つ一つの特性を理解して、自社にあったソフトウェアの選定運用が求められます。

障害耐性と冗長化

仮想化では同一サーバー上に複数のサーバーが共存するため、物理サーバー自体が落ちてしまうと、複数台のサーバー運用に比べて復旧作業が困難になります。結果的に物理サーバーの冗長化を行うケースが増えるため、小規模な事業者の場合、結果的に仮想サーバーの利用を避けた方が、コストを抑えられるケースも発生します。

仮想サーバーを立ち上げてみよう

今回はVirtualBoxという仮想化ソフトウェアを使い、Linuxサーバー(Ubuntu)を立ち上げてみたいと思います。

VirtualBoxのインストール

VirtualBoxのインストール

以下のURLからソフトウェアをインストールします。

Oracle VM VirtualBox - Downloads \| Oracle Technology Network | Oracle

Ubuntuのダウンロード

Ubuntuのダウンロード

ゲストOSとなるUbuntuのデータをダウンロードします。

[Ubuntuを入手する \| Ubuntu | Ubuntu]

仮想マシンの作成

仮想マシンの作成

VirtualBoxを起動したら「新規」ボタンから仮想マシンを作成します。任意の「名前」を入力し、「タイプ」にLinux、「バージョン」にUbuntu(64-bit)を選択します。「続き」ボタンを押し、仮想マシンを「作成」します。

仮想マシンの起動

仮想マシンの起動

仮想マシンの作成が完了すると、左側のリストで先ほど作成した仮想マシンを選択できるようになります。選択した状態で「起動」ボタンを押します。

Please select a virtual optical disk file or a physical optical drive containing a disk to start your new virtual machine from.

というタブが開かれるので、左上の「Add」ボタンから、先ほどダウンロードした ubuntu-18.04.4-desktop-amd64.iso というUbuntuのファイルを選択します。

「Start」ボタンを押すとUbuntuが起動します。

まとめ

仮想化により物理マシンとサーバーの運用方法は大きく変わりました。昨今のクラウドサービスの普及も、仮想化技術に寄るところが非常に大きくなっています。仮想化というと一般的にサーバー仮想化を意味することが多いですが、前述のように広義の仮想化においてその対象は記憶装置やネットワークなど多岐に渡ります。クラウドサービスを十分に使いこなす上でも、一つ一つの概念理解を怠らず、状況に応じたマシンリソースと仮想化技術の活用を考えてみてください。