Linux文件系统与日志分析

目录

一、inode和block概述

二、文件恢复extundelete

三、日志管理

1.日志的功能

2.日志文件的分类

3.rsyslog系统日志服务     软件  帮助 管理日志

rsyslog 特性

4. 日志等级

5.rsyslog 相关文件

6.日志文件

7.日志管理工具    journalctl

8.logrotate日志转储    手动去  分割日志

四、将ssh服务的日志单独设置

五、使用rsyslog搭建设置网络日志服务器(远程日志功能)

①环境背景

目的:把192.168.246.8作为日志服务器,把192.168.246.7作为客户端

1.分别关闭两台主机防护墙,防护

1.接收方:192.168.246.8配置:

2.发送方:新建会话192.168.246.7

​3.把(centos7 -2)接收方192.168.246.8作为日志服务器,需要在发送方192.168.246.7里修改


一、inode和block概述

文件数据包括元信息与实际数据

文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

  • 元信息:每个文件的属性信息,比如:文件的大小,时间,类型,权限等,也称为文件的元数据(meta data)
  • 元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

  • block(块)

    • 连续的八个扇区组成一个block,4k
    • 是文件存取的最小单位
  • inode(索引节点)

    • 中文译名为“索引节点”,也叫 i 节点
    • 用于存储文件元信息
    • 如何查看inode号    ls    -i

      一个文件必须占用一个inode,并且至少占用一个block。

  1. inode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件。

  2. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。

查看inode号码的方法

  • ls -i 命令:查看文件名对应的inode号码
  • stat 命令:查看文件的inode信息
  • inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。inode号是有限的资源,它的多少和磁盘大小有关。
  • 访问文件流程:

    根据文件夹中的文件名和inode号的关系,找到对应的inode表,再根据inode表中的指针,找到磁盘真实数据

  • 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -i

                                                                               

面试题小技巧:

我磁盘空间还剩余很多,但是无法建立文件?

inode  号用完了

lvm 扩容

普通分区,删除没有用的空文件

面试小技巧:

我想看到几点几分到几点几分之间的日志

内存中

journalctl -S “2024-01-01 8:00” -U “2024 -02-02 8:00”

二、文件恢复extundelete

删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录 里面的 block 中,删除这个文件的名字。Linux 是通过 Link 的数量来控制文件删除的,只有 当一个文件不存在任何 Link 的时候,这个文件才会被删除。在 Linux 系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情 况,尤其对于客户企业中一些新手。当然,这里所指的是彻底删除,即已经不能通过“回收 站”找回的情况,比如使用“rm -rf”来删除数据。针对 Linux 下的 EXT 文件系统,可用的恢复 工具有 debugfs、ext3grep、extundelete 等。 其中 extundelete 是一个开源的 Linux 数据 恢复工具,支持 ext3 文件系统。

三、日志管理

      在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用日志记录的内容包括:

  • 历史事件:时间,地点,人物,事件

  • 日志级别:事件的关键性程度,Loglevel

内核及系统日志由系统服务 rsyslog 统一管理,根据其主配置文件 /etc/rsyslog.conf

Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下

1.日志的功能

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

2.日志文件的分类

  • 内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似,
  • 其主配置文件 /etc/rsyslog.conf
  • 用户日志:记录系统用户登录及退出系统的相关信息
  • 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一

3.rsyslog系统日志服务     软件  帮助 管理日志

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

rsyslog 特性

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

日志  系统日志     

 软件日志  自己的日志   

4. 日志等级

5.rsyslog 相关文件

  • 程序包:rsyslog

  • 主程序:/usr/sbin/rsyslogd

  • CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}

  • CentOS 7,8:/usr/lib/systemd/system/rsyslog.service

  • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf

  • 库文件: /lib64/rsyslog/*.so

6.日志文件

系统日志:

 /var/log/secure:系统安全日志(用户登录),文本格式,应周期性分析

/var/log/messages :系统中大部分的信息

用户登录日志:

/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式lastb命令进行查看
/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看

/var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看

程序日志:是和程序本身有关,有的有独立日志,有的没有独立日志

/var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况

/var/log/boot.log 系统服务启动的相关信息,文本格式

/var/log/messages :系统中大部分的信息

/var/log/anaconda : anaconda的日志操作系统安装时安装的软件信息

7.日志管理工具    journalctl

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

日志的配置文件:/etc/systemd/journald.conf

journalctl   命令格式     journalctl [OPTIONS...] [MATCHES...]

面试题2:

我想看到几点几分到几点几分之间的日志

内存中

journalctl -S “2024-01-01 8:00” -U “2024 -02-02 8:00”

-S, --since=, -U, --until=
   显示晚于指定时间(--since=)的日志、显示早于指定时间(--until=)的日志。
   参数的格式类似 "2012-10-30 18:17:16" 这样。 如果省略了"时:分:秒"部分,
   则相当于设为 "00:00:00" 。 如果仅省略了"秒"的部分则相当于设为 ":00" 。
   如果省略了"年-月-日"部分, 则相当于设为当前日期。 除了"年-月-日 时:分:秒"格式,
   参数还可以进行如下设置: (1)设为 "yesterday", "today", "tomorrow"
   以表示那一天的零点(00:00:00)。 (2)设为 "now" 以表示当前时间。
   (3)可以在"年-月-日 时:分:秒"前加上 "-"(前移) 或 "+"(后移)
   前缀以表示相对于当前时间的偏移。 关于时间与日期的详细规范, 参见
   systemd.time(7)
-e, --pager-end
   在分页工具内立即跳转到日志的尾部。 此选项隐含了 -n1000
   以确保分页工具不必缓存太多的日志行。 不过这个隐含的行数可以被明确设置的 -n
   选项覆盖。 注意,此选项仅可用于 less(1) 分页器。
-u, --unit=UNIT|PATTERN
   仅显示属于特定单元的日志。 也就是单元名称正好等于 UNIT 或者符合 PATTERN
   模式的单元。 这相当于添加了一个 "_SYSTEMD_UNIT=UNIT" 匹配项(对于 UNIT 来说),
   或一组匹配项(对于 PATTERN 来说)。
   可以多次使用此选项以添加多个并列的匹配条件(相当于用"OR"逻辑连接)。
-x, --catalog
   在日志的输出中增加一些解释性的短文本, 以帮助进一步说明日志的含义、
   问题的解决方案、支持论坛、 开发文档、以及其他任何内容。
   并非所有日志都有这些额外的帮助文本, 详见 Message Catalog Developer
   Documentation[5] 文档。
   注意,如果要将日志输出用于bug报告, 请不要使用此选项。

8.logrotate日志转储    手动去  分割日志

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行

logrotate 配置

软件包:logrotate

相关文件

  • 计划任务:/etc/cron.daily/logrotate

  • 程序文件:/usr/sbin/logrotate

  • 配置文件: /etc/logrotate.conf

  • 日志文件:/var/lib/logrotate/logrotate.status

四、将ssh服务的日志单独设置

1.使用Rsyslog创建日志优点

在运维过程中某些服务是自带错误日志和运行日志的,但是有一些服务安装完成后是没有日志的。下面我们以sshd(让你远程登录)服务为例创建一个日志,例如sshd本身是有日志的,但是与其他安全服务一样都存放在/var/log/secure/messages文件中不方便我们查看sshd的日志,如果我们将sshd服务的日志单独生成一个日志文件便于我们查看,注意使用Rsyslog创建日志的服务必须支持Rsyslog。

2.rsyslog配置文件

/etc/rsyslog.conf 配置文件格式:由三部分组成

  • MODULES:相关模块配置

  • GLOBAL DIRECTIVES:全局配置

  • RULES:日志记录相关的规则配置

比如sshd的日志文件,它的日志文件是放在公共日志文件/var/log/srcure中

它是一个远程连接文件,比较重要,我们把它单独存放一个文件

local6:自定义规则  范围:local0-local7  7已经被使用,我们可以设置除7外的数值

原来ssh   日志     在/var/log/secure
将 ssh服务的日志 文件 独立出来


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

[root@localhost ~]#vim /etc/ssh/sshd_config
#修改ssh配置文件,32下一行添加自己的自定义
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6

[root@localhost ~]#vim /etc/rsyslog.conf
#76 行添加自己的文件位置
local6.*                                                /opt/ssh.log

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

ssh  自己的ip地址

rsyslog  统一收集日志

五、使用rsyslog搭建设置网络日志服务器(远程日志功能)

①环境背景

日志服务器更方便管理企业内部日志,将业务服务器的日志都放到日志服务器上更便于运维和管理。

通过网络日志服务器,可以将多台机器的日志放到一台机器上,从而实现日志的统一管理

两台机器的传输,需要通过协议和端口号,所以,我们要先启用两台机器的端口

目的:把192.168.246.8作为日志服务器,把192.168.246.7作为客户端
1.分别关闭两台主机防护墙,防护
1.接收方:192.168.246.8配置:

2.发送方:新建会话192.168.246.7

在/etc/rsyslog.conf配置文件中,打开tcp的514端口,查看是否打开,并重新加载服务

3.把(centos7 -2)接收方192.168.246.8作为日志服务器,需要在发送方192.168.246.7里修改

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值