我会解释我想要实现的目标。我想要的可能没有被正确地描述为分布式文件系统。
我们有5个人在运行Ubuntu 12.04。我们每个人都有大约200-500GB的文件,我们想不时分享。每个工作站都拥有文件的所有权。我们不时想共享文件。我还希望一个工作站能够编辑另一个工作站上的文件。
我想要做的是拥有一个统一的分布式文件系统,这样如果我们转到统一的文件系统路径,它将列出每个工作站的所有文件。
我知道可以创建网络共享以实现类似的结果。这具有以下问题:它需要用户检查每个共享以获得适当的文件。
我宁愿创建一个显示所有共享文件的统一共享,然后重定向到相应的计算机。
例如 cd / unifiedshare LS 将用户带到最高级目录并显示来自5台不同计算机的所有共享文件
cd / unifiedshare / comp1 LS 将列出comp1
共享的所有文件我看过一些像Chirp这样的分布式文件系统,它似乎并不是我想要的。我不打算跨服务器/计算机保存文件。我宁愿让comp1拥有的文件保留在comp1上。
我不太担心访问控制或限制。我们都在同一栋楼里。 建议?
我确实通过类似的问题找到了这个,但没有机会阅读它。 http://www.openafs.org/main.html
答案 0 :(得分:2)
还有Unionfs。每个人都会提供其文件的NFS导出。然后,您可以使用Unionfs加入它们,然后像任何other filesystem一样安装它:
mount -t unionfs -o dirs=/Mine:/His:/Yours:/Theirs none /mnt/everyones
在前面提到的多个自述文件的情况下,/ Mine / README将会出现,因为/ Mine首先列出。
答案 1 :(得分:1)
我建议寻找其中一台机器的NFS共享。
或者,使用unison之类的软件,您可以设置类似于dropbox的客户端 - 服务器系统,每个文件都将共享文件的副本同步到中央位置并返回给每个客户端。
答案 2 :(得分:1)
如果最大的问题是知道五个工作站中哪一个拥有您感兴趣的文件,那么解决该问题的最简单方法就是巧妙地使用locate(1)
和updatedb(8)
程序。
让每台计算机在其自己的一组导出文件上运行updatedb(8)
;使用-U
选项构建仅包含导出文件的数据库,并使用-o
将数据库输出到顶级导出目录。例如,通过cron
,/etc/cron.daily/
重建这些内容。
让每台计算机上的每个用户在其shell中设置LOCATE_PATH
环境变量,以引用由所有五台计算机导出的每个数据库。然后,每个用户只需运行locate README
即可在所有五台计算机上查找名为README
的每个文件。