Linux日志文件系统(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux日志文件系统

前言

在Linux系统中会出现各种故障,一般情况下故障的状态是很容易发现的而真正故障原因就很难察觉,所以熟悉分析Linux的日志文件就很有必要了,日志文件有助于管理者方便的定位到系统故障的原因。


一、inode与block

其实inode和block之间的关系就像是一本书一样,inode是一本书的目录,一本书会有很多内容,一个知识点或者一个故事会占很多页,一个block就相当于书中的一页内容。 所以说一般情况下一个inode会对应一个或多个block。


一个文件会占用一个Inode(不包含文件名)至少一个block块

inode节点:(文件属性:文件大小、权限、时间戳)

block块:数据文件即编写文件内容大小

文件数据存在于块中 ;文件元信息存在于inode

1.1概述

文件数据包括元信息与实际数据

文件存储在硬盘上,硬盘的最小存储单位叫做"扇区" ( sector )每个扇区存储512字节。

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

1.1.1block(块)

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块" ( block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小 ,最常见的是4KB ,即连续八个扇区组成一个块。

1.1.2inode(索引节点)

文件数据存储在"块”中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode(索引节点),也叫i节点。

1.1.3系统访问文件过程

当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据:


1.2inode的内容

(类似文件属性)

inode包含文件的元信息 :

文件的字节数

文件拥有者的User ID

文件的Group ID

文件的读、写、执行权限

文件的时间戳

PS:不包含文件名


1.3 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%。

1.3.1 inode 节点耗尽故障处理

实验:


创建磁盘分区

fdisk /dev/sdb ##创建一个30M的磁盘分区


挂载磁盘

mkdir mnt ###创建空目录,用作磁盘挂载点
mkfs.xfs /dev/sdb1 ###格式化磁盘,并写入格式
mount /dev/sdb1 mnt ###将磁盘挂载到空目录下
df -i ###查看磁盘分区inode节点



模拟节点耗尽

当可用inode用完之后磁盘无法写入新的文件,因此要删除无用文件以达到可以解放内存的作用



rm -rf ./* ###删除当前目录下所有
df -i ###显示inode




1.4查找文件对应的inode(内容)

第一种方式:  ls -i 
 第二种方式:  df -i
 第三种方式:  stat


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

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

atime(access time):最后一次访问文件或目录的时间

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




1.5硬盘分区后的结构


1.6文件名包含特殊字符,可能无法正常删除

这时直接删除inode,能够起到删除文件的作用


[root@Kiro opt]# find ./ -inum 67154696 -exec rm -i {} \;
[root@Kiro opt]# find ./ -inum 67154696 -delete

二、软连接与硬链接

2.1软硬链接的的格式

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


2.2软硬链接对比区别

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

三、恢复删除的文件

安装依赖包

e2fsprogs-libs-1.41.12-18.el6.x86_64rpm
e2fsprogs-devel-1.41.12-18.el6.x86_64rpm


配置、编译及安装

extundelete-0.2.4.tar.bz2

extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统。(ext4只能在centos6版本恢复)#使用fdisk创建分区/dev/sdcl格式化ext3文件系统

http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.


可以在这个网站里下载extundelete软件包


3.1恢复EXT类型的文件

extundelete是一个开源的Linux 数据恢复工具,支持ext3、ext4文件系统。


(ext4只能在centos6版本恢复)


3.1.1操作步骤及命令详解

先使用fdisk命令对新添加的磁盘分区并格式化

命令:

fdisk /dev/sdb
partprobe /dev/sdb(不重启识别新分区)或者
mkdisk.ext3 /dev/sdb1 对磁盘进行格式化
mkdir /test 创建一个文件夹
接着将磁盘挂载到文件加上
mount /dev/sdb1 /test
df -h查看挂载成功没

安装依赖包

yum install -y e2fsprogs-devel e2fsprogs-libs

将extundelete软件包上传到机器上

如果没有可以用wget命令下载

wget http://nchc.dl.sourceforge.net/project

/extundelete/extundelete/0.2.4/extundelete-0.2.4.

下载完后解压文件 tar jxvf extundelete-0.2.4.tar.bz2

解压完成后切换目录到他所在目录下进行编译安装(相当于你下载了一个安装包压缩包,你解压之后还要对他进行安装)

cd extundelete-0.2.4/

编译安装

用脚本进行配置

./configure --prefix=/usr/1ocal/extundelete
然后make && make install

安装完成后就可以测试删除恢复了


3.1.2示例

先添加一块硬盘在进行分区




现在直接运行命令是运行不了的必须运行/usr/local/extundelete/bin 才能运行
所以要软链接一下才方便使用
ln -s /usr/local/extundelete/bin/* /usr/bin/


模拟删除并执行恢复操作

cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdb1 – inode 2 ,

查看文件系统/dev/sdb1下存在哪些文件具体的使用情况。i节点是从2开始的,2代表该文件系统最开始的目录。

开始测试删除恢复



extundelete /dev/sdc1 --inode 2 在查看文件是否还存在


开始恢复数据 extundelete /dev/sdb1 --restore-all ###恢复/dev/sdb1文件系统下所有内容

恢复数据前先解挂载,防止数据重复

恢复所有内容


等待恢复完成后在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件

ls 查看一下目录


RECOVERED_FILES/


刚删除的文件全在这个目录下


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
72 2
|
4天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
112 78
|
8天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
38 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
119 48
|
4天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
40 13
|
17天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
19天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
28天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
20 3
|
4天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
17 0
下一篇
DataWorks