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
  1. 创建共享文件夹
sudo mkdir -p /data02/backup/02.result/shareData10
sudo chown   777  /data02/backup/02.result/shareData10                                    //修改最高权限
  1. 配置/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 允许从这台机器过来的非授权访问

  1. 共享文件夹挂载
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   // 查看服务器上的共享目录