Linux文件系统与日志分析

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.inode号用完
2.磁盘有坏道,badblocks查看,fsck修复

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 last命令

last #最后一次成功登录
lastb #登录失败
lastlog #查看所有用户最后一次登录
-u:查看指定用户
-t:表示几天之内的
lastlog -u root
lastlog -t 30(30天)



2.6 日志管理工具 journalctl

[root@localhost ~]#journalctl  -xe

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

[root@localhost ~]yum install nginx -y

2.7 查询当前用户登录情况

[root@localhost ~]#users
#users 命令简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。
[root@localhost ~]#who
#who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机。
#who 命令只能显示当前登录的用户信息,无法知晓每个用户正在执行的命令
[root@localhost ~]#w
#w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。
#w 命令查询已登录到主机的用户信息
[root@localhost ~]#whoami
#查看当前登录用户信息

问题  找几点到几点之间的日志

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

3. 日志实际操作

3.1 将ssh服务的日志单独设置

[root@localhost ~]#tail -f /var/log/secure
#查看ssh服务的日志位置

[root@localhost ~]#vim /etc/ssh/sshd_config
#进入配置文件

修改第32行

保存退出

[root@localhost ~]#vim /etc/rsyslog.conf
#进入另一个配置文件

注释第57行
第74行添加自己的文件位置

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

[root@localhost ~]#ssh 192.168.8.100
#启动ssh服务

[root@localhost ~]#tail -f /var/log/ssh.log
#查看ssh日志

3.2 网络日志(远程日志功能)

3.2.1 在192.168.8.100上开启日志的远程传输功能
[root@localhost ~]#vim /etc/rsyslog.conf
#vim进入配置文件

19、20行取消注释

[root@localhost ~]#ss -ntap | grep 514
#查看514端口是否打开

3.2.2 在192.168.8.101上设置发送到哪台主机去
 [root@localhost ~]#vim /etc/rsyslog.conf
 #vim进入配置文件

修改配置文件,将第54行复制到第55行,并将IP地址改为自己的IP地址

[root@localhost ~]#systemctl restart rsyslog.service
#重启服务
[root@localhost ~]#logger “this is test log from 192.168.8.101”
#测试日志

[root@localhost ~]#tail -f /var/log/messages
#在192.168.8.100上查看日志

posted @   Candy独角兽  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示