Linux文件系统与日志分析(我不看月亮,也不说想你,这样,月亮和你就都蒙在鼓里)

一、inode和block概述

1.概述

  • 文件数据包括元信息与实际数据
  • 文件储存在硬盘上,硬盘最小的储存单位是“”“扇区”每个扇区储存512个字节
  • block
    连续的八个扇区组成一个block(4K)
    block是文件最小的存取单位
  • inode(索引节点)
    中文译名为“索引节点”也叫i节点
    用于储存文件元信息
    在这里插入图片描述

2.Linux系统文件的三个主要的时间属性

  • ctime(change time)
    最后一次改变文件或目录(属性)的时间
  • atime(access time)
    最后一次访问文件或目录的时间
  • mtime(modify time)
    最后一次修改文件或目录(内容)的时间

注: 当更改文件内容时,mtime改变,ctime也会随之改变

3.查看inode号等详细信息

查看inode号

[root@localhost ~]# ls -i 文件或目录

[root@localhost ~]#ls -i 1.txt
68141264 1.txt

4.查看文件inode号等详细信息

[root@localhost ~]# stat 文件或目录

[root@localhost ~]# stat initial-setup-ks.cfg
  文件:"initial-setup-ks.cfg"
  大小:1927      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:100663402   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-04-10 21:53:49.158151532 +0800
最近更改:2023-04-10 21:53:49.158151532 +0800
最近改动:2023-04-10 21:53:49.158151532 +0800
创建时间:-

5.inode大小

  • inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节。
  • inode的总数,在格式化时就确定。
  • 查看每个硬盘分区的inode总数和已经使用的数量,可以使用 df -i 。
[root@localhost ~]# df -i
文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  478401     389   478012       1% /dev
tmpfs                     482635       1   482634       1% /dev/shm
tmpfs                     482635    1418   481217       1% /run
tmpfs                     482635      16   482619       1% /sys/fs/cgroup
/dev/mapper/centos-root 19417088  192737 19224351       1% /
/dev/mapper/centos-home  9480192    2575  9477617       1% /home
/dev/sda1                 524288     350   523938       1% /boot
tmpfs                     482635       8   482627       1% /run/user/42
tmpfs                     482635       1   482634       1% /run/user/0

6.inode 特点

文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用。

[root@localhost ~]# find 文件位置 -inum inode号 -exec rm -i {} \;
[root@localhost ~]# find 文件位置 -inum inode号 - delete


[root@localhost ~]#ls -i abc
67170385 abc
[root@localhost ~]#find ./ -inum 67170385 -delete
  • mv移动文件或重命名文件,只是改变文件名,不影响inode号。
[root@localhost ~]#ls -i 1.txt
68141264 1.txt
[root@localhost ~]#mv 1.txt file1
[root@localhost ~]#ls -i file1
68141264 file1
  • vim修改文件后,inode号会改变(这是由于vim编辑器是编辑原文件.swap,修改完成后替换原文件)
[root@localhost ~]#ls -i file1
68141264 file1
[root@localhost ~]#vim file1
[root@localhost ~]#ls -i file1
68141260 file1

二、恢复被误删的文件

1.恢复xfs文件系统的文件

  • CentOS 7系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
  • xfsdump的备份级别有两种:0表示完全备份;1-9表示增量备份。默认备份级别为0。

备份xfs类型文件
[root@localhost ~]# xfsdump -f 备份存放的位置 需要备份的文件或设备路径
-L //指定标签session label
-M //指定设备标签
上面两个选项如果不指定,会进入交互界面指定
-s //备份单个文件,后面不能直接跟路径
恢复备份文件
[root@localhost ~]# xfsrestore -f 备份存放的位置 恢复到的路径

2.xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份XFS文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
//挂载分区sdb1到/data(没有分区需要创建)
[root@localhost ~]#mkdir /data
[root@localhost ~]#mount /dev/sdb1 /data
 
//在挂载目录data下存一些文件(实际存放在sdb1分区)
[root@localhost ~]#cd /data
[root@localhost data]#cp /etc/passwd ./
[root@localhost data]#mkdir test
[root@localhost data]#touch test/a
[root@localhost data]#ls
passwd  test
 
//下载xfsdump
[root@localhost data]#yum install -y xfsdump
 
//备份sdb1里的文件到/opt/dump,标签为dump_sdb1,设备标签为sdb1
[root@localhost data]#xfsdump -f /opt/dump /dev/sdb1 -L dump_sdb1 -M sbd1
xfsdump: Dump Status: SUCCESS
 
//模拟误删挂载目录里的文件
[root@localhost data]#rm -rf *
[root@localhost data]#ls
 
//使用xfsrestore将备份文件/opt/dump恢复到挂载目录
[root@localhost data]#xfsrestore -f /opt/dump /data/
xfsrestore: Restore Status: SUCCESS
 
//恢复成功
[root@localhost data]#ls
passwd  test

3.恢复ext文件系统的文件

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

//建立sdc1分区
[root@localhost data]#fdisk /dev/sdc
 
//建立ext3文件系统
[root@localhost data]#mkfs.ext3 /dev/sdc1
 
//建立/test并挂载sdc1分区
[root@localhost data]#mkdir /test
[root@localhost data]#mount /dev/sdc1 /test
[root@localhost data]#df -Th
/dev/sdc1               ext3      4.8G   11M  4.6G    1% /test
 
//安装依赖环境
[root@localhost data]#yum -y install e2fsprogs-devel e2fsprogs-libs
 
//源码编译安装extundelete
[root@localhost test]#tar jxvf '//tmp/VMwareDnD/xZ45n3/extundelete-0.2.4.tar.bz2' 
[root@localhost test]#ls
extundelete-0.2.4  lost+found
[root@localhost test]#cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]#./configure --prefix=/usr/local/extundelete &&make && make install
 
//软连接到/usr/bin/使其成为系统能识别的命令
[root@localhost extundelete-0.2.4]#ln -s /usr/local/extundelete/bin/* /usr/bin/
 
//新建一些文件
[root@localhost extundelete-0.2.4]#cd /test
[root@localhost test]#echo a > 1.txt
[root@localhost test]#echo a > 2.txt
[root@localhost test]#ls
1.txt  2.txt  extundelete-0.2.4  lost+found
 
//查看文件系统/dev/sdc1下存在哪些文件,i 节点是从2开始的,2代表该文件系统最开始的目录
[root@localhost test]#extundelete /dev/sdc1 --inode 2
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
extundelete-0.2.4                                 98305
1.txt                                             12
2.txt                                             13
 
//模拟误删文件
[root@localhost test]#rm -rf 1.txt 2.txt
 
//此时再查看文件后显示Deleted
[root@localhost test]#extundelete /dev/sdc1 --inode 2
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
extundelete-0.2.4                                 98305
1.txt                                             12             Deleted
2.txt                                             13             Deleted
 
//恢复数据前必须解挂载
[root@localhost ~]#umount /test
 
//恢复数据
[root@localhost ~]#extundelete /dev/sdc1 --restore-all
 
//恢复的文件数据会放在当前目录下的RECOVERED_FILES
[root@localhost ~]#ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  视频  文档  音乐
file1            RECOVERED_FILES       模板  图片  下载  桌面
[root@localhost ~]#ls RECOVERED_FILES/
1.txt  2.txt

三、分析日志文件

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

1.日志文件的分类

  • 内核以及系统日志:这种这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。
  • 用户日志:这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登 录的终端、登录时间、来源主机、正在使用的进程操作等。
  • 程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息。

常见的日志文件

在这里插入图片描述

3.内核及系统日志配置文件

[root@localhost ~]# cat /etc/rsyslog.conf //查看/etc/rsyslog.conf配置文件
规则配置格式:设备.级别 动作

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

解析
*.info;mail.none;authpriv.none;cron.none ------- /var/log/messages(内核以及公共消息日志)

*.info ------ 表示info等级及以上的所有等级信息都写入到对应的日志文件里。

mail.none ------ 表示某事件的信息不写到日志文件里

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
在这里插入图片描述
设备字段
在这里插入图片描述

4.用户日志分析

在wtmp、btmp、 lastlog等日志文件中 ,保存了系统用户登录、 退出等相关的事件消息。 但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用who、w、users、 last和lastb等用户查询命令来获取日志信息。

查询当前登录的用户情况——users,who,w
在这里插入图片描述
查询用户登录的历史记录——last,lastb
这两个命令的日志在/var/log/secure

[root@localhost zhangsan]# last //查看登录成功的日志
[root@localhost zhangsan]# lastb //查看登录失败的日志

在这里插入图片描述
5.程序日志分析

  • 程序日志由相应的应用程序独立进行管理

Web服务:/var/log/httpd/

  • access_log ——记录客户访问事件
  • error_log ——记录错误事件

代理服务:/var/log/squid/

  • access.log、cache.log

分析工具

  • 文本查看、grep过来检索、Webmin管理套件中查看
  • awk、sed等文本过滤、格式化编辑工具
  • Webalizer、Awstats等专用日志分析工具
    **6.日志管理 **
  • 及时做好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限
  • 集中管理日志(rsyslog、Shell/Python 脚本文件;ELK)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值