目录
内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.confLinux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og下。
一、文件系统
- 文件数据包括元信息与实际数据
- 数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
- 元信息:每个文件的属性,如:文件大小、时间、权限、inode等,文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
- block(块):连续的八个扇区组成一个block,4k,是文件存取的最小单位
- inode(索引节点):中文译名为“索引节点”,也叫 i 节点用于存储文件元信息
- 一个文件必须占用一个inode ,至少占用一个block
- 详细信息查看文件命令:
stat 文件名
二、文件的三个时间属性
- atime (access time) #最后一次访问文件或目录的时间 (读了就会更新时间)
- mtime (modify time) #最后一次修改文件或目录(内容)的时间 (写了就会修改时间)
- ctime (change time) #最后一次改变文件或目录(属性)的时间,如:文件大小、权限。命令:chmod 、 chown(赋权了就会修改时间)
- 例题:找到7天内所有大于10G的文件并用一条命令删除
find /-mtime 7 -size +10G -type f exec rm -rf {}\;
注释:数据大小改变时,block也会变,inode也会变,因为数据占用空间发生了变化
查看剩余inode号命令:(linux系统内部以inode号来识别文件)
df -i
删除乱码文件命令:
1.查看inode号:ls -i 2.find命令找到文件 并删除
三、xfs文件备份与恢复:
注释:xfs文件管理系统是centos7使用的 ,而centos6 使用的是ext4文件恢复系统
- ext4文件系统恢复命令:extundelete /需要备份的目录/备份名 /磁盘目录名/ ----inode号
- xfs文件系统恢复命令:
- xfsdump -f:指定备份文件目录
- xfsdump -L:指定标签session label
- xfsdump -M:指定设备标签media label
- xfsdump -s:备份单个文件(绝对路径)
XFS文件系统最小不低于4096个块 也就是16M
模拟inode号满了的情况
实验:全量备份以及增量备份和删除后恢复文件
- 全量备份步骤:
- 创建磁盘分区sdg1
- 创建格式化
- 创建空目录并挂载 /gz
- 在/gz文件下创建文件lbj 并插入文件内容23
- 创建备份空目录 /bf
- 全量备份磁盘/dev/sdg1中的内容到备份盘/bf 并设置文件名为/bf/bf0
- xfsdump -f /bf/bf0 /dev/sdg1 -L bf0 -M sdg1
实验2:增量备份后删除文件并恢复
- 往文件中插入新内容
- 增量备份一共0-9级(0为第一次全量备份 往后每备份一次 就加一级 9级后都按照9级备份,恢复也需要一级一级倒序恢复)
- 将磁盘/dev/sdg1的文件备份到/bf文件夹,取名/bf1
- 删除后恢复
四、日志分析
内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og下。
1、常见的一些日志文件:
- #内核及公共消息日志:
/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
- #计划任务日志:
/var/log/cron: 记录crond计划任务产生的事件信息。
- #系统引导日志:
/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息。
- #邮件系统日志:
/var/log/maillog: 记录进入或发出系统的电子邮件活动。
- #用户登录日志:
/var/log/secure: 记录用户认证相关的安全事件信息。
/var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式
2、日志的功能
- 用于 记录 系统、程序运行中发生的各种事件(用来追责)
- 通过阅读日志,有助于 诊断 和 解决系统故障
- 日志核心功能:用于 数据恢复
3、日志消息的优先级别
数字等级越小,优先级越高、消息越重要。
4、日志格式
5、日志的一般保留时间
- 程序的日志,一般只保留当天,一般留个2天左右 http,nginx
- 数据日志,数据库,最少要保留半年
- 用户信息日志,永久保存
- 企业根据业务需要,自定义的保留时间
6、改配置文件的注意点
- 改配置文件,注意一点,改错了即时退出,不要保存
- 复制粘贴不要轻易使用(有的空格无法识别 造成报错)
- 有格式规范,大小写和标点符号都要注意
- 改完了配置文件,一定重启对应的服务,否则,新配置是不生效的
- 只针对我们实验环境:关防火墙和安全机制
五、配置日志服务器来收集日志
rsyslog是一个C/S架构,可以通过套接字来进行监听记录工作,
可以基于TCP和UDP工作,默认的监听端口是514,只需要在MODULES打开即可。
- 发送服务器:客户端 192.168.181.101
- 收集服务器:服务端 192.168.233.102
- //关闭服务端和客户端防火墙、selinux
- setenforce 0
- systemctl stop firewalld
- systemctl disable firewalld
- 配置发送方:
- //修改客户端配置文件,并启动服务
- vim /etc/rsyslog.conf
- #### MODULES ####
- #将下面注释取消
- $ModLoad imtcp
- $InputTCPServerRun 514
- #### RULES ####
- #*.info;mail.none;authpriv.none;cron.none /var/log/messages --这一行必须注释,
- 注释的意义在于,否则还会向本机的/var/log/messages继续发消息
- *.info;mail.none;authpriv.none;cron.none @@192.168.181.102
- *.info 表示所有等级为 info 及以上的日志都会被发送,
- 其中 * 代表所有设施 (facility),如 auth、daemon、syslog、kern 等。
- mail.none 表示邮件相关的日志不会被发送,其中 none 代表不包含指定的设施。
- authpriv.none 表示安全和权限相关的日志不会被发送,
- 其中 authpriv 代表包括 auth 和 priv 两个设施。
- cron.none 表示计划任务相关的日志不会被发送,其中 cron 代表计划任务的设施。
- @@192.168.181.102 表示将符合条件的日志通过TCP协议发送到远程主机 192.168.181.102 上的 rsyslog 服务。
- 其中,@@ 表示强制使用tcp协议,单个 @ 表示使用udp协议。
- systemctl restart rsyslog
- netstat -antp | grep 514 #查看端口情况
- 配置接收方:
- //修改服务端配置文件,并启动服务
- vim /etc/rsyslog.conf
- #将下面四行前的注释取消掉
- $ModLoad imtcp
- $InputTCPServerRun 514
- systemctl restart rsyslog
- netstat -antp | grep 514 #查看端口情况
六、将ssh服务日志单独存放
- 第一步:关闭服务端和客户端防火墙、selinux
- [root@localhost logs]# setenforce 0
- [root@localhost logs]# systemctl stop firewalld
- [root@localhost logs]# vim /etc/rsyslog.conf
- 72 # Save boot messages also to boot.log
- 73 local7.* /var/log/boot.log
- 74 local6.* /var/log/ssh.log
- [root@localhost logs]# vim /etc/ssh/sshd_config
- 30 # Logging
- 31 #SyslogFacility AUTH
- 32 #SyslogFacility AUTHPRIV #注释掉
- 33 SyslogFacility LOCAL6 #添加这一行,可以复制粘贴,必须要大写
- 重启服务
- [root@localhost logs]# systemctl restart sshd
- [root@localhost logs]# systemctl restart rsyslog
- 验证:
- 另一台:ssh root@192.168.233.21
- 在192.168.233.21上查看日志 /var/log/ssh.log