最近のarmbianでOrange Pi PC2が起動しない件の対処

去年使った際にArmbian_23.02.1_Orangepipc2_jammy_current_5.15.93_xfce_desktop を使ってセットアップしたOrange Pi PC2を久々にapt update; apt upgradeしたら、起動途中で止まるようになった。

plymouth-start.service で止まっているように見えた

とりあえず別のmicro SDに最新の Armbian_community_24.8.0-trunk.139_Orangepipc2_noble_current_6.6.31_gnome_desktop を書き込んで起動してみたところ、同じ場所で止まった

plymouth ということは ロゴ表示関連?と疑って /boot/armbianEnv.txt を編集して「bootlogo=false」設定?と思ってみたら、すでに設定されていました。

試しに「bootlogo=true」に変えてみると、ロゴ自体はちゃんと表示され、そのあとの処理で止まっているようだった。

armbianフォーラム「Armbian 24.2 is broken on Orange PI PC2」を読んでみると以下のことがわかった

・kernel 6.1以降おかしい
・armbianのシステムで自動生成されつづける最新イメージファイルは Orange Pi PC2で動かない
・昔のdtbファイルを使うと新しいkernelでも起動する

ということなので、まずはmicroSDを他のLinuxでマウントして、関連しそうなdtbファイルを確認

osakanataro@ubuntuserver:/mnt$ find . -print|grep dtb|grep orange
find: ‘./root’: 許可がありません
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero2w.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-lite2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3-lts.dtb
find: ‘./var/spool/rsyslog’: 許可がありません
find: ‘./var/spool/cron/crontabs’: 許可がありません
find: ‘./var/spool/cups’: 許可がありません
find: ‘./var/lib/private’: 許可がありません
find: ‘./var/lib/ubuntu-advantage/apt-esm/var/lib/apt/lists/partial’: 許可がありません
find: ‘./var/lib/openvpn/chroot’: 許可がありません
find: ‘./var/lib/lightdm-data/lightdm’: 許可がありません
find: ‘./var/lib/apt/lists/partial’: 許可がありません
find: ‘./var/lib/update-notifier/package-data-downloads/partial’: 許可がありません
find: ‘./var/lib/udisks2’: 許可がありません
find: ‘./var/lib/chrony’: 許可がありません
find: ‘./var/lib/NetworkManager’: 許可がありません
find: ‘./var/lib/polkit-1’: 許可がありません
find: ‘./var/lib/lightdm’: 許可がありません
find: ‘./var/log/private’: 許可がありません
find: ‘./var/log/chrony’: 許可がありません
find: ‘./var/log/speech-dispatcher’: 許可がありません
find: ‘./var/cache/private’: 許可がありません
find: ‘./var/cache/apt/archives/partial’: 許可がありません
find: ‘./var/cache/ldconfig’: 許可がありません
find: ‘./var/cache/cups’: 許可がありません
find: ‘./var/cache/lightdm/dmrc’: 許可がありません
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h616-orangepi-zero2.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-one-plus.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-prime.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-a64-orangepi-win.dtb
./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero3.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero2w.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-lite2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-zero-plus.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-3-lts.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h616-orangepi-zero2.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h6-orangepi-one-plus.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-prime.dtb
find: ‘./etc/vpnc’: 許可がありません
find: ‘./etc/ssl/private’: 許可がありません
find: ‘./etc/polkit-1/localauthority’: 許可がありません
find: ‘./etc/cups/ssl’: 許可がありません
find: ‘./lost+found’: 許可がありません
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-a64-orangepi-win.dtb
./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h618-orangepi-zero3.dtb
osakanataro@ubuntuserver:/mnt$ 

“sun50i-h5-orangepi-pc2.dtb”というファイルがそれっぽい。2カ所にあるが、どちらも同じ内容のようだ

osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$

Armbian_23.02.1_Orangepipc2_jammy_current_5.15.93_xfce_desktop.img を展開して、 kernel 5.15.93時代の sun50i-h5-orangepi-pc2.dtb に置き換えた

osakanataro@ubuntuserver:/mnt$ ls -l /tmp/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 osakanataro osakanataro 32052  2月 23  2023 /tmp/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rwxr-xr-x 1 root root 34856  5月 22 03:57 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ sudo mv ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb.org
osakanataro@ubuntuserver:/mnt$ sudo cp /tmp/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ sudo mv ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb.org
osakanataro@ubuntuserver:/mnt$ sudo cp /tmp/sun50i-h5-orangepi-pc2.dtb ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$ ls -l ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 root root 32052  6月 19 11:05 ./boot/dtb-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
-rw-r--r-- 1 root root 32052  6月 19 11:05 ./usr/lib/linux-image-6.6.31-current-sunxi64/allwinner/sun50i-h5-orangepi-pc2.dtb
osakanataro@ubuntuserver:/mnt$

これで起動を行ったところ、問題なく起動してきました。

dtbファイルを古いまま使う方法ってあるのかな・・・

kernelをアップデート対象から外ししかない??

27ヶ月前に設定した Oracle VM Manager が動かなくなった件

久しぶりに稼働させたOracle VM環境を操作するため、Oracle VM Managerにブラウザからログインしようとしたら応答がない・・・

Oracle VM Managerを稼働させているLinuxにログインして「systemctl status」を実行してもサービスの起動に失敗しているわけでもなさそうだ。

「systemctl status ovmm」でも特にコレといったものはない。

/var/log 以下にそれっぽいログがないので、ドキュメントを確認・・・Oracle VM 管理者ガイド「13.3 Oracle VM Managerのトラブルシューティング」に /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/logs ディレクトリにログが出力されている、ということなので確認

ざらざらーっと、AdminServer.log ログを見ていくと、「com.oracle.appfw.ovm.coreinferface.ventprocessing.EventPollerTask」で「com.sun.jersey.api.client.ClientHandlerException: jav a.net.ConnectException: 接続を拒否されました (Connection refused)」といったものが多数見受けられる。

おそらくなにかサービスがうまく動作していないんだろうなぁ、とさらに見ていくと、SSL証明書を読み込んだログのあたりで「Identity certificate has expired:」とか「Signature: ~ の期限が切れています。」といったものが・・・

お?これが問題か?とさらに深掘り

Oracle VM 管理者ガイド「2.2.2 証明書構成の表示」に/u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh show コマンドで状態確認などができる、ということがわかった。

続いて「Oracle VM Manager SSL Certificates ReGeneration with ovmkeytool.sh」に、SSL証明書の更新を行うという、そのものの手順があることを見つけた。

しかし・・・試してみると、ovmkeytool.shの実行にはOracle VM Managerインストール時にweblogicユーザに対して設定したパスワードが必要とのことだった。

Oracle VM管理者ガイド「4.2 Oracle VM Managerのユーザー・パスワードの変更」にあるように、通常は、Oracle VM Managerのadminアカウントと一緒にしてることが多いらしい

が・・・それを使ってみても接続できなかった。

weblogicユーザのパスワードを初期化する方法がないかを確認していたところ、WebLogicを自動起動させる仕組みで使われているAESで暗号化されたユーザ名とパスワード文字列がかかれたテキストファイルを利用すると、設定されているパスワードがなんであるのかを確認できる、ということがわかった。

How to Decrypt/Encrypt WebLogic and Datasource Password via WLSDM?

上記はweblogic汎用の手順になっているので、Oracle VM Managerの場合に即した手順で確認していく。

まず、WebLogic Scripting Tool(WLST)を起動する必要があるので、そのパスを確認する。

[root@ovm security]# find /u01 -print |grep wlst.sh
/u01/app/oracle/Middleware/oracle_common/common/bin/wlst.sh
/u01/app/oracle/Middleware/wlserver/common/bin/wlst.sh
/u01/app/oracle/ovm-manager-3/ovm_wlst/bin/wlst.sh
[root@ovm security]#

3種類出てきたが、ovm-manager-3以下にあるやつだろう、とそれを使う

また、WebLogic起動時に読み込まれているファイルは /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/security/boot.properties なので、その内容を確認

[root@ovm security]# cat /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/security/boot.properties
# Generated by Configuration Wizard on Fri May 28 17:13:40 JST 2021
username={AES}<文字列>=
password={AES}<文字列>=
[root@ovm security]#

WLSTは環境変数MW_HOMEを設定する必要があるので、/u01/app/oracle/Middlewareと設定して起動

[root@ovm security]# export  MW_HOME=/u01/app/oracle/Middleware
[root@ovm security]# echo  $MW_HOME
/u01/app/oracle/Middleware
[root@ovm security]# /u01/app/oracle/ovm-manager-3/ovm_wlst/bin/wlst.sh

WebLogic Scripting Tool(WLST)を初期化しています...

WebLogic Server Administration Scripting Shellへようこそ

使用可能なコマンドに関するヘルプを表示するには、help()と入力してください

wls:/offline> 

Oracle VM Managerではdomainに相当するディレクトリは /u01/app/oracle/ovm-manager-3/domains/ovm_domain であるようなので、以下を設定

wls:/offline> domain="/u01/app/oracle/ovm-manager-3/domains/ovm_domain"
wls:/offline> service = weblogic.security.internal.SerializedSystemIni.getEncryptionService(domain)
wls:/offline> 

最後に暗号化文字列を埋め込んでrintコマンドを実行

wls:/offline> print "Weblogic server Admin password : %s" %encryption.decrypt("{AES}<文字列>=")
Weblogic server Admin password : Password123
wls:/offline>

え・・・なんでPassword123 なんて設定してんの???と疑問がわきつつも、とりあえずweblogicユーザのパスワード解読に成功


続いて本題のSSL証明書の更新を実施

証明書関連ファイルは下記に配置されているようだ
 /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security
 /u01/app/oracle/ovm-manager-3/domains/ovm_domain/config

更新は「/u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh check」を実行して行う

基本的に標準値でよいのだが、いくつか気をつけるべきポイントがあった。

[root@ovm security]# /u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh setup
6 12, 2024 1:22:41 午後 oracle.security.jps.JpsStartup start
情報: JPSの初期化中です。
6 12, 2024 1:22:42 午後 oracle.security.jps.JpsStartup start
情報: Jpsが開始されました。
Oracle VM Manager is currently configured to use CA keystore at:
        /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks
Do you wish to generate a new key and/or specify a different keystore? [yes]
Generate new CA keystore (as opposed to specifying an existing keystore)? [yes]
Path for CA keystore: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks]
A file already exists at the path /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks
Is it ok to ovewrite this file with your new keystore? [no] yes

1個目が↑の既存ファイルを置き換えるか、というもの

置き換えるので「yes」と入力

Oracle VM Manager is currently configured to use the SSL Trust-store at:
        /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmtrust.jks
Do you wish to use this existing trust-store location? [yes]
Validity in months: [120]
Key distinguished name is "CN=OVM CA 0004fb0000010000615876ff13b9da0d, OU=Oracle VM Manager, O=Oracle Corporation, L=Redwood City, ST=California, C=US".  Use these values? [yes]
You may either specify passwords or use random passwords.
If you choose to use a random password, only WebLogic, the Oracle VM Manager,
and this application will have access to the information stored in this
keystore.
Use random passwords? [yes]
Generating CA key and certificate and persisting them to the keystore...

Oracle VM Manager is currently configured to use SSL keystore at:
        /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks
Do you wish to generate a new key and/or specify a different keystore? [yes]
Generate new SSL keystore (as opposed to specifying an existing keystore)? [yes]
Path for SSL keystore: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks]
A file already exists at the path /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks
Is it ok to ovewrite this file with your new keystore? [no] yes

2個目も上書きするか、なので「yes」

The hostname should be the fully qualified hostname of the system
(this is the hostname you'd use to access this system from outside the
local domain).  Depending on your machine setup the value below may not be
correct.
Fully qualified hostname: [ovm]
Validity in months: [27] 120

で、3つ目が最大の罠でした。

証明書の有効期限、初期値が「27ヶ月」でした。

これを設定した関係者に聞くと、あー、たしかにそれくらいの時期にインストールしてたな、とのこと・・・

このせいで止まってたのか。

とりあえず120ヶ月を指定して進めた

Key distinguished name is "CN=ovm, OU=Oracle VM Manager, O=Oracle Corporation, L=Redwood City, ST=California, C=US".  Use these values? [yes]
Alternate hostnames (separated by commas): [ovm]
Generating SSL key and certificate and persisting them to the keystore...

Updating keystore information in WebLogic
Oracle MiddleWare Home (MW_HOME): [/u01/app/oracle/Middleware]
WebLogic domain directory: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain]
WebLogic server name: [AdminServer]
WebLogic username: [weblogic]
WebLogic password: [********]
WLST session logged at: /tmp/wlst-session138870891195064865.log

[root@ovm security]#

これで証明書更新に成功

Oracle VM Managerを再起動

[root@ovm security]# systemctl stop ovmm
[root@ovm security]# systemctl start ovmm
[root@ovm security]# 

再起動後、WebLogicとアプリケーション間でいろいろ設定が必要なようで、用意されている証明書更新スクリプトを実行 /u01/app/oracle/ovm-manager-3/bin/configure_client_cert_login.sh

[root@ovm logs]# /u01/app/oracle/ovm-manager-3/bin/configure_client_cert_login.sh

WebLogic Scripting Tool(WLST)を初期化しています...

WebLogic Server Administration Scripting Shellへようこそ

使用可能なコマンドに関するヘルプを表示するには、help()と入力してください

2024-06-12 13:30:12,297 [main] INFO  ovm.wlst.commands - Connecting using URL t3://localhost:7001

ロケーションがserverRuntimeツリーに移動しました。これは、DomainMBeanをルートとする読取り専用のツリーです。
詳細は、help('domainConfig')を使用してください

2024-06-12 13:30:13,823 [main] INFO  ovm.wlst.commands - Undeploying ovm_console
アプリケーションovm_consoleをアンデプロイしています ...
<2024/06/12 13時30分14秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_console [アーカイブ: null]のundeploy操作をAdminServer に初期化しています。>
.アプリケーションのアンデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: undeploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
すでにドメイン構成ツリーを参照しています

2024-06-12 13:30:17,654 [main] INFO  ovm.wlst.commands - Undeploying ovm_core
アプリケーションovm_coreをアンデプロイしています ...
<2024/06/12 13時30分17秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_core [アーカイブ: null]のundeploy操作をAdminServer に初期 化しています。>
........アプリケーションのアンデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: undeploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
2024-06-12 13:30:42,942 [main] INFO  ovm.wlst.domainbuilder.Domain - Stopping AdminServer...
Stopping Weblogic Server...

WebLogic Scripting Tool(WLST)を初期化しています...

WebLogic Server Administration Scripting Shellへようこそ

使用可能なコマンドに関するヘルプを表示するには、help()と入力してください

ユーザーID weblogicでt3://localhost:7001に接続しています ...
ドメイン"ovm_domain"に属する管理サーバー"AdminServer"に。が正常に接続されました

警告: サーバーへの接続に安全でないプロトコルが使用
されました。通信セキュリティを確保するには、かわりにSSLポートまたは
管理ポートを使用する必要があります。

AdminServerへの接続中にサーバーAdminServerをforce=falseで停止しています...
WebLogic Serverから切断されました: AdminServer
WLSTからWebLogic Serverへの接続が失われました。
これは、サーバーが停止されたか、または分離された場合に
発生することがあります。サーバーが使用可能になったら再接続する必要が
あります。
WebLogic Serverから切断されました: AdminServer


WebLogic Scripting Toolを終了しています。

Done
Stopping Derby Server...
WLSTからWebLogic Serverへの接続が失われました。
これは、サーバーが停止されたか、または分離された場合に
発生することがあります。サーバーが使用可能になったら再接続する必要が
あります。
Derby server stopped.
WebLogic Serverから切断されました: AdminServer
2024-06-12 13:30:48,511 [main] INFO  ovm.wlst.domainbuilder.Domain - Starting AdminServer...
2024-06-12 13:30:48,516 [main] INFO  ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:30:58,591 [main] INFO  ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:31:09,546 [main] INFO  ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:31:20,692 [main] INFO  ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...

2024-06-12 13:31:21,695 [main] INFO  ovm.wlst.domainbuilder.Domain - Connected.
2024-06-12 13:31:21,799 [main] INFO  ovm.wlst.domainbuilder.Domain - AdminServer state is RUNNING
2024-06-12 13:31:21,799 [main] INFO  ovm.wlst.commands - Deploying ovm_core
/u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_core/app/ovm_core_3.4.7.244.earのアプリケーションをターゲットAdminServerにデプロイしています(upload=false) ...
<2024/06/12 13時31分22秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_core [アーカイブ: /u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_core/app/ovm_core_3.4.7.244.ear]のdeploy操作をAdminServer に初期化しています。>
...アプリケーションのデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: deploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
すでにドメイン構成ツリーを参照しています


すでにドメイン構成ツリーを参照しています


2024-06-12 13:31:32,213 [main] INFO  ovm.wlst.domainbuilder.Domain - Created a user named appframework
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/u01/app/oracle/ovm-manager-3/ovm_cli/lib/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/u01/app/oracle/Middleware/wlserver/modules/features/weblogic.server.merged.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
6 12, 2024 1:31:32 午後 oracle.security.jps.JpsStartup start
情報: JPSの初期化中です。
6 12, 2024 1:31:34 午後 oracle.security.jps.JpsStartup start
情報: Jpsが開始されました。
2024-06-12 13:31:35,978 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Writing cacert.pem
2024-06-12 13:31:35,979 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Importing cacert.pem with alias ovmca
2024-06-12 13:31:36,350 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Generating key pair for appframework in /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmclient.jks
2024-06-12 13:31:37,016 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Exporting clientcert.pem from /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmclient.jks
2024-06-12 13:31:37,238 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Reading clientcert.pem
2024-06-12 13:31:37,239 [main] INFO  com.oracle.appfw.ovm.ws.client.SSLClientUtil - Signing certificate
2024-06-12 13:31:37,321 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Writing clientcert.pem
2024-06-12 13:31:37,321 [main] INFO  com.oracle.appfw.ovm.ws.client.KeytoolHelper - Importing clientcert.pem with alias appframework
2024-06-12 13:31:37,991 [main] INFO  com.oracle.appfw.ovm.ws.client.SSLClientUtil - Deleting cacert.pem
2024-06-12 13:31:37,991 [main] INFO  com.oracle.appfw.ovm.ws.client.SSLClientUtil - Deleting clientcert.pem
2024-06-12 13:31:38,004 [main] INFO  ovm.wlst.commands - Deploying ovm_console
/u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_console/app/ovm_console_3.4.7.244.earのアプリケーションをターゲットAdminServerにデプロイしています(upload=false) ...
<2024/06/12 13時31分38秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_console [アーカイブ: /u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_console/app/ovm_console_3.4.7.244.ear]のdeploy操作をAdminServer に初期化しています。>
..........アプリケーションのデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: deploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
<2024/06/12 13時32分08秒 JST> <Warning> <JNDI> <BEA-050001> <WLContext.close()が作成されたスレッドとは別のスレッドで呼び出されました。>

Client certificate login configuration complete

[root@ovm logs]#

これで、更新がおわったようで、Oracle VM ManagerのWeb管理画面にログインできるようになりました。

NetApp ONTAPのevent動作確認手法

syslogやsnmpにイベントを飛ばせる設定(EMS設定の概要)ができるのだが、設定した後の動作確認をどうするかを確認した

一般論的には「How to generate EMS Events manually for testing purposes」(日本語訳版)なのだが、サンプルとして書かれているコマンドを入力した場合の動作がいまいちである。

ontap9131::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

ontap9131::*> event generate -node ontap9131-01 -message-name monitor.volume.nearlyFull  -values Volume testshare@vsevrer:2d770626-xxxx-11ef-8a02-d039ea59xxxx is neary full is nearly full

ontap9131::*>

これでsyslogサーバには以下のログが届いた

May 23 15:29:01 rsyslogsevrer.adosakana.local [ontap9131-01: monitor.volume.nearlyFull:error]: Volume testshare@vsevrer:2d770626-xxxx-11ef-8a02-d039ea59xxxxisneary is nearly full (using or reserving full% of space and is% of inodes).

なんか出力内容が微妙

さがすともうちょっとまともなコマンド例が出てきた

Events not sent to syslog server due to network routes」(日本語訳版)

ontap9131::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

ontap9131::*> event generate -message-name monitor.volume.nearlyFull -values TEST,TEST,TEST,TEST,TEST,TEST

ontap9131::*>

これで届いたログは以下

May 23 15:18:32 rsyslogsevrer.adosakana.local [ontap9131-01: monitor.volume.nearlyFull:error]: TEST TESTTESTTEST is nearly full (using or reserving TEST% of space and TEST% of inodes).

ノード指定しなくても出力されてますね

何回かテストしてみたところ、未指定時は -01ノードの方から出力されており、-02ノードからノード指定しないとログが出ませんでした

あとはテストログの内容を現物に似せるため、まずは実際のエラーを出してみます

May 23 16:30:55 rsyslog.adosakana.local  [ontap9131-01: wafl.vol.autoSize.done:notice]: Volume autosize: Automatic grow of volume 'testshare@vserver:2d770626-xxxx-11ef-8a02-d039ea59xxxx' by 421MB is complete.
May 23 16:30:55 rsyslog.adosakana.local [ontap9131-01: monitor.volume.full:ALERT]: Volume "testshare@vserver:2d770626-xxxx-11ef-8a02-d039ea59xxxx" is full (using or reserving 99% of space and 0% of inodes).

それっぽい出力内容を調整すると下記な感じなんだけど「”」の入れ方がわからない・・・

ontap9131::*> event generate -message-name monitor.volume.nearlyFull -values Volume ,volume名,@SVM名,UUID,xx,yy

ontap9131::*>
May 23 16:40:24 rsyslog.adosakana.net [ontap9131-01: monitor.volume.nearlyFull:error]: Volume volume名@SVM名UUID is nearly full (using or reserving xx% of space and yy% of inodes).

2024/06/11追記

ONTAP EMS referencemonitor.volume.nearlyFull に詳細が書いてあった。

Parameters
object_type (STRING): Identifier for the type of object to which this event applies (aggregate or volume).
name (STRING): Name of this object.
app (STRING): Application UUID.
vserver_uuid (STRING): Universal Unique ID (UUID) of the object’s Vserver, if the object is a volume. Otherwise, this string is empty.
percent_full_blocks (STRING): Used capacity of the space of the object, as a percent.
percent_full_inodes (STRING): Used capacity of inodes of the object, as a percent.

ほかのメッセージでテストする場合は、このEMS referenceの内容を確認すればよい、ということも分かった


メモ

エラーイベントを送る場合(イベントフィルタ:default-trap-events で見れる)

event generate -message-name monitor.volume.nearlyFull -values Volume ,volume名,@SVM名,UUID,xx,yy

アラートイベントを送る場合(イベントフィルタ:important-events で見れる)

event generate -message-name monitor.volume.full -values Volume ,volume名,@SVM名,UUID,xx,yy

直近15分以内のイベントログを見る

event log show -time >=15m

2024年5月23日17:00~17:20までのイベントログを見る

event log show -time "5/23/2024 17:00:00".."5/23/2024 17:20:00"

メモ ONTAP AV Connector 1.0.6と1.0.7はONTAP 9.1で使おうとするとクラッシュする

Windows Updateおこなってない環境にONTAP 9.1のCIFSファイルサーバがあって、そこからONTAP 9.13.1の新機種に移行したい、とかいうので環境作って検証した。

正攻法としてはONTAP 9.1を9.3→9.5→9.7→9.9.1にアップデートしてから(参考:アップデート手順ガイド)、Snapmirror互換性がOKな9.9.1から9.13.1へのsnapmirrorを設定してボリュームを移行するって感じにはなっている。

しかし、保証はされていないものの、9.3→9.11.1のsnapmirrorとかはできるというのはやったことがあった。

ひょっとして9.1→9.13.1のsnapmirrorも可能なんじゃないか?と思って確認してみたところ、めっちゃできた。

で・・・今回の本題。

このONTAP 9.13.1環境の方でONTAP AV Connector経由でのアンチウイルス対策を行う設定をしたついでに、ONTAP 9.1P22環境の方も設定してみたところ、異常な動作が発生

ONTAP 9.1P22ファイルサーバから検査対象ファイルが送られてくると、受け取ったAV Connectorがクラッシュしてサービスが死ぬ、というもの

障害が発生しているアプリケーション名: ontapavc.exe、バージョン: 1.0.7.0、タイム スタンプ: 0x661cd147
障害が発生しているモジュール名: ntdll.dll、バージョン: 10.0.17763.5458、タイム スタンプ: 0x761f6403
例外コード: 0xc0000374
障害オフセット: 0x000e0773
障害が発生しているプロセス ID: 0x1120
障害が発生しているアプリケーションの開始時刻: 0x01daa0f22241d4b8
障害が発生しているアプリケーション パス: C:\Program Files (x86)\ONTAP AV Connector\ontapavc.exe
障害が発生しているモジュール パス: C:\Windows\SYSTEM32\ntdll.dll
レポート ID: 25143b91-e094-4f5e-938b-c2aa5cc35312
障害が発生しているパッケージの完全な名前: 
障害が発生しているパッケージに関連するアプリケーション ID: 
障害バケット 1543444931139731394、種類 1
イベント名: APPCRASH
応答: 使用不可
Cab ID: 0

問題の署名:
P1: ontapavc.exe
P2: 1.0.7.0
P3: 661cd147
P4: StackHash_9e39
P5: 10.0.17763.5458
P6: 761f6403
P7: c0000374
P8: PCH_3C_FROM_ntdll+0x00071C4C
P9: 
P10: 

添付ファイル:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA03E.tmp.dmp
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA0FA.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA11B.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA119.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA129.tmp.txt

これらのファイルは次の場所にある可能性があります:
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_ontapavc.exe_57546d7998f01e724387b6a478ec37f3d1a2348_9be34728_1fa5a5fb

分析記号: 
解決策を再確認中: 0
レポート ID: 25143b91-e094-4f5e-938b-c2aa5cc35312
レポートの状態: 268435456
ハッシュされたバケット: 519f2138c2a0e328e56b6afcc2f5ffc2
Cab GUID: 0

いろいろ試してみたところ、ONTAP 9.1だとAPIの使い方が違うために発生している模様で

ONTAP 9.3P22にアップデートしたところ、とりあえずAV Connectorがクラッシュすることもなく期待通りの動作をするようにはなった。

Oracle CloudのFree Tier(メモリ1GB)でdnfが死ぬ件でswapサイズを調べた

Oracle Cloud(OCI)にある無料枠(Free Tier)、x86_64ベースのやつはメモリが1GBとなっている。

Oracle Linux 7時代は特に問題なかった。

Oracle Linux 8も最初は特に問題なかったのだが、最近、dnfコマンドを実行するとOOM Killerでプロセスが殺されることが増えてきた。

Oracle Linux 9になると、OOM Killer発動するまで長時間かかりdnfコマンドの応答が返ってこないままフリーズしてるようにみえる、という状況が続く、というなかなかめんどくさいことになっていた。

Oracle Linux 9でtopコマンド実行しながら、dnf updateを実行して観察していると、レポジトリのファイル容量が80MBを超えているとdnfコマンド内部処理中にswapが1000MB以上使われているというのが見えた。

インスタンスとしては3GB~4GBぐらいのスワップ領域があるとよさそう、という感じである。

で、運用している環境で起きたりおきてなかったりするのはなぜなんだろう?と各インスタンスの設定状況を調べていくと、swap領域の設定がOCIイメージの作成時期によって違う、というめんどくさい状態であることが判明した。

特にOracle Linux 8の容量のかわりようが結構謎である・・・

ディストリビューションOCIイメージ名swap容量swap path
Oracle Linux 7 x86_64Oracle-Linux-7.7-2019.08.28-08G/dev/sda2
Oracle Linux 7 x86_64Oracle-Autonomous-Linux-7.8-2020.05-08G/dev/sda2
Oracle Linux 8 x86_64Oracle-Linux-8.7-2023.01.31-31.9G/.swapfile
Oracle Linux 8 aarch64Oracle-Linux-8.3-aarch64-2021.05.12-04G/.swapfile
Oracle Linux 8 aarch64Oracle-Linux-8.4-aarch64-2021.10.25-08G/.swapfile
Oracle Linux 8 aarch64Oracle-Linux-8.5-aarch64-2022.03.17-14G/.swapfile
Oracle Linux 8 aarch64Oracle-Linux-8.6-aarch64-2022.05.30-04G/.swapfile
Oracle Linux 9 x86_64Oracle-Linux-9.3-2024.04.22-0948M/.swapfile
Oracle Linux 9 x86_64Oracle-Linux-9.4-Minimal-2024.07.29-0なしなし

で、状況を総合的に考えると、Oracle CloudのFree TierでRHEL8.x/9.x系を使う場合は、swapを4GB確保していくべき、と判断でき、その運用を行っています。


2024/09/26 追加

Oracle Linux 9 Minimalで構築したところ、こちらはなんとswapなし設定でした。