1. NFS基本介绍1.1 NFS简介NFS是网络文件系统的缩写,是网络文件系统。 由Sun公司开发,1984年向外部公开的分布式文件系统用协定。 功能是一种允许客户端通过网络访问不同主机上磁盘上的数据的方法,主要用于在基于Unix的系统上实现文件共享。 NFS在文件传输或信息传输过程中依赖于RPC协议。
1.2需要安装NFS服务的软件NFS-utils-*:rpcbind-* (包括基本NFS命令和监视器) :连接到安全NFS RPC服务注意事项: CentOS6.*之前的rpcbind通常为popod
1.3 NFS系统守护进程nfsd :这是一个基本的NFS守护进程,主要功能是管理客户端是否可以登录到服务器。
装载d :这是RPC安装守护进程,主要功能是管理NFS文件系统。 客户端通过nfsd成功登录NFS服务器后,在使用NFS服务提供的文件之前,还必须通过文件使用权限验证。 读取NFS配置文件/etc/exports并比较客户端权限。
rpcbind :主要功能是进行端口映射工作。 当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会向客户端提供与所管理的服务相对应的端口,以便客户可以通过该端口向服务器请求服务。
2. NFS公用目录/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务管理命令
/usr/sbin/showmount客户端显示命令
/var/lib/nfs/etab记录NFS共享目录的完整权限设定值
/var/lib/nfs/xtab记录一次登录的客户机信息
NFS服务配置文件为/etc/exports,该文件是NFS的主要配置文件。 但是,由于系统没有默认值,因此该文件不一定存在。 可能需要使用vim手动创建,并将配置内容写入文件。
3. /etc/exports文件内容类型输出目录“客户端1选项”“权限、用户映射和其他”“客户端2选项”“权限、用户映射和其他”
输出目录:输出目录是指必须在NFS系统上共享给客户端的目录
客户端:客户端是指可以访问网络上此NFS输出目录的计算机
客户端常规指定方法:指定ip地址主机:指定192.168.0.200子网中的所有主机: 192.168.0.0/24192.168.0.0/255.255.2200
NFS主要有三种选项。
访问权限选项:
设置输出目录只读: ro
输出目录的读取/写入设定: rw
用户映射选项:
all_squash :将远程访问的所有常规用户和所属组映射到匿名用户或用户组nfsnobody;
no _ all _ squash :与all _ squash相反(默认);
root _ squash :将root用户和所属组映射到匿名用户或用户组。 (默认);
no _ root _ squash :与root squash相反;
anonuid=xxx (将远程访问的所有用户映射为匿名用户,并将该用户指定为本地用户(UID=xxx );
anongid=xxx )将远程访问的所有用户组映射到匿名用户组的帐户,并将该匿名用户组的帐户指定为本地用户组的帐户(GID=xxx );
其他选项
安全—限制客户端只能通过小于1024的tcp/ip端口连接到nfs服务器(默认)
安装—允许客户端通过大于1024的tcp/ip端口连接到服务器;
sync )同时向内存缓冲器和磁盘写入数据效率低下,但不能保证数据的一致性;
同步:将数据保存在内存缓冲区中,并根据需要写入磁盘;
wdelay :检查是否有相关的写入,如果有,则一起执行这些写入可以提高效率。 (默认设置);
no_wdelay :有写入时立即执行,并与sync并用;
subtree :如果输出目录是子目录,则nfs服务器检查父目录的权限。 (默认);
no_subtree :即使输出目录是子目录,nfs服务器也不会检查父目录的权限,从而提高效率。
样品说明
sudoVI/etc/exports/data*(rw、sync、no_subtree_check、no_root_squash )将NFS服务器的/data目录发送到所有主机
/root/share/192.168.1.2(rw,insecure,sync,all_squash )表示共享服务器上的/r
oot/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)/home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目录,.test.com域中所有的主机都可以访问该目录,且有读写权限
/home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户
4. 服务器端 4.1 安装 NFS 服务 sudo apt install nfs-kernel-serverapt 会自动安装 nfs-common 、rpcbind 等13个软件包。
4.2 编写配置文件 sudo vi /etc/exports/data *(rw,sync,no_subtree_check,no_root_squash)将 NFS 服务器的 /data 目录共享给所有主机,rw 权限。
4.3 创建共享目录 sudo mkdir -p /data 4.4 重启 nfs 服务 sudo service nfs-kernel-server restart 4.5 常用命令 显示已经 mount 到本机 nfs 目录的客户端机器 sudo showmount -e localhost 查看本机共享的文件或目录 sudo exportfs -rv如果我们在启动了 NFS 之后又修改了 /etc/exports ,我们不需要重启 NFS 服务,可以用 exportfs 命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
具体例子:
exportfs -au 卸载所有共享目录exportfs -rv 重新共享所有目录并输出详细信息 查看 NFS 的运行状态 sudo nfsstat 查看 rpc 执行信息 sudo rpcinfo 5. 客户端 5.1 安装客户端工具 sudo apt install nfs-commonapt 会自动安装 nfs-common 、rpcbind 等12个软件包。
5.2 查看 NFS服务器上的共享目录显示指定的(192.168.3.1)NFS 服务器上 export 出来的目录
sudo showmount -e 192.168.3.1 5.3 创建本地挂载目录 sudo mkdir -p /mnt/data 5.4 挂载共享目录将 NFS 服务器 192.168.3.1上的 /data 目录,挂载到本地的 /mnt/ 目录下
sudo mount -t nfs 192.168.3.1:/data /mnt/data采用这种方式挂载,系统重启之后不会自动挂载。
5.5 卸载共享目录卸载客户端的挂载目录,在客户端执行以下命令
umount /mnt/ 5.6 共享目录的自动挂载把挂载信息写入到 /etc/fstab 文件中
sudo vim /etc/fstab192.168.3.1:/data /nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0# 或者192.168.3.1:/data /nfs nfs defaults 0 0 5.7 更新挂载 sudo mount -a参考:
http://www.szliwen.com/802.html
https://blog.csdn.net/qq_36357820/article/details/78488077