如果删除单个分区,所有剩余分区标签会发生什么情况?
例如,如果我有一个如下所示的布局:
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
/dev/sda5
如果我删除 /dev/sda2 将 /dev/sda3、/dev/sda4 和 /dev/sda5 “移动”它们的数字,我会得到这个:
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
或者“间隙”会保留在那里而不对标签进行任何更改,给我这个:
/dev/sda1
/dev/sda3
/dev/sda4
/dev/sda5
答案1
传统上,x86 硬件上的 Linux 使用MSDOS分区表。在这种情况下,删除/dev/sda2
不会将任何编号较高的分区向下移动,因为主分区的作用就像“插槽”:您可以按照您喜欢的任何顺序使用它们,并且删除一个分区不会影响任何其他分区。
如果您既是sda{1-7}
扩展sda4
分区又sda{5-7}
是该扩展分区内的逻辑分区,则删除sda6
会降档sda7
。逻辑分区在这方面的行为只是不同。
新版本的 Linux 正在切换到GPT 分区表相反,尽管这是一个缓慢的过程,因为有局限性防止此时批量转换。
在 GPT 情况下,您无需使用扩展分区即可在单个磁盘上获得超过 4 个分区,并且与 MSDOS 主分区一样,GPT 分区号的工作方式类似于插槽。您可以从范围中间删除分区,只留下一个空位,现有分区保留其编号。如果您随后创建一个新的,它就会填补该漏洞。
然而,您的问题询问的是分区标签,到目前为止我所讨论的一切都与标签无关。从 Linux 中使用的意义上来说,分区标签是文件系统的属性,而不是分区表的属性。它们的存在是为了防止设备名称的更改导致安装文件系统出现问题。通过使用文件系统标签,您不必担心设备名称更改,因为您是按标签而不是设备名称安装分区。这在 USB 等情况下特别有用,其中设备命名方案是动态的,并且部分取决于自上次重新启动以来之前插入的内容。
Linuxmkfs.*
程序通常使用-L
标志来指定标签。
要按标签而不是按设备名称挂载分区,请LABEL=mypartname
在 的第一列中使用/etc/fstab
。如果您检查当前的/etc/fstab
,您可能会发现已经有分区以这种方式安装。 Linux GUI 安装程序通常会为您提供方便。
您也可以通过标签交互地挂载文件系统,方法是将标签传递给-L
to mount(8)
。
GPT 确实允许您命名分区,但我不知道它与上面讨论的任何内容有任何关系。
编辑:使用 GPT 确实得到的一件事与这里相关,是每个分区的唯一标识符,称为 UUID。它们的工作方式与标签类似,但在几个方面有所不同:
UUID 是自动分配的伪随机数,而不是您自己选择的逻辑名称。
您可以通过 UUID 而不是通过标签来
-U
使用-L
分区。mount(8)
您使用
UUID=big-ugly-hex-number
而不是LABEL=mynicelabel
in/etc/fstab
。它们是分区的属性,而不是文件系统的属性,因此只要您可以使用 GPT,它们就可以与任何文件系统一起使用。一个很好的例子是 USB 记忆棒上的 FAT32 分区:FAT32 没有文件系统标签,并且由于它位于 USB 记忆棒上,因此您无法可靠地预测
/dev/sd*
它将获得哪个名称。