片C或片2为什么覆盖整个磁盘


14

我正在与几个朋友讨论某些问题,但我们无法弄清楚。在FreeBSD和OpenSolaris / Solaris中,对驱动器进行分区时,将创建一个覆盖整个磁盘的分区:

da0s1c
c0d0s2

例如,OpenSolaris服务器中主硬盘驱动器的输出:

xistence@Keyhole.network.lan:/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进行了设置:

xistence@Keyhole.network.lan:~# 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

从来没有真正想过那么多,但是现在让您开始思考,这很有趣。好奇地看看是否有人回答。
米尔纳,2009年

嗯。我知道在Solaris中它被称为“备份”片。我想知道这是否是一种在一次转储中备份整个磁盘(包括分区图)的方法?例如,将/ dev / rdsk / c0t0d0s2转储到磁带文件中,您可以在一次还原中恢复整个物理驱动器,包括FS布局吗?只是一个猜测。在Google中找不到更多内容。好问题!
jj33 2009年

@ jj33:当然,买为什么要切片2?为什么不使用0或-1或其他一些独特的值?
艾迪(Eddie)

Answers:


7

过去,我们将使用整个磁盘的“ dd”来进行备份。因此,我们有了“ c”片,因此我们可以用一个命令完成所有操作。

这就是为什么“ c”片存在的原因。

DD并不完美。如果磁盘仅占10%,则您将花费​​90%的时间来复制“垃圾”或(例如)用于“交换”的块(无用进行备份)。除非磁盘几乎已满,或者由于某种原因需要逐块复制,否则“ dd”是浪费时间。

在RAID-0磁盘镜像和卷管理器为您完成所有类型的分区复制之前,就已经完成了所有这些工作。

(有人在“ c”片上提到了“ dump”。这是行不通的。“ dump”是逐个文件的复制[实际上,是inode到inode的,因此无效)。)

有人问“为什么是c,而不是第一个分区或最后一个分区”。答案是“传统”。我只能猜测Ken或Dennis(或者可能是Bill Joy或Kirk McKusick)当时有很好的理由。我假设他们已将前两个分区标签用于实际分区。有一天,有人想到了使用重叠分区进行备份,而“ c”是下一个可用分区。由于当时只有2-3台Unix机器,因此两次执行此操作可以“设置在其余时间使用的标准”。

本文介绍了历史性事故如何成为永不消失的标准的另一个示例:了解bin,sbin,usr / bin,usr / sbin split


是的,但是为什么c而不是a
Cristian Ciupitu 09年

1
为什么选择那封信?我不知道。里奇(Ritchie),汤普森(Thompson)或比尔·乔伊(Bill Joy)都可以回答。我的猜测是,他们使用0,然后是1,然后有人对重叠的分区标签有了这个绝妙的主意。下一个插槽可用,比移动分区安全得多。记住...这是整个大学拥有1或2台计算机的时候。您很少进行重大系统更改。今天不像今天,如果您要进行这样的更改,就可以自由地重新构想您的机器。共有50人共享一台计算机,升级一直等到每个人都准备就绪。
TomOnTime

4

这是传统上将切片按如下方式布置的结果:

s0:根
s1:交换
s2:bkup

他们将最重要的内容分配给第一个片,然后继续降低重要性:)(如果您没有根分区,谁需要交换?此外,如果您没有数据,谁需要备份任何内容。)

我不知道是什么时候才决定的(大概很早;每当Solaris开发人员决定使用Solaris样式的磁盘标识符和片时)。

由于MBR样式分区方案不适用,因此GPT可以解决该问题。(尽管我个人并不熟悉Solaris如何表示GPT分区...)

希望这可以帮助XD


================
编辑:
现在,您已经对我感兴趣。我将发布一些我上班前发现的链接。

Solaris 2.4 Sysadmin答案书:常规片
Solaris 2.4用户指南:外围设备管理

这两个文档都是大约在1994年,他们甚至将s2的创建定义为集成到“格式”中。要继续挖掘XD!


它有帮助,但仍然不是我正在寻找的具体答案:-)我已经知道为什么的可能原因以及默认的切片布局。我想要可靠的证据或证明!
X-Istence,2009年

很高兴将其他人拖入这个问题的疯狂之中:-)。
X-Istence,2009年

好的...切片的概念似乎起源于BSD 4.2和Unix System V.4(1984-1989)的发行版本。。。当时有明显的原因。)
ParoX

docsrv.sco.com/cgi-bin/man/man?vtoc+7显然,UnixWare使用s0作为整个分区,而s1和s2分别是root和swap。有趣的...
ParoX

1
我将范围缩小到1982年在BSD树中引入UFS。我现在非常有信心SVR在其4.2版本中借用了BSD的概念(经过大量老程序员的引用翻阅之后。)明天我将再次访问该库,
大笑

1

有关此问题的更多信息:

根据FreeBSD上的http://en.wikipedia.org/wiki/BSD_disklabel,也被其他操作系统使用的磁盘上的c分区只会扩展到整个FreeBSD slice上,而分区d将是整个硬盘驱动器!

c分区以专用模式寻址整个磁盘,或以片模式寻址整个FreeBSD片。其他分区仅供一般使用。

FreeBSD手动磁盘添加请参阅18.3.1第3条。


0

为什么在老式Sun OS中将scsi id 3设置为默认的启动磁盘?

所有这些时刻都会随着时间的流逝而消失,就像雨中的泪水一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.