设置:
我们在 Windows 2008 Server (Xeon 3,2 GHz) 上运行 cygwin nfsd 实例。有几台 Sun Solaris 和 SunOS 机器正在访问共享。
这是导出文件:
/disk3 (rw,all_squash)
/disk2 (rw,all_squash)
这些路径软链接到相关的 cygdrive/d/path/to/dir 路径。一些文件夹包含多达 10k 个文件。
问题:
ls -la
在太阳盒上安装的文件夹需要 2-3 分钟,并且总体读取性能非常差。
cat filename
以缓慢的速度显示文件,这会影响大量访问这些共享文件的任务的性能。
处理器负载不是问题,nfs 服务器大部分时间处于空闲状态,cygwin 任务的负载从未超过 1%。
答案1
最近有一些工作在加快目录访问速度,这将在 Cygwin 1.7.8 中实现。预计将于 1 月某个时候发布,但您可以尝试最新的快照http://www.cygwin.com/snapshots。
此外,您可能希望避免在路径中使用符号链接,因为它们会导致额外的开销。您可以直接在 中挂载相关目录/etc/fstab
,如下所示:
c:/path/to/dir /disk3 ntfs binary 0 0
您还可以尝试关闭 POSIX 权限到 Windows ACL 的映射(这意味着权限将被伪造):
c:/path/to/dir /disk3 ntfs binary,noacl 0 0
看http://cygwin.com/cygwin-ug-net/using.html#mount-table了解更多信息。
但最终,Cygwin/Windows 并不是一个很好的服务器系统。
答案2
这是很正常的,您正在另一个操作系统上的 Unix 层上运行用户模式 NFS 服务器。
使用 GNU/Linux 服务器会更好。
查看事件查看器是否存在任何权限问题,并相应地设置挂载的权限,例如:
/disk3 (rw,all_squash,anonuid=xxx,anongid=yyy)