topimg.jpg


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

仮想化のオーバヘッドと性能を向上させる3つの技術(大幅改定)

仮想化の根本的な部分を更に勉強し直したので、その覚書の大幅改定。

□仮想化支援機能
□ホスト型とハイパーバイザ型
□完全仮想化(Full virtualization)と準仮想化(Para Virtualization)
の3つについて。

上記3つの説明の前に、まず仮想化によるオーバヘッドの原因についてのまとめ。

【仮想化によるオーバヘッド】
完全仮想環境でホスト型仮想化ソフトを利用した場合の、性能上オーバヘッドになる部分をまとめてみた。一応、自分なりに4つにまとめてみた。まあ、これ以外にも細かい点ではいっぱいあるだろうがw
赤字は、その問題を解決する下記で紹介されている技術。ちなみに、この中で今一番の仮想化の問題は
③IOデバイス(ディスク、ネットワーク、グラフィック)のドライバ二重介在による処理変換のオーバヘッド
だろうなー。ハイパーバイザ型の仮想化ソフトでもこの問題は顕在化しているし、仮想化がIOボトルネックになりやすいと言われる所以でもある。


①CPU特権命令変換によるオーバヘッド
 x86/x64アーキテクチャではring0、1、2、3の4つの動作モードがあり、それぞれの動作モードによってプログラムがアクセスできるメモリ空間を分けている。ring0は主にOSカーネルの特権命令に、ring3はOS上のアプリケーションの命令の際に使用される(ring1、2は現在は使用されていない)。
 しかし、仮想マシンOS上からのring0命令はホストOSから見るとring3命令であり、この命令はエラーになってしまう。ホスト型仮想化ソフトのVMMでは、このエラーを常に監視しており、エラーが出た際は特権命令をVMM上で代理処理(エミュレーション)を行いゲストOSに処理結果を返している。この監視とエミュレーションによってオーバヘッドが生じる。
⇒仮想化支援機能 Intel VT-x、ハイパーバイザ

②CPUメモリアクセスのアドレス変換によるオーバヘッド
 仮想マシンが使用しているメモリアドレスと物理マシンが使用しているメモリアドレスは当然異なる。そのため、VMMは仮想マシンから見えている物理メモリと実際の物理メモリそれぞれのアドレスを変換処理(マッピング)しなくてはならない(実際には仮想マシンの仮想メモリ→仮想マシンの物理メモリ→物理マシンの仮想メモリ→物理マシンの物理メモリという4段階のマッピングw)。このメモリのマッピングにオーバヘッドが発生している。
⇒仮想化支援機能 Intel EPT

③IOデバイス(ディスク、ネットワーク、グラフィック)のドライバ二重介在による処理変換のオーバヘッド
 最近の物理マシンのIOデバイス処理は、DMA(Direct Memory Access:CPUを介さずにデバイスとRAMの間で直接データ転送を行なう方式)によって処理が行われている。しかし、仮想マシンからは本物のデバイスも物理メモリのアドレスも見えない。そのため、仮想マシンからIO処理を行うには、まず仮想マシン上の擬似的なデバイスドライバで処理が受け付けられ、そこから更にホストOS(もしくはVMM)上の実際のデバイスドライバへ処理が変換され、実際のデバイスドライバがIO処理を行うようにコントロールされている。その際の処理変換にオーバヘッドが生じてしまい、IOデバイス性能が仮想マシンを利用した場合落ちてしまう。IO処理の例としては、ディスクIO、ネットワークIO、グラフィック表示等がある。
⇒仮想化支援機能 Intel VT-d、準仮想化

④複数の仮想OSの状態情報切り替え(コンテキストスイッチ)によるオーバヘッド
 複数の仮想マシンが起動していた場合、各OSごとの処理の切り替えをする際、CPUレジスタの状態(コンテキスト)を保存・復元する処理が必要になってくる。この状態情報を切り替える作業(コンテキストスイッチ)も仮想化のオーバヘッドの一つである。 
⇒仮想化支援機能 Intel VT-x、ハイパーバイザ



【仮想化の性能を向上させる3つの技術】
□仮想化支援機能
 仮想化支援機能は、CPUやチップセット等のハードウェアレベルで仮想化技術を支援する技術である。IntelとAMDの技術の2種類があるが、どちらも大まかな働きの違いはないので、下記ではIntelベースで説明。

①Intel VT-x(x86系)、Intel VT-i(Itanium系)、AMD-V
 Intel VT-xでは、「VMX Rootモード」と「VMX Non-rootモード」という、新たなプロセッサの動作モードが2種類用意された。仮想マシンでの通常処理はVMX Non-rootモード(のring3とring0)で動作し、仮想マシンから特権命令が実行され際、VMX RootモードになりVMMに処理が移る。これによって、VMMは仮想マシンの特権命令の監視とエミュレーションをいちいちしなくて済むため、オーバヘッドがある程度軽減される。
 また、Intel VT-xでは仮想マシンのレジスタ内容をVMCS(Virtual Machine Control Structure)と呼ばれる専用テーブルに格納する。VMX non-rootモードで動作していたCPUの状態の保存や読み出しに利用される。これによって、コンテキストスイッチによるオーバヘッドを軽減している。

出展
・Intelの仮想化支援機能「Intel VT」とは?
http://www.atmarkit.co.jp/fsys/kaisetsu/085intelvt/intelvt.html
・仮想化技術の性能を向上させる、ハードウェア仮想化支援機能とは?
http://www.atmarkit.co.jp/fwin2k/tutor/intelvtx/intelvtx_02.html

※ただし、Intel-VTのようなCPUの仮想化支援機能が必ずしも性能向上につながるわけではない。
・VMWare Communities:仮想マシンのモニターモード(VMMの実行モード)を確認する
http://communities.vmware.com/blogs/kkomatsu/2009/07/26/-vmm-
では、下記のように述べられている。


物理CPUによる仮想化支援のうち、CPUコマンドの処理を支援する機能はIntelではVT-xと呼んでいる。ESXがこれまでVT-xをほとんど利用してこなかった理由はいくつかあるが、主だった理由は下記の2つだ。

・特権命令やセンシティブな命令を安全に処理するVMX Rootモードと、一般的なCPU命令を処理するVMX non-rootモードを切り替えるVMEnter/VMExitの際の遅延が大きい (VMCALL/VMRESUMEコマンドの遅延が大きい)
・モードの切り替えの際に、TLB(Translation Look-aside Buffer:CPUが仮想アドレスと論理アドレスとを対応させた情報を一時的に保管しておくバッファメモリ )を完全にフラッシュされてしまう


実際、VMWare ESX 3.5ではIntel VTに対応していないCPUでも使用することができたし(他のハイパーバイザ型仮想化ソフトではIntel VT必須)、VMWare Workstation 6.5でもIntel VTを有効にしても性能はほとんど変わらない。

ジオングに足をつけた程度ということだろう。

②Intel EPT(Extended Page Tables)(Intel VT-xの一部)、AMD NPT(Nested Page Tables)
ページテーブルっていうのは、仮想アドレスと物理アドレスのマッピング情報を格納するテーブルのことで、ページング方式のメモリ管理をしているOSは皆利用している。さらにそれを仮想マシンと物理マシン間でも同じようなの作りましたっていうのがIntel EPT。メモリアドレス変換機構をCPU内に搭載している。

ITproから引っ張ってきたIntel EPTのわかりやすい図↓
イメージ図

③Intel VT-d、AMD IOMMU
 Intel VT-dは、IOデバイスが仮想マシン上からDMAを行うために、仮想マシンと実際の物理メモリのアドレスを自動的に変換する機構(リマッピングエンジン)をnorth-bridgeのチップセットに組み込むことによって(CPU側、チップセット側両方のサポートが必要)、仮想マシンが直接DMAを制御することが可能になる技術である。これによって、IOデバイスを仮想マシン上から直接制御することが可能になり、ディスク、ネットワーク、グラフィック処理の性能向上が期待できる。
※ただし、現在Intel VT-dでサポートされているIOデバイスは、PCI Express接続の機器だけらしい。

 また、IOデバイスを仮想マシンから直接扱うことによって問題もある。それは、仮想マシンでひとつのIOデバイスを占有してしまうため、従来のように複数の仮想マシンで共有することができないことだ。これについての対策として、IOデバイス自体の仮想化のための規格「PCI-SIG I/O Virtualization (IOV)」の開発がPCI-SIGで現在進められている。

 まあ、最近(2009年)市場に出たばかりの技術なので、まだまだ未知の部分は多い・・・

出展
・IDF 2008で見たIntelの仮想化対応策
http://enterprise.watch.impress.co.jp/cda/topic/2008/09/05/13785.html
・第2回 チップ・セットに支援機能を搭載してI/Oを仮想化
http://itpro.nikkeibp.co.jp/article/COLUMN/20061019/251207/?ST=virtual&P=1

Intel社のサイトから引っ張ってきたIntel VT-dのわかりやすい図↓
koumokubetu.png



なお、2009年現在、上記3つの技術はNehalemアーキテクチャのような最新CPUなら大体搭載されている。でも、コンシュマー向けだと搭載されていないのがあったり・・・・
・Intel Core i3とi5-750はVT-d技術未搭載(20090722-7)
http://www.virtualization.info/jp/2009/07/intel-core-i3i5-750vt-d20090722-7.html
自作erの人は買うとき注意だね


参考
・第1回 1985年以来のアーキテクチャを革新する新技術
http://itpro.nikkeibp.co.jp/article/COLUMN/20061010/250154/?ST=virtual&P=1
・仮想化技術を学ぶ
http://itpro.nikkeibp.co.jp/article/lecture/20061228/258010/?ST=lecture&P=3
・仮想化における EPT と VT-d の効果
http://agile-cat-mits.spaces.live.com/blog/cns!684876E6A5CF0AF4!323.entry
・Intel社がネステドページテーブルとI/O仮想化に対応した新CPUとNICをリリース(20090331-1)
http://www.virtualization.info/jp/2009/03/inteliocpunic20090331-1.html
・Ciittrriix XenSerrverr参考資料(PDF)
http://www.viops.jp/viops03-citrix-20090529.pdf
・特集「仮想化の正体」(2) Part2 コンピュータ/「分割」を極め,「結合」の段階に
http://itpro.nikkeibp.co.jp/article/COLUMN/20051125/225202/
・サーバ仮想化機構「Virtage」 I/O 仮想化支援機構
http://www.hitachi.co.jp/products/bladesymphony/virtual/dl/virtage_wp04.pdf

□ホスト型とハイパーバイザ型
仮想化ソフトには大きく分類してホスト型とハイパーバイザ型の2種類がある。
●ホスト型
・代表的なソフト
VMware Workstation/Player、VMware Server、VMware Fusion、Virtual PC、VirtualBox、QEMU
・仮想OSからのデバイスへのアクセス方法
ホストOS上のVMMを経由し、ホストOSを介して処理を行う
・性能
ホストOS上のVMMで処理が行われるため、命令変換のオーバヘッドが大きい
・デバイスドライバ
「実在するハードウェア」をエミュレートして仮想環境を実現するため、(そのハードウェア上で動くOSなら)基本的にどんなOSでも動く。エミュレーションにはたいてい古いハードウェアを用いているため、デバイスドライバはたいていOSの標準ドライバで事足りる。
・CPUリソースのパーティショニング
ホストOS上のCPUリソースをゲストOSに割り振るため、ホストOSとゲストOSのCPU使用率が互いに影響しやすい

●ハイパーバイザ型
・代表的なソフト
VMWare ESX/ESXi、Xen、Hyper-V、KVM
・仮想OSからのデバイスへのアクセス方法
ハードウェアとOSの間のレイヤに存在するハイパーバイザと呼ばれるVMMを介して処理を行う
※Xenでは、ホストOSに相当するドメイン0のドライバを経由することによって、ゲストOSに相当するドメインUからのデバイスアクセスが行われる。
※Hyper-Vでは、ホストOSに相当するペアレントパーティションのドライバを経由することによって、ゲストOSに相当するチャイルドパーティションからのデバイスアクセスが行われる。

・性能
ハイパーバイザ上のVMMで処理が行われるため、命令変換のオーバヘッドが小さい
・デバイスドライバ
VMWare ESX/ESXiの場合、ハイパーバイザにハードウェアを制御する専用のデバイスドライバが必要なため、使用できるデバイスに限りがある。Xen、Hyper-Vは、ホスト型仮想化ソフトと似たようなドライバの使い方をするため、基本的にはOS標準ドライバで事足りる。
・CPUリソースのパーティショニング
ハイパーバイザ上でCPUリソースが論理的に区分けされるため、仮想マシン同士のCPU使用率の影響が少ない
(これは自分の推測ではあるが、ハイパーバイザでCPUリソースが綺麗にパーティショニングされることによって、コンテキストスイッチによるオーバヘッドもホスト型に比べ少なくなっているのではないかと考えている。プロセッサアフィニティのように、割り当てたCPUのスレッドをずっと保持したまま使用するようになるので。)

※Xen、Hyper-V、KVMは場合によっては(ホストとハイパーバイザの)ハイブリッド型として分類されることもある

参考
・【仮想化の教室 第4回】 仮想化の進化 ~ハイパーバイザとは?~
http://www.computerworld.jp/topics/mws/155890.html
・仮想化はうさんくさい? 仕組みから仮想化を理解する
http://enterprise.watch.impress.co.jp/cda/virtual/2009/04/13/15256.html


□完全仮想化(Full Virtualization)と準仮想化(Para Virtualization)
完全仮想化=ホスト型仮想化ソフト
準仮想化=ハイパーバイザ型仮想化ソフト
と勘違いしていた・・・・。
あくまで違いは、使用する仮想OS。準仮想化のほうが、仮想化用にカーネルやドライバが最適化されているため高い性能がでる。ただし、ドライバの改変も準仮想化に入れてしまっているのは俺の考えなので、定義が間違ってたらごめんなさい。

●完全仮想化
・概要
実機でも使用する一般のOSを、改変なしにそのまま使用する方式
・OS
全て。Windows系OSは全てこちらの方式(ただし、デバイスドライバレベルではWindowsも準仮想化に対応したものがある)
・デバイスドライバ
OS搭載標準ドライバ

●準仮想化
・概要
仮想環境で動かすことを前提に改変されたOSを使用する方式
・OS
仮想化用にカーネルが最適化されているLinux系OS
・デバイスドライバ
仮想化用に最適化されたドライバ
(VMWareのVMWaretoolsやHyper-Vの統合パッケージ等も含む)

参考
・【仮想化の教室 第6回】 デバイスの仮想化 ~準仮想化デバイスと完全仮想化デバイス~
http://www.computerworld.jp/topics/mws/157229.html
・【仮想化の教室 第7回】 仮想化のコラボ ~Xenの準仮想化仮想マシンをHyper-Vで動かす~
http://www.computerworld.jp/topics/mws/157869.html
・記事:完全仮想化されたゲストOSのI/O性能を向上させるpara-virtualized driver
http://www.jp.redhat.com/magazine/jp/200806/rhel.html
  1. 2009/12/29(火) 04:08:16|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:0

仮想マシンの性能

ホスト型仮想化ソフトを利用した場合の仮想マシンの性能をベンチマークソフトを用いて試験してみた。

●結論
CPU・メモリ能力はホスト型仮想化ソフトでも8~9割の性能がでるという結果になった。ただし、8~9割というのはベンチマーク結果での比較であり、システム全体の性能を表しているわけではないことにご注意頂きたい。システム全体の性能を見るには、負荷時でのスループットやホストOS上からのリソース使用状況等、観点を変えて見る必要があるため、今回の結果はあくまで参考程度に見てもらいたい。

また、HDDの能力については、ゲストOSではシーケンシャルリードライトの性能がホストOSの6~7割程度、ランダムリードライトの性能はホストOSの7~9割程度の結果となった。仮想マシンのランダムリードライトの性能が比較的高いのは仮想HDDの領域がホストOSの物理メモリにのっかっているからだろうか???原因は不明。

グラフィック性能については、いずれの仮想化ソフトも1~4割程度の性能しかでていない。正直これについては、ベンチマークの手法によって結果が大いに異なってしまっているため一概に言うのは非常に難しい。一応ゲストOS上でYouTubeのフルハイビジョン動画は普通に見れるw

なお、利用した仮想化ソフトによる性能の顕著な差は見られなかった。

●環境
・ホストOS
Windows 7 RC 64bit
・ゲストOS
Windows 7 RC 32bit
※ゲストOSはインストール直後の状態
※VMWareTools等をインストールし、ゲストOSのドライバは仮想化用に最適化
※仮想HDDは事前割り当て20GBの容量
※CPU割り当て数2、メモリ割り当て量2GB

●利用仮想化ソフト
・VMWareWorkstation 6.5
・VMWareWorkstation 7.0
・VirtualBox 3.0.10
※いずれのソフトでも上記環境の状態を設定している

●試験方法
ホストOS、ゲストOS上で極力不要なアプリケーションを止め、ゲストOS上で
CrystalMark 2004R3
http://crystalmark.info/software/CrystalMark/
を3回走らせてその平均値を取得する。

●試験結果
・CrystalMark 2004R3の総合得点の比較(縦軸はゲストOSでのベンチマーク値/ホストOSでのベンチマーク値)
sougou.png



・CrystalMark 2004R3の項目別得点の比較(縦軸はゲストOSでのベンチマーク値/ホストOSでのベンチマーク値)
左から順に赤線を跨いで、CPU(四則演算)、CPU(浮動少数演算)、メモリ(MB/s)、HDD(MB/s)、グラフィック(GDI)、グラフィック(DirectDraw)、グラフィック(OpenGL)の性能項目
koumokubetu.png

※VirtualBoxでのHDDのベンチマーク値はホストOSの2~3倍の値になり、明らかに異常値であったため除外している。
  1. 2009/12/15(火) 01:36:45|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:1

VMWareWorkstation(VMWarePlayer)の設定で性能上気をつけるべき所(大幅改定)

●リソース割り振りの優先度を用途に応じて高くする
ゲストOSがフォアグランド、バックグラウンドになっているときそれぞれのリソース割り当ての優先度を「高」にすることによって、ゲストOSへよりCPUリソースが割り当てられ性能があがる。
【設定方法】
□すべてのゲストOSに対して設定する場合
[編集]>[環境設定]>[優先順位]を選択
□特定のゲストOSに対して設定する場合
[VM]>[設定]>[オプション]>[詳細] を選択

・ゲストOS上の処理がマウスやキーボードの入力権を取得しているときCPUリソースを消費する場合
フォアグラウンド入力→高
・ゲストOS上の処理がマウスやキーボードの入力権を取得していないときでもCPUリソースを消費する場合
バックグラウンド入力→高


●ホストOSのスワップ領域をゲストOSで使用しない
ホストOSのスワップ領域をゲストOSで使用してしまうことによるオーバヘッドをなくす。ホストOSの物理メモリのみを使用するようにする。
【設定方法】
[編集]>[環境設定]>[メモリ]を選択
補足メモリの設定→全ゲストOSのメモリを予約されたホスト RAM 内に適合させる
にする。

●.vmemファイルを使用しない
VMWareWorkstationでは、ゲストOSのページテーブルの内容をホストOS上の.vmemというファイルに書き出しバックアップをとっている。.vmemというファイルは、ゲストOSがサスペンド状態から復帰するために使うのだが(ハイバネーションのような感じ)、どうも起動時から.vmemファイルを作成しページテーブルのバックアップをとり続けているらしい。この機能を無効化することによって、.vmemへの書き込みによるオーバヘッドをなくす。ただしその場合、ゲストOSをサスペンドする際に初めて.vmemファイルを作成するようになるため、サスペンドに時間がかかるようになる。
また、Linuxでは下記設定を施しても効果がないようなので注意が必要である。詳しくか下記サイト参考。
http://wizardbible.org/43/43.txt
【設定方法】
vmxファイルに下記行追加
mainMem.useNamedFile = "FALSE"


●メモリトリミングの無効化
ゲストOSの未使用メモリをホストへ解放し再利用できるようにするメモリトリミング機能のオーバヘッドをなくす。
実際どれくらい効果あるか不明だが、メモリに余裕があるなら0にしておくのが無難。
参考にあるパフォーマンスベストプラクティスでは下記のように述べられている。

通常、トリミングはパフォーマンスにほとんど影響を及ぼさず、メモリの少ない状況で必要とされます。ただし、メモリ トリミングによって、ゲストOSのディスクのパフォーマンスが低下する場合があります。

【設定方法】
vmx ファイルに下記行追加
MemTrimRate=0

もしくは下のやり方でGUIでも設定可能(VMWareWorkstation6.5以降)。
ゲストOSを開いた状態で、
[VM]>[設定]>[オプション]>[詳細]>[設定]を選択
メモリページのトリミングを無効にする
にチェックを入れる
memoritriming.png


●ページ共有機能の無効化
VMWareWorkstationでは、複数のゲストOSを立ち上げたとき、複数のゲストOSで共通のページ内容を互いに共有し、メモリ使用率を抑える機能がある。それを無効化することによって、そのオーバヘッドをなくす。
【設定方法】
vmxファイルに下記行追加
sched.mem.pshare.enable = “FALSE”



●仮想ディスクをSCSIディスクにする
VMWareWorkstationでは、仮想ディスクをIDE、SCSIの2種類でエミュレートできるが、SCSIにしたほうがIDEよりも性能が向上する。仮想ディスクを作成する際は、SCSIを選択するようにする。
ただし、32bit Windows XP などの一部のOSでは、VMware からドライバをダウンロードする必要があるらしいので注意。
【設定方法】
仮想マシン作成時下記のようにする。
idescsi.png



●仮想HDDを作成する際、ディスク容量を事前に割り当てる
拡張可能ディスクと事前割当ディスクの2種類があるが、ホストのHDDが足りないとかそういう事情がない限り、容量固定の事前割当ディスクにすることを推奨。これはVMWareだけではなく、Hyper-VやXen等の他仮想ソフトでも同様。また、ファイルも2GB分割ではなく単一ファイルにする。
【設定方法】
仮想マシン作成時下記のようにする。
kotei.png



●スナップショット機能を利用しない
ゲストOSをスナップショットを利用して管理すると、性能が下がるためそれを利用しない。[VM]>[スナップショット]>[スナップショット マネージャ] でスナップショットが使われているかどうかを確認できる。


●デバックモードを無効にする
デバック情報を収集しないことによって、そのオーバヘッドを無効化する。デフォルトでは無効化されている。
【設定方法】
[VM]>[設定]>[オプション]>[詳細]>[設定]を選択
[デバッグ情報を収集]→なし


●フルスクリーンモードでゲストOSを使用する
ゲストOSをウインド上で操作せず、フルスクリーンモードにして使用することによって性能が多少向上する。

VMWareWorkstation5.5以降は上記違いによる性能への影響はほとんどなくなったらしい。
なので今は特に気にする必要はなくなったかと。




●準仮想化を有効化
仮想マシン インターフェイス(VMI)を有効化することによって、CPUとメモリのエミュレーションによるオーバヘッドを抑えることができる。ゲスト OSとハイパーバイザ(VMWareWorkstationの場合VMMのことか?)間の通信に使用され性能が向上するそうだ。

もちろん、VMIの機能はゲストOSのカーネルがVMI用に最適化されている場合でないと使用できない。Windows系OSはVMIをサポートしていないのでこの機能は使えない。

VMI の詳細については、以下を参考。
『Performance of VMware VMI(英語サイト)』
http://www.vmware.com/resources/techresources/1038
『Paravirtualization API Version 2.5(英語サイト)』
http://www.vmware.com/pdf/i_specs.pdf

英語だから読む気しねー

【設定方法】
[VM]>[設定]>[ハードウェア]>[プロセッサ]を選択
VMware カーネル準仮想化
をチェック


●VMWareToolsをゲストOSにインストールする
VMWareToolsは便利な機能を提供するだけではなく、ゲストOSの性能にも影響するので必ずインストールするべきである。なぜならば、VMWareToolsは、VMWareに最適化されたデバイスドライバをインストールするからだ。OS標準ドライバよりもこれらは当然性能が高い。
具体的には下記をインストールする(VMWareマニュアルから引用)

・高い画面解像度と極めて高速なグラフィックス パフォーマンスを提供する SVGA ディスプレイ ドライバ。
・すべての 64 ビット Windows ゲストおよび 32 ビット Windows Server 2003、Windows Server 2008、Windows Vista、Windows 7 ゲストに必要となるオーディオ ドライバ。
・一部のゲスト OS 向け VMXNet ネットワーク ドライバ。
・一部のゲスト OS 向け BusLogic SCSI ドライバ。
・VMware のマウス ドライバ。
・共有フォルダを処理するカーネル モジュール(Windows では hgfs.sys、Linux および Solaris では vmhgfs)。
・Virtual Machine Communication Interface(VMCI)ドライバ。仮想マシン間で効率的な高速通信のために最適化されたクライアントサーバ アプリケーションを作成できます。
・PVSCSI アダプタ用準仮想 SCSI ドライバ。一部の仮想化されたアプリケーションのパフォーマンスを向上させます。




参考
・VMware Workstation Documentation
https://www.vmware.com/support/pubs/ws_pubs.html
・VMware Workstation 6.5 and VMware ACE 2.5
Workstation User's Manual(日本語)
https://www.vmware.com/files/jp/pdf/ws65_manual.pdf
・VMware Workstation 6.5 and VMware ACE 2.5
Performance Best Practices and Benchmarking Guidelines(日本語)
https://www.vmware.com/files/jp/pdf/ws65_performance.pdf
・VMware Player(Workstation)のメモ
http://fun.poosan.net/sawa/wiki/?VMware
  1. 2009/11/29(日) 06:31:43|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:1

VMWareWorkstationの仮想ネットワークアダプタ

3種類ある。今までなんとなく使ってたが、VMWare内部でどんな構成になっているかを調べ直したのでその覚書。
※下記図にあるIPは、クラスCのネットワークアドレスを持ち、値はあくまで例

●ブリッジ接続

+--------+       +--------+
|ホストOS|       |ゲストOS|
+--------+       +--------+
(物理NIC:192.168.10.11) (仮想NIC:192.168.10.12)
  ||           ||
+-------------------------------------+
|VMNet0 仮想スイッチ         |
+-------------------------------------+
         ||
     (ルータ:192.168.10.1)
       +--------+
       |ルータ |
       +--------+
         ||
        (WAN)



・ゲストOSのデフォルトゲートウェイ:192.168.10.1


●NAT接続

+--------+       +--------+
|ホストOS|       |ゲストOS|
+--------+       +--------+
(仮想NIC:192.168.146.1) (仮想NIC:192.168.146.128)
  ||           ||
+-------------------------------------+
|VMNet8 仮想スイッチ         |
+-------------------------------------+
         ||
     (NAT:192.168.146.2)
       +---------+
       |NATデバイス|
       +---------+
     (物理NIC:192.168.10.11)
         ||
     (ルータ:192.168.10.1)
       +--------+
       |ルータ |
       +--------+
         ||
        (WAN)


・ゲストOSのデフォルトゲートウェイ:192.168.146.2
・ゲストOSからルータ:192.168.10.1には到達できるが、物理NIC:192.168.10.11には到達できない
・ホストOSのVMware NAT Serviceが仮想的なNATデバイスを作り出しNATの機能を提供する。上の例だと、192.168.146.xを192.168.10.11に変換
・デフォルトではゲストOSへ外部ネットワークから接続できない。
[編集]>[仮想ネットワークエディタ]>[NAT]>[編集]>[ポートの転送]
でポートフォワーディングの設定をする必要がある。ホストへの外部アクセスを、ホスト指定ポートからゲスト指定ポートへ再送信することによって、外部からゲストOSへのアクセスが可能になる。
・NAT構成ファイル
 Windows C:\Documents and Settings\All Users\Application Data\VMware\vmnetnat.conf
 Linux /etc/vmware/vmnet8/nat/nat.conf
・ゲストOS側のファイアウォールを無効にしないとホストからアクセスできないことがあるので注意


●ホストオンリー接続

+--------+       +--------+
|ホストOS|       |ゲストOS|
+--------+       +--------+
(仮想NIC:192.168.114.1) (仮想NIC:192.168.114.128)
  ||           ||
+-------------------------------------+
|VMNet1 仮想スイッチ         |
+-------------------------------------+



・ゲストOSのデフォルトゲートウェイ:なし
・デフォルトでは、ゲストOSは外部ネットワークに接続できない。ホストOS上でプロキシサーバを立てることによって、ゲストOSも外部ネットワークへ接続できる
・ゲストOS側のファイアウォールを無効にしないとホストからアクセスできないことがあるので注意


参考
・VMwareの詳細
http://nobumasa-web.hp.infoseek.co.jp/multi_boot/vmware/vmware.html
・VMware Workstation 6.5 and VMware ACE 2.5
Workstation User's Manual(日本語)
https://www.vmware.com/files/jp/pdf/ws65_manual.pdf
  1. 2009/11/15(日) 05:16:31|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:0
前のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。