深入理解Linux文件系统与日志分析

深入理解Linux文件系统与日志分析

一、inode与block

概述

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

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

3、block(块)

连续的八个扇区组成一个block

是文件存取的最小单位

4、inode(索引节点)

中文译名为“索引节点”,也叫i节点

用于存储文件元信息(描述本身属性的输出信息)

5、文件数据存在块中

文件元信息存在inode中

image-20220719152350444

二、inode

1、inode包含文件的元信息

文件的字节数

文件拥有者的User ID

文件的Group ID

文件的读、写、执行权限

文件的时间戳

2、stat命令

用stst命令可以查看某个文件的inode信息

image-20220719152622295

命令格式:stat 文件名

3、配合find使用

再用find命令查找特定条件的文件时可以用以下的条件

Access Time:简写为atime,表示文件的访问时间,当文件内容被访问时,更新这个时间

Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间

ChangeTime:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限等

4、inode大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域,一个是数据区,存放文件数据,另一个是inode区(inode table),存放inode所包含的信息

每个inode节点的大小,一般是128字节或256字节,inode节点的总数,在格式化时就给定,一般是每1KB或者每2KB就设置一个inode。

1、df命令

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

df -i

df -hit

image-20220719152805997

2、查看inode节点大小的命令

sudo dumpe2fs -h /dev/hda | grep “Inode size”

3、特有的现象

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:

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

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

打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名

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

4、删除的流程

rm -rf 文件名(使用rm -rf对文件进行删除)

找到文件名→→根据文件名找到文件的inode节点→→最后删除数据

find ./ inum inode号 -delete

对inode号进行直接删除

5、inode耗尽导致磁盘故障实际问题

在一台配置较低的Linux(内存,硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df-h命令看一下磁盘使用情况,发现/data分区只使用了60%,还有12G剩余空间,按理说不会出现这种问题,后来用df-i查看以下/data分区的inode,发现已经用满,导致系统无法创建新目录和文件。

查找原因:/data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

解决方案:

1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。

2、用软链接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题。

三、日志文件

内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og/下

1、日志的功能

用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

2、日志文件的分类

内核及系统日志:

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

用户日志:

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

程序日志:

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

3、日志的作用

辅助排障

数据恢复

数据分析

4、日志记录的一般格式

image-20220719153153771

时间标签 —主机名—子系统名称—消息字段

5、用户日志的分析

保存了用户登录、退出系统等相关信息
/var/log/lastlog:最近的用户登录时间
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性时间

分析工具

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

who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理,who的默认输出包括用户名、终端类型、登录日期及远程主机。

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

last :命令用于查看成功登录到系统的用户记录,最近的登录情况将显示在最前面,通过last命令可以掌握 linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵。

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

journalctl:可以使用 journalctl 查看所有日志(内核日志和应用日志),日志的配置文件 /etc/systemd/journald.conf

6、日志管理

及时做好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能包含各类敏感信息,如账户、口令等
集中管理日志
将服务器的日志发到统一的日志文件服务器
便于日志信息的统一收集、整理和分析
使用 journalctl 查看所有日志(内核日志和应用日志),日志的配置文件 /etc/systemd/journald.conf

6、日志管理

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值