Linuxに関する EC2 AMI タイプである「準仮想化」と「完全仮想化」の違いに関して説明します。
主な違いは以下の2点です。
・性能向上のためのハードウェア拡張機能(CPU、ネットワーク、ストレージ)
・ブート(起動)方式
以前のAWSではPVはネットワークI/OやディスクI/Oで特別なドライバを使用するため、HVMよりも高性能でした。しかしこれらのドライバが "PV on HVM" として HVM でも使用可能となったため、HVMでもPVと同等あるいはそれ以上の性能が可能となりました。
参考:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/virtualization_types.html
比較は以下の表の通りとなります。
比較表 | 準仮想化(paravirtual,PV) | 完全仮想化(Hardware-assisted VM,HVM) |
概要 | ・ネットワークI/OやディスクI/Oをエミュレーションするのではなく特別なドライバで直接操作することにより高速化を実現。 | ・物理マシン用のOSイメージがそのまま動作する。 ・PV on HVM として PV と同等以上の性能が可能。 (*)現行ではとくに理由がない限りこちらが使用される。 |
性能のためのハードウェア拡張機能 | × | 〇(利用可能) ・Intel Virtualization Technology ・拡張ネットワーキング、GPU |
性能 | 中(以前はHVMに対して優位であったが、今は優位性はなし。) | 拡張機能により性能が向上する可能性あり |
サポート | EC2の初期は linux は PV のみサポートされていた。 | 原則としてEC2インスタンスは HVM がサポートされている。 |
起動 | PV-Grubを使用して起動。 | 物理サーバにインストールしたときと同じ起動方式。 |