深入理解文件系统与日志分析(简单易懂)

249 阅读7分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

linux文件系统

文件是存储在硬盘上的,硬盘最小存储单位是扇区,每个扇区存储512字节,一“块”有八个扇区,一个块是4K大小,是文件存取的最小单位 系统读取硬盘是通过块读取的

文件数据包括实时数据与元信息(除了文件名以外所有文件属性)

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

inode和文件名都存在目录文件中

元信息储存在inode

实际数据储存在块中

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

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

image.png

  • 改变文件内容,文件大小也会跟随改变
  • 用vi编辑器和touch修改文件,ctime也会改变,用echo就不会改变

如何查看inode号字节

ls -l image.png stat 文件名

image.png

访问文件的过程

image.png

访问文件的过程

  • 用户访问文件,系统根据文件名寻找inode号
  • 根据inode号寻找inode信息
  • 根据inode信息判断用户是否具有访问文件的权限
  • 如果有访问权限指向对应的数据块
  • 如果摸鱼权限不够就拒绝访问

inode详细介绍

inode也会消耗磁盘空间,所以格式化的时候,操作系统自动将磁盘分成两个区域,一个是数据区,存放文件数据,一个是inode区,存放inode所包含的信息,每个inode大小,一般是125字节或者256字节

通常情况下不需要关注当个inode的大小,而是需要重点关注inode总数,inode总数在格式化的时候就已经给定了,执行“df -i”命令即可查看每个硬盘分区对应的inode总数和已经使用的inode总数

每个文件系统(分区)中的inode数量是有限的,可以通过df i查看

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

  • 文件名包含特殊字符,可能无法正常删除,这时候删除inode,能起到删除文件作用
  • 移动文件或重命名文件,只是改变文件名,不影响inode号
  • 打开一个文件以后,系统就以inode号来识别这个文件,不再考虑文件名
  • 使用vi编辑器修改文件数据保存后,会生成一个新的inode号,但是用echo不会

模拟inode节点耗尽故障处理

创建文件占满inode号

image.png image.png image.png

删除带特殊符号的文件

  • find ./ -inum [inode号] -exec rm -f {} ;

image.png

  • find ./ -inum [inode号] | xargs rm -f

image.png

  • find ./ -inum [inode号] delete

image.png

链接文件

  • 为文件或目录建立链接文件
  • 链接文件类型

image.png

恢复ext类型的文件

编译安装extundelete软件包

  • 安装依赖包

    • e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm

    • e2fsprogs-devel-1.14.12-18.el6.x86_64.rpm

  • 配置,编译及安装

    • extundelete-0.24.tar.bz2

模拟删除并执行恢复操作

image.png

image.png 挂载 image.png

image.png

image.png image.png

image.png

image.png

image.png

image.png

image.png image.png

xfsdump使用限制

  • 只能备份已经挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份XFS文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同的UUID的文件系统

xfsdump 类型文件备份和恢复

CentOS 7 系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与 xfsrestore 工具进行备份恢复。

xfsdump的备份级别有两种:0表示完全备份。 1-9表示增量备份。 xfsdump的备份级别默认为0

xfsdump 的命令格式

xfsdump -f 备份存放位置 要备份的路径或者设备文件

xfsdump 命令常用的选项:

-f:指定备份文件目录

-L:指定标签 session label

-M 指定标签 xfsdump备份实验

image.png

image.png 删除data下所有东西 image.png

image.png 数据恢复了

日志

  • 日志的功能

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

    • 内核及系统日志

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

      • 记录系统用户登录以及退出系统的相关信息
    • 程序日志

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

日志保存位置

默认位于/var/log目录下

主要日志介绍

  • /var/log/messages ###内核及公共消息日志
  • /var/log/cron ###计划任务日志
  • /var/log/maillog ### 邮件系统日志
  • /var/log/secure ### 记录用户认证相关的安全事件信息(用户登录日志)
  • /var/log/lastlog ### 记录每个用户最近的登录时间(以二进制形式)
  • /var/log/wtmp ###记录每个用户的登录时间和登录次数
  • /var/log/btmp ###记录失败的,错误的登录尝试及实验事件。二进制格式

日志保存位置

  • 默认位置:/var/log目录下

内核和系统日志由系统服务rsyslog统一管理

  • 软件包:rsyslog-7.4.7-16.e17.x86_64
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf

查看rsyslog.conf配置文件,规则配置格式:【设备.级别 动作】 vim /etc/rsysloh.conf

image.png 设备字段说明

auth用户认证时产生的日志
authprivSsh,ftp等登录信息的验证信息
daemon一些守护进程产生的日志
ftpFTP产生的日志
lpr打印相关的活动
MarkRsyslog服务内部的信息,时间标识
News网络新闻传输协议(nntp)产生的消息
syslog系统日志
uucpUnix-to-Unix Copy 两个unix之间的相关通信
console针对系统控制台的消息
cron系统执行定时任务产生的日志
kern系统内核日志
Local0~local7自定义程序使用
mail邮件日志
user用户进程

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

0EMERG(紧急):会导致主机系统不可用的情况,如系统崩溃
1ALERT(警告):必须马上采取措施解决的问题。如系统崩溃
2CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3ERR(错误):运行出错误。不是非常紧急,尽快修复的
4WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如硬盘用了80%
5NOTICE(注意):不好影响正常功能,但是需要注意的事件。无需处理
6INFO(信息):一般信息。正常的系统信息
7DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时实验
 none:没有优先级不记录任何日志信息

例子

image.png

image.png

用户日志分析

  • 保存了用户登录,退出系统等相关信息
    • /var/log/lastlog:最近的用户登录事件
    • /var/log/wtmp:用户登录,注销及系统的详细信息
    • /var/run/utmp:当前登录的每个用户的详细信息
    • /var/log/secure:与用户验证相关的安全性事件
  • 分析工具
    • users,who,w,last,lastb
    • last命令用于查询成功登录到系统的用户记录
    • lastb命令用于查询登录失败的用户记录

ssh:连接到远程主机

日志管理策略

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

总结

  • block与inode
  • 硬链接与软链接
  • 恢复误删除文件
  • Linux主要包含的日志文件
  • linux系统的日志消息级别
  • linux系统中用户日志的查询命令
    • who , w , users, last, lsatb