博客
关于我
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/

你可能感兴趣的文章
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
MySQL 导出数据
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>
MySQL 常用列类型
查看>>
mysql 常用命令
查看>>
Mysql 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>
MySQL 常见的开放性问题
查看>>