“An Introduction to Virtualization” by Amit Singh http://www.kernelthread.com/publications/virtualization/ のまとめ 大山 恵弘 2004年10月5日 A Loose Definition virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments, by applying one or more concepts or technologies such as hardware and software partitioning, time-sharing, partial or complete machine simulation, emulation, quality of service, and many others Why Virtualization? 低負荷サーバを少ないマシンに集める レガシーアプリケーションを動かす サンドボックス 資源消費制御・保証、スケジューラ、QoS 存在しないハードウェアの提供 SCSI devices, multiple processors, networks of computers Why Virtualization? 複数のOSを同時に動かす デバッグ、性能モニタ fault and error containment (platform for fault injection experiment) マイグレーション packagingによりアプリケーションsuiteを applianceとして扱える Why Virtualization? 実験のためのツール isolation, save the state 既存のOSをSMP上で動かすことを可能に する 任意のテストシナリオを作る 既存のOSにnew featureを入れる Migration, backup, recoveryを簡単にする Why Virtualization? バイナリ互換性を提供 ホスティング secure, cost-effective 楽しい Privileged and Non-privileged Instructions おなじみの内容 “Analysis of the Intel Pentium’s Ability to Support a Secure Virtual Machine Monitor” Pentiumでは少なくとも17個の命令が non-virtualizable STR命令はどんな特権レベルでも実行可能で、 RPLを返す TLB IA-32のTLBはハードウェア制御 Alpha, MIPS, PA-RISC, SPARCのTLBはソフト ウェア制御 ソフトウェア制御のほうが仮想化しやすい IA-32のTLBエントリはタグつけできない システムコールの仮想化 ptraceなどでフック システムコールをnullify getpidや無効システムコールに変える ホストがシステムコールのための処理を実行 アイドルループ 普通のOSはやることがないときループする でもこれはVM上だと困る VM上では、アイドルループを実行するかわ りに、サスペンドしてほしい Denaliはそのための仮想命令を持つ idle-with-timeout エミュレータ ARMn multiprocessor cycle-accurate simulator ARM processor coreのクラスタをsimulateできる ABI/API Emulation WABI (Windows Application Binary Interface) Sunのマシンの上でWindowを動かす Windows callを「等価な」UNIX callに変換 x86上では命令を直接実行 SPARC上ではemulation and/or binary translation Lxrun x86のLinux a.outをSCO OpenServer, SCO UnixWareなどの上で動かす UNIX system callをon-the-flyでremap Linux shared libraryが必要 Linux dynamic loaderが必要 つまりLxrunはシステムコールエミュレータ である その他 Real-time LynxOSの新しいバージョンはLinux ABI互換性を持つ FreeBSDはLinuxとバイナリ互換。linprocfsは Linuxのprocfsのsubsetをemulate WineはWindowsアプリケーションをLinux, FreeBSD, Solarisで動かす x86専用 各論 bochs x86, I/O device, custom BIOSをエミュレート Chorus Chorusのカーネルは、その上に分散OSを実装できる ような低レベルフレームワークを提供 chroot() Denali IA-32 VMM 信頼できないサービスを隔離環境で動かせる ゲストOSを書き換える 各論 Disco Goal: (大きな実装の手間なく)大規模共有メモ リ計算機で効率的に走るよう現代のOSを拡張 複数VMを載せられるVMM マルチスレッド共有メモリプログラムとして 実装されている ホストOSのすべての資源を仮想化して提供 各論 Ensim Virtual Private Server OSを安全にpartitionできる QoS, complete isolation, manageability Solaris, Linux, Windows FreeBSD jail chroot + α FreeBSDのカーネル内の各所で実装 各論 Hive 複数の独立したカーネル(cell)からなる分散システム cell内にfaultをとじこめて信頼性を向上させる HP-UX Virtual Partitions (VPAR’s) VPARは自分のHP-UXコピーを走らせる VPARは動的生成可能 vPar MonitorというVMM ハードのすぐ上で稼動 ハードウェア資源の所有権をVMインスタンスに割り当てる vParはメモリとI/Oハードウェアを直接アクセスする vParは割り当てられていないハードウェアを意識しない 各論 Linux/RK QoSをポータブルな形で入れる IBM’s Logical Partitioning (LPAR) 複数の独立したAIX, LinuxのOSイメージを一つの サーバ上で走らせる 動的にactive partitionに資源を加えたり取り除い たりできる iSeriesなどのサーバもlogical partitioningをサポート 各論 POWER4 仮想化を助ける仕組みがある Mac-on-Linux PowerPC上でMac OSとLinuxを動かすことができる カーネルモジュールとして実装 MAE (Macintosh Application Environment) SunOSやHP-UX上で仮想的なMac環境を実現 Motorola 68LC040をエミュレート 各論 Microsoft Virtual Server Nemesis (by U. of Cambridge) QoSのサポートのために設計された Nemesis kernelは小さくて軽量 ほとんどのOSコードはアプリケーションプロセス内で 実行される 一つの大域的なページテーブル (単一アドレス空間) プロセスごとのメモリ保護はある いわゆるマイクロカーネル? 各論 Plex86 x86仮想機械 プログラミング言語VM UCSD P-System, p-code JVM .NET CLI QLinux LinuxをQoSで拡張 各論 Shade コードがホスト上で動くように動的にクロスコン パイルするVM SILK (Scout In the Linux Kernel) Scoutはsmall network applianceのためのモジュ ラーなOS Scoutはカーネルモジュールとして存在。自分 のCPUスケジューラとスレッドパッケージを含む 各論 Simics 完全システムシミュレーションのためのプラット フォーム Simicsハードウェアの上で、VxWorks (PowerPC), OSE (PowerPC), Solaris (SPARC), Windows (x86, AMD64)が動く sparc-solaris, x86-linux, x86-windows版あり 各論 SimOS 完全マシンシミュレータ CPU, cache, multiprocessor memory buses, network devices, disk drives, other I/O devicesなどをモデル 可能 Simicsに非常に似ている Embraというプロセッサエミュレータをoptionally に使う 動的バイナリ変換 各論 QuickTransit by Transitive Corporation MIPS, PowerPC, mainframe processorなどのコー ドをx86やItaniumやOpteronで実行可能 MIPS, x86 , mainframe processorなどのコードを PowerPC上で実行可能 様々なUNIX OS間でのsystem call mapping dynamic binary translation 各論 Solaris Solaris containers Solaris Resource Manager (SRM) Zones trusted container BSD “jail” concept アプリケーションにとっては実際の機械に見える、 安全で隔離された実行環境 各論 Solaris Virtual Private Server カーネルは一つのものを共有 複数の隔離実行環境に分けられる 各環境ごとに独立に管理、設定、リブート、 シャットダウンができる 薄いソフトウェア層で実現 カーネルモジュールの集合で大半は実装 アプリケーションは修正なしで走る 各論 Sphera ホスティングの自動化と管理をするソフトウェアの会社 VDS (Virtual Dedicated Server) 一つの物理マシンをソフトウェアで複数の実行環境に分ける SWSoft Virtuozzo Virtual Private Serverを作れる Virtuozzo instanceは動的にpartitionされることができ、QoS保証も ある 各論 TCP/IPスタックの仮想化 User-Mode Linux UMLinux faultが存在するときのLinuxマシンの動作を 評価するためのフレームワーク Virtual PC VMware z/VM
© Copyright 2024 ExpyDoc