仮想マシン道しるべ:仮想マシンの舞台裏(ヴイエムウェア)
5
0
0
全文
(2) 7 ノロジーを使用しています.この決定の理由ですが,ま ず前提として,CPU 仮想化支援機構も CPU 自身にハイ. Ring 3 Guest OS. Guest OS. Guest OS. パーバイザモード・通常モードの 2 つを持ち,相互の. Guest OS. Ring 1 VM VM VM VM monitor monitor monitor monitor. モード遷移には相当のサイクルコストがかかるという Service Console. 事実があります.BT か,CPU 仮想化支援機構か,どち らを使用するかの調査・開発の段階で,BT が CPU 仮想 化支援機能より速度的に優れていたこと,XeonCPU の. 64bit モードが,セグメント境界チェック機能を持って. Ring 0. vmkernel. おらず,VM のアドレス空間独立性を確保するために. 64bitVM では CPU 仮想化支援機構を利用し独立性を確 保している,等が主な要因です.. Hardware. ま た,vmkernel 自 身 は 32bit モ ジ ュ ー ル で す が,. VM monitor は 32bit・64bit 共に用意され,ゲスト OS の種類により選択されます.vmkernel は 32-64 のアド レス変換を行っており,同一マシンでの 32/64VM の混 在使用も可能です.. 図 -1 vmkernel と VM monitor. [. メモリ管理テクニック. ]. 内の OS(以下ゲスト OS)カーネルコードを Ring1 上. メモリの仮想化に関する一番の問題は,ハイパーバイ. で動作させます.ゲスト OS プロセスのユーザコードは,. ザがどのように VM の実際のメモリページ確保・解放. 通常通り Ring3 を使用します.Ring0 で動作すること. を検知するか,にあります.メモリは現在のハードウェ. を前提に作られている OS カーネルコードは,もちろん. アの中で,比較的高価な部品です.ゲスト OS がアロケ. そのままでは Ring1 では動作しません.そこで,各 VM. ーションするメモリを実際に用意しなければならないと. には VM monitor と呼ばれる vmkernel のモニタモジュ. なると,大容量のメモリ搭載が必要になり,結果コスト. ールがロードされ,Ring0 命令のトラップ∼ vmkernel. メリットが出せない,マシンあたりの VM 数が増やせ. への引き渡し,割り込み・IO 制御,等の中継を行います.. ない,仮想化の意味がなくなる,という悪循環となりま. 以 上 が 大 ま か な 構 造 に な り ま す が, こ れ を 素 直. す.ヴイエムウェアのアーキテクチャは完全仮想化であ. に 実 装 す る と, 使 用 に 耐 え ら れ な い 速 度 に な り ま. り,ゲスト OS になんら変更を加えずに仮想化していま. す.Ring0 命 令 の た び に 発 生 す る 追 加 の Ring 遷 移. すので,この問題を解決する必要があります.. (Ring3 → Ring1 → Ring0 → Ring1 → Ring3 と,実機. 通常 OS は,プロセスの要求に応じ自身の管理するメ. に比べ遷移が増えます)が余計な CPU サイクルを消. モリページをプロセスにマッピングします.ところが,. 費するからです.ここで vmkernel が持つ BT(Binary. プロセスがメモリを解放した際には(OS 自身のみがメ. Translation)テクノロジーが考え出されました.BT は,. モリを使用しているという前提で動いていますので)空. リアルタイムに VM 内の CPU インストラクションを先. きページとしてのマーキング・処理をするのみです.こ. 読みし,特定のパターンの Ring0 コードを見つけると,. こでは,ハイパーバイザが,VM からメモリページを他. それを等価の Ring1 で動作可能なインストラクション. の VM にマップするために再利用するきっかけがありま. セットに置き換えます.ここで,Translation Cache と. せん.. 呼ばれるインストラクション・マップ・テーブルを使用. この問題を解決しメモリ利用効率を高めるために考え. し,VM monitor が VM 内 CPU のインストラクション. 出されたのが,VM 間ページシェア・バルーンニングです.. をチェック・置換し,可能な限り Ring 遷移を抑えなが. VM 間ページシェアとは,単一マシン内での VM 間. ら VM の動作を継続させます.この BT テクノロジーに. のメモリページの共有です.複数の VM で同一種類の. より,CPU 仮想化のオーバーヘッドが非常に低い値(実. ゲスト OS が動作する場合,同一のカーネルコード・共. 測値 5%程度)に抑えられています 1 .. 有ライブラリ・プロセス等が動くことになります.これ. 現在では,Intel VT・AMD-V 等 CPU に仮想化支援機. らのプログラムコードが格納されるページは,ページ単. 構が実装されています.vmkernel では,64bitVM を制. 位で同一内容になり,しかもコードのロード時以外の書. 御する際にこの機能を使用し,32bitVM では BT テク. き込みは発生しないのが通常です.vmkernel は VM か. ). 情報処理 Vol.49 No.2 Feb. 2008. 175.
(3) 連載. – ゲストOSは本当の意味でのページ 解放を行わない. App. s 解放メモリを自身の“フリー” リストに 加える s 解放ページのクリア等は行わない. – ハイパーバイザは,どのようにゲスト OSのメモリ解放を検知できるか?. Guest free list. OS. s ハイパーバイザから見ると “フリー” ページは見分けが付かない s ゲストOSのメモリ管理メカニズムに 介在することはできない s 結果,いつ“フリー” メモリを再利用で きるのか,分からない. Hyper visor. 図 -2 メモリページ再利用の問題 ページ内コンテンツのハッシュ化. VM 1. VM 2. VM 3. 00110101 00101010 11001010. …2bd806af. S hared F rame 物理メモリ. Hash: …06af Refs : 2 MPN: 123b. Hash Table. Hash: …07d8 Refs : 3 MPN: 8f44 図 -3 VM 間ページシェア. らページアロケーション要求があると,ページを割り当. ーション要求に応えられなくなる可能性が出てきた. て,同時に図 -2 にあるハッシュテーブルにエントリを. 段 階 で 稼 働 し ま す. こ こ で,VM-A と VM-B が あ る. 追加します.1 エントリは 16 バイトとコンパクトであ. と し ま す.VM-A は 十 分 に メ モ リ を 持 ち 動 作 し て お. り,キーにはページ内のデータをベースにしたハッシュ. り,VM-B が新規にメモリ要求を行ったとします.こ. 値を使用します.次に他の VM がページをアロケート. こ で 空 き 物 理 メ モ リ が 足 り な い 場 合,vmkernel が. したとき,同様にハッシュ値を算出後,ハッシュテーブ. VM-A に 対 し て メ モ リ の 解 放 を 要 求 し,VM-A は ダ. ルから同一の値を持つエントリを検索します.存在すれ. ミーでメモリのアロケーションを行い(Linux : get_. ば参照カウントをインクリメントし,新ページ要求は. free_page(), Windows : MmAlloccatePagesForMdl() /. 既存のページにマップされます.これにより,複数 VM. MmProbeAndLockPages() 等の API を使用),vmkernel. のページが共有されます(図 -3) .. にページを返却します.解放されたメモリが VM-B に. ここで,共有しているページに対して VM から書き 込みがあると,COW(Copy-On-Write)で新ページを. マッピングされることになります(図 -4).この実装は,. VMware Tools という VM 内にインストールする仮想デ. 作成し,書き込みを行う VM には,その新ページを再. バイスドライバパッケージに入っています.. マップします.. 将来の仮想ハードウェアではメモリのホットプラグ技. vmkernel は,バックグラウンドで 1 スレッドを用意. 術を導入するよう計画していますが,その際には,バル. し,ページのチェック・ハッシュテーブルのメンテナン. ーニングと同等の処理を,メモリホットプラグの形で実. スを VM のスケジューリングとは非同期に実行してい. 装することもあわせて計画されています.. ます. これらのテクノロジーの結果,実際に稼働するすべて. 2). .. バルーンニングとは,VM 間でメモリの解放・確保. の VM が必要とするメモリサイズよりも少ないサイズ. を 促 進 す る ためのものです.バルー ンニ ング は,物. の物理メモリで動作させることができる(メモリのオー. 理メモリの空きが少なくなり,VM へのメモリアロケ. バーコミットメント)ようになっています.. 176. 情報処理 Vol.49 No.2 Feb. 2008.
(4) 7 他の ESX Server(転送先 ESX)への VMotion 命令が出 ページの レンタル・ 再利用. バルーンニングの 中身をページアウト. ゲストOS バルーン. ページの 返却. 先 ESX にコピーします.次に,VM-A のメモリ書き込 みを禁止し, 以降のメモリ書き込みは別のメモリ領域(ダ ーティページ)に行い,二重管理を行います.この状. バルーンが膨らむ. Vmkernel. されると,まず転送元 ESX の VM-A の構成情報を転送. 仮想ディスク (ゲストOS の swap) からページイン. ゲストOS. 態で,書き込み保護されたメモリを,転送先 ESX にコ ピーし,VM 作成の準備を行います.メモリ転送の完了 後,VM-A の動作を停止させ,CPU のレジスタセット・. IO ステート等の最低限 VM 動作と同期させなければな. バルーンが縮まる. らないデータを転送先 ESX にコピーし,完了後,転送 先 ESX で VM-A を次のインストラクションから再開さ. 図 -4 バルーンニング. せます.これで,VM-A が無停止で ESX 間を移動する ことになります.メモリ・CPU に関してはコピーを行い, また,最近 CPU で実装が始まった NPT・EPT への対. VM のディスク領域に関しては,共有ストレージに置い. 応も進めています.この実現により,メモリ管理のオー. たものを,双方の ESX で使用します.移動はせず,VM. バーヘッドの軽減が予想されています.. のディスク領域に対するロック権限の移譲のみとなり. [. ]. VMotion. ます. ここで,VM メモリのコピー中に発生した書き込みは どうなるか,ですが,ダーティページのインデックスを. vmkernel には,VMotion という機能があります.こ. VM と同時に転送先 ESX にコピーしており,VM の移. れは,動作している VM を無停止で別の物理サーバに移. 動後にダーティページが必要になると,オンデマンドで. 動させるというテクノロジーです.元々 VM と Motion. 転送元 ESX からコピーされマップされます.また,一. を組み合わせた造語ですが,現在は Live Migration と. 定時間後にすべてのダーティページが転送・マップされ. いう言葉が一般的に使われ出しています.ここでは,. ます.. VMotion の動作をご説明します(図 -5).. 基本的に VMotion は外部から透過的に行われますが,. サーバ A(転送元 ESX)で VM-A が動作しており,. ESX01. VM-A. ESX02. Memory copy. VM-A. ネットワークにのみ痕跡が残ります.VMotion を行う. ESX01. VM-A. ESX02 Demand Page. VM-A. Background Page Memory Bitmap. Memory Bitmap. Shared Storage. Shared Storage. 図 -5 VMotion 情報処理 Vol.49 No.2 Feb. 2008. 177.
(5) 連載 と,VM の NIC が VMotion 後に別のスイッチ(または. する,というものです.VMotion と同様に,CPU のイ. ポート)に接続されることになり経路変更が発生します.. ンストラクションレベルで同期が取られていますので,. この経路変更を解決するために,vmkernel が外部スイ. シームレスに VM の切り替えが可能になります.市販. ッチの ARP テーブル更新を促す処理を行っているから. の x86 サーバを使用し,ソフトウェアのみで FT(Fault. です.. Tolerant)環境が実現されることになります.. VMotion は,その機構上,CPU タイプが同一でなけ. 仮想化を取り巻く状況は常に進化しています.弊社ヴ. ればならないという制限がありましたが,最近 CPU ベ. イエムウェアも,仮想化の価値を高め,市場のニーズに. ンダがこの制限を回避するアーキテクチャを実装し始め. 対応するために,これからも新しいテクノロジーを提供. ており,以降の展開に期待できます.また,VMotion. していきたいと思っています.. を応用し,サーバ群のリソース負荷状況に応じて自動 的に VMotion を行い全体リソースの平準化を行ったり, 省エネ対応として,サーバ群の電源使用を最少化するよ うに VMotion を自動実行する,等のソリューションが ). 実装されています 3 .. [. 将来の展望. (編集者追記) 次回は,基幹サーバへの適用に向けた仮想化技術を, 富士通の Itanium2 プロセッサを搭載した基幹サーバ (PRIMEQUEST)向けの Xen 開発を題材に解説する.. ]. 富士通は,2005 年末より Xen 開発に参加したが,当 時は基幹サーバ向け機能が不十分のため,大規模メモ リ管理,I/O 処理高速化,障害分析等の技術開発が必要. 最後に最近の弊社のトピックスをお話して終わりたい. になった.これらの技術,および,その開発経験より. と思います.. Xen コミュニティの実際の様子を述べる.. • 組み込み ESX 2006 年 9 月に発表をしました ESX の組み込みタイ プです.管理インタフェースとして使用していた Linux を排除し,vmkernel と関連モジュールを 32MB 程度の サイズに抑えました.各サーバベンダからサーバ製品に 組み込まれた形で出荷されます.仮想化の新しい形とし. 参考文献 1)すべてわかる仮想化大全 VMware/Virtual Server, 日経 BP 社(2006). 2)Waldspurger, C. A. : Memory Resource Management in VMware. ESX Server - Fifth Symposium on Operating Systems Design and Implementation (OSDI 02) (Dec. 2002). 3)すべてわかる仮想化大全 2008 実例に学ぶ構築・運用法,日経 BP 社(2007). (平成 19 年 12 月 18 日受付). て注目が集まっています.. • SoftwareFT こちらも,2006 年 9 月にテクノロジーデモを行いま した.ある VM(プライマリ VM)での動作,CPU の ステップ・メモリの IO・各種デバイス IO 等をすべて同 期的に,別のサーバ上で動作するセカンダリ VM に転 送しながら動作させ,プライマリ VM やホストサーバ に障害が発生した際に,セカンダリ VM が処理を継続. 178. 情報処理 Vol.49 No.2 Feb. 2008. 名倉丈雄 [email protected] Unix 系 OS 開発,PC 用 RDB,第 4 世代言語処理システム,オブ ジェクト指向 DB 等のシステムソフトウェア企業を経て,ヴイエム ウェア(株)設立に参加,現職..
(6)
関連したドキュメント
試験体は図 図 図 図- -- -1 11 1 に示す疲労試験と同型のものを使用し、高 力ボルトで締め付けを行った試験体とストップホールの
状態を指しているが、本来の意味を知り、それを重ね合わせる事に依って痛さの質が具体的に実感として理解できるのである。また、他動詞との使い方の区別を一応明確にした上で、その意味「悪事や欠点などを
状態を指しているが、本来の意味を知り、それを重ね合わせる事に依って痛さの質が具体的に実感として理解できるのである。また、他動詞との使い方の区別を一応明確にした上で、その意味「悪事や欠点などを
私たちの行動には 5W1H
仮定2.癌の進行が信頼を持ってモニターできる
自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま
本検討で距離 900m を取った位置関係は下図のようになり、2点を結ぶ両矢印線に垂直な破線の波面
話者の発表態度 がプレゼンテー ションの内容を 説得的にしてお り、聴衆の反応 を見ながら自信 をもって伝えて