【VMWare ESXi】図解 ハイパーバイザの概要

この記事では、VMware ESXi を導入するうえで基本となる、仮想マシンとハイパーバイザの考え方を図で整理します。

この記事でわかること
  1. ハイパーバイザ(ESXi)の役割と、仮想マシンのしくみ
  2. CPU・メモリの割り当てとオーバーコミット
  3. ディスクとネットワークの割り当て

仮想マシンを使わない通常の物理サーバでは、基本的に CPU、メモリ、ディスクといった物理リソースを、1つの OS がすべて占有します。

OS(1つ)物理サーバ(ハードウェア)CPUメモリディスク・NICすべて占有
図1 物理サーバでは、1つの OS がリソースを占有する

1つの OS が占有するので、物理リソースを効率よく使えません。そこで、複数の OS で物理リソースを共有できるようにしたのが仮想マシンです。

仮想マシンは自分の OS を持ち、その OS からは、あたかも物理サーバの上で動いているように見えます。

ハイパーバイザ(VMware ESXi)

仮想マシンは、物理サーバにハイパーバイザをインストールして、その上に作ります。VMware ESXi は、OS を介さずに物理サーバへ直接インストールするタイプ(ベアメタル型)のハイパーバイザです。

ハイパーバイザは、仮想マシンと物理リソースの間に入り、物理リソースを抽象化して隠します。ハイパーバイザ上で動く仮想マシンの OS をゲスト OS と呼びます。ゲスト OS から物理リソースへのアクセスは、ハイパーバイザを経由します。

仮想マシンゲスト OSハイパーバイザ(ESXi)物理サーバ(ハードウェア)CPUメモリディスク・NIC
図2 ハイパーバイザが仮想マシンと物理リソースの間に入る

こうして、ハイパーバイザはゲスト OS に、物理リソースを仮想化して提供します。ゲスト OS は、自分が仮想マシンで動いていることを意識しません。物理サーバのときと同じように、仮想化されたリソースを自分が占有できるリソースとして扱います。

VM1ゲスト OSvCPU 4・8GBVM2ゲスト OSvCPU 8・16GBVM3ゲスト OS…ハイパーバイザ(ESXi)物理サーバ(ハードウェア)CPUメモリディスク・NIC複数の仮想マシンで物理リソースを共有する
図3 複数の仮想マシンが物理リソースを共有する

仮想マシンは専用の物理リソースを持っていませんが、ゲスト OS はそれを知らないので、多くの仮想マシンを1台の物理サーバ上で一緒に動かせます。このように、複数の仮想マシンで物理リソース(CPU、メモリ、ネットワーク、ストレージ)を共有できるのが、仮想化のメリットです。

たとえば、1台目の仮想マシン(VM)には vCPU 4つとメモリ 8GB、2台目には vCPU 8つとメモリ 16GB のようにリソースを割り当て、仮想マシンと物理リソースの間にいるハイパーバイザがこれらを制御します。

なお、VMware ESXi をインストールした物理サーバは、よく ESXi ホストと呼ばれます。

リソース割り当て

では、ESXi が物理リソースをどのようにゲスト OS に割り当てるのかを見ていきます。

CPU/メモリの割り当て

物理的な CPU(ソケット)の中には、複数のコアがあります。コアの数だけ、処理を同時に並行して実行できます。1つの CPU にコアが2つある場合はデュアルコア、4つある場合はクアッドコアといい、それより多いものもあります。

仮想マシンには、仮想 CPU(vCPU)をいくつ持たせるかを割り当てます。vCPU は特定のコアに固定されるわけではなく、ESXi の CPU スケジューラが、そのとき空いている物理 CPU(コア)で動かします。

たとえば、ESXi ホストで CPU のコアが4つ使える状態で、2台の仮想マシン(VM1、VM2)がある場合、1台につき vCPU を2つずつ割り当てられます。

VM1vCPUvCPUVM2vCPUvCPUESXi の CPU スケジューラ(vCPU を空いているコアで動かす)物理 CPU(4コア)コア1コア2コア3コア4合計 4 vCPU = 4 コア
図4 vCPU を2つずつ割り当て、ESXi が空いているコアで動かす

同じ条件で、VM1、VM2 に vCPU を4つずつ割り当てることもできます。仮想マシンに割り当てた vCPU の合計が物理コアの数を超える状態を、オーバーコミットといいます。複数の仮想マシンが同時に CPU を使い切ることは少ないので、オーバーコミットによって、必要な物理 CPU を減らせます。

VM1vCPUvCPUvCPUvCPUVM2vCPUvCPUvCPUvCPUESXi の CPU スケジューラ(vCPU を空いているコアで動かす)物理 CPU(4コア)コア1コア2コア3コア4合計 8 vCPU > 4 コア(オーバーコミット)
図5 vCPU の合計がコア数を超えるオーバーコミット

ただし、オーバーコミットしすぎると、vCPU がコアの空きを待つ時間が増え、性能に影響が出ることがあるので注意が必要です。

メモリも CPU と同じように、ESXi ホストのメモリを仮想マシンに割り当てます。

たとえば、ESXi ホストで 24GB が使えて、2台の仮想マシン(VM1、VM2)がある場合、それぞれに 8GB、16GB のように割り当てられます。

ESXi ホストのメモリ 24GBVM1:8GBVM2:16GBVM1 を 16GB にすると合計 32GB > 24GB(オーバーコミット)
図6 24GB のメモリを VM1 に 8GB、VM2 に 16GB 割り当てる

合計が 24GB を超えるように割り当てる(たとえば VM1 を 16GB にする)オーバーコミットもできます。仮想マシンは割り当てたメモリをいつも全部使っているわけではないためです。ESXi はページ共有、バルーニング、圧縮、スワップといった方法でメモリをやりくりしますが、ディスクへのスワップが起きると性能への影響が大きいため、メモリのオーバーコミットは十分に注意して設定してください。

ディスク(ストレージ)の割り当て

仮想マシンは、ハイパーバイザを通してストレージにアクセスできる必要があります。

たとえば、ESXi が読み書きできる VMFS(vSphere Virtual Machine File System)でフォーマットしたデータストア(仮想マシンのファイルを置く領域)を作り、仮想マシンは自分の仮想ストレージアダプタから、データストア内の仮想ディスクにアクセスします。

仮想マシンゲスト OS仮想ストレージアダプタESXiデータストア(VMFS)仮想ディスク
図7 仮想ストレージアダプタから、データストア内の仮想ディスクにアクセスする

仮想マシンには、このデータストアの容量からディスクを割り当てます。次の記事も参考にしてください。

>> 参考記事:【VMware ESXi】図解 仮想ストレージ(仮想ディスク、データストア)の概要

ネットワーク(NIC)の割り当て

仮想マシンは、ネットワークを通して、ほかの機器(ESXi ホストの外部を含む)とつながる必要があります。ハイパーバイザはネットワークも仮想化して、仮想マシンに提供します。

仮想マシンには仮想ネットワークインタフェースカード(vNIC)が割り当てられ、ハイパーバイザが提供する仮想スイッチに接続されます。

仮想スイッチは、ESXi ホストの外部ともつながれるように、ホストの物理 NIC(vmnic)をアップリンクとして持ちます。

仮想マシンゲスト OSvNIC仮想スイッチアップリンク(vmnic)物理スイッチESXi が提供
図8 vNIC は仮想スイッチにつながり、アップリンクの物理 NIC から外部へ

次の記事も参考にしてください。

>> 参考記事:【VMware ESXi】図解 仮想ネットワーク・仮想スイッチの概要

まとめ

項目ポイント
ハイパーバイザ仮想マシンと物理リソースの間に入り、リソースを仮想化して提供する。ESXi はベアメタル型
CPUvCPU の数を割り当て、ESXi のスケジューラが空いているコアで動かす
メモリホストのメモリを割り当てる。オーバーコミットはできるが、スワップに注意
ディスクデータストア(VMFS)内の仮想ディスクを割り当てる
ネットワークvNIC を仮想スイッチにつなぎ、アップリンク(vmnic)から外部へ

コメント