Linux文件系统与日志分析

目录

一.Linux文件系统

1.inode与block

2.查看inode号码的命令

3.inode包含文件的元信息

4.Linux系统文件三个主要时间属性

5.用户通过文件名打开文件时系统内部过程

6.inode的大小

7.inode的特点

7.1 文件名包含特殊字符,可能无法正常删除;直接删除inode,能起到删除文件的作用

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

7.3 cp命令与inode

7.4 rm命令

7.5 rm命令与inode

二.日志

1.日志的功能

2.日志文件的分类

3.系统日志介绍

3.1 sysklogd 系统日志服务

3.2 rsyslog 系统日志服务

3.3 ELK

4.rsyslog 管理

4.1 日志消息的级别

4.2 服务名称

4.3 rsyslog配置文件

5.用户登录日志

6.日志记录的一般格式

7.last和lastb:查询用户登录的历史记录

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

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

8.journalctl 日志管理工具(不常用)

9.查询当前登录的用户情况

9.1 users

9.2 who

9.3 w

10.日志管理策略

三.实操:将ssh服务日志单独存放

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

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

3.重启服务

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

四.实操:通过网络将本地的日志远程备份到另一台机器

1.两台机器都关闭防火墙工具与selinux

2.打开配置文件,进行修改配置

3.重启服务

4.查看514端口是否启动

5.测试使用logger写入一条测试日志

6.接收方开启TCP和端口514

7.重启日志服务

8.查看接收方Zhuzi是否能收到发送方jieshou的日志记录


一.Linux文件系统

1.inode与block

文件数据包括元信息与实际信息;文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。

  • block:(块)
    • 连续的八个扇区组成一个block(4k);
    • 是文件存取的最小单位。
  • inode:(索引节点)
    • 中文译名为“索引节点”,也叫i节点;
    • 用于存储文件元信息
    • 同一个硬件设备上是唯一的,不可以跨设备,inode实际是资源,是可以被用完的,用完后无法创建任何文件。(xargs:读取前面的参数;   -n1:一个一个给)
  • inode和block的关系

  • 文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。 因此,一 个文件必须占用一个inode, 并且至少占用一个block.

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

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一 一对应关系,每个inode号码对应一个文件名。

2.查看inode号码的命令

1.	查看文件名对应的inode号码
	ls -i 文件名

2. 	查看文件inode信息中的inode号码
	stat 文件名

3.inode包含文件的元信息

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

4.Linux系统文件三个主要时间属性

  • ctime(change time):最后一次改变文件或目录(属性)的时间
  • atime(access time):最后一次访问文件或目录的时间
  • mtime(modify time):最后一次修改文件或目录(内容)的时间

5.用户通过文件名打开文件时系统内部过程

5.1 系统找到这个文件名对应的inode号码

5.2 通过inode号码,获取inode信息

5.3 根据inode信息,找到文件数据所在的block,读出数据

访问文件的简单流程图示:

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

我的空间足够为什么不能继续建文件?

答案:因为inode号用完了

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

6.inode的大小

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

7.inode的特点

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

7.1 文件名包含特殊字符,可能无法正常删除;直接删除inode,能起到删除文件的作用

删除inode号的方法:

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

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

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

这里指的是非挂载磁盘,实例如下

打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;文件数据被修改保存后,会生成一个新的inode 号码。 

7.3 cp命令与inode

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

7.4 rm命令

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

7.5 rm命令与inode

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

二.日志

日志保存位置默认位于:/var/log目录下

1.日志的功能

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

2.日志文件的分类

2.1 内核及系统日志

  • 由系统服务rsyslog统一进行管理,日志格式基本相似
  • 主配置文件/etc/rsyslog.conf

2.2 用户日志

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

2.3 程序日志

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

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

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

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

4.rsyslog 管理

4.1 日志消息的级别

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):

级别消息级别具体描述
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/secure: 记录用户认证相关的安全事件信息。
  • /var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
  • /var/log/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
  • /var/ run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

6.日志记录的一般格式

7.last和lastb:查询用户登录的历史记录

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

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

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

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

8.journalctl 日志管理工具(不常用)

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

9.查询当前登录的用户情况

9.1 users

users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数

9.2 who

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可

以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用

户名、终端类型、登录日期及远程主机

9.3 w

w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。

10.日志管理策略

  • 及时做好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限
    • 日志中可能会包含各类敏感信息,如账户和口令等
  • 集中管理日志
    • 将服务器的日志文件发到统一-的日志文件服务器
    • 便于日志信息的统- -收集、 整理和分析
    • 杜绝日志信息的意外丢失、恶意篡改或删除

三.实操:将ssh服务日志单独存放

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

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

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

3.重启服务

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

四.实操:通过网络将本地的日志远程备份到另一台机器

就算本机系统崩溃,我们可以查看另一台机器备份的日志,来排查故障。

1.两台机器都关闭防火墙工具与selinux

2.打开配置文件,进行修改配置

 

3.重启服务

4.查看514端口是否启动

5.测试使用logger写入一条测试日志

6.接收方开启TCP和端口514

7.重启日志服务

8.查看接收方Zhuzi是否能收到发送方jieshou的日志记录

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啄学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值