![fdisk - 我需要它吗或者我可以直接创建文件系统吗?](https://linux22.com/image/1455743/fdisk%20-%20%E6%88%91%E9%9C%80%E8%A6%81%E5%AE%83%E5%90%97%E6%88%96%E8%80%85%E6%88%91%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%90%97%EF%BC%9F.png)
我读到过有关 fdisk 能够创建分区 / 即把物理磁盘分成几个逻辑分区的信息。
如果我打算使用整个磁盘,是否仍然需要
1)使用 fdisk 创建占用整个磁盘大小的主分区或
2)我可以继续执行 mkfs.ext4 而不执行任何 fdisk 吗?
3)为什么——
已编辑 -> 在阅读了所有评论(有的说是,有的说否)后,我想如果有人能告诉我 fdisk 实际上能做什么就好了?这样我就能更好地理解为什么我们实际上需要它,而不是不需要它。
我尝试在 Google 上搜索,但大多数网站都在教你如何使用 fdisk,但没有教你为什么这样做(或者大多数为什么这样做是为了创建双启动系统),但我想知道为什么即使对于单个分区也需要这样做。
我也尝试过直接在磁盘上使用 mkfs 并将其挂载来存储数据和文件(似乎没有任何问题)——这让我更加好奇 fdisk 实际上对存储磁盘做了什么。
答案1
你不可以需要分区表。您的磁盘和文件系统在没有分区表的情况下也能正常工作。一些较旧的 BSD 甚至默认这样做,如果您选择危险地专注。
然而,出于兼容性原因,我们强烈推荐它。
稍微详细一点:
您可以直接在 /dev/sdb 上运行 mkfs.ext4。这样就可以了。然后您就可以毫无问题地挂载它了。(mkfs.ext4 -F -F /dev/sdb
)。
您可以通过这种方式设置可启动磁盘。它仍需要一些代码来启动。这意味着您需要跳过磁盘的第一位。(例如,MBR 通常使用的空间以及它后面的传统几个扇区)。从技术上讲,这仍然不是使用 MBR,尽管您会损失等效空间。
然而,对于任何现代设置来说,这几个扇区只是驱动器容量的一小部分。因此,我建议使用 GPT(或在古老的系统上使用 MBR)。但你能沒有。
答案2
即使要使用整个物理磁盘,也需要创建分区表。将分区表视为文件系统的“目录”,标识每个分区的起始和终止位置以及用于该分区的文件系统。
答案3
你可以在裸机上创建文件系统,但这种方法很少奏效。有些 U 盘就是这样组织的。但对于硬盘,你不想这样做。
如果它是您的主/唯一驱动器,那么如果您这样创建它,它将根本无法启动。BIOS 所做的是读取驱动器的第一个扇区并执行它(即跳转到它的第一个字节)。您真的想执行文件系统元数据吗?幸运的是,您不会这样做,因为 BIOS 包含故障安全功能 - 该扇区的最后两个字节需要为 0x55 0xaa,BIOS 才会将该驱动器视为可启动的。如果您有一个 UEFI 系统,情况会更糟,因为 UEFI 需要一个不同的 FAT 分区才能工作。
如果它是您的辅助硬盘,这可能会起作用,但仍然不建议这样做 - 没有自动检测功能,大多数工具会告诉您驱动器未格式化并需要分区(这会破坏您的数据)。
然后又是有时可以这样做,但方式非常黑客化,需要对多个文件系统的磁盘组织有复杂的了解。我曾经看到过一个关于可以刻录到可启动 CD、可启动 USB 驱动器甚至由旧 Mac 启动的映像的描述,但这是“如果我将文件系统长度设置为 xxx,当它被另一个架构执行时,它会作为无害的寄存器比较运行”的级别。
答案4
即使您打算使用整个磁盘,也必须对其进行分区。在这种情况下,分区的大小应与磁盘本身一样大(至少差不多。分区表会占用一些空间。有关详细信息,请参阅下文)。
当我向人们介绍分区和文件系统的概念时,他们通常只会想到“硬盘,空的 vs 满的”是这样的:硬盘是建筑物,而分区是实际的房间。您使用特定的文件系统格式化分区,然后使其可用,在建筑物类比中,这相当于声明房间类型,例如厨房与卧室(换句话说,如何使用它)。
现在,回到你最初的问题,你不能将文件系统放到未分区的驱动器上,因为分区表(驱动器的前 512 个字节)包含有关在物理驱动器上可以找到分区的位置的信息。要拥有文件系统,它必须从分区表可以引用的某个地方开始,并且它不能引用没有定义空间的文件系统,即分区。
如果我们将分区表放在建筑物类比中,我猜想它将对应于建筑物的蓝图。
更新反映您的问题编辑:fdisk 的作用是允许您选择分区的某些方面,例如大小、类型和物理位置,我相信您已经知道了。然后 fdisk 会将这些内容转换为分区表条目。基本上,它会确保分区表是最新的,其中包含磁盘上所有分区的“列表”,列表中的每个项目都说明了哪个分区可以在哪里找到,以及它是什么类型。这样操作系统就知道在哪里访问分区上的数据。