深入理解Linux文件系统与日志分析


一、inode和block概述

在这里插入图片描述
重点:硬盘最小存储单位是 “扇区”,每个扇区存储512B ,而八个扇区组成的一个block(4K)是文件存取的最小单位。

一个文件必须占用一个inode,但至少占用一个block。

1、 inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳

2、用stat命令可以查看某个文件的inode信息

示例:stat 123
在这里插入图片描述

3、Linux系统文件三个主要的时间属性

在这里插入图片描述
wq!强制保存退出,三个时间一起改变
在这里插入图片描述

q!不保存退出,只有最近访问时间改变
在这里插入图片描述
chmod 777 123
更改权限属性,只有最近改动时间改变
在这里插入图片描述

atime(accesstime):
当使用这个文件的时候就会更新这个时间。

mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

4、inode的内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系。

一个目录是目录下的文件名和文件inode号之间的映射。

文件是如何找到实际数据的?
Linux 通过文件夹中会有一张 文件名 和 inode 一一对应关系的表,去找 inode号,然后 inode 指向对应的实际数据。
在这里插入图片描述

5、inode的号码

在这里插入图片描述
补充:当vim写入内容的时候,块存储数据后,inode信息肯定会发现变化。
在这里插入图片描述

6、文件存储小结

在这里插入图片描述

7、inode的大小

在这里插入图片描述

8、inode的特殊作用

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

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

对于中文乱码文件,可以通过以下命令删除:
find /opt -inum 34376268 -exec rm -rf {} ;
#其中34376268为inode号

9、链接文件

在这里插入图片描述
硬链接:ln 源文件 目标位置

软连接:ln -s 源文件或目录 连接文件或目标位置

二、案例:恢复EXT类型的文件

  • 编译安装extundelete软件包
    安装依赖包
    e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm
    e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm

  • 配置、编译及安装
    extundelete-0.2.4.tar.bz2

  • 模拟删除并执行恢复操作

extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)

1、使用fdisk创建分区/dev/sdb1,格式化ext3文件系统

在这里插入图片描述
在这里插入图片描述

2、挂载在 /opt/data

在这里插入图片描述

3、安装依赖包

在这里插入图片描述

4、编译安装 extundelete

在这里插入图片描述

5、解压

在这里插入图片描述

6、安装编译环境

在这里插入图片描述

7、指定路径并重新加载

在这里插入图片描述

8、创建软连接

在这里插入图片描述

9、模拟删除并执行恢复操作

注意:文件目录inode号都是从2开始
在这里插入图片描述
在这里插入图片描述

10、删除文件

在这里插入图片描述
在这里插入图片描述

11、解挂载

在这里插入图片描述

12、恢复文件

extundelete /dev/sdb1 --restore-all
注意:恢复文件不要选择在当前目录恢复,要换到其它目录。

在这里插入图片描述
注意:在家目录下,恢复sdb1硬盘下所有文件系统的所有文件及内容。不要在挂载的目录下恢复文件,如果在挂载的目录恢复文件,文件名会改变。

在这里插入图片描述

三、案例:恢复XFS类型的文件

在这里插入图片描述
xfsdump 的命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径

xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

1、使用fdisk创建分区/dev/sdb2,格式化xfs文件系统

fdisk /dev/sdb
在这里插入图片描述

2、格式化文件系统并挂载

在这里插入图片描述
准备工作,将 /etc/passwd 和 /etc/shadow 复制到挂载的目录 /data 里。

在这里插入图片描述
在这里插入图片描述

3、使用 xfsdump 命令备份整个分区

xfsdump -f /opt/dump_sdb2 /dev/sdb2 [-L dump_sdb2 -M sdb2] #把整个 sdb2 分区的文件备份到指定的文件目录 /opt/dump_sdb2
在这里插入图片描述

4、模拟数据丢失并使用 xfsrestore 命令恢复文件

在这里插入图片描述

四、日志文件

日志的功能

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

日志文件的分类

  • 内核及系统日志
    由系统服务rsyslog统一进行管理,日志格式基本相似
    主配置文件 /etc/rsyslog.conf

  • 用户日志
    记录系统用户登录及退出系统的相关信息

  • 程序日志
    由各种应用程序独立管理的日志文件,记录格式不统一
    在这里插入图片描述

  • 内核及系统日志
    内核及系统日志由系统服务 rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
    Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录 /var/log/ 下。

查看rsyslog.conf配置文件:vim /etc/rsyslog.conf
在这里插入图片描述
*.info:表示info等级及以上的所有等级的信息都写在对应的日志文件里
none:表示某件事的信息不写到日志文件里

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

2、计划任务日志
/var/log/cren:记录crond计划任务产生的事件信息

3、系统引导日志
/var/log/dmesg:记录LInux系统在引导过程中的各种事件信息

4、邮箱系统日志
/var/log/maillog:记录进入或发出系统的电子邮件活动

5、用户登录日志
/var/log/secure:记录用户认证相关的安全事件信息
/var/log/lastlog:记录每个用户最近的登录信息(二进制格式)
/var/log/wtmp:记录每个用户登录、注销、及系统启动和停机事件(二进制格式)
/var/log/btmp:记录失败的、错误的登录尝试及验证事件(二进制格式)

例1:用 ls 查看messages日志文件并用 tail -f 追踪所查看的日志文件
在这里插入图片描述
users #显示目前登录的系统用户,最先登录的在最左边
w #显示目前登录系统的用户的详细信息
last #列出截至目前登录过系统的用户信息
lastb #查询登录用户失败的用户记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 日志管理策略
    在这里插入图片描述

将ssh服务日志单独存放

关闭服务端和客户端防火墙、selinux

setenforce 0
systemctl stop firewalld

vim /etc/rsyslog.conf

在这里插入图片描述
vim /etc/ssh/sshd_config

在这里插入图片描述
重启服务
systemctl restart rsyslog.service
systemctl restart sshd

验证
在这里插入图片描述

在这里插入图片描述

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

//关闭服务端和客户端防火墙、selinux
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

配置发送方:
//修改客户端配置文件,并启动服务
在这里插入图片描述
在这里插入图片描述
配置接收方:
//修改服务端配置文件,并启动服务
vim /etc/rsyslog.conf
在这里插入图片描述
验证结果
发送端
在这里插入图片描述
接收端
在这里插入图片描述
tail -f /var/log/messages
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值