博客
关于我
Linux文件系统与日志分析
阅读量:528 次
发布时间:2019-03-08

本文共 3138 字,大约阅读时间需要 10 分钟。

Linux文件系统与日志管理

inode与Block基础知识

文件数据包含元信息与实际数据,文件存储在硬盘上,硬盘的最小存储单位是“扇区”,每个扇区存储512字节。一般连续八个扇区组成一个"块"(block),大小为4K,是文件存取的标准单位。

块是文件存取的最小单位。操作系统在读取文件时,会一次性连续读取多个扇区,即一个块接一个块地读取。

Conventional filesystems employment both inode和block来存储文件信息。每个file必须占用一个inode,同时至少占用一个block。inode中存储文件的元信息,例如创建者、创建日期、文件大小、文件权限等内容。文件名存存在目录中,Linux系统中一切皆文件,目录也是文件类型。

每个inode都有一个唯一的编号,操作系统用这个编号识别文件。文件名只是inode编号的别名,两者一一对应关系。每个inode包含128字节或256字节,系统内部不使用文件名,而是依赖 inode号码进行文件识别。

设备文件使用 ls -l 或 stat命令可以查看文件名对应的inode号码。文件的其他属性时间包括:

  • ctime:最后一次修改文件或目录属性的时间;
  • atime:最后一次访问文件或目录的时间;
  • mtime:最后一次修改文件内容的时间。

inode也会占用硬盘空间,因此在格式化硬盘时,会将硬盘分为数据区和inode区。每个inode通常为128字节或256字节。系统中可以通过df -i命令查看分区中的inode总数和已使用数量。创建大量文件时,如果超过预设的inode数量,可能会触发inode耗尽故障。

inode节点数耗尽的故障处理

遇到inode节点数不足的情况,可以手动扩展或采取以下措施恢复节点数量。一种常用方法是使用mkfs.ext3或mkfs.ext4格式化分区(例如选择以 /dev/sdb1 为示例),然后恢复节点数。

使用fdisk创建分区 /dev/sdb1 并格式化文件系统:

# 创建分区并格式化fdisk /dev/sdbn30Mwmkfs.ext3 /dev/sdb1

挂载分区并创建测试目录:

mkdir /testmount /dev/sdb1 /test

使用df -i查看当前分区的inode总数:

df -i /dev/sdb1

模拟超过限额的文件创建:

for ((i=1; i<=7680; i++)); do touch /test/file$i; done

删除占用太多节点的文件并恢复节点数:

rm -rf /test/*df -i /dev/sdb1

文件恢复(EXT类型文件系统)

EXT类型文件系统是 Linux 最常用的文件系统类型,包括 EXT3 和 EXT4。EXTundelete 是一个开源数据恢复工具,支持 EXT3 和 EXT4 文件系统。

先创建挂载点并安装依赖软件包:

# 给挂载设备挂载镜像mount /dev/cdrom /mnt

安装必要软件包:

yum -y install e2fsprogs-devel e2fsprogs-libs

将软件包解压并编译安装:

cd /testwget https://源码链接tar jxf extundelete-0.2.4.tar.bz2./configure --prefix=/usr/local/extundeletemakemake install

将某些工具命令链接到系统全局路径:

ln -s /usr/local/extundelete/bin/* /usr/bin/

模拟删除文件并恢复:

# 创建文件echo a > aecho a > becho a > cecho a > d# 删除文件rm -rf a b c d# 执行恢复命令extundelete /dev/sdb1 --inode 2

恢复所有文件并测试:

extundelete /dev/sdb1 --restore-allls RECOVERED_FILES/

XFS文件系统备份与恢复

CentOS 7 系统默认使用 XFS 文件系统。可以通过 xfsdump 和 xfsrestore 工具进行备份与恢复。

创建分区并格式化:

# 使用fdisk创建分区并格式化fdisk /dev/sdbmkfs.xfs /dev/sdb1

挂载分区并创建工作目录:

mkdir /datamount /dev/sdb1 /data

备份关键系统文件:

cp /etc/passwd .

使用 xfsdump 做完整备份:

xfsdump -f /opt/dump_sdb1 /dev/sdb1

模拟数据丢失并恢复:

rm -rf .xfsrestore -f /opt/dump_sdb1 /data/

查看恢复结果:

ls /data

日志文件(Log Files)

日志的功能

记录系统运行中发生的各种事件,不同类型的日志记录有不同的内容和目的。有助于系统故障的诊断和解决。

日志文件的分类

内核及系统日志

统一由 rsyslog 统管,主要日志文件位于 /var/log/ 目录下。主配置文件为 /etc/rsyslog.conf。

内核日志消息优先级:单个事件的优先级由数字决定(数字越小,优先级越高)。

用户日志

  • /var/log/secure:记录用户登录和退出日志;
  • /var/log/lastlog:记录每个用户最近一次登录;
  • /var/log/wtmp:记录用户登录、注销及系统启动和停机事件;
  • /var/log/btmp:记录失败的登录尝试。

应用程序日志

每个程序独立管理,格式不统一,通常记录错误、警告信息等。常见日志路径:

  • Web 服务:/var/log/httpd/;
  • 代理服务:/var/log/squid/;
  • 数据库日志:/var/lib/mysql/。

常用日志分析工具

  • last:查询用户登录记录;
  • lastb:查询用户失败登录记录;
  • grep:通过文本过滤搜索关键词;
  • awk:处理日志文件并输出指定格式的信息;
  • Web 化工具:Webalizer、Awstats。

主要日志文件介绍

  • /var/log/messages:记录内核和应用程序的公共日志;
  • /var/log/cron:记录 crond 任务事件;
  • /var/log/dmesg:记录系统引导过程中的事件;
  • /var/log/maillog:记录邮件系统活动;
  • /var/log/httpd/:记录 Web 服务状态;
  • /var/log/squid/:记录网络代理状态;
  • /var/log/apache/:记录 Apache Web 服务状态。

日志记录格式

日志文件格式因系统和服务而异,但通常包含以下信息:

  • 时间戳:记录文件修改时间或事件发生时间;
  • 用户 ID:记录操作用户或事件所属用户;
  • 消息内容:详细说明事件描述或错误信息。

日志管理策略

及时作好备份与归档

  • 定期备份重要日志文件,避免数据丢失。

延长日志保存期限

  • 修改 /etc/logrotate.conf 配置文件,延长日志保留期限或增加日志文件大小限制。

控制日志访问权限

  • 确保日志文件及相关目录只允许 Subset privileged 用户访问;
  • 修改文件权限,防止未经允许的访问。

关注敏感信息

  • 注意日志中可能包含的个人信息或系统凭证;
  • 定期清理旧日志文件,杜绝数据泄露风险。

集中日志管理

  • 将各服务器日志文件通过网络传输至统一日志服务器;
  • 使用日志分析工具收集、整理和筛选日志信息,便于统一处理和分析。

转载地址:http://rkziz.baihongyu.com/

你可能感兴趣的文章
MQTT 持久会话与 Clean Session 详解
查看>>
MQTT工作笔记0007---剩余长度
查看>>
MQTT工作笔记0009---订阅主题和订阅确认
查看>>
Mqtt搭建代理服务器进行通信-浅析
查看>>
MS Edge浏览器“STATUS_INVALID_IMAGE_HASH“兼容性问题
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
MSBuild 教程(2)
查看>>
msbuild发布web应用程序
查看>>
MSB与LSB
查看>>
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
MsEdgeTTS开源项目使用教程
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL数据库迁移到Oracle(二)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>