Oracle製品を仮想サーバー環境で利用するときには悩ましい問題があります。それは、仮想サーバーに割り当てたCPUコア数ではなく、ベースとなる物理サーバーのCPUコア数がライセンスカウントの対象となることです。また、vMotionなどの仮想化テクノロジーの発展によって、さらに事情は複雑化しています。
そこで今回は「仮想サーバー環境におけるOracleライセンスの考え方」と「仮想サーバー環境でもライセンスを削減できるOracle Linux KVM」について説明します。なお、今回の内容はオンプレミスを対象としたもので、パブリッククラウドの仮想サーバーは当てはまりません。
仮想サーバー環境におけるOracleライセンスの考え方
仮想サーバー環境におけるライセンスの基本
まず、仮想サーバー環境におけるOracleライセンスの基本を説明します。日本オラクル社のWebページに掲載されている次のFAQを見てみましょう。
サーバー仮想化ソフトウェア( Oracle VM 、VMware、Hyper-Vなど)を使用した場合のライセンスカウントはどのようになりますか?
VMware、Hyper-VなどはSoft Partitioningの分類となり、Oracle製品がインストールされる(又は稼働する)物理サーバーに搭載されている全ての物理プロセッサがライセンスカウントの対象となります。
※Oracle製品がインストールされる(又は稼働する)仮想マシン(VM)の数は、必要ライセンス数には関係ありません。
Soft Partitioningという用語が登場していますが、いったん無視して、あとで説明します。簡単に言うと、次の図のように仮想マシン(VM)でOracle製品を使用するときは、ライセンスの対象になるのは物理サーバーに搭載されているプロセッサになることです。
たとえば、8コアのCPUを2つ搭載しているx86サーバーがあります。仮想マシン(VM)には2コアを割り当て、ここでOracle Databaseを使用します。このとき課金対象となるのはx86の物理サーバーです。そのため必要なライセンスは以下のとおりです。
8コアCPU×2=16コア
16コア×コア計数0.5=8
Oracle Database Enterprise Editionの場合、8 Processorライセンス必要です。
Oracle Database Standard Edition 2はコア数を考慮しないので、2 Processorライセンス必要です。
ヒント:Oracle EEとOracle SE2のライセンスの違い
本題ではないので詳しく説明しませんが、Oracle Databaseの2つのエディション「EE」と「SE2」のライセンスの違いを説明したのが次の表です。もっとも大きな違いは、EEはコア数でライセンスをカウントするのに対し、SE2はプロセッサ数でカウントしています。今後はEEだけを取り上げます。
製品 | ライセンス種別 | ライセンスカウント単位 |
---|---|---|
Oracle Database Enterprise Edition(EE) | Processor, Named User Plus | コア数 |
Oracle Database Standard Edition 2(SE2) | Processor, Named User Plus | プロセッサ数(最大2) |
ヒント:CPUコアとスレッド
Oracleライセンスにおけるコアは「物理コア」のことを指します。Intel社のHyper-ThreadingなどによるSMT(Simultaneous Multi-Threading)テクノロジーによって1つのCPUコアを複数に見せる「スレッド(=論理コア)」ではありません。
たとえばIntel Xeon Platinum 8362のコア数は32です。Hyper-Threadingを有効にすると64スレッドになります。オペレーティングシステムから見たとき、64個のCPUがあるように見えます。しかし、Oracleのライセンスでカウントするのはスレッドではなくコアなので32になります。
32コア×コア計数0.5=16 Processorライセンスが必要
複数サーバー構成の仮想サーバー環境における考え方
下図のような、複数の物理サーバーで構成される仮想サーバー環境を考えます。ライブマイグレーションなどが使えるので、商用環境ではもっとも一般的な使用方法でしょう。
このような環境では、クラスタを構成するすべての物理サーバーがOracleライセンスの課金対象になります。なぜならばライブマイグレーションを使えば、仮想マシンが他のサーバーでも稼働する可能性があるからです。
つまり、Oracle製品をインストールしているサーバーだけでなく、Oracle製品が稼働もしくは稼働する可能性のあるサーバーも対象になるのです。
先ほどと同じスペックのサーバーの場合、必要なライセンスは以下のとおりです。
(8コアCPU×2)×2台=32コア
32コア×コア計数0.5=16
Oracle Database Enterprise Editionの場合、16 Processorライセンス必要です。
さらに問題を複雑化しているのは仮想化テクノロジーの進化です。たとえば、VMware vSphere 6.0以降ではクラスタ越えのライブマイグレーションが可能になりました。つまり、他のvCenterが管理するホスト物理サーバーにもライブマイグレーションできるようになったのです。
ライセンスの対象となるのは「Oracle製品が稼働もしくは稼働する可能性のあるサーバー」です。そのため、ライブマイグレーションだけでなく、仮想マシンを一度停止して移行するコールドマイグレーションも含まれます。その結果、ネットワークで相互に接続している、VMwareなどが導入済みのすべてのホスト物理サーバーが対象になります。これでは大量のOracleライセンスが必要になってしまいます。
そのため、特定サーバーにOracleライセンスを制限したいときは、下図のように物理的なネットワークを分割してライブ/コールドマイグレーションできないようにします。この場合にはライセンスの対象になるのは、1台の物理サーバーだけです。
仮想サーバー環境におけるOracleライセンスまとめ
- 仮想サーバー環境では、基盤となる物理サーバーがライセンス課金の対象になる
- 複数の物理サーバーで構成される仮想サーバー環境では、ライブ/コールドマイグレーション可能なすべてのサーバーがライセンス課金の対象になる
Partitioning Policyを理解する
仮想化環境で重要なPartitioning Policyを説明します。「Partitioning」とは、1つの物理サーバーのCPUを分割し、複数の独立したサーバーとして利用する技術です。元々はメインフレームで登場したテクノロジーです。その後UNIXサーバーに広がり、現在のVMwareなどもその一つに位置づけられます。なお、1つのテーブルを複数に分割するPartitioning Optionとは、まったく関係ありません。
Soft PartitioningとHard Partitioning
Oracle社ではPartitioning Policyについて以下のドキュメントを公開しています。2022年12月時点では、英語版のほうが少し新しく、コンテナやKubernetesのことが追記されています。
上記ドキュメントでは、Partitioningの種類として以下の3つを紹介しています。Oracle Trusted Partitionは、Oracle ExadataやOracle Private Cloud Applianceなどのエンジニアド・システム(アプライアンス製品)に関するものです。そのためSoft PartitioningとHard Partitioningについて説明します。
- Soft Partitioning
- Hard Partitioning
- Oracle Trusted Partition
Oracle Partitioning Policyのドキュメントは非常に重要です。仮想化テクノロジーをSoft、Hardに分類し、それによってOracleライセンス数を制限する手段として認めるか明確にするものだからです。Oracle社では、次のようにPartitioningテクノロジーを定めています。ライセンスを制限する手段として認めているのはHard Partitioningだけです。
Soft Partitioning
Solaris 9 Resource Containers, AIX Workload
Manager, HP Process Resource Manager, Affinity Management, Oracle VM, VMwareなど
Hard Partitioning
Physical Domains, Solaris Zones, IBM LPAR, IBM Micro-Partitions, vPar, nPar, Integrity Virtual Machine, Secure Resource Partitions, Fujitsu PPARなど
Hard Partitioningとして認められているテクノロジーを使用しているときは、下図のように物理サーバーではなく、分割した環境に割り当てたCPUコア数だけをカウントできます。ただし、Hard Partitioningのリストを見てもわかるように、昔のハイエンドUNIXサーバーのテクノロジーが多く、現在はマイナーなものがほとんどです。
ライブ/コールドマイグレーションを禁止しても全サーバーがカウントされる理由
先ほど以下のように書きました。
複数の物理サーバーで構成される仮想サーバー環境では、ライブ/コールドマイグレーション可能なすべてのサーバーがライセンス課金の対象になる
VMwareなどでは、ライブ/コールドマイグレーションを禁止する機能もあります。それらの機能を使ってもHard Partitioningのようにライセンスを限定できないのでしょうか? これらの機能でライセンスは限定できません。
なぜならば、VMwareやHyper-Vなどx86サーバー上のほとんどの仮想化テクノロジーはSoft Partitioningとして認定されているためです。ライセンスを制限するには、Hard Partitioningとして認定されたテクノロジーが必要です。
そのため複数の物理サーバーで構成される仮想サーバー環境でライセンスを制限するには、サーバーやストレージをネットワーク的に分断して、Oracle製品が稼働もしくは稼働する可能性のあるサーバーを限定する必要があるのです。
Hard Partitioningにおける例外事項
現在主流のSoft Partitioningテクノロジーでは、Oracleライセンスを制限できないことがわかりました。それでは、物理サーバーに搭載しているCPUコア数を制限し、Oracleのライセンスを削減する方法はないのでしょうか。それには以下の方法があります。
- Oracle Linux KVMなどのHard Partitioningとして認められているテクノロジーを使用する
- Oracle Trusted Partitionとして認められているOracle ExadataやOracle Private Cloud Applianceなどのエンジニアド・システムを使用する
- Oracle ExadataやOracle Database ApplianceでCapacity-on-Demand(CoD)を利用する
ここで紹介したいのはOracle Linux KVMを使用する方法です。Oracle Partitioning Policyにも、例外として以下のように書かれています。なお、Oracle VM Serverはサポート終了期限が近いので非推奨です(Premier Support終了:2021年3月、Extended Support終了:2024年6月)。
- Oracle Linux KVM。以下の文書で、特定のコアが割り当てられている場合
http://www.oracle.com/a/ocom/docs/linux/ol-kvm-hard-partitioning.pdf - Oracle VM Server for x86。以下の文書で、特定のコアが割り当てられている場合
http://www.oracle.com/technetwork/server-storage/vm/ovm-hardpart-168217.pdf - Oracle VM Server for SPARC。以下の文書で、特定のコアが割り当てられている場合
http://www.oracle.com/technetwork/server-storage/vm/ovm-sparc-hard-partitioning-1403135.pdf
重要なのは「以下の文書で、特定のコアが割り当てられている場合」という文言です。Hard Partitioningと認められるには、次の2つの条件を両方満たす必要があります。Oracle Linux KVMだけでは要件を満たせません。
- Oracle Linux KVMを使用している
- 文書で紹介している方法で利用するコア制限している
ヒント:Kubernetesなどのコンテナにおける考え方
現在はDockerコンテナやKubernetesもよく使われています。Oracle Partitioning Policy(英語版)では、Kubernetesなどのコンテナにも言及しています。基本的にはSoft Partitioningの一つです。そのためKubernetesクラスタを構成する、すべてのノードのCPUはOracleライセンスの対象となります。
ただし、ノードセレクターを使用することで、特定ノードにライセンスを制限できます。詳しい手順は以下のドキュメントをご覧ください。
Running and Licensing Oracle Programs in Containers and Kubernetes
Oracle Linux KVMとコアの割り当て
Oracle Linux KVMとは
Oracle Linux KVMは、Oracle Linuxカーネルに組み込まれたKVMをHyperVisorとして使用する仮想化方式です。RHCKとUEKの両方に組み込まれています。Oracle Linux KVMという製品はなく、Oracle Linux 7やOracle Linux 8、Oracle Linux 9に仮想化を支援するパッケージを組み込むことで実現します。
詳しいセットアップ方法は次のマニュアルをご覧ください。またVMware vCenterに相当する管理ツールOracle Linux Virtualization Managerもあります。
仮想マシンへのコアの割り当て
Oracle Linux KVMを使うだけではHard Partitioningの要件を満たせません。要件を満たすには、ピニング(pinning)という手法を使って、対象の仮想マシンに特定コアを割り当てる必要があります。特定のコアを割り当てるには、olvm-vmcontrolコマンドもしくはOracle Linux Virtualization Managerを使います。
ただし、仮想に特定コアを割り当てたときの制限事項として、その仮想マシンはライブ/コールドマイグレーションの対象外になります。重要なことなので覚えておいてください。
おわりに
今回の内容をまとめると次のとおりです。次回は、具体的な特定コアの割り当て方法を説明します。「Hard Partitioning with Oracle Linux KVM」にも手順は載っています。しかし、少し不親切なので、そのままではうまく動作しない可能性があります。
仮想サーバー環境におけるOracleライセンスの考え方
- 仮想サーバー環境では、基盤となる物理サーバーがライセンス課金の対象になる
- 複数の物理サーバーで構成される仮想サーバー環境では、原則としてライブ/コールドマイグレーション可能なすべてのサーバーがライセンス課金の対象になる
- Oracleが認定している仮想化テクノロジーにはSoft PartitioningとHard Partitioningがあり、Oracleライセンスを制限できるのはHard Partitioningテクノロジーに限られる
- VMwareをはじめHyper-V、Linux KVMなどのx86サーバーで利用する仮想化テクノロジーにはSoft Partitioningに分類される
Oracle Linux KVMにおける例外事項
- Oracle Linux KVMで、決められた手順で特定コアを割り当てたときだけ、Hard Partitioningとして認められている
- Oracle Linux KVMで特定コアを割り当てると、その仮想マシンはライブ/コールドマイグレーションを利用できない