admin 管理员组

文章数量: 886993

一、NFS的工作原理

NFS只需要两个软件包(nfs-utils 、rpcbind),而且在通常情况下,是作为系统的默认包安装的,在配置使用NFS之前需要先查询所需的软件包是否已安装。

RPC 最主要的功能就是在指定每个 NFS 功能所对应的端口 ,并且回报给客户端,让客户端可以连结到正确的端口上去。启动 NFS 时会随机取用数个端口 ,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,并回报客户端正确的端口。所以启动 NFS 前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。

以下操作共3台服务器,服务端:192.168.65.56 ; 客户端:192.168.65.166 ; windows:192.168.65.156
二、NFS服务检查以及安装
检查是否安装nfs-utils 、rpcbind服务

[root@CentOS7-0001 /]# rpm -qa nfs-utils rpcbind
[root@CentOS7-0001 /]# 

NFS、RPC服务安装 (系统默认已安装)

[root@CentOS7-0001 /]# yum -y install nfs-utils rpcbind

查看安装情况

[root@CentOS7-0001 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-49.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64

三、服务端安装配置(192.168.65.56)
1、关闭防火墙查看状态

[root@CentOS7-0001 /]# systemctl stop firewalld   
[root@CentOS7-0001 /]# systemctl status firewalld  
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

1月 25 14:14:12 CentOS7-0001 systemd[1]: Starting firewalld - dynamic firewall daemon...
1月 25 14:14:14 CentOS7-0001 systemd[1]: Started firewalld - dynamic firewall daemon.
1月 25 15:50:21 CentOS7-0001 systemd[1]: Stopping firewalld - dynamic firewall daemon...
1月 25 15:50:22 CentOS7-0001 systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@CentOS7-0001 /]# 

2、关闭SElinux

[root@CentOS7-0001 /]# sed -i "7s/enforcing/disabled/" /etc/selinux/config
[root@CentOS7-0001 /]# setenforce 0

3、创建共享文件
在NFS服务端上创建共享目录/srv/nfs_share/test并设置权限

[root@CentOS7-0001 /]# mkdir -p /srv/nfs_share/test
[root@CentOS7-0001 /]# chmod  666 /srv/nfs_share/test/

4、编辑export文件设置共享目录

[root@CentOS7-0001 /]#  vim  /etc/exports
/srv/nfs_share/test/ 192.168.65.*(rw,no_root_squash,async)

常见的参数则有:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
示例:
/newdisk/webUpload 28.163.1.*(rw,no_root_squash,async)

5、使配置文件生效

[root@CentOS7-0001 /]# exportfs -r

exportfs -rv 重新输出共享目录(重新启动本机上的所有共享目录)
nfsstat
查看NFS的运行状态,对于调整NFS的运行有很大帮助。

6、启动rpcbind、nfs服务

[root@CentOS7-0001 /]# systemctl start rpcbind
[root@CentOS7-0001 /]# systemctl start nfs

7、设置rpcbind、nfs开机自启动

[root@CentOS7-0001 /]# systemctl enable rpcbind
[root@CentOS7-0001 /]# systemctl enable nfs

8、查看 RPC 服务的注册状况

[root@CentOS7-0001 /]# rpcinfo -p localhost

9、查看共享出来的目录( 服务端或者客户端都可以)

[root@CentOS7-0001 /]# showmount -e 192.168.65.56   

showmount命令:
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源情况
-v 显示版本号

四、客户端挂载配置(192.168.65.116)
1、关闭防火墙

[root@CentOS7-0002 /]# systemctl stop firewalld    
[root@CentOS7-0002 /]# systemctl status firewalld   

2、关闭SElinux

[root@CentOS7-0002 /]# sed -i "7s/enforcing/disabled/" /etc/selinux/config
[root@CentOS7-0002 /]# setenforce 0 

3、客户端安装NFS软件包。

[root@CentOS7-0002 /]# yum -y install nfs-utils

4、客户端查看nfs共享状态

[root@CentOS7-0002 ~]# showmount -e 192.168.65.56
Export list for 192.168.65.56:
/srv/nfs_share/test 192.168.65.*

5、客户端挂载nfs服务器共享目录
命令格式:mount 文件类型 NFS服务器IP:共享目录 本地挂载点目录

[root@CentOS7-0002 ~]# mkdir -p /srv/nfs_share/test
[root@CentOS7-0002 ~]# mount -t nfs 192.168.65.56:/srv/nfs_share/test  /srv/nfs_share/test

6、设置开机自动挂载
因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权

[root@CentOS7-0002 ~]# chmod +x /etc/rc.d/rc.local

编写自启动脚本

[root@CentOS7-0002 ~]# vim /usr/local/sbin/nfsboot.sh

文件中添加脚本
mount -t nfs 192.168.65.56:/srv/nfs_share/test /srv/nfs_share/test

给执行脚本赋权

[root@CentOS7-0002 ~]# chmod +x /usr/local/sbin/nfsboot.sh

打开/etc/rc.d/rc.local文件,在末尾增加如下内容
/usr/local/sbin/nfsboot.sh

五、卸载已挂载的NFS共享目录
使用umount命令卸载已挂在的NFS目录

[root@CentOS7-0002 ~]# umount /srv/nfs_share/test/
umount:/srv/nfs_share/test/: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

如果出现如上:device is busy错误,先查询占用的进程

[root@CentOS7-0002 ~]# fuser -m /mnt/cdrom/
/srv/nfs_share/test/: 1338c 5830c //占用进程pid

#fuser -m -k /mnt/cdrom/
//或者查询后直接杀死进程 后面的2步就不需要执行了

然后杀掉对应的进程

[root@CentOS7-0002 ~]# kill -9 1338  5830 // 或使用下面的一个一个杀死进程
[root@CentOS7-0002 ~]# kill -9 1338  

六、Linux挂载windows的共享目录
window端已共享目录,linux服务上执行如下命令

mount -t cifs -o user=zszqadmin,gid=1000,uid=1000,password=Zszq@1234567 //
192.168.65.156/shares   /home/zszq/sidi

七、扩展说明
NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。
NFS的常用目录
/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab 记录曾经登录过的客户端信息

本文标签: 操作 目录 详细 系统 NFS