NFS(Network File System)网络文件系统,是一种通过网络方式共享文件系统的通用共享解决方案。目前NFS有三个版本,NFSv2,NFSv3,和NFSv4.其中NFSv2是最早的一个版本,被众多的操作系统支持,兼容性好。NFSv3,速度更快,单个文件大小更大,支持TCP协议等。NFSv4提供了有状态连接,更容易追踪连接状态,这个版本增加了安全性。而现在centos7使用的是是NFSv4版本。
首先在服务器端(192.168.0.3)进行安装,配置NFS服务
#####在服务端(192.168.0.3)#####
####安装NFS的相关软件####
yum -y install nfs-utils rpcbind
####创建一个用于NFS的共享账号,名为nsf####
useradd -u 1003 nfs
####在/var路径下创建一个名为web的目录,用于共享使用####
mkdir /var/web
####给所有用户对这个共享目录赋予可写的权限####
chmod a+w /var/web/
####修改NFS的配置文件(也可以使用vim编辑的方式,vim /etc/exports)####
echo "/var/web/ 192.168.0.2(rw,async,no_root_squash)" > /etc/exports
#####/var/web目录对于192.168.0.2这个IP的主机拥有的权限,也可以用*代替,*代表所有主机####
##### rw 代表读写####
##### async 代表允许NFS服务器在没有完全把数据写入硬盘前就向客户端回复成功的消息#####
##### no_root_squash 默认情况下NFS会自动屏蔽root用户的权限,而root_squash让客户端使用root账号访问NFS时,服务器系统默认会自动将root当做本地匿名用户,而no_root_squash可以防止服务器这样做并且保留root权限。#####
####配置好后启动NFS服务####
systemctl start nfs
在客户端(192.168.0.2)中通过 showmount 命令查看服务器的共享信息,并且创建用户,将服务器端的目录挂载到本地
#####在客户端(192.168.0.2)#####
#####查看共享信息(如果有报错信息说连接不上,可以关掉服务器和客户端的防火墙再查看)#####
showmount -e 192.168.0.3
Export list for 192.168.0.3:
/var/web 192.168.0.2
#####创建一个和服务器一样的用户,nfs#####
useradd -u 1003 nfs
#####在本地创建一个目录,用户挂载服务器端的共享目录#####
mkdir /var/web
#####将192.168.0.3的/var/web目录挂载到本地的/var/web下#####
mount 192.168.0.3:/var/web /var/web/
#####让所有用户对这个目录拥有写的权限#####
chmod a+w /var/web/
#####下面切换到本地的/var/web目录#####
cd /var/web/
#####创建一个文本文件,名为nfs.txt(当前是使用root用户创建的)#####
touch nfs.txt
#####切换到nfs用户#####
su nfs
#####在nfs用户下创建一个文本#####
touch test.txt
服务端,在/var/web目录下可以看到客户端所创建的文本,在服务器这端给这两个文本写入内容
#####在192.168.0.3,服务端#####
#####切换路径#####
cd /var/web
#####查看当前路径下的目录文件,可以看到客户端所创建的两个文本#####
ls
nfs.txt test.txt
#####向nfs.txt文本写入内容#####
echo "test 123 hhh " > nfs.txt
#####查看nfs.txt文本的内容#####
cat nfs.txt
test 123 hhh
在客户端能看到服务端对文本写入的内容
#####在客户端(192.168.0.2)#####
cat nfs.txt
test 123 hhh
#####现在NFS文件共享配置已经完成了#####
######NFS的相关命令工具######
exportfs
当NFS服务启动时,/usr/sbin/exportfs命令会自动启动并读取/etc/exports文件,手动运行exports命令允许root在不重启NFS服务的情况下选择共享或者取消部分共享目录
#####重新读取NFS配置文件(/etc/exports)的信息#####
exportfs -r
#####全部共享或者取消全部共享#####
exportfs -a
#####取消共享,和参数a一起使用可以取消全部共享文件系统#####
exportfs -u
#####显示共享的详细信息#####
exportfs -v
/var/web
192.168.0.2(rw,async,wdelay,hide,no_subtree_check,sec=sys,secure,no_root_squash,no_all_squash)
nfsstat(查看NFS共享状态)
#####在服务端(192.168.0.3)#####
####以列表的形式显示NFS的共享状态####
nfsstat -l
nfs v4 server total: 129
------------- ------------- --------
nfs v4 server null: 1
nfs v4 server compound: 128
nfs v4 servop total: 260
------------- ------------- --------
nfs v4 servop access: 10
nfs v4 servop close: 3
nfs v4 servop delegreturn: 1
nfs v4 servop getattr: 45
nfs v4 servop getfh: 6
nfs v4 servop lookup: 5
nfs v4 servop open: 3
nfs v4 servop putfh: 49
nfs v4 servop putrootfh: 2
nfs v4 servop read: 1
nfs v4 servop readdir: 2
nfs v4 servop setattr: 3
nfs v4 servop exchange_id: 1
nfs v4 servop create_ses: 1
nfs v4 servop secinfononam: 1
nfs v4 servop sequence: 126
nfs v4 servop reclaim_comp: 1
#####在客户端(192.168.0.2)#####
####以列表的形式显示NFS共享状态####
nfsstat -l
nfs v4 client total: 124
------------- ------------- --------
nfs v4 client read: 1
nfs v4 client open: 2
nfs v4 client open_noat: 1
nfs v4 client close: 3
nfs v4 client setattr: 3
nfs v4 client fsinfo: 3
nfs v4 client access: 7
nfs v4 client getattr: 14
nfs v4 client lookup: 5
nfs v4 client lookup_root: 1
nfs v4 client pathconf: 2
nfs v4 client readdir: 2
nfs v4 client server_caps: 5
nfs v4 client delegreturn: 1
nfs v4 client create_ses: 1
nfs v4 client destroy_ses: 1
nfs v4 client get_lease_t: 70
nfs v4 client layoutget: 1
nfs v4 client (null): 1
#####在客户端(192.168.0.2)#####
####显示挂载信息####
nfsstat -m
/var/web from 192.168.0.3:/var/web
Flags:
rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,
retrans=2,sec=sys,clientaddr=192.168.0.2,local_lock=none,addr=192.168.0.3