Linux文件系统和日志

194 阅读6分钟

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号
Ls -i
Stat

image.png 每个文件系统(分区)inode数量是有限的可通过df -i 查看

在工作场景中有可能会遇到一些带有特殊字符的文件,但你又需要删掉这个文件,但用了rm却删不掉,可以通过删掉它的inode号删掉它 image.png find 目录 -inode -delete 或
find 目录 -inode -exec rm -rf{}; 或
find 目录 -inode | xargs rm -rf

image.png ##移动文件或修改文件名,使用echo修改文件内容都不会改变inode号
##使用vim编辑器修改文件会改变inode,因为vim编辑器是会替换原文件的

inode 的大小

  • inode也会消耗硬盘空间

    • 每个inode的大小一般是128字节或256字节
  • 格式化文件系统时确定inode的总数

    • 如果磁盘还有空间,但inode号被全部占用,也无法创建新文件。
    • inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
  • 使用 "df -i" 命令可以查看每个硬盘分区的inode总数和已经使用的数量 image.png

硬链接与软连接

image.png 创建链接文件:

 ln 源文件 目标文件               //创建硬链接文件
 ln -s 源文件或目录 目标文件       //创建软连接文件
复制代码

注意:
创建软链接时,源文件必须使用绝对路径。

日志

日志的功能:
日志一般用于记录系统程序运行时发生的各种事件,所以阅读日志有助于排错和解决发生的系统故障

日志有三种类别
  1. 内核及系统日志
    #由系统服务rsyslog统一管理

  2. 用户日志
    记录系统用户登陆和登出的信息

  3. 程序日志
    由各种应用程序独立管理的日志文件

日志默认保存在/var/log目录下

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

0 EMERG(紧急):会导致主机系统不可用的情况。如系统崩溃

1 ALERT(警告):必须马上采取措施解决的问题。如数据库被破坏

2 CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能

3 ERR(错误):运行出现错误。不是非常紧急,尽快修复的

4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。无需处理

6 INFO(信息):一般信息。正常的系统信息

7 DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时使用

none:没有优先级,不记录任何日志消息。

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

  • /var/log/lastlog:最近都用户登录事件。二进制文件,使用 lastlog 命令查看。
  • /var/log/secure:与用户验证有关的安全性事件。
  • /var/log/wtmp:用户登录、注销,及系统开、关机事件。二进制文件,使用 last 命令查看。
  • /var/run/utmp:当前登录的每个用户的详细信息。二进制文件,使用w、who、users等命令查看。

分析工具:

  • users、who、w、last、lastb

#users:查询最近三次登录的用户信息。

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

#who:查看当前登录的用户、终端、登录时间、IP地址。

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可

以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用

户名、终端类型、登录日期及远程主机。 image.png

#w:查看当前登录的用户、终端、IP地址、登录时间、占用CPU的情况、进程等。

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

image.png

#last: 读取 /var/log/wtmp 文件,显示登录系统的用户信息。

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

image.png

image.png

#lastb:读取 /var/log/btmp 文件,显示登入系统失败的用户信息。

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

image.png