一、nfs 简介
NFS是Network File System的缩写及网络文件系统。
主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS。
二、服务端和客户端安装 nfs 和 rpc 服务
rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind
提示:RPC用于远程过程调用服务程序,只需要在服务端安装。
三、配置 nfs 服务
1. 服务端配置方式
1). 编写配置文件
vim /etc/exports
man exports # 可查看配置格式
/data 172.16.1.0/24 (rw,sync)
#设置数据存储的目录 设置网络一个白名单(配置存储目录的权限信息)
参数信息 | 参数说明 |
---|---|
rw | 存储目录是否有读写权限 |
ro | 存储目录是否时只读权限 |
sync | 同步方式存储数据 直接将数据保存到磁盘(数据存储安全) |
async | 异步方式存储数据 直接将数据保存到内存(提高数据存储效率) |
no_root_squash | 不要将root用户身份进行转换 |
root_squash(默认配置) | 将root用户身份进行转换(默认配置) |
all_squash | 将所有用户身份都进行转换 |
no_all_squash(默认配置) | 不要将普通用户身份进行转换(默认配置) |
2). 多ip配置方式:
第一种方法:
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)
第二种方法:
/data 172.16.1.0/24(rw,sync)
/data 10.0.0.0/24(rw,sync)
2). 创建备份目录并修改权限属主属组信息
mkdir /data
chown nfsnobody.nfsnobody /data
chmod 755 /data
3). 启动服务程序
# 先启动 rpc 服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
# 再启动 nfs 服务
systemctl start nfs
systemctl enable nfs
4). 查看服务状态
systemctl status rpcbind
systemctl status nfs
2. 客户端配置方式
1). 实现远程挂载共享目录
mount -t nfs 172.16.1.31:/data /mnt
四、rpc 使用方法
1. 语法
rpcinfo -p localhost/服务端ip # 检查nfs服务进程与端口注册信息
2. 查看端口信息
# nfs服务未注册信息:
[root@nfs01 ~]# rpcinfo -p 172.16.1.31
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
# nfs服务注册之后信息:
[root@nfs01 ~]# rpcinfo -p 172.16.1.31
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 53997 status
100024 1 tcp 49863 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
五、客户端 nfs 挂载卸载方法
1. 挂载方式
1). 语法:
mount -t nfs 服务端ip:文件信息 挂载点
2). 自动挂载:
a. 利用rc.local
echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
b. 利用fstab文件
vim /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
参数信息 | 参数说明 |
---|---|
rw(默认) | 实现挂载后挂载点目录可读可写 |
ro | 实现挂载后挂载点目录可读可写 |
suid(默认) | 在共享目录中可以让setuid权限位生效 |
nosuid | 在共享目录中可以让setuid权限位失效 提供共享目录的安全性 |
exec | 共享目录中的执行文件可以直接执行 |
noexec | 共享目录中的执行文件可以无法直接执行 提供共享目录的安全性 |
auto | 可以实现自动挂载 mount -a 实现加载fstab文件自动挂载 |
noauto | 不可以实现自动挂载 |
nouser | 禁止普通用户可以卸载挂载点 |
user | 允许普通用户可以卸载挂载点 |
2. 卸载方式
1). 语法:
umount [参数] 挂载点
2). 命令参数
-l --- 不退出挂载点目录进行卸载
-f --- 强制进行卸载操作