何时以及为什么需要对块设备进行分区?

dub*_*jim 6 linux partition block-device

可能的重复:
无分区文件系统的优点

所以我有一个块设备,比如说/dev/sda/dev/loop0。显然,如果我想从前者启动,或者我想将它细分为具有单独文件系统的段,我需要对其进行分区。但假设我没有这些需求。相反,我只是计划使用我的整个块设备作为存储。也许我会将其作为raid 卷的一部分,或者我将使用cryptsetup 对其进行加密,或者我将其作为LVM 的PV。或者我只是想直接在上面安装一个文件系统。至少在其中一些情况下,使用未分区的设备似乎没有任何技术障碍。这就是我们通常对由losetup生成的块设备所做的事情,使用普通硬盘也可以做到这一点。我知道,因为我已经做到了。

现在,这有危险。例如,如果你继续运行fdisk /dev/sda,你将看不到任何有意义的东西。您可能会不小心将分区表或类似的内容写入您的设备,然后您在未分区设备上的数据将被冲洗掉。也许如果您甚至在连接了设备的情况下启动到 Windows,它就会被冲洗掉。人们会讲可怕的故事。

但我只想了解,如果设备只连接到您的 Unix 设置(为了简单起见,让我们只使用 Linux),并且您永远不会尝试向其写入分区表或 MBR 或类似的东西那,使用未分区的存储设备还有其他缺点吗?我不建议这样做;我只是想了解不这样做的真正原因是什么。

另一方面,对块设备进行分区有什么障碍或缺点/dev/loop0吗?也许这样做没有任何好处。但我希望它会起作用,不是吗?在这里,我也只是问,因为我想了解我们标准做法背后的原因。

Jim*_*ris 6

内核和其他程序偶尔会在磁盘上寻找分区,例如在启动时。如果你有一个分区表:那太好了,它会找到它们,你可以把任何你想要的东西放在那个分区里。

但是如果你没有分区,那么你必须小心不要在磁盘中放入看起来像分区的东西!否则,在后续启动时,该数据可能会无意中被解释为分区表。

为了安全起见,我总是制作一个分区表。


Ser*_*rge 4

一般情况下不需要分区。对于引导设备,只需要 a) 允许通过 BIOS API 访问引导分区(以允许 MBR 引导加载程序正确加载 grub 或其他引导加载程序(如果后者安装到分区上))和 b) 允许引导分区可由 grub 或其他引导加载程序读取(例如,lilo 无法读取 LVM)

从所有其他角度来看,没有必要对设备进行分区,除非有某种原因。