Возможно ли иметь каталог данных Postgres (13 в CentOS 8) на общем диске с помощью Oracle VBOX (6.1 в Windows 10)?

A) Смонтировал каталог Virtualbox с необходимыми правами собственности и разрешениями:

ls-l /var:

      drwx------.  1 postgres postgres 4096 Aug 20 12:43 pgshared

(и каталог / var / pgshared / data был создан с точно таким же разрешением)

Б) Изменена переменная среды PGDATA со значения по умолчанию на этот каталог данных.

C) initdb завершился с ошибкой ниже:

      fixing permissions on existing directory /var/pgshared/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Europe/Brussels
creating configuration files ... ok
running bootstrap script ... 2021-08-20 12:16:08.088 CEST [2807] LOG:  could not link file "pg_wal/xlogtemp.2807" to "pg_wal/000000010000000000000001": Operation not permitted
2021-08-20 12:16:08.090 CEST [2807] FATAL:  could not open file "pg_wal/000000010000000000000001": No such file or directory
child process exited with exit code 1

initdb: removing contents of data directory "/var/pgshared/data"

Дополнительные комментарии:

Использование опции -D дает тот же результат (независимо от переменной среды PGDATA)

2 ответа

Ошибка означает, что файловая система не поддерживает жесткие ссылки ( системный вызов не работает).

Даже если вам удастся разместить каталог данных, PostgreSQL не будет работать. Для подтверждения выполните несколько раз следующее:

      SELECT pg_switch_xlog();

Вам придется использовать другую файловую систему, которая реализует все необходимые системные вызовы.

Это обходной путь, который я использовал, и я смог успешно продолжить создание баз данных и подключение к ним, но я (пока) не знаю, столкнусь ли я с дальнейшими проблемами. Кроме того, до сих пор неизвестна первопричина и реальное решение:

1- Поскольку инициализацию можно было выполнить на локальном диске, я отключил общий диск (umount /var/pgshared) и инициализировал базу данных. это было успешно, и папка данных была создана со всем ожидаемым содержимым.

2- Я переместил папку данных во временное место и повторно смонтировал общую папку с той же командой монтирования.

3- Я вернул папку данных на смонтированный диск.

4- Я провел простой тест с помощью команд psql.

Другие вопросы по тегам