あるプログラマさんが俺好みの文章を書く人で、昔から俺はその人のブログを読んでいるんだけど、プログラミングの話をしばしば書くので俺にはよくわからなかったりするんだよね。なかでもよくわからなかったのが「仮想化」というワードだった。意味がわからん。そんなわけでちと仮想化とやらについて本を読んでみた。結局、仮想化ってのは別にプログラミングの用語じゃなかったことがわかった。(ズコー


サマリーを書く。正味、なんとなく仮想化の概念について認識できた程度なので理解の間違ってる箇所があるかもしれんことを断っておく。

仮想化ってなんぞ?
複数の物理リソースをひとつのものとみなして効率よく使う技術のこと。物理リソースってのはサーバとかOSとかストレージのことね。
サーバの仮想化ってなんぞ?
複数のサーバ内で無駄になっているリソースを分割して使うこと。つまりひとつのサーバの中にOSと、それ用のメモリを確保しておき、物理的にはひとつのPCの中で複数のOSが動けるようにしているものだ。
俺はルームメイト3人で暮らしているけれど、それぞれひとりで暮らしていたらそれぞれ家賃は結構かかるし、冷蔵庫も使わないスペースが出てきたり、掃除用具は3人ぶん必要だったりする。しかしひとつの家に住めば、そういった無駄が是正されるという塩梅だ。物理的なマシンがそれぞれの家で、ルームメイトがユーザ、家事用品がリソースになる。俺はそういう風に理解した。
それで何がオイシイのさ?
複数のOSが必要な作業をする際には個別にマシンを買うコストが省ける。また、大昔のOSにしか対応していないシステムやアプリケーションを動かしたいとき、すでにマシンが起動不可能ってことがありうる。そんなときは仮想サーバ上にそのOSを用意すればいいってわけだ。こういうのをレガシーマイグレーションという。
実際にどういう方法が?
ホストOS型とハイパーバイザー型がある。
ホストOS型ってなんぞ?
サーバマシンにまず普通にOSを入れて、その上で仮想マシンを動かす方法。たとえばエミュレータソフトを使えばPC上でスーパーファミコンができるよな。仮想という言葉をつかうならば、それは仮想スーパーファミコンということになる。この方法はエミュレータだから重くなる。
ハイパーバイザー型ってなんぞ?
OSのかわりにハイパーバイザーなるソフトを最初に入れて、その上で仮想マシンを動かす。こっちがサーバ仮想化の主流。完全仮想化と準仮想化に分かれる。
完全仮想化ってなんぞ?
よくわからなかったのだけれど、結局はこれもエミュレータ。ゲストOSに合わせてハードウェアの動きをエミュレートしてるって感じだろうか。重くなる。なおゲストOSってのは仮想マシンとして動いているOSのことだ。
準仮想化ってなんぞ?
ゲストOSの命令をハイパーバイザーが分析してハードウェアを操作するタイプ。現在完全仮想化よりもこちらのほうが優勢だが、将来的に両者の差はなくなっていくと筆者は予想している。
ところで、そもそもOSってなんぞ?
プロセスを同時に実行したりするために、プログラムの実行環境を管理するソフトウェアのこと。そもそもコンピュータ(というかCPU)は一度にひとつの作業しかできない。しかし、俺らが「これとこれを同時に起動したい」などとのたまうので、超高速で複数の作業をとっかえひっかえ行って同時に起動しているように見せているのが今のコンピュータだ。これがOSのマルチプロセスシステムであり、複数のプロセスにリソースを割り当て実行スケジュールを管理する仕組みである。
なおこのプロセス遷移のシステムはラウンドロビン方式で行われている。ラウンドロビン方式というのは「1.待機中、2.実行中、3.次の待機プロセスにCPUを譲る」という並び直しを繰り返すシステムのことだ。この方式はネットワークでサーバの状態に応じリクエストを振り分けるロードバランサーもまた採用している。もちろんユーザがマウスを動かしたりキーボードをいじったりすれば、それは即時処理要求として対応される。このシステムはインタラプトシステムという。
ネットワーク仮想化ってなんぞや?
物理的な配線とか機器はそのままにして、仮想環境上でそれらを操作すること。
ストレージ仮想化ってのは?
やってることはサーバ仮想化と同じ。普通のマシンには直接接続されたストレージであるDASがくっついているが、これはオーバープロビジョニングをしがちだ。だから複数のDASをネットワークでつないで共有プール化し融通きかせて使おうやってこと。
プロビジョニングってのは?
それぞれのストレージが将来使うかもしれないと予測を立てある程度の容量を保持しておく仕組みのこと。
仮想化がもたらす影響は?
情報社会のユビキタス化が予測される。アプリケーションの動作はすべてサーバで行われ、ユーザ側にはビューワーとしてのシンクライアント端末だけがあればいいという状態だ。こうなればもはやインストールという作業すら必要なくなるだろう。先駆けはすでにSaaS型のクラウドサービスで実現している。


これ以外にも仮想化関連のキーワードなどが細々と解説されており俺はそういうところのほうがむしろ楽しめた感じがあるのだけど、長くなってしまうので大筋だけにとどめておいた。ひとつ挙げてみるとマルチテナントって概念が面白かったかな。これは複数のユーザがひとつのサーバやデータベースを共有するというものだが、各人がメタデータでカスタマイズも可能というのが面白い。間違ってたら赤っ恥なんだけど、えーと、マインクラフトをそれぞれのプレイヤーが異なるMODで遊ぶようなものだろ? だとすればメインのデータはできるかぎりシンプルなものであるべきで、俺はそういう「とことんシンプルな味付けに仕上げました。調味料はお前らが好きに入れろよ」みたいな視点が非常に好みなのだ。


  1. http://www.pandorajewelryrings.us.com/ pandora charms
    http://www.jordans11shoes.us.com/ jordan 5
    http://www.airmax90shoes.us.com/ nike air vapormax
    http://www.pandora-jewelrysale.us.com/ pandora jewelry official site
    http://www.katespadepurses.us.com/ kate spade outlet
    http://www.yeezyboost350shoes.us.com/ yeezy boost 350 v2
    http://www.pumafentyrihannashoes.us.com/ puma shoes
    http://www.curry4-shoes.us.com/ under armour stephen curry boys
    http://www.kyrie-4.us.com/ kyrie irving
    http://www.nikeairvapormaxflyknit.us.com/ nike vapor max
    http://www.nikeairmax-90.us.com/ nike air force
    http://www.adidas-ultraboost.us.com/ ultra boost mens
    http://www.fitflops-sale.us.com/ fit flops
    http://www.hermesbirkin-handbags.us.com/ hermes birkin bag
    http://www.jordan11spacejams.us.com/ jordan 1
    http://www.longchampbag.us.com/ longchamp le pliage
    http://www.birkenstocksandalssale.us.com/ birkenstock sale
    http://www.pandorajewelryscharms.us.com/ pandora jewelry
    http://www.kd10-shoes.us.com/ kd 9
    http://www.salomonspeedcross3.us.com/ salomon speedcross 3
    http://www.fitflopsshoes.us.com/ fitflop shoes
    http://www.louboutinredbottoms.us.com/ christian louboutin sneakers
    http://www.lebron15-shoes.us.com/ lebron 9
    http://www.adidasnmdrunnerr1.us.com/ adidas yeezy
    http://www.adidasyeezy-350.us.com/ adidas boost
    ドリフトliuyuzhen