Fedora 22 上的 NFS Vagrant

NFS Vagrant on Fedora 22

我正在尝试 运行 Vag运行t 使用 libvirt 作为我的供应商。使用 rsync 是无法忍受的,因为我正在处理一个巨大的共享目录,但是当注释掉 nfs 设置并设置标准 rsync 配置时,vag运行t 确实成功了。

config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=777']

Vag运行t 在 运行ning vag运行t up

之后永远挂在这一步
==> default: Mounting NFS shared folders...

在我的 Vag运行t 文件中,我取消了注释,并且注释掉了 rsync 配置,这打开了 NFS。

config.vm.synced_folder ".", "/vagrant", type: "nfs"

当 Vag运行t 处于 运行ning 时,它会将此回显到终端。

Redirecting to /bin/systemctl status  nfs-server.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
Redirecting to /bin/systemctl start  nfs-server.service
Job for nfs-server.service failed. See "systemctl status nfs-server.service" and "journalctl -xe" for details.

systemctl status nfs-server.service

的结果
dillon@localhost ~ $ systemctl status nfs-server.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2015-05-29 22:24:47 PDT; 22s ago
  Process: 3044 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=1/FAILURE)
  Process: 3040 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 3044 (code=exited, status=1/FAILURE)

May 29 22:24:47 localhost.sulfur systemd[1]: Starting NFS server and services...
May 29 22:24:47 localhost.sulfur rpc.nfsd[3044]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
May 29 22:24:47 localhost.sulfur rpc.nfsd[3044]: rpc.nfsd: unable to set any sockets for nfsd
May 29 22:24:47 localhost.sulfur systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE
May 29 22:24:47 localhost.sulfur systemd[1]: Failed to start NFS server and services.
May 29 22:24:47 localhost.sulfur systemd[1]: Unit nfs-server.service entered failed state.
May 29 22:24:47 localhost.sulfur systemd[1]: nfs-server.service failed.

journelctl -xe 日志中包含大量内容,因此我不会在此处 post 所有内容,但有些内容以粗体红色显示。

May 29 22:24:47 localhost.sulfur rpc.mountd[3024]: Could not bind socket: (98) Address already in use
May 29 22:24:47 localhost.sulfur rpc.mountd[3024]: Could not bind socket: (98) Address already in use
May 29 22:24:47 localhost.sulfur rpc.statd[3028]: failed to create RPC listeners, exiting
May 29 22:24:47 localhost.sulfur systemd[1]: Failed to start NFS status monitor for NFSv2/3 locking..

在我 运行 vag运行t up 之前,我查看是否有任何进程使用 netstat -tulpn 绑定到端口 98 并且没有看到任何东西,事实上当 vag运行t 挂起我再次 运行 netstat -tulpn 以查看绑定到端口 98 的内容,但没有看到任何内容。 (检查当前用户和 root)

更新:尚未收到任何回复。

我无法弄清楚我当前遇到的问题。我尝试改用 lxc,但在启动时卡住了。我也不想使用 VirtualBox,但问题似乎出在 nfs 而不是管理程序中。打算尝试使用 Vag运行t 提供的 rsync-auto 功能,但我更愿意让 nfs 工作。

看起来在使用 libvirt 时,用户可以控制 nfs 和 rpcbind,而 Vagrant 甚至没有像我假设的那样尝试触及这些东西。 运行 这些解决了我的问题:

service rpcbind start
service nfs stop
service nfs start

nfs-server.service 的 systemd 单元依赖项包含 rpcbind.target 但不包含 rpcbind.service

一个简单的解决方案是创建一个文件 /etc/systemd/system/nfs-server.service 包含:

.include /usr/lib/systemd/system/nfs-server.service

[Unit]
Requires=rpcbind.service
After=rpcbind.service

在 CentOS 7 上,我需要做的一切 正在安装缺少的 rpcbind,如下所示:

yum -y 安装 rpcbind

systemctl 启用 rpcbind

systemctl 启动 rpcbind

systemctl 重启 nfs 服务器

我花了一个多小时才找到并尝试这个:)

米歇尔

我在 Fedora 22 上同时使用 libvirt 和 VirtualBox 提供程序挂载 NFS 时遇到问题。经过大量的咬牙切齿,我设法弄清楚这是一个防火墙问题。 Fedora 似乎默认附带 firewalld 服务。停止该服务 - sudo systemctl stop firewalld - 对我有用。

当然,理想情况下您应该配置此防火墙而不是完全禁用它,但我不知道该怎么做。