一、NFS定义
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。支持在异构系统之间数据的传送。
二、工作原理
NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一。主要应用在UNIX环境下。最早是由Sun Microsystems开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在FreeBSD、SCO、Solaris等异构操作系统平台,允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。
三、搭建NFS过程
1.准备两台机器,一台作为服务端,另一台作为客户端。
NFS服务端的IP:192.168.1.10
客户端的IP:192.168.1.20
2.实现的目标:在NFS服务端上共享一个目录(/share_data),在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。
3.服务端配置
(1)安装NFS服务
首先使用yum安装nfs服务:yum -y install rpcbind nfs*
(2)创建共享目录
在服务器上创建共享目录,并设置权限。
mkdir /data/share/
chmod 755 -R /data/share/
(3)配置NFS
nfs的配置文件是 /etc/exports ,在配置文件中加入一行:
/share_data/ 192.168.1.20(rw,no_root_squash,no_all_squash,sync)
这行代码的意思是把共享目录/share_data/共享给192.168.1.20这个客户端ip,后面括号里的内容是权限参数,其中:
rw 表示设置目录可读写。
sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。
no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。
no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。
如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:
exportfs -r
(4).启动服务
按顺序启动rpcbind和nfs服务:
systemctl start rpcbind
systemctl start nfs
加入开机启动:
systemctl enable rpcbind
systemctl enable nfs
nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。并且可以使用 showmount 命令来查看服务端(本机)是否可连接:
[root@localhost ~]# showmount -e localhost
Export list for localhost:/share_data 192.168.1.20
出现上面结果表明NFS服务端配置正常。
4.客户端配置
(1)安装rpcbind服务
客户端只需要安装rpcbind服务即可,无需安装nfs或开启nfs服务。
yum -y install rpcbind
(2)挂载远程nfs文件系统
查看服务端已共享的目录:showmount -e 192.168.1.10
Export list for 192.168.1.10:
/share_data 192.168.1.20
(3)建立挂载目录,执行挂载命令:
mkdir -p /mnt/share
mount -t nfs 192.168.1.10:/share_data /mnt/share/ -o nolock,nfsvers=3,vers=3
如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。
如果要解除挂载,可执行命令:
umount /mnt/share
5.设置开机自动挂载
如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。
vim /etc/rc.d/rc.local
在文件最后添加一行:
mount -t nfs 192.168.1.10:/share_data /mnt/share/ -o nolock,nfsvers=3,vers=3
保存并重启机器测试。
6.测试验证
查看挂载结果,在客户端输入 df -h可查看挂载详情。