はじめに
技術部ネットワーク課の二之宮です。
Zabbix のサーバーのシステム領域を含むファイルシステムのディスク使用率が 90% を超えました。
検証目的で作成したサーバーで、取り合えず 1つのファイルシステムに全てを詰め込んで構築していましたので、なんとかすることにしました。
やったこと
Zabbix のデータベースを、空き領域の少ないファイルシステムから、空き領域の多いファイルシステムに移動しました。
当初、データベースを移動し、MariaDB のデータディレクトリとソケットファイルの設定、Zabbix Server, PHP それぞれのデータベースのソケットファイルの設定を変更することで行いましたが、社内勉強会で、ソケットファイルはファイルシステムの容量を多く消費するわけではないので、元の場所に残しても良いのではないかとの意見があり、この方法を検証しました。
検証環境
ソフトウェア構成
種類 | ソフトウェア・バージョン |
---|---|
Zabbix ソフトウェア | Zabbix server 4.0.14 |
プラットフォーム | CentOS 7.7 |
データベース管理システム | MariaDB 5.5( InnoDB ) |
フロンドエンド | Apache 2.4.6, PHP 5.4.16 |
パーティション構成
ファイルシステム | サイズ | マウントポイント |
---|---|---|
/dev/sda1 | 10 GB | / |
/dev/sda3 | 451 GB | /mnt |
検証手順
MariaDB のソケットファイルの場所は変えずに、データディレクトリを移動する。
- Zabbix Server 停止
systemctl stop zabbix-server
- MariaDB 停止
systemctl stop mariadb
- MariaDB のデータディレクトリをコピー
rsync -av /var/lib/mysql /mnt/
- 旧データディレクトリ名変更
今回は、万が一の時に元に戻せるように、削除せずに名前を変更しました。
mv -v /var/lib/mysql /var/lib/mysql.bak
- ソケットファイル用ディレクトリ再作成
mkdir /var/lib/mysql
- ユーザーとオーナーを変更
chown mysql:mysql /var/lib/mysql
- MariaDB の設定変更
データディレクトリの設定を、移動後のパスに変更する。
vi /etc/my.cnf
- 変更前
datadir=/var/lib/mysql
- 変更後
datadir=/mnt/mysql
- 変更前
- MariaDB 起動
systemctl start mariadb
- Zabbix Server 起動
systemctl start zabbix-server
- 旧データディレクトリ削除
様子を見て問題なければ削除して、空き領域を確保する。
rm -rf /var/lib/mysql.bak
検証結果
MariaDB のソケットファイルの場所は変えない方法で、データディレクトリを移動し、移動後も、Zabbix が問題なく稼働することが確認できました。
終わりに
ソケットファイルを残す方法だと、データベースの移動が MariaDB のデータディレクトリの指定を 1か所替えるだけで行えるため、より良い方法だと思いました。