博客
关于我
Linux文件系统与日志分析(inode、inode节点耗尽故障处理、文件备份和恢复、日志文件管理)
阅读量:380 次
发布时间:2019-03-05

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

Linux文件系统与日志分析

一、inode和block概述

1.文件和扇区

文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。操作系统读取硬盘时,一次性读取多个扇区,即一个块一个块的读取。

2.块(block)
  • 一般连续八个扇区组成一个“块”(block),一个块是4K大小,是文件存取的最小单位。
  • 操作系统读取硬盘时,一次性读取多个扇区,即一个块一个块的读取。
3.文件数据
  • 文件数据包括实际数据与元数据(类似文件属性)。
  • 文件数据存储在“块”中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。

二、inode(索引节点)

1.inode的内容
  • 包含文件的元信息:
    • 文件的字节数
    • 文件拥有者的User ID
    • 文件的Group ID
    • 文件的读、写、执行权限
    • 文件的时间戳
2.inode的号码
  • 用户通过文件名打开文件时,系统内部的过程:
  • 找到这个文件名对应的inode号码
  • 通过inode号码,获取inode信息
  • 根据inode信息,找到文件数据所在的block,读出数据
3.inode的大小
  • inode也会消耗硬盘空间
  • 每个inode的大小一般是128字节或256字节
  • 格式化文件系统是确定了inode的总数
  • 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
4.inode的特殊作用

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:

  • 文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;
  • 移动文件或重命名文件,只是改变文件名,不影响inode号码;
  • 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;
  • 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;
  • 文件数据被修改保存后,会生成一个新的inode号码。

三、模拟inode节点耗尽故障处理

1.步骤总汇
  • 使用fdisk创建分区/dev/sdb1,分区大小30M即可
  • 格式化文件系统:mkfs.ext4 /dev/sdb1
  • 创建测试目录:mkdir /test
  • 挂载分区:mount /dev/sdb1 /mnt
  • 模拟inode节点耗尽故障:
    for ((i=1; i<=7680; i++)); do touch /test/file$i; done
  • 删除文件并恢复:
    rm -rf /test/* df -i /test
  • 2.演示
  • 使用fdisk创建分区/dev/sdb1,格式化并挂载
  • 模拟inode节点耗尽故障
  • 删除恢复文件
  • 四、EXT类型文件恢复

    1.安装依赖包
    yum -y install e2fsprogs-devel e2fsprogs-libs
    2.编译安装extundelete
    cd /testwget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar jxvf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4./configure --prefix=/usr/local/extundeletemakemake installln -s /usr/local/extundelete/bin/* /usr/bin/
    3.模拟删除并恢复文件
    cd /testecho a > aecho a > becho a > cecho a > dextundelete /dev/sdb1 --inode 2rm -rf a bextundelete /dev/sdb1 --restore-allls RECOVERED_FILES/

    五、xfs 类型文件备份和恢复

    1.备份命令
    xfsdump -f /opt/dump_sdb1 /dev/sdb1
    2.恢复命令
    xfsrestore -f /opt/dump_sdb1 /data/

    六、系统日志

    1.日志文件
    • 内核及公共消息日志:/var/log/messages
    • 计划任务日志:/var/log/cron
    • 系统引导日志:/var/log/dmesg
    • 邮件系统日志:/var/log/maillog
    • 用户登录日志:/var/log/security
    • 用户登录日志:/var/log/lastlog
    • 用户登录日志:/var/log/wtmp
    • 用户登录日志:/var/run/btmp
    2.内核及系统日志
    • 系统服务:rsyslog
    • 配置文件:/etc/rsyslog.conf
    3.日志记录的一般格式
    时间戳 运行域名 用户ID  PID  细节信息
    4.用户日志分析
    • /var/log/lastlog:最近的用户登录事件
    • /var/log/wtmp:用户登录、注销及系统开、关机事件
    • /var/log/secure:与用户验证相关的安全性事件
    5.程序日志分析
    • Web服务:/var/log/httpd/
      • access_log:记录客户访问事件
      • error_log:记录错误事件
    • 代理服务:/var/log/squid/
      • access.log:记录客户访问事件
      • cache.log:记录缓存信息
    6.日志管理策略
    • 及时作好备份和归档
    • 延长日志保存期限
    • 控制日志访问权限
    • 集中管理日志

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

    你可能感兴趣的文章
    PHP 输入输出流合集
    查看>>
    PHP 过滤器(Filter)
    查看>>
    php 运算符and or && || 的详解
    查看>>
    php 返回html字符串长度限制,记一次js中和php中的字符串长度计算截取的终极问题和完美...
    查看>>
    php 阿里云oss 上传回调
    查看>>
    PHP 面向对象 final类与final方法
    查看>>
    php+JQ+EasyUI自动加载数据
    查看>>
    php+sql server根据自增序号id区间查询第几条到第几条的数据
    查看>>
    php--------获取当前时间、时间戳
    查看>>
    php--正则表达式
    查看>>
    php--防止sql注入的方法
    查看>>
    PHP-CGI Windows平台远程代码执行漏洞复现(CVE-2024-4577)
    查看>>
    php-cgi耗尽报502错误
    查看>>
    php-cgi(fpm-cgi) 进程 CPU 100% 与 file_get_content...
    查看>>
    PHP-DI/Invoker 开源项目使用教程
    查看>>
    php-fpm与Nginx运行常见错误说明
    查看>>
    php-fpm比php成为apache模块好在哪
    查看>>
    php-fpm超时时间设置request_terminate_timeout分析
    查看>>
    php-fpm进程数优化
    查看>>
    PHP-GD库-分类整理
    查看>>