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日志并进行多维度分析。
相关文章
|
20天前
|
存储 监控 安全
在Linux中,如何进行日志审计?
在Linux中,如何进行日志审计?
|
19天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
4天前
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。
|
15天前
|
编解码 Linux 程序员
深度探索Linux操作系统 —— 构建根文件系统2
深度探索Linux操作系统 —— 构建根文件系统
32 12
|
15天前
|
Linux Shell 网络安全
深度探索Linux操作系统 —— 构建根文件系统1
深度探索Linux操作系统 —— 构建根文件系统
25 6
|
13天前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。
|
16天前
|
存储 监控 Linux
|
16天前
|
存储 监控 Linux
|
20天前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
20天前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?