> 文章列表 > 文件系统和日志分析

文件系统和日志分析

文件系统和日志分析

文件系统

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

inode和block概述

文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block (块)
连续的八个扇区组成一个 block(4K)
【这个大小可以修改,在磁盘格式化的时候修改。mkfs -b size=1024指定 (1024为字节数,最小512,最大为65536即64k)修改完后挂载才显示】
是文件存取的最小单位
inode (索引节点)
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
文件系统和日志分析
-b 指定块大小(man mkfs.xfs查看)
文件系统和日志分析

blockdev命令

文件系统和日志分析
这里可以使用blockdev --getbsz来查看一个磁盘的块的大小
文件系统和日志分析

inode的内容

  • 文件的字节数
  • 文件的拥有者的user id
  • 文件的group id
  • 文件的读,写,执行权限
  • 文件的时间戳
    注意,inode不包含文件名,文件名存在目录当中
    可以用stat命令去查看文件的inode信息
    ls -i查看inode号
    文件系统和日志分析
    其中时间戳
    Linux系统文件三个主要的时间属性
    ctime(change time)最近改动
    最后一次改变文件或目录 (属性) 的时间
    atime(access time)最近访问
    最后一次访问文件或目录的时间
    mtime(modify time)最近更改
    最后一次修改文件或目录 (内容)的时间

目录文件的结构
目录也是一种文件
目录文件的结构----会把文件名和inode号一 一对应起来
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称
文件系统和日志分析
文件系统和日志分析

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

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

文件系统和日志分析

inode的大小

  • inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
  • 格式化文件系统时确定inode的总数
  • 使用df-i命令可以查看每个硬盘分区的inode总数和已经使用的数量
    文件系统和日志分析
    注意:inode数量用完,则就无法继续写入文件,不管磁盘空间还有空余空间

文件系统和日志分析

文件系统和日志分析
文件系统和日志分析

磁盘仍有空间但无法写入

  • inode号不足,删除无用的文件来空余inode号
  • 磁盘出问题了,用badblocks -v 来检测
  • 文件系统出问题了,用fack尝试检测修复

inode的特殊作用

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

  • 当文件名包含特殊字符,例如"/"等,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
    注意使用vi编辑器编辑文件时,inode号会变化,因为vi编辑器时会生成新的.swp隐藏文件用来编辑完成后替换原文件,而echo写入inode号不会发生变化

日志文件

日志的功能

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

日志文件的分类

  • 内核及系统日志
    由系统服务rsyslog统一进行管理,日志格式基本相似
    主配置文件/etc/rsyslog.conf
  • 用户日志
    记录系统用户登录及退出系统的相关信息
  • 程序日志
    由各种应用程序独立管理的日志文件,记录格式不统一

日志保存位置

默认位于: /var/log目录下

主要日志文件介绍

  • 内核及公共消息日志
    /var/log/messages------记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、 网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以以从该日志文件中获得相关的事件记录信息。

  • 计划任务日志
    /var/log/cron-----记录crond计划任务产生的事件信息

  • 系统引导日志
    /var/log/dmesg------记录Linux系统在引导过程中的各种事件信息

  • 邮件系统日志
    /var/log/maillog----记录进入或发出系统的电子邮件活动

  • 用户登录日志
    /var/log/lastlog;------记录每个-用户最近的登录事件
    /var/log/secure;-------记录用户认证相关的安全事件信息
    /var/log/wtmp;-------记录每个用户登录、注销及系统启动和停机事件
    /var/run/btmp --------记录失败的、错误的登录尝试及验证事件

  • rpm包列表日志
    /var/log/rpmpkgs--------记录系统中安装的各rpm包列表信息

日志消息的级别

数字等级越小,优先级越高,消息越重要

级号 消息 级别 说明
0 EMERG 紧急 会导致主机系统不可用的情况,如系统崩溃
1 ALERT 警告 必须马上采取措施解决的问题,如数据库被破坏
2 CRIT 严重 比较严重的情况,如硬盘错误,可能会阻碍程序的部分功能
3 ERR 错误 运行出现错误,不是非常紧急,尽快修复的
4 WARNING 提醒 可能会影响系统功能的事件,需要提醒用户的重要事件。不是错误,如磁盘用了85号等
5 NOTICE 注意 不会影响系统但值得注意,但是需要注意的事件。无需处理
6 INFO 信息 一般信息,正常的系统信息
7 DEBUG 调试 程序或系统调试信息等,包含详细开发的信息,调试程序时使用

不常用的级别:none:没有优先级,不记录任何日志消息

日志的一般格式

more /var/log/messages

文件系统和日志分析

日志级别及记录服务内容由/etc/rsyslog.conf决定

格式:
文件系统和日志分析

其中常用的日志设备类型

日志设备类型 解释
auth 用户认证时产生的日志
authpriv ssh、ftp等登录信息的验证信息
daemon 一些守护进程产生的目志
ftp ETP产生的日志
lpr 打印相关活动
mark rsyslog服务内部的信息,时间标识
news 网络新闻传输协议(nntp) 产生的消息。
syslog 系统日志
uucp Unix-to-Unix Copy 两个unix之间的相关通信
console 针对系统控制台的消息。
cron 系统执行定时任务产生的日志。
kern 系统内核日志
local0~local7 自定义程序使用
mail 邮件日志
user 用户进程

举例:

  • mail.info /var/log/maillog ------比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中
  • mail.=info /var/loq/mailloq --------明确指定日志级别为info,保存至/var/log/maillog
  • mail.!info /var/loq/maillog -------除了指定的日志级别(info) 所有日志级别信息,保存至/var/log/mailloq
  • *.info /var/log/maillog-------所有facility的info级别,保存至/var/log/maillog
  • mail.* var/log/maillog ------- mal的所有日志级别信息,都保存至/var/log/maillog
  • mail.notice;news.info /var/log/maillog ---------mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog
  • mail,news.crit -/var/log/maillog ----------mail和nes的crit以上的日志级别保存/var/log/maillog中;"-"代表异步模式你处理你的,我记录我的,即上一个日志没有记录完,继续记录的同时可以又记录下个日志
    同步模式(一起做上一个做完做下一个)

rsyslog收集apache(阿帕奇即httpd)日志

先vim /etc/httpd/conf/httpd.conf
文件系统和日志分析
文件系统和日志分析
再vim /etc/rsyslog.conf
文件系统和日志分析

用户日志分析

/var/log/lastlog;------记录每个-用户最近的登录事件
/var/log/secure;-------记录用户认证相关的安全事件信息
/var/log/wtmp;-------记录每个用户登录、注销及系统启动和停机事件
/var/run/btmp --------记录失败的、错误的登录尝试及验证事件
/var/run/utmp -----------当前登录的每个用户的详细信息

分析工具

  • users 、who、w、last、 lastb
  • last 命令用于查询成功登录到系统的用户记录
  • lastb 命令用于查询登录失败的用户记录

程序日志分析

由相应的应用程序独立进行管理
Web服务: /var/log/httpd/
access_log//记录客户访问事件
error_log//记录错误事件
代理服务: /ar/log/squid/
access.log、cache.log
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awksed文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具

日志管理策略

  • 及时作好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限
    日志中可能会包含各类敏感信息,如账户、口令等
  • 集中管理日志
    将服务器的日志文件发到统一的日志文件服务器
    便于日志信息的统一收集、整理和分析
    杜绝日志信息的意外丢失、恶意篡改或删除

rsyslog配置日志服务器来收集日志

关闭服务端和客户端的防火墙,selinux
文件系统和日志分析

修改客户端配置文件,并启动服务

vim /etc/rsyslog.conf

文件系统和日志分析

再在同一个文件中找到RULES这一行,在结尾添加命令

变量 解释
%timestamp% 时间戳
%fromhost-ip% 接收的信息来自于哪个节点的 IP
%hostname% 主机名
%syslogseverity-text% 日志等级
%syslogtag% 服务进程
%msg% 日志内容
接收方 IP 前面一个 @ 表示 TCP 传输,两个 @表示 UDP 传输

文件系统和日志分析
重启rsyslog

文件系统和日志分析

转到服务器端编辑

取消注释

文件系统和日志分析
添加以下内容
文件系统和日志分析

重启rsyslog
文件系统和日志分析
创建目录
文件系统和日志分析
验证
客户端
文件系统和日志分析

服务端
文件系统和日志分析

journalctl日志管理工具(centos7专有)

是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息
Systemd统一管理所有unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)
日志的配置文件是/etc/systemd/journald.conf

选项 解释
-r 倒序查看,从尾部看(尾部为最新的)
-k 查看内核日志,不显示应用日志
-b -0 查看系统本次启动的日志
-b -1 查看上一次启动的日志(需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志)
-n 20 [-f] 显示尾部指定行数的日志;-f 实时跟踪
journalctl _PID=1 查看指定pid号的进程的日志
journalctl _UID=0 --since today 查看指定uid号的用户的日志;–since指定日期
-xe -x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址;-e pager-end 从末尾开始看
-u [-f] 服务名 查看某个服务的日志;-f 实时跟踪