インストラクター：仮想化を利用する際､
仮想マシンのインストールや設定を行う際には､ さまざまなリソース要件が存在することを理解することが重要です｡
必要なリソースに関しては､
私たちは主に4つの分野に重点を置いている｡
CPUとその仮想化拡張機能､ システムメモリ､
ストレージ､ ネットワーク｡
それぞれを見てみよう｡
まず､ CPUとその仮想化拡張機能である｡
さて､ CPUの話になると､
インテルやAMDなど各メーカーで仮想化技術が異なる｡
インテル・ベースのチップを使っているなら､
VT-x（仮想化技術､ VTの略）を探すことになるだろう｡
AMDプロセッサーを使っている場合､
AMDの仮想化拡張機能をAMD-Vと呼ぶ｡
ホスト型ハイパーバイザーを使おうが､
ベアメタル型ハイパーバイザーを使おうが､
仮想化をサポートするCPUがあれば､ どちらも大幅にパフォーマンスが向上する｡
現在､ 仮想化ソフトウェアによっては､
仮想化を使用するためにCPUが仮想化サポートを有効にしている必要はない｡
しかし､ プロセッサーの拡張機能として仮想化を有効にしていなければ､
パフォーマンスが著しく低下する｡
そして､ 実際に本番の仕事をするときには､ とても使えない仮想マシンを持つことになる｡
お使いのプロセッサーが仮想化をサポートしている場合､
そしてほとんどの最新プロセッサーがサポートしている場合､
BIOSまたはUEFIにアクセスして仮想化拡張機能を有効にする必要がある｡
通常､ VirtualBoxやVMwareなどで仮想マシンをインストールしようとしても､
仮想化が有効になっていることが検出されないと､
VT-xやAMD-Vを有効にする必要があるというエラーメッセージが表示される｡
この2つの仮想化技術の拡張に加えて､
SLATと呼ばれるものがある｡
これは､ 最近のプロセッサの多くに搭載されているプロセッサ機能で､
単一の物理ホスト上で複数の仮想マシンを実行している場合に､
仮想メモリのパフォーマンスを向上させるのに役立ちます｡
インテル・プロセッサーを使用している場合､
SLATはEPTと呼ばれる｡
AMDプロセッサーを使用している場合､ SLATはRVIと呼ばれ､
これはラピッド仮想化インデキシング（rapid virtualization
indexing）である｡
いずれにせよ､ SLAT､ EPT､ RVIという言葉を目にした場合､ 実際には､ より高速な方法で仮想メモリにアクセスし､
CPUからより良いパフォーマンスを引き出すことができる能力のことを指している｡
そして､ これらのエクステンションを使用するためには､
プロセッサーがサポートしている必要がある｡
さて､ プロセッサーやCPU内部の仮想化エクステンションについて話すだけでなく､
CPUそのものについても話したい｡
仮想化を扱う際に非常に高性能なマシンを使いたいのであれば､
マルチコア・ハイパースレッディングや複数の物理プロセッサをサポートするプロセッサをシステム上で探すことになるだろう｡
利用可能なコアが増えるということは､
処理能力が増えるということだ｡
マルチプロセッサーを搭載している場合､
そのマザーボードには2つ以上の物理プロセッサーが搭載されていることを意味します｡
しかし､ 自宅のデスクトップやノートパソコンでは､
マルチコアかハイパースレッディングのプロセッサーが仮想コアを提供していることが多い｡
また､ ゲストOSを実行する個々の仮想マシンにプロセッサを割り当てることで､
より多くの専用リソースを与え､
パフォーマンスを向上させることができる｡
さて､ CPUに関してもうひとつ補足しておくと､
CPUには3つの異なるメカニズムがある｡
1つ目は､ 昔ながらのx86だ｡
さて､ x86ベースのプロセッサーといえば､
実際には32ビットプロセッサーのことだ｡
そしてこれは､ 他のものを使用するシステムの能力が大幅に制限されることを意味する｡
なぜなら､ 32ビットのオペレーティング・システムを扱っている場合､
アクセスできるRAMは4ギガバイトに過ぎず､ 1台の物理サーバーで複数の仮想マシンをホスティングしようとすると､
非常に少ない量になってしまうからだ｡
その代わり､ x64ベース・プロセッサーを使う方がいい｡ このプロセッサーを使えば､
基本的なホスト・オペレーティング・システムが対応しているかどうかにもよるが､ 最大16エクサバイトのRAMにアクセスできる｡
4ギガバイトに対して16エクサバイトということは､
x64ベースのプロセッサーを使用している場合､ 40億倍以上のRAMを利用できることになる｡
64ビット・プロセッサーを使用している場合でも､
32ビット・プログラムと32ビット・オペレーティング・システムをゲスト・オペレーティング・システムとして物理サーバー上で実行することができます｡
しかし､ 本当の制限は､
32ビットプロセッサを使用している場合､
ゲストOSの仮想マシンとして64ビットアプリケーションや64ビットOSを実行できないことだ｡
だから､ やはりx64ベースのプロセッサーを使う方がいい｡
さて､ 3つ目のタイプのプロセッサーは､
ARMと呼ばれるものだ｡
そしてARMは､ コンピューター・プロセッサーのための縮小命令セット・コンピューター・アーキテクチャである｡
さて､ ARMプロセッサーは最近どこで見かけるようになったのだろうか？
最近のマックなら､ ARMプロセッサーを使っている｡
なぜなら､ MacBook Proや新しいiMACのように､
M1やM2プロセッサーを搭載した最新のシステムを使用している場合､
これらはすべてARMベースだからだ｡
また､ ARMベースであるため､
ARM上で動作していないゲストOSをネイティブにホストすることはできない｡
なぜなら､ 翻訳が必要だからだ｡
例えば､ M1やM1 Proプロセッサーを搭載したMacやMacBook
Proを購入した場合､ それはARMベースのプロセッサーです｡
また､ Windows 11やWindows
10をゲストOSにインストールしようとした場合､
x86やx64ベースのOSバージョンだと､ 実行できずにエラーが発生する｡
そのため､ さまざまな仮想マシンをホストする物理システムでARMベースのプロセッサーを使用している場合､
すべてのオペレーティング・システムにARMベースのバージョンがあるとは限らないため､ ゲストOSの選択肢が大幅に制限されることになる｡
本稿執筆時点では､ ウィンドウズ11は現在ARMベースのプロセッサ用のバージョンを作っており､
それらはそれらのARMチップ上で動作する｡
また､ ARMベースのLinuxバージョンもあり､
MacBookやその他のARMベースのプロセッサーで実行できる｡
ただ､ このことを指摘しておきたかっただけなんだ｡
さて､ リソースの面で2番目に説明しなければならないのは､
システムメモリだ｡
システム・メモリというのは､
ホスト・オペレーティング・システムとして動作する物理的なサーバーやワークステーションにインストールされている物理的なメモリ量のことです｡
例えば､ ノートパソコンに8ギガバイトのRAMしかなくて､
4つの異なるゲスト・オペレーティング・システムを走らせたい場合､ それぞれのオペレーティング・システムに2ギガバイトのRAMが必要なら､ すでに物理メモリを使い切ってしまっていて､
基盤となるホスト・オペレーティング・システムのためのメモリは残っていない｡
マックOSのようなものを使っている場合､
マックを起動して必要なことをするためには､
およそ8ギガバイトのメモリが必要になる｡
ウィンドウズ・マシンを使っている場合､
一般に､ ウィンドウズをホスト・オペレーティング・システムとして十分に稼働させるためには､ 約4ギガバイトが必要だ｡
つまり､ 8ギガバイトのメモリがあり､ ウィンドウズ10ホスト内でウィンドウズ11をゲストとして実行したい場合､
4ギガバイトに4ギガバイトを足した8ギガバイトのメモリが必要になる｡
ですから､ リソースについて話すときは､
ゲスト・オペレーティング・システムにどれだけのメモリを割り当てられるか､
物理メモリが多ければ多いほど､ より多くのことができるようになります｡
リソースの次に考慮すべきは､ ストレージだ｡
そして､ これらの仮想マシン・イメージをどこに保存するのかという話だ｡
ゲスト・オペレーティング・システムとともに作成する仮想マシンはすべて､
物理サーバーのディスク・スペースを占有することになる｡
つまり､ 256ギガバイトの容量しかないラップトップを持っていて､
そのシステムにウィンドウズ10のゲストOSをインストールしたい場合､ おそらく50ギガバイト程度の容量が必要になるだろう｡
つまり､ 1つの仮想マシン・イメージにハードディスク・ドライブ全体の5分の1を使ったことになる｡
そのコピーを3つも4つも持っていたら､
50の3倍から4倍､ 150ギガバイトから200ギガバイトになる｡
だから､ 大容量記憶装置は本当に注意しなければならないものになる｡
通常､ Windowsをインストールする場合､
素のWindowsインストールは約20ギガバイトの容量を必要とするが､ そこにファイルを保存したり､
アプリケーションをインストールしたりする場合は､ さらに容量が必要になるため､
40ギガバイトか50ギガバイトの容量を使いたい｡
Linuxを使うなら､ 一般的に､
より軽量で､ ほとんどのディストロは4〜8ギガバイトのスペースにインストールでき､ ウィンドウズよりかなり少ない｡
ゲスト・オペレーティング・システムとしてマック環境を扱っている場合､
これも通常､ 20～40ギガバイト相当の容量を消費する｡
物理デバイスのディスク容量が非常に限られている場合は､
それをアップグレードしてストレージ容量を増やした方がよいでしょう｡
そうすれば､ 同じ物理サーバー上でより多くのゲストOSをホストすることができる｡
そして最後に考えなければならないのは､ ネットワークだ｡
これは､ ホスト・オペレーティング・システム上で動作するハイパーバイザーが､
そのシステム上でホストされている他のすべての仮想マシンが通信するための仮想ネットワーク環境を構築するためだ｡
しかし､ インターネットやローカル・エリア・ネットワークに接続してファイルをダウンロードする場合は､
物理的なデバイス上の同じネットワーク・インターフェース・カードを通して行うことになる｡
つまり､ 毎秒100メガビットしか動作しない古いネットワーキング・カードを使用していて､
そのサーバー上で5台の仮想マシンを稼働させている場合､
各仮想マシンは実質的に毎秒20メガビットしか動作していないことになる｡
この場合､ ゲストをホストしている物理サーバーのネットワーク・インターフェイス・カードをアップグレードして､
ギガビット・ネットワーキング・カード､
あるいは複数の仮想マシンをホストしている場合は10ギガビット・ネットワーキング・カードを入れることをお勧めします｡
これにより､ ネットワークがスローダウンすることなく､
すべての仮想マシンをホストすることができるように､
追加のスループットと帯域幅を持つことができます｡
これに加えて､ この後のネットワーク学習で学ぶことになるが､
複数のネットワーク・インターフェース・カードを入れて､
いわゆるチーミング構成にすることもできる｡
これにより､ 複数のカードが連動して動作し､
より高速な通信が可能になる｡
つまり､ 1ギガビットのネットワーキング・カードが2枚あり､
それらがチームで動作している場合､
ネットワークに接続するために使用できるスループットは2ギガビットになる｡
多くの場合､ 企業やエンタープライズ環境で多数の仮想マシンをホストするサーバーで作業していると､
最大4枚のネットワーク・インターフェース・カードがあり､ すべてのカードがチームで動作するため､ 最大で毎秒4ギガビット､
あるいは最大で毎秒40ギガビットになります｡
そのサーバーで毎秒10ギガビットのネットワーク・インターフェース・カードを使用している場合｡
だから､ リソース要件に関しては､ CPUやプロセッサーとその能力､
メモリの量､ ストレージの量､ ネットワークの量を考慮することが重要だということを覚えておいてほしい｡
これら4つの分野は､ すべてあなたが考慮したい分野である｡
特定のサーバーやワークステーションでホストできる仮想マシンの数や､
特定のハイパーバイザー上で仮想マシン内で実行されるゲストOSのパフォーマンスを向上させる方法を決定しているときだ｡