NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
1.配置NFS服务器,先安装两个必要的软件包,通常是默认安装的
yum install nfs-utils rpcbind
2.为了检验NFS服务配置的效果,我们需要使用两台Linux主机(一台充当NFS服务器,一台充当NFS客户端)
服务器:ip:192.168.49.152 操作系统:centos7
客户端:ip:192.168.49.150 操作系统:centos 7
不要忘记清空NFS服务器上面iptables防火墙的默认策略,以免默认的防火墙策略禁止正常的NFS共享服务。
iptables -F
service iptables save
3.在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
mkdir /nfsshare
chmod -Rf 777 /nfsshare
echo "hello world" > /nfsshare/readme
4.NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。例如,如果想要把/nfsshare目录共享给192.168.49.0/24网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端root管理员映射为本地的匿名用户等,则可以按照下面命令中的格式,将表中参数写到NFS服务程序的配置文件中
参数 | 说明 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
请注意,NFS客户端地址与权限之间没有空格
vim /etc/exports
写在文件中的内容(注意格式一定要写对,不然会导致最后一步操作出错,最好不要写在第一行,我自己就一直报错写第一行)
/nfsshare 192.168.49.*(rw,sync,root_squash)
5.启动和启用NFS服务程序。由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中(有顺序要求)
systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
6.NFS客户端的配置步骤也十分简单。先使用showmount命令(以及必要的参数)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址“
参数 | 说明 |
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的情况 |
-v |
显示版本号 |
7.然后在NFS客户端创建一个挂载目录(注意给读写权限)。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。(成功挂载啦,这是写在第二行的规则,写第一行的就是不行,改在后面写就行。。)
卸载NFS文件系统:umount /nfsshare(地址为本机挂载点)
8.在启动时挂载NFS文件系统,可以编辑/etc/fstabw那件。例如:
vim /etc/fstab
192.168.49.152:/nfsshare /nfsshare nfs hard,intr 0 0(编辑文件中添加内容内容)
之后
reboot(重启)
成功。