共计 1590 个字符,预计需要花费 4 分钟才能阅读完成。
理论部分
NFS(网络文件系统):让网络上的不同 linux/unix 系统机器实现文件共享
nfs 本身只是一种文件系统,没有提供文件传递的功能,但却能让我们进行文件的共享,原因在于 NFS 使用 RPC 服务,用到 NFS 的地方都需要启动 RPC 服务,无论是 NFS 客户端还是服务端
nfs 和 rpc 的关系:nfs 是一个文件系统,负责管理分享的目录;rpc 负责文件的传递
nfs 启动时至少有 rpc.nfsd 和 rpc.mountd2 个 daemon
rpc.nfsd 主要是管理客户机登陆 nfs 服务器时,判断改客户机是否能登陆,和客户机 ID 信息。
Rpc.mountd 主要是管理 nfs 的文件系统。当客户机顺利登陆 nfs 服务器时,会去读 /etc/exports 文件中的配置,然后去对比客户机的权限。
协议使用端口:
RPC:111 tcp/udp
nfsd:2049 tcp/udp
mountd:RPC 服务在 nfs 服务启动时默认会为 mountd 动态选取一个随机端口(32768–65535)来进行通讯,可以在 /etc/nfsmount.conf 文件中指定 mountd 的端口
nfs 服务器启动 nfs 服务时,先向 rpc 服务注册,然后通过 rpc 服务来监听客户端的请求;
客户端连接过程:
1、客户端的 rpc 服务向服务端的 rpc 服务询问 nfsd 和 mountd 的端口并测试连通性
2、客户端发送挂载请求
3、服务端根据 /etc/exports 配置文件确定是否允许挂载
4、挂载成功 / 失败
NFS 服务器安装与配置
1、安装 nfs-utils 和 nfs-utils-lib
yum install nfs-utils -y #nfs 服务的主程序包
yum install nfs-utils-lib -y #nfs 支持库
2、nfs 的主配置文件为 /etc/nfsmount.conf 一般默认即可,在此不做介绍
3、修改 /etc/exports 添加共享目录
内容格式:
共享目录 客户端(导出选项)
客户端指定方式 | example |
单个 IP 地址 | 192.168.10.5 |
网段 | 192.168.10.0/24、192.168.10.0/255.255.255.0、192.168.10.* |
域名 | linux.lzs.org |
指定所在域内的所有客户端 | *.lzs.org |
使用通配符 * 指定所有 | * |
导出选项 | 说明 |
rw | 读写权限 |
ro | 只读 |
root_squash | 当使用 root 登录时,被映射成 nfsnobody(建议使用) |
no_root_squash | 关闭 root_squash |
all_squash | 无论以什么身份登录,都映射成 nfsnobody |
hide | 在共享目录中不共享子目录 |
nohide | 共享 NFS 目录的子目录 |
例如:
vim /etc/exports
/tmp/share *(rw)
4、开启 nfs 服务
service nfs start
管理共享目录
使用 exportfs 命令可以共享、显示或不共享 /etc/exports 中定义的目录
语法格式:exportfs 选项 [目录]
选项 | 说明 |
-a | 共享或不共享 /etc/exports 中定义的共享目录,常与 r 或 u 一起使用 |
-r | 重新共享指定目录 |
-u | 不共享指定目录 |
-o | 可以指定导出选项(后面所跟的目录可以不是 /etc/exports 中的目录) |
-v | 查看共享的目录及其导出选项 |
使用 showmount 命令可以查看指定服务器的共享目录
语法格式:showmount -e NFS_IP
查看 /var/lib/nfs/etab 文件可以查看 nfs 服务器共享目录和导出选项的详细信息
客户端挂载 nfs 文件系统
mount -t nfs NFS_IP: 共享目录 本地挂载点
注意要点:
1、开启 nfs 前要确保 rpcbind 服务已启动
2、服务端和客户端都要开启 rpc 服务
3、最好关闭 iptables 和 selinux
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-09/134828.htm