Linux文件系统与日志分析

Candy独角兽 / 2023-07-31 / 原文

目录
  • Linux文件系统与日志分析
    • 日志是解决问题的唯一手段
      • 1.inode表结构
        • 1.1 元数据
        • 1.2 inode内容
        • 1.3 inode内容
        • 1.4 目录文件的结构
        • 1.5 inode的号码
        • 1.6 恢复XFS类型的文件
      • 2. 日志服务管理
        • 2.1 系统日志介绍
        • 2.2 rsyslog系统日志服务
        • 2.3 rsyslog日志管理
          • 2.3.1 系统日志术语
        • 2.4 日志文件
        • 2.5 日志管理工具 journalctl
      • 3. 日志实际操作

Linux文件系统与日志分析

日志是解决问题的唯一手段

1.inode表结构

1.1 元数据

元数据(元信息)是存放在inode表中

  • 文件数据包括元信息和实际数据
  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
  • block(块)
    • 连续的八个扇区组成一个block
    • 是文件存取的最小单位
  • inode(索引节点)
    • 索引节点也叫i节点
    • 用于存储文件元信息

1.2 inode内容

一个文件必须占用一个inode,但至少占用一个block

查看某个文件的inode信息
stat [文件名]
如:stat aa.txt


每个文件都必须占用一个inode,inode表会占用文件系统磁盘空间的1%,有时inode已经用光,但硬盘还未存满,所以无法在硬盘上创建新文件。

1.3 inode内容

  • Linux系统文件三个主要的时间属性
    • ctime(change time)
      • 最后一次改变文件或目录(属性)的时间
    • atime(access time)
      • 最后一次访问文件或目录的时间
    • mtime(modify time)
      • 最后一次修改文件或目录(内容)的时间

1.4 目录文件的结构

  • 目录也是一种文件

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件

  • Linux系统内部不使用文件名,而使用inode号码来识别文件

  • 文件名便于用户识别,文件名是inode号的别称

1.5 inode的号码

  • 用户通过文件名打开文件时,系统内部的过程
    • 系统找到这个文件名对应的inode号码
    • 通过inode号码,获取inode信息
    • 根据inode信息,找到文件数据所在的block,读出数据
  • 查看inode号码的方法
    • ls -i命令:查看文件名对应的inode号码
      • ls -i 文件名
    • stat命令:查看文件inode信息中的inode号码
      • stat 文件名

1.6 恢复XFS类型的文件

  • xfsdump命令格式
    • xfsdump -f 备份存放位置,要备份的路径或设备文件
  • xfsdump备份级别(默认0)
    • 0:完全备份
    • 1-9:增量备份
  • xfsdump常用选项:-f、-L、-M、-s
  • xfsrestore命令格式
    • xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
  • 模拟删除并执行恢复操作

xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份XFS文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同UUID的文件系统

2. 日志服务管理

2.1 系统日志介绍

日志记录的内容包括

  • 历史事件:时间、地点、人物、事件
  • 日志级别:事件的关键性程序,Loglevel

日志等级

等级名称 说明
error(LOG_ERR) 错误信息,一般达到err等级的信息已经可以影响到服务或系统的运行了
info(LOG_INFO) 基本的通知信息
warning(LOG_WARNING) 警告信息,但是还不会影响到服务或系统的运行

2.2 rsyslog系统日志服务

收集、管理、记录日志

性能强

rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式 可以日志
  • 适用于企业级

2.3 rsyslog日志管理

可以自定义日志文件的位置
该软件要支持rsyslog

日志管理策略

  • 及时作好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限
    • 日志中可能会包含各类敏感信息,如账户、口令等
  • 集中管理日志
    • 将服务器的日志文件发到统一的日志文件服务器
    • 便于日志信息的统一收集、整理和分析
    • 杜绝日志信息的意外丢失、恶意篡改和删除
2.3.1 系统日志术语
  • facility 设施,从功能或程序上对日志进行归类
  • Priority 级别,从低到高排序

日志消息的级别

级号 消息 级别 说明
0 EMERG 紧急 会导致主机系统不可用的情况
1 ALERT 警告 必须马上采取措施解决的问题
2 CRIT 严重 比较严重的情况
3 ERR 错误 运行出现错误
4 WARNING 提醒 可能会影响系统功能的事件
5 NOTICE 注意 不会影响系统但值得注意
6 INFO 信息 一般信息

2.4 日志文件

一个程序报错

systemctl  status  程序名   #程序日志
  • 日志的功能

    • 用于记录系统、程序运行中发生的各种事件
    • 通过阅读日志,有助于诊断和解决系统故障
  • 日志文件的分类

    • 内核及系统日志

      • 由系统服务rsyslog统一进行管理,日志格式基本相似
    • 用户日志

      • 记录系统用户登录及退出系统的相关信息
    • 程序日志

      • 由各种应用程序独立管理的日志文件,记录格式不统一
  • 日志保存位置

    • 默认位于:/var/log目录下



2.5 日志管理工具 journalctl

[root@localhost ~]#journalctl  -xe

[root@localhost ~]yum install epel-release.noarch -y

[root@localhost ~]yum install nginx -y
问题  找几点到几点之间的日志

#查看指定时间的日志
[root@localhost ~]#journalctl --since "2023-07-30" --until 2023-07-31 13:00"" -u nginx

3. 日志实际操作

#查看ssh服务的日志位置

#修改ssh配置文件,32下一行添加自己的自定义






75行添加自己的文件位置

[root@localhost ~]#systemctl restart rsyslog.service sshd
#重启服务