なにかと便利なVMwareですが、実験用途に使うのなら別ですが、実用的に使おうとする場合どうしてもパフォーマンスが問題になります。VMware Workstationがホビイスト価格の約$100で買えたころからずっと使っていますが、また1VMインストールしたので、当たり前な点、少しでもパフォーマンスを向上させるポイントをメモしておきます。
チューニングのポイント
VMwareを使う場合のパフォーマンスはCPUももちろんですが、とにかくメモリとディスクに依存します。
- メモリ
1バイトでも多いほうが良いです。メモリが足らずにスワップが発生すると最悪なパフォーマンスになります。用途にもよりますが種類別の割り当てとして以下の容量くらいは欲しいところです。
- Linuxサーバ: 256MB~
- Linuxデスクトップ:512MB~
- Windowsサーバ・デスクトップ:512MB~
guestへの割り当てが多すぎるとホストが遅くなるので、ホストにも上の容量が割り当たるようにしておきます。
実運用ではホストのメモリ1GBだと1-2VM。1GB以下でGUIを使用する場合1VMでも苦しいかもしれません。出来ればホストゲストともに1GBづつくらい欲しいところです。
上の容量は目安で、当然ながら用途により変動します。サーバでも大きなDBを使う場合はもっと多くのメモリが必要となります。
- 空きの少ないハードディスクは使わない
ディスクの容量が少なくなると特にLinux Hostでは劇的にパフォーマンスが低下します。もちろんWindows Hostでも低下します。VMのディスク確保後最低でも10%~20%は空きが欲しいところです。
- GuestOSインストール時にディスク容量を確保しておく
GuestOSのインストール時にディスクを作る場合必ずエリアをプリアロケートで確保しておきます。事前に確保しておかないとディスク使用量が増えるたびにファイルが拡張されるため遅くなります。またフラグメントの原因にもなります。
VMware専用ディスク又は専用パーティションを用意するのがベストです。
- ハードディスクはIndependent-Persistentにする
スナップショット機能は使えなくなりますが、VMの設定からディスクの"Advanced"で"Independent-Persistent"にしておくとかなりディスクの性能が向上します。
また仮想HDDですので実際にはIDEでもSCSIにします。(デフォルトですね。物理ディスクを割り当てる場合を除く)
[VM]->[Settings]->[HardDisk] => [Advanced]から設定
- 高速なHDDを用意する
これはチューニングと言えるかどうかわかりませんが、VMwareのディスクアクセスはネイティブに比べかなりのペナルティがあるので、なるべく高速なHDDを使用します。体感できるほど高速化できます。
- VMware toolsをインストールする
VMware toolsとともにドライバ類がインストールされパフォーマンスが改善されます。特にGuestOSでGUIを使う場合マウスなどの使い勝手も向上しますので必須。
- floppy, CD-ROMは外しておく
必要なければVMの設定で余分なデバイスは外しておきます。
特に上の二つは"Connected","Connected at power on"を外しておきます。
追加として、チューニングとは少し異なりますが、DualコアのCPUを使うと劇的に高速化されます。まあVMwareというか仮想化ソフトというのは2つ以上のOSを同時に走らせることになるので当然といえば当然ですね。最近では仮想化サポート機能対応のDualコアが安価に入手できますが、想像以上の効果がありました。
既にVMwareを使っている人には当たり前な点ばかりですが、参考まで。
コメント (12)
お世話になります。私もvmware serverのパフォーマンスに興味がありましたので、検索していましたら、ここに辿り着いた次第です。
ひとつ質問なのですが、7つのチューニングポイントの3番目。
ゲストOS用の専用パーティションを用意する、そのやり方を教えていただけたら幸いです。
通常、新しいVirtual Machineのウィザードに沿って、ディスクを作成していきますが、その際、
Typical→ゲストOS名の選択→Virtual Machine名とLocation
といった順にウィザードを進めていきますが、
このLocationの部分をまっさらな、例えば何もデータの入っていないDドライブを指定D:\みたいな感じで指定してやる方法が、
「専用パーティションを用意する」という意味合いなのでしょうか?
さらに次の画面にてNICの接続形態→disk capacityの画面にて、そのパーティションのフルの容量を指定して、allocate all disk nowにチェックを入れる…という手順を踏むのが、この場合の正しい設定なのでしょうか?
あるいは、とりあえず、いったん仮想マシンを作成後、その仮想マシンのハードウェアエディット画面にて、適当にウィザードで作成した仮想HDDをremoveした上で、新たにHDDをadd。仮想ディスク作成ウィザードで、新規に仮想ディスクを作るかor既存の物を流用するかor物理ディスクを使うか?を問われる場面で、
物理ディスクを選択後、Use Indivisual Partitionを選ぶ
という方法こそが、この場合でいうところの「専用パーティション」なのでしょうか?
長々と申し訳ありませんが、よろしくお願い致します。
投稿者: ゲストゲスト | 2008年04月29日 16:15
日時: 2008年04月29日 16:15
ごらんいただきありがとうございます。
専用ディスク又はパーティションというのは、専用ディスクという書き方で書いているのがD:を丸ごと当てるような方法です。他のアプリで使ったりしてフラグメントが発生しにくくなるため速くなります。VMは大きなファイルになるのでデフラグされにくいので最初から要因を取り除いておこうという考えです。
専用パーティションと書いているのは物理ディスクを割り当てる方法です。この方法では便利な機能が使えなくなったり危険は増しますが、ゲストが専有するため他の理由で遅くなったりがなくなって速くなる感じです。
以上参考になりますでしょうか。
投稿者: yamap | 2008年04月29日 19:14
日時: 2008年04月29日 19:14
補足:専用ディスクとして物理的にディスクを割り当てることが出来ると一番いいです。丸ごと一台HDDをVM用とかに割り当てるとか。
投稿者: yamap | 2008年05月23日 15:58
日時: 2008年05月23日 15:58
大変参考になるブログありがとうございます。vmware serverの件で教えていただきたいのですが、物理的に単一なHDDがあったとして、ゲストOS専用にwindowsOSからパーティションを切ります。仮に40GBを切ったとします。改めてvmware serverのwindows版を起動させ、いよいよ仮想マシンの作成という段階で、ウィザードで仮想ディスク割り当てに関して聞かれます。ゲストOS専用に切ったパーティションを40GB全て割り当ててあげてもいいものなのか?あるいは7つのポイントの2番目のように敢えて1割~2割残して32GB程度にした方がいいものなのか?もしよかったら教えていただけますか?ゲストOSにはLinuxをインストする予定でいますが、システムも含めて10GBも使わないようなシンプルな用途です。細かい質問ですみません。よろしくお願い致します。
投稿者: はふはふ | 2008年12月01日 19:31
日時: 2008年12月01日 19:31
はふはふさんご覧頂きありがとうございます。
単一のディスクというのはWindowsで言うところの例えば'D:'を丸ごとVMware用という感じでしょうか?
専用パーティションはNTFS等でフォーマットしてそこに仮想マシンのディスクを作るということですよね?
僕もそこまで細かく検証したわけではありませんが、他に全くファイルを置かずに使うなら余り気にすることはないかもしれませんね。
出来るのならパーティションを丸ごとext2にしてしまうのが一番いいのではと思います。ディスク1つをVMwareに丸ごと割り当てれるなら一番いいと思います。
投稿者: yamap | 2008年12月04日 04:17
日時: 2008年12月04日 04:17
レス遅くなりました。すみません。
yamapさん、教えていただきありごとうございます。
>単一のディスクというのはWindowsで言うところの例えば'D:'を丸ごとVMware用という感じでしょうか?
専用パーティションはNTFS等でフォーマットしてそこに仮想マシンのディスクを作るということですよね?
そうです。物理的に1台しかないHDDでCドライブはwindowsOSで同時にvmware serverもCドライブに入ってます。
Dドライブを単純にゲストLinux専用にしようと思ってるのですが、
この場合、FAT32でのフォーマットがいいのか、あるいはNTFSのがいいのか、迷ってます。
パフォーマンスに影響が出るようならいい方を採用したいと思ってます。
DドライブはホストOSのwindowsからは意識的に使わないようにするつもりでいます。
>出来るのならパーティションを丸ごとext2にしてしまうのが一番いいのではと思います。
Dドライブをext2にフォーマットして、windows上のvmware serverから仮想HDDを作れるものなんでしょうか?
Dドライブなので、windowsが分るフォーマット(ファイルシステム)
じゃないと駄目なような気がするのですが、そのext2?にしてもwin上のvmからDドラ全てを充当させる仮想HDDを作れるのなら、その方法を教えていただけますでしょうか?
教えて君ですみませんが、よろしくお願い致します。
投稿者: はふはふ | 2008年12月09日 19:31
日時: 2008年12月09日 19:31
物理ディスクを使ってDドライブの入っているパーティションを丸ごとLinuxにすることは出来ると思います。ちょうどDual Bootと似たようなイメージと思えばいいと思います。
設定がよくわからないようでしたら普通にDドライブにVMを作る方が安全ではないかと思います。ディスクに余裕があるのならめいっぱい使わない方が安全とは思います。
Windowsは余り使っていないのでFAT32とNTFSの比較は出来ません。面倒でなければ同じ構成で作ってみて性能比較してみてはいかがでしょう。
専用ドライブにして他に使わないのであれば神経質になる必要はないと思います。多分体感では余りわからないと思います。
後、すいません。ext2ではなくext3でしたね(笑
投稿者: yamap | 2008年12月09日 20:49
日時: 2008年12月09日 20:49
yamapさん、ありがとうございます。色々勉強になります。
Dual Bootと同じようなイメージなんですね。すごくスッと入ってきました。分りやすい説明ありがとうございます。
windowsからそのパーティションを誤って書き込んだり、不測の事態を防ぐためにも、ここはちょっと頑張ってyamapさんのような上級者のやる設定方法を学んでみたいと思い、自分なりに調べてみました。
ちょっと古いverのですが、以下を参考にしました。
http://www.vmware.com/jp/pdf/server_vm_manual.pdf#search='vmware 仮想ディスク 作成'
windowsからは全く見えていない=未フォーマットのパーティションをひとつ作っておいて、vmware server 1.0.5のwindows版を起動
新規の仮想マシン作成ウィザードを立ち上げます。
Custom→OS選択(RedHat)→仮想マシン名とロケーション→(中略)→プロセッサ数→メモリ割当→ネットワーク(ブリッジ)→SCSIアダプタ→Select a Disk
ここでやっと出てきたのですが、
Use Physical disk(上級者)を
選択→Use Indivisual Partition
を選択して、充当させたいパーティションにチェックを入れればよいわけですよね。
そこで誠に申し訳ありませんが、2点教えていただけないでしょうか?
前述のウィザードの前半で仮想マシン名とロケーションがありましたが、マシン名はいいとして、ロケーションとは、仮想マシンの設定ファイルの場所という解釈であっていますでしょうか?
ロケーションを指定する欄で、C:\うんぬん
となっていたので「アレ?仮想マシンそのものの場所は、CでもDでもない不明なパーティションなのに、何でCとかデフォで入ってるのかなぁ?」と疑問に思いました。
あくまで設定ファイルということで、これはwin上になくちゃならないよ。という解釈で合ってますでしょうか?あるいは、これから作成する専用パーティション内の仮想ディスクに置かれなくちゃならないものなのでしょうか
また、ウィザードが完了する直前なのですが「マシン名.vmdk」のパスを指定する局面があるのですが、
このvmdkは、出来上がるとかなり大きなファイルサイズになりますよね。これこそがまさに仮想HDDに
なるわけですが、これそのものが
専用パーティションに置かれなくてはならないものだと解釈しているのですが、そもそも作成ウィザードだとそのパーティションはwinから見えていないので、Browseで参照してもvmdkをIndivisualなPartitionに置けないような気がしてます。このvmdkファイルもwindows上に置いてしまってよいものなんでしょうか?
長々と書き連ねてしまって申し訳ありません。教えていただけると助かります。
※もしかして私の勘違いかもしれませんが、やっぱりwinから見えている、とりあえずFATでも何でもいいからフォーマットしたDなりを一度作った上で、ウィザードにて、IndivisualなPartitionであると再定義→次回からはDはwinからは見えなくなる。という考え方なんでしょうか。その際、ロケーションとvmdkのパス指定はウィザード上ではDドラ指定で大丈夫なんでしょうか。
何卒よろしくお願い致します。
投稿者: はふはふ | 2008年12月10日 13:32
日時: 2008年12月10日 13:32
追記
よくよく説明書を読みました。
長々とすみませんでした。
①とりあえずDドラはFAT32orNTFSで作成しておく。ただしwinからは絶対使わないし、ファイルもゼロ
②ウィザードで前述のロケーションのパスをとりあえずD:\マシン名などと記述。フィジカルドライブ→IndiviPartitionを使うと設定
~(中略)~
③vmdkの保存先を聞かれる局面で、D:\マシン名.vmdkなどと記述
とりあえず、ウィザードを完了させる
④windowsのディスクの管理からDドライブをアンマップし、winからは不可視にする。
⑤仮想マシンをCD起動から立ち上げて、あとは普通にLinuxOSのインストーラを使って、Linuxのファイルシステムでフォーマット、インストールする。
この手順で合ってますでしょうか?
投稿者: はふはふ | 2008年12月10日 13:56
日時: 2008年12月10日 13:56
最近さわっていないのですが、VMwareのどこかからディスク全体のパーティションが見えるはずなので、それで指定だったと思います。マウントしていたらまずいと思います。Windowsではやったことないのですが、似たような感じだと思うのですが。
具体的な話でなくて申し訳ないです。。。
今お使いの環境は壊していい環境ですか?何度かシステムごと入れなおす覚悟でやったほうがいいと思います。。。
またLinuxを使いたいということでしたら是非是非Windowsなんて消してUbuntuのみで使ってみるのがいいと個人的には(笑。特定の商用アプリを使う場合以外にWindowsなんてなくても全然困りませんよ!
投稿者: nyamap | 2008年12月12日 07:08
日時: 2008年12月12日 07:08
レスありがとうございます。
長々とした文章を読んでいただいて申し訳ありません。
自宅で趣味で立てているサーバーなので、壊れても問題ありません。
Linuxの勉強にと思い、今回vmwareを導入してみました。
vmware側からディスク全体のパーティションが見えるわけですね。
マッピングされてると駄目なのはなんとなく分ります。色々いじってみますね。
windowsサーバー(とはいってもXPですが)は、tvserver
http://pc.watch.impress.co.jp/docs/2005/0330/tvserver.htm
をやるために仕方なく入れてるといった感じです。どうしてもIISじゃなきゃ駄目みたいなので。
でもやっぱりコレ、便利ですw
Linuxはお遊びでドメインを取ったので、メールサーバーを運営してみたいなと。
色々と教えていただきありがとうございました。
投稿者: はふはふ | 2008年12月12日 13:10
日時: 2008年12月12日 13:10
自宅サーバですか。うちもです!頑張ってくださいね。
自ドメインのメールはとても便利ですよ。Linuxサーバを立てて外部からsshで入れるのも便利。
老婆心ながらVMware中のLinuxを外部公開ということで、XPも絡むのでセキュリティには十分お気をつけて!
投稿者: nyamap | 2008年12月13日 07:43
日時: 2008年12月13日 07:43