vCenter のアップグレードに失敗する

## TL;DR

筆者の場合はログファイルが溢れているのが原因だった。  
適当に大きめのものを消す。

```
$ find /storage/log/vmware/sso/tomcat -type f -not -name '*2023*' -exec rm -rfv {} +
```

## 問題

vCenter の管理画面 (`:5480` のアレ) でアップグレードを試したが、以下の画面が表示されて失敗してしまう。

![Screenshot from 2023-09-02 01-26-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508344/2c09c550-c169-5261-956f-9fefd0aab95c.png)

## 調査

### 公式ドキュメント

まずは VMWare のドキュメントにあたった。

https://kb.vmware.com/s/article/78296?lang=ja

しかしページ内で示されている `/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 年以前のログファイルを消すことにした [^find]。

[^find]: 実行してから気づいたが、 yyyy-mm-dd を名前に含まないファイルを考慮していなかった。まあいいか。

```
$ 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 くらい出してくれてもいいのになぁ。