NFS服务配置
NFS:(Network File System)网络文件系统,主流异构平台共享文件之一
NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
nfs存储工作原理
NFS工作原理
1.用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
2.NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
3.NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
4.nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
5.Rpc.mount 进程判断客户端是否有对应的权限进行验证。
6.idmap 进程实现用户映射和压缩
7.最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务
1.3 前提条件
1.nfs依赖于RPC服务来传递消息
2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
3.先启动RPC服务,再启动NFS服务
4.NFS和RPC之间的通讯是他们自己内部完成的,对于用户来说无感知
5.NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息
6.防火墙要开放RPC服务的端口
NFS服务端部署
yum install -y nfs-utils /安装nfs,这个包里面包括了rpcbind,如果最后没有显示这个包中包括了rpcbind的话就自行安装rpcbind。
vi /etc/exports //编辑配置文件,在这个配置文件里面写入:
!!!不要回车
/home/nfstestdir 192.168.29.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
rw 读写权限
ro 只读权限
root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)
all_squash 客户端上所有用户在使用NFS共享目录时都被限定为 一个普通用户
anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
no_all_squash 无论 NFS 客户端使用什么账户访问,都不进行压缩
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
anongid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
编辑好配置文件后启动NFS服务
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
setenforce 0
systemctl stop firewalld
客户端挂载
yum install -y nfs-utils
showmount -e 192.168.29.138 (使用服务端ip地址) //-e查看nfs的共享情况
[root@localhost mnt]# showmount -e 192.168.29.138
Export list for 192.168.29.138:
/home/nfstestdir 192.168.29.0/24
mount -t nfs 192.168.29.138:/home/nfstestdir /mnt/ //在客户端上挂载NFS
[root@localhost mnt]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 879M 17G 5% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.6M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
192.168.29.138:/home/nfstestdir 18G 946M 17G 6% /mnt
touch /mnt/dai.txt
ls -l /mnt/dai.txt
[root@localhost mnt]# ls -l /mnt/dai.txt
-rw-r--r--. 1 1000 1000 26 11月 18 17:14 /mnt/dai.txt
exportfs命令
-a:表示全部挂载或者卸载
-r:表示重新挂载
-u:表示卸载某一目录
-v:表示显示共享目录
在服务端进行以下操作
vi /etc/exports
添加:/tmp/ 192.168.29.0/24(rw,sync,no_root_squash)
exports -arv
客户端
mkdir /dai
mount -t nfs -onolock 192.168.29.138:/tmp /dai
touch /dai/test.txt
服务端
[root@localhost nfstestdir]# ls
aa dai.txt
客户端
[root@localhost mnt]# cd /mnt/
[root@localhost mnt]# ls
aa dai.txt