什么是“未分配空间”?

Has*_*ziz 32 windows hard-drive data-recovery filesystems

再一次,在这里我试图围绕一些 HDD 和文件系统的概念进行思考。

当 Windows 将驱动器显示为具有“未分配空间”并提示驱动器进行初始化时,这究竟意味着什么 -驱动器上没有文件系统,或者只是 Windows 无法识别文件系统?

未分配空间的概念是 Windows 的概念,还是硬盘驱动器的概念——换句话说,其他操作系统是否有可能写入未分配的空间

如果是这样,这是否意味着在 Windows 之外不需要文件系统来写入硬盘驱动器?

use*_*686 58

其他操作系统是否可以写入未分配的空间?

是的,任何操作系统都可以写入任何磁盘位置,无论是在分区内部还是外部。

分区只不过是操作系统同意使用的区域列表——磁盘始终表现为单个连续存储介质,而不是知道 关心被分区。

(实际上,分区表本身存储在同一个磁盘上,扇区 0-32ish,当工具喜欢fdiskdiskpart编辑分区时,它们所做的就是更新存储在这些扇区中的表。)

这是否意味着在 Windows 之外,不需要文件系统来写入硬盘驱动器?

对于大多数操作系统来说,这并不是绝对必要的。具有足够权限的程序可以打开原始设备文件,例如/dev/sda4在 Linux 或\\.\Device\Harddisk5\DR5Windows 上,并将字节读/写到任何位置。

该程序实际上可以通过这种方式创建自己的私有文件系统,或者使用一些其他结构(例如,有将 DB 写入原始分区的 SQL 数据库引擎)。或者它可以在任何地方转储数据。

如您所知,文件系统仅允许操作系统中的所有程序共享相同的驱动器或分区。操作系统负责空间分配、可靠性等,程序不需要考虑文件和文件夹以外的任何事情。

当 Windows 将驱动器显示为具有“未分配空间”并提示驱动器被初始化时,这究竟意味着什么 - 驱动器上没有文件系统,或者只是 Windows 无法识别文件系统?

当“磁盘管理”应用程序提示要初始化驱动器时,这意味着它甚至无法识别分区表(它应该指示哪些区域已分配,哪些未分配)。

Windows 可以识别 MBR 和 GPT 分区表,但是当出现此提示时,表示两者都没有找到。因此,Windows 甚至还没有到查看文件系统的地步——它无法知道文件系统在哪里(如果有的话)。

然而,当 Windows 发现一个具有无法识别的文件系统的分区时,“磁盘管理”不会提示格式化或以其他方式覆盖它——它只是显示该分区具有无法识别的文件系统,通常缩写为“RAW”。

当其他操作系统在 MBR 或 GPT 磁盘上创建它们的分区时,它们通常会遵循现有的分区表,而不会开始使用不同的分区表。因此,如果例如 Linux 或 FreeBSD 创建了自己的分区,它们在磁盘管理中作为实际分区可见——只要它们在 MBR 或 GPT 中,它们就不会仅仅因为文件系统被未能识别。

但是,不要将 DiskMgmt 提示初始化磁盘与 Windows 资源管理器提示格式化磁盘混淆。前者是关于未知分区表,而后者是关于已知分区中的未知文件系统。

(有时 Windows 会不小心将驱动器号分配给未知的文件系统,尝试通过 Windows 资源管理器打开它会导致“格式化”提示。)

简而言之:

  • 提示初始化磁盘?未找到分区表(MBR 或 GPT)。磁盘可能是空的,也可能使用非标准分区表,例如 APM。

  • 没有提示,但显示未分配的空间?空间确实是未分配的。磁盘的分区表没有对应于该区域的条目。

  • 没有提示,但显示未知分区?该分区包含无法识别的文件系统。

  • 提示格式化磁盘?该分区包含无法识别的文件系统。


LPC*_*hip 12

让我们首先解释一下硬盘驱动器的工作原理。

显然,硬盘驱动器有空间。你在整个驱动器上创建一个分区方案,然后用分区填充它。分区是在分区空间中预留的一个固定大小的空间。(这是一个非常基本的解释。如果我将 RAID 添加到组合中,我担心答案会变得不必要的复杂)

如果你的硬盘只有一个分区,并且它的大小小于硬盘的大小,那么还有空间留给另一个分区。该位称为未分配空间。

现在,这是否意味着您始终可以在那里创建分区?不可以。有可能另一个操作系统在该空间中创建了一个您的操作系统完全不熟悉的分区。

如果是这种情况,您的操作系统要么将其视为未知分区,要么在最坏的情况下视为未分配空间。如果您在未分配的空间中创建一个分区,而该分区实际上是由另一个操作系统分配的,那么在大多数情况下,您会破坏之前的分区。

还有另一种可能性,驱动器具有您的操作系统不熟悉的分区方案。如果是这种情况,操作系统会认为驱动器未初始化,并要求您对其进行初始化。在 Windows 中,它要么是 GPT 要么是 MBR,但在已知的情况下,驱动器(或 SD 卡等)被格式化为特殊设备,其独特的格式是一种安全形式。

  • 关于“另一个操作系统可能在该空间中创建了一个您的操作系统完全不熟悉的分区”......这是可能的,是的,但其他操作系统_仍会在分区表中看到它,包括 Windows。他们只是无法_打开_它。 (7认同)

wal*_*lyk 6

按照惯例,硬盘驱动器(或其等效物,例如 USB 拇指驱动器)上有一个分区表。MBR(主引导记录)样式的分区表适合驱动器开头的一个扇区(512 字节)(扇区号 0)。MBR 还包含一个引导加载程序,因此分区表空间仅限于四个“主”分区(尽管 1980 年代的某些软件支持八个分区)。每个 MBR 分区条目具有:

  • 一个类型代码(一个字节),表示对应的分区是 NTFS、FAT-32(四种风格)、FAT-16(八种风格)、FAT-12、Linux 交换区等。分区代码 0(零)表示“原始”,或“没有有意义的内容”,“或忽略分区内容”。
  • 分区是否被标记为可引导。每个磁盘最多有一个分区可以启用此标志。
  • 分区起始扇区的磁盘地址
  • 分区的结束扇区——或扇区数。 早期的 PC 使用柱面/磁头/扇区编号;大约在 1995 年之后,使用“逻辑块号”单个 32 位值取代了 cyl/head/sect 寻址

由于很快就无法容忍最多四个分区,因此附加分区的机制是MBR 中的“扩展分区”,其中特别标记的分区可以具有包含另一个分区表的嵌入式 MBR。因此,尽管某些分区工具可能会造成一些人为的限制,但可以将磁盘划分为数十个分区。

一个GPT在本质上并不限于四个分区。它的基础在磁盘上占用超过 512 个字节,通常在 4 到 16 兆字节范围内。但是分区的含义是一样的。


磁盘分区表中包含磁盘的每个扇区,最常用的短语是“没有未分配的空间”。所以你的问题的通常答案是未分配的空间是所有分区之外的空间。但是,如果分区被标记为类型零(原始),则术语会产生歧义,因此可能存在将原始分区视为在某种意义上未分配的工具。

当 Windows 将驱动器显示为具有“未分配空间”并提示驱动器被初始化时,这究竟意味着什么 - 驱动器上没有文件系统,或者只是 Windows 无法识别文件系统?

这意味着没有分区表或所有分区条目都为空。Windows 很乐意忽略无法识别的文件系统。

未分配空间的概念是 Windows 的概念,还是硬盘驱动器的概念——换句话说,其他操作系统是否有可能写入未分配的空间?

这是所有支持 PC 软件的标准操作系统都遵守的硬盘惯例。不确定“换句话说”是什么意思。是的,可以写入未分配空间(即使在 Windows 中),但正确的礼节是创建一个包含未分配空间的分区,格式化其中的文件系统(写入“未分配空间”),然后写入文件和目录。

如果是这样,这是否意味着在 Windows 之外,不需要文件系统来写入硬盘驱动器?

对于行为良好的系统,不。协作系统需要文件系统到位,权限设置适当等。但是,在 Linux 中(例如)将磁盘本身作为一个大文件(原始磁盘访问)打开并直接写入它是微不足道的。它需要管理访问权限和一些指导或计算来确定写入位置。

但是,忽略文件系统和分区是不好的。它们极大地改善了磁盘管理,让生活变得更轻松、更理智。最终有可能编写完全无视理智和礼貌的叛徒软件,并在它想要的磁盘上的任何地方写入。

但是,我从这个问题中感受到的元性可能是误解了您是否打算遵守 Windows、Linux 等中非管理员/非系统模式强加的权限和限制。

  • @MSalters 说它们被视为块设备可能更正确。如果 USB 驱动器归零,则仍然需要创建分区表和文件系统。不过,它不一定是“DOS”。也可以将“tar”文件直接写入 USB 驱动器,而无需文件系统,就像它是磁带一样。我认为 PLAN9 使用了未分区的空间。 (2认同)
  • 软盘几乎从来没有分区表。CD、DVD、蓝光仍然没有。曾经流行的“类似软盘但更大”的磁盘(例如 Iomega 的 ZIP 和 Bernoulli 驱动器)通常没有分区表,但有时有,具体取决于用例。这些“比软盘大”的可移动磁盘有时被称为“超级软盘”,没有分区表的 U 盘今天仍然被称为“超级软盘格式”。当我只使用 Linux 时,我的拇指驱动器上从来没有分区表,因为……你为什么需要一个? (2认同)

Vil*_*lx- 6

其他答案已经说明了很多,我将添加更多细节以填补一些空白。

作者提出的问题之一是:

如果是这样,这是否意味着在 Windows 之外,不需要文件系统来写入硬盘驱动器?

实际上,即使在 Windows 中也不需要它。但魔鬼在细节中:

在底层,硬盘只是一堆可以读写的字节。每个字节都有一个数字——第一个字节、第二个字节等等。……就是这样。只是一堆编号的字节。请注意,没有“文件”或“目录”或“分区”之类的概念。当操作系统想要读取或写入驱动器时,在最低级别它只是告诉它“请给我字节 123 到 456”或“请将此数据写入字节 789 到 1234”。或类似的东西。

事实上,您也可以轻松编写这样的程序。如果您是一名程序员,您需要做的就是\\.\PhysicalDrive0像普通文件一样打开一个特殊的文件名,然后您就可以完全访问驱动器上的所有字节,就像它们被写入一样。(注意:这是在 Windows 下。在 Linux 下你打开一个文件/dev,其他操作系统可能还有其他机制)

请注意,为此您需要管理员权限,因为您确实可以访问驱动器上的所有敏感信息。但除此之外,仅此而已。我自己做过。

现在,实际上,我对你撒了一点谎。一点善意的谎言。驱动器实际上并不处理单个字节。它在“扇区”中读取和写入数据。这只是“一次一堆字节”的奇特名称。对于“旋转锈”类型的驱动器,扇区通常为 512 字节大。因此,当您读取或写入驱动器时,您需要以 512 字节的大块进行。因此,Windows 实际上告诉驱动器“获取扇区 1 到 5”或“写入扇区 6 到 8”。但这并没有真正改变整个想法。

SSD 通常具有更大的扇区,并且大小可能因驱动器而异。通常它是 4096 字节,但也有具有 2048 字节扇区的驱动器,可能还有其他值。再次 - 并不重要,只是要记住一些事情。操作系统通常将它抽象出来,允许你读写任何东西,然后做一些额外的工作来确保结果是你期望的。

下一步是wallyk 在他的回答中很好地解释的“分区表” 。

分区表不是驱动器关心的任何东西——它关心的只是读取和写入字节扇区。但是我们人类希望将驱动器分成“分区”,这就是分区表的用武之地。按照惯例,分区表存储在驱动器的最开始位置。它也可能在某些标准中记录在某个地方,以便所有工具和操作系统对它们都有相同的理解。

MBR(主引导记录)表是一个较旧的标准,自 1982 年以来一直存在。由于当时没有人甚至梦想过 SSD 或扇区不同于 512 字节,因此 MBR 被设计为恰好占用 1 个扇区(512 字节)并且具有一系列其他限制,特别是与更大的驱动器尺寸有关。

最终,驱动器变得足够大,以至于 MBR 还不够,并且引入了 GPT(GUID 分区表)来绕过这些限制。

现在,无论您使用哪种格式,分区表实际所说的只是“分区 1 存在于扇区 50 到 5000 上,并使用 FAT32 文件系统进行格式化;分区 2 存在于扇区 5001 到 10000 上并已格式化使用 EXT4 文件系统”等。

操作系统可以从中找到实际的分区并解析文件系统。这就是您获得文件和文件夹以及权限以及操作系统为您提供的其他内容的地方。这一切都是在软件中完成的。

还有一点要注意 - 正如我所说,分区表是一种约定,而不是必需品。硬件不在乎,软件在乎。因此,即使没有驱动器,您也可以使用驱动器。例如,在当今时代,在 Linux 中使用 LVM 来管理您的硬盘驱动器是一种常见的做法(这是一个很长的故事)。一种可能性是将整个驱动器添加到 LVM 管理的设备池中。在这种情况下,驱动器上将没有分区表 - LVM 将管理它。