エンジニアの副業は週1からでも可能?副業の例や探し方も解説
- ITエンジニア
- 副業
仮想通貨、仮想現実、仮想メモリ……何かと話題の「仮想化」。
なかでも、IT分野の方にとって重要なのが、コンピューター上に擬似的なコンピューターを作り出す「仮想マシン」です。クラウドコンピューティングを支える技術の礎であるため、ITの仕事を続けるならば必要不可欠の知識になるでしょう。
この記事では、システムエンジニア兼プログラマー歴10年の筆者が「仮想マシン」についてご説明します。
仮想マシン(VM/Virtual Machine)とは、ハードウェアのCPUやメモリ、ストレージといったリソースを分割=仮想化し、その仮想環境上でOSを動作させることを指します。たとえ物理的なハードウェアが一つでも、仮想的なハードウェアを複数用意することで、同時に複数のOSを実行することが可能になることがポイントです。
仮想マシン自体の歴史は古く、大型汎用機用OSが現れた直後にはすでに仮想マシンが使われていました。
大型汎用機に仮想マシンが重宝された理由は、汎用機の置き換えを行う際に「過去の資産の継承」を行うため。通常、新旧汎用機の間には互換性がなく、古い汎用機用に作られたシステムは新しい汎用機上では動作しません。この課題を解決するために仮想マシンが用いられていたのです。
多くのシステム間で互換性が確保されている現在では、マシン台数の削減や運用コストの低減のために使われることが多くなっています。
仮想環境を作り出すソフトウェア技術には、いくつか種類があります。
ホスト型とは「物理マシンにホストOSをインストールした後、そのホストOS上に仮想化ソフトウェアをインストールして、仮想環境を構築するタイプ」の仮想マシンを指します。
ホスト型は利用しているサーバーやPCにそのままインストールできるため、導入に時間がかからないのが特徴です。しかし、ハードウェアへアクセスするにはホストOSを経由する必要があるため、リソースを多く消費するデメリットもあります。
ハイパーバイザー型とは「ハードウェアにハイパーバイザーと呼ばれる仮想化ソフトウェアを直接インストールして、仮想化を構築するタイプ」の仮想マシンを指します。
ホストOSが不要でハードウェアを直接制御できるため、リソースの大半を仮想環境に割り当てられるのが魅力です。
コンテナ型とは「ホストOSにコンテナエンジンとよばれる仮想化ソフトウェアをインストールして、コンテナと呼ばれる環境を作り、アプリケーションの実行を行うタイプ」の仮想環境を指します。代表的なコンテナエンジンとして「Docker」があります。
コンテナにはゲストOSという概念がなく、ホストOSは仮想化した環境をひとつのプロセスとして認識します。ゲストOSが不要な分、リソース効率は非常に良くコストパフォーマンスは抜群です。
仮想マシンの代表的なソフトウェアである「VirtualBox」「VMware vSphere」、コンテナの代表的なソフトウェア「Docker」について解説します。
Oracleからリリースされている仮想マシンがVirtualBoxです。VirtualBoxの大きな特徴は、仮想マシンに対してUSB機器が利用できる点。そして、多機能性です。
たとえば、仮想環境の状態を丸ごと保存しておける「スナップショット」やホストOSとゲストOS間で同時並行で作業を行える「シームレスモード」などが用意されています。
無料で利用可能なうえ、WindowsやLinuxなど複数のOSをサポートしています。
VMware vSphereとは、VMware提供の「VMware ESX/ESXi」「VMware vCenter Server」などの製品やオプション機能から構成される、仮想化ソフトウェアスイートの総称です。ソフトウェアスイートとは、特定の用途向けにまとめられたソフトウェアパッケージのことを指します。
VMware vSphereを使ってサーバーを仮想化した場合、ダウンタイムなしでの仮想マシンのメンテナンス作業やパッチの実装が可能。運用負担を軽減できます。
また、リソースの稼動状況を監視し、仮想サーバーへのリソース割当を自動的に調整するため、状況にあわせて最適な性能を発揮するのも大きなメリットです。
BtoB向けサーバー仮想化ソフトウェアとして中心的役割を果たしており、拡張性や機能性の高さ、管理面での総合力は群を抜いています。WindowsやLinuxをはじめ、サポートしているOSが幅広いのも特徴です。
Dockerとは、Linuxコンテナの作成や使用を可能にするオープンソースソフトウェアのことを指します。
Dockerは仮想マシンよりサイズが小さいため、必要なリソースが少ないのが特徴です。起動が高速で、より多くのアプリケーション処理が可能なのも大きなメリット。
DockerでWordPressの開発環境を作成する方法については、こちらの記事を参照ください。
簡単便利!DockerでWordPressの開発環境を作ろう。方法&メリット紹介
Workship MAGAZINE
リソースの分離と割当のために使用される、仮想マシンとDocker。2つのツールの違いをご説明します。
まず仮想マシンでは、それぞれにOSを割り当てなければなりません。仮想マシンごとにプロセッサやメモリを消費し、ストレージも必要となります。ひとつの独立したサーバーとして機能するため、仮想マシンごとに異なるOSを動かせるのが特徴です。
一方、コンテナでは用意するOSはひとつだけ。その分、プロセッサやメモリの消費は少なく、ストレージの使用も抑えられます。仮想マシンと比べて起動時間も短く、同性能のハードウェアであれば、より多くのコンテナを同時に動かせます。ひとつのOSから作られているため、もちろんOSは統一のものを使用しなければなりません。
仮想マシンのメリットを詳しく確認します。
仮想マシンを使用しない場合、提供サービスごとにサーバーを準備したうえ、負荷を分散させるために多くのハードウェアを設置する必要があります。しかし、この方法では購入費用や電気代、保守運用費用など運用コストが多くかかるのが問題です。
仮想マシンを活用することで、ひとつの物理マシン上で複数のシステムを稼働させられます。そのため、物理マシンの台数削減や運用コストの低減など全体的なコスト削減につながるのです。
サーバーの高性能化が急速に進んだため、サーバーリソースを十分に活用しきれていないケースがたくさんあります。仮想マシンをサーバーに作ることで、余っているサーバーリソースを有効活用できるはずです。
ひとつの物理サーバーを仮想的に分割し、サーバーが複数あるかのように稼働させることで、リソースをフル活用できます。
仮想マシンを活用すれば、Windows上でLinux、Linux上でWindowsなど、さまざまなOSを使用できます。
Windows上でLinuxサービスの稼働確認をしたり、古いバージョンのWindowsにしか対応していないアプリケーションを稼働したりなど、使いみちはほぼ無限にあります。
仮想環境は、基本的にひとつのファイルとしてバックアップ可能です。そのため、仮想環境が構築されている物理サーバーが故障した場合でも、バックアップファイルを別のハードウェアに移行すれば引き続き運用できます。
デメリットも把握することで、より仮想化へのアプローチが柔軟になります。あわせて確認しておきましょう。
仮想マシンは、仮想化ソフトウェアを挟んで実行され、物理的なメモリやCPU、ディスクを分割して各仮想環境に割り当てるもの。物理環境で実行するより性能が劣ることも十分にありえます。
従来通りのOSやアプリケーションによるセキュリティ対策だけでなく、仮想環境用のセキュリティ対策も必要です。サーバーを共有することもある仮想環境では、ウィルスに感染したときの感染経路の遮断方法、各仮想環境に対するセキュリティ対策など、「どのような手段でどこを守るのか」と十分に検討することが求められます。
IoTやデジタルトランスフォーメーションといった新しい技術を実現させるためには、クラウドコンピューティングの利用が必要不可欠。そのクラウドコンピューティングを支える技術のひとつが、仮想マシンです。
「VMware vSphere」「VirtualBox」「Docker」などのソフトウェアを活用すれば、仮想マシンやコンテナは手軽に実現できます。ぜひ一度、ご自身の環境に仮想マシンやコンテナを導入してみてください。
(執筆:S-KAYANO 編集:泉)