与 vagrant 一起使用时无法启动 postgresql

与 vagrant 一起使用时无法启动 postgresql

尝试在由 Vagrant 管理的 Virtualbox VM 上启动 postgresql 时出现以下错误:

LOG:  could not link file "pg_xlog/xlogtemp.29" to "pg_xlog/000000010000000000000001" (initialization of log file): Operation not permitted
FATAL:  could not open file "pg_xlog/000000010000000000000001": No such file or directory

```

答案1

当 postgresql 的数据目录位于 Vagrant 共享文件夹 (/vagrant例如 ) 中,并且 Vagrant 主机是 Windows 时,就会发生这种情况。在这种情况下,无法以 unix 方式设置权限。

将该文件夹移动到另一个位置(例如 vagrant 用户的主目录)然后 postgresql 将启动。

解决方案位于:https://gitlab.com/gitlab-org/gitlab-development-kit/issues/20

答案2

造成这种情况的根本原因是 vboxsf 不支持文件系统链接(无论是硬链接还是符号链接)。您可以通过在 VirtualBox 客户机内安装主机文件夹并尝试执行以下操作来重现此问题: ln /path/to/mounted/share/existingfile.txt /some/path/link-to-file.txt

例如(将 /var/data 安装为 vboxsf 共享) jim@a55a005fc5a5:/~ ln /var/data/foo.txt ~/data/link-to-foo ln: failed to create hard link ‘/users/jim/data/link-to-foo’ => ‘/var/data/foo.txt’: Operation not permitted

virtualbox.org 上有很多关于此问题的票(#818#10085),但考虑到他们已经过去 7 年了,可能还需要一段时间才能修复!

相关内容