仮想化が世の中を動かしている?
まだ2日目だけど、仮想化の勉強をし始めて、やべえっと焦りを覚えている。何か仮想化がハードウェアアーキテクチャのあり方を変えようとしていると感じたからである。本当はちゃんと勉強してからの方がいいのだが、とりあえずx86ベースにメモランダムに書きだしてみよう。
CPU
Intelは、仮想化用にVMX rootモードとnon rootモードの2つのモードをサポート。rootモードはVMM(Virtual Machine Monitor)が動作する際のモードで通常のモードに加えてVMX命令がある。non rootモードはVM(Virtual Machine)やVM上のゲストOSが動作する際のモードで特定の命令やイベントを契機にrootモードに状態遷移する。(特権命令、割り込み処理、ページテーブル仮想化、I/Oデバイスの仮想化)つまり仮想化特別の保護モードだ。
メモリ
仮想メモリアドレスから物理メモリアドレスの変換も2段階になる。VM、ゲストOS上の仮想メモリアドレスは一旦ゲストOSの物理アドレスに変換してから、さらにホストOSの物理アドレスに変換されなければならない。これをやるのがEPT(Extended Page Tables)というIntelの拡張機能だ。
I/O
例えばSR-IOV(Single Root I/O Virtualization)の機能。これまではVMのI/O要求はハイパーバイザー側がまとめてストレージにI/O要求を出していたが、SR-IOVは要求をまとめる処理をPCIデバイス側で行うというもの。処理をハードウェア側で行うため、VMからハイパーバイザーを経由せずに直接I/O要求できるようになる。これは、PCIバス規格になったものだ。
ネットワーク
例えばVLAN(Virtual LAN)の機能。これは物理的な接続形態とは独立して仮想的なLANセグメントを作る。これにより、スイッチをまたがって、ブロードキャストドメインの分割を行うことができる。
もう一つ、OpenFlowプロトコル。このプロトコルの最大の特徴は経路制御とパケット転送を分離したこと。専用コントローラが経路制御を行い、スイッチ側のパケット転送を一元的に制御するという中央集権型のプロトコル。VLANを支えるプロトコルだ。
ストレージ
かつてメモリの階層はあった。キャッシュという概念だ。この階層型モデルが今ストレージにも適用され性能向上がはかられているらしい。速い順に、SSD(Solid State Drive)、SAS(Serial Attached SCSI)、SATA(Serial ATA)または低速SASってな感じ。
このように仮想化を軸に、今はさらに進化したハードウジェア技術や規格が現在進行形で出ていることだろう。これら全ては仮想化を進化させるべく出現、発展した技術なのである。仮想化おそるべしだ。
でもサポート大変そう。。。カカ。。。