Oracle Linux KVM with Oracle Linux Virtualization Manager を入れてみた

投稿者: | 2月 11, 2024

テレビを見ながら検証。見ていた番組はこれ。

お別れホスピタル

療養病棟の話。病院に行くと、最上階や地下にある病棟。緩和ケアをやっているところ。去年の自分とカブる。在宅で看取ると緩和ケア病棟が自宅に爆誕。コロナ禍だと、病院に預けたら、面会禁止(今でも面会できない病院がすごく多い。)で入院イコールその場で看取り完了。なので自分は、自宅で看取るしかなかった。ただ、コロナ禍でなければ、もし入院させられたら、もう少しオカンも自分も色々な人とコミュニケーションが取れたり、他の患者さんのケースが見れるので、「初めての対応」が少なかったのかもしれない。政府は介護離職は防ぐべきだと言うが、余命宣告されていない人の介護ならば離職する必要がないけど、ターミナル(余命宣告)状態の人を介護するとなると、家に「ほぼ」療養病棟となってしまうので、やっぱり離職すべきだったなぁと思う。在宅緩和ケアがこんな状態なのが、世の経営者や人事は1ミリもわからないと思う。これは、包括支援センターの先の先の話。多くの経営者や人事の介護指導が、包括支援センターから老人ホーム、コロナ禍の療養病棟へ行かせる戦略なので、早く即死させろという対応しかとらない。オカンが入院したヤブ医者の先生ですら、それを指摘していた。会社の言うことは嘘偽りしかない綺麗事だと。経営者や人事の売り上げ立てないやつは辞めてくれをオブラートに包んだ話にしている気がしてならない。幸い、それらの方々を看取る必要もないので、関係ないので、だから離職はすべきだった。

やっぱり、看取る最後の最後の瞬間って、「がんばって!」とか「先生!」とかじゃなくて「ありがとう!」の連呼だったり、がん疼痛と同じくらい血圧の監視、血圧が下がると体が急に冷たくなるとか。みんなと同じでちょっとホッとした。自分は、「ほぼ」というかそのままを自宅で垣間見れた気がする。今回は、「ほぼ」の話。

 

閑話休題

 

Oracle Linuxだと最新環境であれば、サブスクリプション契約なしで作れるので、便利。バージョン固定がぁという方は素直に購入したほうがいいと思う。サブスクリプションがないと固定はできないので。その点、RHELは無料のDeveloperアカウントが使えるので、バージョン固定がぁにも優しい。

これって、ほぼRedhat Virtualizationだった。oVirtなので。ちなみに、インストール自体ははそれほど難しくないが簡単につくるためには事前準備が必要。また、4.5はなぜかインストールができない。Web Proxyが必要で、Web Proxyを作ってもアプライアンスからyumレポジトリにアクセスができない。なので、4.4で作ってみた。

ちなみに、KVM自体は単体のLinuxサーバで大抵動くが、今回は、管理サーバから管理する方式。VMwareで言えば、普通のLinuxのKVMがESXiとすれば、今回作成するのは、vCenterがある環境と言える。

作成する構成

Oracle KVMセットアップ-セルフホステッドエンジン方式

Virtualization Managerは、KVMホストにも載せられる。ただし、この形式の場合、KVMホストがメンテナンスモードにしようとして、Virturaization Managerを移すKVMホストがないため、KVMホストをメンテナンスモードにできない。よって、ローカルストレージの追加ができない。2ホスト(つまりもう1台ホストを追加すれば、解決するはず。)

環境設定

ネットワーク

ネットワークセグメント

    このインストールでは、仮想マシンもこのセグメントで仮想マシンが動作する。(必要に応じて、あとでVLANネットワークを追加も可能)

DNSサーバ

 KVMホストとエンジンホストOracle Linux Virtualization Manager(OLVM)のIPは、少なくとも正引きで名前解決ができるようにとなっている。逆引きも必要と書いてあるが、空のゾーンファイルで十分

ストレージ

     このストレージに全てのVMが搭載される。ローカルストレージが利用できないので、ネットワークストレージが必要

  必要となる容量:Oracle Linux Virtualization Managerの容量 75GB + Guest VMの容量+ ISOイメージの容量:よって最低でも150GBくらいは欲しい。

  NFSあるいは、iSCSIを用意しておく。

  NFSは、root_squashなどのパーミッションがうるさい。

  iSCSIの方が面倒ではないかもしれない。ただし、VAAIなどのAPIレベルのアシストはないはず。

 

必要なファイル

https://yum.oracle.com/oracle-linux-isos.html

Oracle Linux 8.9 x64 : OracleLinux-R8-U9-x86_64-dvd.iso

 

OSセットアップ

– クリーンインストールした環境を強く推奨

Oracle Linux 8.5以上(最新 8.9を利用)

– OSインストール時のベース環境は”最小インストール”を選択すること

デフォルトは、Server with GUIなので、minimumを指定

– firewalld.serviceが有効で起動していること (クリーンインストールならデフォルト有効のはず。)

– SELinuxが有効であること (クリーンインストールならデフォルト有効のはず。)

– 5 GB以上の/var/tmpディレクトリが存在していること

/のシングルパーティションにすればとりあえず大丈夫

– インターネットアクセスへアクセスが可能であること

 

物理マシンリソース

エンジンホスト:Oracle Linux Virtualization Manager(OLVM)が載るOracle Linuxサーバ。(いわばvCenter。なので、KVMホストに載せることも可能。)
        インストールスクリプトでは、小規模デプロイメントのデフォルトとして、 4cpu 16GB RAMが設定される。(ウィザードで最小の設定にできるが。)
KVMホスト:  単純にKVMが動いているホスト(いわばESXiハイパーバイザーと同じ)
          HDDは、全て共有ディスクに載るので、あまりいらない。50GB程度でいい。2ホスト以上にするならば、ローカルストレージを利用できる。
 
ESXで作る場合の仮想マシン設定 (適当に作っているので、要件ではない。)
以下のOracle Linux 8.9VMを1つ作成
  • 12Core (CPU仮想化有効)
  • 48GB RAM
  • 50GB HDD x1 (Hypervisor)
  • DISKIDを有効 (なんとなく)

Oracle Linux 8.9のインストール

– タイムゾーン:Tokyo

– ハードディスク:LVMデフォルト構成 /homeパーティションは不要。

– パッケージ:Minimum

– ネットワーク:有効化にしてDNSに登録済みのホスト名、IPアドレスにする

ちなみに、OSインストール後に個別設定(Firewallの停止とかSELinuxの無効化など)を一切しないことが重要!

 

インストール後、MTUを9000にしたい場合は、以下を実行する。

ETHDEV=$(nmcli device | grep ethernet | cut -d " " -f1)
nmcli c mod $ETHDEV 802-3-ethernet.mtu 9000
nmcli c down $ETHDEV && nmcli c up ${ETHDEV}

コンソールにrootでログインして、以下を実行。

dnf -y update ; reboot

KVMホストのセットアップ

KVMホストを追加するならば、ここまでやれば追加が可能(未テスト)

dnf install -y dnf-utils
dnf config-manager --enable ol8_baseos_latest
dnf install -y oracle-ovirt-release-el8
dnf clean all
dnf repolist

レポジトリが参照できていることを確認する。

Oracle Linuxのデフォルトカーネルは、UEKなので、カーネルモジュールもインストール

dnf install kernel-uek-modules-extra -y

 

OLVMデプロイ

事前準備

これを事前にやっておかないと、スクリプトのウィザードが進められない。

DNSの登録

    KVMホスト kvmhost1.example.internal 192.168.1.68

    エンジンホスト olvm1.example.internal 192.168.1.69

 

Public Keyの用意

ssh-keygen -t rsa
cat .ssh/id_rsa.pub

 

ストレージ

 NFSの場合

  nas1.example.internal:/kvm_share

 

OLVMデプロイの実行 

2つの方法でデプロイができる

– Cockpit

– コマンドライン

今回は、コマンドラインでのデプロイをしてみる。

以下のコマンドを実行して、途中の質問に答えるだけインストールが可能になる。

dnf install ovirt-hosted-engine-setup -y
dnf install ovirt-engine-appliance -y
hosted-engine --deploy

基本的にEnterだが、一部注意が必要。特に、アプライアンスのネットワーク設定で、Staticを指定しないと、DHCPサーバ側でDHCP予約設定をする必要がある。実行時間に小一時間かかるので、tmuxでコンソールを開けといっているが、そのままやってしまった。

長いコンソールログなので、応答部分だけ抜き出してみた。応答に何も入れていない部分は、提案を受け入れている。

[ INFO ] Stage: Environment setup

          At the end the disk of the local VM will be moved to the shared storage.

          Are you sure you want to continue? (Yes, No)[Yes]:Yes

 

          It is highly recommended to abort the installation and run it inside a tmux session using command “tmux”.

          Do you want to continue anyway? (Yes, No)[No]:Yes

–== HOST NETWORK CONFIGURATION ==–

          Please indicate the gateway IP address [192.168.1.1]:

          Please indicate a nic to set ovirtmgmt bridge on (ens33) [ens33]:

          Please specify which way the network connectivity should be checked (ping, dns, tcp, none) [dns]:

–== VM CONFIGURATION ==–

          Please enter the name of the data center where you want to deploy this hosted-engine host.

          Data center [Default]:

          Please enter the name of the cluster where you want to deploy this hosted-engine host.

          Cluster [Default]:

   Entering no value will use the image from the ovirt-engine-appliance rpm, installing it if needed.

          Appliance image path []:

          Please specify the number of virtual CPUs for the VM. The default is the appliance OVF value [4]:

          Please specify the memory size of the VM in MB. The default is the appliance OVF value [16384]:

          it should not point to the base host or to any other existing machine.

          Engine VM FQDN:olvm1.example.internal

 

          Engine VM domain [example.internal]:

          Enter root password that will be used for the engine appliance: <パスワード>

          Confirm appliance root password:<パスワード>

 

          If you provide no key, authorized_keys will not be touched.

          SSH public key []:ssh-rsa AAAAB略dc0IZdn8kp hogehoge@example

 

          Do you want to enable ssh access for the root user? (yes, no, without-password) [yes]:

          Do you want to apply an OpenSCAP security profile? (Yes, No) [No]:

          Do you want to enable FIPS? (Yes, No) [No]:

          Please specify a unicast MAC address for the VM, or accept a randomly generated default [00:16:3e:XX:XX:XX]:

          How should the engine VM network be configured? (DHCP, Static)[DHCP]:Static

          Please enter the IP address to be used for the engine VM []:192.168.1.69

[ INFO ] The engine VM will be configured to use 192.168.1.69/24

          Please provide a comma-separated list (max 3) of IP addresses of domain name servers for the engine VM

          Engine VM DNS (leave it empty to skip) [192.168.1.1]:

 

          Note: ensuring that this host could resolve the engine VM hostname is still up to you.

          Add lines to /etc/hosts? (Yes, No)[Yes]:

 –== HOSTED ENGINE CONFIGURATION ==–

          Please provide the name of the SMTP server through which we will send notifications [localhost]:

          Please provide the TCP port number of the SMTP server [25]:

          Please provide the email address from which notifications will be sent [root@localhost]:

          Please provide a comma-separated list of email addresses which will get notifications [root@localhost]:

          Enter engine admin password:<パスワード>

          Confirm engine admin password:<パスワード>

[ INFO ] Stage: Setup validation

          Please provide the hostname of this host on the management network [kvmhost1.example.internal]:

 

[ INFO ] skipping: [localhost]

          Please specify the storage you would like to use (glusterfs, iscsi, fc, nfs)[nfs]: 

           Please specify the nfs version you would like to use (auto, v3, v4, v4_0, v4_1, v4_2)[auto]: 

          Please specify the full shared storage connection path to use (example: host:/path): nas1.example.internal:/kvm_share

          If needed, specify additional mount options for the connection to the hosted-engine storagedomain (example: rsize=32768,wsize=32768) []:

 

[ INFO ] TASK [ovirt.ovirt.hosted_engine_setup : Activate storage domain]

[ INFO ] changed: [localhost]

          Please specify the size of the VM disk in GiB: [38]: 

[ INFO ] Creating Target VM

 

Hosted Engine successfully deployedまで辿り着けば完了。この時点でKVMホストのディスク消費量は5GB。アプライアンスのイメージはNFSにある。

 

ブラウザアクセス

インストールが完了したら、ブラウザで以下にアクセス。

https://<OLVM-FQDN>:443/ovirt-engine

ログインクレデンシャルは

admin <ウィザードで指定したパスワード> 

 

管理ポータルは、データセンターの設定が行える

VMポータルは仮想マシンの構築、操作ができる

監視ポータルは、Grafanaが表示される。

 

管理ポータルにログイン

 

インストール後の設定

インストール後には、

  • ネットワーク設定 (VLANとか使っていなければ不要)
  • ISOイメージのアップロード

が最低限必要となる。

 

ネットワークの追加

自分の環境は、TagVLANでセグメントを分けているので、VLANを設定する。VLANなんか使っていないという人は、スキップ。

ネットワークは、以下の手順で作成

  • ネットワークの作成(VLAN設定など)
  • ホストに割り当て

で行う。

 

ネットワークの作成

ネットワークを開く

既存のovirtmgmtを開き、MTUを9000にする。

OKをクリックすると以下のメッセージがでるが、OKをクリック。

次に、新規作成をクリック

名前をつけて、VLAN IDを設定。VLAN IDがついていないとホストのVLAN IDとかち合うので必ず設定

MTUを9000にする。

ネットワークが追加される。

ホストに割り当て

コンピュートを開く

ホストを指定して、ネットワークインタフェースを開く

ホストネットワークを設定をクリック

未アサインのネットワークが左側に表示されているはず。

マウスで未アサインのネットワークをドラッグして、ホストのNIC (ens33)に持っていく。

ネットワークの設定が完了

 

ISOイメージのアップロード

ストレージー>ディスクを開き、アップロードから開始を選択。

ファイルを選択をクリックして、ISOイメージを指定する。今回は、RHEL8.9を上げてみた。

しばらくすると転送が開始する。

転送が完了するとOKになる。

 

仮想マシンの作成 – 管理コンソール

管理コンソールから仮想マシンを作成する例。実は、VMポータルから仮想マシンを作った方が簡単だった。

コンピュートー>仮想マシンで仮想マシンを作成する。

詳細オプションを表示させる。

全般で、仮想マシン全般の設定とディスクとネットワークを設定

ブートオプションで起動させるISOイメージを設定

OKで仮想マシンが作成される。

 

仮想マシンをクリックして、実行をクリック。

仮想マシンのコンソールとして、クライアントにvirt-managerが必要なので事前に導入しておく。

https://virt-manager.org/download.html

LinuxならXwindowのアプリとしてパッケージで入れられる。

Windowsなら、msiでインストール。

Macだとこれか?Macはできないかも(試してみたが。。。)

https://ravada.readthedocs.io/en/latest/docs/mac_clients.html

brew tap jeffreywildman/homebrew-virt-manager
brew install virt-viewer

コンソールをクリックするとconsole.vvというファイルがダウンロードされるので、そのファイルをクリックするとvirt-viewer(remote-viewer)が起動する。

インストールが完了したら、qemu-guest-agentをインストールされているかを確認。ドライバはよほどのことがない限り何もしなくてもロードされている。まぁ、OSインストールできているので。

rpm -qa | grep qemu
systemctl is-enabled emu-guest-agent

もし、インストールされていない場合は、以下のようにインストール(どのディストリビューションでもqemu-guest-agentのパッケージが存在するはず。)

RHEL系の例

yum -y install qemu-guest-agnet

 

 

Windows OSの場合、virt-ioドライバがないので、virt-io driverのISOイメージも必要となる。

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240.iso

Windows Server 2022なので、UEFI起動にして仮想マシンを作成

ディスクが認識しないので、一度、Virt-IOのISOをマウントして、ディスクのドライバを入れる。

CTRL-ALT-DELETEでログイン

ドライバーとAgentのインストール

virtio-winを入れてから、toolsをインストールする。

デバイスマネージャでは全てのデバイスが認識しているはず。もし、認識していないのであれば、ISOイメージからドライバーを直接適用する。

qemu-guest-agentが正しくインストールされているとゲスト情報が表示される。

 

VMポータルへアクセス

VMポータルへアクセスすると、ユーザフレンドリな仮想マシンの画面が使える。

仮想マシンの作成

こっちのほうが簡単

仮想マシンの管理

感想としては、vSphereの考え方に近いので、運用という面では、VMwareマイグレーションとしてはありかもしれない。ただ、やはりどうしてもLinuxが苦手という人にはお勧めできない。というか、Linuxが苦手な人は、もはやHyper-VかAzureの一択かもしれない。最近、Linuxが苦手な人がどっと増えてきているので。。。

KVMは、実は、BIOS、CPU、メモリ、ストレージ周りは結構奥深くまでいじれる。ある意味、沼。まだまだ設定があるのだろうが一旦ここまで。

 

その後、お別れホスピタルを漫画で読んだ。この話、療養病棟の話だけではなく、看護師さんも人間で、普通にがんになって復職できなかったり、人を救うというカットがあらゆる方向かから描かれているので、単にお涙頂戴ものではない話だった。まぁ、経営者や人事の老人ホームで即死看取りというのもある意味、この漫画で伝えている「人を救う」という考えなのかもしれないが、自分のケースの場合、そんな説明をしては来なかったし(悲しくもそもそも介護という言葉自体全く理解していなかった。)、その考えがあって、伝えられたとしても全く賛同できないなぁ。

カテゴリー: kvm

コメントを残す