一、理论知识
1.NFS概念
NFS是Network File System(网络文件系统)。
主要功能是通过网络让不同的服务器之间可以共享文件或者 目录。
NFS客户端一般是应用服务器(比如web,负载均衡等),可以通过挂载的方式将NFS服务器端共享的目录挂载到NFS客户端本地的目录下 。
2.NFS工作原理
启动RPC服务
启动NFS服务
客户端请求NFS服务
RPC把端口和IP地址给客户端
3.NFS协议
NFS在文件传送过程中依赖与RPC(远程过程调用)协议。
NFS本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。
只要用到NFS的地方都需要启动RPC服务,不论是NFS的服务端还是客户端
4.NFS端口:
TCP 111 2049
二、nfs环境搭建
1、服务器地址
服务端 :192.168.26.131 test2
客户端:192.168.26.133 test4
客户端:192.168.26.134 test3
2、安装NFS服务器
2.1、查看是否安装nfs、rpc
rpm -qa nfs-utils rpcbind
2.2 、安装nfs、rpc
yum install rpcbind nfs-utils -y
3、配置NFS服务端
3.1、创建NFS共享目录
[root@server ~]# mkdir /data1
[root@server ~]# chmod -Rf 777 /data1
3.2、NFS服务的主配置文件
[root@server ~]# vi /etc/exports
/data1 192.168.26.133/134(rw,sync,root_squash) #IP可以是网段也可以是客户端的IP地址。
#exports配置常用参数
#ro 只读
#rw 读写
#root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
#no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
#all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
#sync 同时将数据写入到内存与硬盘中,保证不丢失数据
#async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
参数 说明
ro 该共享目录的权限是只读(read-only)
rw 该共享目录的权限是可读写(read-write)
hide 隐藏文件系统。
noaccess 阻止访问这个目录及其子目录
wdelay 为合并多次更新而延迟写入磁盘
no_wdelay 尽可能快地把数据写入磁盘
sync 将数据同步写入内存缓冲区与磁盘中(同步模式)
async 将数据线暂存在内存缓冲区中,而非直接写入磁盘(非同步模式)
subtree_check 验证每个被请求的文件都在导出的目录树中
no_subtree_check 只验证涉及被导出的文件系统的文件请求
all_squash 将所有本地和远程账户映射到匿名用户
root_squash 将根用户及所属组都映射为匿名用户或用户组(nfsnobody),为默认设置
no_root_squash 将远程根用户当成本地根用户,即不压制root
anonuid 为匿名用户账户指定组ID
anongid 为匿名用户账户指定用户ID
使配置文件生效:exportfs -r
3.3、启动NFS服务
第一步:先启动rpc服务
[root@server init.d]# service rpcbind start
正在启动 rpcbind: [确定]
[root@server init.d]# service rpcbind status
rpcbind (pid 2041) 正在运行...
注意:
centos系统在6版本和7版本的命是不同的7版本的命令的守护进程不是init而是systemctl。所以只有7版本的命令是systemctl,但是6版本的是service。
第二步:启动NFS服务
[root@server init.d]# service nfs start
启动 NFS 服务: exportfs: Invalid prefix `134' for 192.168.26.133/134
exportfs: Invalid prefix `134' for 192.168.26.133/134
[确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
[root@server init.d]# service nfs status
rpc.svcgssd 已停
rpc.mountd (pid 2089) 正在运行...
nfsd (pid 2104 2103 2102 2101 2100 2099 2098 2097) 正在运行...
rpc.rquotad (pid 2085) 正在运行...
必须要先启动rpc服务,然后再启动NFS服务,如果先启动NFS服务,启动服务时会失败。
3.4、管理共享目录
使用exportfs命令可以共享、显示或不共享/etc/exports中定义的目录
语法格式:exportfs 选项 [目录]
选项 | 说明 |
-a | 共享或不共享/etc/exports中定义的共享目录,常与r或u一起使用 |
-r | 重新共享指定目录 |
-u | 不共享指定目录 |
-o | 可以指定导出选项(后面所跟的目录可以不是/etc/exports中的目录) |
-v | 查看共享的目录及其导出选项 |
4、客户端挂载
4.1、客户端启动rpcbind、nfs
-
service rpcbind start
-
service nfs start
4.2、创建挂载目录:
mkdir /root/data
4.3、查看服务器抛出的共享目录信息:
showmount -e 192.168.26.131
[root@localhost data]# showmount -e 192.168.26.131
Export list for 192.168.26.131:
/data1 *
如果显示:rpc mount export: RPC: Unable to receive; errno = No route to host,则需要在服务端关闭防火墙。
4.4、设置挂载
mount -t nfs 192.168.26.131:/data1 /root/data
为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议:
mount -t nfs 192.168.26.131:/data1 /root/data -o proto=tcp -o nolock
挂载成功后即可访问共享的NFS文件系统了。
4.5、卸载已挂在的NFS
umount /root/data
4.6、查看挂载目录的信息:
fuser -m -v /root/data