Linux文件系统与日志分析

导读:本篇文章讲解 Linux文件系统与日志分析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、inode与block

1、inode和block概述

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

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

实际数据: 文件的内容

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

block(块)

  • 连续的八个扇区组成一个block(4K)
  • 是文件存取的最小单位

inode(索引节点)

  • 中文名“索引节点”,也叫i节点
  • 用于存储文件源信息

image-20220601142646723

2、inode的内容

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

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

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

2.1 inode包含文件的元信息

  • 文件的字节数
  • 文件的拥有者的UserID
  • 文件的GroupID
  • 文件的读、写、执行权限

用 stat 命令可以查看某个文件的inode信息。或者使用 ll -ih 查看大小和inode号

image-20220601143625671

上图stat中硬链接为什么会是1?但是并没有创建硬链接文件。

答:源文件也是代表一个硬链接文件。也是需要指向具体的inode号。

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

atime (access  time)   #最后一次访问文件或目录的时间

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

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

查看文件内容,可以看到数据最后一次访问的时间被修改了。

image-20220601163959483

修改文件内容也相当于修改了文件的大小,涉及到了文件的属性,所以也会进行变动。

image-20220601164321387

只修改文件属性,属性时间发生变化

image-20220601164923592

3、 inode的号码

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

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

④inode也会消耗硬盘空间,在格式化的时候,操作系统自动将硬盘分成两个区域,一个数据区,存放文件数据,另一个是inode区,存放inode所包含的信息,每个inode的大小,一般是128字节或256字节。

⑤通常情况下不需要关注单个inode的大小,而是重点关注inode总数, inode总数在格式化的时候基于给定了 ,执行 “df -i” 命令可以查看每个硬盘分区对应的inode总数和已经使用的inode数量。

image-20220601155352589

4、indode特殊作用

4.1 inode号与文件名

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

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

4.2 直接删除inode号码

删除inode节点只能使用fine组合去删除,不能直接使用rm去删除,因为rm是删除以文件名去删除的,就算输入对的一个inode号,rm也会把它们当成一个文件名。

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

find  ./  -inum   52366964 -delete

image-20220601171342280

image-20220601171521202

5、 创建一个文件,提示磁盘满了,然后使用df -hT 命令查看并没有满。这是什么原因?

答:

①有删除的进程占用磁盘空间(僵尸进程)

②inode节点满了。

演示inode节点耗尽的案例

先进行一个分区,将一块磁盘分出100M分给一块区,然后进行格式化,在格式化的时候,inode数量已经定好了,然后进行挂载到一个目录,下面进行查看挂载的磁盘大小和inode数量。

image-20220601154258570

可以看到,容量大小还有92M,可用的inode节点有51197个。

下面再开始在/data目录中进行批量创建文件。达到一个inode节点上限。

image-20220601154804476

然后再进行创建一个文件时,说磁盘没有空间,但是容量在上面看到才用到34%,怎么会没有容量呢。使用df -i 进行查看inode节点时,发现节点已经使用完了,无法再分配新的inode节点。

image-20220601155115793

二、恢复XFS类型的文件

分区时:

fdisk /dev/sdb跟 partprobe /dev/sdb

两者的区别:前者创建2T以下的分区,后者创建2T以上的分区。

1、XFS文件备份-xfsdump

xfsdump命令格式

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

xfsdump备份级别(默认为0)

  • 0:完全备份

  • 完全备份的意思将整个需要备份的文件进行备份

  • 1-9:增量备份

  • 只备份增加的部分(1-9时备份级别)

  • 好处:不需要每次都重新备份,消耗的资源小

xfsdump常用选项

-f: 指定备份文件目录
-l:(小写L)增量备份(1、2、3表示次数)

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

xfsdump使用限制

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

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

3、只能备份XFS文件系统

4、备份后的数据只能让xfssrestore解析

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

案例:使用xfsdump进行备份一个文件

将一各磁盘进行分区,然后格式化后进行挂载到一个目录下面,在目录下面复制一个新的文件到被挂载的目录下面。

image-20220601205923205

然后进行备份这个设备文件:/dev/sdb1(下面是交互式的,直接按Enter即可)

image-20220601210130419

可在/opt 下面查看到已经备份的文件

image-20220601210333131

2、XFS文件恢复-xfsrestore

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

使用rm 命令删除/dev/sdb1挂载的目录的文件

image-20220601214756679

使用xfsrestore进行数据恢复

image-20220601215125579

再次进行查看,被删除的数据已被找回

image-20220601215149321

三、日志文件分析

内核及系统日志由系统服务rsyslog统一管理,主要配置文件为:/etc/syslog.conf。配置文件里面定义了什么类型的文件存在什么日志里面。

*.info   #表示info等级及以上的所有等级的信息都写到对应的日志文件里。

mail.none    #表示某时间的信息不写到日志文件里(这是比如是邮件)

1、日志的功能

①用于 记录 系统、程序运行中发生的各种事件(用来追责)

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

③日志核心功能:用于 数据恢复

2、日志文件的分类

内核及系统日志

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

用户日志

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

程序日志

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

3、日志文件的位置介绍

3.1 日志保存位置

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

3.2 主要日志文件功能介绍

内核及公共消息日志:

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

计划任务日志:
/var/log/cron
#记录了cron计划任务的时间信息

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

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

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

4、日志消息的级别

数字等级越小,优先级越高、消息越重要。

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

5、日志记录的一般格式

image-20220603114945885

6、用户日志分析

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

  • /var/log/lastlog:最近的用户登录时间
  • /var/log/wtmp:用户登录、注销及系统开、关机事件
  • /var/run/utmp:当前登录的每个用户的详细信息
  • /var/log/secure:与用户验证相关的安全性时间

分析工具

  • users:命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话,如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数

    image-20220603123527998

  • who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理,who的默认输出包括用户名、终端类型、登录日期及远程主机

    image-20220603123727075

  • w:命令用于显示当前系统中的每个用户及其所运行的进程信息,比users、who输出的内容要丰富一些

    image-20220603123820529

  • last:命令用于查看成功登录到系统的用户记录,最近的登录情况将显示在最前面,通过last命令可以掌握linux主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵。

    image-20220603123905735

  • lastb:命令用于查询登录失败的用户记录,如登录的用户错误、密码不正确等情况将记录在案。登录失败的情况属于安全事件、表示可能有人在尝试猜解你的密码,除了使用lastb命令查看以外,也可以直接从安全日志文件/var/log/secure中获得相关信息。

7、程序日志分析

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

  • Web服务:/var/log/httpd

    • access.log 、error_log
  • 代理服务:/var/log/squid

    • access.log 、 cache.log
  • FTP服务:/var/log/xferlog

分析工具

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

8、日志管理策略

及时做好备份和归档

延长日志保存期限

控制日志访问权限

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

集中管理日志

  • 将服务器的日志发到统一的日志文件服务器
  • 便于日志信息的统一收集、整理和分析
  • 杜绝日志信息的意外丢失、恶意篡改或删除

四、总结

1、block和inode

block存储文件具体数据

inode存储文件属性。inode号在分区的时候就已经创建了一定的个数。inode号也占用磁盘空间,且inode号有一定的数量,如果用完,那么该分区将无法创建新的文件。

2、XFS类型文件

可以使用xfsdump将一个设备块(一块区域)进行备份,可以选择交互和免交互模式,并且在备份的时候可以选择完整备份还是增量备份(-l),然后使用xfsrestore进行备份恢复,恢复一整块分区。

3、日志

日志主要用来记录时间,查看内容进行排错,解决系统故障,或者用来数据恢复。

日志的位置有很多种,包括内核系统、用户、程序日志,他们都统一由系统服务(rsyslog)管理,在配置文件中:/etc/syslog.conf中。

日志存在级别,级别越低,优先级越高、数据越重要。
建新的文件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75060.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!