无法在 Windows 客户端上挂载 NFS 共享

Posted

技术标签:

【中文标题】无法在 Windows 客户端上挂载 NFS 共享【英文标题】:Unable to mount NFS shares on Windows clients 【发布时间】:2014-01-29 21:19:47 【问题描述】:

我在 Linux 机器上设置了 NFS 共享。我有安装适用于 Windows 的 NFS 服务的方法,并且我能够使用 UNC 路径或映射驱动器连接到 NFS 共享。我也可以手动安装共享,使用 mount 或 net use 成功。我正在尝试使用 Chef 自动执行此操作,但是当我使用 Chef 时,手动工作的相同命令不起作用。我尝试了多种方法,但都没有奏效。

mount "X:" do
    device "\\\\d-devfs02.domain.com\\software"
    action :mount
end

ArgumentError: 找不到网络路径。

mount "X:" do
    device "d-devfs02.domain.com:/software"
    fstype "nfs"
    action :mount
end

ArgumentError: 参数不正确。

execute "Mount" do
  command "net use X: \\\\d-devfs02.domain.com\\software"
  action :run
end

---- 开始输出 net use X: \d-devfs02.domain.com\software ---- 标准输出: STDERR:发生系统错误 53。

找不到网络路径。 ---- net use X 的结束输出:\d-devfs02.domain.com\software ---- Ran net use X: \d-devfs02.domain.com\software 返回 2

execute "Mount" do
  command "C:/Windows/System32/mount.exe \\\\d-devfs02.domain.com\\software *"
  action :run
end

---- 开始输出 C:/Windows/System32/mount.exe \d-devfs02.domain.com\so 软件 * ---- 标准输出: STDERR:“C:/Windows/System32/mount.exe”不被识别为内部或外部 rnal 命令, 可运行的程序或批处理文件。 ---- C:/Windows/System32/mount.exe \d-devfs02.domain.com\soft 的结束输出 洁具 * ---- Ran C:/Windows/System32/mount.exe \d-devfs02.domain.com\software * 返回 1

这个让我大吃一惊。我不仅确认了该文件存在于该位置,而且当我手动运行此命令(以及所有 net use 命令)时,它们也可以正常工作。

当我手动执行它们时,Net use 和 mount 命令会起作用。我以自己的身份运行 chef-client,所以这不是权限问题。 Chef-client 由于某种原因无法看到 mount.exe,并且 net use 的路径存在问题。我不确定这里还能做什么。

【问题讨论】:

第一个代码 sn-p 应该可以工作。它甚至出现在文档docs.opscode.com/resource_mount.html 中。您是否使用与手动运行命令相同的用户运行 chef?可能是 Chef 没有访问共享的某些权限? 我以自己的身份运行 chef-client,当我手动运行命令时,我能够连接到共享。我想知道在 chef-client 运行的上下文中是否有一些改变会破坏这个?或者,如果它是 Windows 客户端上的 NFS 共享,可能需要更改某些内容? 我建议在 Chef 邮件列表 chef@lists.opscode.com 上询问,看看是否有其他人遇到过同样的问题。您也可以尝试在 ticket.opscode.com 上开票,因为这似乎是一个错误。 即使在 7 年后,我也遇到了同样的问题。这些东西都不起作用。 【参考方案1】:

您使用的是 64 位 Windows 计算机吗?这可能是因为 Chef 中的 Ruby 是 32 位 Ruby,因此 Windows 有用的“文件系统重定向器”启动了。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187.aspx

换句话说,32 位 Ruby 看到的实际路径是 C:\Windows\Sysnative,而不是 C:\Windows\System32。

【讨论】:

以上是关于无法在 Windows 客户端上挂载 NFS 共享的主要内容,如果未能解决你的问题,请参考以下文章

在windows2012上挂载NAS文件系统

linux下nfs客户机挂载服务器上的共享目录时,出现权限不够的错误,怎么解决?

linux下nfs客户机挂载服务器上的共享目录时,出现权限不够的错误,怎么解决?

Windows上面挂载NFS共享

Linux上挂载windows共享目录

win7连接centos的nfs