検索

Google
Web www.icefree.org

RSS of recent changes

 

デスクトップを仮想化

2017-06-20 (火) 23:23:54 (1556d)
16 Sep 2007-
(検証しつつ編集中です)

まえがき

 一般的に企業で使われている「サーバ機能を仮想化して集約する」というよりは、一般ユーザが普段使うデスクトップを仮想化するという話です。シンクライアントと言った方が適切かもしれません。
 思想自体は、別に目新しい話ではなく、むしろ今の形態よりも古いくらいです。UNIX系でよく使われたXサーバに近いかもしれません。今まではWindowsを十分な性能で集約するには相当のコストがかかりましたが、最近では非常に安価に構築することができるようになりました。

 Windowsの機能の集約にもいくつか方法があります。
 WindowsのアプリケーションをターミナルサービスやMetaFrame?でホスティングするのが、軽量で簡単な方法でした。MetaFrame?はそれなりの値段がしますので、個人で導入する人はいないと思いますが、WindowsServer?でターミナルサービスをRDP接続で使うくらいはできました。
 この方法は、Windows Serverのマルチユーザ機能を使ったもので、OSもWindows Serverでなければいけません。WindowXPなどのリモートデスクトップ(コンソールへの接続)も出来ますが、実質的に1接続(リモートから接続中はホストは使用不可)しか使えないので、単なるリモート接続という以上の機能を持たせることは困難です(ソフトで無理矢理なんとかする方法もあるようです)。XPは余談ですが、うまく動作しないアプリケーションも多く、特定のアプリケーションをサーバに置くという使用方法になります。
 これとは別の方法で、最近脚光を浴びているのが、OSも含めてマシン自体を仮想化してしまう方法があります。この場合、ハードウェアは1つしかないので、ハードウェアリソースの扱いには制限がかかることがありますが、ソフトウェアに関する制約はほとんどなくなります。ただ、アプリのホスティングに比べて、圧倒的にホストの性能が必要なため、今までは個人レベルで導入できる値段ではなかったのですが、ソフトウェアに対してハードウェアの性能の向上(と値段の下落)が著しいので、容易に導入できるようになりました。
 以前から、今回使った技術であるターミナルサービスやRDPや仮想化ソフトを常用しているのですが、性能や利便性の点でデスクトップを置き換える気にはなりませんでした。メモリ価格の下落と、CPUコアの増加の恩恵はかなり大きいです。また、一般的に使用されているWindowsXPの必要とするスペックが、最新の(コンシューマ向けの)ハードウェアの性能を大きく下回っている点も重要です。

 図にすると以下のような構成になります。

virtualpc.gif

 エンタープライズ用途だと、ホストOSなしで直接仮想化ソフトがハードウェアの上に乗る方式に流れつつあります。その方式の方が実行効率は良いのですが、仮想化ソフトの値段がかなり高くなります。個人使用では機能の低下分をハードウェアの性能で補ったほうが幸せになれます。

利点

 個人レベルで使う場合の利点について挙げてみます。

・OSの切り替えが容易
 「リムーバブルHDDなどを入れ替えることで、環境(OS)を入れ替える」という使用方法が昔からありますが、それがソフトウェアの操作だけで簡単にできます。
 しかも同時に動かすこともできます。

・古いPCでも最新の環境で使える
 ホストの性能はかなり必要ですが、そこさえ頑張れば、リモート端末は低性能でも十分に使えます。画面サイズなどの制限はありますが、PDAでもデスクトップ製品のWindowsが(見かけ上)使えます。
 1つのPCを家族でアカウントを分けて使ったりせずに、1人1PCのように使うこともできます。と、言いたいのですが、敷居が高いので現状だとお勧めはしません。まぁ、子供用のインターネット接続用マシンくらいには良いかもしれません。管理が楽だし。

・出先で家と同じ環境が使える
 前項と理由は同じですが、ネットワーク性能さえあれば、どこでも同じ環境が使えます。

・故障に強い
 やはり前項と重なりますが、リモート端末はなんでもいいので、ホストさえ生きていれば、リモート端末は壊れても問題ありません。これは欠点でもあって、ホストが壊れると全滅です。ただし、一点集中でホストさえ守っていれば大丈夫です。複数のPCを管理するよりは簡単です。
 仮想化されたゲストOSは、そのデータ(ファイル)さえあれば、ホストの違いを
あまり気にせずに使えるので、とりあえずの復旧も容易です。

欠点

 同じく個人レベルでの欠点についても考えて見ます。

・電気代がかかる
 マシンの数が増え、しかも24時間運転にすることが多いので、電気代がかかります。経験的に、サーバ1台で4000円/月の電気代がかかります。

ハードウェアの性能を100%使えない
 ゲストOS上では、本来持っている性能を100%発揮できません。基本的に、ゲストOSではI/O性能が悪くなります。いざとなったらホストOSを直接使う方法もありますが、安定性の面からあまり好ましくはありません。
 また、通常動作しているゲストOSが1つだとしたら、無駄なオーバーヘッドを払っているだけともいえます(そのオーバーヘッド分の利点があるかどうか・・・)。

・故障すると被害が大きい
 (特にストレージの)故障に対して、何の対策もしていないと、壊れたときの被害が大きくなります。しかし、一点集中なのは利点でもあります。

個人利用

 企業などではセキュリティ面で導入することもありますが、個人では意味がありません。TCO削減も企業では理由の1つに挙げられたりしますが、個人レベルの小規模な使用で削減できるかどうかはやや疑問です。

 そもそも企業内と個人では利用形態に大きな違いがあると思います。
 個人では、同時稼動数が非常に少なく(場合によっては最大でも1つという状況もあり得ます)、代わりに環境のバリエーションが多い傾向になります。また、ハードウェア(周辺機器)の扱いも特殊で、さまざまな機器を特定のゲストOSで使いたいという状況が良く起こります。
 こう考えてみると、個人での利用は、テスト環境のための仮想化に近いように思います。

 家庭に1つ集中サーバがある環境や、インターネット上のサービスが提供される環境も考えられますが、それは将来ということで。

用語

簡単な用語解説です。
詳しくは、Microsoftのページなどで調べてください。

RDP (Remote Desktop Protocol)
Microsoftのターミナルサービスで使用されるプロトコル
http://support.microsoft.com/kb/186607/ja

ターミナルサービス(TS)
マルチユーザがリモート端末からWindowsにログインできる機能
サーバ系OS(2003 Server等)で使えますが、ライセンス体系に注意が必要です。

リモートデスクトップ
ターミナルサービスの機能限定版。XPやVistaに搭載されています(いずれも下位エディションでは非搭載です)。
複数ユーザ・接続が同時使えなくなっています。

このページでの用語

 このページでは、混乱を避けるため以下のように用語を使い分けています。

ホスト、サーバ
 仮想化ソフトを動作させているサーバのことです。

ホストOS
 ホストで動いている本来のOSです。

ゲストOS
 ホストの仮想化ソフト上で動いているOSです。

リモート端末
 ゲストOSにRDPでアクセスする端末です。リモートといいつつ、一番ユーザに近いところにあるマシンです。

今回のハードウェア

 うまくいかなかったら、普通のデスクトップ用への転用も考えていたので、割と普通のスペックです。
 仮想マシン用なので、とにかくコア数とメモリを上げることだけを考えました。

・MB INTEL BOXDG33BUC
 G33+ICH9, GbE(82566DC), VGA(GMA3100), Audio(ALC888)
・CPU Q6600 (SLACR,G0ステップ)
 2.4GHz/8M/1066, TDP95W
 B3ステップ(SL9UMは非対応なので要注意)
・MEM Transcend TS256MLQ64V6U (178107-0109) 2枚
 DDR2 PC2-5300 2GB
 SAMSUNG K4T1G084QA-ZCE6(128M*8,5-5-5-12) 片面8 で両面。

 控え目です。費用としては8万弱です。
 CPUはどうしてもQuadコアにしたかったので、現行で一番安いQ6600です。
 MBは適当にオンボードVideo,NICなのを選びました。
 メモリは最大数まで積むことを考えて、1G*4にはしていません。うまく動いているので、同じのを追加する予定(合計8GB)です。

 ポイントとしては、
・Quadコア
・メモリ4GB
です。今、仮想化のために組むなら、これくらいが最低ラインでしょうか。

 本当は、8コア メモリ32GBまで行けるキャパが欲しかったのですが、財布に優しくないので止めておきました。
 今のパーツの性能・値段だと、メモリ、CPU、HDDの順で優先すると良さそうです。

 ネットワークをGbEにするのは基本です。

ポイント

  • 予算の範囲で、できるだけメモリ・コア数をかせぐ
  • メモリ、CPU、HDDの順で配分

その後、メモリは増設して8GBになりました。
ちなみに、同じ型番のモジュールでしたが、使っているチップが
Micron D9HNL
に変わっていました。

仮想化ソフト

 候補としては
・VMware Workstation
・VMware Server
・Virtual Server
を挙げました。他にVMware Player, VMware ESX Server, Virtual PC, Xenなどもありますが、動作の安定性・目的や価格といった理由で除外しました。

 少し前にサーバの仮想化のときに「VirtualServer? vs VMware server」を試したのですが、そのときはVMware serverの方がよかったので、今回はVMware WorkstationにするかVMware Serverにするかの比較になりました。

 Workstationの方が機能的には上で
・USB2対応(Serverは1.1)
・グラフィック性能が良い
・スナップショット機能が強力
・マルチディスプレイ対応
などの利点があります。

 Serverの方の利点は、
・ホストの起動・シャットダウンに合わせてゲストOSを自動起動・自動シャットダウンできる
という点があります(Workstationに無いかどうかは未確認)

 ホストマシンに直接繋いだモニタとキーボード・マウスで利用するなら、Workstationの方が性能が良いです。しかし、今回はホストマシンから直接利用せずにネットワーク経由で使う方針です。
 マルチディスプレイ対応は非常に欲しい機能ですが、実はServerでも解決方法はあるので問題ありません。

 Workstationの方がよさそうなのですが、Serverでも十分に使えそうなので、とりあえず無料で使えるServerで試してみます。(テスト用環境ではWorkstationも使用しています)

ホストOS

 VMwareの場合、LinuxとWindowsのどちらでも動くので、ゲストOSの性能がより発揮できそうなLinuxから試してみました。

 VMwareは Ubuntuが好きらしいので、Ubuntu 6.06を入れてみました。

 マザーボード(G33)の対応具合によるもののようですが、インストーラが途中でフリーズします。起動オプションを acpi=off noapicなどとしてみると、とりあえず進むようになりましたが、イマイチなのでUbuntu 7.04に変えてみました。
 7.04ではすんなりインストールできました。ただし、オンボードNICを認識しないので、PCIで別のNICを付けました(7.10では対応しているらしい)。

 次にVMware server 1.03をインストールします。しかし、途中で環境に合わせてコンパイルするところで止まってしまいます。vmware-any-any-updateを当ててみると、とりあえずコンパイルできるようになりましたが、なぜかうまく起動しません。

 おそらく設定が悪いのだと思いますが、ホストに不安がある状態で使いたくないので、この時点で諦めてWindowsに切り替えました。

 Windows版はすんなり動きました。この辺の手軽さはWindowsに分がありますね。

ポイント

  • 低コスト・高効率ならLinux。Windowsはお手軽。

ゲストOSその1 WindowsXP

 ゲストOSには、
・メモリ 1GB
・HDD 40GB
・Processors 1
を割り当てました。
 USBも使うので、USB Controllerを追加しておきます。

 あとは、普通にインストールします。

 VMware Server Consoleから使っていると、なぜか極端に動作が遅くなることがありました。その場合は、サスペンドしてレジュームし直すと回復します。
 RDP接続だと問題ないので、Consoleの描画に問題があるようです。

 さて、このままホスト上で使ってもいいのですが、あまりおいしくないので、リモート端末からRDP接続で繋ぎます。
 リモート端末の方が性能が落ちるように感じるかもしれませんが、実はリモート端末から使ったほうが快適だったりします。描画も、VMware toolsを入れた状態のVMware Server Consoleでの利用よりも、RDPで繋いだ方が快適です。しかも、マルチディスプレイでも使えます。
 注:VMware Workstation 6との比較だと、おそらくVMwareの方が勝っていると思います。VMware Serverは描画が弱いのです。

マルチディスプレイ
 リモート端末は、XPあたりでいいのですが、XPのmstsc.exeは古くてマルチディスプレイに対応していないので、mstscをRDP6.0対応のものに入れ替えます。
mstsc /span
で起動すると、全画面のときに横一列に連結されたマルチディスプレイに対応してくれます。

 これでうちの環境では、ほとんどストレスなくデスクトップとして使えています。
 ちなみに、リモート端末(ホストから見てのリモートマシンで、要するに手元のマシン)上ではアプリケーションは mstsc と iTunes くらいしか動いていません。iTunesもホスト側で動かせて、RDPの機能でサウンドをリモート端末で鳴らすこともできるのですが、安定性の点からリモート端末で動かしています。リモート端末ではCPUなどのリソースを喰うプロセスが居ないので、ホストでどんな作業をしていても、音飛びなどもしません。この点は、普通にWindowsを使うより快適です。

ポイント

  • VMware serverの場合、RDP接続だとマルチディスプレイ対応(/span)で動作も速い
  • 接続のために使うソフトは、RDP6.0対応のmstsc.exeにする(WindowsXPの場合)

Tips

VMware Server Console

 ゲストOSの描画が遅いので、Consoleでは直接アクセスせずに、ConsoleはVMwareの管理用としてのみ使います。

 よく使うのは、起動・シャットダウン、USB機器の繋ぎ換えです。
 USBの繋ぎ換えの場合は、ホストOSでの切断も使えた方がいいので、リモートでConsoleを使うよりは、ホストで動いているConsoleをRDP接続で使った方が便利です。

USB

 USBを繋いだり、切断する手順が面倒なのが難点です。

接続する場合
・USB機器を繋ぐ
・仮想マシンに割り当てる

切断する場合
・仮想マシンのゲストOSで安全に取り外せるようにする
・仮想マシンへの割り当てをやめる
・ホストOSで安全に取り外せるようにする
・USB機器を外す

 単に別ゲストOSに割り当てるなら、ホストOSで取り外したりしなくてもいいのですが、USBメモリなどの扱いが非常に面倒です。

Windows XP

 画面効果のうち
「メニューとヒントをアニメーション化する」
はストレスが溜まるので切ります。

トラブルシューティング

リモートデスクトップがつながらない(XP)

 まず、Homeエディションは使えません。

 以下の3点を設定してください。
・ファイアウォールの無効化
 完全に無効化する必要はありませんが、面倒なら無効化した方が楽です。
 どうせ、こんな環境を作るような人のところだと、外部直結なネットワーク環境なわけがないし。
・リモートデスクトップの有効化
 マイコンピュータのプロパティ>リモート
・CTRL+ALT+DELでのログインの無効化
 これがあるとログインできません。

ホストのCDをクライアントで使うと異常に遅くなる

 「Connect exclusively to this virtual machine」にチェックを入れたら、改善したような気がします(要検討)。
 ディスク入れ替えのクライアントでの認識が甘いなどの問題もあります。

 これらを解決しようと、USBで直接繋ぐと、もっと酷い目(ブルースクリーンで落ちる)にあうので注意。

やってはいけないこと

USB接続でCDを直接繋いではいけない

環境

  • VMware server 1.03
  • ゲストOS WindowsXP

 USB外付けDVD(中身は NEC ND-2500A)を繋いで再生しようとすると、Windowsがブルースクリーンで落ちます。
 USBでCDを直接繋いではいけないようです。

Windows Server 2008

 TSの機能強化と組み込まれている仮想化が気になる。
 仮想化は、性能については現状で十分なので、ハードウェアリソースの割り当てをどれだけ動的に行えるかが問題。エンタープライズ用途ではないのでCPU/MEMの割り当てではなく、周辺機器の割り当てが重要です。
 現行のVirutalServer?/VirtualPCだとUSBの割り当てすら出来ないので、どこまで変わっているのか見ものです。

 もうじきベータ3が送られてくるらしいので、到着待ちです。

コメント


Counter: 1964, today: 1, yesterday: 1