linux文件系统与日志分析

本文详细探讨了Linux文件系统的inode和block概念,包括inode的元信息、查看方法以及特殊作用,同时介绍了软链接与硬链接的差异。在日志分析部分,讲解了日志的功能、分类,重点讨论了sysklogd、rsyslog和ELK日志系统,以及如何管理和查询用户登录历史记录。此外,还提供了实际操作指导,如ssh服务日志的单独存放和网络日志的远程备份配置。

目录

一、文件系统

1、inode和block概述

2、 inode表结构

2.1 包含文件的元信息

2.2查看inode的方法

2.3 Linux系统文件三个主要的时间属性

2.4目录文件结构

2.5 用户通过文件名打开文件时,系统内部的过程

3、inode的大小

4、inode的特殊作用

5、软链接与硬链接

5.1软链接

5.2硬链接

二、日志

1、日志的功能

2、日志文件的分类

3、系统日志介绍

3.1 sysklogd 系统日志服务

3.2 rsyslog 系统日志服务

3.3 ELK

4、rsyslog 管理

4.1 日志消息的级别

4.2 服务名称

4.3 rsyslog配置文件

5、主要日志文件介绍(不是绝对的)

6、查询用户登录的历史记录

6.1 last 命令用于查询成功登录到系统的用户记录

6.2 lastb 命令用于查询登录失败的用户记录

7、journalctl 日志管理工具

四、实际操作

1、将ssh服务日志单独存放

1.1 进入rsyslog配置文件,添加自己的文件位置

1.2 进入ssh配置文件,将ssh配置成使用local6

1.3 重启服务

1.4 验证,并查看本机日志记录(实时查看 tail -f /var/log/secure)

2、网络日志

2.1 发送方A关闭防火墙和selinux

2.2 打开配置文件,进行修改配置

2.3 重启服务

2.4 查看514端口是否启动

2.5 测试,使用logger写入一条测试日志

2.6 接收方B关闭防火墙和selinux

2.7 B开启TCP 以及端口514 

2.8 重启日志服务

2.9 查看接收方B是否能收到发送方A的日志记录


一、文件系统

1、inode和block概述

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

元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

元信息:每个文件的属性,如:文件大小、时间、权限、inode等

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

block(块)

  • 连续的八个扇区组成一个block,4k
  • 是文件存取的最小单位

inode(索引节点)

  • 中文译名为“索引节点”,也叫 i 节点
  • 用于存储文件元信息

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

扩:

inode同一个硬件设备上是唯一的,不可以跨设备,inode实际是资源,是可以被用完的,用完后无法创建任何文件。(xargs:读取前面的参数;   -n1:一个一个给)

2、 inode表结构

2.1 包含文件的元信息

  • 文件的字节数(字节占用多少空间,也称文件大小)
  • 文件拥有者的 User ID
  • 文件的 Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳(ctime、atime、mtime)
  • 文件类型
  • 链接数
  • 有关文件的其他数据
  • 不包含文件名,文件名在目录结构中

2.2查看inode的方法

  • ls -i 命令:查看文件名对应的inode号码
  • stat 命令:查看文件的inode信息

2.3 Linux系统文件三个主要的时间属性

  • 最近访问atime(access time)最后一次访问文件的时间。使用echo追加内容不会变,因为没有打开文件
  • 最近更改mtime(modify):最后一次更改文件内容的时间。更改完内容之后,ctime也会改变
  • 最近改动ctime(change time):最后一次改变文件元信息(文件或目录属性)的时间。改变后,mtime不变

2.4目录文件结构

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

  • inode不包含文件名,文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件
  • 是通过文件名来引用一个文件
  • 每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。目录是目录下的文件名和文件inode号之间的映射
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用inode号码来识别文件
  • 对于系统来说,文件名只是inode号码便于识别的别称

linux通过文件夹中会有一张文件名和inode一一对应关系的表(名字)去找inode号inode指向对应的实际数据

  1. 用户访问文件时先去查找自己文件夹中的目录项;
  2. 文件名和inode之间对应的关系;
  3. 通过 inode号利用指针去指向实际数据直接指针,间接指针
  4.  

扩:

如果把文件删除并没有做其他设置,此时真实数据并没有真的删除,删除的是inode号。

我的空间足够为什么不能继续键文件?因为inode号用完了

解决方法:1、如果是lvm逻辑卷,可以扩容  2、此时需要删除没有用的文件。

2.5 用户通过文件名打开文件时,系统内部的过程

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

扩:vim cat和用户的权限有关

3、inode的大小

  • inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
  • inode的总数,在格式化时就确定
  • 如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
  • inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
  • 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -I

4、inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

(1)当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件

删除inode号的方法:

方法一: find 文件位置 -inum inode号码 -exec rm -rf {} \;

方法二: find 文件位置 -inum inode号码 -delete

(2)移动或重命名文件时,只改变文件名,不影响inode号码

(3)打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

(4)文件数据被修改保存后,会生成一个新的inode 号码

cp命令与inode:

  • 分配一个空闲的inode号
  • 在inode表中生成新条目在目录中创建一个目录项
  • 将名称与inode编号关联拷贝数据生成新的文件

rm命令:

  • 硬链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

rm命令与inode

  • 链接数递减,从而释放的inode号可以被重用把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

5、软链接与硬链接

  • 硬链接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个链接数加一,多路径访问。不占用内存
  • 软链接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件ln(link)。

5.1软链接

格式:ln [-s] 源文件或目录… 链接文件或目标位置

删除源文件无法访问,再新建同名文件后依然可以访问,可以跨设备,可以支持文件夹

软链接特点:

  • 源文件一定要存在,源文件被删除,链接文件无法使用
  • 源文件内容修改,链接文件也修改
  • 链接文件的大小 是源文件路径的长度

实例:

  • ln -s /data/passwd   /opt/soft
  • ln 命令做链接文件的命令
  • -s代表软链接,不写代表硬链接
  • /data/passwd 源文件的路径 注意一定要用绝对路径
  • /opt/soft 把链接文件放到opt目录并且取名soft如果不取名 和源文件同名

5.2硬链接

格式:ln  源文件或目录… 链接文件或目标位置

多了一种方式去找文件 indoe号,不能跨分区建立连接 无法对文件夹创建

1.真实数据 2.元数据(indoe号,权限,大小等)

实例:

二、日志

1、日志的功能

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

2、日志文件的分类

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

3、系统日志介绍

3.1 sysklogd 系统日志服务

CentOS 5 之前版本采用的日志管理系统服务

  • syslogd: system application 记录应用日志
  • klogd: linux kernel 记录内核日志

事件记录格式:

  • 日期时间 主机 进程[pid]: 事件内容
  •  C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

3.2 rsyslog 系统日志服务

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

rsyslog特性

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

用rpm -qi rsyslog可以看rsyslog的详细信息

用rpm -ql rsyslog可以看rsyslog的文件列表

 3.3 ELK

 ELK:由Elasticsearch, Logstash, Kibana三个软件组成

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
  • Kibana 可以提供的日志分析友好的 Web 界面

4、rsyslog 管理

4.1 日志消息的级别

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

服务软件:

  • 软件由它的配置文件所决定
  • 决定它的服务方式、网络地址、个性化功能等
  • 是yum 或rpm安装配置文件一般放在etc下
  • 查看软件的配置文件位置,用rpm -qc 软件名  去查看,一般以 .conf结尾的是配置文件
  • 在改配置文件前一定要先备份

 4.2 服务名称

服务名称说明
auth(LOG_AUTH)安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV)安全和认证相关消息(私有的)
cron (LOG_CRON)系统定时任务cront和at产生的日志
daemon (LOG_DAEMON)与各个守护进程相关的曰志
ftp (LOG_FTP)ftp守护进程产生的曰志
kern(LOG_KERN)内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL 0-7)为本地使用预留的服务
lpr (LOG_LPR)打印产生的日志
mail (LOG_MAIL)邮件收发信息
news (LOG_NEWS)与新闻服务器相关的日志
syslog (LOG_SYSLOG)存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER)用户等级类别的日志信息
uucp (LOG_UUCP)uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来也常用在新闻组服务中

4.3 rsyslog配置文件

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

  • MODULES:相关模块配置

  • GLOBAL DIRECTIVES:全局配置

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

5、主要日志文件介绍(不是绝对的)

主要日志文件介绍
日志文件介绍日志文件位置
内核及公共消息日志 /var/log/messages
计划任务日志 /var/log/cron
系统引导日志 /var/log/dmesg
邮件系统日志 /var/log/maillog
用户登录日志

 /var/log/lastlog

 /var/log/secure

 /var/log/wtmp

 /var/run/btmp

6、查询用户登录的历史记录

6.1 last 命令用于查询成功登录到系统的用户记录

最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。

6.2 lastb 命令用于查询登录失败的用户记录

如登录的用户名错误、密码不正确等情况都 将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。

7、journalctl 日志管理工具

格式:journalctl [OPTIONS...] [MATCHES...]

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

四、实际操作

1、将ssh服务日志单独存放

ssh远程连接协议:(1)压缩功能,传输快  (2)密文传输

 客户端(物理机)通过xshell软件连接到服务器(7-1)

1.1 进入rsyslog配置文件,添加自己的文件位置

 1.2 进入ssh配置文件,将ssh配置成使用local6

 1.3 重启服务

1.4 验证,并查看本机日志记录(实时查看 tail -f /var/log/secure)

2、网络日志

网路日志,通过网络将本地的日志远程备份到另一台机器。这样,就算本机系统崩溃,我们可以查

看另一台机器备份的日志,来排查故障。

2.1 发送方A关闭防火墙和selinux

 2.2 打开配置文件,进行修改配置

2.3 重启服务

2.4 查看514端口是否启动

2.5 测试,使用logger写入一条测试日志

2.6 接收方B关闭防火墙和selinux

2.7 B开启TCP 以及端口514 

2.8 重启日志服务

 2.9 查看接收方B是否能收到发送方A的日志记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值