はじめに
zabbix6.4のアプライアンス版では、/dev/sda5が/var/lib/mysql(MYSQLで使用するメインディレクトリ)にマウントされています。/dev/sda5ではなく、他のディスクやLVMを使用する場合は、/dev/sda5をそのままコピーするだけでは上手くいきません。今回は、管理人がメモしたことを元ネタとして手順を公開します。
成し遂げたいこと
/dev/sda5の代わりに新規に作成したLVMの論理ボリュームを使用してmysqlのデータを格納します。
前提
- lvm2パッケージをインストール済みであること。していない場合はdnf install lvm2でインストールしてください。
- 使用するディストリビューションはAlma Linuxですが、Ubuntuでも同様の手順となります。
LVMの作成
LVM用に追加したディスクを確認します。
[コマンド] lsblk
ここでは、/dev/sdb、/dev/sdcが追加されたと仮定しましょう。
pvの作成
[コマンド] pvcreate /dev/sdb /dev/sdc [確認コマンド] pvs
vgの作成
[コマンド] vgcreate vg-name /dev/sdb /dev/sdc [確認コマンド] vgs
lvの作成
[コマンド] lvcreate -n lv-name -L xxxG vg-name ※xxxには拡張したディスクサイズを数字で入れる。 [確認コマンド] lvs
LVMが作成されたことを確認
[コマンド] ll /dev/mapper/ → vg-name-lv-nameがあるはずです
XFSでフォーマット
[コマンド] mkfs.xfs /dev/mapper/vg-name-lv-name [確認コマンド] xfs_info /dev/mapper/vg-name-lv-name ※parted -lだとLVMで作成したデバイスが表示されないためです。
システムの停止
[コマンド] systemctl stop php-fpm zabbix-server zabbix-agent systemctl stop mysqld [確認コマンド] systemctl status zabbix-server systemctl status zabbix-agent systemctl status php-fpm systemctl status mysqld
LVMをマウント
先ほど作成したLVMへアクセスすることができるように、新規に作成した/mnt/dataというマウントポイントへマウントします。
[コマンド] cd /mnt/ mkdir data cd ~/ mount /dev/mapper/vg-name-lv-name /mnt/data/ [確認] df -h
/var/lib/mysqlを/mnt/dataへコピー
[コマンド] cp -pr /var/lib/mysql /mnt/data ※pでディレクトリがない場合に新規作成、rで再帰的にコピー
MYSQLの設定ファイルの修正
/etc/my.cnf.d/mysql-server.cnf
次のように修正します。戻し作業を簡単にするためにもコメントアウトして新しく追加するのが良いでしょう。
[mysqld] datadir=/mnt/data/mysql socket=/mnt/data/mysql/mysql.sock
/etc/my.cnf.d/client.cnf
[client] socket=/mnt/data/mysql/mysql.sock ※元々は空欄ですが新規に追加してください
/etc/my.cnf.d/zabbix.cnf
[修正箇所] datadir =/mnt/data/mysql/
確認
mysqlに接続できるか確認をしてみます。
systemctl start mysqld mysql -uroot -p →access denyのように表示されるはずです。これで問題ありません。 systemctl stop mysqld
PHP設定ファイルの修正
/etc/php.ini
[修正箇所] mysqli.default_socket = /mnt/data/mysql/mysql.sock [確認コマンド] cat /etc/php.ini | grep mysqli.default_socket
zabbixサーバ設定ファイルの修正
/etc/zabbix/zabbix_server.conf
[修正箇所] DBSocket=/mnt/data/mysql/mysql.sock [確認コマンド] cat /etc/zabbix/zabbix_server.conf | grep DBSocket=
システムの起動
[コマンド] systemctl start mysqld systemctl start zabbix-agent zabbix-server php-fpm [確認コマンド] systemctl status mysqld systemctl status zabbix-server systemctl status zabbix-agent systemctl status php-fpm
ここで、各サービスが正常にUPしていれば成功です。
最後に、再起動した後に新規マウントポイントへ自動的にLVMをマウントするようにfstabの修正を行います。
自動マウントの有効化
デフォルトでは、再起動時に新しく増設したLVM(のLVに作成したファイルシステム)を/mnt/dataにマウントしません。/etc/fstabに定義がされていないためです。そこで自動的にマウントされるように追記します。
その前に、追記に必要な情報について確認します。
[コマンド] blkid →/dev/mapper/vg-name-lv-name: UUID="xxx" BLOCK_SIZE="4096" TYPE="xfs" が表示されます。
[コマンド] vi /etc/fstab こちらは、既に記載されているものと同様な書き方で一番下に追加すればよいです。 また、/var/lib/mysqlへ自動的にマウントされないようにコメントアウトします。 [確認コマンド] cat /etc/fstab
最後に、自動的にマウントを行うコマンドを投入し、新規に追加した行で定義したデバイスが自動的にマウントされること、コメントアウトしたデバイスがマウントされないことを確認します。
[コマンド] mount -a [確認コマンド] df -h
備忘録(手順とは関係ない)
マウントできない場合
模索しながらやった時にLVMを/mnt/dataへマウントができなかったのですが、これは、マウントする前にddコマンドでディスクをコピーしていたからです。手順通りに行えばそういったことはないのですが、原因はUUIDの重複です。次のコマンドで対処可能です。
xfs_repair -L /dev/mapper/vg--name-lv--name ※修復が必要な場合があるため xfs_admin -U generate /dev/mapper/vg--name-lv--name ※UUIDを新規作成
コメント