当我使用 Gparted(来自 12.04 安装介质)对 HDD 进行分区时,尝试格式化名为 sda16 的分区时遇到错误。错误消息如下:
mkdosfs: Device partition expected, not making filesystem on entire device '/dev/sda16' (use -l to override)
我可以看到 sda16 存在于 /dev 中。(ls -l sda*(显示选定的输出))
brw-rw---- 1 root disk 8, 15 Sep 26 15:05 sda15
brw-rw---- 1 root disk 259, 0 Sep 26 15:05 sda16
brw-rw---- 1 root disk 8, 2 Sep 26 15:05 sda2
奇怪的区别是,所有分区都是 8,除了 sda16 标记为 259。
我认为这是 Ubuntu 在某处设置的人为限制,因为根据维基百科,GPT 可以有大约 128 个分区。
谢谢。
更新:
在得到第一个答案后,我尝试在 sda16 后添加更多分区,并且没有任何问题。然后我还注意到 sda 和 sda16 的第二个数字都是 0(零)。这可能是它认为正在覆盖分区表的原因,正如 David Foerster 所建议的那样。
brw-rw---- 1 root disk 8, 0 Sep 26 16:32 sda
brw-rw---- 1 root disk 8, 1 Sep 26 16:32 sda1
brw-rw---- 1 root disk 8, 10 Sep 26 16:32 sda10
brw-rw---- 1 root disk 8, 11 Sep 26 16:32 sda11
brw-rw---- 1 root disk 8, 12 Sep 26 16:32 sda12
brw-rw---- 1 root disk 8, 13 Sep 26 16:32 sda13
brw-rw---- 1 root disk 8, 14 Sep 26 15:05 sda14
brw-rw---- 1 root disk 8, 15 Sep 26 16:32 sda15
brw-rw---- 1 root disk 259, 0 Sep 26 16:32 sda16
brw-rw---- 1 root disk 259, 1 Sep 26 16:32 sda17
brw-rw---- 1 root disk 259, 2 Sep 26 16:32 sda18
brw-rw---- 1 root disk 8, 2 Sep 26 15:05 sda2
不能回答问题,但这是我发现的:
事实上只有 sda16 有问题。在 Ubuntu 12.04 Gparted 中可以创建和格式化更高的数字,而不会出现问题。
此问题由设计导致。首先,ls -l 输出中的数字含义:它们是主设备号、次设备号对。因此,此处的 8、10 指的是 sda10。这些数字的用法在 kernel.org 中集中指定,具体如下:设备文本。
简单来说:主编号指定设备的类型,次编号是“id”。主编号 3 是针对 IDE 设备的,8 是针对 SCSI 设备的。对于 HDD 设备:次编号 0 代表完整的 HDD,后面的数字是各个分区。
此外,根据设备文本,SCSI HDD 最多应该有 15 个分区。我猜如果超过 15,主编号可能会扩展到 259。如您所见,sda16 的数字组合是 259,0。根据设备文本,此组合标识整个 HDD。这就是它抛出分区表错误的原因。
我认为,为了安全起见,我不应该使用以 0(零)结尾的 HDD 设备数字组合。由于其他软件可能使用相同的规范,因此以后也可能会造成后果。
我相信一个 GPT 布局 HDD 最多可以有 2 x 15 个分区。
答案1
正如问题的作者指出的那样,磁盘和磁盘的第 16 个分区的次设备号为 0(来源)与我们所知道的相反,mkdosfs 似乎认为,所有次要编号为 0 的设备都是磁盘。
我的结论是,通常可以安全地覆盖该安全措施-l
并格式化第 16 个分区,尽管其他工具也可能会抱怨。