概要
以下の環境でGrowi v7.0.11 から v7.2.2 へのアップデートを試みたものの、サーバーのCPUハードウェア制約により断念し、データベース (MongoDB) を元の安定バージョンへ切り戻しました。
その時のメモです。
作業前の環境
- OS: Ubuntu 20.04 LTS (Focal Fossa)
- Growi: v7.0.11
- Node.js: v18.20.8
- MongoDB: v4.4.9
目指したこと
- まずはMongoDB を Growi v7.2.2 が要求する v6.0 以上へアップデートする。
詰まったところ
Growi v7.2.2 の要求事項確認
- Node.js: v18 以上のためOK。
- MongoDB: v6.0 以上が必要だったため、現在の v4.4.9 アップデートが必要。
MongoDB段階的アップデート計画
MongoDB v4.4 から v6.0 へは、段階的なアップグレード (4.4 → 5.0 → 6.0 の順) が推奨されるため、まず MongoDB v5.0 へのアップデートに着手しました。
MongoDB 5.0 のGPGキー追加:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
MongoDB 5.0 のリポジトリリストファイル作成:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
パッケージリストの更新:
sudo aptitude update
sudo aptitude upgrade
CPUのAVX命令セット非対応問題の発覚
バージョンアップを確認するため
mongod --version
を実施しましたが、Illegal instruction (コアダンプ)
というエラーが発生しました。
調査の結果、MongoDB v5.0 以降ではCPUがAVX (Advanced Vector Extensions) 命令セットをサポートしていることが必須要件となっていることが判明。
grep -q avx /proc/cpuinfo && echo "AVX supported" || echo "AVX not supported"
AVX not supported
と表示されたため、現在のサーバーでは MongoDB v5.0 及びそれ以降のバージョン (v6.0を含む) を動作させることが不可能であると結論。
そのため、目指したMongoDBのアップデートもGrowiのバージョンアップも断念。
MongoDB の切り戻し作業 (v4.4.x へ)
なので、切り戻しを行います。単にバージョンを指定してのインストールはうまくいきませんでした。
というのも依存関係の解決時に libc6 >= 2.34
や libssl3
(Ubuntu 22.04 Jammy のライブラリ) を要求するエラーが発生したからです。
これは、
/etc/apt/sources.list.d/
ディレクトリに最初のMongoDBのアップデート時のリポジトリが残っていたためです。
不要なMongoDBリポジトリ設定の削除
sudo rm /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo rm /etc/apt/sources.list.d/mongodb-org-6.0.list
インストール済みパッケージのクリーンアップ
sudo aptitude purge mongodb-org mongodb-org-database mongodb-org-database-tools-extra mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools mongodb-database-tools mongodb-mongosh
MongoDB v4.4 用GPGキーの再設定
wget https://www.mongodb.org/static/pgp/server-4.4.asc && sudo apt-key add server-4.4.asc
sudo aptitude update
MongoDB v4.4.x のインストール
apt-cache policy mongodb-org-server
インストール候補がMongoDB v4.4系であることを確認。
sudo aptitude install mongodb-org-server=4.4.29 mongodb-org-shell=4.4.29 mongodb-org-tools=4.4.29`
動作確認
mongod --version
以下を確認。
db version v4.4.29
Build Info: {
"version": "4.4.29",
"gitVersion": "f4dda329a99811c707eb06d05ad023599f9be263",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
systemctl status mongod
active(running)
を確認。
この切り戻しにより、Growi が正常に動作することを確認しました。
MongoDB パッケージの固定 (Hold)
sudo aptitude hold mongodb-org-server mongodb-org-shell mongodb-org-tools
として、不要なアップデートを防ぐ措置を執りました。
結論
そもそもの問題として、いくらローカル環境とは言え、既にEOLを迎えているUbuntu20.04の延命措置を執ろうとしたことが誤りです。
また、OSのバージョンアップをしたとしてもCPUが対応していないと言うことが判明したことは、ハードウェアのリプレースも必要だという現実も突きつけられました。
いい機会なので、自宅のローカル環境の見直しを図ります。
コメントを残す