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

目录

1.inode 和block概述

1.1概述

1.2inode 的内容

1.3 inode的号码

1.4文件存储小结

1.5 inode的大小

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

1.7inode节点耗尽故障处理

 2.EXT类型文件恢复

3.xfs类型文件备份和恢复

 4.日志文件

4.1日志的功能

4.2日志文件的分类

4.3日志保存位置

4.4由系统服务rsyslog统一管理

4.5日志消息的级别

4.6日志记录的一般格式

4.7用户日志分析

总结


1.inode 和block概述

1.1概述

   文件数据包括元信息与实际数据

   文件存储在硬盘上,硬盘最小存储单位是"扇区“,每个扇区存储512字节

block(块)

  联系的八个扇区组成一个block

  是文件存取的最小单位

inode(索引节点)

中文译名为”索引节点“,也叫i节点

用于存储文件元信息

1.2inode 的内容

inode包含文件的元信息

文件的字节数

文件拥者的User ID

文件的Group ID

文件的读写执行权限

文件的时间戳

。。。。。。

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

示例:stat aa.txt

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

ctime ( change time)

最后一次改变文件或目录(属性)的时间

atime (access time)

最后一次访问文件或目录的时间

mtime (modify time)

最后一次修改文件或者目录(内容)时间

目录文件的结构

    目录也是一种文件

    目录文件的结构

每个inode都有一个号码,操作系统用inode号码来识别不同的文件

Linux系统内部不适用文件名,而使用inode号码来识别文件

对于用户,文件名只是inode号码便于识别的别称

Linux系统中一切皆文件,因此目录也是一种文件

1.3 inode的号码

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

       系统找到这个文件名对应的inode号码

       通过inode号码,获取inode信息

       根据inode信息,找到文件数据所在的block,读出数据

查看inode号码的方法

ls -i命令  :查看文件名对应的inode号码

ls -i aa.txt

 

1.4文件存储小结

硬盘分区后的结构

 

访问文件的简单流程

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

1.5 inode的大小

inode也会消耗硬盘空间

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

格式化文件系统时确定inode的总数 (一般是每1kb或每2kb就设置一个inode。假设在一块1GB的硬盘中每个inode节点大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%

使用df -i 命令可以查看每个硬盘分区的inode总数和已经使用的数量

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


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

通过inode 删除文件命令:

find  ./   -inum   52305140   -exec   rm   -i   {} \;
find  ./  -inum    50464299     -delete

find ./ -inum 67393178 -exec rm -i {} \;

 find ./ -inum 67146419 -delete

1.7inode节点耗尽故障处理

#使用fdisk创建分区/dev/sdb1,分区大小30M即可
fdisk  /dev/sdb     n→p→+30M→w
mkfs.ext4  /dev/sdb1    #对于centos 7系统,节点耗尽故障处理的文件类型可以是ext3或ext4
mkdir  /test    #创建挂载点
mount  /dev/sdb1  /ceshi
df   -i      #查看inode号一共有多少个

#模拟inode节点耗尽故障
for  ((i=1; i<=7680; i++)) ;do  touch  /ceshi/file$i; done    或者  touch {1..7680}.txt     #创建超过它限额的节点号
df  -i   
df  -hT   
#删除文件恢复
rm  -rf  /test/*
df   -i
df   -hT


创建sdb1分区 

格式化/dev/sdb1 

 

 挂载/dev/sdb1 并查看inode节点数

 for((i=1;i<=7680;i++));do touch /ceshi/file$i;done

 查看inode节点数和可用容量

 

 虽然可用容量还有但是由于没有可用inode所以创建不了 

 2.EXT类型文件恢复

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    install  -y e2fsprogs-devel   e2fsprogs-libs   gcc gcc_c++ make
#编译安装 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/1ocal/extundelete && make && make install

或./configure && 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/
创建分区/dev/sdb1

 格式化

 挂载在目录上

把下载的tar包拖入xshell 

 

 

 

 

 

 

 

 

3.xfs类型文件备份和恢复

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

xfsdump 的命令格式为:

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

xfsdump备份级别(默认为0)

0:完全备份 1-9:增量备份

xfsdump常用选项: -f、-L、-M、-S

xfsrestore命令格式

xfsrestore -f 恢复文件的位置

存放恢复后文件的位置

xfsdump使用限制:

1.只能备份已挂载的文件系统

2.必须使用root的权限才能操作

3.只能备份XFS文件系统

4.备份后的数据只能让xfsrestore解析

5.不能备份两个具有相同UUID的文件系统(可用blkid命令查看)

模拟删除并执行恢复操作

#使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs /dev/ sdbl              #  mkfs.xfs [-f] /dev/sdbl
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a    创建文件夹

#使用xfsdump命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
xfsdump -f /opt/dump_sdb /dev/sdb1 -L dump_sdb -M sdb1   
#模拟数据丢失并使用xfsrestore 命令恢复文件 标签
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/

 

 

 备份分区

删除文件 

 

恢复 备份文件

 恢复好了后

 

 4.日志文件

4.1日志的功能

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

4.2日志文件的分类

内核及系统日志 由系统服务rsyslog统一进行管理,日志格式基本相似

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

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

4.3日志保存位置

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

主要日志文件介绍

#内核及公共消息日志:

/var/1og/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。 对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

#计划任务日志:

/var/1og/cron:记录crond计划任务产生的事件信息。

#系统引导日志:

/var/1og/dmesg:记录Linux系统在引导过程中的各种事件信息。

#邮件系统日志:

/var/1og/maillog:记录进入或发出系统的电子邮件活动。

#用户登录日志:

/var/log/secure:记录用户认证相关的安全事件信息。

/var/1og/lastlog:记录每个用户最近的登录事件。二进制格式

/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式

/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

4.4由系统服务rsyslog统一管理

软件包: rsyslog-7.4.7-16.el7.x86_64

主要程序: /sbin/rsyslogd

配置文件: /etc/rsyslog.conf

4.5日志消息的级别

级号      消息          级别         说明

0           EMERG    紧急        会导致主机统不可用的情况

1           ALERT      警告        必须马上采取措施解决的问题

2            CRIT         严重        比较严重的情况

3          ERR           错误          运行出现错误

4           WARNING  提醒        可能会影响系统功能的事件

5          NOTICE      注意        不会影响系统但值得注意

6           INFO         信息        一般信息

7           DEBUG      调试      程序或系统调试信息等

4.6日志记录的一般格式

4.7用户日志分析

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

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

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

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

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

■分析工具 ●users、who、 W、last、 lastb

程序日志分析

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

●Web服务: /var/log/httpd/

◆access_log、 error_log

●代理服务: /var/log/squid/

◆access.log、cache.log、

●FTP服务: /var/log/xferlog

■分析工具

●文本查看、grep过滤检索、Webmin管理套件中查看

●awk、sed等文本过滤、格式化编辑工具

●Webalizer、Awstats等专用日志分析工具

总结

本章总结 ■block与inode ■硬链接与软链接 ■恢复误删除的文件 ■Linux主要包含的日志文件 ■Linux系统的日 志消息级别 ■Linux系统中用户日志的查询命令 ●who、W、users、 last、 lastb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值