
|
デスクトップの仮想化とは?
クライアントPCの販売価格は年々下がっており、導入時のコストは抑えることは可能となってきた。しかし、セキュリティ維持のためのアップデートやローカルにインストールされたアプリケーションやOS自体のバージョンアップなど、PCを使い続けるために費やす手間をコスト換算すると膨大な額になってしまう。このPCに関する「TCO(Total Cost of Ownership)」が問題にされるようになったのは、1990年代後半だった。現在でもTCO削減がエンタープライズユーザーにとって重要な課題であるという点は変わっておらず、クライアントPCの仮想化もこうした文脈で位置づけられている。
クライアントPCの運用管理において仮想化技術を活用して効率化することを、大づかみに「デスクトップ仮想化」と呼ぶようになってきた。同じ意味で、仮想デスクトップと呼ばれることもある。もっとも、仮想デスクトップはX Window Systemなどで一般的に利用されている、複数の画面イメージを切り替えて利用する機能のことを呼ぶ際にも使われるので、混乱を招く可能性もある。
さらに、デスクトップ仮想化にも異なる技術が混在している。最近はVDI(Virtual Desktop Infrastructure)」が注目されているが、ほかの実装手法もある。まずは、デスクトップの仮想化に使われる技術の全体について見ていこう。
デスクトップ仮想化の実装手法
デスクトップの仮想化として現在注目されているのがVDIだ。大まかに言えば、VDIはサーバーサイドコンピューティングの一種である。
そもそもクライアントPCは、そのPCのハードウェア上でOSやアプリケーションを稼働させるのが基本的な使い方だ。

図1 通常のクライアントPCでの実行方法
しかし、この場合は個々のPCごとにOSやアプリケーションのアップデートなどの運用管理作業が発生する。
そこで、ソフトウェアの実行をサーバー側で行ない、手元のハードウェアではユーザーインターフェイスとしての役割のみを実行する。これにより運用管理負担をサーバー側に集め、一元的に処理できるようにするというのがサーバーサイドコンピューティングの考え方だ。もっとも基本となるのは、アプリケーションをサーバー側で実行するという形であり、X Window Systemでは標準で利用できる形態であり、Windowsの場合はWindows Terminal ServiceやCitrixのXenApp(古くはMetaFrame)などで実現されている。

図2 サーバーサイドコンピューティングの仕組み
一方、VDIという場合にはさらに一歩進め、OSの実行もサーバー側に移している。コンセプトとしては古くから存在しており、1990年代前半にはUNIX環境でX端末が使われていたし、専用ハードウェアによるシンクライアントのシステムも同様の手法といえる。
現在のVDIの特徴は、複数のクライアントをサーバー上の仮想環境で稼働させ、そのユーザーインターフェイスをユーザーの手元のハードウェアに転送する仕組みを、ソフトウェアで実装している点だ。

図3 VDIの仕組み
また、デスクトップ仮想化の別の形態として、クライアントハイパーバイザもある。サーバー側ではなく、クライアント上で仮想化技術を使い、あらかじめ用意してあった仮想イメージを読み込み、実行するという形だ。
この方式では、OSやアプリケーションの実行をクライアントハードウェア上で行なう。このため、サーバーサイドコンピューティングとは異なり、サーバーの処理能力やネットワークの帯域にはあまり依存しない。これは、メリット/デメリットの両面があるので、ユーザーごとにあった手法を選ぶことになるだろう。
さらに、サーバーサイドコンピューティングの実装としてシンクライアントを選ぶ意味も失われたわけではない。専用のシンクライアント端末を使うなど、ハードウェアに対する初期投資が必要になる点は導入障壁ともなり得るが、長い目で見ればTCO削減が実現できるとされているし、専用ハードウェアならではの利便性もある。逆に、業務の内容によってはシンクライアント端末では不便な場合もあるので、こちらもユーザーごとの事情に合わせて選択する必要があるだろう。
VDIのキモは画像転送技術
VDIは、名称に「インフラ(Infrastructure)」という語が含まれるだけあって、現実には相当に大規模なシステムになることが多い。VDIと呼ばれるシステムにはベンダーごとにさまざまな実装があるため、使われている技術にもバリエーションがあるが、VDIの基本となるのは画面転送技術である。
画面転送は、大づかみなイメージでいうと、ユーザーの背後で画面を監視し、相互に伝えあうエージェントがいるような感じだろうか。ユーザーがマウスカーソルを移動させたり、キー入力をしたりといったユーザー側での動作を逐一サーバー側に知らせる。サーバー側のエージェントは、ユーザー側から伝えられたユーザーの動作をサーバー上で忠実に再現し、その結果生じた画面の変化をユーザー側に伝える。ユーザー側では、サーバー側で生じた画面の変化を正確に再現する。

図4 リモートからキーボード/マウスを操作する画面転送
別の表現で言えば、サーバー側で表示されている画面イメージをビデオカメラで撮影し、ユーザーの手元の端末上で表示する一種のテレビシステムだと考えてもよいかもしれない。ユーザー側のアクションが逐一サーバー側に伝えられてインタラクティブに動作する点は違いとなるが、それ以外の点では映像のストリーミング配信ときわめてよく似たものだといえる。
こうした方式が一般化した背景には、基礎となる画面転送技術が確立された当時は、OSやアプリケーション側では「リモートでのアプリケーション実行」に対する配慮がほとんど行なわれていなかったという事情がある。
リモート実行のことを考慮せずに設計されたアプリケーションをリモートで実行するためには、アプリケーション自体の動作はそのままで、表示される画面だけをリモートに転送し、マウスやキーボードによるユーザー入力も、ローカルに接続されているデバイスからの入力と全く同じようにアプリケーションに送ってやる必要がある。そのため、一見するとオーバーヘッドが大きく見える画面転送技術が標準として確立したのである。つまり、既存のアプリケーションをそのまま使える、という点が画面転送技術の最大のメリットとなる。
(次ページ、「画面転送のさらなる工夫」に続く)

この連載の記事
-
第9回
クラウド
ネットブート型も網羅するシトリックスのデスクトップ仮想化 -
第8回
クラウド
仮想化技術を核にデスクトップ仮想化を広げるVMware -
第7回
クラウド
買収から始め、一挙に環境を整えたマイクロソフトのVDI -
第6回
クラウド
デスクトップ仮想化の課題の1つはウイルス対策 -
データセンター
デスクトップ仮想化のすべて - この連載の一覧へ