TL;DR
筆者の場合はログファイルが溢れているのが原因だった。
適当に大きめのものを消す。
$ find /storage/log/vmware/sso/tomcat -type f -not -name '*2023*' -exec rm -rfv {} +
問題
vCenter の管理画面 (:5480
のアレ) でアップグレードを試したが、以下の画面が表示されて失敗してしまう。
調査
公式ドキュメント
まずは VMWare のドキュメントにあたった。
しかしページ内で示されている /var/log/vmware/upgrade/upgrade-requirements.log
なるファイルは見当たらず、参考にならなかった。
しかし、 /var/log/vmware/upgrade
といういかにもなディレクトリがあることは参考になる。
ログを見る
次に、上記で知った /var/log/vmware/upgrade
というフォルダから怪しいログを探してみる。
$ ls -alt
total 708
-rw-r--r-- 1 root root 339968 Sep 2 01:08 upgrade-post-import.log
-rw-r--r-- 1 root root 339968 Sep 2 01:08 bootstrap.log
drwxr-xr-x 55 root root 12288 Sep 2 00:00 ..
drwxr-xr-x 2 root root 4096 Aug 26 16:50 .
-rw-r--r-- 1 root root 0 Aug 26 16:50 import-succeeded
-rw-r--r-- 1 root root 0 Aug 26 16:50 export-succeeded
-rw-r--r-- 1 root root 0 Aug 26 16:50 prechecks-succeeded
-rw-r--r-- 1 root root 6422 Dec 3 2021 upgrade-linux-requirements.log
-rw-r--r-- 1 root root 10195 Dec 3 2021 requirements-upgrade-runner.log
一番最近に更新されている upgrade-post-import.log
のログを見てみたが、 INFO ばかりで参考になりそうな情報はなかった。
なので INFO を抜いたログを見てみる。 (一部抜粋)
$ grep -v INFO *
upgrade-linux-requirements.log:2021-12-03T04:45:16.710Z ERROR transport Command ['/usr/bin/python', '/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/UpgradeOrchestrator.py', '-m', 'requirements', '-f', '/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/config.json', '-o', '/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/upgrade-requirements-status.json', '--logDir', '/var/log/vmware/upgrade', '--logFileName', 'requirements-upgrade-runner.log', '--cancelFile', '/var/tmp/upgrade_cancel.op', '-l', 'en', '--disableScreenLog'] exit-code=1, stdout=, stderr=
upgrade-linux-requirements.log:2021-12-03T04:45:16.714Z ERROR __main__ FAILED: Found upgrade requirements mismatches.
日時は古いものの、怪しい。
同じコマンドを、 --disableScreenLog
だけ抜いて実行してみる。
/usr/bin/python /var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/UpgradeOrchestrator.py -m requirements -f /var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/config.json -o /var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/upgrade-requirements-status.json --logDir /var/log/vmware/upgrade --logFileName requirements-upgrade-runner.log --cancelFile /var/tmp/upgrade_cancel.op -l en
2023-09-01T16:22:46.236Z INFO __main__ Passed arguments: ['/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/UpgradeOrchestrator.py', '-m', 'requirements', '-f', '/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/config.json', '-o', '/var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/upgrade-requirements-status.json', '--logDir', '/var/log/vmware/upgrade', '--logFileName', 'requirements-upgrade-runner.log', '--cancelFile', '/var/tmp/upgrade_cancel.op', '-l', 'en']
2023-09-01T16:22:46.236Z INFO __main__ ---This is migration/upgrade to version 7.0---
2023-09-01T16:22:46.239Z ERROR config.config_loader Cannot find global configuration /var/tmp/vmware-upgrade-requirements/cis-upgrade-runner/config.json. Exiting...
2023-09-01T16:22:46.239Z INFO output.requirements_result_producer Repository is not set, not adding SSO information.
2023-09-01T16:22:46.239Z INFO output.requirements_result_producer Setting storage partitions for component 'upgrade_framework'.
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.7/logging/__init__.py", line 1029, in emit
self.flush()
File "/usr/lib/python3.7/logging/__init__.py", line 1009, in flush
self.stream.flush()
OSError: [Errno 28] No space left on device
## 省略 ##
ディスクがいっぱいらしいので確認してみる。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 9.3G 0 9.3G 0% /dev
tmpfs 9.4G 780K 9.4G 1% /dev/shm
tmpfs 9.4G 1.2M 9.4G 1% /run
tmpfs 9.4G 0 9.4G 0% /sys/fs/cgroup
/dev/sda3 46G 10G 34G 23% /
/dev/sda2 120M 24M 88M 22% /boot
/dev/mapper/lifecycle_vg-lifecycle 98G 2.2G 91G 3% /storage/lifecycle
/dev/mapper/vtsdblog_vg-vtsdblog 15G 73M 14G 1% /storage/vtsdblog
/dev/mapper/vtsdb_vg-vtsdb 25G 76M 24G 1% /storage/vtsdb
/dev/mapper/archive_vg-archive 49G 42G 5.3G 89% /storage/archive
/dev/mapper/updatemgr_vg-updatemgr 98G 6.4G 87G 7% /storage/updatemgr
/dev/mapper/imagebuilder_vg-imagebuilder 9.8G 37M 9.3G 1% /storage/imagebuilder
/dev/mapper/log_vg-log 9.8G 9.8G 0 100% /storage/log
/dev/mapper/autodeploy_vg-autodeploy 9.8G 37M 9.3G 1% /storage/autodeploy
/dev/mapper/dblog_vg-dblog 15G 201M 14G 2% /storage/dblog
/dev/mapper/netdump_vg-netdump 985M 2.5M 915M 1% /storage/netdump
/dev/mapper/core_vg-core 49G 301M 47G 1% /storage/core
tmpfs 9.4G 11M 9.3G 1% /tmp
/dev/mapper/db_vg-db 9.8G 459M 8.9G 5% /storage/db
/dev/mapper/seat_vg-seat 25G 439M 23G 2% /storage/seat
/storage/log
というデバイスが 100% になってしまっている。。。
原因・解決
というわけで、ログ用のディスク?がいっぱいになっていることがエラーの原因だった。
大きなファイルを消してあげることで解決できるだろう。
圧迫してそうなやつを探してみると、どうやら vmware/sso/tomcat
というのが大きそうだ。
$ du -hc /storage/log | sort -h | tail
502M /storage/log/vmware/vsphere-ui/logs
532M /storage/log/vmware/vmware-updatemgr
532M /storage/log/vmware/vmware-updatemgr/vum-server
636M /storage/log/vmware/vpxd
1.9G /storage/log/vmware/lookupsvc
4.6G /storage/log/vmware/sso
4.6G /storage/log/vmware/sso/tomcat
9.8G /storage/log
9.8G total
9.8G /storage/log/vmware
中を見てみると、そこそこのサイズのファイルが大量にある様子。
$ ls -al vmware/sso/tomcat/
total 4751672
drwxr-xr-x 2 root root 61440 Sep 1 09:00 .
drwxr-xr-x 3 root root 4096 Sep 1 08:21 ..
-rw-r--r-- 1 root root 5359230 Dec 3 2021 catalina.2021-12-02.log
-rw-r--r-- 1 root root 10791360 Dec 4 2021 catalina.2021-12-03.log
-rw-r--r-- 1 root root 10790111 Dec 5 2021 catalina.2021-12-04.log
-rw-r--r-- 1 root root 10790111 Dec 6 2021 catalina.2021-12-05.log
-rw-r--r-- 1 root root 10790111 Dec 7 2021 catalina.2021-12-06.log
## 省略 ##
古いログを見ることはほとんどないので、消してしまうことにした。
今回は、今が 2023/08 であることを踏まえて 2022 年以前のログファイルを消すことにした 1。
$ find /storage/log/vmware/sso/tomcat -type f -not -name '*2023*' -exec rm -rfv {} +
removed '/storage/log/vmware/sso/tomcat/localhost_access.2022-09-24.log'
removed '/storage/log/vmware/sso/tomcat/localhost_access.2022-11-02.log'
removed '/storage/log/vmware/sso/tomcat/localhost_access.2022-12-15.log'
removed '/storage/log/vmware/sso/tomcat/catalina.2022-12-23.log'
removed '/storage/log/vmware/sso/tomcat/localhost_access.2022-09-26.log'
removed '/storage/log/vmware/sso/tomcat/catalina.2022-05-17.log'
removed '/storage/log/vmware/sso/tomcat/catalina.2022-03-10.log'
removed '/storage/log/vmware/sso/tomcat/catalina.2022-05-28.log'
## 省略 ##
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 9.3G 0 9.3G 0% /dev
tmpfs 9.4G 780K 9.4G 1% /dev/shm
tmpfs 9.4G 1.2M 9.4G 1% /run
tmpfs 9.4G 0 9.4G 0% /sys/fs/cgroup
/dev/sda3 46G 10G 34G 23% /
/dev/sda2 120M 24M 88M 22% /boot
/dev/mapper/lifecycle_vg-lifecycle 98G 2.2G 91G 3% /storage/lifecycle
/dev/mapper/vtsdblog_vg-vtsdblog 15G 73M 14G 1% /storage/vtsdblog
/dev/mapper/vtsdb_vg-vtsdb 25G 76M 24G 1% /storage/vtsdb
/dev/mapper/archive_vg-archive 49G 42G 5.3G 89% /storage/archive
/dev/mapper/updatemgr_vg-updatemgr 98G 6.4G 87G 7% /storage/updatemgr
/dev/mapper/imagebuilder_vg-imagebuilder 9.8G 37M 9.3G 1% /storage/imagebuilder
/dev/mapper/log_vg-log 9.8G 5.5G 3.8G 59% /storage/log
/dev/mapper/autodeploy_vg-autodeploy 9.8G 37M 9.3G 1% /storage/autodeploy
/dev/mapper/dblog_vg-dblog 15G 201M 14G 2% /storage/dblog
/dev/mapper/netdump_vg-netdump 985M 2.5M 915M 1% /storage/netdump
/dev/mapper/core_vg-core 49G 301M 47G 1% /storage/core
tmpfs 9.4G 11M 9.3G 1% /tmp
/dev/mapper/db_vg-db 9.8G 459M 8.9G 5% /storage/db
/dev/mapper/seat_vg-seat 25G 439M 23G 2% /storage/seat
だいぶスッキリした。
まとめ
そういえば vCenter UI 上でストレージ周りのエラーが出ていた気がする。
ちゃんと読んでおけばよかった。
というか容量を食っているのがログなら、古いものを削除するかどうかの UI くらい出してくれてもいいのになぁ。
-
実行してから気づいたが、 yyyy-mm-dd を名前に含まないファイルを考慮していなかった。まあいいか。 ↩