网络文件共享服务
1、FTP文件传输协议
1.1 FTP工作原理
FTP的20和21端口的区别
-
20端口是用来传输数据的
-
21端口是客户端用来连接FTP服务器
-
主动模式(PORT):
- 客户端连接到FTP服务端的21号端口,发送用户名和密码
- 当客户端成功登陆FTP服务后要list列表或者读取FTP服务上的数据时,客户端会随机开放一个端口(1024以上),发送PORT(主动模式)命令到FTP服务器,告诉服务器,客户端采用主动模式和客户端开放的端口
- FTP服务器收到PORT主动模式命令和端口号后,通过FTP服务器自身的20端口和客户端开放的端口互相连接,发送数据(FTP-server的20端口---------------->(连接)客户端(随机开放的端口)
- 被动模式(PASV):
FTP客户端连接FTP服务器的21端口,发送用户名和密码,登录成功后要list列表或者读取数据时,客户端发送PASV命令到FTP服务器,FTP服务器会随机开放一个端口(1024以上),然后把开放的端口告诉客户端,客户端在连接FTP服务器开放的端口来进行数据的传输
- 主动模式和被动模式的区别
主要区别在两者传输数据上,主动模式下FTP传输数据是:服务端的20端口连接客户端随机开放的端口;被动模式下FTP传输数据是:客户端连接FTP服务器开放的随机端口。
因主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。所以通常使用FTP的被动模式读取数据
1.2FTP服务状态码
125:数据连接打开
200:命令成功
230:登录成功
331:用户名正确
4xx:客户端错误 425:不能打开数据连接
5xx:服务器错误 530:服务器无法登录
2、NFS服务
2.1概念
NFS:网络文件系统,基于内核的文件系统。用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure CallProtocol 远程过程调用)实现。
RPC采用C/S 模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到大为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
2.2NFS软件介绍
- 软件包:nfs-utils
- NFS服务主要进程:
- rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
- rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
- rpc.lockd 非必要,管理文件锁,避免同时写出错
- rpc.statd 非必要,检查文件一致性,可修复文件
- NFS日志文件:/var/lib/nfs/
- NFS配置文件:/etc/exports 或者 /etc/exports.d/*.exports
2.3 NFS共享配置文件格式
/dir (共享目录) 主机
1、ro,rw #只读和读写
2、async #异步,数据变化后不立即写入磁盘,先写入缓冲区中,过一段时间再写入磁盘,性能高,安全性低
3、sync #同步,数据再请求时立即写入共享存储磁盘,性能低,安全性高
4、root_squash #(默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS7以前的版本为nfsnobody
5、no_root_squash #远程root映射成NFS服务器的root用户
6、all_squash #所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
7、no_all_squash (默认)保留共享文件的UID和GID
8、anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
2.4 NFS工具
2.4.1 exports:可用于管理NFS导出的文件系统
-v #查看本机所有NFS共享
-r #重读配置文件,并共享目录
-a #输出本机所有共享
-au #停止本机所有共享
2.4.2 showmount
showmount -e hostname #查看远程主机的NFS共享
#实例:
[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *
2.4.3mount.nfs
[root@centos7 ~]#mkdir /mnt/nfs
[root@centos7 ~]#mount 10.0.0.8:/data/wordpress /mnt/nfs
[root@centos7 ~]#ls /mnt/nfs
index.html
[root@centos7 ~]#df -T /mnt/nfs
Filesystem Type 1K-blocks Used Available Use% Mounted on
10.0.0.8:/data/wordpress nfs4 52403200 398336 52004864 1% /mnt/nfs
2.5 自动挂载
- 软件包:autofs
- 服务文件:/usr/lib/systemd/system/autofs.service
- 配置文件:/etc/auto.mster
3、数据同步
在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动
实时同步到备份服务器特定目录中
- 实现实时同步的方法
- inotify + rsync 方式实现数据同步
- sersync
- 工作原理:
- 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
- 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
3.1inotify
概念:
异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,
linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件。
- 实现inotify软件:
- inotify-tools
- sersync
- lrsyncd
- inotify + rsync使用方式
- inotify对同步数据目录信息的监控
- rsync完成对数据的同步
- 利用脚本进行结合
实现notify
-
内核是否支持
Linux支持inotify的内核最小版本为 2.6.13,参看man 7 inotify
-
inotify 内核参数说明:
- max_queued_events:inotify 事件队列最大长度,如值太小会出现 Event Queue Overflow 错
误,默认值:16384, 生产环境建议调大,比如:327679 - max_user_instances:每个用户创建inotify实例最大值,默认值:128
- max_user_watches:可以监视的文件的总数量(inotifywait 单进程),默认值:8192,建议调大
[root@data-centos8 ~]#vim /etc/sysctl.conf fs.inotify.max_queued_events=66666 fs.inotify.max_user_watches=100000 [root@centos8 ~]#sysctl -p fs.inotify.max_queued_events = 66666 fs.inotify.max_user_watches = 100000
- max_queued_events:inotify 事件队列最大长度,如值太小会出现 Event Queue Overflow 错
-
inotify-tools工具
- inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,
常用于实时同步的目录监控 - inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计
- inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,
3.2 rsync
概念:
rsync 常用于做为 linux系统下的数据镜像备份工具,实现远程同步,支持本地复制,或者与其他SSH、
rsync主机同步数据,支持增量备份,配合任务计划,rsync能实现定时或间隔同步,配合inotify或
sersync,可以实现触发式的实时数据同步
rsync工作工作方式:
-
本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式
-
本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式
-
本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access viarsync daemon"段的格式
工作方式的区别:
前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一
个端口上,等待客户端的连接。
实验
remote shell"段的格式
-
本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access viarsync daemon"段的格式
工作方式的区别:
前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一
个端口上,等待客户端的连接。
实验
电脑内存不够无法开启这么多服务器,后面补上。