仮想化とクラウドコンピューティングの普及により、物理マシンより仮想マシンを扱うことが多くなりました。そこで、仮想化環境上で動作するOSの特徴についても知っておく必要があります。

 マルチコアCPUやマルチCPU構成が当然になったため、CPUの能力を使い切るには、プログラムをマルチスレッド対応させるか、多数同時に動作させる必要がでてきました。しかし、マルチスレッド対応も、同時動作の保証も、プログラム作成の難易度を一気に高めます。また、マルチスレッド対応しても、サーバーの全コアで並列動作させるほどの性能要件がないこともあります。

 そこで、CPUを有効に使い切るための手段として、CPUを自由に仮想マシン(VM)に割り当てられる仮想化が普及しました。この数年注目を集めているコンテナーはVMとよく比較されますが、仮想化のレイヤーがハードウエアでないなどVMとは大きく異なります。両者の違いについて説明します。

仮想マシン(VM)方式の仮想化

 まずは、仮想化の代表であるVM(仮想マシン)方式の仮想化と特徴です。VMはハードウエアを模擬した環境をOSに提供するので、複数の異なるOSを同時に動作させることができます。このうち一つのOSがダウンしても、他のOSの動作には影響がありません。一方、仮想マシンには、仮想化のオーバヘッドがあります。仮想化のオーバヘッドは、ストレージI/OとネットワークI/Oに顕著です。逆に、CPUの命令を実行し続けI/Oをほとんど行わない処理は、オーバヘッドの影響を受けづらいです。したがって、I/Oへの性能要求が高いシステムを仮想マシンで動作させる場合、I/O性能に関して入念な検討が必要です。

 I/Oに仮想化ソフトウエアが介在する以上避けられないのですが、極力減らすための工夫はあります。その代表が準仮想化です。準仮想化は、特別なデバイスドライバをゲストOSに入れ、仮想マシンがハードウエアを模擬することなく、直接I/O対象のデータを送受することで、仮想化のオーバヘッドを大幅に削減します。仮想マシンのデバイスドライバの一覧表示や、デバイス情報でドライバを確認してVM対応のドライバがあれば、準仮想化を使用していることが分かります。

 準仮想化ドライバは仮想化基盤により異なり、デバイス名が変わるなどの影響があります。また、準仮想化だと、物理デバイスの動作誤差を利用した乱数生成機能が、誤差データが収集できないため十分に動作しないことがあります。これが原因で、物理サーバー向けの設定のままだと、暗号化や署名作成の処理がいつまでも終了しないことがあります。