简介
NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
Server 端 IP:192.168.0.1
0.查看 linux 系统信息:
Server:
[root@app home]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
Client:
[root@app home]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
1.查看是否安装了 nfs 和 rpcbind
[root@app home]# rpm -aq | grep nfs [root@app home]# rpm -aq | grep rpcbind
rpcbind 是一个 RPC 服务,主要是在 nfs 共享时候负责通知客户端,服务器的 nfs 端口号的
2.安装 nfs 和 rpcbind
[root@app home]# yum install nfs-utils rpcbind
3.增加 nfs 配置文件
[root@app home]# vi /etc/exports #重新 export 一次 [root@app home]#exportfs -rv
添加共享信息:
/home/adam/static 192.168.0.2(rw)
/home/adam/static:共享文件夹
192.168.0.2:可以挂载服务器目录的客户端 ip
(rw):该客户端对共享的文件具有读写权限
4.配置 hosts 文件
[root@app home]# vi /etc/hosts 192.168.0.1 hostname 192.168.0.1:服务器本机的 ip 地址 hostname:服务器的机器名
5.启动 nfs 和 rpcbind 服务
在 SUSE 上,服务名为 nfsserver,不是 nfs。
必须先启动 rpcbind,再启动 nfs,才能让NFS在 rpcbind 上注册成功
[root@app home]# service rpcbind start [root@app home]# service nfs start
查看启动状态:
[root@app home]# service rpcbind status [root@app home]# service nfs status
注意,RPC 的状态是 Active: active (running);而NFS的状态是 Active: active (exited)。
查看自己共享的服务:
[root@app home]# showmount -e
/home/adam/static 192.168.0.2
6.查看 RPC 服务的注册状况
[root@app home]# rpcinfo -p localhost
NFS 服务使用的 111 和 2049 端口是固定的,mountd 端口是动态的,需要固定,然后在防火墙放行。
6.1 固定端口
[root@app home]# vi /etc/sysconfig/nfs
1.添加:
RQUOTAD_PORT=30001 LOCKD_TCPPORT=30002 LOCKD_UDPPORT=30002 MOUNTD_PORT=30003 STATD_PORT=30004
2.重启 nfs 和 rpcbind:
[root@app home]# service rpcbind restart [root@app home]# service nfs restart
(端口并未修改,reboot 系统后才修改)
6.2 防火墙放行端口
1.查看防火墙是否开启:
[root@app home]# firewall-cmd --state
2.设置防火墙(如果访问 ip 没有限制,就不需要添加-s ip 地址):
[root@app home]# iptables -A INPUT -s 192.168.0.2 -p tcp --dport 111 -j ACCEPT [root@app home]# iptables -A INPUT -s 192.168.0.2 -p udp --dport 111 -j ACCEPT [root@app home]# iptables -A INPUT -s 192.168.0.2 -p tcp --dport 2049 -j ACCEPT [root@app home]# iptables -A INPUT -s 192.168.0.2 -p udp --dport 2049 -j ACCEPT [root@app home]# iptables -A INPUT -s 192.168.0.2 -p tcp --dport 30001:30004 -j ACCEPT [root@app home]# iptables -A INPUT -s 192.168.0.2 -p udp --dport 30001:30004 -j ACCEPT [root@app home]# service iptables save
tips:
在 centos7 中用 iptables 命令配置完策略规则后,需要保存策略永久生效,执行 service iptables save 时提示:
[root@app home]# service iptables save The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
解决方法:
[root@app home]# systemctl stop firewalld [root@app home]# systemctl mask firewalld #安装 iptables services [root@app home]# yum install iptables-services #设置开机启动 [root@app home]# systemctl enable iptables #重启 iptables service [root@app home]# systemctl restart iptables #执行保存配置命令 [root@app home]#service iptables save
Client 端 IP:192.168.0.2
1.客户端服务器也需要安装 nfs 和 rpcbind 服务,参考服务端,启动,检查服务是否正常。
[root@app home]# service rpcbind start [root@app home]# service nfs start [root@app home]# service rpcbind status [root@app home]# service nfs status
2.显示 NFS 服务器共享目录列表
[root@app home]# showmount -e 192.168.0.1 Export list for192.168.10.1: /home/adam/static 192.168.0.2 [root@app home]# showmount #显示 NFS 客户端信息 [root@app home]# showmount 192.168.0.1 #显示指定 NFS 服务器连接 NFS 客户端的信息 [root@app home]# showmount -e #显示输出目录列表 [root@app home]# showmount -e 192.168.1.1 #显示 NFS 服务器共享目录列表 [root@app home]# showmount -d #显示被挂载的共享目录 [root@app home]# showmount -a #显示客户端信息和共享目录 [root@app home]# showmount -a 192.168.1.1 #显示指定 NFS 服务器的客户端信息和共享目录
3.创建挂载目录
[root@app adam]# mkdir static
4.挂载服务端的共享目录
[root@app adam]# mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.0.1:/home/adam/static /home/adam/static
查看挂载的状态
[root@app adam]# mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) nfsd on /proc/fs/nfsd type nfsd (rw,relatime) 192.168.0.1:/home/adam/static on /home/adam/static type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.1,mountvers=3,mountport=30003,mountproto=udp,local_lock=all,addr=192.168.0.1)
4.1.设置客户端开机自动挂载服务端 NFS 服务(这种方式可能失败,使用 7.nfs 开机自动挂载方法)
[root@app adam]# vi /etc/fstab 192.168.0.1:/home/adam/static /home/adam/static nfs defaults 0 0
5.测试
[root@app adam]# cd static [root@app static]# ll #可以看到服务端共享目录中文件
6.开机启动 NFS 服务
[root@app adam]# systemctl list-unit-files | grep nfs proc-fs-nfsd.mount static var-lib-nfs-rpc_pipefs.mount static nfs-blkmap.service disabled nfs-config.service static nfs-idmap.service static nfs-idmapd.service static nfs-lock.service static nfs-mountd.service static nfs-rquotad.service disabled nfs-secure.service static nfs-server.service disabled nfs-utils.service static nfs.service disabled#开机不启动 nfslock.service static nfs-client.target enabled [root@app adam]# ll #systemctl enable nfs
rpcbind 不需要开机启动
[root@app adam]# systemctl list-unit-files | grep rpcbind rpcbind.service indirect#间接启动(无法编辑) rpcbind.socket enabled rpcbind.target static
7.nfs 开机自动挂载
#系统服务未完全启动,挂载会失败,在系统启动以后,再挂载 [root@app adam]# vi /etc/rc.local #添加 sleep 30 mount -t nfs 192.168.0.1:/home/adam/static /home/adam/static
#赋予可执行权限 [root@app adam]# chmod +x /etc/rc.local
查看是否挂载上
[root@app adam]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/vda1 79G 1.8G 74G 3% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.4M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup 192.168.0.1:/home/adam/static 79G 1.9G 74G 3% /home/adam/static tmpfs 799M 0 799M 0% /run/user/0