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

.inode与block

.硬连接与软链接

.恢复误删除的文件

.分析日志文件

 

.Inode和block概述

1.文件数据包括原信息与实际数据

文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

Block(块)       (数据)

  连续的八个扇区组成一个block

  是文件存取的最小单位

Inode(索引节点) (元信息)

  中文译名为“索引节点”,也叫i节点

  用于存储文件元信息

 

2.Inode的内容

Inode包含文件的元信息

  文件的字节数

  文件拥有者的user ID

  文件的Group ID

文件的读 写 执行权限

文件的时间戳

......

stat命令可以查看某文件的inode信息

  示例:stat aa.txt

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

  Ctime(change time)

  最后一次改变文件或目录(属性)的时间

Atime(access time)

最后一次访问文件或目录的时间

Mtime(modify time)

最后一次修改文件或目录(内容)的时间

3.目录文件的结构

  目录也是一种文件

 目录文件的结构

 

 

每个inode都有一个号码,操作系统用inode号码来识别不同的文件

Linux系统内部不适用文件名,而使用inode号码来识别文件

对于用户,文件名只用inode号码便于识别的别称

 

Inode的号码

用户通过文件名打开文件时,系统内部的过程

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

查看inode号码的方法

  ls -i命令:查看文件名对应的inode号码

  ls -i aa.txt

  stat命令:查看文件inode信息中的inode号码

  stat aa.txt

 

一般inode表会占用文件系统磁盘空间1% 一个目录文件的内容就是一个该目录下所有文件目录项的列表

 

4.文件存储小结

 

 

 

inode的大小

Inode也会消耗硬盘空间

  每个inode的大小

  一般是128字节或256字节

格式化文件系统时确定inode的总数

使用df -i 命令可以查看每个硬盘分布区的inode总数和已经使用的数量

每个inode节点的大小,一般是128字节或256字节。Inode节点的总数,在格式化时就给定了,一般是每1kb或每2kb就设置一个inode。假定在一块1gb的硬盘中,每个inode节点大小为128字节,每1kb就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘12.8%。

Inode的特殊作用

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

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

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

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

 

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

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

find ./ -inum 52305140 -exec rm -i {} \;

find ./ -inum 50464299 -delete

 

 

.链接文件

1.为文件或目录建立链接文件

链接文件分类

 

软链接

硬连接

删除原始文件后

失效

仍旧可用

使用范围

适用于文件或目录

只可用于文件

保存位置

与原始文件可以位于不同的文件系统中

必须与原始文件在同一个文件系统(如一个Linux分区)内

 

2.硬连接

ln 源文件 目标位置

软链接

ln [-s] 源文件或目录...  链接文件或目标位置

 

.恢复误删除的文件

 1.案例:恢复EXT类型的文件

1.1编译安装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

模拟删除并执行恢复操作

 

1.2恢复误删除的文件ext3

EXT类型文件恢复

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

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

fdisk /dev/sdc

partprobe /dev/sdc

mkfs.ext3 /dev/sdc1

mkdir /test

mount /dev/sdc1/test

df -Th

 

安装依赖包

yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++

编译安装 extundelete

cd/test

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4extundelete-0.2.4tar.bz2 tar jxvf extundelete-0.2. 4. tar. bz2

cd extundelete-0.2.4/

./configure --prefix=/usr/local/extundelete & &make && make install

In-s /usr/local/extundelete/bin/* /usr/bin/

模拟删除并执行恢复操作

cd /test

echo a>a

echo a>b

echo a>c

Echo a>d

ls

Extundelete /dev/sdc1 --inode 2

查看文件系统/dev/dc1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录。

 

 2.案例:恢复XFS类型的文件

xfsdump命令格式

  xfsdump -f 备份存放位置 要备份的路径或设备文件

Xfsdump备份级别(默认为0)

 0:完全备份

 1-9:增量备份

Xfsdump 常用选项:-f -L -M -s

xfsrestore命令格式

  xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

模拟删除并执行恢复操作

 恢复误删除的文件XFS

 xfs类型文件备针和恢复

Centos7系统默认采用xfs类型的文件,xfs类型的文件可使用 xfsdump与 xfsrestore工具进行备份恢复。

xfsdump的备份级别有两种:0表示完全备份:1-9表示增量备份。 xfsdump的备份别默认为0 xfsdump的命令格式为:

xfsdump | -f备份存放位置要备份的路径或设备文件

xfsdump命令常用的选项:

-f:指定备份文件目录

-L:指定标签 ession label

-M:指定设备标签media labe.,,,,,,,。

-s:备份单个文件,-s后面不能直接跟路径

 

xfsdump使用限制:

1.只能备份已挂载的文件系统

2.必使用root的权限才能操作

3.只能备份XFS文件系

4.备份后的数据只能让 xfsrestore解析

5.不能备份两个具有相同UUID的文件系统(可用blkid命令查看)

 

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

fdisk /dev/sdb

partprobe /dev/sd

Mkfs.xfs/dev/sdbl

mkdir /data

mount/dev/sdbl/data/

cd /data

cp /etc/passwd ./

mkdir test

touch test/a

 

使用 xfsdump命令备份整个分区

rpm -qa I grep xfsdump

yum install -y xfsdump

xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1)

xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1

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

cd /data/

rm-rf  ./*

Is

xfsrestore -f /opt/dump_sdb1 /data/

 

.日志文件

1日志的功能

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

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

2日志文件的分类

  内核及系统日志

   由系统服务rsyslog统一进行管理,日志格式基恩相似

  用户日志

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

  程序日志

由各种应用程序独立管理的日志问及爱你,记录格式不统一

3保存位置

  默认位于:/var/log目录下

4主要日志文件介绍

 

常见的一些志文件:

内核及公共消息日志: /var/log/messages:

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

计划任务日志:

/var/log/cron:记录 crond计划任务产生的事件信息。

系统引导日志:

var/og/ dmesg:记录 Linux系统在引导站程中的各种事件信息

邮件系统日志:

/var/log/ maillog:记录进入或发出系统的电子邮件活动。

用户登录日志:

/var/log/ secure:记录用户认证相关的安全事件信思。

/var/log/lastlog:记录每个用户最近的登录事件。二进制格式

/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式

/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式

 

5.内核及系统日志

5.1由系统服务rsyslog统一管理

  软件包:rsyslog-7.4.7-16.el7.x86_64

  主要程序:/sbin/rsyslogd

  配置文件:/etc/rsyslog.conf

 

5.2日志信息的级别

 

6.日志记录的一般格式

 

 

4用户日志分析

保存了用户登录.退出系统等相关信息

  /var/log/lastlog:最近的用户登录事件

  /var/log/wtmp:用户登录.注销及系统开.关机事件

  /var/run/utmp:当前登录的每个用户的详细信息

  /var/log/secure:与用户验证相关的安全性事件

分析工具

Users who w last lastb

 

5程序日志分析

  3.5.1由相应的应用成簇独立进行管理

  Web服务:/var/log/httpd

    access_log  error_log

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

access.log  cache.log

  FTP服务:/var/log/xferlog

5分析工具

  文本查看.grep过滤检索.webmin管理套件中查看

  awk.sed等文本过滤.格式化编辑工具

webalizer.awstats等专用日志分析工具

 

详细日志分析命令:

users:命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数

who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who的默认输出包括用户名、终端类型、登录日期及远程主机。

w:命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who命令的输出内容要丰富一些

last:命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last命令可以及时掌握 Linux主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵

lastb:命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用lastb命令查看以外,也可以直接从安全日志文件/var/log/ secure中获得相关信息

 

有哪些系统常见日志

/var/log/ messages  系统主日志文件

[root@localhost~)# cat /var/log/messages I wc-13784

Tail -f或者tailf或tail -1000查看时间,主机名,服务,具体信息

/var/log/dmesg  开机后的内核自检信息,dmesg命令看的是一样的

/var/log/ secure  涉及到登陆,验证之类的都会记录比如su

 

用户日志采用二进制格式,但可以用命令查看,避免认为修改内容,保证日志的有效性

/var/log/wtmp(last)

 /var/log/btmp(lastb)

/var/log/lastlog(lastlog)所有账号的登录信息

还有一些服务的日志比如

/var/log/yum. log

/var/log/cron

也并不是所有安装的程序的日志都会在/var/log下,只有rpm包安装的才会,源码装的在自己指定的目录中

 

 journalctl工具是 centos-7才有的工具

Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用 journalctlー个命令,查看所有日志(内核日志和应用日志)。日志的配置文件/etc/ systemd/ journald.conf

ps -ef I grep journald

journalctl -b  查看本次启动的日志

journalctl -k   查看内核日志

[root@localhost log]# journalctl | wc -l 查看系统总共的日志2787

journalctl -xe     经常用来查看最近报错的日志

-e从结尾开始看

-x:提供问题相关的网址

 

7.日志管理策略

及时作好备份和归档

延长日志保存期限

控制日志访权限

日志中可能会包含各类敏感信息,如账户、口令等

 

8.集中管理日志

将服务器的日志文件发到统一的日志文件服务器

便于日志信息的统一收集、整理和分析

杜绝日志信息的意外丢失、恶意篡改或删除

 

.总结

block与 inode

硬链接与软链接

恢复误删除的文件

Linux主要包含的日志文件

 

posted @   零六零一  阅读(132)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示