为什么硬盘里的数据永远无法移动?

为什么硬盘里的数据永远无法移动?

我理解,要创建新分区,分区软件基本上会将数据“向上”移动,以便为分区提供更多空间。但是,

由于某种原因,某些数据无法移动。(来源)

我以为只要电脑没有运行(重启时调度分区),基本上所有类型的数据都可以移动。我想知道数据无法移动的原因可能是什么?

或者更确切地说,什么类型硬盘里的数据无法移动?

答案1

除了其他答案中提到的事实之外,如果计算机没有运行,它就不可能做任何事情,这里最大的线索应该是 Red Hat 文档明确指出有多种软件可以执行这些任务,而且它们的行为方式不同。不同软件对不可移动内容的定义也不同。不同的磁盘碎片整理程序对可移动和不可移动内容的定义也不同,并且会拒绝移动不同内容。

例如:在 MS-DOS/PC-DOS/DR-DOS 和 DOS+Windows 时代,大多数磁盘碎片整理实用程序拒绝移动任何带有systemhidden属性的文件。这是因为 BIOS 文件ibmbio.comio.sys被特别放置在磁盘上,这是因为 DOS 使用的 FAT VBR 引导加载程序代码存在限制。BDOS 文件ibmdos.commsdos.sys由 BIOS 中功能更强大的加载程序加载,并且没有相同的放置限制。但是磁盘碎片整理程序不知道哪些文件是什么,因为名称各不相同,更不用说处理多个 DOS 版本之间的细微差异以及 Windows 3.x 页面文件、SuperStor 压缩卷等其他内容。因此,他们又回到了易于实现假设任何标有这些属性的文件(上述所有文件通常都是默认的)因此被系统管理员指定为不可移动。

如果我没记错的话,Windows NT 自 4.0 版以来就定义了一个标准碎片整理 API,FSD 应该实现该 API,磁盘碎片整理程序可以使用该 API。因此,如今在 Windows NT 上,被认为不可移动的内容通常是文件系统驱动程序 (FSD) 的职责,而不是磁盘碎片整理实用程序的职责。因此,在 NTFS 卷中被视为不可移动的内容在很大程度上取决于所使用的 NTFS FSD 版本。Windows NT 5.1 发布时吹捧的功能之一是对 NTFS FSD 的改进,允许对目录、MFT、卷位图和其他元数据 MFT 条目、加密文件以及卷的分配单元大小大于 4KiB 的文件进行碎片整理。

所有这些变化,从实用软件到实用软件、从 FSD 版本到 FSD 版本的变化,都超出了 Red Hat 试图描述的范围,而这正是 Red Hat 用四个字“这样或那样的原因”所涵盖的。

答案2

当您在与正在运行的操作环境关联的分区上运行碎片整理或其他类似实用程序时,不可移动文件通常是一个问题。在 Windows 中,这些文件包括注册表、页面文件、元数据文件等。

在大多数情况下,在非活动分区上使用碎片整理或分区实用程序意味着这些曾经不可移动的文件现在可以重新定位到分区的开头和/或进行碎片整理。

在您安装新操作系统的问题背景下,您应该在未安装的卷上运行一些碎片整理程序(例如,使用 livecd),之后您应该能够安全地使用 gparted 或操作系统安装分区管理器来缩小现有分区。

答案3

不可移动文件的一个很好的例子是 Windows pagefile.sys。Windows 运行时它是不可移动的,因为它对于 Windows 的运行至关重要。

它是存储“虚拟内存”的地方。

答案4

从您提供的来源来看,上下文似乎是对分区进行碎片整理和重新组织(“压缩”),以准备重新分区。我真的想不出任何无法移动数据的原因(假设所有这些都发生在该分区上运行的任何操作系统之外)。也许是在谈论坏扇区?现在这真的不是什么大问题。或者可能是某些奇怪的情况,某些文件的位置是预先确定的(不是由 FAT 确定的),因此“移动”它们没有意义。

相关内容