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

一、inode和block概述

1.1 inode

1.1.1 inode的理解

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • linux系统内不适用文件名,而是用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

1.1.2 inode的作用

  • 用来存储数据的元信息,作为元信息指的是该数据的一些属性,特性。
  • 这种存储文件元信息的区域就叫inode(索引节点),也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block。
  • inode中并不包含文件名,文件名存放在目录当中
  • 查看文件的inode号码:ls -i [文件名] 或者stat [文件名]

1.1.3 inode包含文件的元信息

  • 文件的字节数
  • 文件的拥有者UID
  • 文件的GID
  • 文件的读写、执行权限
  • 文件的时间戳

1.1.4 inode号码

用户通过文件名打开文件时,系统内的过程为:

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获得inode信息
  3. 根据inode信息,找到文件数据所在的block,读取数据

1.1.5 inode的大小

inode也会消耗硬盘空间
每个inode的大小一般是128字节或者256字节
格式化文件系统时确定inode的总数
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

1.1.6 inode的特殊作用

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

  • 当文件包含特殊字符时,可能无法正常删除文件,直接删除inode号,可以删除文件
  • 移动或者重命名文件时,只改变文件名,不影响inode号
  • 打开一个文件后,系统通过inode号码来识别文件,不在考虑文件名

1.1.7 inode节点耗尽的实验

首先实验需选择空间较小的磁盘分区

df -i 挂载点      ## 查看挂载点的inode使用情况
vi kill.sh         ## 进入文件编辑
#! /bin/bash
	i=1
	while [ $i -le 120 ]    ## 120为inode剩余可用节点
	do   
	touch /sdb1/file$i       ## 创建feil文件
	let i++
	done
./kill.sh
df -i       
rm -rf file*          ## 删除刚才无用的节点,恢复磁盘空间

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

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

1.3 block

  • 文件储存在硬盘上,硬盘最小的储存单位是“扇区”,每个扇区储存512字节
  • block(块):连续的8个扇区组成一个block,即大小是4KB,是储存文件的最小单位

二、恢复误删除的文件

2.1 恢复XFS类型的文件

此实验需要CentOS7的操作环境。即误删除挂载在 /data目录下的磁盘 /dev/sdb1中的文件a、b、c、d后进行的文件恢复操作。

xfsdump -f /opt/dump-sdb1 /dev/sdb1  ## 使用xfsdump备份需要备份的文件
xfsdump -I     ## 查看操作
rm -rf /data/*      ## 实验进行误删除操作
xfsrestore -f /opt/dump_sdb1 /data       ## 文件恢复

2.1.1 XFSdump使用限制

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

2.2 恢复EXT类型的文件

此实验需要CentOS6的操作环境。

yum -y install e2fsprogs-devel e2fspprogs-libs gcc gcc-c++ make  ## 安装操作环境
tar -jxvf extundelete-0.2.4.tar.bz2    ## 解压缩
cd extundelete-0.2.4
./configure --prefix= /usr/local/extundelete && make && make install
extundelete /dev/sdb1      ## 对文件备份
extundelete /dev/sdb1 --inode 2     ## 查看文件备份的结果
rm -rf a b      ## 误删除操作
umount /data         ## 卸载挂载点,防止其他用户修改文件,对文件造成无法恢复的操作
extundelete /dev/sdb1 --restore-all      ## 恢复文件
mount /dev/sdb1 /data     ## 重新挂载
cd RECOVERED_FILES/     ## 文件中 有恢复的文件
mv a b /data     ## 移动到原文件中

三、日志文件

3.1 日志功能

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

3.2 日志文件的分类

  • 内核及系统日志
    由系统服务rsyslog统一进行管理,日志格式基本相似
  • 用户日志
    记录系统用户登录及退出系统的相关信息
  • 程序日志
    由各种应用程序独立管理的日志文件,记录格式不统一

3.3 主要日志文件介绍

日志类型 存放地址
内核及公共消息日志 ./var/log/messages
计划任务日志 ./var/log/cron
计划任务日志 ./var/log/dmesg
邮件系统日志 ./var/log/maillog
用户登录日志(最近登录) ./var/log/lastlog
登录志(安全) ./var/log/secure
登录日志(登录、注销、停机等故障) ./var/log/wtmp
登录日志(失败、错误登录尝试) ./var/log/btmp
登录日志(当前登录的每个用户相关问题) ./var/log/utmp

3.4 日志消息级别

日志级别 显示 解释 结果
0 EMERG 紧急 会导致主机系统不可用的情况
1 ALERT 警告 必须马上采取措施解决的问题
2 CRIT 严重 比较严重的情况
3 ERR 错误 运行出现错误
4 WARNING 提醒 可能会影响系统功能的事件
5 NOTICE 注意 一般不影响系统,但值得注意
6 INFO 信息 一般信息
7 DEBUG 调试 程序或系统调试信息

3.5 分析工具

分析选项

users、who、w、last、lastb

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤,格式化编辑工具
Webalizer、Awstats等专用日志分析工具

由相应的应用程序进行独立管理

服务 程序
Web服务 /var/log/httpd access_log、error_log
代理服务 /var/log/squid access.log、cache.log
Ftp服务 /var/log/xferlog

日志管理策略

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

猜你喜欢

转载自blog.csdn.net/weixin_50344820/article/details/109281710