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

本文详细介绍了Linux文件系统的inode和block概念,如何查看inode号码,inode的大小,以及inode耗尽的处理。此外,还讲解了软链接和硬链接的使用,以及Linux日志文件的分析,包括日志消息级别、rsyslog服务和日志管理工具的使用。
摘要由CSDN通过智能技术生成

目录

一、inode和block概述

二、inode的内容

三、查看文件的 inode 号码

四、 inode的大小

五、文件存储总结

六、inode 节点耗尽故障处理 

七、恢复误删除的 ext 格式文件

八、恢复误删除的 xfs 格式文件 

九、 软链接和硬链接

1、 概念

2、命令管理 – ln

十、Linux 日志文件分析

1、 日志简介

2 、常见的一些日志文件

内核及公共消息日志

计划任务日志

系统引导日志

邮件系统日志 

 用户登录日志

3 、日志消息的级别

4 、rsyslog 日志管理服务

5 、日志分析工具

6 、日志轮替 – logrotate

十一、总结


一、inode和block概述

文件是存储在硬盘上的,硬盘的最小存储单位叫做 “扇区” (sector),每个扇区存储 512 字节。一般连续八个扇区组成一个 “块” (block),一个块是 4K 大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。
  文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在 “块” 中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做 inode。 因此,一个文件必须占用一个 inode,并且至少占用一个 block。inode 不包含文件名,文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
  每个 inode 都有一个号码,操作系统用 inode 号码来识别不同的文件。Linux 系统内部不使用文件名,而使用 inode 号码来识别文件。对于系统来说,文件名只是 inode 号码便于识别的别称,文件名和 inode 号码是一一对应关系,每个 inode 号码对应一个文件名。所以当用户在 Linux 系统中试图访问一个文件时,系统会先根据文件名去查找它对应的 inode 号码,通过 inode 号码获取 inode 信息,根据 inode 信息看该用户是否具有访问这个文件的权限,如果有就指向对应的数据 block,并读取数据。

二、inode的内容

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

  • 文件的字节数
  • 文件拥有者的 User ID
  • 文件的 Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共有三个:
简写 全名 中文名 含义
atime access time 访问时间 文件内容最后被访问的时间
mtime modify time 修改时间 文件内容最后被修改的时间
ctime change time 变化时间 文件的元数据发生变化的时间(比如权限,所有者等)
  • 链接数,即有多少文件名指向这个 inode
  • 文件数据 block 的位置

三、查看文件的 inode 号码

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

ls -i 文件名
stat 文件名

 示例:

[root@localhost ~]# touch test1
[root@localhost ~]# ls -i test1
134315755 test1
[root@localhost ~]# stat test1
  文件:"test1"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:803h/2051d	Inode:134315755   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-04-17 22:45:06.440591747 +0800
最近更改:2022-04-17 22:45:06.440591747 +0800
最近改动:2022-04-17 22:45:06.440591747 +0800
创建时间:-

四、 inode的大小

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

[root@localhost ~]# df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda3      50124288  157092 49967196       1% /
devtmpfs         478743     389   478354       1% /dev
tmpfs            482689       1   482688       1% /dev/shm
tmpfs            482689    1476   481213       1% /run
tmpfs            482689      16   482673       1% /sys/fs/cgroup
/dev/sda2        256000      10   255990       1% /home
tmpfs            482689       6   482683       1% /run/user/42
tmpfs            482689      19   482670       1% /run/user/0
/dev/sr0              0       0        0        - /run/media/root/CentOS 7 x86_64

 

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

  • 文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用
  • 移动文件或重命名文件,只是改变文件名,不影响 inode 号码
  • 打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名
  • 文件数据被修改保存后,会生成一个新的 inode 号码
[root@localhost ~]# touch test
[root@localhost ~]# ls -i
134315715 anaconda-ks.cfg       134315755 test1   67844519 视频  202716132 下载
134315723 initial-setup-ks.cfg   67844518 公共       81779 图片  202716133 音乐
134315757 test                      81778 模板   134315767 文档  134315766 桌面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值