windows nfs客户端能不能用v4?微软自己的功能不支持,只能支持到v3
但总是有大神,这位大神2014年在github release了一个Windows NFS 4.1 Client
大神的软件是好,但是坑很多,填坑指南没有给,只能靠自己费心劳神摸索,我花很多时间沉淀的东西写成这篇文档,你只需要一两分钟就能拿走,少走很多弯路,节省很多时间。
https://github.com/cbodley/ms-nfs41-client/releases
这个客户端软件的安装很简单,默认下一步 → 下一步 → ...下一步 → 直到完成后提示重启机器时重启机器即可
这个客户端软件适用所有windows常用系统,PC系统就不说了,我测试了Server 2008R2/2012R2/2016/2019 安装这个软件去挂自建的v4 nfs server都是可以的,但去挂腾讯云的cfs不行,因为腾讯云cfs控制台写了:由于系统限制,Windows 客户端请使用 NFS v3.0 挂载。
并且cfs文档里有句话:推荐使用NFS v3协议挂载,获得更好的性能。如果您的应用依赖文件锁,即需要使用多台CVM同时编辑一个文件,请使用NFS v4协议挂载。
而windows自带的nfs客户端又不支持v4挂载,所以我猜测可能cfs服务端做了windows客户端的限制才导致ms-nfs41-client没法成功挂nfs协议的cfs。
假如在腾讯云CVM上搞了1台2016做客户端、1台2016做服务端,客户端安装了ms-nfs41-client,服务端启用了系统的nfs server,我说下我遇到的问题(不敢说真知灼见,但绝对是点灯熬油花大量时间摸索出来的):
1、ms-nfs41-client安装后按要求重启机器了,但是重启后发现ms-nfs41-client对应的服务没有运行
我研究了好久,发现有2个解决办法
①vpc控制台设置个Domain Name(随便设),然后重启机器,ms-nfs41-client对应的服务就起来了
②如果不改vpc,那需要在cvm里运行sysdm.cpl命令按如下步骤添加Primary DNS suffix of this computer
其实两种办法本质上是相同的,都是改的Primary DNS suffix ,只不过① 是整个vpc级别的(vpc里的机器重启下就都有了),②是单台机器级别
2、需要把客户端和服务端的防火墙关了,以免造成干扰
3、服务端机器配置
NFS权限配置:进行NFS共享配置的时候按下图选择给读写权限
NTFS文件系统的权限配置:给要共享的目录添加everyone和network service全部权限
4、客户端机器配置
需要导下这个注册表(粘贴到记事本,然后另存为nfsclient.reg,然后双击点是进行导入),导入后重启下服务
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftClientForNFSCurrentVersionDefault]
"AnonymousUid"=hex(b):00,00,00,00,00,00,00,00
"AnonymousGid"=hex(b):00,00,00,00,00,00,00,00
或者
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftClientForNFSCurrentVersionDefault]
"AnonymousUid"=dword:00000000
"AnonymousGid"=dword:00000000
以上配置完以后,就可以在客户端挂服务端的共享目录了,并且有读写权限
cmd切入到NFSv4.1 Client目录:cd /d "C:Program FilesNFSv4.1 Client"
挂载命令:nfs_mount.exe z: $hostname或IP:/nfsserver_dir ( 例如:nfs_mount.exe z: 10.255.4.112:/nfsserver )
解挂载命令:nfs_mount.exe -d Z