俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #60 - PVからHVMへ?

あぁいけない、いけない。
台風一過でいい天気過ぎて忘れるところだったぜ、ブログ。

台風だけじゃないですね。
どんどん色々なことが過ぎ去っていきますが、
きっちり大事なものは残していきたいですね。
例えば、自分の部屋とかね!

さて、
今日はhvmとpv周りについて。
「EC2が最近続々出しているインスタンスはhvmになってるので、
旧来のpvインスタンスを利用している人はAMIすらも共有できませんよ。」
などという話が飛び交っている界隈の片隅で、 「え?なんのこと?」とガクブル震えているのが俺です。

何でも勉強しましょうね。
ちこっと仮想化について調べればすぐ分かることですが、
世の仮想化技術は大きくわけて2つあるようです。
ってか要は「コンピュータのなかでコンピュータを(ソフト的)に作る」ってことで、
俺のコンピュータ史でもそろそろ出てくる「エミュレータ」技術そのもののようです。
チューリングマシンチューリングマシンを作れるという、
そんな話ですね。

で、作り方にもお作法がございます。
ソフトは自己複製するかもしれませんが、ハードは自己複製しません。
3Dプリンタ?うるさいぞお前。
とにかくソフトがいくらコンピュータを複製したといってもハードはそうはいきません。
1つです。
だから物理マシン(ハード)へのアクセスという意味では、
玄関は1つです。
それをホストOSにするのか、ハイパーバイザというソフトにするのか、
それで世界がわかれます。
すっっごい雑に言うと、
MacOSからWin起動」するパターンと、
ブートローダ時点でMacかWinかOS選択」するパターンの2つです。

さて、前者はホストOS型、後者はハイパーバイザ型とか言うんですが、
一般的に(というかEC2は)、後者です。
そらそうですね。
サーバ利用するのに、なんでホストOSみたいな重たいホストがいるのかって話です。
ハードウェアとのやりとり、つまりカーネルの仕事は軽いレイヤに任せたいですしね。

で、ハイパーバイザ型はそれでいんですが、
実はそこにも2つタイプがあります。
準仮想化と、完全仮想化って奴です。

もう一々面倒なんで適当にいきますが、
準と完なんだから、微妙に仮想化したのか、マジで仮想化したのかの二択です。
じゃぁ仮想化ってなんだよハゲこのやろう!
コンピュータを仮想化するから仮想化なんだよ!
どこまで仮想化するんだよ!
ハードウェアもだよ!
えぇ!?ハードウェアは1つっていったじゃん!
そりゃ物理的には1つだよ!でもそれを仮想化するんだよ!
そういうことか!物理レイヤすらも仮想化しつくしたのが完全仮想化なのね!
そうさ!だから完全仮想化すると、本当に物理的にも1つのPCのように動くのよ!

え、マジで。すげぇな。
うん。すごいよね。物理デバイスがファイル化されるんだよ。
シェルでも標準入出力をファイルとして扱うけど、それに似た感じでぜーんぶファイル化するのよ。
だからスナップショットとれるのか。
すげぇなぁ。

ところで、

じゃぁ準仮想化ってなんだよ!
うるせぇ!適当に仮想化してるんだよ!
もっとちゃんと説明しろよ!
要は、ハードウェアまでは仮想化してないのよ。
ん?どゆこと?
いやだからハードウェアへのアクセスするカーネルは1つのソフトなのよ。
そのソフトを無理やり仮想化用に手を加えたのが準仮想化よ。
あぁ、物理レイヤまで仮想化してないのか。
うん。
で、完全にすると何が嬉しいの?
要は、物理レイヤを仮想化せずにゲストOS起動している状態って、
結構無理があるので完全にハードの力を使いこなせないことがあるのよ。
awsの場合は
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/virtualization_types.html
ここを読む限り、ネットワークとGPU処理のあたりみたいね。
とにかく、完全に仮想化に成功すれば、
物理レイヤをフル活用できるようになるから、安くて早くなるんだよ、って話みたいです。

途中から取り乱しましたが、
それはよく分からなくなってきたためだ。
よく分からないことが多々ありますが、
まぁ元気出して勉強していきましょうね。