NFS会经常用到,用于在网络上共享存储。举个例子假如有三台机器A、B、C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A、B、C。但是使用NFS只需要放到A上,然后A共享给B和C即可。
1. 安装nfs服务
挂载服务器目录,首先服务器需要nfs服务,linux下安装nfs服务可以按照如下步骤:
1. Centos: yum install -y nfs-utils
2. Ubuntu: sudo apt install nfs-kernel-server
启用nfs服务
service nfs-kernel-server restart
安装客户端
sudo apt-get install nfs-common
- 创建共享文件夹
sudo mkdir -p /data02/backup/02.result/shareData10
sudo chown 777 /data02/backup/02.result/shareData10 //修改最高权限
- 配置/etc/exports文件
格式:/srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
eg: /another/exported/directory 192.168.0.3(rw,async)
/another/exported/directory是本机导出文件夹,192.168.0.3服务器可以以读写的方式挂载到共享目录/another/exported/directory。此外,*(rw,async), *号表示所有的IP。
/ zhang (rw) wang (rw,no_root_squash) 表示共享服务器的/只有zhang和wang两台主机可以访问。
no_root_squash:控制是否映射root身份,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录。
注意:
root_squash: 防止远程连接的 root 用户(与本地连接相反)具有 root 特权;相反,NFS 服务器为他们分配用户 ID nobody
all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份,即限制所有的UID 和GID,只使用匿名用户
anonuid/anongid :要和root_squash 以及 all_squash一同使用,Anonuid和Anongid设置后,所有用户都映射成服务器上的设置的uid,gid的用户,共享主机上,用ll 查看,所有文件对应到对应的group 和user,在客户端服务器上,也显示对应的客户端机器上对应的group 和user。不设置显示nobody,nogroup,可以仅设置一个如group。
修改保存后,直接用如下命令export即可,无需重启服务
exportfs -rv # //目录全部重新export一次
附exports配置参数:
Ro 该主机对该共享目录有只读权限
Rw 该主机对该共享目录有读写权限
Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
No_root_squash 客户机用root访问该共享文件夹时,不映射root用户
All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
Anonuid 将客户机上的用户映射成指定的本地用户ID的用户
Anongid 将客户机上的用户映射成属于指定的本地用户组ID
Sync 资料同步写入到内存与硬盘中
Async 资料会先暂存于内存中,而非直接写入硬盘
Insecure 允许从这台机器过来的非授权访问
- 共享文件夹挂载
sudo mount -t nfs 192.168.1.x:/user/directory /mount/directory
sudo umount -t nfs 192.168.1.x:/user/directory or unmount /mount/directory // 卸载
5.修改和挂载后查看
df -h
showmount -e 192.168.93.5 // 查看服务器上的共享目录