Fedora 22 上的 NFS Vagrant

Posted

技术标签:

【中文标题】Fedora 22 上的 NFS Vagrant【英文标题】:NFS Vagrant on Fedora 22 【发布时间】:2015-05-30 05:41:59 【问题描述】:

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

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

运行 vagrant up 后,Vagrant 在这一步永远挂起

==> default: Mounting NFS shared folders...

在我的 Vagrantfile 中,我没有对此进行注释,并且将 rsync 配置注释掉,这会打开 NFS。

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

当 Vagrant 运行时,它会将其回显到终端。

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 日志中有很多内容,所以我不会在这里全部发布,但有些内容以粗体红色显示。

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..

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

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

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

【问题讨论】:

【参考方案1】:

看起来当使用 libvirt 时,用户被赋予了对 nfs 和 rpcbind 的控制权,而 Vagrant 甚至没有像我想象的那样尝试去触碰这些东西。运行这些解决了我的问题:

service rpcbind start
service nfs stop
service nfs start

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

yum -y 安装 rpcbind

systemctl 启用 rpcbind

systemctl 启动 rpcbind

systemctl 重启 nfs-server

我花了一个多小时才发现并尝试了这个:)

米歇尔

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于Fedora 22 上的 NFS Vagrant的主要内容,如果未能解决你的问题,请参考以下文章

Fedora14 mount出现错误时解决办法亲测有效

总结Fedora 22跨版本升级到Fedora 24方法

在 Fedora 22 上使用 SSL 超时

fodora 22 localhost 服务器上的 PhpMyAdmin 空白页 [关闭]

Fedora22编译Qt3.3.X

fedora下vim配置