百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux 文件系统:恢复已删除文件的挑战

nanshan 2025-02-21 14:32 15 浏览 0 评论

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、数据取证、数据迁移解决方案,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。

天津鸿萌科贸发展有限公司是众多国际主流数据取证及恢复软件的授权代理商:Miray(HDClone/HDShredder)、Passware、PassMark、ElcomSoft、R-Studio、Systools、GetData、Stellar、ReclaiMe、UFS 等。

如今,Linux 操作系统越来越受欢迎。它的明显优势首先是免费。此外,该操作系统提供了种类繁多的版本及其衍生产品,可满足从手机到超级计算机等设备的不同用户需求。

Linux 操作系统使用独有的文件系统,包括 Ext2、Ext3 和 Ext4、XFS、ReiserFS、JFS (JFS2) 等。Linux 文件系统的功能各不相同,每个系统都有特定的用途。在文件删除过程中,每个文件系统都以自己的方式运行,导致不同的恢复结果,有时甚至会失败。

Linux 操作系统中数据是如何组织的?

与大多数其他文件系统一样,Linux 文件系统使用块数据结构。在逻辑层面,数据存储以小数据单元 - 扇区 - 通常为 512 字节大小运行。可以将存储扇区想象为具有序号的单元格。在写入数据片段时,需要一个或多个这样的扇区。在读取存储驱动程序地址此扇区的数据。

为了优化磁盘寻址,文件系统将相等的扇区集组合成可在逻辑级别使用文件系统驱动程序寻址的块。最小可能的区块大小是一个扇区。大多数文件系统(包括 Linux 文件系统)都使用块作为最小的可寻址磁盘单元。通常,小于一个块的文件或其片段将占用整个块。但是,某些文件系统(如 ReiserFS)可能会使用块内的剩余空间来分配小文件和文件片段。
通常,存储上的数据是这样组织的:一个文件被分配到一个块中;如果文件的大小超过块,则文件系统会再提供一个块来分配文件(ReiserFS 等情况除外)。数据被写入空闲磁盘块,不被任何文件或元数据(文件系统的技术信息)使用。

可用空间和碎片

许多连续或并发的请求 'create file''append data''truncate data''delete file' 使文件系统上的可用空间变得碎片化。

上图显示了最简单的碎片示例。在写入文件 3 时,没有空间按顺序写入文件片段,因此同一文件的片段被分配到两个未链接的空闲块中。在实践中,大文件可能包含多达数百个未链接的数据片段,每个片段有几个块。
文件系统不会立即使用 'delete' 命令擦除文件的片段,而是将这些片段占据的位置标记为 free。新文件将这个地方视为可以免费占用。因此,除非被新文件覆盖,否则文件实际上仍然是可恢复的。

碎片是如何链接的?

文件系统使用描述文件的特殊代理 – 信息节点 (简称 – inode) – 来链接有关文件碎片的信息。此信息包括对象类型、大小、分配表/列表/树的描述。
读取 inode,文件系统可以确定对象的类型并决定进一步的作 – 读/写/处理。Object size 表示对象占用的块数。最后,对象分配提供有关数据块实际位置的信息。
对象分配数据按以下方式组织:这些数据的关键部分是指向数据块或块的连续片段的指针的数组、列表或 B 树。此信息的第一部分或根作为 inode 的一部分存储。

恢复问题

通常,Linux 文件系统会在文件删除后清理部分 inode 信息。它们用零填充有关对象大小、对象类型/模式和分配的信息,从而导致有关文件的所有信息丢失。我们假设上图中的文件 2 和 3 是没有标头的 RAW 加密文件,并且两者都占用了完整的块,并且都被删除了。因此,没有关于文件分配的信息,使得数据恢复软件无法检测文件 2 和文件 3 的边界。遗憾的是,在实践中,是情况愈发恶化的数据恢复操作对于 Linux 文件系统来说太常见了。这通常受大量文件碎片等因素的影响。

解决方案

幸运的是,数据恢复软件提供了一组恢复方法,但不能保证 100% 的结果。他们包括:

  • 文件系统日志的分析。以前版本的文件描述符可能仍保留在日志中。
  • 分析不完整的结构。该软件可以通过可能仍在磁盘上的未擦除的文件元数据片段来预测文件系统文件。
  • 基于签名的搜索:软件搜索已知的文件片段,并对以下片段的内容进行假设。但恢复结果通常不会给出确切的文件大小,除非找到本身包含文件大小的文件名头。这种方法对于严重碎片化的情况是无能为力的。
  • 统计片段分析:该软件根据数据分析的统计方法对片段链接进行假设。这种方法对同质文件(大多数 bmp 图片、一些档案等)有帮助,但对异源内容(如 CD/DVD 映像等)无能为力。
  • 搜索丢失的文件系统结构:该软件查找丢失的文件系统结构,帮助确定丢失片段的布局。

如果您打算自己进行数据恢复,请准备好执行大量手动工作来分析未命名文件或文件片段,因为大多数数据恢复软件在从 Linux 文件系统恢复后通常会产生不完整的恢复。或者,您可以求助于专业且可靠的数据恢复公司,确保文件安全地得到恢复。

优秀的数据恢复软件通常具有强大的机制,比如按签名进行 IntelliRAW? 搜索,允许用户识别文件类型和分析文件系统结构。使用高效的软件技术,能够以最少的工作量获得最好的恢复结果。

鸿萌从事数据恢复业务二十余年,同时是众多国际主流数据恢复软件的代理商,可以为用户提供专业的数据恢复服务以及推荐最具有性价比的软件产品。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: