【NFS服务】
专用于linux和linux之间的专门的文件共享服务,network filesystem 网络文件系统
nfs服务可以把远程linux机器上面的文件目录数据,通过挂载的形式,映射在用户本地机器
(linux用户在自己本地有一个文件夹,通过nfs服务,把本地的这个文件夹,远程挂载到网络中的
一台机器的文件夹)
本地/mnt ---------- 远在广东的一台服务器/chaogedir
【NFS特点】
NFS很想windows的网络共享,samba服务
samba服务主要用于办公室的局域网共享服务
NFS发展有30年,代表了一个稳定的网络文件共享系统,是中小型企业最佳的文件共享系统
【共享存储的形式】
分为软件、硬件共享存储的形式
软件共享存储--NFS服务搭建
硬件共享存储
中小型企业一般不会购买硬件存储设备,成本太高,大公司业务发展特别快,需要购买硬件设备
分散网站的压力,如果网站的压力尺寸增长,硬件存储设备就得继续扩展,成本太高,
因此主流的企业都会选择开源的软件代替硬件设备,比如NFS集群服务的搭建
【NFS和RPC的概念】
NFS通过port传输数据,NFS服务在传输数据的时候,端口是随机选择的
NFS服务通过RPC服务,注册一个端口,实现告知用户,NFS的工作端口是哪一个
【什么是RPC】
RPC(远程过程调用)
linux上使用NFS服务,必须启动2个服务
。NFS服务
。RPC服务
NFS服务通过RPC注册自己的端口功能
RPC服务功能就是记录每个NFS功能对应的端口号,并且RPC保证了NFS客户端发出请求的时候,把该功能
对应的端口信息告知NFS客户端,保证客户端能够正确连接到NFS服务端的端口,达到传输数据的目的
RPC就好比一个中介,处于客户端和服务端之间
【RPC服务如何知道NFS服务器的端口信息呢】
答案是:NFS服务启动的时候,会随机采用若干个端口,并且主动在RPC服务里进行注册
如此一来,RPC服务就正确知道所有NFS服务端的端口功能了,RPC服务默认使用linux的111端口
来和客户端进行一个交流,并且通过111端口将正确的NFS服务端的端口信息,告知给NFS客户端
因此NFS客户端就能够正确找到NFS服务端的端口信息了
【RPCBIND服务】
在启动NFS服务之前,必须先启动RPC服务,在centos7服务器下为rpcbind服务,否则NFSserver无法向RPC注册信息
如果RPC服务重启,原来注册的NFS服务端信息也就失效了,也必须重启服务,再次注册信息给RPC服务
特别要注意的是,修改NFS配置文件后,不需要重启NFS,
只需要执行
exportfs -rv
systemctl reload nfs
两条命令中任意一条即可
【NFS工作原理】
【安装配置NFS】
[root@backup ~]# yum install nfs-utils rpcbind -y
【环境配置】
NFS服务是C/S模式,准备一个NFS服务端,准备一个NFS客户端,两台linux机器
在NFS服务端创建一个用于共享的文件夹,且设置响应的读写权限
[root@backup ~]# mkdir /nfschaoge
[root@backup ~]# chmod -Rf 777 /nfschaoge/
[root@backup ~]# ll -d /nfschaoge/
drwxrwxrwx 2 root root 6 Jun 5 22:50 /nfschaoge/
【修改NFS服务配置文件】
/etc/exports 主配置文件地址
exports配置文件语法
NFS共享目录 NFS客户端地址(参数1、参数2...) 客户点地址2(参数1、参数2...)
例如
/ master(rw) master2(rw,no_root_squash)
/pub *(rw)
/home/chao 123.206.16.61(ro)
【nfs语法参数解释】
1.NFS共享目录:为NFS服务器要共享的实际目录,必须绝对路径,注意目录的本地权限,如果要读写共享,要让本地目录可以被NFS客户端的(nfsnobody)读写
2.NFS客户端地址,也就是NFS服务器端授权可以访问共享目录的客户端地址,详见下表
3.权限参数,对授权的NFS客户端访问权限设置,见下表
nfs客户端地址形式
##########################################################
单一客户端 192.168.178.113 用的很少
允许整个网段 192.168.178.0/24 指定局域网段,用的很多
授权整个域名客户端 nfs.chaoge.com 用的很少
授权子域名客户端 *.chaoge.com 用的很少
#############################################################
nfs客户端的权限参数
###########################3
ro 只读
rw 读写
root_squash 当nfs客户端以root访问时,它的权限映射为NFS服务端的匿名用户,它的用户ID/GID会变成nfsnobody
no_root_squash 同上,但映射客户端的root为服务器的root,不安全,避免使用
all_squash 所有nfs客户端用户映射为匿名用户,生产常用参数
sync 数据同步写入到内存与硬盘,优点数据安全,缺点性能较差
async 数据写入到内存,再写入硬盘,效率高,但可能内存数据会丢
####################################
【启动NFS服务端的文件共享】
NFS服务都是基于RPC的111端口通信,必须确保启动了RPC服务
如果RPCBIND服务停止了,111端口也不会挂掉,因为centos7还提供了一个rpcbind.socket服务运行着
1.保证rpcbind服务正确运行
[root@backup ~]# systemctl start rpcbind
[root@backup ~]# systemctl status rpcbind
【NFS服务端部署】
1.确保RPC服务已启动
2.创建nfs服务端共享的目录,且进行权限修改
[root@backup ~]# mkdir /nfschaoge/
[root@backup ~]# chmod -Rf 777 /nfschaoge/
[root@backup ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
[root@backup ~]# chown -R nfsnobody.nfsnobody /nfschaoge/
[root@backup ~]# ll -d /nfschaoge/
drwxrwxrwx 2 nfsnobody nfsnobody 6 Jun 5 22:50 /nfschaoge/
3.在nfs共享目录中,创建测试文件
[root@backup ~]# touch /nfschaoge/鸡你太美
[root@backup ~]# touch /nfschaoge/爱的魔力转圈圈
[root@backup ~]# ll /nfschaoge/
total 0
-rw-r--r-- 1 root root 0 Jun 5 23:38 爱的魔力转圈圈
-rw-r--r-- 1 root root 0 Jun 5 23:38 鸡你太美
4.修改服务端的NFS配置文件,进行客户端授权
[root@backup ~]# vim /etc/exports
/nfschaoge *(insecure,rw,sync)
5.重新加载nfs,读取配置文件
root@backup ~]# systemctl restart nfs
6.检查本地的nfs服务端挂载情况
[root@backup ~]# showmount -e 10.0.0.200
Export list for 10.0.0.200:
/nfschaoge *
7.再次检查nfs服务端的共享参数
[root@backup ~]# cat /var/lib/nfs/etab
/nfschaoge *(rw,sync,wdelay,hide,nocrossmnt,insecure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,root_squash,no_all_squash)
8.此时可以吧nfs服务端,当做一个客户端,模拟挂载访问试试
[root@backup ~]# mount -t nfs 127.0.0.1:/nfschaoge /mnt
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 17G 9% /
devtmpfs 981M 0 981M 0% /dev
tmpfs 992M 0 992M 0% /dev/shm
tmpfs 992M 9.5M 982M 1% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 973M 124M 849M 13% /boot
tmpfs 199M 0 199M 0% /run/user/0
127.0.0.1:/nfschaoge 19G 1.7G 17G 9% /mnt
[root@backup ~]# ll /mnt/
total 0
-rw-r--r-- 1 root root 0 Jun 5 23:38 爱的魔力转圈圈
-rw-r--r-- 1 root root 0 Jun 5 23:38 鸡你太美
[root@backup ~]# mkdir /nfschaoge/mnt到此一游
[root@backup ~]# ll /nfschaoge/
total 0
drwxr-xr-x 2 root root 6 Jun 5 23:55 mnt到此一游
-rw-r--r-- 1 root root 0 Jun 5 23:38 爱的魔力转圈圈
-rw-r--r-- 1 root root 0 Jun 5 23:38 鸡你太美
9.如果不用nfs目录共享了,可以直接取消挂载,只需要取消本地目录挂载即可
[root@backup ~]# umount /mnt
【nfs客户端远程挂载使用】
[root@web01 ~]# yum install nfs-utils rpcbind -y #安装操作nfs的命令套件
# 确保rpcbind服务正常
systemctl status rpcbind
# 检查远程挂载情况,需要服务端防火墙关闭,或是配置了规则
[root@chaoge_linux mnt]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/nfschaoge *
#以nfs协议挂载
[root@chaoge_linux ~]# mount -t nfs 127.0.0.1:/nfschaoge /mnt
如果挂载出现问题,注意查看笔记,检查防火墙
【nfs自动挂载服务】
配置开机挂载服务,每次开机都能用nfs
[root@web01 nfsShare]# tail -1 /etc/fstab
127.0.0.1:/nfschaoge /mnt nfs defaults 0 0 添加如下参数