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

文章目录

  • 一、inode和block
    • 1.inode和block概述
    • 2.inode的内容
      • 2.1inode包含文件的元信息
      • 2.2用stat命令可以查看某个文件的inode信息
      • 2.3Linux系统文件的三个主要的时间属性
      • 2.4目录文件
    • 3.软/硬连接对应的inode值
    • 4.inode值大小
    • 5.inode的特殊作用
  • 二、日志文件
    • 1.日志的功能
    • 2.日志文件的分类
    • 3.日志保存位置与介绍
    • 4.日志消息的优先级别
    • 5.journalctl工具


一、inode和block

1.inode和block概述

文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)

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

inode(索引节点)

  • 中文译名为“索引节点”,也叫i节点
  • 用于存储文件元信息
    一个文件必须占用一个inode,但至少占用一个block

2.inode的内容

2.1inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳

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

示例:stat benet

深入理解Linux文件系统与日志分析_第1张图片

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

Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
Modify Time:简写为mtime,表示文件内容的修改时间,,当文件的数据内容被修改时,更新这个时间
Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间

2.4目录文件

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

每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称
示例:cp文件,inode值变化
深入理解Linux文件系统与日志分析_第2张图片

3.软/硬连接对应的inode值

深入理解Linux文件系统与日志分析_第3张图片
示例:
深入理解Linux文件系统与日志分析_第4张图片
上图可以发现硬链接的inode值与源文件相同,而软链接的inode值与原文件不同
由此可以看出软、硬链接的指方向不同,软链接指向原文件文件名,硬链接指向块设备。

4.inode值大小

  • inode也会消耗硬盘空间
    • 每个inode的大小
    • 一般是128字节或256字节
  • 格式化文件系统时确定inode的总数
  • 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
    inode也会消耗磁盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个时inode区,存放inode所包含的信息。
    每个inode节点的大小一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode table的。
    查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令查看。

5.inode的特殊作用

由于inode号码与文件名分离,导致Linux系统具备一下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用
2.移动文件或重命名文件,只是改变文件名,不影响inode号码
3.打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名
4.文件数据被修改保存后,会生成一个新的inode号码
可以使用:
find ./ -inum [inode号] -exec rm -i {} ;

find ./ -inum [inode号] -delete
进行删除
如下图:
深入理解Linux文件系统与日志分析_第5张图片


二、日志文件

1.日志的功能

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

2.日志文件的分类

内核及系统日志
由系统服务reyslog统一进行管理,日志格式基本类似
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一

3.日志保存位置与介绍

Linux操作系统本身和大部分服务器程序的日中文件都默认放在/var/log/下。一部分程序公用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序由于日志文件不止一个,所以会在/var/log/下建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速定位日志文件。

下面介绍常见的一些日志文件:
/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、、I/O错误。网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
/var/log/cron:记录crond计划任务产生的事件信息
/var/log/dmedg:记录Linux操作系统在引导过程中的各种事件信息
/var/log/maillog:记录进入或发出系统的电子邮件活动
/var/log/lastlog:记录每个用户最近的登录事件
var/log/secure:记录用户认证相关的安全事件信息
/var/log/wtmp:记录每个用户登录。注销及系统启动和停止事件
/var/log/btmp:记录失败的、错误的登录尝试及验证事件

4.日志消息的优先级别

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

0    EMERG(紧急):会导致主机系统不可用的情况
1    ALERT(警告):必须马上采取措施解决的问题
2    CRIT(严重):比较严重的情况
3    ERR(错误):运行出现错误
4    WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件
5    NOTICE(注意):不会影星正常功能,但是需要注意的事件
6    INFO(信息):一般信息
7    DEBUG(调试):程序或系统调试信息等

一般来说,越为重要的程序或服务,理应保存优先级越低的日志信息

5.journalctl工具

journalctl工具是CentOS-7才有的工具
systemd同一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件/etc/systemd/journald.conf

journalctl -b            //查看本次启动的日志
journalctl -k            //查看内核日志
journalctl |  wc -l      //查看系统总共的日志
journalctl -u [服务名]    //查看某个服务的报错
journalctl -p [日志等级]  //查看不同等级的日志
journalctl -xe           //查看最近报错的日志
-x:从结尾开始看
-e:提供问题相关的网址

你可能感兴趣的:(linux,服务器,centos)