Xenとkvmの関係から始まったサーバ仮想化の話

KVMとXenの違いに対する疑問から突如語られる仮想化の仕組み。 流れるのもったいないという声が聞こえたので初Togetter 誰でも編集可能という設定にしてあるので追加したいことがあったらどうぞ。
19
Moriyoshi Koizumi @moriyoshit

KVM と Xen って共存できる技術だと思うなあ。パフォーマンスはともかく、ちょっと環境が欲しいときには KVM の方が圧倒的に便利。

2010-06-07 14:56:14
Takeshi HASEGAWA @hasegaw

XenもKVMもI/Oまわりはqemuで一緒だしCPUの仮想化が充実してきたので準仮想化のパフォーマンスメリットなどXenの優位性はなくなってきた。 RT @moriyoshit: KVM と Xen って共存できる技術だと思うなあ。パフォーマンスはともかく、・・・

2010-06-07 14:59:43
Moriyoshi Koizumi @moriyoshit

なるほど、I/O 周りは Xen も qemu のものを使うようになったのですか。 RT @hasegaw: XenもKVMもI/Oまわりはqemuで一緒だしCPUの仮想化が充実してきたので準仮想化のパフォーマンスメリットなどXenの優位性はなくなってきた。

2010-06-07 15:02:13
Takeshi HASEGAWA @hasegaw

いや、2006年時点からずっとそうですよ。まだ実績的にXenが有利でしょうがKVMがペースが速いのは事実なのでどうなることやら RT @moriyoshit: なるほど、I/O 周りは Xen も qemu のものを使うようになったのですか。

2010-06-07 15:04:05
Takeshi HASEGAWA @hasegaw

インテルアーキテクチャの仮想化は「純仮想化カーネルとか作るよりも結局仮想PC/AT互換機で動かしておけばよくね?」って方向になっていてI/Oまわりを仮想化したり物理ハードウェアをゲストに見せる手法が一般的

2010-06-07 15:07:47
Takeshi HASEGAWA @hasegaw

デバイスI/Oの仮想化はXen, KVM, VirtualBoxなどどれも事実上qemuをforkした俺々版を使っている。ただCPUの自体の仮想化は割と各VMMごとに差がある感じかな。スケジューラ、タイミング問題などで特定ゲストがコケたり。

2010-06-07 15:09:48
Takeshi HASEGAWA @hasegaw

各VMMともI/O負荷の高いデバイスをハイパーコール経由でズルさせることでパフォーマンス確保しようとしているのは同じ。でもKVMはvirtio, Xenは自前のevent channel+ring buffer(XenBus), VBoxはVbox独自

2010-06-07 15:11:29
Takeshi HASEGAWA @hasegaw

VMM側でアレコレやった結果「やっぱPC/AT互換機用のカーネルで今までどおり割り込みでtick刻むのは無理だね。ゲストOS側でよきにはからっちゃえ」「デバイスドライバ最初から載せれば幸せ」が現在

2010-06-07 15:13:32
Takeshi HASEGAWA @hasegaw

そのうちにOSが物理ハードウェアを忘れる時がやってくるのだろうか。

2010-06-07 15:14:21
Takeshi HASEGAWA @hasegaw

@moriyoshit 正確に言えばWindowsが実行できるようになったXen 3.0からqemuの変形版"qemu-dm" (QEMU devicemodel) がはいっています。

2010-06-07 15:16:11
Takeshi HASEGAWA @hasegaw

おぬしが書いたOSべったりなC言語のプログラムだって広義の仮想マシン上で動いてるんだぜ RT @illness072: OSがハードウェアを忘れるためには、Cみたいにポインタを操れる言語があると困ると思うんだなー・・・なの

2010-06-07 15:18:24
ytakeda @ytakeda

そんな時が来たとして、物理ハードウェアを忘れたものを "OS" と呼んでよいのでしょうか.... QT @hasegaw そのうちにOSが物理ハードウェアを忘れる時がやってくるのだろうか。

2010-06-07 15:18:50
Takeshi HASEGAWA @hasegaw

幸せかもしれませんよ。もしかすると Windows, Linux, FreeBSD, Solaris などであらゆるデバイスドライバを共有できる世界。 RT @ytakeda: そんな時が来たとして、物理ハードウェアを忘れたものを "OS" と呼んでよいのでしょうか...

2010-06-07 15:20:09
Takeshi HASEGAWA @hasegaw

@illness072 よっぽど本気で物理メモリ意識してアクセスしていない限り、君が見ているメモリ空間はOSが物理メモリからコピーオンライトで借りてる仮想的なメモリ空間だぜ。同じプログラムを複数実行してデバッガにかければ各プロセスで同じアドレスに別々のインスタンスがいるはずだ

2010-06-07 15:21:10
Kunihiko Imai 💉💉💉+💉 @JR0BAK

Crusoe…(ぼそ)RT @hasegaw: おぬしが書いたOSべったりなC言語のプログラムだって広義の仮想マシン上で動いてるんだぜ RT @illness072: OSがハードウェアを忘れるためには、Cみたいにポインタを操れる言語があると困ると思うんだなー・・・なの

2010-06-07 15:21:18
ytakeda @ytakeda

そうなると、ハイパーバイザの選択に今の OS 選択と同じ悩みが待っていそうな気が.... QT @hasegaw 幸せかもしれませんよ。もしかすると Windows, Linux, FreeBSD, Solaris などであらゆるデバイスドライバを共有できる世界。

2010-06-07 15:22:32
Takeshi HASEGAWA @hasegaw

@illness072 PC/ATのVMware的な仮想マシンって、そういう386以後の基本的な仮想化機能を、メモリ管理だけじゃなくデバイスも対象に広げたもので、やっていることは1990年から変わっていないんだよ。実は。

2010-06-07 15:23:08
Takeshi HASEGAWA @hasegaw

@ytakeda そうですね。ちなみにIBMのpSeriesとかだと、HWにハイパーバイザーがのっててそもそもOSから直接ハードウェアが見えず、デバイスアクセス用の論理パーティーションにいるminiOS的な部分を通してI/Oします。つまりXenがとっているアプローチと大差ない。

2010-06-07 15:25:48
Takeshi HASEGAWA @hasegaw

x86系の仮想マシンに興味がある人は「はじめて読む486」は最低限読んでおくといいよ。これ読めば「あれ?もしかして俺でもVMware作れるんじゃね?」とか思い始めたりするはず

2010-06-07 15:26:59
Takeshi HASEGAWA @hasegaw

いまだってあるお RT @kaieu: なんか、WindowsNTがHALを持っていた頃を思い出した。

2010-06-07 15:27:42
Tomohiro NAKAGAWA @kaieu

そうだったっけ。じゃあやろうと思えばPPC版とかAlpha版とか出せるのかなw QT @hasegaw: いまだってあるお RT @kaieu: なんか、WindowsNTがHALを持っていた頃を思い出した。

2010-06-07 15:28:19
Takeshi HASEGAWA @hasegaw

色々つぶやいたけど私はコンピュータサイエンスを専攻したこととか一切無くて独学なので、ウソをついていたらごめんなさい。ウソに気づいた方、やんわり指摘していただければチョー感謝します。

2010-06-07 15:28:43
かわいい🐰ちゃん【公式】 @illness072

@hasegaw ローレベルの世界をまるで理解してなかったので、かなり目から鱗・・・なの

2010-06-07 15:29:04
ytakeda @ytakeda

おぉ、既にあるんですね!そうするとどこまでが OS (= リソースを管理するもの) になるんだろう...? QT @hasegaw @ytakeda そうですね。ちなみにIBMのpSeriesとかだと、HWにハイパーバイザーがのっててそもそもOSから直接ハードウェアが見えず...

2010-06-07 15:30:01
ARAKI Yasuhiro ☁ AWS Solution Architect @ar1

@hasegaw サイエンス的にはVMware創業のころに終了してるから全く問題ないとおもわれます(w

2010-06-07 15:35:22