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

文章目录

  • 一、inode和block
    • 1.1:inode和block概述
    • 1.2:inode内容
      • 1.2.1:inode包含文件的元信息
      • 1.2.2:查看inode信息
    • 1.3:inode号码
    • 1.4:inode大小
    • 1.5:inode特殊作用
    • 1.6:文件存储
    • 1.7:4k对齐
      • 1.7.1:为什么说要固态盘要4k对齐
  • 二、硬链接与软链接
    • 2.1:硬连接
    • 2.2:软链接
  • 三、恢复误删除的文件
    • 3.1:EXT 类型文件恢复( extundelete 工具)
      • 3.1.1:编译安装 extundelete
      • 3.1.2:安装make(没有的话,要安装)
      • 3.1.3:模拟删除并执行恢复操作
    • 3.2:xfs文件恢复
  • 四、分析日志文件
    • 4.1:日志的功能
    • 4.2:日志文件的分类
    • 4.2:主要日志文件的介绍
    • 4.3:日志文件分析
      • 4.3.1:内核及系统日志分析
      • 4.3.2:用户日志分析
      • 4.3.3:程序日志分析

一、inode和block

1.1:inode和block概述

  • 文件数据包括原信息与实际数据
  • 文件是存储在硬盘上的,硬盘最小存储叫做扇区,每个扇区512字节
  • 操作系统读取硬盘信息,不会一个一个扇区读取。实际情况一下连续读取
  • 多个扇区,一次性读取多个扇区,叫做块(Block),这种多个扇区组成的“块”是文件存取的最小单位,最常见的4K,就是8个扇区组成的一个Block块
  • block(块):是文件存取的最小单位,连续的八个扇区组成一个block
  • inode(索引节点):也叫i节点。用于存储文件元信息
  • 文件的数据包括二部分:1、元信息(inode) 2、实际数据(block)

1.2:inode内容

1.2.1:inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者UserID
  • 文件的GroupID
  • 文件的rwx权限(读、写、执行)
  • 文件时间戳

1.2.2:查看inode信息

  • 使用stat命令可以查看文件inode信息
示例:stat 1.txt
  • Linux系统文件的三个主要的时间属性
    ctime(change time) :是最后一次改变文件或目录(属性)的时间,例如执行 chmod, chown 等命令;
    atime(access time):是最后一次访问文件或目录的时间;
    mtime(modify time):是最后一次修改文件或目录(内容)的时间

inode中并不包括文件名,其实文件名是放在目录中的,linux系统中一切皆文件,因此目录也是文件。
文件名1-------inode号码1
文件名2-------inode号码2
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
对于用户,文件名只是inode号码便于识别的别称

1.3:inode号码

  • 用户通过文件名打开文件时,系统内部过程
    1、系统找到文件名的inode号码
    2、通过inode号码,获取inode信息
    3、根据inode信息,找到文件所在的block,并读取数据
  • 查看inode号码的方法
    li -i命令:直接查看当前目录文件名的所对应的inode信息
    ls-ai命令:直接查看当面目录的文件及隐藏文件的所对应的inode信息
    stat命令:通过查看文件inode信息而查看到inode号码
  • 当用户在linux系统中视图访问一个文件时候,系统会根据文件名去查找对应的inode,看该用户是否具有访问这个文件的权限,如果有,就指向对应的数据block,如果没有,就返回 permission deied
    而一块硬盘分区后的结构则如下:
    文件-------目录项--------目录块
    元信息-----inode-------inode表区块
    数据------block-------block数据块

1.4:inode大小

  • inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分区成二个区域,一个数据区、存储文件数据,一个是inode区,存放所有的inode信息。每个inode大小
  • 一般为128字节或者256字节,通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数,inode的总数在格式化就给定了
  • 执行df -i 命令就可以查看。
    每个分区的对应inode总数和已经使用的inode数量。

1.5:inode特殊作用

  • 当文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文 件的作用
  • 移动文件或重命名文件,只是改变文件名,不影响 inode 号码;
  • 打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。

1.6:文件存储

Linux----深入理解Linux文件系统和日志分析_第1张图片

1.7:4k对齐

1.7.1:为什么说要固态盘要4k对齐

绝大多数机械硬盘默认为512字节扇区,SSD扇区为4K。
为了确保与操作系统的兼容性,硬盘制造商还将扇区模拟为512字节扇区。
存在4K扇区和4K簇未对齐的情况。因此,有必要通过4K对齐将硬盘模拟扇区对准到4k扇区。
4K对齐的作用是将硬盘扇区与8的整数模拟扇区对齐,即512Bit×8 = 4096Bit,4096字节是4K。
严格来说,只要它是8的倍数,就可以实现4K对齐。

二、硬链接与软链接

  • 在linux系统下的软件文件有2种,一种类似Windows的快捷方式功能的文件,可以快速连接到文件或者目录,称之为软连接
  • 另外一种是通过inode连接产生新的文件名,二部是产生新的文件,称之为硬连接

2.1:硬连接

  • 一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。但是linux系统允许多个文件名指向同一个inode号码,这意味着,可以不同的文件名访问同样的内容
  • ln命令可以创建硬连接
    命令格式为:ln 源文件 目标文件
  • 建立硬链接后,源文件与目标文件的inode号码相同,都是指向同一个inode,inode信息中的连接数这时就会增加1

2.2:软链接

  • 软连接就是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件名称
    列如,文件A和B的inode号码虽然不一样,但是文件A的内容是文件B的路径,读取文件A时系统会自动访问者导向文件B,这时,文件A就称为文件B的‘软连接’或者符号连接

三、恢复误删除的文件

3.1:EXT 类型文件恢复( extundelete 工具)

  • 删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录 里面的 block 中,删除这个文件的名字。
  • Linux 是通过 Link 的数量来控制文件删除的,只有 当一个文件不存在任何 Link 的时候,这个文件才会被删除。
  • 当使用“rm -rf”来删除数据时。针对 Linux 下的 EXT 文件系统,可用的恢复工具有 debugfs、ext3grep、extundelete 等。 其中extundelete 是一个开源的 Linux 数据 恢复工具,支持 ext3、ext4 文件系统。
  • 在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的 数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原 因很简单,因为将文件删除后,仅仅是将文件的 inode 节点中的扇区指针清零,实际文件还 存储在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回 天无力。所以以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数 据成功的比例。

3.1.1:编译安装 extundelete

  • 编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel, 这两个包在系统安装光盘的/Package 目录下就有,使用 rpm 或 yum 命令将其安装。 e2fsprogs-devel 安装依赖于 libcom_err-devel 包。 安装完依赖包之后,即可将提前上传的 extundelete 软件包解压、配置、编译、安装
[root@localhost opt]# yum -y install e2fsprogs-devel e2fsprogs-libs
[root@localhost ~]# yum -y install wget
[root@localhost opt]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost opt]# yum -y install bzip2
[root@localhost opt]# tar xvf extundelete-0.2.4.tar.bz2 
[root@localhost opt]#  cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
[root@localhost extundelete-0.2.4]# cd /usr/local/extundelete/bin
[root@localhost bin]# ln -s /usr/local/extundelete/bin/* /usr/sbin/

Linux----深入理解Linux文件系统和日志分析_第2张图片
Linux----深入理解Linux文件系统和日志分析_第3张图片
Linux----深入理解Linux文件系统和日志分析_第4张图片

3.1.2:安装make(没有的话,要安装)

  • 安装:
    yum -y install gcc automake autoconf libtool make
  • 2、安装g++:
    yum install gcc gcc-c++

Linux----深入理解Linux文件系统和日志分析_第5张图片
Linux----深入理解Linux文件系统和日志分析_第6张图片

3.1.3:模拟删除并执行恢复操作

虚拟机添加新硬盘,使用 fdisk 命令创建新分区,将其挂载到/data目录下,往该目录下新建一些文件或目录
Linux----深入理解Linux文件系统和日志分析_第7张图片
Linux----深入理解Linux文件系统和日志分析_第8张图片
使用“extundelete /dev/sdb1 --inode 2”查看文件系统/dev/sdb1 下存在哪些文件, 具体的使用情况。其中–inode 2 代表从 i 节点为 2 的文件开始查看,一般文件系统格式化挂 载之后,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。
Linux----深入理解Linux文件系统和日志分析_第9张图片
使用"rm -rf a b"命令删除/tmp/下的 a 文件和 b 文件,当出现误操作时,立刻卸载该文 件系统,然后使用“extundelete /dev/sdb1 --restore-all"恢复/dev/sdb1 文件系统下的所有内容。
Linux----深入理解Linux文件系统和日志分析_第10张图片
Linux----深入理解Linux文件系统和日志分析_第11张图片
Linux----深入理解Linux文件系统和日志分析_第12张图片

3.2:xfs文件恢复

1.创建一块磁盘并进行挂载做实验
Linux----深入理解Linux文件系统和日志分析_第13张图片
2、放文件和目录进去
Linux----深入理解Linux文件系统和日志分析_第14张图片
3、备份,删除,恢复
Linux----深入理解Linux文件系统和日志分析_第15张图片
Linux----深入理解Linux文件系统和日志分析_第16张图片
Linux----深入理解Linux文件系统和日志分析_第17张图片
Linux----深入理解Linux文件系统和日志分析_第18张图片

四、分析日志文件

4.1:日志的功能

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

4.2:日志文件的分类

  • 内核及系统日志:由系统服务 rsyslog 统一管理,这些程序使 用的日志记录具有相似的格式
  • 用户日志:用于记录 Linux 操作系统用户登录及退出系统的相关信息, 包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。
  • 程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给 rsyslog 服务管理),用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管 理自己的日志文件,因此不同程序所使用的日志记录格式可能会存在较大的差异。

4.2:主要日志文件的介绍

  • 日志文件都默认放在目录/var/log/下

  • 计划任务日志/var/log/cron:记录 crond 计划任务产生的事件信息

  • 系统引导日志/var/log/dmesg:记录 Linux 操作系统在引导过程中的各种事件信息

  • 邮件系统日志/var/log/maillog:记录进入或发出系统的电子邮件活动。

  • 用户登录日志
    /var/log/lastlog:记录每个用户最近的登录事件。
    /var/log/secure:记录用户认证相关的安全事件信息
    /var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件
    /var/log/btmp:记录失败的、错误的登录尝试及验证事件

4.3:日志文件分析

  • 目的在于通过浏览日志查找关键信息、对系统服务进行调试,以及判断发生故障的原因 等
  • 对于大多数文本格式的日志文件(如内核及系统日志、大多数的程序日志),只要使用 tail、more、less、cat 等文本处理工具就可以查看日志内容。而对于一些二进制格式的日志 文件(如用户日志),则需要使用特定的查询命令

4.3.1:内核及系统日志分析

  • 内核及系统日志功能主要由默认安装的 rsyslog-7.4.7-16.el7.x86_64.rpm 软件包提供。
  • rsyslog 服务所使用的配置文件为/etc/rsyslog.conf。通过查看/etc/rsyslog.conf 文件中的内 容,可以了解到系统默认的日志设置
  • 在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)
    0 EMERG(紧急):会导致主机系统不可用的情况。
    1 ALERT(警告):必须马上采取措施解决的问题。
    2 CRIT(严重):比较严重的情况。
    3 ERR(错误):运行出现错误
    4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件
    5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。
    6 INFO(信息):一般信息。
    7 DEBUG(调试):程序或系统调试信息等。

4.3.2:用户日志分析

  • 保存了用户登录,退出系统的等相关信息
    /var/log/lastlog:最近的登录事件。
    /var/log/wtmp:用户登录注销及系统开关机事件
    /var/log/utmp:当前登录的每个用户的详细信息
    /var/log/secure:与用户验证相关的安全性事件
  • 分析工具:who、w、users、last 和 lastb
    1.查询当前登录的用户情况——users、who、w 命令
    users 命令:简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。
    who 命令:用于报告当前登录到系统中的每个用户的信息。默认输出包括用 户名、终端类型、登录日期及远程主机
    2.查询用户登录的历史记录——last、lastb 命令

4.3.3:程序日志分析

  • 由相应的应用程序独立进行管理
    1,Web服务:/var/log/httpd/
    access_log , error_log
    2,代理服务:/var/log/squid/
    access.log , cache.log
    3,FTP服务:/var/log/xferlog
  • 分析工具
    文本查看,grep过滤检索,webmin管理套件查看
    awk,sed文本过滤,格式化编辑工具
    专用日志分析工具

你可能感兴趣的:(Linux----深入理解Linux文件系统和日志分析)