Virtual Server 2005 のディスクパフォーマンス低下を改善する
SERVER
Microsoft Virtual Server 2005 Standard Edition
Microsoft Virtual Server 2005 は、Microsoft 社が提供している仮想サーバーソリューションです。以前にも Virtual Server 2005 Standard Edition を使ってみる にて少しお話しましたけど、これを用いることで複数の仮想 PC を起動して、それらを一括して管理することが出来ます。
使い勝手も良好で、これを用いて複数の OS を快適に起動させていたのですけど、あるとき問題に見舞われてしまったのでした。
それは仮想 PC 上で 2 つの Windows Server 2003 を実行していたときの出来事です。
まったく問題なく快適に使用していたのですけど、あるとき Windows Server 2003 の仮想ディスクを Windows のミラーボリューム機能を使ってミラーリングしてみたところ、それが完了するまでの間、ディスクパフォーマンスが、それにつられてシステムの応答速度が極端に低下してしまったのでした。
そういえば以前から Virtual PC の方ですけど、ディスクアクセスの遅さは気になっていたのでこれが限界なのかなとも思ったのですけど、そういえばシステムボリュームをミラーリングしはじめる前はけっこう快適に進んでいたりもして、2 台同時にミラーリングを行ったあたりを境に急に遅くなってしまった感じだったので、もしかすると単純におかしくなってしまっただけなのかなって思って、いろいろ調べてみることにしました。
ミラーリング時のパフォーマンス低下を改善する
とりあえず複数の仮想 PC 上で、ひとつのドライブを構築しはじめたまでは良い感じだったのが、複数のドライブを同時に構築しだしたのを境に遅くなった感じだったので、とりあえず単純な気まぐれかと思って仮想 PC を再起動してみたりしました。
仮想 PC のみならず Virtual Server 2005 をインストールした PC を再起動してみたりしましたけど、それで特に改善されることもなく、むしろ 1 日かけてやっと途中まで進んだミラーリングがやり直しになったりして、まったく改善なしでした。
時間がかかるのは仕方のないことなのかとミラーボリュームの構築を再開してみましたけど、構築中のサーバの応答が異常なまでに遅かったりして、これだけ遅いとたとえば予期しない OS の停止なんかがあったときに再起動後にミラーボリュームがいっせいに再構築されたときが恐ろしいなとも思いつつ、Virtual Server 2005 でミラーリングって実用的なのかなって少し疑問に思ってみはじめてしまったりでした。
ともあれ Virtual Server 2005 のディスクアクセスってこういう感じなのかなって、ちょっとインターネットで調べてみると、Virtual PC でのお話ですけど、メモリのスワップが発生すると途端に重くなるとかいう評価をちょっと見かけました。もしかしてこのせいだったりするのかと、とりあえずメモリの使用状況をタスクマネージャで確認してみたところ、仮想 PC に割り当てられているメモリ容量よりも多くのメモリを消費していることに気づいたのでした。
途中からおかしくなった感じがしたのは、もしかしてこのせいだったりするのかと思って、仮想 PC にゆとりのあるメモリ容量を割り当ててみました。けれどそうしてみたところで、ミラー構築の速度は変わる感じはしませんでした。
ただし構築中のサーバの応答は、メモリ容量が足りないときよりは明らかに目に見えた改善があったので、そのあたりの気配りは行って損はなさそうな感じではありました。
そういえば、ミラーボリュームを構築するのに先立ってシステム領域をダイナミックディスクへアップグレードしたときにいったん再起動を要求されて、快適に進んでいた他のボリュームのミラーリングを中断して再起動をかけたあたりから、調子が悪く感じたような気がしてみたり…。
そのときに、ダイナミックボリュームにアップグレードして再起動をかけてみると、起動後に何か新しいデバイスが組み込まれたとのことで再び再起動を要求されたんですよね。そしてさらに再起動後にシステムパーティションをミラーボリュームにしようとすると次のようなメッセージが表示されたりしました。
論理ディスク マネージャは、受け側ディスク上の起動パーティションの起動ファイルを更新できませんでした。Boot.ini 内、または bootcfg.exe ユーティリティの arcpath の一覧を確認してください。
これは受け側、新しいドライブが、そもそもパーティション分割など行っていないので、ファイルを置くということさえ出来ないから当然かなとも思いつつ、あまり気には留めてはいませんでしたけど…。
そんなことを思いつつ、こんな状態なので複数台を同時にミラーするのはまずいかなとも思ったのですけど、あまりにも待たされるのでこの際 2 台あるうちのもう 1 台の方でミラー構築を同時に行ってしまおうとしてみたところ、なんと正常と思える速度でミラーの構築が行われてしまったのでした。
なのでもう 1 台の方の構築をいったん中断して再開してみようと思ったところ、中断の時点でエラーとなってしまいました。エラーの内容はイベントビュアで確認してくれとのことだったので調べてみると、それらしいものとしては、aic78xx をソースとして次のようなエラーが記録されていたのでした。
デバイス \Device\Scsi\aic78xx3 はタイムアウト期間内に応答しませんでした。
ここで気になったのは AIC という単語でした。
Virtual Server 2005 は Adaptec 社の AIC-7870 という SCSI インターフェイスをエミュレートするとのことだったのですけど、記憶に残っていたのは、ドライバとしては仮想 PC 専用のドライバがインストールされるはずだったのでした。
そうなるとエラーに現れてくる SCSI アダプタ名も AIC 以外のものになってくるんじゃないかと思って、デバイスドライバを使って確認してみたところ、"SCSI と RAID コントローラ" という項目に表示されたデバイス名は "Adaptec AIC-7870 PCI SCSI Controller" となっていたのでした。そして注目すべきは、問題なくさくっとできてしまった方のドライバが "Microsoft Virtual Machine PCI SCSI Controller" となっていたというところでした。
これでなんだか、原因が見えたような感じがします。
バーチャルマシンの追加機能はインストールしてあるはずなのにどうして SCSI アダプタは適したものが選択されていないのだろうと、すこし疑問にも思いつつも、とりあえずデバイスマネージャからドライバの更新を行ってみることにしました。
"SCSI と RAID コントローラ" にある "Adaptec AIC-7870 PCI SCSI Controller" 上で右クリックして、"ドライバの更新" を選択してみます。そしてドライバの自動検出を行わせてみましたけど、残念ながら今よりも最適なドライバは見つかってはくれませんでした。
それならばとバーチャルマシンの追加機能を改めてインストールしようとしてみたところ、次のエラーが発生してしまいました。
このマシンには、より新しい 「Virtual Machine Additions」 のバージョンが既にインストールされています。セットアップを続行することは出来ません。
ただの訳の問題なのか、今よりも新しいバージョンが検出されてしまってインストールを継続することが出来ませんでした。
Virtual Server 2005 になってから追加機能のバージョンアップがなされたとは聞き覚えがなかったのでそこも不思議に思いつつ、インストールされている追加機能のバージョンを調べてみると、上手く行くほうは 13.206 だったのに対して、上手く行かないほうは確かにそれより新しい 13.306 になってました。
そういえば、もともと最初には Virtual PC 2004 を使って OS のインストールを行ったかもしれないです。
Virtual PC 2004 と Virtual Server 2005 とでは一部を除いて基本的に互換性があると謳われていたので、そういえばたしかそうしました。さらに記憶をたどってみると、上手くいったほうはそういえば、Virtual Server 2005 にて追加機能をインストールしたことは確かに覚えています。
Virtual PC 2004 の方は SCSI をサポートしていませんので、SCSI アダプタのドライバが組み込まれなくても納得が行きます。
そこで "プログラムの追加と削除" から、いったん "Virtual Machine Additions" を削除して、再び Virtual Server 2005 の追加機能をインストールしなおしてみました。そうしてみたところ、SCSI アダプタも無事 "Microsoft Virtual Machine PCI SCSI Controller" に指し換わっていて、追加機能のバージョンも 13.206 になりました。
この状態で改めてミラーの構築処理を行ってみたところ、今までまる 2 日経っても終わらなかった 8GB の仮想ディスクのミラーリングが、ものの 15 分程度で問題なく終了したのでした。調子に乗って複数のドライブを一度にミラーの構築をさせてみたりしましたけど、同時並行でもシステムのパフォーマンスにさほど影響することなく、正常と思われる時間内にミラーリングが完了しました。これならまったくもって問題なく、実用的な感じです。
バーチャルマシンの追加機能、かなり重要な感じですね。
特に Virtual PC 2004 から Virtual Server 2005 へ移行して、その後で SCSI アダプタを追加したような場合には、バーチャルマシンの追加機能をいったんアンインストールした上で、あらためて Virtual Server 2005 の追加機能をインストールしなおすことが重要になってくるようでした。