postgresql の起動に失敗しました

postgresql の起動に失敗しました

私は Redhat 7.1 に postgresql データベースをインストールし、マシンの起動時にマウントされた論理ボリューム内の ISCSI デバイス (LUN) にデータベースを移動することにしました (xfs 形式)。マウント ポイントは /var/lib/pgsql です。

サーバーの起動時に、postgresql.service は失敗状態になります。

メッセージ.log 内:

systemd: mounting /var/lib/pgsql
 starting PostgreSQL database server
 kernel sdv: unknown partition table
 sd 2:0:0:0: [sdb] attached SCSI disk
 xfs (dm-4): Mounting V4 Filesystem
 postgresql-check-db-dir: "/var/lib/pgsql/data" is missing or empty
 postgresql.service: control process exited, code=exited status=1
 Failed to start PostgreSQL database server.

サーバーにログオンしているときに、データベースを手動で起動しようとすると、次のメッセージが表示されます: systemctl start postgresql--> OK (データは失われず、データベースは利用可能です)

これはブート プロセスの順序の問題だと思います。ネットワーク サービスを開始し、次に iscsi、次に lvm などを開始する必要があります。

そこで、「After=lvm-pgscan.service iscsi.service」などを追加して、/usr/lib/systemd/system/postgresql.service への依存関係を強制しようとしましたが、何も変わりませんでした。

何か案は ?

答え1

/usr/lib/systemd/system/postgresql.serviceコメント文字列に基づくと、編集によって状況が修正されたようですAfter=local-fs.target。私にとってヒントになったのは次のメッセージです:

postgresql-check-db-dir: "/var/lib/pgsql/data" が見つからないか空です

/varこれは、postgres がマウントされる前に起動しようとしていることを意味していました。after制限を追加すると、systemd は postgres を起動する前にローカル ファイルシステムがマウントされるまで待機するようになります。

関連情報