【図解】仮想デスクトップ(VDI)の仕組み~仮想サーバとの違い,VMware Horizonでの構成例~ | SEの道標
仮想化技術基礎

【図解】仮想デスクトップ(VDI)の仕組み~仮想サーバとの違い,VMware Horizonでの構成例~

仮想デスクトップとは

仮想デスクトップとは、大量のクライアントPCを仮想基盤上のVMとして用意する、シンクライアントソリューションのことです。Virtual Desktop Infrastructure (仮想デスクトップ基盤)という意味で VDI とも呼ばれたりします。

仮想デスクトップでは以下のメリットが得られます。

  1. シンクライアントによるセキュリティ向上(PC 盗難による情報漏洩リスクを無くす)
  2. 利用クライアント OS の一元管理によるシステム管理者の負担軽減(マスターイメージ1台のみを更新することで、全台の仮想 PC へ更新情報を反映)
  3. PC 故障による業務継続性向上(一般的な PC では HDD の冗長化、つまりRAID等は構成されていないが、仮想デスクトップのインフラでは多くのポイントが冗長化されており、多くの場合は故障が発生時にもほぼ影響なく継続利用可能、影響があったとしてもすぐに対応可能)

なお、その他のメリットとしてコスト低減を挙げることが多いですが、これは状況次第です。まず、仮想デスクトップを利用するためのソフトウェアライセンスは高額です。

導入に伴って運用コストが下がることが期待されますが、どれくらい下がるかは、『もともとそのシステム管理部門がどれくらい真剣にクライアント PC の面倒を見ていたか』に依ります。ましてやそのシステム管理部門がもともとクライアント PC の管理をしていなかった場合は、このソリューションを導入することで管理下に入ってくることも忘れてはいけません。

システム管理者にとってはコスト増になる可能性も否定はできませんので、正しい見極めが必要です。(それでもシステム管理部門としてではなく会社全体としては "お値段以上" になりうるソリューションではあります。)

仮想デスクトップと仮想サーバの違い

仮想デスクトップと仮想サーバの違いは何なのでしょうか?直感的には『仮想サーバでは VM にインストールする OS がサーバ用 OS だったのを、仮想デスクトップではクライアント用 OS に替える』ことで実現できそうです。

これはこれで合ってはいますが、これは実は仮想デスクトップのコンポーネントの 1 つに過ぎません

VMware を例として、仮想サーバ(vSphere)と仮想デスクトップ(Horizon)のコンポーネントを比較してみます。

上図からも分かる通り、VM を構成するための仮想化基盤は共通して vSphere の ESXi を使いますが、仮想デスクトップの大きな要素として以下の機能が追加されます。

  1. View Composer = マスターイメージを元にした仮想デスクトップ PC 展開を持つ
  2. Horizon Connection = ログインユーザに応じた VM (仮想 PC) へ誘導する(コネクションブローカ機能)
  3. Horizon Administrator = デスクトッププールとエンタイトルメント等の仮想デスクトップ環境の設定を司る

なお、これらの機能を実現するために、Active Directory 環境が必須であることにも注意です。VMware に限らず、XenDesktop という仮想デスクトップソリューションでも同じく必須です。

1. マスターイメージを元にした仮想デスクトップPC展開機能

VMware Horizon においてこの機能は『View Composer』というサーバによって提供されます。"展開" とは、1 つの PC の OS 設定イメージを元に、他のたくさんの PC にその OS 設定イメージを反映させ、同じ設定の PC を簡単に大量に作ることです。

VMware Horizon では、『フルクローン』という通常の展開の仕方に加え、マスターイメージを "レプリカマシン"として定義し、個々の仮想デスクトップには差分情報のみを保有させる『リンククローン』という方式が選択できます。

『フルクローン』方式では各マシンがそれぞれ独立してアップデートを行います。つまり 100 台あったら 100 台に対して Windows Update なりアプリの更新をしたりします。
一方、『リンククローン』方式では "レプリカ" として定義されたマシンが各仮想 PC のベースとなり、そこからの差分だけを内部の Delta Disk (差分ディスク) に保持します

差分が無い箇所については『レプリカ』を参照するため、各仮想 PC が持つ HDD 容量の消費量を少なく抑えることができます。つまり、全体として用意するストレージの容量を抑えることができるのです。また、アップデートは基本的にはレプリカマシン1台にだけ適用すれば、『再構成』というプロセスを通して全仮想PCに反映可能です。

また、最近では『インスタンスクローン』という展開方式も存在します。これは保有させる差分情報を、HDD だけでなくメモリにまで拡張したものです。起動時のメモリを展開するため、仮想PCの用意時間および起動時間がとても短くなります。ただし、主な使い方は「デスクトップの使い捨て」という感じです。ログオフしたらその仮想 PC は削除され、新たな仮想PCが作成されます。

2.コネクションブローカ機能

コネクションブローカは、ログインユーザに対して、そのユーザに適した仮想 PC へ誘導する役割を担います。例えばそのユーザ専用の仮想 PC があるのであれば、その紐付け情報を内部に保存しておき、ログイン時にその仮想 PC に誘導することができます。

VMware Horizon においてこの機能は『Horizon Connection Server』というサーバによって提供されます。

シンクライアント利用者は『Horizon Client』というソフトウェアで『Horizon Connection Server』の URL を指定した上で、ID/パスワード情報を https で送信します。

Connection Server はそれを受信すると ActiveDirectory 連携により Kerberos 認証を行い、認証成功すればそのユーザに適した仮想デスクトップの接続先情報および Kerberos のチケットを返し、Horizon Client はそこからシングルサインオンにより仮想デスクトップにログインします。このとき利用されるプロトコルは一般的には RDP ではなく、PCoIP という VMware 独自の画面転送プロトコルです。

なお、ユーザとデスクトップは必ずしも紐付けておく必要はありません。次に説明する『デスクトッププール』の設定で割り当て方式が『Floating = 流動割り当て』となっている場合は、ログインしてきた人を順番に空いている仮想デスクトップに案内しますし、『Dedicated = 専用割り当て』の場合は初回時のみランダムに割り当て、次回以降は必ず同じ仮想デスクトップにログインできるように調整してくれます。

3.デスクトッププールとエンタイトルメント機能

デスクトッププールとは、仮想デスクトップを用途に応じてグループ分けしたものです。デスクトッププールにアクセスできるのは、エンタイトルメントが付与されたユーザやグループのみです。つまり、エンタイトルメントとはアクセス制御機能のことです。

例えば『一般事務用仮想デスクトップ(Dedicated = 専用割り当て)』というプールと、『外部利用者ネット検索用仮想デスクトップ(Floating = 流動割り当て)』というプールがあったとします。

そして Active Directory の Staff というセキュリティグループには両方のデスクトッププールの利用資格(エンタイトルメント)を与え、Active Directory の External というセキュリティグループには『外部利用者ネット検索用仮想デスクトップ』というプールの利用資格(エンタイトルメント)を与えたとします。

このとき、External に所属するユーザは Horizon Client でログインした際に表示されるデスクトッププールは『外部利用者ネット検索用仮想デスクトップ』のみで、これをクリックすることでその仮想デスクトップへの PCoIP によるログインが始まります。流動割り当てなのでその時に空いている仮想デスクトップに案内されます。

一方、Staff に所属するユーザは Horizon Client でログインした際には 2 つのデスクトッププールが表示され、どちらを使うか選択できます。

このとき例えば i.suzuki という Staff グループのユーザがログイン後に『一般事務用仮想デスクトップ』プールを選択したとします。このプールは "専用割り当て" なので今までの利用履歴を確認し、もし初回であれば未利用の仮想デスクトップを割り当ててログインさせますし、2 回目以降であれば、前回利用した仮想デスクトップへログインさせます。

仮想デスクトップに関する機能やTOPICS

HA/DRSクラスタ

VMware Horizon の Bundle ライセンスには、vSphere Desktop という vSphere Enterprise Plus 相当のライセンスが含まれています。その中でよく使われる機能として DRS クラスタがあります。

DRS クラスタを構成すると、ホストで負荷の集中があるときに、自動で vMotion を行い、均してくれます。つまり仮想PCの中でリソース消費の激しいものが同じホスト上に固まらないように勝手に負荷分散してくれるのです。

HA クラスタとは独立して設定できますが、全仮想ホスト (ESXi) を 1 つの HA クラスタ兼 DRS クラスタへ組み込むのが基本です。

下記ページに DRS の図解がありますので参考にしてみて下さい。

【図解/入門】初心者向け仮想サーバVMwareの仕組み
サーバ仮想化とは サーバ仮想化とは、1 つの物理サーバの上に複数の仮想サーバを構...

また、Horizon Bundle ライセンスに含まれる ESXi には、実は Horizon に関連するサーバであれば稼働させることができます。つまり、Horizon Connection Server 等も DRS クラスタに含めることができるのです。どこまで含めてよいかは VMware と相談する必要がありますので注意です(勝手に判断しないこと)。

ディスクの種類

リンククローンで構成された仮想デスクトップには、最大で以下の4種類のディスクが割り当たります。最小構成で意識するのは 1 のみです。

  1. Delta Disk(差分ディスク)
  2. Persistent Disk(通常ディスク)
  3. Disposable Disk(破棄可能ディスク)
  4. Internal Disk(内部ディスク)

1. Delta Disk (差分ディスク) は C ドライブとしてマウントされます。実体はレプリカマシンのCドライブで、差分が出た場合には個別の Delta Disk に書き込まれていきます。ただし、マスターイメージにWindows Update等の更新後、個々のデスクトップに反映するために『再構成』という処理を行うと、この差分ディスクは空に戻ります。

2. Persistent Disk (通常ディスク) は利用は任意です。利用する場合は D ドライブとしてマウントされることが多いです。フォルダリダイレクトのリダイレクト先としてこのドライブを使うこともできます。この通常ディスクは Composer によってユーザと紐付けられています。


3. Disposable Disk (破棄可能ディスク) は一時ファイルを Redirect する先です。利用は任意です。Disposable Disk の機能を ON にした場合、ページファイルやインターネット閲覧時のTemporary等の一時ファイルと分類されるものをこのディスクに押し込めます。このディスクは再起動すると空になります。

4. Internal Disk (内部ディスク) は主に再構成用に利用される情報が格納される、ごく小さなディスクです(必要に応じてマウントされる?普段はドライブレターは見えない)。Active Directory のコンピュータ認証に使われる情報や、sysprep の構成情報等、各VMが個別に持ち続ける必要のある情報が格納されています。

ペルソナ

ユーザープロファイルの管理手段として、Windows の標準機能である『フォルダリダイレクト』や『移動プロファイル』を使うこともできますが、VMware としては『ペルソナ』というユーザプロファイル管理機能も持っています。

これを有効にした場合、以下のメリットがあります。

  1. ログイン/ログオフ時間の短縮
  2. リモートファイルサーバへの定期的な保存

ペルソナの仕組みとしては、ログイン時にはプロファイルの中から必要なものだけをダウンロードして引き渡すことでログイン時間の短縮を図ります。また、プロファイルの中で変更があった分については自動かつバックグラウンドで定期的にリモートのファイルサーバへ書き込みを行います。これによりログオフ時の書き込みを減らし、ログオフ時間の短縮を図ります

仮想アプリケーション

仮想デスクトップは色々な人が使いますので、個人的に含めたいアプリケーションも様々あるかと思います。

ですがマスターイメージは1つなので、5,6人しか使わないアプリケーションを全仮想デスクトップに入ってしまうと、始めは良いかもしれませんが『私も俺も』となり出したらイメージが肥える一方です。かといって個別にインストールする場合も専用割り当てが必須になりますし、さらに差分情報も×利用人数分として増えていきます。

この問題に対しては、アプリケーション仮想化の技術を使うことが有効です。

VMware では古くは Thin App, 最近では App Volumes という名前のソリューションが用意されています。

仮想アプリケーションは、本来 OS に依存するアプリケーションを、OS から切り離してパッケージ化/コンテナ化する技術です。

具体的なパッケージ作成手順は概ね以下の通りです。

  1. まっさらな Windows PC を用意し、OS 内部情報のキャプチャを開始
  2. 仮想化したいアプリケーションをインストール
  3. キャプチャを終了し、キャプチャによって確認された『差分情報』をパッケージ化(ファイル化)
  4. 作成したパッケージをログイン時などに仮想PCに配布

なお、仮想アプリケーションとしてパッケージ化される情報はそれ以外に VOS という軽量の OS も含まれており、この軽量OSが実行環境を提供します(Java Runtime Environment のようなもの)。

アプリケーション仮想化では最新バージョンと旧バージョンを混在させることもできます。例えば『社内システムが IE の古いバージョンしか対応していない』といった時も、『普段は IE 11 を使わせるけど、社内システムへのアクセスには ThinApp の IE 10 を使わせる』といったこともできます。

コメント

タイトルとURLをコピーしました