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

inode和block概述

文件、扇区

文件数据包括元信息实际数据文件是存储在硬盘上的
②硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节

block(块)

①连续个扇区组成一个block(4k)
②是文件存取的最小单位
③操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。

inode(索引节点)

①中文译名为“索引节点”,也叫节点
②用于存储元信息
在这里插入图片描述

PS:

文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做 inode ,因此,一个文件必须占用一个inode,并且至少占用一个block。inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。

总而言之
当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

inode

一、目录文件的结构
1、目录也是一种文件
2、目录文件的结构
二、每个inode都有一个号码,操作系统用inode号码来识别不同的文件
三、Linux系统内部不使用文件名,而使用inode号码来识别文件
四、对于用户,文件名只是inode号码便于识别的别称

inode包含文件的元信息

文件的字节数
文件拥有者的User ID
文件的Group ID
文件的rwx权限
文件的时间戳
……

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

stat aa.txt

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

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

inode的号码

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

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

查看inode号码的方法

ls -i  aa.txt           查看文件名对应的inode号码

stat aa.txt           查看文件inode信息中的inode号码

inode的大小

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

inode的特殊作用

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:
1、文件名包括特殊字符,可能无法正常删除。这时直接删除inode能够起到删除文件的作用
2、移动文件或重命名文件,只是改变文件名,不影响inode号码
3、打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名
4、文件数据被修改保存后,会生成一个新的inode号码

通过删除inode号来删除一个文件
find  ./ -inum  52305160  -exec rm -i {} \;
find  ./ -inum  52305160  -delete

文件存储

硬盘分区后的结构

在这里插入图片描述

访问文件的简单流程

在这里插入图片描述

inode节点耗尽故障处理

在这里插入图片描述

然后格式化并挂载使这个磁盘分区可用,挂载时使用ext3显示inode号更加准确一些

模拟inode节点耗尽故障

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

恢复EXT类型文件

**extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统(ext4只能在centos6版本恢复)

EXT类型文件恢复
extundelete  是一个开源的Linux数据恢复工具,支持 ext3,ext4 文件系统。(ext4只能在centos6版本恢复;ext3可在centos7版本中恢复)
#使用 fdisk 创建分区 /dev/sdb1,
#格式化ext3文件系统
fdisk  /dev/sdb
mkfs.ext3  /dev/sdb1
mkdir  /test
mount  /dev/sdb1   /test
df  -hT
#安装依赖包
mount /dev/cdrom /mnt   #安装依赖包需要系统镜像被挂载起来
yum  -y  install  e2fsprogs-devel   e2fsprogs-libs   
#编译安装 extundelete
cd  /test
wget  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2    #解压依赖包
cd extundelete-0.2.4/
./configure  --prefix=/usr/local/extundelete && make && make install    #./configure --prefix=/usr/local/extundelete是用来指定configure命令安装到/usr/local/extundelete 目录的
ln -s /usr/local/extundelete/bin/*  /usr/bin/   #将/usr/local/extundelete/bin/ 下的文件软链接到/usr/bin/目录下,这样可以让系统识别extundelete这个工具的所有命令


#模拟删除并执行恢复操作
cd /test
echo a>a    #相当于使用echo 命令将内容a 定义到文件a,b,c,d中,创建4个文件
echo a>b
echo a>c
echo a>d
(或者使用vim 也可以创建)
ls
extundelete /dev/sdb1  --inode 2        #查看/dev/sdb1磁盘分区下存在哪些文件, i节点是从2开始的, 2代表该文件系统最开始的目录。
rm  -rf  a b
extundelete  /dev/sdb1  --inode 2
cd  ~
umount  /test
extundelete  /dev/sdb1  --restore-all    #恢复/dev/sdb1文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/ 目录,里面保存了已经恢复的文件
ls  RECOVERED_FILES/

xfs类型文件备份和恢复

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

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

xfsdump命令常用的选项

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

xfsdump 使用限制:

1、只能备份已挂载的文件系统
2、必须使用root的权限才能操作
3、只能备份XFS文件系统
4、备份后的数据只能让 xfsrestore 恢复
5、不能备份两个具有相同UUID的文件系统(可用 blkid 命令查看)

使用fdisk创建分区/dev/sdb1
格式化xfs文件系统
fdisk  /dev/sdb
[partprobe  /dev/sdb ]  #刷新一下磁盘分区,该命令可用 可不用
mkfs.xfs   [ -f ]   /dev/sdb1    #加-f是强制进行格式化
mkdir   /data
mount    /dev/sdb1    /date
cd    /data
cp    /etc/passwd   ./        #该处是将passwd 的信息进行备份,后面会将该文件信息删除,然后进行恢复
mkdir  test
touch    test/a
yum   install   -y   xfsdump
xfsdump   -f   /opt/dump_sdb1    /dev/sdb1     [ -L  dump_sdb1   -M   sdb1 ]  
模拟数据丢失并使用 xfsrestore  命令恢复文件
cd   /data/
rm   -rf   ./*
ls

xfsrestore   -f   /opt/dump_sdb1    /data/

日志文件

日志的功能

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

日志文件的分类

内核及系统日志

1、由系统服务rsyslog统一进行管理,日志格式基本相似
2、主配置文件/etc/rsyslog.conf

用户日志

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

程序日志

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

日志保存位置

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

主要日志文件介绍

日志名称位置
内核及公共消息日志./var/log/messages
计划任务日志./var/log/cron
系统引导日志./var/log/dmesg
邮件系统日志./var/log/maillog
用户登陆日志./var/log/lastlog^./var/run/btmp
vim /etc/rsyslog.conf       #查看rsyslog.conf配置文件

在配置文件里:
*.info    #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none    #表示某事件的信息不屑道日志文件里(这里比如邮件)

Linux系统内核日志消息的优先级别

(数字等级越小,优先级越高,消息越重要)

级号消息级别说明
0EMERG紧急会导致主机系统不可用的情况。
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能影响系统功能,需要提醒用户的
5NOTICE注意不会影响正常功能,但是需要注意的事件
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

用户日志分析

保存了用户登录、退出系统等相关信息

/var/log/lastlog:最近的用户登录事件

/var/log/wtmp:用户登录、注销及系统开、关机事件

/varlrun/utmp:当前登录的每个用户的详细信息

/var/log/secure:与用户验证相关的安全性事件

分析工具

users、who、 w、 last、 lastb

last命令用于查询成功登录到系统的用户记录
lastb命令用于查询登录失败的用户记录

日志管理策略

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

crontab -e 
0  2  *  *  *  /usr/bin/find ./-mtime  +30 -exec  rm -rf    查找出三十天以外的日志并删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值