您当前的位置:首页 > 技术文章

文件碎片化与数据恢复难题

时间:2024-06-17 10:36:17

天津鸿萌科贸发展有限公司致力于数据恢复业务二十余年,为政府机构、各类大中型企业、医疗教育部门及个人用户等提供了专业的数据恢复服务,避免了重大损失。

文件系统是计算机存储的关键部分,负责组织文件并跟踪它们在设备上的物理位置。文件系统数据的碎片化一直是一个令人担忧的主题。您可能听说过一些文件系统遭受严重的碎片化,而另一些文件系统则部署了有效的措施来避免它。本文中将介绍什么是碎片,为什么会发生碎片以及它会产生什么影响,尤其是在数据恢复方面。

什么是文件系统碎片,为什么会发生?

在专注于文件系统碎片之前,首先需要熟悉文件系统的概念。它是指在存储介质(硬盘驱动器、SSD、U 盘等)的每个独立部分(分区)中管理数据的技术。文件系统在格式化过程中在其内部创建用于控制每条数据的存储方式和位置的方法和结构。多亏了它,数据以有序的方式保存,而不是连续的字节流。此外,文件系统还维护记录,允许在操作系统请求时即时检索文件。当操作系统需要从存储中删除某些数据时,文件系统还提供了执行此操作的机制。

不同的操作系统平台通常依赖于各种类型的文件系统。最常用的包括 FAT/FAT32、exFAT、NTFS、Windows 的 ReFS、macOS 的 APFS、HFS+、Linux 和 UFS 的 Ext4、XFS、Btrfs、F2FS、BSD 的 ZFS、Solaris、Unix。尽管它们本质上都执行相同的功能,但它们的设计和数据放置策略可能会有很大差异。

碎片是当某个文件系统无法在存储上提供连续区域以将整个文件保存到单个位置时发生的一种情况。因此,文件被分解并存储在磁盘的不连续的部分中,这些部分被视为片段。为了按顺序访问每个片段并读取此类文件,每个文件系统都会保留特殊的服务信息(元数据),其中包含指向这些相关片段的指针。

理想情况下,构成某个文件的片段应尽可能靠近。对于具有大量空白空间的全新驱动器来说,这通常不是问题。然而,随着时间的流逝,随着文件的创建、修改和删除,它们之间会出现差距,这些差距将被新数据填补。当传入的文件很小时,它们可以很容易地适应可用的间隙。但是,通常情况下,文件会比最大的空隙大得多。现有文件的大小也可能会增加,但可能没有相邻的间隙。为了不延迟地执行写入,文件系统倾向于将数据分配到它目前可以找到空间的地方,使文件的碎片分散在存储周围。

总的来说,碎片是老一代文件系统的特征,比如 Microsoft 的 FAT/FAT32。现代格式主要通过实施各种技术来寻求将其保持在最低限度:

  • 基于盘区的分配
  • 文件存储在称为盘区的连续区域中。范围显示为该区域及其长度的起始地址。如果可能,算法将选取一个为文件内容提供所需空间的扩展数据块,或者至少使用最少数量的扩展数据块。基于数据块的文件系统的典型示例包括 NTFS、APFS、HFS+、Ext4、XFS 和 Btrfs。
  • 延迟分配
  • 要写入的文件的内容缓存到 RAM 中,而实际的写入操作会延迟尽可能长的时间。当知道文件的最终大小时,最终选择足够大小的盘区的可能性要大得多,并且很快不需要进一步的盘区。此外,短期临时文件不必完全写入,可以直接从内存中删除。许多现代文件系统都使用延迟分配,包括 Ext4、XFS、Btrfs、ZFS 和 HFS+。
  • 动态碎片整理
  • 某些文件系统能够根据特定标准检测碎片文件,并自动重新定位其碎片,以使它们再次连续。例如,APFS、HFS+、Ext4 和 Btrfs 都采用了这种算法。

尽管如此,即使在现代文件系统中,碎片化也不能被视为一个已解决的问题。随着时间的增长,他们可能仍然会受到它的困扰,尤其是在以下情况下:

  • 用作系统驱动器的低容量 HDD 或 SSD;
  • 驱动器上的大量小分区;
  • 存储空间不足(已使用超过 85%-95% 的容量);
  • 大文件经常被编辑,尤其是在空间不足的情况下;
  • 当存储空间几乎已满时,删除和写入不同大小的新文件。

碎片化的负面影响是什么?

随着时间的流逝和文件系统的积极使用,存储在其中的文件可能会被分成数百甚至数千个片段,分布在驱动器上。这种状态可能会对性能产生严重影响,具体取决于所涉及的数字介质类型。机械硬盘驱动器将信息保存在旋转的磁盘盘片上。为了访问它,设备必须在表面上移动其读写头并找到所请求文件的每个片段。当它们分散在完全不同的位置时,到达它们并检索整个文件所需的时间要比仅仅读取一个大的连续块要长得多。这也导致驱动器的旋转组件被更广泛地使用,这反过来又缩短了设备的使用寿命。相比之下,固态硬盘没有机械部件,因此不易受到碎片导致的性能下降的影响。

除此之外,当遇到数据丢失和需要恢复文件时,碎片会加剧这种情况。首先,碎片文件由于被其他数据部分覆盖而失去完整性的可能性要高得多。此外,在某些情况下,内容可能仍存在于存储中,但由于大量碎片而无法恢复。从这个角度来看,本文将在下文中进一步阐述这个问题。

数据恢复中的文件系统碎片难题

要正确还原碎片文件,不仅需要确定其起始位置,还需要识别属于它的所有碎片并按正确的顺序排列它们以重建文件。文件系统通常依靠其元数据来跟踪这种对应关系。当服务记录仍然可用时,通常可以分析它们并发现哪些片段与哪些文件相关联。因此,只要文件没有被覆盖,就很容易取消删除它,无论它多么碎片化。

但是,当必须在没有元数据帮助的情况下提取此类文件时,情况会变得更糟。后者可能会由于某些逻辑错误而损坏或在格式化操作期间损坏。某些文件系统,如 FAT/FAT32,一旦文件被删除,就会故意擦除其中的一部分。在这种情况下,数据恢复工具可以根据其结构的知识找到文件的起始位置。它将在原始驱动器的内容(称为签名)中查找特定模式。但是,下一个片段开始的位置可能非常困难,甚至无法预测,特别是当一个文件被分成许多片段时,放置在很远的地方。

碎片化是数据恢复方面的一个严峻挑战。在没有可用的文件系统记录的情况下,即使是最复杂的算法也无法提供 100% 的结果。而且,不幸的是,最有价值的文件类型(图像、视频、办公文档、数据库、电子邮件等)的碎片化程度通常很高。大约 15% 的图像甚至 50% 的视频文件在 FAT/FAT32 文件系统中变得碎片化的情况并不少见,该文件系统经常应用于拇指驱动器和 U 盘等便携式媒体。有鉴于此,采取防范碎片化措施对于避免在发生任何逻辑事故时永久丢失数据至关重要。可以使用嵌入到 Windows 中的专用工具或同样为 Linux 和 macOS 开发的第三方实用程序,对最易受碎片化影响的文件系统进行碎片整理。