Я установил базу данных postgresql на Redhat 7.1 и решил переместить базу данных на устройство ISCSI (LUN) внутри логического тома, смонтированного при запуске машины (в формате xfs). Точка монтирования - / var / lib / pgsql
При загрузке сервера postgresql.service находится в состоянии сбоя.
В messages.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 и т. Д. Итак, я попытался принудительно установить зависимости от /usr/lib/systemd/system/postgresql.service, добавив "После = lvm-pgscan.service iscsi.service "и т. д ... но результат тот же:
failure in starting postgresql
systemd: Starting Remote File Systems (Pre)
systemd: Reached Remote File Systems (Pre)
systemd: mounting /var/lib/pgsql
systemd: starting PostgreSQL database server
kernel sdb: unknown partition table
postgresql-check-db-dir: "/var/lib/pgsql/data" is missing or empty
kernel: xfs (dm-4): Mounting V4 Filesystem
postgresql.service: control process exited, code=exited status=1
Failed to start PostgreSQL database server.
Unit postgresql.service entered failed state
sd 2:0:0:0: [sdb] attached SCSI disk
starting LVM2 PV scan on device 8:16
kernel: xfs (dm-3): Ending clean mount
systemd: Mounted /var/lib/pgsql
Starting Remote File Systems
Reached target Remote File Systems
Любые идеи?
Чтобы убедиться, что PostgreSQL запускается после монтирования тома iSCSI, сделайте следующее:
cat >/etc/systemd/system/postgresql.service <<EOF
.include /lib/systemd/system/postgresql.service
[Unit]
After=remote-fs.target
EOF
Это работает с произвольной службой (MongoDB, MySQL ...) и любым удаленным доступом (NFS, Samba ...).
Привет всем,
Я решил это на своем сервере (RHEL 7.2), отредактировав /usr/lib/systemd/system/postgresql-9.5.service и добавив After = remote-fs.target.
Надеюсь это поможет.
Лучше, Тим.