- 总结日志记录的内容包含什么。
- 总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标。
- 总结rsyslog配置文件格式。
4.完成功能,sshd应用将日志写到rsyslog的local6分类,过滤所有级别,写到/var/log/ssh.log。
完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主
机上的rsyslog服务,写入到/var/log/all-ssh.log文件。
- 总结/var/log/目录下常用日志文件作用。
- 总结journalctl命令的选项及示例。
7 总结DAS, NAS, SAN区别,使用场景。
- 实现nfs共享/data/nfs目录,所有压缩为666用户。并配置其他虚拟机自动挂载。
- 总结inotify原理,命令及使用。
10.总结sersync的配置,同时基于sersync替换inotify+rsync。
总结日志记录的内容包含什么
日志记录的内容包括:
1.历史事件:时间,地点,人物,事件
2.日志级别:事件的关键程度
总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标。
Linux日志主要分三类:内核系统日志、用户日志、程序日志。
内核系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把日志文件交由rsyslog管理,因而这些程序使用的日志记录也具有相似的格式。
Rocky:/var/log/messages 系统综合日志
Ubuntu: /var/log/syslog 系统综合日志
用户日志:这种日志数据用于记录Linux操作系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。
/var/log/btmp 查看方式:lastb 失败登录日志
/var/log/wtmp 查看方式:last 成功登录日志
Rocky: /var/log/secure 用户认证相关的安全日志
Ubuntu: /var/log/auth.log
程序日志:有些应用程序会选择由自己独立管理一份日志文件,用于记录本程序运行过程中的各种事件信息,而不是交给rsyslog服务管理。由于这些程序只负责管理自己的日志文件,因此不同程序所使用的日志记录格式可能会存在较大的差异。
从功能上对日志进行分类:
内置分类:
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user(default), uucp, syslog
自定义分类:
local0-7
优先级别:
debug< info< notice < warn(warning) < err(error) < crit(critical) < alert < emerg(panic)
应用如何将日志发到rsyslog,并到目标
3. 总结rsyslog配置文件格式
facility.priority +路径 格式:
例:
auth,authpriv.* /var/log/auth.log
facility.priority;facility.none + [-路径] :
例:
*.info;auth,authpriv.none -/var/log/syslog 除了auth,authpriv的info及以上等级的日志异步写入
4.完成功能,sshd应用将日志写到rsyslog的local6分类,过滤所有级别,写入到/var/log/ssh.log。完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主机上的rsyslog服务,写入到/var/log/all-ssh.log文件
sshd:9 ,128,10
logserver:11
分别配置9,128,10的sshd配置文件 用local6生成sshd.log文件
[root@ubuntu9 ssh]cat sshd_config
# Logging
SyslogFacility local6
#LogLevel INFO
[root@ubuntu9 /]cat /etc/rsyslog.d/50-default.conf
local6.* /var/log/sshd.log
[root@ubuntu9 /]systemctl restart sshd rsyslog.service
[root@128 ~] vim /etc/ssh/sshd_config
SyslogFacility local6
[root@128 etc] cat rsyslog.conf
# Save boot messages also to boot.log
local6.* /var/log/sshd.log
[root@128 etc]# systemctl restart sshd rsyslog.service
[root@10 ~]vim /etc/ssh/sshd_config
[root@10 ~]vim /etc/rsyslog.d/50-default.conf
[root@10 ~]systemctl restart sshd rsyslog.service
将三台sshd的log文件写入logserver
开启logserver:11的udp514端口并修改来自sshd的log文件都保存到/var/log/all-sshd.log里
[root@11 ~]#vim /etc/rsyslog.conf
sshd.* /var/log/all-sshd.log
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
[root@11 ~]#systemclt restart rsyslog.server
[root@11 ~]#ss -nul
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 0.0.0.0:514 0.0.0.0:*
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 [::]:514 [::]:*
修改客户端sshd:9 ,128,10配置文件
[root@ubuntu09 ~]#cat /etc/rsyslog.d/50-default.conf
# Default rules for rsyslog.
...
local6.* /var/log/sshd.log
local6.* @10.0.0.11:514
[root@rocky128 ~]# cat /etc/rsyslog.conf
# rsyslog configuration file
...
local6.* /var/log/sshd.log
local6.* @10.0.0.11:514
[root@ubuntu10 ~]#cat /etc/rsyslog.d/50-default.conf
# Default rules for rsyslog.
...
local6.* /var/log/sshd.log
local6.* @10.0.0.11:514
验证:
[root@ubuntu11 ~]#tail -f /var/log/all-sshd.log
Jan 9 20:25:56 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.56:123 (ntp.ubuntu.com).
Jan 9 20:26:01 10 sshd[1229]: Exiting on signal 15
Jan 9 20:26:03 ubuntu09 sshd[862]: Accepted password for root from 10.0.0.1 port 4969 ssh2
Jan 9 20:26:23 ubuntu10 sshd[793]: Server listening on 0.0.0.0 port 22.
Jan 9 20:26:23 ubuntu10 sshd[793]: Server listening on :: port 22.
Jan 9 20:26:38 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 91.189.91.157:123 (ntp.ubuntu.com).
Jan 9 20:26:49 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.57:123 (ntp.ubuntu.com).
Jan 9 20:26:59 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.58:123 (ntp.ubuntu.com).
Jan 9 20:27:09 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.56:123 (ntp.ubuntu.com).
Jan 9 20:27:36 ubuntu10 sshd[862]: Accepted password for root from 10.0.0.1 port 5032 ssh2
Jan 9 20:28:05 ubuntu09 sshd[987]: Accepted password for root from 10.0.0.1 port 5048 ssh2
Jan 9 20:28:07 rocky128 sshd[1562]: Accepted password for root from 10.0.0.1 port 5049 ssh2
Jan 9 20:28:07 ubuntu10 sshd[983]: Accepted password for root from 10.0.0.1 port 5050 ssh2
Jan 9 20:28:24 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.56:123 (ntp.ubuntu.com).
Jan 9 20:28:34 ubuntu11 systemd-timesyncd[660]: Timed out waiting for reply from 185.125.190.57:123 (ntp.ubuntu.com).
^C
5. 总结/var/log/目录下常用日志文件作用。
Ubuntu:
auth.log 安全日志
syslog 系统日志
btmp: 用户失败登录日志
wtmp: 用户登录日志
dmesg: 硬件启动日志
Rocky:
secure : 安全日志
messages: 系统日志
btmp: 用户失败登录日志
wtmp: 用户登录日志
dmesg: 硬件启动日志
6.总结journalctl命令的选项及示例
命令格式: journalctl [OPTIONS...] [MATCHES...]
查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl
root@ubuntu11 ~]#journalctl
Feb 21 08:28:33 ubuntu2204 kernel: Linux version 5.15.0-52-generic (buildd@lcy02-amd64-032) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.>
Feb 21 08:28:33 ubuntu2204 kernel: Command line: BOOT_IMAGE=/vmlinuz-5.15.0-52-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro
Feb 21 08:28:33 ubuntu2204 kernel: KERNEL supported cpus:
Feb 21 08:28:33 ubuntu2204 kernel: Intel GenuineIntel
Feb 21 08:28:33 ubuntu2204 kernel: AMD AuthenticAMD
Feb 21 08:28:33 ubuntu2204 kernel: Hygon HygonGenuine
Feb 21 08:28:33 ubuntu2204 kernel: Centaur CentaurHauls
Feb 21 08:28:33 ubuntu2204 kernel: zhaoxin Shanghai
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: xstate_offset[5]: 832, xstate_sizes[5]: 64
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: xstate_offset[6]: 896, xstate_sizes[6]: 512
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: xstate_offset[7]: 1408, xstate_sizes[7]: 1024
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: xstate_offset[9]: 2432, xstate_sizes[9]: 8
Feb 21 08:28:33 ubuntu2204 kernel: x86/fpu: Enabled xstate features 0x2e7, context size is 2440 bytes, using 'compacted' format.
Feb 21 08:28:33 ubuntu2204 kernel: signal: max sigframe size: 3376
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-provided physical RAM map:
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009e7ff] usable
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x000000000009e800-0x000000000009ffff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007fedffff] usable
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x000000007fee0000-0x000000007fefefff] ACPI data
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x000000007feff000-0x000000007fefffff] ACPI NVS
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x000000007ff00000-0x000000007fffffff] usable
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
Feb 21 08:28:33 ubuntu2204 kernel: NX (Execute Disable) protection: active
Feb 21 08:28:33 ubuntu2204 kernel: SMBIOS 2.7 present.
查看指定时间的日志
journalctl --since='2024-01-09'
[root@ubuntu11 ~]journalctl --since='2024-01-09'
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Linux version 5.15.0-52-generic (buildd@lcy02-amd64-032) (gcc (Ubuntu 11.2.0-19ubunt>
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Command line: BOOT_IMAGE=/vmlinuz-5.15.0-52-generic root=/dev/mapper/ubuntu--vg-ubun>
Jan 11 10:51:50 ubuntu2204.wang.org kernel: KERNEL supported cpus:
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Intel GenuineIntel
Jan 11 10:51:50 ubuntu2204.wang.org kernel: AMD AuthenticAMD
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Hygon HygonGenuine
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Centaur CentaurHauls
Jan 11 10:51:50 ubuntu2204.wang.org kernel: zhaoxin Shanghai
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Disabled fast string operations
Jan 11 10:51:50 ubuntu2204.wang.org kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Jan 11 10:51:50 ubuntu2204.wang.org kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Jan 11 10:51:50 ubuntu2204.wang.org kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Jan 11 10:51:50 ubuntu2204.wang.org kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
Jan 11 10:51:50 ubuntu2204.wang.org kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' f>
Jan 11 10:51:50 ubuntu2204.wang.org kernel: signal: max sigframe size: 1776
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-provided physical RAM map:
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009e7ff] usable
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x000000000009e800-0x000000000009ffff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007fedffff] usable
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x000000007fee0000-0x000000007fefefff] ACPI data
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x000000007feff000-0x000000007fefffff] ACPI NVS
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x000000007ff00000-0x000000007fffffff] usable
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
Jan 11 10:51:50 ubuntu2204.wang.org kernel: NX (Execute Disable) protection: active
Jan 11 10:51:50 ubuntu2204.wang.org kernel: SMBIOS 2.7 present.
Jan 11 10:51:50 ubuntu2204.wang.org kernel: DMI: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.0>
Jan 11 10:51:50 ubuntu2204.wang.org kernel: vmware: hypercall mode: 0x02
Jan 11 10:51:50 ubuntu2204.wang.org kernel: Hypervisor detected: VMware
Jan 11 10:51:50 ubuntu2204.wang.org kernel: vmware: TSC freq read from hypervisor : 4199.997 MHz
Jan 11 10:51:50 ubuntu2204.wang.org kernel: vmware: Host bus clock speed read from hypervisor : 66000000 Hz
Jan 11 10:51:50 ubuntu2204.wang.org kernel: vmware: using clock offset of 5205614748 ns
显示尾部的最新10行日志
journalctl -n
[root@ubuntu11 ~]journalctl -n
Jan 11 17:10:51 ubuntu11 systemd[1]: apt-daily.service: Deactivated successfully.
Jan 11 17:10:51 ubuntu11 systemd[1]: Finished Daily apt download activities.
Jan 11 17:10:51 ubuntu11 systemd[1]: apt-daily.service: Consumed 1min 26.482s CPU time.
Jan 11 17:15:36 ubuntu11 sshd[1916]: Accepted password for root from 10.0.0.1 port 4479 ssh2
Jan 11 17:15:36 ubuntu11 sshd[1916]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Jan 11 17:15:36 ubuntu11 systemd-logind[823]: New session 11 of user root.
Jan 11 17:15:36 ubuntu11 systemd[1]: Started Session 11 of User root.
Jan 11 17:17:01 ubuntu11 CRON[2029]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Jan 11 17:17:01 ubuntu11 CRON[2030]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 11 17:17:01 ubuntu11 CRON[2029]: pam_unix(cron:session): session closed for user root
查看指定服务的日志
journalctl -u service
[root@ubuntu11 nginx]#journalctl -u nginx.service
Jan 11 17:33:27 ubuntu11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 11 17:33:27 ubuntu11 systemd[1]: Started A high performance web server and a reverse proxy server.
7.总结DAS, NAS, SAN区别,使用场景。
DAS(Direct Attached Storage)、NAS(Network Attached Storage)和SAN(Storage Area Network)是三种不同的存储架构,它们在设计、使用场景和连接方式上有所不同。
DAS(Direct Attached Storage):
连接方式: 直接连接到单一服务器或计算机。通常通过诸如SAS(Serial Attached SCSI)或USB等直接连接的方式。
设计: 存储设备直接附加到单个服务器,形成一个独立的存储单元。典型的 DAS 设备包括外部硬盘驱动器、磁带库等。
使用场景: 适用于小规模部署,单个服务器需要大量存储容量,或者需要独立管理的存储解决方案。
NAS(Network Attached Storage):
连接方式: 通过网络连接,可以通过以太网或其他网络协议(如NFS、CIFS/SMB)访问。
设计: 存储设备通过网络协议共享给多个计算机。通常有自己的操作系统和管理界面,可以提供文件级别的访问。
使用场景: 适用于需要共享文件和数据的环境,如小型办公室、家庭网络,提供易于管理和共享的文件存储。
SAN(Storage Area Network):
连接方式: 使用专用的高速网络(通常是光纤通道)连接存储设备和多个服务器。
设计: 存储设备在独立的网络中,提供块级别的存储访问。SAN 可以由多个存储设备组成,并提供高度可扩展性。
使用场景: 适用于需要高性能、高可用性、块级别访问的应用场景,如企业级数据库、虚拟化环境,以及需要多台服务器共享存储资源的大型部署。
使用场景总结:
DAS: 适用于单个服务器需要大容量存储的场景,例如备份、归档等。
NAS: 适用于需要共享文件的场景,如小型办公室、家庭网络,以及轻量级文件共享需求。
SAN: 适用于对高性能、高可用性和块级别访问有要求的大型企业环境,特别是在虚拟化和数据库等关键应用场景。
选择适当的存储架构取决于特定的需求、预算和规模。在实际应用中,有时也会采用混合存储解决方案,根据不同的需求选择合适的存储架构。
8.实现nfs共享/data/nfs目录,所有压缩为666用户。并配置其他虚拟机自动挂载。
NFS服务器配置:
安装NFS服务器包
[root@ubuntu09 ~]apt update && apt install -y nfs-server
创建共享目录/data/nfs
[root@ubuntu09 ~]mkdir /data/nfs/ -p
[root@ubuntu09 ~]ll /data/
total 16
drwxr-xr-x 4 root root 4096 Jan 12 18:32 ./
drwxr-xr-x 19 root root 4096 Jan 12 18:25 ../
drwxr-xr-x 2 root root 4096 Jan 12 18:32 nfs/
配置exports
[root@ubuntu09 etc]cat /etc/exports
[root@ubuntu09 nfs]#cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/data/nfs 10.0.0.0/24(rw,all_squash,anonuid=666,anongid=666)
[root@ubuntu09 nfs]#exportfs -r
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "10.0.0.0/24:/data/nfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
[root@ubuntu09 nfs]#exportfs -v
/data/nfs 10.0.0.0/24(sync,wdelay,hide,no_subtree_check,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
客户端挂载:
安装客户端工具
[root@ubuntu11 ~]#apt update && apt install -y nfs-common
[root@ubuntu10 ~]#apt update && apt install -y nfs-common
查看共享网络目录:
[root@ubuntu10 ~]#showmount -e 10.0.0.9
Export list for 10.0.0.9:
/data/nfs (everyone)
挂载:
[root@ubuntu10 mut]#mkdir /mnt/share1 -p
[root@ubuntu10 share1]#cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-aL2z4qRF6RP6ygmuXVQ89hX7MrChz0jPApnaIZ1WSFWWkEAhejDEX9zi7SrwDOep / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/f81cc5f3-9189-4a0c-b53a-f67110325cc7 /boot ext4 defaults 0 1
/swap.img none swap sw 0 0
10.0.0.9:/data/nfs /mnt/share1 nfs _netdev 0 0
[root@ubuntu10 mut]#mount -a
测试:
root@ubuntu10 share1]#ll
total 8
drwxr-xr-x 2 666 666 4096 Jan 12 19:04 ./
drwxr-xr-x 3 root root 4096 Jan 12 18:56 ../
-rw-r--r-- 1 666 666 0 Jan 12 19:04 1.txt 客户端创建
-rw-r--r-- 1 root root 0 Jan 12 18:53 test1.txt nfs服务器创建
9. 总结inotify原理,命令及使用。
inotify(inode notify) 是 Linux 内核提供的一种文件系统事件通知机制,用于监控文件系统的事件并在事件发生时通知相关的应用程序。inotify 提供了对文件系统变化的实时响应,允许应用程序监控文件或目录的变更情况。
inotify 的原理:
内核接口: inotify 使用内核提供的接口,通过将一个特殊的文件描述符与监控对象关联,创建一个 inotify 实例。
监控对象: 可以是文件或目录。当监控对象发生变化时,内核会产生相应的事件。
事件: 内核检测到文件系统事件(如创建、删除、修改、移动等)时,会生成相应的事件。
通知: 内核通过文件描述符向用户空间发送事件通知。
用户空间处理: 应用程序通过读取文件描述符获取事件通知,并作出相应的处理。
监控目录中所有事件:
inotifywait -m /path/to/directory
监控目录及其子目录中所有事件:
inotifywait -r -m /path/to/directory
指定事件监听:
inotifywait -e creat ,delete,move,close_write,attrid
后台监听并输出log
inotifywait -o /var/inotify.log
约定log时间格式
inotifywait --timefmt "%Y-%M-%d %H:%M:%S"
约定输出格式
inotifywait --format "%T %w%f event: %;e"
10.总结sersync的配置,同时基于sersync替换inotify+rsync。
sersync类似于inotify,同样用于监控,但它克服了inotify的缺点.
inotify最大的不足是会产生重复事件,或者同一个目录下多个文件的操作会产生多个事件,例如,当监
控目录中有5个文件时,删除目录时会产生6个监控事件,从而导致重复调用rsync命令。另外比如:vim
文件时,inotify会监控到临时文件的事件,但这些事件相对于rsync来说是不应该被监控的
sersync 优点:
sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,
所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
sersync配置很简单,其中提供了静态编译好的二进制文件和xml配置文件,直接使用即可
sersync使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态
sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对
同步失败的文件重新同步
sersync不仅可以实现实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即也可以
按要求隔一段时间整体同步一次,而无需再额外配置crontab功能
sersync 可以二次开发。
总结sersync配置文件
#vim /usr/local/sersync/confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/> # 是否开启调试模式
<fileSystem xfs="false"/>
<filter start="false"> #不开启文件过滤功能,当为true时,以下类型的文件将不同
步
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify> # 监控事件,默认监控
delete/close_write/moved_from/moved_to/create folder
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/> #修改此行为true,文件属性变化后也会同步
<modify start="false"/>
</inotify>
<sersync> # rsync命令的配置段
<localpath watch="/data/www"> #修改此行,需要同步的源目录或文件,建议同步目
录
<remote ip="备份服务器IP" name="backup"/> #修改此行,指定备份服务器地址和rsync
daemon的模块名,如果下面开启了ssh start,此时name为远程shell方式运行时的目标目录
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/> # 指定rsync选项
<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/> #修
改此行为true,指定备份服务器的rsync配置的用户和密码文件
<userDefinedPort start="false" port="874"/><!-- port=874 -->#指定rsync的非
标准端口号
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/> #默认使用rsync daemon运行rsync命令,true为使用远程shell模
式
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every
60mins execute once--> #错误重传及日志文件路径
<crontab start="false" schedule="600"><!--600mins--> #不开启crontab功能
<crontabfilter start="false"> #不开启crontab定时传输的筛选功能
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
<plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix
/opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx"
passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-
9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>