仮想デスクトップインフラ(VDI)システムの見直し
情報社会基盤研究センター担当

中野 裕晶
情報社会基盤研究センターでは、2014 年 3 月より VMware Horizon View(バージョン 5.3)による仮想デスクトップインフラ(VDI)サービスを開始し、全学に対して Windows7、Windows8 マシンの提供を開始した。運用を開始後諸々の動作について理解が進んでいくと、当初の設計や運用方法では都合が悪い、または非効率だと感じられる部分が出てきた為、管理手順変更等の見直しを行った。

1. システム構成
1-1 基本ポリシー
Horizon View では仮想マシンの展開方法について幾つか選択肢がある。今回サービスを開始したものについては、・ 仮想マシンの割り当て方: 流動割り当て・ ログオフ時の動作: デスクトップを削除
・ 仮想マシンの作成方法: リンククローンというパラメータ設定を行っている。これは、ユーザは各プール(仮想マシンの種類)内に複数台用意された仮想マシンの中から任意の 1 台にログオンし、ログオフする際にはその仮想マシンが削除されるといった動作となる。再度同じプールの仮想マシンを使用する際は、マスターイメージ(親仮想マシン)の状態のものを利用することとなる。なお、各ユーザのログオン中の作業によって作成されるファイルは、移動プロファイル、フォルダリダイレクトの機能を使い、ファイルサーバに保存されるようになっている為、仮想マシンが削除されても問題無いようシステム構成されている。
また、「仮想マシンの作成方法」についての「リンククローン」という設定によって、各仮想マシンのイメージが、各仮想マシン間で共有されるマスターイメージ(レプリカ)と差分ディスクで構成され、システム全体のストレージの消費が抑えられる仕組みとなっている。

1-2 プールの種類
VDI サービス開始当初、サービス用として作成した主なプールは次の通りで、各仮想マシンの内蔵ディスクは 200GByte で構成されている。
・ Windows7 事務用・ Windows7 日本語版
・ Windows7 英語版
・ Windows8 日本語版
・ Windows8 英語版

各プール内で作成される仮想マシンの台数は、実際の利用者数の状況を観て調整しているが、どのプールも 100〜200 の間で設定している。
また、各プールで使用するデータストアについては、容量が 6TByte のものを８つ用意し、2 つを事務系仮想マシン用のプール、残り 6 つを研究系仮想マシン用のプールで使用する構成としてある。データストアを複数に分割されている理由は、1 レプリカ当たりのリンククローン数や 1LUN あたりの仮想マシン台数の制限値、推奨値を考慮した結果である。

図 1 VDI ストレージまわりの概要(見直し前)

1-3 イメージ更新の流れ
親仮想マシンの更新からユーザが使用する仮想マシン(リンククローン)ができるまでの流れは、次の通りである。

1. 対象プールの親仮想マシンを更新(アプリケーションインストール、各種アップデート等)。
2. vCenter Server(VMware の管理用サーバ)で、 1.で更新したイメージのスナップショット作成。
3. View Administrator(Horizon View の管理用 WEB ツール)を使用し、2.で作成したスナップショットを指定して対象プールの“再構成”を実施。
これにより、対象プールで使用されているデータストアに対し、2.で作成されたスナップショットがレプリカとしてコピーされる。また、新しい仮想マシンを作成する為、対象プールから“利用可能”状態の仮想マシン(ユーザ未使用の仮想マシン)が削除される。
4. 3.のレプリカ作成完了後、それを基にリンククローンが作成される。

2. 運用の見直し
2-1 再構成の方法
Windows Update や各種アプリケーションの脆弱性対応版アップデート等がリリースされると、当然ながら仮想マシンの更新を行う必要がある。
先にも述べたが、仮想マシンのイメージを更新するには、View Administrator で“再構成”を実施するのが作法となる(らしい)。この“再構成”は、開始時刻の予約機能を備えており、任意の時刻に実行することもできる。
しかしながら、この“再構成”、実際に何度か実行してみたが、・ “利用可能”な仮想マシンが削除されるタイミングや削除のペースが予測できない。
・ レプリカ作成に数時間かかる為、その間に“利用可能”な仮想マシンが全て削除され、新規ユーザが使用できない恐れがある。
といった状況であった。
その為、“再構成”を使用しない他の方法がないかと思っていたところ、以外にもあっさりと解決に至った。View Administrator で新スナップショットを指定後、仮想マシンの一覧表示の画面から数台のマシンを削除するだけでレプリカの作成が走ることが分かった。この方法であれば、“利用可能”な仮想マシンを十分に残した上で仮想マシンの更新が可能となる。

2.2 日本語キーボード対応
サービス開始当初、VDI を利用する環境として、主に情報社会基盤研究センターが各学生の席に設置している ThinClient から接続されることが想定されていた。この ThinClient 用とセットになっている
キーボードは US 配列となっており、VDI で提供する Windows のイメージも US 配列キーボード仕様で作成していた。
ある程度予測はできていたが、運用開始後しばらくすると、「自分の PC から接続するとキーマッピングがおかしい」、「ThinClient で日本語キーボードを使用したい」等といった質問、リクエストが届くようになった。
今回サービスを開始した Horizon View の環境では、ユーザが使用するキーボードタイプ(キー配列)を自動判別することができない(自動判別できないのは Windows の仕様によるものと思われる)。そこで、1台の親仮想マシンから、それぞれのキー配列に対応したスナップショットを作成する方法でリクエストに応えることを検討することにした。Windows 上でキー配列を切り換える為にはレジストリを変更する必要があるのだが、キーボードを販売している会社が提供しているツールを使用し、2 クリックでレジストリの変更ができるようになった。
プールを増やすことによって、データストアの使用量や運用コストが増えてしまう為、さしあたり一番利用率の高い Windows7 日本語版について、US 配列、日本語配列キーボード用の 2 つにプールを分けてサービスを開始した。

図 2 VDI ストレージ関連の概略(見直し後)

2-3 データストア割り当ての調整
親仮想マシンのアップデートから仮想マシンが作成されるまでの工程で最も時間を要する部分は、レプリカが作成される部分である。このレプリカ作成は、各プールが使用するそれぞれのデータストアへ複製することで行われている。研究系仮想マシン用にはデータストアを 6 個ずつ設けてあり、5 種類のプールが存在する場合 30 個の複製ジョブを走らせることとなる。また、全プールについて更新を行おうとすると、作業完了までに 2,3 日の時間を要するといった状況であった。
脆弱性対応のような緊急を要するアップデートを行う場合、これだけの時間がかかってしまうことは好ましい状況とは言えない。手っ取り早く実現できそうな時間短縮方法としては、レプリカ作成時間を減らすことが有効だろうと考え、取り敢えず各プールが使用するデータストアの数を半分以下に減らすことを試すことにした。
結果、全プールの仮想マシンの更新にかかる時間は 1 日以内に収まるようになった。データストアを減らしたことによるサービスへの悪影響も特に表れておらず、むしろ、新規にプールを設けられるほどのストレージの余裕をも生むことができた。ユーザ数の大幅な増加傾向が表れるまではこのままの状態を維持していくこととする。

3. まとめ
いくつかの見直しにより、サービス開始当初と比べていくらか運用コストをいくらか下げられたのではないかと感じているが、もう一点何とかしたいと考えているものがある。
ユーザが仮想マシン使用後にログオフすることによって、そのマシンは削除され、新しい仮想マシンが作成されるよう設計されているが、現状、かなり多くのユーザはログオフせずにセッションのみを切って放置(Horizon View 的には“切断”)している場合が多い。これは、間接的にストレージ等の資源を無駄に消費する要因となっており、以前からこの問題をどうにかしたいと感じていた。
一定時間以上アイドル状態または切断状態が続いているマシンを強制的にログオフされるような仕組みを実現できないか、現在も模索しているところである。