我正在与几个朋友讨论的事情,我们无法弄清楚。在 FreeBSD 和 OpenSolaris/Solaris 中,当您对驱动器进行分区时,会创建一个覆盖整个磁盘的分区:
da0s1c
c0d0s2
例如,我的 OpenSolaris 服务器中的主硬盘驱动器的输出:
[email protected]:/dev/rdsk# prtvtoc /dev/rdsk/c4d0s2
* /dev/rdsk/c4d0s2 partition map
*
* Dimensions:
* 512 bytes/sector
* 63 sectors/track
* 255 tracks/cylinder
* 16065 sectors/cylinder
* 7296 cylinders
* 7294 accessible cylinders
*
* Flags:
* 1: unmountable
* 10: read-only
*
* Unallocated space:
* First Sector Last
* Sector Count Sector
* 0 16065 16064
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 2 00 16065 117145980 117162044
2 5 01 0 117178110 117178109
8 1 01 0 16065 16064
使用分区 2 背后的原因是什么?为什么不分区0?在 unix 的历史上,这是在哪里决定的?它在那个时间点提供了哪些遗留功能?使用完全消失的 GPT 分区(根据我的发现)。
只是一些有趣的事情......
由于ParoX提到了 GPT 样式分区以及 Solaris 如何在 vtoc 布局方面表示它,这里是我的一个磁盘的输出,它是 1 TB 并且在 ZFS 阵列中,并且已经自动设置了 GPT:
[email protected]:~# prtvtoc /dev/rdsk/c5d0
* /dev/rdsk/c5d0 partition map
*
* Dimensions:
* 512 bytes/sector
* 1953520128 sectors
* 1953520061 accessible sectors
*
* Flags:
* 1: unmountable
* 10: read-only
*
* Unallocated space:
* First Sector Last
* Sector Count Sector
* 34 222 255
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 4 00 256 1953503455 1953503710
8 11 00 1953503711 16384 1953520094
回到过去,我们会使用整个磁盘的“dd”进行备份。因此,我们有了“c”切片,以便我们可以用一个命令完成所有操作。
这就是“c”切片存在的原因。
DD并不完美。如果磁盘只有 10% 已满,那么您将花费 90% 的时间来复制“垃圾”或(例如)用于“交换”(无法备份)的块。“dd”是浪费时间,除非您的磁盘快满了,或者由于某种原因,您需要精确的逐块复制。
这一切都发生在 RAID-0 磁盘镜像和卷管理器为您完成所有此类分区复制之前。
(有人在“c”切片上提到了“dump”。那是行不通的。“dump”是一个文件一个文件的副本[实际上,inode by inode],所以它不起作用。)
还有人问“为什么是c,不是第一个分区,还是最后一个”。答案是“传统”。我只能猜测 Ken 或 Dennis(或者可能是 Bill Joy 或 Kirk McKusick)当时有充分的理由。我假设他们已将前两个分区标签用于实际分区。然后有一天,有人想到使用重叠分区进行备份,“c”是下一个可用的分区。由于当时只有 2-3 台 Unix 机器,这样做两次可以“设定标准”,以便在其余时间使用。
本文描述了历史事故如何成为永远不会发生的标准的另一个示例:了解 bin、sbin、usr/bin、usr/sbin 拆分
这是传统上切片布局如下的结果:
s0:根
s1:交换
s2:bkup
他们将最重要的东西分配给第一个切片并继续降低重要性:)(如果您没有根分区,谁需要交换?此外,如果您没有数据,谁需要备份任何东西。)
我不知道这是什么时候决定的(可能很早;每当 Solaris 开发人员决定使用 Solaris 样式的磁盘标识符和切片时。)
由于 MBR 风格的分区方案不适用,因此问题在 GPT 中消失了。(虽然我个人不熟悉 Solaris 如何表示 GPT 分区......)
希望这有助于 XD
================
编辑:
现在你让我感兴趣了。我将发布一些我在上班前找到的链接。
Solaris 2.4 系统管理员答案簿:习惯切片
Solaris 2.4 用户指南:外设管理
这两个文档都是大约 1994 年,他们甚至将 s2 的创建定义为集成到“格式”中。一定要继续挖XD!
关于这个问题的更多信息:
根据FreeBSD 上的http://en.wikipedia.org/wiki/BSD_disklabel,其他操作系统也在使用的磁盘上的 c 分区只会扩展到整个 FreeBSD 切片,而分区 d 将是整个硬盘驱动器!
FreeBSD 手动磁盘添加参见 18.3.1 第 3 节。
为什么 scsi id 3 是老式 Sun OS 中的默认引导盘?
所有这些瞬间都会消失在时间里,就像雨中的泪水。