我的每台客户端计算机上都有一个共享数据目录,我想将它们全部安装在我的服务器中。最简单/标准的方法是什么? NFS 似乎更适合将服务器中的目录共享给很多客户端,对吗?我确实为服务器配置了 NFS。所有操作系统都是 debian。谢谢。
答案1
共享文件系统时,实际拥有共享文件系统物理存储的系统通常称为服务器,任何远程使用共享存储的系统都将是客户。
因此,就您而言,您的“客户端计算机”也都需要是 NFS 或 CIFS 服务器,并且您的服务器系统也将是 NFS 客户端。
NFS 同样适用于一对一和一对多共享。但是,如果您的“客户端计算机”不能保证始终运行,或者用户可以随意关闭或重新启动它们,您可能需要一个autofs
基于 的解决方案来最大程度地减少由过时的 NFS 安装和/或无法访问的客户端计算机引起的问题。
这样,您就可以/shared_data/<hostname>/
在服务器上访问所有客户端的共享数据目录。
首先,您将配置所有客户端计算机以将/shared_data
目录共享到服务器。我在这里假设 NFS,但autofs
也同样适用于 CIFS。
然后,在服务器系统上创建一个 NFS 自动挂载映射文件/etc/auto.shared_data
,内容如下:
client1 -rw,soft client1.domain.example:/shared_data
client2 -rw,soft client2.domain.example:/shared_data
...
在服务器系统上启动 NFS 客户端服务,并尝试手动挂载客户端目录以验证共享目录是否确实可挂载。
然后,在服务器系统上创建一个挂载点目录并引用主地图/shared_data
上的地图文件,如下所示:autofs
/etc/auto.master
/shared_data /etc/auto.shared_data
然后启动autofs
服务器系统上的服务。
/shared_data/<client hostname>
现在,每当您尝试访问服务器系统上的任何目录时,autofs
都应该自动为您安装它,并在没有人打开任何文件并且有一段时间没有访问它之后卸载它。
使用soft
NFS 挂载选项有助于确保客户端系统的突然关闭不会导致服务器系统上的进程以及客户端shared_data
共享上打开的文件无限期挂起。警告:在某些情况下,这可能会导致文件损坏。选择你的毒药。
如果添加或删除客户端,您应该能够进行编辑/etc/auto.shared_data
并使更改立即生效。更改/etc/auto.master
需要重新加载autofs
配置。
答案2
要将服务器的单个文件夹共享给任意数量的客户端计算机:
- 网络文件系统:
- 使用包管理器安装 NFS 服务。
- 添加
/path/to/share IP1(root_squash,rw,async,fsid=1) IP2(root_squash,rw,async,fsid=1) ...
到/etc/exports
,列出 IP 范围/IP 或客户端。 - 运行
exportfs -ra
以更新导出。 - 用户权限将保留,因此您客户端上的用户 1000 将被视为您服务器上的用户 1000。
- 添加
hostname:/path/to/share nfs4 /mount/path timeo=60,intr 0 0
到每个客户的/etc/fstab
- CIFS:
- 使用包管理器安装 Samba 服务。
- 添加文件夹到
/etc/samba/smb.conf
- 运行
systemctl restart smb
或smbd
重新启动服务。 - 添加授权用户(必须存在于服务器上)
sudo smbpasswd -a USER
- 如果您确实愿意,所有用户都可以使用单个用户名和密码进行连接。
- 添加
//hostname/sharename /mount/path/ cifs uid=local_user,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm,username=remote_user,password=remote_pass 0 0
到客户端/etc/fstab