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

目录

        一、文件系统概述

        1.1 文件系统查找过程

      1.2 以indoe号删除文件

        二、链接文件

        三、文件恢复

        3.1删除原理

        3.2 使用extundelete工具恢复误删除的文件

        3.3 恢复XFS类型的文件

        四、日志文件

        4.1 常见的日志文件

       4.2 日志消息的级别

        4.3 查询当前登录的用户情况

         4.4 查询用户的登录记录

        四、总结


        一、文件系统概述

        1.1 文件系统查找过程

        在表面上,用户是通过文件名来打开文件,实际上,在系统中是分成三步:

        1.系统找到文件名对应的indoe号。

        2.通过indoe号码,获取indoe信息。

        3.根据indoe信息,找到文件数据所在的block,读出数据。

        ·查看所有的indoe号与使用情况:df -i

         ·查看文件所对应的indoe号:ls -i

        每个分区中的indoe号都是有限的,当系统会保留一部分在系统中以作为使用(约100个)如果使用完将不能创建,只能删除部分文件释放indoe号,每个分区都有自己的分区节点编号。

        由于indoe号码与文件名分离,导致一直Unix/Linux系统具有以下的现象

        ·当文件包含特殊字符,可能无法正常删除,直接删除indoe,也可以删除文件。

        ·移动或重命名文件时,只改变文件名,不影响inode号码

        ·打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

[root@localhost ky15]# touch a.txt  #创建名为a的文本文件
[root@localhost ky15]# mkdir aa     #创建名为aa的目录
[root@localhost ky15]# ls
1.txt  2.txt  3.txt  4.txt  aa  a.txt  passwd  ss
[root@localhost ky15]# cp a.txt aa  #复制文本到aa的目录中


#此时查看文件中的indoe号为16790806
[root@localhost ky15]# ls -i
16791688 1.txt  16791321 2.txt  16791322 3.txt  16791324 4.txt  34743754 aa  16790806 a.txt  34743715 passwd  16791732 ss
[root@localhost ky15]# cd aa
[root@localhost aa]# ls -i
34743757 a.txt                   #此时文本文件的indoe号改变
[root@localhost aa]# 

        cp 命令:

        分配一个空闲的inode号,在inode表中生成新条目

        在目录中创建一个目录项,将名称与inode编号关联

        拷贝数据生成新的文件

        rm 命令:

        硬链接数递减,从而释放的inode号可以被重用

        把数据块放在空闲列表中

        删除目录项

        数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

        mv和inode

        如果mv命令的目标和源在同一设备,

        不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

        删除旧的目录对应关系新建目录对应关系

      1.2 以indoe号删除文件

        命令格式: find -inum xxxxx  -delete

[root@localhost aa]# find -inum 34743757 -delete 
[root@localhost aa]# ls
[root@localhost aa]# ll
总用量 0
[root@localhost aa]# 

        由于inode号码与文件名分离,导致 具有以下现象

        ·当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件。、

        ·移动文件或重命名文件时,只改变文件名,不影响inode号

        ·打开一个文件后,系统通过inode号码来识别文件,不在考虑文件名

        二、链接文件

           链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。

软链接硬链接
删除原始文件后失效仍然可用
使用范围适用于文件或目录只可用与文件
保存位置与原始文件可以位于不同的文件系统中必须与原始文件在同一个文件系统内

        三、文件恢复

        3.1删除原理

        当用户删除一个文件时,实际上并不清除inode节点和block的数据,只是这个文件的父目录中block,删除了这个文件的名字。Linux是通过Link的数量来控制文件的删除,只有当一个文件不存在任何Link的时候,这个文件才会被删除。

        3.2 使用extundelete工具恢复误删除的文件

        首先需要准备extundelete工具的安装包rz选中安装包

[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs   #安装依赖软件

[root@localhost ~]# tar -jxvf extundelete-0.2.4.tar.bz2 -C /opt  #将提前放入的安装包进行解压

[root@localhost ~]# cd /opt/extundelete-0.2.4  #切换到目录下进行安装

进行编译安装
[root@localhost extundelete-0.2.4]# make 
[root@localhost extundelete-0.2.4]# make install  

软件缺点只能恢复ext3的文件
提前准备一块磁盘将磁盘格式化ext3类型
[root@localhost extundelete-0.2.4]# mkfs.ext3 /dev/sdc1

创建一个目录作为挂载点
[root@localhost ~]# mkdir ky
[root@localhost ~]# mount /dev/sdc1 ky


进入目录创建多个文件
[root@localhost extundelete-0.2.4]# cd /root/ky
[root@localhost ky]# echo a>a
[root@localhost ky]# echo a>b
[root@localhost ky]# echo a>c
[root@localhost ky]# echo a>d
[root@localhost ky]# ls
a  b  c  d  lost+found

删除文件
[root@localhost ky]# rm -rf a b c
[root@localhost ky]# ls
d  lost+found

必须解挂载才能恢复使用,不gu能在挂载的目录中解挂载
[root@localhost ky]# umount /root/ky
umount: /root/ky:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
[root@localhost ~]# umount /root/ky

恢复所有的文件
[root@localhost ~]# extundelete /dev/sdc1 --restore-all

恢复的文件在家目录下的RECOVERED_FILES目录中
[root@localhost ~]# ls
anaconda-ks.cfg  extundelete-0.2.4.tar.bz2  ky    RECOVERED_FILES  模板  图片  下载  桌面
core.1841        initial-setup-ks.cfg       ky15  公共             视频  文档  音乐

切换到目录中
[root@localhost ~]# cd RECOVERED_FILES/

恢复的文件
[root@localhost RECOVERED_FILES]# ls
a  b  c

        3.3 恢复XFS类型的文件

        xfs提供了xfsdump和xfsrestore工具,协助备份xfs文件系统中的数据。xfsdump按inode顺序备份一个xfs文件系统

         在CentOS7中,xfs格式作为默认文件系统,不再使用以前的ext,但仍然支持ext4。xfs专为大数据产生,每个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump和xfsrestore来备份和恢复。原始备份数据方法:cp

         首先了解一下xfsdump的备份级别有以下两种:0,代表完整备份;1~9,代表增量备份。默认为0(即完全备份)

        命令格式:xfsdump -f 备份存放位置

        常用选项

        -f:指定备份文件目录

        -L:指定备份会话标签

        -M:指定设备标签

        -s:[文件路径] 只对指定的文件或目录进行备份,路径是相对路径

        xfsdump使用限制:

        · 不支持没有挂载的文件系统备份,所以只能被备份已经挂载的

        · 必须使用root的权限才能操作

        · 只能备份XFS文件系统

        · 备份下来的数据只能让xfssrestore解析

        · 不能备份两个具有相同UUID的文件系统

        实验配置

        

[root@localhost ~]# fdisk /dev/sdd    #新建一个分区
[root@localhost ~]# mkfs.xfs /dev/sdd1  #将其格式化

[root@localhost ~]# mkdir /date           #新建一个目录用于挂载
[root@localhost ~]# mount /dev/sdd1 /date

[root@localhost ~]# cd /date                #切换到date目录下
[root@localhost date]# cp /etc/passwd ./      #模拟复制放入一些文件


[root@localhost date]# mkdir test            #新建目录创建文件查看目录是否恢复
[root@localhost date]# touch test/a

[root@localhost date]# yum install xfsdump -y  #如没有安装xfsdump进行安装



        备份硬盘文件

[root@localhost date]# xfsdump -f /opt/dump_sdd1 /dev/sdd1    #备份硬盘文件
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 -> dump_sdd1        #####创建一个备份名
session label entered: "dump_sdd1"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of localhost.localdomain:/date
xfsdump: dump date: Sat Sep 25 14:12:08 2021
xfsdump: session id: dc0df186-a55b-47f0-834f-c8cdc9118e36
xfsdump: session label: "dump_sdd1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
xfsdump: /var/lib/xfsdump/inventory created

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> sdd1               #####备份的硬盘分区
media label entered: "sdd1"

        模拟误删除文件

[root@localhost date]# rm -rf *    ##删除sdd1挂载的文件此时文件为空


[root@localhost ~]# xfsrestore -f /opt/dump_sdd1 /date       ##恢复刚刚删除的文件
xfsrestore: Restore Status: SUCCESS        ##显示成功

[root@localhost ~]# cd /date             ##切换到目录下
[root@localhost date]# ls             ##查看文件是否恢复
passwd  test

        四、日志文件

                ·日志的功能

                用于记录系统、程序运行中发生的各种事件

                通过阅读日志、有助于诊断和解决系统故障

        4.1 常见的日志文件

日志文件位置说明
/var/log/messages内核和公共日志它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出
/var/log/cron 计划任务日志记录与系统定时任务相关的曰志
/var/log/dmesg 系统引导日志记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/maillog 邮件日志记录邮件信息的曰志
用户日志
/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

       4.2 日志消息的级别

级号消息级别说明
0EMERG紧急会导致系统不可用的情况
1

ALERT

警告必须马上采取措施解决问题
2CRIT严重比较严重的错误
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

        日志的配置文件位置在 :/etc/rsyslog.conf 

        4.3 查询当前登录的用户情况

        users

        users命令只是简单地输出当前登录的用户名称。

[root@localhost ~]# users
root root root root
[root@localhost ~]# 

        who

        命令用于报告当前登录到系统中的每个用户的信息,可以查看当前系统存在有哪些不合法的用户。

 [root@localhost ~]# who
root     :0           2021-09-21 23:33 (:0)
root     pts/0        2021-09-21 23:33 (:0)
root     pts/1        2021-09-25 16:17 (192.168.26.1)
root     pts/3        2021-09-25 13:37 (192.168.26.1)
[root@localhost ~]# 

        w

        w命令用于显示当前系统中的每个用户及所运行的进程信息,比users、who的命令丰富

[root@localhost ~]# w
 17:23:30 up  5:31,  4 users,  load average: 0.06, 0.05, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               二23   ?xdm?   2:16   0.14s /usr/libexec/gnome-session-binary --
root     pts/0    :0               二23    2days  0.16s  0.16s bash
root     pts/1    192.168.26.1     16:17    9:14   0.04s  0.04s -bash
root     pts/3    192.168.26.1     13:37    2.00s  0.32s  0.02s w
[root@localhost ~]# 
 

         4.4 查询用户的登录记录

        last

        last命令用于查询成功登录到系统的用户记录。

        可以查询最近的登录的情况将显示最前面,如果发现未经过的授权的用户登录,则表示当前主机可能被入侵。

[root@localhost ~]# last
root     pts/1        192.168.26.1     Sat Sep 25 16:17   still logged in   
root     pts/3        192.168.26.1     Sat Sep 25 13:37   still logged in   
root     pts/2        192.168.26.1     Sat Sep 25 11:51 - 15:16  (03:25)    
root     pts/1        192.168.26.1     Thu Sep 23 11:39 - 14:03 (2+02:24)   
root     pts/0        :0               Tue Sep 21 23:33   still logged in   
root     :0           :0               Tue Sep 21 23:33   still logged in   
reboot   system boot  3.10.0-693.el7.x Tue Sep 21 23:32 - 17:28 (3+17:56)   
root     pts/2        192.168.26.1     Tue Sep 21 15:31 - crash  (08:01)    
root     pts/1        :0               Thu Sep  9 15:31 - 15:32 (12+00:00)  
root     pts/0        192.168.26.1     Tue Sep  7 20:50 - crash (14+02:42)  

        lastb

        lastb 命令用于查询登录失败的用户记录

[root@localhost ~]# lastb
root     pts/2                         Mon Sep  6 18:32 - 18:32  (00:00)    

btmp begins Mon Sep  6 18:32:31 2021
[root@localhost ~]# 

        四、总结

         xfs格式作为默认文件系统,不再使用以前的ext,但仍然支持ext4。xfs专为大数据产生,每个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump和xfsrestore来备份和恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值