Oracle Linux KVMの仮想サーバー環境でハード・パーティショニングが認められている件

# TL;DR

* <font color="blue">**ハード・パーティショニングが可能なx86系 仮想サーバー環境として、Oracle Linux KVMが追加された（2019年10月）**</font>
* Xenベース＋独自管理ツールの**Oracle VM Server for x86**とは異なり、**KVM**はVMware vSphereに次ぐデファクトなので導入ハードルは低い
* **oVirt**をベースにした仮想環境管理ツール**Oracle Linux Virtualization Manager**も2019年6月にリリースされた

# 仮想環境におけるOracleライセンス問題

みなさんも、ご存じのように仮想サーバー環境でOracle製品を利用するときは悩ましいライセンス問題がつきまとう。

**Oracle製品を仮想サーバー環境で使用するときは、ゲストOSに割り当てたコア数とは関係なく、サーバーの全プロセッサがカウント対象になる。**

ライセンスの詳細は、日本オラクル社もしくは代理店に問い合わせてほしい。

* [サーバー仮想化ソフトウェア（ Oracle VM 、VMware、Hyper-Vなど）を使用した場合のライセンスカウントはどのようになりますか？](https://faq.oracle.co.jp/app/answers/detail/a_id/2673/~/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%BB%AE%E6%83%B3%E5%8C%96%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%EF%BC%88-oracle-vm-%E3%80%81vmware%E3%80%81hyper-v%E3%81%AA%E3%81%A9%EF%BC%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F)
* [Oracleライセンス購入ガイド - ライセンスカウントの具体例](http://www.intellilink.co.jp/solutions/oracle/license-guide/count_example.html)
* [VMware環境における Oracleライセンス監査の実態と対策（前編）](https://www.sysadmingroup.jp/kh/p1617/)
 
いまどきのIntel Xeon/AMD EPYCプロセッサは、最低でも8物理コア程度は搭載している。課金単位がプロセッサのStandard Editionならば問題ないが、コア数単位のEnterprise Editionでは深刻な問題だ。

さらにクラスタ構成の仮想サーバー環境では、クラスタを構成する全物理サーバーのコア数が対象になる。また近年の仮想サーバーソフトウェアはクラスター越しにライブマイグレーションできるので、その場合にはライブマイグレーション可能なすべての物理サーバーが対象になる。

そのためネットワークを分離し、ライブマイグレーションの範囲を狭めることで、ライセンスの最適化を計るなどの涙ぐましい努力が必要だ。

# オンプレミスにおける解決策
オンプレミスにおける解決策としては以下の選択肢がある。クラウドも解決策の一つだが、話が広がるので言及しない。

1. Oracle ExadataやOracle Database Applianceでキャパシティ・オン・デマンド（CoD）を利用する
2. Oracle VM Server for x86などのハード・パーティショニングが認められる仮想サーバーソフトを使用する
3. できるだけコア数の少ない物理サーバーを使用する（仮想化不使用）

この中では1がベストプラクティスだと思うが、それぞれの事情で選択できないこともある。また2は製品がマイナーで選択肢としてリスクがともなう。


# Oracle Linux KVMのハード・パーティショニング対応

このような状況下で**Oracle Linux KVM**がハード・パーティショニング・テクノロジーとして認められた。このパーティショニングは、DBのパーティショニングではなく、サーバーのCPU分割機能のことを指している。

**KVM**はLinux仮想化のデファクトだ。また仮想環境管理ツールの**Oracle Linux Virtualization Manager**は、OSSの**oVirt**ベースで将来性がある（oVirtはKVM版vCenterと考えるとわかりやすい）。Oracle VM Serverよりは、心理的な導入ハードルは低いだろう。詳しくは以下のドキュメントを読んでほしい。

* [Partitioning（サーバーのCPU分割機能）を適用した場合、ライセンスはどのようにカウントしますか？](https://faq.oracle.co.jp/app/answers/detail/a_id/2668/~/partitioning%EF%BC%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AEcpu%E5%88%86%E5%89%B2%E6%A9%9F%E8%83%BD%EF%BC%89%E3%82%92%E9%81%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%80%81%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F)
* [Oracle Partitioning Policy](http://www.oracle.com/jp/corporate/pricing/partitioning-jp-168078-ja.pdf)
* [Hard Partitioning with Oracle Linux KVM](https://www.oracle.com/a/ocom/docs/linux/ol-kvm-hard-partitioning.pdf)　<font color="red">特にコレ</font>
* [Announcing Oracle Linux Virtualization Manager](https://blogs.oracle.com/virtualization/announcing-oracle-linux-virtualization-manager)
* [oVirt公式サイト](https://www.ovirt.org/)

なお、ハード・パーティショニングを有効にするにはOracle Linux Virtualization Managerと`olvm-vmcontrol`による設定が必要だ。コアを固定するのでライブマイグレーションはできないが、その代わりライセンスの最適化が図れる。`olvm-vmcontrol`は「[Unbreakable Linux Network](https://linux.oracle.com)」もしくはoVirtリポジトリから入手できる。またサポートが必要なときは「[Oracle Linux Premier Support](https://www.oracle.com/jp/linux/)」が対応している。

* Oracle Linux 8：[oVirt 4.4リポジトリ](https://yum.oracle.com/repo/OracleLinux/OL8/ovirt44/x86_64/index.html)
* Oracle Linux 7：[oVirt 4.3リポジトリ](https://yum.oracle.com/repo/OracleLinux/OL7/ovirt43/x86_64/index.html)


<font color="blue">**Oracle Linux KVM補足**</font>
**Oracle Linux KVM**とは、Oracle LinuxにKVM系のパッケージをセットアップしたものを指し、個別の製品では無い。

# Oracle Cloud InfrastructureにおけるKVM
KVMを利用するケースはオンプレミスの方が多いだろう。しかしOracle Cloud Infrastructureでも利用できる。おもなユースケースとして以下のことが考えられる。

* オンプレミスの仮想サーバで稼働するゲストVMの移行先として
* 仮想マシンイメージ提供のアプライアンス製品を利用するため
* 開発環境などCPU使用率が低いサーバの集約率を上げるため。Computeでは最低1-OCPU（2CPUスレッド）がミニマムなのでVMではコスト高になる
* Oracle製品をCompute（BM）でBYOLで使用し、ハード・パーティショニングでコア数を制限したいとき

**<font color="blue">Oracle Linux KVMの使用方法</font>**
Oracle Cloud InfrastructureでKVMを使用するときは以下の方法がある。

* Oracle Linuxイメージでインスタンスを作成し、その後にKVMに必要なパッケージをインストールする。つまりオンプレミスと同じ方法
* OCI Provided ImangeもしくはMarketplaceの**Oracle Linux KVM Image**を使用する

Oracle Linux KVM Imageでは、oci-kvmなどの独自ユーティリティや必要なパッケージやデフォルトインストールされている。ただしoci-kvmは、非Oracle Linux Virtualization Manager環境用のツールだ。

OCI環境におけるKVMは、通常より制限事項があって深いので詳しくは以下のページを参考のこと。

* [Getting Started: Oracle Linux KVM Image for Oracle Cloud Infrastructure](https://community.oracle.com/docs/DOC-1023677)
* [Deploy and Manage Oracle Linux KVM in Oracle Cloud Infrastructure](https://blogs.oracle.com/scoter/deploy-and-manage-oracle-linux-kvm-in-oracle-cloud-infrastructure)
* [Deploy and Manage Oracle Linux KVM and Oracle Linux Virtualization Manager in Oracle Cloud Infrastructure](https://community.oracle.com/docs/DOC-1036973)
* [Oracle Community: Oracle Linux KVM and Oracle Linux Virtualization Manager](https://community.oracle.com/community/groundbreakers/server_&_storage_systems/linux/oracle-linux-kvm)
* [virt-v2v: automated migration from VMware to Oracle Linux KVM](https://blogs.oracle.com/scoter/virt-v2v-automated-migration-from-vmware-to-oracle-linux-kvm)

# おわりに

Oracle Linux Blogでは「[Top 5 Reasons to Build your Virtualization with Oracle Linux KVM](https://blogs.oracle.com/linux/live-webcast%3a-top-5-reasons-to-build-your-virtualization-with-oracle-linux-kvm)」として次の理由を挙げている。100%の同意はできないが、最後の2つは際立つ特徴と言えるだろう。

* Accelerated deployment with ready to go VMs with Oracle software 
* Increased performance and security
* Simplified, easy management of the full stack
* Improved licensing costs through hard partitioning
* Lower licensing and support costs while increasing benefits