![postgresql の起動に失敗しました](https://rvso.com/image/83712/postgresql%20%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F.png)
私は 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 を起動する前にローカル ファイルシステムがマウントされるまで待機するようになります。