気の向くままに辿るIT/ICT/IoT
システム開発

仮想化 / Virtualization

ホーム前へ次へ
仮想化とは?

仮想化 / Virtualization

仮想化 / Virtualization

 仮想化とは、物理的なモノ(ハードウェア)を論理的な仕組み(ソフトウェア)で擬似的に実現する概念であり、IT/ICTの分野では古くて新しい技術です。

古くも新しい仮想化技術

 仮想化自体は1960年代に既に実現されており、1960年前後より研究されていたタイム・シェアリング(時分割処理)は、後の(近年の)CPU仮想化に伴い、少ないメモリを効率的に使うために仮想記憶を実装する際の中核技術となっていますし、IBMが1967年に開発したIBM System/360-67用のOSであるCP-67は、まさに仮想機械OS(仮想化OS)であり、メインフレーム用仮想化OSであるz/VMの源流でもあります。

 つまり、基本パーティション、論理パーティションの作成、マルチブート。。。というのは、仮想化の上に成り立っているということです。

 それを考えれば比較的新しいWindows 9x系やMEといったOSMS-DOSモードですらもVDM/Virtual DOS Machineといった仮想化の上に成り立っています。

 このように仮想化技術は、内部的には相当以前から利用されており、仮想化技術はコンピュータの歴史と発展において大きく寄与しています。

 そしてCP-67の仮想化技術と1988年にLPAR(論理パーティション)が考案されたことにより、1台の物理マシン上で複数の仮想マシンを、各仮想マシン上でOSを、各OS上でアプリケーションを実装できるようになり、これを利用した仮想マシンが、近年注目を集めているわけです。

virtualizationとemulation

 時に仮想化(virtualization)とエミュレーション(emulation)が比較されることがあります。

 バーチャリゼーション(バーチャライゼーション)は、バーチャルを名詞化したもので、バーチャルは、「(本来はそうではないが、)実質(事実上)」や「仮の」、「仮想の」、バーチャリゼーションは、「仮想化」と訳され、IT/ICT用語でも「仮想化」という意味で一般に使われます。

 エミュレーションは「見習うこと」、「模範とすること」という意味から転じてIT/ICT用語では、一般に「特定の機種環境(プラットフォーム)用に開発されたソフトウェアを他のプラットフォームで利用可能にする方法や技術」とされています。

 これらからするとイメージ的には、バーチャリゼーションは、エミュレーションをも網羅しているように見えます。

 他方、シミュレーション(simulation)は、正式な実装、本番としてではなく、(模擬)実験的な意味合いで使われるという認識でよいものと思われます。

CPU仮想化 / CPU Virtualization

 CPU仮想化(CPU Virtualization)とは、CPUメーカーIntel、AMDが打ち出したIntel、AMD製CPUレベルでx86/IA-32/x64(x86_64)/IA-64環境のエミュレーションを支援する技術の総称です。

 物理マシンにインストールされたOS上で他のマシン環境を仮想化して実行するホスト型といわれる仮想化ソフトウェアでは、物理マシンのCPUやメモリを物理マシンと仮想マシンに振り分けることになる為、仮想マシンを実行すれば、どうしても物理マシンへの負荷が大きくなり、処理が重くなる傾向にあり、これを補助する為に登場したものです。

 それぞれIntel VT/Intel Virtualization Technology、AMD-V/AMD Virtualizationという各種仮想化を見据えた基盤となる仮想化支援技術を発表、製品としてリリースしました。

 その中でIOMMU/Input/Output Memory Management Unit、PCIパススルーにおけるI/O(Input/Output)仮想化支援技術は、Intel VT-d/Virtualization Technology for Directed I/O、AMDでは当初の呼称IOMMUから後にAMD-Vi/AMD IOMMUとなっています。

 また、ネットワークの仮想化技術として例えばIntelでは、VT-c/Virtualization Technology for Connectivityなどもあります。

 更にIntelで言うところのHyper-Threading Technology(HT/HTT...etc.)では、1つのCPUを複数個(現段階では2個)に見せる仮想化により、仮想化されたCPU1つ分を1コアと呼び、CPU1つで2コア(Dual Core/Duo)、CPU2つで4コア(Quad Core)、CPU4つで8コア(Octal Core)...とすることで物理的なCPU以上の各コアを並行して実行(しているかのように時分割処理などを含め、効率的に資源配分)し、実行処理能力を向上させつつ、価格を抑えるコストパフォーマンスの高いプロセッサを実現しています。

 このように仮想化は広範囲にしかもコアな技術にまで及ぶこともあり、Intel VTの場合、VT-x(x部分が適宜変わる)、AMDでは単にAMD-Vと表記されることも多くなっており、両方に対応する仮想マシンなどのケースにおいてはIntel VT/AMD-Vと表記されることも多いでしょう。

XP Modeも仮想化

 Microsoft社のWindows 7の一部のエディション(Professional/Ultimate/Enterprise)では、Virtual PC 2007の後継版であるWindows Virtual PCが標準搭載され、結果的に長年利用されてきたWindows XPユーザーの移行を促すべく、XP Modeという仕組みが用意されました。

 これは、Windows 7上のWindows Virtual PCで作成した仮想マシン上でXP Mode(ライセンス認証済みWindows XP Professional SP3)を仮想的に利用できるようにするもので仮想化のターゲットもそうであるようにXPモードもXPでしか動かない主にビジネスソフトウェアなどを極力動作させることを目的にXPのサポート期限が切れるまでの期間限定で提供されています。

 また、Windows 8では、これまでサーバ用途のx64(64ビット版)であるWindows Server 2008に搭載されていたものの後継にもあたるHyper-Vが搭載されることになっています。

 従来、何れもゲストOSはx86、x64対応ですが、ホストOSについては、Virtual PCはx86(/IA-32/x86_64/IA-64)、Hyper-Vはx86_64/IA-64という位置づけでした。

 尤も最初からそうした位置づけのためにMicrosoft社が独自に2通り開発したというわけではありません。

 Virtual PCは、元々Mac上でWindowsを動作させることができる仮想マシンの開発元をMicrosoft社が買収、一時期有償のVirtual PC 2004としてリリース、その後無償化すると同時にMacを対象外とし、後継としてVirtual PC 2007、更にWindows 7用にWindows Virtual PCが標準搭載されるに至りました。

 また、この買収によりリリース前だった技術を基にVirtual Server 2005(x32版)をリリース、2007年x64対応等をしたVirtual Server 2005 R2をリリース後、その後継としてWindows Server 2008(x64版)からHyper-Vが標準搭載され(、更に後にWindows Server 2008を要さずとも単体動作可能な機能制限された無償版のHyper-Vもリリースされ)たという経緯があります。

VT-x/AMD-Vはまだまだ市場投入開始段階

 但し、仮想化ソフトウェアの多くは、Intel VT/AMD-Vに対応済みであるものの、肝心のPCの方は、CPUが最低でもデュアルコア以上のマルチコア且つIntel VT-x/AMD-V対応、更にUEFI/EFI、または、BIOSを利用する場合、BIOSがこれらに対応しているタイプでないと利用できませんし、PCベンダによっては無効にしたまま変更できない状態で出荷するケースもあるなど現段階ではBIOSアップデートだけでは対応できないようです。

 しかも同じWindows 7でもProfessional/Ultimate/Enterpriseなどのエディションでないと(Starter/Home Basic/Home Premium等では)利用できないといった制約もあります。

 よってXP Modeを利用できるユーザーも必然的に限られます。

*BIOSに制限をかけていたSONY VAIOでは、後にBIOSアップデートにより、対応した模様。

*後の"Windows XP Mode update"により、XPモード(ゲストXP SP3)においては、2010年3月20日に無償公開された"XP mode update"をダウンロード・適用することでIntel VT/AMD-V未対応でも利用できるようになりました。
(Microsoft社詳細解説ページ)

  1. Windows Virtual PCをダウンロード
  2. XP Mode(ライセンス付きXP SP3相当)をダウンロード
  3. "XP mode update"をダウンロード

*ただ、Virtual PC 2007やVirtualBox、VMwareなどを利用すれば、XPモードではない為、7のスタートメニューにXP Modeのアプリケーションを追加するといった機能はなく、別途、ライセンス付きXPが必要となるものの、Intel VT/AMD-V対応・未対応に関わらず、ゲストOSとしてXPをインストールすることでHome Premium含め、エディションに関係なく、Windows XPを利用することは可能です。

 更に32ビット(x86)マシンは、認識可能なメモリ領域は3.2~3.7GBである一方、Windows 7自体のシステム要件(メモリ1~2GB)が高いことからXP(メモリ128MB~512MB)を仮想マシン上で動作させ、更に双方のアプリケーションを加えるとメモリ3GBというのは余裕とも言えない為、より安定して使うには、実質4GB以上を認識可能な64ビット(x64)マシンが望ましいということになります。

 新規にPCごと、または、PCとOSを別途新規に調達する場合は選択の余地がありますが、PCはそのままにXPやVistaからOSのみ7にバージョンアップをする場合、XPやVistaリリース時には、そうしたマシンスペックは高価であったことやXP時代から64ビット版があったとはいえ、対応ソフトウェアの少なさから32ビット版も多く稼働していることを考えるとハードウェア要件が微妙というケースがあることは想像に難しくありません。

 このように対応PCの普及はまだまだ過渡期と言えますが、ただ、Virtual PCだけでなく、VirtualBox、VMware、Xen、KVM、QEMU、Bochs、Parallels...etc.と仮想化ソフトウェア及び仮想マシン自体は、仮にIntel VT-x/AMD-V未対応であってもターボブースト未対応であっても十分利用価値はあります。

C/Sも仮想化

 C/Sシステムにも仮想化の波が押し寄せています。

 メインフレーム、ミッドレンジ(ミニ)コンピュータ、ワークステーションの操作卓は、1990年代に専用サーバと専用マシンに専用OS、専用アプリケーションを個々のPC端末に搭載したクライアント端末から成るC/Sシステムに、そしてサーバも用途に合わせて物理的に複数台に分散した上、有事の際、より迅速に切り替えを行えるよう、それぞれにバックアップ、他方クライアント端末は、セキュリティ強化のため、物理的な記憶媒体を持たない、接続できない物理的なPC端末(シンクライアント)に移行していきました。

 日本では1995年のインターネットの開始と相まってWebが注目されるようになり、多機能でありながら軽快に動作するブラウザが注目され、広く利用されるようになるとC/Sでもクライアントにブラウザを利用できたら。。。という当時からすれば、夢物語でしかない話を現実にしたいという思いが次第に高まりました。

 そこにインターネットの爆発的な普及もあってインターネットを介した不特定多数の利用者から成るBtoCビジネスモデルが生まれたことによってブラウザの多機能化が図られ、競争が競争を生み、BtoC用のWEB系システムが生まれ、ついに社内の基幹システムとしてもクライアントにブラウザが使えるようにまでなり、BtoBでもWeb系システムを利用できるようになり、シンクライアント端末としてはまさにうってつけなものとなりました。

 ただ、それはデータベースの登録、更新用や勤怠管理など財務・経理・総務・人事などの基幹システムへの用途であってビジネスシーンでは、Windowsの普及に伴い、ExcelやAccess、PowerPointなど(Microsoft社のOffice製品)が代名詞となるほど普及した表計算ソフトやデータベースソフト、プレゼンテーションソフトなどが広く利用されており、これらは、デスクトップPCに必要不可欠なソフトウェアであり、個々のPCにインストールされていました。

 C/Sシステムのクライアント端末が、セキュリティ強化の観点からハードディスクなど補助記憶装置を一切持たない端末としてシンクライアント化され、その一方でOffice製品が必須となるとC/Sのクライアント端末とは別にデスクトップ端末が必要になるケースでは当然管理コストが増してしまいます。

 そうした背景の中、これらと前後して近年、クラウドや仮想化といった技術が一般に利用できるような時代になってきた上、ブラウザ上でOfficeスイートをも利用できるようなサービスも生まれてきています。

 クライアントで仮想マシンにOSをインストールできれば、そこにOffice製品をもインストールして利用できる上、保存はサーバ上などクライアントとは別の場所で集中管理すれば、シンクライアントとしての要件も満たせますし、仮想マシン自体もサーバ上や共有ストレージ上において集中管理できる為、OSやアプリケーションのインストールやアップデートもサーバで管理可能になり、台数が多ければ多いほど、あらゆる面でコストや手間を削減できることになります。

 一方、サーバ資源も物理的に分散していた各種サーバを複数台でもより少ない台数に集約できるよう、物理的なマシンの機能を仮想マシンで実現し、それを管理するというサーバ集約の動きが出てきました。

 そもそも1台で複数のサーバ機能を持つ物理的なサーバも可能でしたし、今尚可能であるものの、有事の際のシステムへの影響の分散、マシンリソースの負荷分散などリスクを最小限に抑えることを主な理由として機能ごとにサーバを分散し、専用サーバ化すべく促されてきたわけですが、近年、個々のサーバの利用状況からして多分に余力があるケースが多いということから、今度は、仮想化により集約しましょうという流れになり、更にはクラウドで専用なのか、分散してるのか意識することなく利用しましょうといった方向へ進みつつあります。

 他方、メインフレーム上にある複数の仮想マシンのOSとしてLinuxを稼働させることができるようになっていたりします。

 また、レンタルサーバ事業者でも限られた物理マシン上で複数の仮想マシンを搭載し、レンタルするビジネスモデルも増えています。

原点回帰か後退かベストプラクティスか

 分散サーバの集約、サーバ上での管理によるクライアント端末、デスクトップ環境の仮想化は、コンピュータの元祖であるかつてのメインフレームやミッドレンジコンピュータの構成と似たものとなってきています。

 明らかに合理的でスマートな方向性である一方、クライアント仮想化・デスクトップ仮想化によるシンクライアントだけでなく、デスクトップ用途のクライアント端末でも年々など日が経つごとに著しく高スペック化していくPCを誰もが心待ちにし、必要としているという状況ではなくなってきていることやサーバの集約などからコンピュータ端末のハードウェア専業メーカーのビジネス自体は厳しい方向に向かっていると言えるでしょう。

 仮想化は、CPUやRAM/ROMなどのメモリなどの高集積化、超小型化と高速化、その他技術、そしてその組み合わせによる技術の進歩があって今だからこそ利用できるようになったのであり、コンピュータ端末のハードウェア専業メーカーのビジネスモデルは、結果的に仮想化への中継ぎによってもたらされた期間限定のものだったとも言えるのかもしれません。

ホーム前へ次へ