我正在计划构建一个网络附加存储(NAS)服务器。
有没有办法在本地电脑上自动缓存远程存储中经常访问的文件?
(我并不是在寻找一种像 rsync 那样的同步整个文件夹的方法,而是寻找一种能够自动透明地缓存最后访问的 50 gb 文件的方法。)
理想情况下,我正在寻找可以缓存写入和读取的内容,因为只有一台电脑可以访问服务器(如果本地缓存损坏,则一天的更改丢失是可以接受的)
我查看了 Windows 离线文件,但据我所知,这需要手动交互来断开服务器连接或进入离线模式才能使用缓存。
服务器可能运行 Linux 或 freeNAS,PC 运行 Windows XP,但如果需要可以升级到 7。
答案1
您和 Zlatev 在脱机文件方面做得不错。您的 NAS 必须运行 Windows。在组策略下,您需要配置“慢速链接模式”。只需将设置提高到 999999 Kbps 即可。这实际上会强制所有读取和写入到本地缓存。在慢速链接下,Windows 只会每两分钟同步一次。此外,您可能应该关闭气球提醒。它们最初会弹出来告诉您,“嘿,您处于离线状态!我们现在正在从本地缓存读取和写入内容!!!”Durrrrrr。
在客户端,您需要打开“自动缓存文件”。它会自动缓存您通过该 UNC 路径访问的每个网络文件,最多可缓存 25% 的磁盘空间。这个功能也可以调整。
如果您有多个文件夹需要共享,并且您的服务器使用的是 Linux 或 Vista/7,那么只需创建一个虚拟共享文件夹并将所有您想要共享的文件夹硬链接到该文件夹。
最后,我高度建议您至少将客户端升级到 Vista。Vista 的一项改进是差异块写入。只有文件的更改部分才会发送回服务器。此外,Vista/7 脱机文件(技术上称为客户端缓存)更加可靠。在服务器端,它所要做的就是更新到 SMB 协议中的最新更改。事实上,它所要做的就是使用 SMB。因此,只要服务器端支持 SMB,使用任何网络共享都可以实现这一切。
这里有一些技术文章。
http://technet.microsoft.com/en-us/library/bb457104.aspx
http://technet.microsoft.com/en-us/magazine/2007.11.offline.aspx
答案2
我不确定,但 Windows Shared Folders Offline Availability/BranchCache 可能允许您执行类似操作。以下是一些信息 -http://technet.microsoft.com/en-us/library/cc755136.aspx
答案3
我正在研究同样的问题。在 Mac 上,我的想法是将 rsync 与脚本结合使用。脚本的工作是决定要同步/缓存哪些文件。然后,Rsync 会高效地执行此操作,并将文件发送到网络共享。因此,如果我们想要一个 5GB 的缓存,删除最近最少使用的文件,我们需要编写一个脚本,输出与“5GB 最近使用的文件”相对应的文件列表,并让 rsync 在本地同步它并删除缓存中不再存在于该列表中的任何文件。
但是,设置时需要非常小心,因为发生混乱的风险很大!