目录
前言
在处理linux系统故障时。故障的症状是最容易发现的,导致这一故障的原因才是解决问题的关键,所以熟悉常见的日志文件,能进行分析与排除,才能更快速的解决问题。
一、inode和block概述
1. block
- 文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。
- 操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。一般连续八个扇区组成一个"块”(block),一个块是4K大小,是文件存取的最小单位。
2.inode
- 文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做 inode。
- 一个文件必须占用一个inode,并且至少占用一个block。inode 不包含文件名。文件名是存放在目录当中的。
- 每个inode都有一个号码,操作系统用 inode 号码来识别不同的文件。Linux 系统内部不使用文件名,而使用 inode 号码来识别文件。对于系统来说,文件名只是 inode 号码便于识别的别称,文件名和 inode 号码是一一对应关系,每个 inode 号码对应一个文件名。
3. 访问文件的流程
- 当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的 inode 号码。
- 通过 inode 号码,获取 inode 信息。
- 根据 inode 信息,查看该用户是否具有访问这个文件的权限,如果有就指向相对应的数据block,并读取数据;没有则拒绝访问。
4. inode 的内容
inode 包含很多文件元信息,不包含文件名:
- 文件的字节数
- 文件拥有者的 UserID
- 文件的 GroupID
- 文件的权限
- 文件的时间戳等
ls -i查看inode节点信息:
stat 命令会更详细:
Linux 系统文件有三个主要的时间属性,如下所示:
格式 | 说明 |
---|---|
ctime | 最后一次改变文件或目录(属性)的时间 |
atine | 最后一次访问文件或目录的时间 |
mtime | 最后一次修改文件或目录(内容)的时间 |
5. inode 的大小
- inode 也会消耗硬盘空间,每个 inode 大小一般是128字节或256字节。
- 格式化文件系统时确定inode总数。
- 使用“df -i”可以查看每个硬盘分区的 inode 总数和已经使用的数量。
[root@localhost ~]#df -iTh
文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 xfs 18M 164K 18M 1% /
devtmpfs devtmpfs 468K 437 468K 1% /dev
tmpfs tmpfs 472K 1 472K 1% /dev/shm
tmpfs tmpfs 472K 1.6K 470K 1% /run
tmpfs tmpfs 472K 16 472K 1% /sys/fs/cgroup
/dev/sdb1 xfs 10M 83 10M 1% /home
/dev/sda1 xfs 250K 341 250K 1% /boot
tmpfs tmpfs 472K 6 472K 1% /run/user/42
tmpfs tmpfs 472K 17 472K 1% /run/user/0
/dev/sr0 iso9660 0 0 0 - /run/media/root/CentOS 7 x86_64
6. inode 的特殊作用
由于inode号码与文件名分离,导致一些 Unix/Linux 系统具有以下的现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除 inode,就可以删除文件。
- 移动或重命名文件时,只改变文件名,不影响 inode 号码。
- 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名。
- 文件数据被修改保存后,会生成-一个新的inode 号码。
通过 inode 号删除文件:
find ./ -inum 52305140 -exec rm -i {} \;
find ./ -inum 50464299 -delete
二、链接文件
- 为文件或目录建立链接文件
- 链接文件分类
软链接 | 硬链接 | |
---|---|---|
删除原文件 | 失效 | 仍旧可用 |
使用范围 | 使用文件或目录 | 只可用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统 | 必须与原始文件在同一个文件系统 |
- ln 命令创建硬链接:
ln [源文件] [目标]
- ln -s 命令创建软链接:
ln -s [源文件或目录] [目标文件或目录]
三、分析日志文件
内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf,Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og/下。
1.日志文件的分类
- 内核及系统日志:由系统服务 rsyslog 统一管理,根据其主配置文件 /etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中相当一部分程序会把自己的日志文件交由rsyslog日志管理,因此这些格式基本一致。
- 用户日志:记录 Linux 系统用户登录及退出系统的相关信息。
- 程序日志:用于记录本程序运行过程中的各种时间信息,由各种应用程序独立管理的日志文件,因此记录格式不统一。
2.常见的日志文件
日志文件 | 说明 |
---|---|
/var/log/messages | 内核及公共消息日志:记录 Linux 内核消息及各种应用程序的公共日志信息 |
/var/log/cron | 计划任务日志:记录crond计划任务产生的事件信息 |
/var/log/dmesg | 系统引导日志:记录Linux 系统在引导过程中的各种事件信息 |
/var/ log/maillog | 邮件系统日志:记录进入或发出系统的电子邮件活动 |
/var/log/secure | 用户登录日志:记录用户认证相关的安全事件信息 |
/var/log/lastlog | 记录每个用户最近的登录事件 |
/var/log/wtmp | 记录每个用户登录、注销及系统启动和停机事件 |
/var/run/btmp | 记录失败的、错误的登录尝试及验证事件 |
3.日志的级别
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要) :
0 EMERG(紧急):会导致主机系统不可用的情况。
1 ALERT(警告):必须马上采取措施解决的问题。
2 CRIT(严重):比较严重的情况。
3 ERR (错误) :运行出现错误。
4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。
5 NOTICE (注意) :不会影响正常功能,但是需要注意的事件。
6 INFO(信息):一般信息。
7 DEBUG(调试):程序或系统调试信息等。
4.常见日志分析命令
users命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。
who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机。
w命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的输出内容要丰富一些。
last命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵。
lastb命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。
总结
对于日志管理:
及时做好备份和归档
延长日志保存期限
控制日志访问权限
集中管理日志