关于linux文件系统与日志分析

Linux基础之进一步了解linux文件系统与日志分析(inode号,xfs文件备份)

目录
一、文件系统
1、扇区(sector)
2、块(block)
3、文件数据
4、inode(索引节点或i节点)
5、相关概念总结
二、inode号
1、三个主要时间属性
2、inode的大小
3、inode号的查询
4、inode的特殊作用
5、通过inode号删除文件
三、模拟inode节点耗尽故障处理
四、恢复误删的文件(ext格式)
五、xfs 类型文件备份和恢复
六、系统日志
1、日志文件
1)日志的功能
2)日志文件的分类
3)默认保存位置
2、日志文件分析
1)内核及系统日志
2)日志消息优先级
3)查看rsyslog.conf配置文件
4)日志的格式
5)用户日志
6)程序日志
7)常见日志总汇
3、日志管理

 


一、文件系统
首先文件肯是存储在硬盘上的,但是linux系统中文件和硬盘中又分别细分出其他的概念,下面我们开始详细的了解这些。

1、扇区(sector)
“扇区”是硬盘的最小存储单位,每个扇区可以存储512字节。
2、块(block)
操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一次性读取一个或多个块。
一个"块"一般是由连续的八个“扇区”组成,所以一个块是4K大小,这是文件存取的最小单位。
3、文件数据
文件数据包括实际数据与元信息(比如文件的创建者、创建日期、文件大小、文件权限等)。
文件数据存储在“块”中,而存储文件元信息的区域叫inode。
4、inode(索引节点或i节点)
一个文件必须占用一个 inode,并且至少占用一个 block。
inode不包含文件名。文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
5、相关概念总结

用户访问文件的步骤(系统中)
第一步:用户在Linux系统中访问一个文件
第二步:系统根据文件名查找对应的inode号码
第三步:通过inode号码,获取inode信息
第四步:根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

二、inode号
1、三个主要时间属性
Linux系统文件三个主要的时间属性
ctime(change time) #最后一次改变文件或目录(属性)的时间
atime(access time) #最后一次访问文件或目录的时间
mtime(modify time) #最后一次修改文件或目录(内容)的时间
2、inode的大小
inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是 inode 区,存放 inode 所包含的信息。每个 inode 的大小,一般是 128 字节或 256 字节。

在格式化文件系统的时候就确定了inode 的总数
“df -i”命令可查看每个硬盘分区对应的的 inode 总数和已经使用的inode 数量。

3、inode号的查询
查看文件名对应的 inode 号码有两种方式:
ls -i 文件名 #查普通文件
stat 文件名 #查普通文件和目录(这个好用)
4、inode的特殊作用

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

文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
移动文件或重命名文件,只是改变文件名,不影响 inode 号码;
打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。
文件数据被修改保存后,会生成一个新的 inode 号码。
5、通过inode号删除文件
find ./ -inum 52305140 -exec rm -i {} \;
find ./ -inum 50464299 -delete

 

三、模拟inode节点耗尽故障处理
步骤总汇
1、使用fdisk创建分区/dev/sdb1,分区大小30M即可
fdisk /dev/sdb n→p→回车→+30M→w #创建分区
mkfs.ext4 /dev/sdb1 #对于centos 7系统,节点耗尽故障处理的文件类型可以是ext3或ext4
mkdir /test
mount /dev/sdb1 /mnt
df -i
2、模拟inode节点耗尽故障
for ((i=1; i<=7680; i++));do touch /test/file$i;done
或者 touch {1..7680}.txt
df -i
df -hT
3、删除文件恢复
rm -rf /test/*
df -i
df -hT

 

 

 

 


图示:
1、使用fdisk创建分区/dev/sdb1,并挂载

 

 

 

 

 

 

 


2、模拟inode节点耗尽故障

 

 

 

 


总结:每个文件对应一个inode号,inode号使用完,就算磁盘里还有很多空间,也不能创建文件。

四、恢复误删的文件(ext格式)
extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
操作步骤
1、使用fdisk创建分区/dev/sdb1,格式化ext3文件系统
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df -hT

2、安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs

3、编译安装 extundelete
cd /test 切换到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 #解压tar包
cd extundelete-0.2.4/ #切换到解压出来的目录中
./configure --prefix=/usr/local/extundelete && make && make install #指定安装目录,开始安装
ln -s /usr/local/extundelete/bin/* /usr/bin/ #创建软连接,让系统识别命令

4、模拟删除并执行恢复操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
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/

图示:
1、我直接用之前的sdb1,先解挂载,再重新格式化。

 

 

 

 


2、用yum方式安装依赖包

 

 

3、下载安装包并安装

 

 

 

 

 

 

 

 

 

 

 

 

 


4、模拟删除并恢复

 

 

 

查看a、b已被删除

 

 

 

 

 

五、xfs 类型文件备份和恢复
CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。xfsdump 的备份级别默认为 0。
xfsdump 的命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件

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

命令常用的选项 作用
-f 指定备份文件目录
-L 指定标签 session label
-M 指定设备标签 media label
-s 备份单个文件,-s 后面不能直接跟路径
步骤:

1、使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb #重读分区表,磁盘查询不到时使用
mkfs.xfs [-f] /dev/sdb1
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a

2、使用 xfsdump 命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]

3、模拟数据丢失并使用 xfsrestore 命令恢复文件
cd /data/
rm -rf ./*
ls

xfsrestore -f /opt/dump_sdb1 /data/

步骤图示:
1、准备工作

 

 

 

 

 

 

 

2、备份文件,并删除、恢复

 

 

 

 

 

六、系统日志
1、日志文件
1)日志的功能
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
2)日志文件的分类
内核及系统日志
由系统服务 rsyslog 统一进行管理,日志格式基本相似
主配置文件 /etc/rsyslog.conf
用户日志
记录系统用户登录及退出系统的相关信息
主配置文件/var/log/secure
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
3)默认保存位置
日志文件都默认放在目录/var/log/下。

 

 

 

2、日志文件分析
1)内核及系统日志
由系统服务 rsyslog 统一进行管理

软件包:rsyslog-7.4.7-16.el7.x86_64、
主要程序:/sbin/rsyslogd
配置文件:/etc/rsyslog.cont
2)日志消息优先级
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):

级号 优先级级别 说明
0 EMERG(紧急) 会导致主机系统不可用的情况。
1 ALERT(警告) 必须马上采取措施解决的问题。
2 CRIT(严重) 比较严重的情况。
3 ERR(错误) 运行出现错误。
4 WARNING(提醒) 可能影响系统功能,需要提醒用户的重要事件。
5 NOTICE(注意) 不会影响正常功能,但是需要注意的事件。
6 INFO(信息) 一般信息。
7 DEBUG(调试) 程序或系统调试信息等。
3)查看rsyslog.conf配置文件
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages

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

 

 

 

 

 

4)日志的格式
#公共日志/var/log/messages 文件的记录格式
时间标签:消息发出的日期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。

 

 


5)用户日志
记录系统用户登录及退出系统的相关信息
/var/log/secure:记录用户认证相关的安全事件信息。
/var/log/lastlog:记录每个用户最近的登录事件。二进制格式
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式
分析工具
users、 who、w 、last、lastb
last命令用于查询成功登录到系统的用户记录
lastb命令用于查询登录失败的用户记录
6)程序日志
由各种应用程序独立管理的日志文件,记录格式不统一

Web服务:Nar/log/httpd/
access_log //记录客户访问事件
error_log //记录错误事件
代理服务:/var/log/squid/
access.log、cache.log
分析工具

文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
7)常见日志总汇
常见的一些日志文件:
#内核及公共消息日志:
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

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

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

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

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

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

 

摘自:https://blog.csdn.net/weixin_51326240/article/details/110721613

posted @ 2021-04-26 13:49  念槐聚  阅读(151)  评论(0)    收藏  举报