Linux---文件系统与日志分析

一:inode和block概述

  • 文件是存储在硬盘上的,硬盘最小储存叫做扇区,每个扇区512字节

  • 操作系统读取硬盘信息,不会一个一个扇区读取,实际情况一下连续读取多个扇区,一次性读取多个扇区,叫做块(Block),这种多个扇区组成的“块”是文件存取的最小单位,最常见的4K,就是8个扇区组成的一个Block块,512字节*8=4096字节

  • 文件数据是储存在“块中”,那还必须找一个储存文件的元信息元信息主要包括文件创建者,文件 的创建日期,文件的大小等,这种元信息的区域叫做inode节点也叫做“索引号”也叫做i节点号,一个文件必须占用一个i节点,至少一个block

  • 文件的数据包括二部分:1.元信息(inode) 2.实际数据(block)
    在这里插入图片描述

1.1:inode内容

  • Inode包含很多的文件元信息,但不包含文件名
  1. 文件的字节数
  2. 文件的拥有者UserD
  3. 文件的GroupID
  4. 文件的rwx权限(读,写,执行)
  5. 文件时间戳使用stat查看文件inode信息
[root@localhost ~]# stat anaconda-ks.cfg 
  File: ‘anaconda-ks.cfg’
  Size: 2065       Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d Inode: 537160782   Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-08-06 18:30:08.103000223 +0800
Modify: 2020-08-06 18:29:32.758011870 +0800
Change: 2020-08-06 18:29:32.758011870 +0800
 Birth: -
  • Linux 系统文件有三个主要的时间属性
  1. ctime(change time) 是最后一次改变文件或目录(属性)的时间,例如执行 chmod, chown 等命令
  2. atime(access time)是最后一次访问文件或目录的时间
  3. mtime(modify time)是最后一次修改文件或目录(内容)的时间

1.2:inode的号码

  • 用户在访问文件时候,表面上是用户通过文件名打开的,而实际上系统内部的过程分为三部完成的
  1. 系统找到文件名的inode号码

  2. 通过inode号码,获取inode信息

  3. 根据inode信息,找到文件所在的block,并读取数据文件名----对应的inode号码------inode信息—找到文件所在的block,读取数据

  • 命令–查找inode号码的方法
  1. ls -i 查看文件名对应的inode号码
  2. ll -i 比较友好的查看inode号码
  3. stat 查看文件inode信息中inode号码
  • 访问文件的简单流程
  1. 用户访问文件------------系统查找文件对应的inode--------判断用户是否具备访问权限 —是—指定对应的数据block
  2. 用户访问文件------------系统查找文件对应的inode--------判断用户是否具备访问权限 —否—返回Permissiondenied

1.3:Inode的大小

  • Inode也会消耗硬盘空间
  • 每个inode的大小一般是128字节或256字节
  • 格式化文件系统时确定inode的总数使用
  • df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

二:硬连接和软连接

  • 在 Linux 系统下的链接文件有两种,一种类似于 Windows 的快捷方式功能的文件,可以快速连接到目标文件或目录,称之为软链接;另一种则是通过文件系统的 inode 链接来产生的新文件名,而不是产生新文件,称之为硬链接。
    在这里插入图片描述

2.1:硬连接

  • 文件名和 inode 号码是一一对应关系,每个 inode 号码对应一个文件名。但是 Linux 系统允许多个文件名指向同一个 inode 号码。这意味着,可以用不同的文件名访问同样的内容。ln 命令可以创建硬链接
命令格式:
ln 源文件 目标

运行该命令以后,源文件与目标文件的 inode 号码相同,都指向同一个 inode

2.2:软连接

  • 软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名
命令格式:
ln -s 源文件或目录 目标文件或目录

三:恢复EXT类型的文件

  • 新加一块20G的硬盘,开机重启
yum -y install e2fsprogs-libs e2fsprogs-devel ##安装依赖包
yum -y install wget   ##安装wget服务
cd /opt
Wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2  ##从官网直接下载extundelete软件包
tar jxvf extundelete-0.2.4.tar.bz2 ##解压这个文件
cd extundelete-0.2.4/ ##进到这个解压文件里面
./configure --prefix=/usr/local/extundelete  ##安装路径
make   make编译成机器可识别的二进制
make install   ##安装环境
cd ~  ##回到家目录
fdisk /dev/sdb   ##编辑sdb硬盘
mkfs -t ext3 /dev/sdb1  ##格式化硬盘为ext3格式mkdir /data  ##在根目录下面创建文件data
mount /dev/sdb1/ /data/  ## sdb1挂载到data下面
cd /data  
去data文件中  
touch a b c d   
echo a >a 
echo a >b   
echo a >c   
echo a >d   ##创建文件a,b,c,d,并编辑内容进入
extundelete /dev/sdb1 --inode 2 ###查看文件系统/dev/sdb1下面有什么文件
rm -rf a b  删除a,b文件
cd ~   ##进入家目录
umount /data    ##卸载data
extundelete /dev/sdb1 --restore-all    ##恢复数据
ls   ##看看目录下面有没有 RECOVERED_FILES/ 
cd RECOVERED_FILES/## 进入这个文件里面
ls   ##可以看到恢复的a,b文件

四:XFS类型文件备份与恢复

  • extundelete 工具仅可以恢复 EXT 类型的文件,无法恢复 CentOS 7 系统默认采用 xfs 类型的文件。

  • 针对 xfs 文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数 据备份,以避免数据丢失。

  • xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。若系统中未安装 xfsdump与xfsrestore工具

  • 可以通过yum install -y xfsdump命令安装。xfsdump 按照inode 顺序备份一个 xfs 文件系统。xfsdump 的备份级别
    有两种:0 表示完全备份;1-9 表示增量 备份。
    xfsdump 的备份级别默认为 0。

  • xfsdump 的命令格式为:xfsdump -f 备份存放位置 要备份路径或设备文件。常用的备份参数包括以下几种:

  1. -f:指定备份文件目录;
  2. -L:指定标签 session label;
  3. -M:指定设备标签 media label;
  4. -s:备份单个文件,-s 后面不能直接跟路径
    实验过程:
fdisk /dev/sdb   ##进入sdb中重新配置硬盘
mkfs.xfs -f /dev/sdb1   ##格式化硬盘为xfs格式
df -Th               ##查看挂载情况的
mount /dev/sdb1 /data  ##挂载
cd /data  
touch 1 2 5 2 25        ##新建文件
yum install -y xfsdump   ##下载xfsdump安装包
xfsdump -f /opt/dump_sdb1 /dev/sdb1   ##用xfsdump软件备份sdb1
     ####交互信息###
please enter label for this dump session (timeout in 300 sec) -> dump_sdb1 				####指定备份会话标签 
please enter label for media in drive 0 (timeout in 300 sec) -> sdb1 					###指定设备标签,就是对要备份的设备做一个描述 

xfsdump -I   查看备份内容信息

####删除之前创建的内容,模拟数据丢失###
cd /data/
rm -rf *    ##删除data里面所有的文件
cd ~
xfsrestore -f /opt/dump_sdb1 /data/    ##恢复文件
ls /date/   ##查看date里面的文件恢复没有
  • 使用 xfsdump 时,需要注意以下的几个限制
  1. xfsdump 不支持没有挂载的文件系统备份,所以只能备份已挂载的;
  2. xfsdump 必须使用 root 的权限才能操作(涉及文件系统的关系);
  3. xfsdump 只能备份 XFS 文件系统;
  4. xfsdump 备份下来的数据(档案或储存媒体)只能让 xfsrestore 解析
  5. xfsdump 是透过文件系统的 UUID 来分辨各个备份档的,因此不能备份两个具有相同 UUID 的文件系统。

五:分析日志文件

  • 日志文件是用于记录 Linux 操作系统中各种运行消息的文件,相当于 Linux 主机的“日 记”。不同的日志文件记载了不同类型的信息,如 Linux 内核消息、用户登录事件、程序错 误等。

  • 日志文件对于诊断和解决系统中的问题很有帮助,因为在 Linux 操作系统中运行的程序 通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。

  • 此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹。

5.1:主要日志文件

  • 在 Linux 操作系统中,日志 数据主要包括以下三种类型
  1. 内核及系统日志:这种日志数据由系统服务 rsyslog 统一管理,根据其主配置文件/etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序消息记录到什么位置。 系统中有相当一部分程序会把自己的日志文件交由 rsyslog 管理,因而这些程序使 用的日志记录也具有相似的格式

  2. 用户日志:这种日志数据用于记录 Linux 操作系统用户登录及退出系统的相关信息, 包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

  3. 程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给 rsyslog 服务管理),用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管 理自己的日志文件,因此不同程序所使用的日志记录格式可能会存在较大的差异。

  • 常见的日志
1. /var/log/cron:##记录 crond 计划任务产生的事件信息 
2. /var/log/dmesg:##记录 Linux 操作系统在引导过程中的各种事件信息 
3. /var/log/maillog:##记录进入或发出系统的电子邮件活动。 
4. /var/log/lastlog:##记录每个用户最近的登录事件。 
5. /var/log/secure:##记录用户认证相关的安全事件信息 
6. /var/log/wtmp:##记录每个用户登录、注销及系统启动和停机事件 
7. /var/log/btmp:##记录失败的、错误的登录尝试及验证事件 

5.2:日志文件分析

  • 分析日志文 件的目的在于通过浏览日志查找关键信息、对系统服务进行调试,以及判断发生故障的原因等。

  • 主要介绍三类日志文件的基本格式和分析方法。对于大多数文本格式的日志文件(如内核及系统日志、大多数的程序日志),只要使用 tail、more、less、cat 等文本处理工具就可以查看日志内容。而对于一些二进制格式的日志 文件(如用户日志),则需要使用特定的查询命令

  1. 内核及系统日志
    内核及系统日志功能主要由默认安装的 rsyslog-7.4.7-16.el7.x86_64.rpm 软件包提供。 rsyslog 服务所使用的配置文件为/etc/rsyslog.conf。
    通过查看/etc/rsyslog.conf 文件中的内 容,可以了解到系统默认的日志设置,
    具体操作如下:
[root@localhost ~]# grep -v “^$” /etc/rsyslog.conf ####过滤掉空行
  • 根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)
0 EMERG(紧急):会导致主机系统不可用的情况。
1 ALERT(警告):必须马上采取措施解决的问题。 
2 CRIT(严重):比较严重的情况。 
3 ERR(错误):运行出现错误 
4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件 
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。 
6 INFO(信息):一般信息。 
7 DEBUG(调试):程序或系统调试信息等。
  • 内核及大多数系统消息被记录到公共日志文件/var/log/messages 中
  1. 用户日志
查询当前登录的用户情况——users、who、w 命令

users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话

who 命令用于报告当前登录到系统中的每个用户的信息
查询用户登录的历史记录——last、lastb 命令 

通过 last 命令可以及时掌握 Linux 主机的登录情况,

lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都 将记录在案。

  1. 程序日志
    在 Linux 操作系统中,还有相当一部分应用程序没有使用 rsyslog 服务来管理日志,而是由程序自己维护日志记录。
  • 检查日志出现一下情况需要注意点
1. 用户在非常规的时间登录,或者用户登录系统的 IP 地址和以往的不一样。
2. 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录。
3. 非法使用或不正当使用超级用户权限。
4. 无故或者非法重新启动各项网络服务的记录。
5. 不正常的日志记录,如日志残缺不全,或者是诸如 wtmp 这样的日志文件无故缺少 了中间的记录文件。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值