linux系统-深入学习文件系统与日志分析

目录

一、inode于block

inode于block概括
inode的内容
inode包含文件的元信息
用stat命令可以查看某个文件的inode信息
Linux系统文件三个主要的时间属性
目录文件架构 
用户通过文件名打开文件时,系统内部的过程
查看inode号码的实操
硬盘分区后的结构 👇
用户访问一个文件的简单流程👇
inode的大小
inode的特殊作用
如何删除特殊符号创建的文件名 

二、硬链接和软连接 

三、恢复误删除的文件

四、磁盘有空间,但是仍然无法写入新文件

 五、恢复XFS类型的文件

xfsdump使用限制👇

XFS类型文件恢复步骤实操👇

          从备份恢复​编辑

六、分析日志文件

日志的功能
日志文件的分类及其说明
日志分类表
日志的主要配置文件 👇
日志分析
Linux系统日志管理(journalctl 日志管理工具)


一、inode于block

1.inode于block概括

在Linux系统中,一切皆文件。文件系统中的两个关键概念是inode和block。每个文件都有一个唯一的inode号码,inode存储了文件的元数据信息,如权限、所有者、大小等,以及指向文件实际数据存储位置的指针。文件的实际数据存储在分配的块中,块是文件系统中分配存储空间的最小单位。因此,文件在文件系统中至少占用一个inode和一个或多个块

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

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

    block(块)

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

    inode(索引节点)

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

2.inode的内容

inode包含文件的元信息

  • inode number 节点号
  • 文件类型
  • 文件的读、写、执行权限
  • 文件属主的UID
  • 文件属组的GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

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

ls -i
 
stat  文件路径

 

ll -i     #查看inode号

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

atime(access time):最近访问
最后一次访问文件的时间

mtime(modify):最近更改
最后一次更改文件内容的时间

ctime(change time):最近改动
最后一次改变文件元信息的时间

目录文件架构 

目录也是一种文件

目录文件的结构

文件名1inode号码1
文件名2inode号码2
。。。。。。。。

ps:每一行称为一个目录项 

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

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

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

查看inode号码的实操

ls -i命令     #显示文件或目录的inode号码,以及其名称

比如:ls -i abc.txt 输出abc.txt文件的inode号码以及其名称


stat命令      #显示文件的详细信息,包括文件的inode号码

比如:stat abc.txt  输出abc.txt文件的详细信息,其中包括inode号码

硬盘分区后的结构 👇

用户访问一个文件的简单流程👇

  1. 用户访问文件时,系统首先通过文件名查找对应的inode号码。
  2. 通过inode号码,系统获取文件的元数据信息。
  3. 根据用户的访问权限,系统判断用户是否有权访问该文件。
  4. 如果用户有权访问文件,则系统根据inode中的指针信息找到相应的数据块,并读取文件内容。
  5. 如果用户没有权访问文件,则系统拒绝访问,并返回相应的错误信息。 

inode的大小

inode也会消耗硬盘空间

  1. 每个inode的大小
  2. 一般时128字节或256字节

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

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

inode的特殊作用

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

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名 

如何删除特殊符号创建的文件名 

find ./ -inum  67414967 -delete

find ./ -inum  67414967 -exec rm -rf {} \;

find ./ -inum  67414967| xargs rm -rf

  操作前先创建名叫 *12345,12345的文件👇

ls -i查看*12345的inode号 

在当前目录及其子目录中查找inode号为 67414967 的文件 ,然后-delete删除


二、硬链接和软连接 

链接文件👇

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

链接文件分类👇

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

 硬链接

ln 源文件 目标位置

创建符号链接(软链接)

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


三、恢复误删除的文件

恢复EXT类型的文件

编译安装extundelete软件包

安装依赖包👇

EXT类型文件恢复步骤

1.使用fdisk创建分区/dev/sdb1,格式化ext3文件系统;

 

2.安装依赖包 

3.编译安装extundelete 

 4.对extundelete做软连接                     👆        ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/

 5.模拟删除并执行恢复操作

 

 后面跟着deleted的就是删除的文件👆

四、磁盘有空间,但是仍然无法写入新文件

 原因:

  1. inode号被占满;
  2. 磁盘出现问题的情况又分为:磁盘坏道和文件系统出现问题

 1.使用fdisk创建分区/dev/sdc1,格式化ext4文件系统

 五、恢复XFS类型的文件

xfsdump使用限制👇
 

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

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

3.只能备份XFS文件系统;

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

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

XFS类型文件恢复步骤实操👇

1.fdisk先做/dev/sdc2的分区,然后xfs格式化

2.备份、模拟删除 

从备份恢复

六、分析日志文件

日志的功能

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

日志文件的分类及其说明

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

内核及系统日志

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

用户日志

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

程序日志

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

日志分类表

日志种类位置功能描述
内核及公共消息日志/var/log/messages

记录Linux内核消息及各种应用程序的公共日志信息,包括启动、Io错误、网络错误、程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息

计划任务日志/var/log/cron记录与系统定时任务相关的曰志
系统引导日志/var/log/dmesg记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
邮件系统日志/var/log/maillog记录邮件信息的曰志
用户登录日志/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件是二进制文件.不能直接用 vi 查看,而要使用 lastlog 命令查看
用户验证授权日志/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录。比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
用户登录注销和系统开机相关日志/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件,不能直接用 vi 查看,而要使用 last 命令查看
当前登录用户信息日志/var/run/utmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用 vi 查看,而要使用w、who、users等命令查看

more  /var/log/messages    //以查看message目录为例子


内核及系统日志文件中的每一行表示一条信息,每个信息由4个字段的固定格式组成:

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名称

子系统名称:发出消息的应用程序的名称

消息:消息的具体内容

日志的主要配置文件 👇

日志消息的级别表👇

                                                               

 设备字段说明 👇

auth用户认证时产生的日志
authprivssh、ftp等登录信息的验证信息
daemon一些守护进程产生的日志
ftpFTP产生的日志
ftpFTP产生的日志
markrsyslog服务内部的信息,时间标识
news网络新闻传输协议(nntp)产生的消息
syslog系统日志
uucpUnix-to-Unix Copy 两个unix之间的相关通信
console针对系统控制台的消息
cron系统执行定时任务产生的日志
kern系统内核日志
local0~local7自定义程序使用
mail邮件日志
user用户进程

日志分析

用户日志分析(保存了用户登录、退出系统等相关信息)

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

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

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

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

 日志分析工具的引入

users   查看当前用户名称
who     查看当前登录的用户、终端、登录时间、IP地址。
 W       查看当前登录的用户、终端、IP地址、登录时间、占用CPU的情况、进程等。
last      命令用于查询成功登录到系统的用户记录
lastb    命令用于查询登录失败的用户记录

程序日志分析

由相应的应用程序独立进行管理
Web服务:/var/log/httpd/

        access log        //记录客户访问事件

        error log        //记录错误事件

代理服务:/var/log/squid/*access.log、cache.log
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看

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

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

Linux系统日志管理(journalctl 日志管理工具)

journalctl:查看所有日志。默认情况下,仅显示本次启动的日志。
journalctl -r:以倒序方式查看日志,从尾部开始查看,通常用于查看最新的日志记录。
journalctl -k:仅查看内核日志,不显示应用程序日志。
journalctl -b:查看系统本次启动的日志。
journalctl -b -1:查看上一次启动的日志。
journalctl -n 20:显示最后20行日志。
journalctl -f:实时跟踪日志的变化,类似于 tail -f 命令。
journalctl -u nginx.service:查看指定服务(例如 nginx)的日志。
journalctl _PID=1:查看指定进程(例如PID为1的进程)的日志。
journalctl _UID=0 --since today:查看指定用户(例如UID为0的用户,即root用户)在当天产生的日志。
journalctl -xe:查看详细的日志,并在每条错误信息下附加解决问题的网址

举个🌰  journalctl -r:以倒序方式查看日志👇

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值