第6回 Oracle Linux KVMにおけるハード・パーティショニング設定

前回は、仮想サーバー環境における「Oracleライセンスの考え方」と「パーティショニング・ポリシー(Partitioning Policy)」を説明しました。仮想サーバー環境でOracle製品を使用するときには、注意すべき点が多いことを理解いただけたと思います。

また、Oracle Linux KVMのハード・パーティショニング(Hard Partitioning)機能を活用することで、Oracle製品のライセンス費用を最適化できることを説明しました。ただし、ライセンスを制限するにはOracle Linuxを使うだけではだめで、ピニング(pinning)という方法で仮想マシンに特定のCPUコアを割り当てる必要があります。

このことは前回紹介した「Hard Partitioning with Oracle Linux KVM」にも書いてあるのですが、実際に構築しようとすると、なかなか難しいのが現実です。

そこで今回は、設定における注意点を中心に説明します。ただし、今回は動作検証が目的なので、実際の稼働環境とは異なります。特に本番環境では可用性やセキュリティなど多くの考慮するべき箇所がありますが、今回は無視しています。

また、環境構築にはKVMの知識も必要ですが、本題ではないので最小限にしています。LinuxやKVMに関する詳細は、コラム末尾で紹介しているOracle LinuxやRed Hat Enterprise Linuxのマニュアルをご覧ください。


ハード・パーティショニングのための要件

Oracle Linuxのハード・パーティショニングについて書かれているホワイトペーパー「Hard Partitioning with Oracle Linux KVM」を読んで、olvm-vmcontrolコマンドを使えば簡単にできると思っていませんか?

ところが、まったく違います。ハイパーバイザーとして使用する「Oracle Linux KVM」に加え、管理ツールの「Oracle Linux Virtualization Manager」も必要です。そして、これらのセットアップがなかなか難しいのです。前世代の仮想化製品であるOracle VM Serverでは、設定ファイルを少し書き換えるだけでハード・パーティショニングを設定できたのと大違いです。

そこで、前提となる要件を説明します。

Oracle Linux KVMとOracle Linux Virtualization Manager

まずは基本となるコンポーネントのおさらいです。

Oracle Linux KVM
Oracle Linux KVMは、Oracle Linuxカーネルに組み込まれたKVMを利用するハイパーバイザーです。カーネルはRHCKとUEKの両方で使用できます。ゲストOSとしては、RHEL系LinuxだけでなくUbuntuやSUSE Linux、Microsoft Windowsをサポートしています。なお、Oracle Linux KVMという製品はなく、Oracle Linux 7やOracle Linux 8、Oracle Linux 9に仮想化パッケージを組み込むことで実現します。

Oracle Linux Virtualization Manager
Oracle Linux Virtualization Manager(OLVM)はVMwareのvCenterに相当する仮想環境の管理ツールです。Oracle Linux KVMホストや仮想マシンの管理など、運用に必要なひととおり作業ができます。今後はOLVMと省略して表記することもあります。

Oracle Linux Virtualization ManagerはオープンソースのoVirtを元にしており、Red Hat Virtualization(RHV)でも同じoVirtを元にした管理ツールが使われています。正確にはRed Hat Virtualizationのオープンソース実装がoVirtです。それぞれ次の表のような関係があります。

ベンダKVM管理ツールインフラ構成管理ツール
Red HatRed Hat VirtualizationRed Hat Satellite
オープンソース実装oVirtSpacewalk
OracleOracle Linux Virtualization ManagerOracle Linux Manager

Oracle Linux Virtualization Managerは必須

ハード・パーティショニングでCPUをピニング(固定化)するには、対象のOracle Linux KVMがOracle Linux Virtualization Managerで管理されている必要があります

これはとても重要です。Oracle Linux KVMの管理にOracle Linux Virtualization Managerは必須ではありません。しかし、ハード・パーティショニングには必要です。悩ましいのは、Oracle Linux Virtualization Managerを使うか使わないかで、構築・運用方法がまったく異なることです。

Linux KVMでは、GUIツールのvirt-managerや、CLIのvirshで管理ができます。それ以外にもWebベースの管理ツールCockpitを使うこともできます。しかし、Oracle Linux Virtualization Managerに移行すると、これらのツールは一切使えなくなります。基本はWebベースのOracle Linux Virtualization Managerで、あとはRESTインターフェースです。

Oracle Linux Virtualization Managerに移行すると、virt-managervirshで管理できなくなります。

ハード・パーティショニングに必要な条件をまとめると次のとおりです。

  • Oracle Linux KVMホストはOracle Linux Virtualization Managerで管理されている
  • Oracle Linux Virtualization Managerにolvm-vmcontrolをセットアップしてある

Oracle Linux Virtualization Managerのアーキテクチャ

Oracle Linux Virtualization Managerを利用するうえで大切なことは、アーキテクチャを理解することです。Oracle Linux Virtualization ManagerでもRed Hat Virtualizationでも、アーキテクチャを説明したマニュアルがドキュメントリストの上位に書かれています。ここでは主要コンポーネントと構成方式について説明します。

Oracle Linux Virtualization Managerの主要コンポーネント

Oracle Linux Virtualization Managerは主に次の2つのコンポーネントで構成されています。

o-Virt Engine
Oracle Linux Virtualization Managerの主体となるコンポーネントで、リソースを管理するGUIやREST API用のサービスを提供します。Javaで書かれており、内蔵されたJava EEコンテナのWildFly(旧称JBoss)で稼働します。データ管理にPostgreSQLを使用します。

VDSM(Virtual Desktop Server Manager)
o-Virt Engineのエージェントで、管理対象のKVMホストにインストールします。

2種類の構成方法

Oracle Linux Virtualization Managerでシステムを構成するには次の2種類の方法があります。正しく構築するには、それぞれの特徴を理解する必要があります。詳しくはマニュアルを見ていただくとして、ここでは簡単に説明します。

  • セルフホストエンジン(Self-Hosted Engine)
  • スタンドアロンマネージャー(Stand Alone Manager)

セルフホストエンジン(Self-Hosted Engine)

もっとも一般的な方式で、Oracle Linux Virtualization ManagerをOracle Linux KVMホスト上の仮想マシンで稼働する方式です。この図では2台のホストで構成していますが、可用性が不要のときは1台でも構成できます。

メリット

  • oVirt Engineが仮想マシンで動作するので、必要な物理サーバーが1つ少なくなる
  • oVirt Engineを簡単に冗長化できる

デメリット

  • oVirt EngineをKVMホスト上で動作させるため、KVMホストで使用できるCPUやメモリが減る

スタンドアロンマネージャー(Stand Alone Manager)

oVirt Engineを管理対象のOracle Linux KVMホスト以外で稼働する方式です。物理サーバーか、別の仮想環境でホストされている仮想マシンを使用します。

メリット

  • oVirt Engineが管理対象ホストから独立しているので、ホストに負荷がかからない

デメリット

  • oVirt Engineを冗長化するには、HAクラスタソフトウェア等を使用したクラスタ構成が必要

サポートされていない方式

下図のように管理対象のOracle Linux KVMホストにOracle Linux Virtualization Managerをインストールすることはサポートされていません。

Oracleマニュアルと他社マニュアルの用語の違い

Oracle Linux Virtualization Managerのマニュアルを読んで戸惑うのは、用語の翻訳やマニュアルの構成です。次の表はそれそれを比べたものです。

出典KVM上の仮想マシン方式KVMとは別ホスト方式
oVirt/RHVの英語マニュアルSelf-Hosted EngineStand Alone Manager(*1)
RHVの日本語マニュアルセルフホストエンジンスタンドアロンのManager
OLVMの英語マニュアルSelf-Hosted EngineEngine(*2)
OLVMの日本語マニュアル自己ホストエンジンエンジン(*2)
*1 以前は、Stand Alone ManagerではなくStand Alone Engineと表記することもあったようです
*2 Stand Alone Managerの表記もわずかにありますが、構成を明確に区別する表記はありません。Engineと表記されていることもあります

機械翻訳ベースとはいえ、自己ホストエンジンはイケてないですね。また、スタート・ガイドでは「Stand Alone Manager」方式を明確に示す名称がないので戸惑います。

Oracle Linux Virtualization Manager構築のプランニング

Oracle Linux Virtualization Managerを構築するには、Oracle Linux Virtualization Managerのアーキテクチャを理解すると共に、システム要件を理解する必要があります。

セルフホストエンジンとスタンドアロンマネージャーの選択

はじめてOracle Linux Virtualization Managerを構築するときは、下図のようなスタンドアロンマネージャー方式がお勧めです。本番環境での推奨はセルフホストエンジン方式ですが、スタンドアロンマネージャー方式のほうが構築手順が簡単なためです。用意できるサーバーが少ないときは、セルフホストエンジン方式にしてください。また、自分で管理できるDNSサーバーも必要です。

Oracle Linux KVMホストとOracle Linux Virtualization Managerホスト

用語の整理として説明します。Oracle Linux Virtualization ManagerをインストールするサーバーをOracle Linux Virtualization Managerホスト(OLVMホスト)もしくはエンジンホストと言います。Oracle Linux Virtualization Managerの管理対象となるOracle Linux KVMサーバーをOracle Linux KVMホストもしくはKVMホストと言います。公式マニュアルでは、Oracle Linux Virtualization Managerホストのことを単にホストと表記している場所もあるので、文脈から判断してください。

VirtualBoxで検証環境を構築できるか

筆者がVirtualBoxで構築を試したところ、Oracle Linux Virtualization Managerをインストールし、KVMホストの追加まではできました。しかし「host CPU type is not suppoted in this cluster compatibility」というエラーでそれ以上の操作ができませんでした。ほかのPCや仮想環境ならばできるかも知れません。

手軽に試すにはOracle Cloud Infrastructureで次のサービスを利用することでしょうか。

  • Oracle Linux Virtualization Manager:Computeの仮想マシン
  • Oracle Linux KVMホスト:Computeのベアメタルインスタンス

システム要件

Oracle Linux Virtualization ManagerホストとOracle Linux KVMホストのシステム要件は以下のとおりです。

Oracle Linux Virtualization Managerホストの要件

  • oVirt 4.4の場合は Oracle Linux 8.5以降
  • CPU:2コア、MEM:4GB、DISK:25GB(いずれも最小要件)

Oracle Linux KVMホストの要件

  • oVirt 4.4の場合はOracle Linux 7.6以降もしくはOracle Linux 8.5以降
  • CPU:2コア、MEM:2GB、DISK:60GB(いずれも最小要件)

ここで重要なことは、Oracle Linux Virtualization ManagerのバージョンによってサポートするOLVMホストやKVMホストの要件が異なることです。使用するバージョンのOracle Linux Virtualization Managerマニュアル「アーキテクチャおよびプランニング」の「要件およびスケーラビリティの制限」で確認してください。

Oracle Linux Virtualization Manager構築のヒント

Oracle Linux Virtualization Manager環境の構築は、手順が複雑なのと、マニュアルが難解なため、ある程度LinuxやKVMの経験があっても戸惑います。そこで今回は検証環境を構築するうえでのヒントを紹介します。

また、少なくとも現時点ではRed Hat Virtualizationドキュメントのほうが完成度が高いです。インストール時に実行するコマンドは違うのですが、全体の流れや制限事項は同じです。一度目を通しておくことをお勧めします。

Oracle Linux Virtualization Managerの構築手順

次の図は、ハード・パーティショニングを実現するためのOracle Linux Virtualization Managerの構築手順です。スタンドアロンマネージャーとセルフホストエンジンでは手順が異なります。

Oracle Linuxサーバー構築の注意点

Oracle Linux Virtualization Managerインストール前のOracle Linuxサーバー構築の注意点です。Oracle Linux Virtualization ManagerホストとOracle Linux KVMホスト共通です。

選択するインストールタイプ

Oracle Linuxは「最小限のインストール」でインストールします。ただし、動作確認に必要なコマンドもインストールされないことがあるので、次のコマンドくらいはインストールしたほうがよいでしょう。

dnf install bind-utils nc tmux tree -y

その他の要件

それ以外の要件としては以下のものがあります。マニュアルに書かれていないこともあるので注意してください。

  1. DNSで正引き逆引きの両方で名前解決できること。つまりOracle Linux Virtualization ManagerやOracle Linuxホスト以外にDNSを稼働させる別のサーバーが必要です
  2. Firewallが有効になっていていること。必要ポートの開放はセットアップツールが自動的に設定します
  3. SELinuxが有効になっていること
  4. Oracle Linux Virtualization Managerホストのロケールがen_US.utf8になっていること

Oracle Linux Virtualization Managerホストのロケールはen_US.utf8になっている必要があります。次のように表示されれば問題ありません。

# localectl
   System Locale: LANG=en_US.utf8
       VC Keymap: jp
      X11 Layout: jp

ja_JP.UTF-8など、ロケールがen_US.utf8以外のときは次の手順で変更します。

# dnf install glibc-langpack-en -y
# localectl set-locale LANG=en_US.utf8

使用するリポジトリの選択

Oracle Linux Virtualization Managerスタート・ガイドでは、インストール前の設定として次の2種類のホストについて説明しています。

  • ULN登録ホストの場合
  • Oracle Linux Yumサーバー・ホストの場合

前者はOracle Linux Premier Supportを契約して、ULNに登録したホストを使用しているときの手順です。後者はPremier Support契約の有無にかかわらず、パブリックYumリポジトリ(https://yum.oracle.com)を参照するホストの手順です。手順が少し異なるので、適切なほうを選択してください。この手順はOracle Linux KVMホストでも同様です。

KVMホスト追加時の公開鍵追加方法

Oracle Linux Virtualization ManagerでKVMホストを追加するときは、パスワード方式もしくはSSH公開鍵方式を選択できます。推奨はSSH公開鍵方式です。このとき管理ポータルで生成される公開鍵は、KVMホスト側に追加します。

# mkdir -p /root/.ssh

# vi /root/.ssh/authorized_keys ←手動追加の場合
# cat kvmhost.pub >> /root/.ssh/authorized_keys←保存したファイルから追加の場合

# chmod 600 /root/.ssh/authorized_keys

異なるFQDNでOracle Linux Virtualization Managerにアクセスする

Oracle Linux Virtualization Manager管理ポータルにはhttps://olvm.sample.com/ovirt-engineのようなFQDNでアクセスします。ただし、ポートフォワードなど何らかの理由で異なるホスト名でアクセスするとログイン画面が表示されません。そのときには、Oracle Linux Virtualization Managerホストで、代替ホスト名を定義します。

定義ファイルを作成します。

vi /etc/ovirt-engine/engine.conf.d/99-custom-sso-setup.conf

追加する内容は以下のとおりです。複数ホストを記述するときはスペースで区切ります。

SSO_ALTERNATE_ENGINE_FQDNS="localhost hostname1 hostname2"

サービスを再起動します。

systemctl restart ovirt-engine

virshは使えないのか

Oracle Linux Virtualization Managerではvirshコマンドは使えないと書きました。しかしリードオンリーモードは使えます。次のように-rもしくは--readonlyを追加します。

# virsh -r list --all
 Id Name                 State
----------------------------------
  0 o19v1                running
  1 o19v2                running

# virsh -r vcpuinfo o19vm1 --pretty
 VCPU:           0
 CPU:            0
 State:          running
 CPU time:       5.4s
 CPU Affinity:   0-1 (out of 12)

 VCPU:           1
 CPU:            1
 State:          running
 CPU time:       2.9s 
 CPU Affinity:   0-1 (out of 12)

トラブルのとき

もし、うまく設定できないときは、ネット検索だけでなく以下の情報も調べてください。

  • Oracle Linux Virtualization Manager管理ポータルの「イベント」
  • ログファイル:/var/log/ovirt-engine/engine.log
  • My Oracle Support

おわりに

Oracle Linux Virtualization Managerの設定が終わったら、あとはホワイトペーパー「Hard Partitioning with Oracle Linux KVM」の手順に従ってハード・パーティショニングを設定してください。

最後に気をつけることがひとつあります。それはハード・パーティショニングを設定した仮想マシンの可用性です。複数のOracle Linux KVMホストで構成されたクラスタの場合、仮想マシンはライブマイグレーション可能です。しかし、ハード・パーティショニングでCPUを固定化された仮想マシンはライブマイグレーションの対象外です。ある程度の可用性が必要な場合には、ライセンスも考慮したリカバリープランを検討する必要があります。

参考資料

Oracle

Red Hat

その他

関連サービス

Oracle Linux KVM

Linux KVM (Kernel-based Virtual Machine:カーネルベースの仮想マシン) は、Linuxに組み込まれたオープンソースの仮想化テクノロジーです

Oracle Linux

オラクル製品の開発は、Oracle Linux( Unbreakable Enterprise Kernel )に基づいて進められているため、オラクル製品に最適化されたOS環境をご利用いただけます。Kspliceによるゼロダウンタイムパッチを適用することが可能です。