Win7 旗舰版和企业版自带NFS客户端,打开控制面板找到“打开或关闭windows功能”。勾选NFS确定之后即可使用。
需要注意的是,win7没有windows server 2008和其他版本的一些服务,比如用户名映射,Active Directory 域服务,这必然导致权限问题,之后会讲解决办法。
打开cmd就可以挂载NFS了,我服务器用的VMware下的Cenos,共享了一个web目录,所有权限是nginx的权限uid=499 gid=498,这个一会会用到。服务器就共享了一个目录
#/etc/exports</p><p>/srv/www_root/ *(rw,async,insecure,anonuid=499,anongid=498,no_root_squash)
C:\Users\ares>mount -o anon mtype=soft lang=ansi \\192.168.137.10\srv\www_root\ g:\</p><p>g: 现已成功连接到 \\192.168.137.10\srv\www_root\</p><p>命令已成功完成。</p><p>C:\Users\ares>
“mount /?” 可以查看具体的选项。这里一定要用软装载模式(mtype=soft),因为NFS由于种种原因经常服务不可用如果硬装载就会导致资源管理器等停止响应,还可以指定创建新文件的模式(比如 fileaccess=777)。如上所示192.168.137.10这台服务器上的目录已经挂载到了g盘,cmd下继续输入mount命令查看已经挂载的文件系统
C:\Users\ares>mount</p><p>本地 远程 属性</p><p>-------------------------------------------------------------------------------</p><p>g: \\192.168.137.10\srv\www_root\ UID=-2, GID=-2</p><p> rsize=32768, wsize=32768</p><p> mount=soft, timeout=0.8</p><p> retry=1, locking=yes</p><p> fileaccess=755, lang=ANSI</p><p> casesensitive=no</p><p> sec=sys
UID和GID都是-2,这样肯定导致权限的问题,到G:\ 随便创建一个新文件,然后回到192.168.137.10上 ll 查看这个文件,会发现uid和gid是一个很大的数值,修改windows客户端的uid和gid就能解决问题,但是win7没有用户名映射,Active Directory 域服务,这时候只有修改注册表才能解决这个问题。找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,添加两个REG_DWORD值,我的服务端用的是nginx所以填的nginx的uid和gid,也可以省事直接填root(uid=gid=0),重启计算机使其生效,再执行mount命令uid和gid就变成了注册表中设置的值,毕竟不是windows server,只能设置单一的权限。
返回linux查看权限
爽啊确实是nginx的权限,这次不用在本机和测试机维护两份相同的代码了,最重要的是新挂载的G:\在使用上和本地文件系统没有任何区别!随便选一个文件或目录点击右键有一个“NFS属性”标签可以修改文件或目录的模式。在windows管理工具中还有一个“Network File System 服务(NFS)”的东东,里面有个帮助文档可以看看。
在windows下除了不能动态修改uid和gid还有一个问题,不支持utf8编码!如果linux用的GB2312的话通过 ”mount -o lang=gb2312-80“ 可以解决,utf8我还真不知道怎么办。另外svn的状态图标也不能显示,隐藏文件总是会显示出来。相对于这些缺点,我想NFS的一个重要优点就是可以跨网段,局域网跨系统还是不要用这个了,可以用Samba,这里有详细安装配置过程http://linux.vbird.org/linux_server/0370samba.php 。
如果用的VMware实现共享还有一种更好的方式,给VMware设置共享文件夹,linux访问共享文件夹不仅不会乱码而且不会有权限问题,因为默认共享文件都是0777权限,而且好像只能属于root用户。首先在虚拟机中安装VMwareTools,然后WMware中设置一个共享文件夹(比较简单就不罗嗦了),设置完之后共享文件夹已经挂载到 /mnt/hgfs/ 目录中了,可以很自然的想到这种共享方式速度最快。
安装VMWare Tools需要注意的问题请看这里。