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

目录

inode与block

inode和block概述

block(块)

inode(索引节点)

inode的内容

inode包含文件的元信息

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

inode区和数据区

总结

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

 移动和复制时,inode号的变化

 目录文件的结构

 用find命令删除inode号

 find另一种删除方式

 文件储存小结

inode的大小

inode也会消耗硬盘空间

格式化文件系统时确定inode的总数

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

inode的特殊作用

inode的大详解

硬连接与软连接

作用

硬链接

软链接

模拟节点故障

第二种删除节点方法

案例

恢复误删除的文件

恢复EXT类型的文件编译

安装extundelete软件包

配置、编译及安装

模拟删除并执行恢复操作

恢复XFS类型的文件

xfsdump命令格式  (备份格式)

xfsdump备份级别(默认为0)

xfsdump常用选项

slxfsrestore命令格式  (还原格式)

xfsdump使用限制

xfs类型文件备份和恢复理论小结

模拟删除并执行恢复操作

实例(有交互模式)

 实例(无交互模式)

增量备份 

分析日志文件

日志的功能

日志文件的分类

内核及系统日志

用户日志

程序日志

日志记录内容包括

日志保存位置

主要日志文件介绍

 示例

日志

常见的一些日志文件

由系统服务rsyslog统一管理

日志的运行级别 

日志记录的一般格式

用户日志分析

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

分析工具

程序日志分析

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

分析工具

日志管理策略

及时作好备份和归档

延长日志保存期限

控制日志访问权限

集中管理日志



inode与block

inode和block概述

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

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

block(块)

连续的八个扇区组成一个block

是文件存取的最小单位

inode(索引节点)

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

用于存储文件元信息

注:

1.原信息就是文件属性(详细信息,包括权限、大小、属主、属组、创建时间,但目录名不算)

2.数据就是文件的编写的内容

3.一个文件必须占有一个inode,但至少会占用一个数据块(block)

4.文件名存放在目录上

5.每一个inode都有一个inode号

6.每一个文件名都对应一个inode号

inode的内容

inode包含文件的元信息

文件的字节数

文件拥有者的User lD

文件的Group lD

文件的读、写、执行权限

文件的时间戳

……

但(不包含文件名)

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

示例: stat aa.txt

 以其他的方式查看inode号

 df -i 查整个磁盘

ls -i 查文件

注: inode号也会消耗磁盘空间

inode区和数据区

inode区和数据区是两个不同的区

查看inode区用df -i 

查看数据区用fd -h

总结

inode节点

元信息(文件属性:文件大小、权限、时间戳)

block块的大小数据文件:编写文件的内容

文件数据存在块中

文件元信息存在inode

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

octime(change time):

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

atime(access time):

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

omtime(modify time):

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

 查看1.txtinode信息

 

 然后我们再次进行访问

 我们修改内容后再次进行查看

 

  我们修改属性后再次进行查看

 

 移动和复制时,inode号的变化

复制时:

 

 移动时:

 由此我们可以得出:移动时,文件的inode号不变,因为是同一份文件,只不过是更换了文件的保存地址。复制时,就相当于多了一份新文件,只不过是内容上与另外一份文件相同,所以它的inode号与源文件不同。

注:使用vim会改变inode号,echo不会改变inode号。那是因为vim是使用新文件代替老文件,本质上是一个新文件。而echo是直接向文件里输入内容,本质上还是原来的文件。

 
目录文件的结构

1.目录也是一种文件

2.目录文件的结构

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

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

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

 

 用find命令查找inode

 

 用find命令删除inode号

 

 

 验证结果

 find另一种删除方式

进入到opt下

 删除inode

 注:rm -i 【文件名】是不能删除inode号的

 文件储存小结

硬盘分区后的结构

 

 访问文件的简单流程

 

inode的大小

inode也会消耗硬盘空间

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

格式化文件系统时确定inode的总数

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

inode的特殊作用

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

2、当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件

3、移动或重命名文件时,只改变文件名,不影响inode号码

4、打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

inode的大详解

在处理Linux系统出现的各种故障时,故障的症状是最易发现的,而导致这一故障的原因才是最终排除故障的关键。熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点、"对症下药"、并及时解决各种系统问题。另外,Linux系统中通过分区、格式化来创建文件系统,而文件系统的运行又与 block 和 inode有关。

下面来深入地了解Linux:

系统的文件系统和日志文件分析,并通过一些实例介绍常见系统故障的分析与排除过程。由于故障现象的不确定性,在进行一些模拟故障的操作之前,一定要提前做好数据备份。

inode与block

操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(所有者、群组、时间参数等)。文件系统通常会将这两部分内容分别存放在 inode和block 中。

元信息:文件的属性用ls创建者属主权限文件的创建日期文件的大小

实际数据:就是文件编写的内容

一个扇区是512,两个扇区不就是1024 (1k)8个块不就是4k吗?

文件是存储在硬盘上的,硬盘的最小存储单位叫做"扇区”(sector),每个扇区存储512字节。

一般连续八个扇区组成一个"块” (block),一-个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。

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

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码,通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限。如果有,就指向相对应的数据block,并读取数据。

注:有的系统中4额扇区组成一个块大部分主流都是八个扇区。

查看文件名对应的inode号码有两种方式

ls -i       文件名

stat      文件名

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

文件数据存在块中

文件元信息、存在inode

inode是什么?是区域存储文件元信息﹑比如文件的创建者、创建日期、文件大小、文件权限39

inode怎么去找? inode号找文件数据_inode号去找太长记不住我们可以通过文件名查找﹐文件对应的一个inode号,再通过文件名找到inode inode相关信息你有权限就指向文件,你就可以查看文件了,你没有查看权限我就拒绝掉。

inode包含文件的元信息,具体来说有以下内容:

文件的字节数:就是字节占了多少空间和文件大小

文件拥有者的User ID       Linux识别用户的时候,识别的是它的UID。这个节点里边的那个元信息要存放的是文件拥有者的UID

文件的Group ID

文件的读、写、执行权限

文件的时间戳,共有三个:ctime指inode创建时间,mtime指文件内容上一次修改的时间,atime指文件最后一次访问的时间。

链接数,即有多少文件名指向这个inode。

文件数据block的位置。

Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间

Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

ChangeTime:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数例如执行chmod, chown等命令。

创建一个a.txt

实验1: cat a.txt

实验2: echo "this is class" > a.txt65

实验3 :chmod 777 a.txt

最后用stat命令查看

68https:/I www.cnblogs.com/cherishry/p/5885107.html69

i节点里面不包含文件名

文件名不存放在i节点里面,文件名存储在目录。

Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开日录文件。目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名、该文件名对应.的inode号码

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

1.文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;

2.移动文件或重命名文件,只是改变文件名,不影响inode号码;

3.打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。

4.文件数据被修改保存后,会生成一个新的inode号码。

find通过删除inode号来删除文件的两种方法

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

find ./ -inum 50464299 -delete

硬连接与软连接

作用

为文件或目录建立连接文件

链接文件分类

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

硬链接

ln     源文件     目标位置

软链接

ln    -s     源文件或目录        链接文件或目标位置

模拟节点故障

 创建一个磁盘

 设置磁盘大小并保存退出

格式化磁盘

 创建目录并挂载查看

 

 查看磁盘情况

 

 进入ky19并创建大量文件

 

 查看磁盘数据块

 

 ls 查看

 

 删除307的所有并查看

 

  创建ky19.txt并查看

 

 此时创建文件成功

说明节点占满后要进行删除才能继续创建

第二种删除节点方法

首先我们清空刚刚的节点

 

 

 

 

 

 

案例

inode节点耗尽故障处理

#使用fdisk创建分区/dev / sdb1,分区大小30M即可

fdisk /dev / sdb

mkfs.ext3 /dev/ sdb1

mkdir /test

mount /dev/sdbl /mnt

df -i

#模拟inode节点耗尽故障

for ((i=1; i<=5680; i++)) ;do touch /test/file$(i} ; done      或i+=1或i=i+1   3289

touch { 1..5680].txt

df -i

df -hT

#删除文件恢复rm -rf /test/*

df -i

df -hT

恢复误删除的文件

恢复EXT类型的文件编译

安装extundelete软件包

e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm

e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm

配置、编译及安装

extundelete-0.2.4.tar.bz2

模拟删除并执行恢复操作

 清空文件并分配磁盘sdb2,然后保存退出

 

 这里有个缓冲时间要稍等一会儿

 

 进行挂载

 df -h进行查看

 

 先安装依赖包

 下载压缩包

 

 传输

 

 解压压缩包

 ls 进行查看

 

 进入目录

 

 ls 进行查看

 配置脚本

 

 

 设置软连接

 

 进入ky19并创建a,然后输入内容

 

 检查a,b里面是否有数据

 

 

 删除a ,b

 

 

 

 那么如何恢复呢

我们先切换到其他目录下

 然后一定要删除挂载

 然后输入指令 

 进行查看

 

 进入此目录并查看内容

 

恢复XFS类型的文件

xfsdump命令格式  (备份格式)

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

xfsdump备份级别(默认为0)

0:完全备份

1-9:增量备份

xfsdump常用选项

-f、-L、-M、

slxfsrestore命令格式  (还原格式)

xfsrestore -f          恢复文件的位置        存放恢复后文件的位置

xfsdump使用限制

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

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

只能备份XFS文件系统

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

不能备份两个具有相同UUID的文件系统

xfs类型文件备份和恢复理论小结

Centos 7系统默认采用xfs类型的文件,xfs类型的文件可使用xfsdump 与xfsrestore 工具进行备份恢复。

xfsdump的备份级别有两种:0表示完全备份,1-9表示增量备份。xfsdump的备份级别默认为0。

xfsdump的命令格式为:

xfsdump 1-f备份仔放位置要备份的路径或设备文件xfsdump命令常用的选项:

-f:指定备份文件日录

-L:指定标签session label

-M:指定设备标签media labe.......

-s:备份单个文件,-s后面不能直接跟路径

模拟删除并执行恢复操作

使用fdisk创建分区/dev / sdb1,格式化xfs文件系统

fdisk /dev /sdb (适用于磁盘空间2T以内)   或     partprobe /dev/sdb (适用于磁盘空间2T以内)

mkfs.xfs /dev /sdb1                      mkfs.xfs [-f]/ devl sdb1

mkdir /data         创建一个目录

mount /dev/sdb1 /data/              将磁盘挂载到目录上面

cd /data            进入目录

cp /etc/passwd ./            拷贝一份文件到当前目录

mkdir test               创建一个新的目录

touch test/a           在目录下创建一个文件

使用xfsdump命令备份整个分区

rpm -qa l grep xfsdump       (查看xfs工具是否安装)

yum install -y xfsdump           (没有安装的话则安装工具)

xfsdump -f lopt/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/

实例(有交互模式)

先添加一块硬盘, 然后重启

 配置磁盘并保存退出

格式化磁盘

创建date目录

进行挂载

查看挂载是否成功

查看date目录内容是否为空

拷贝etc下的passwd到当前目录

创建一个新的目录ly19,并在ky19目录下一个新的文件

在sizu.txt文件里面输入内容

验证是否输入成功

查看工具包是否存在

不存在要进行安装

 

 进行备份

 

 

备份完毕,进行验证

 删除文件

进行恢复

进行验证

 实例(无交互模式)

然后进入opt删除当前目录,最后恢复是一摸一样的。

 无交互模式一定要删除后才能备份恢复,不然需要改名字

 

增量备份 

 ls 验证

 删除当前目录

 进行还原

 他并没有一次还原

 增量备份还原

 

现在才彻底还原 

分析日志文件

日志的功能

用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

日志文件的分类

内核及系统日志

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

用户日志

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

程序日志

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

日志记录内容包括

历史事件:时间、地点、、人物、事件

日志级别:0、  1、  2、  3  、4 、 5、  6 、 7

日志保存位置

默认位于: /varllog目录下

主要日志文件介绍

1、内核及公共消息日志         /lvarlloglmessages

2、计划任务日志                    /var/loglcron

3、系统引导日志                    /varllogldmesg

4、邮件系统日志                    /varllog/maillog

5、用户登录日志                    /varllog/lastlog

                                               /varlloglsecur

                                               /varllog/wtmp

                                               /varlrun/btmp

 示例

1、内核及公共消息日志

 

 跟踪日志

重启网卡

 

安装依赖包

运行依赖包 

查看80端口

2、计划任务日志

3、系统引导日志 

4用户登录日志

(1)他是二进制,你是看不了的

 一般我们直接用last查看

 (2)

日志

内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf

Linux操作系统本身和大部分服务器程序的日志文件都默认放在日录/var/log/下。

 

 

vim /etc/rsyslog.conf#查看rsyslog.conf配置文件

* .info;mail.none; authpriv.none; cron . none             /var/log/ messages
* .info                 表示info等级及以,上的所有等级的信息都写到对应的日志文件里
mail.none           表示某事件的信息不写到日志文件里( 这里比如是邮件)

常见的一些日志文件

内核及公共消息日志:

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

计划任务日志:

/var/log/cron              记录crondi计划任务产生的事件信息。

系统引导日志:

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

邮件系统日志:

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

用户登录日志:

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

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

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

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

由系统服务rsyslog统一管理

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

主要程序:/sbin/rsyslogd

配置文件:/etc/rsyslog.conf

日志的运行级别 

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

0  EMERG('紧急):会导致主机系统不可用的情况。

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

2  CRIT(严重):l比较严重的情况。

3  ERR(错误):运行出现错误。

4  WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。

5  NOTICE(注意):不会影响正常功能,但是需要注意的事件。

6  INFO(信息):一般信.息。

7  DEBUG ( i周试):程序或系统调试信息等。

日志记录的一般格式

用户日志分析

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

/var/log/lastlog:最近的用户登录事件 (查看用户登录和未登录信息)

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

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

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

分析工具

users 、 who、w、last、lastb

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等专用日志分析工具

日志管理策略

及时作好备份和归档

延长日志保存期限

控制日志访问权限

日志中可能会包含各类敏感信息,如账户、口令等

集中管理日志

将服务器的日志文件发到统一的日志文件服务器

便于日志信息的统一收集、整理和分析

杜绝日志信息的意外丢失、恶意篡改或删除

总结

1.block和inode

2.硬链接与软链接

3.恢复误删除的文件

4.Linux主要包含的日志文件

5.Linux系统的日志消息级别

6.Linux系统中用户日志的查询命令

7.who、w、users、last、lastb、lastlog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值