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

发布于:2023-01-21 ⋅ 阅读:(479) ⋅ 点赞:(0)

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

inode与block概述

  • 文件数据包括元信息(除了文件名以外的其他文件属性)和实际数据
  • 文件储存在硬盘上,硬盘最小储存单位是扇区,每个扇区储存512字节
  • 系统存取文件数据时是通过块(block)来读取,块(block)由连续的8个扇区组成,4kb大小,块是文件存储的最小单位

inode(索引节点):

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

  • 元信息储存在inode中
  • 实际数据储存在block中
  • 一个文件必须占用一个inode,但至少占用一个block

元信息包含(inode不包含文件名,唯一):

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件袋时间戳

查看某个文件的inode信息(stat、ls -i、ls -il

  • [root@localhost ~]#ls -i

在这里插入图片描述

  • [root@localhost ~]#ls -il
    在这里插入图片描述
  • [root@localhost ~]#stat anaconda-ks.cfg

在这里插入图片描述


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

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

在这里插入图片描述

  • [root@localhost data]#cat 1.txt

atime (最近访问时间) 改变
在这里插入图片描述

  • [root@localhost data]#echo 123 > 1.txt

在这里插入图片描述
在这里插入图片描述


  • 目录文件的结构
    目录也是一种文件
    目录文件的结构
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称
  • 文件存储时,文件名和文件数据分开存储的
  • 文件数据包含元信息和实际数据
  • 文件名在目录文件中
  • 元信息(包含除了文件名以外的文件属性)在inode中
  • 实际数据在块(block)中

inode的号码

  • 用户访问文件的监督流程
    1、系统找到这个文件名对应的inode号码
    2、通过inode号码,获取inode信息
    3、根据inode信息里的文件属性,去决定该用户是否有读取该文件的权限,如果有,则找到文件数据所在的block,读出数据;如果没有,则拒绝访问
    在这里插入图片描述

  • 查看inode号码的方法
    ls -i a.txt(查看文件名对应的inode号码)
    在这里插入图片描述
    stat a.txt(查看文件inode信息中的inode号码)
    在这里插入图片描述


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

每个inode的大小,一般是128字节或256字节

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


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

  1. 文件名包含特殊字符,可能无法正常删除,这时直接删除inode,能起到删除的作用;
  2. 移动文件或重命名文件,只是改变文件名,不影响inode号码;
  3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;
  4. 使用vi编辑器修改文件数据保存后,会生成一个新的inode号码(因为vi编辑器是会替换原文件的)

在这里插入图片描述


软连接(又称符号链接) 硬链接
删除原始文件后 失效 仍旧可用
使用范围 适用于文件或目录 只可用于文件
保存位置 与原始文件可以位于不同的文件系统中 必须与原文件在同一文件系统(如一个Linux分区)内

在这里插入图片描述

实验

一、模拟inode号被占满的情况下,能否再写入文件

实验步骤:

  1. [root@localhost ~]#fdisk /dev/sdb(建立一个分区)
    在这里插入图片描述

  2. 建立文件系统并挂载
    在这里插入图片描述
    在这里插入图片描述

  3. 消耗所有inode
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 结论:inode号被占满的情况下,无法再写入文件

二、恢复EXT类型的文件

在这里插入图片描述
步骤:

  1. 使用fdisk创建分区、dev/sdc1,格式化ext3文件系统
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 安装依赖包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 编译安装(extundelete
    在这里插入图片描述

  4. 模拟删除并执行恢复操作

[root@localhost data]#extundelete /dev/sdb1 --inode 2
查看文件系统、dev/sdc1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录
在这里插入图片描述
删除:
在这里插入图片描述
在这里插入图片描述

5、恢复/dev/sdc1文件系统下的所有内容

[root@localhost ~]#extundelete /dev/sdb1 --restore-all

在这里插入图片描述
在这里插入图片描述

三、备份恢复

xfs类型文件备份和恢复

centos 7 系统默认采用xfs类型的文件,可使用xfsdumpxfsrestore 工具进行备份恢复。
xfsdump 的备份级别有两种:0 表示完全备份1-9 表示增量备份。xfsdump 的备份级别默认为0.

xfsdump 命令常用的选项:

-f 指定备份文件目录
-L 指定标签 session label
-M 指定设备标签 media label
-s 备份单个文件,-s后面不能直接跟路径

xfsdump使用限制:

  1. 只能备份已挂载的文件系统
  2. 必须使用root的权限才能操作
  3. 只能备份XFS文件系统
  4. 备份后的数据只能让xfssrestore解析
  5. 不能备份两个具有相同UUID的文件系统(可用blkid命令查看)
    在这里插入图片描述

命令格式:
xfssdump -f 备份存放位置 要备份的路径或设备文件

  1. 使用fdisk创建分区、dev/sdb1,格式化xfs文件系统
    [root@localhost ~]#fdisk /dev/sdb
    [root@localhost ~]#mkfs.xfs /dev/sdb1
    [root@localhost ~]#mount /dev/sdb1 /data/
  2. 使用xfsdump命令备份整个分区

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
或者(备份):
[root@localhost opt]#xfsdump -f /opt/dump_ky2 /dev/sdb1 -L dump_ky2 -M sdb1

  1. 模拟数据丢失并使用xfsrestore命令恢复文件
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

日志分析

在这里插入图片描述

日志的功能

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

日志的分类

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

日志保存位置

默认位于:/var/log 目录下

常见的日志文件

内核及公共消息日志 /var/log/messages(由rsyslog服务来管理,主配置文件/etc/rsyslog.conf) :记录Linux内核消息及各种应用程序的公共日志信息
计划任务日志 /var/log/cron:记录crond 计划任务产生的事件信息
系统引导日志 /var/log/dmesg:记录Linux系统在引导过程中的各种事件信息
邮件系统日志 /var/log/maillog:记录进入或发出系统的电子邮件活动
用户登录日志 /var/log/secure:记录用户认证相关的安全事件信息

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

0 EMERG(emerg 紧急):会导致主机系统不可用的情况。如系统崩溃
1 ALERT(alert 警告) :必须马上采取措施解决的问题。如数据库被破坏
2 CRIT(crit 严重) :比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3 ERR(err 错误) :运行出现错误。不是非常紧急,尽快修复的
4 WARNING(warning 提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
5 NOTICE(notice 注意):不会影响正常功能,但需要注意的事件。无需处理
6 INFO(info 信息) :一般信息。正常的系统信息
7 DEBUG(debug 调试) :程序或系统调试信息等。包含详细开发信息,调试程序时使用

日志记录的一般格式

在这里插入图片描述

用户日志分析

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

系统日志:/var/log/messages,由rsyslog服务来管理,主配置文件/etc/rsyslog.conf

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到