¿Por qué el segmento C o el segmento 2 cubren todo el disco?

14

Algo que estaba discutiendo con un par de amigos y no pudimos resolverlo. En FreeBSD y OpenSolaris / Solaris cuando particiona una unidad, se crea una partición que cubre todo el disco:

da0s1c
c0d0s2

Por ejemplo, la salida de mi disco duro principal en mi servidor 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

¿Cuál fue el razonamiento detrás del uso de la partición 2? ¿Por qué no la partición 0? ¿En qué parte de la historia de Unix se decidió esto? ¿Qué característica heredada sirvió en ese momento? Con la partición GPT que desaparece por completo (de lo que he encontrado).

Solo algo interesante ...

Dado que ParoX mencionó la partición de estilo GPT y cómo Solaris lo representa en términos de diseño vtoc, aquí está la salida de uno de mis discos que es de 1 TB y está en una matriz ZFS, y se configuró automáticamente con 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
X-Istence
fuente
Realmente nunca lo pensé tanto, pero es intrigante ahora que me tienes pensando en ello. Curioso por ver si alguien responde.
Milner
hmmm Sé que en Solaris se le conocía como el segmento de "copia de seguridad". Me pregunto si fue una forma de hacer una copia de seguridad de todo el disco, incluido el mapa de partición, en un solo volcado. Por ejemplo, volcar / dev / rdsk / c0t0d0s2 en un archivo de cinta y podría recuperar toda la unidad física, incluido el diseño de FS, en una restauración. Solo una suposición. No pude encontrar nada más en google. ¡Buena pregunta!
jj33
@ jj33: Claro, compre por qué rebanada 2 ? ¿Por qué no 0 o -1 o algún otro valor distintivo?
Eddie

Respuestas:

7

En los viejos tiempos, hacíamos copias de seguridad usando "dd" de todo el disco. Por lo tanto, teníamos el segmento "c" para poder hacerlo todo con un solo comando.

Es por eso que existe el corte "c".

DD no es perfecto. Si un disco está lleno solo un 10%, pasa el 90% de su tiempo copiando bloques que son "basura" o (por ejemplo) se usan para "intercambio" (inútil para hacer una copia de seguridad). "dd" es una pérdida de tiempo a menos que su disco esté casi lleno o si, por alguna razón, necesita una copia exacta, bloque por bloque.

Todo esto fue antes de que la duplicación de disco RAID-0 y los administradores de volumen hicieran todo ese tipo de copia de partición por usted.

(Alguien mencionó "dump" en el segmento "c". Eso no funcionará. "Dump" es una copia de archivo por archivo [en realidad, inode por inode] para que no funcione).

Alguien más preguntó "por qué es c, no la primera partición o la última". La respuesta es "tradición". Solo puedo adivinar que Ken o Dennis (o posiblemente Bill Joy o Kirk McKusick) tenían una buena razón en ese momento. Supongo que habían usado las dos primeras etiquetas de partición para particiones reales. Entonces, un día alguien tuvo la idea de la partición superpuesta para hacer copias de seguridad y "c" fue la siguiente partición disponible. Como solo había 2-3 máquinas Unix en ese momento, hacer esto dos veces puede "establecer el estándar" que se usa por el resto del tiempo.

En este artículo se describe otro ejemplo de cómo los accidentes históricos se convierten en estándares que nunca funcionan: comprensión de la división bin, sbin, usr / bin, usr / sbin

TomOnTime
fuente
Sí, pero ¿por qué c y no a ?
Cristian Ciupitu
1
¿Por qué se eligió esa carta? No lo sé. Ritchie, Thompson o Bill Joy podrían responder eso. Supongo que usaron 0, luego 1, entonces alguien tiene esta brillante idea de una etiqueta de partición superpuesta. El siguiente espacio estaba disponible y era mucho más seguro que mover particiones. Recuerde ... esto fue cuando universidades enteras tenían 1 o 2 computadoras. Realizó cambios importantes en el sistema raramente. No era como hoy, si estuviera haciendo un cambio como este, podría imaginar libremente sus máquinas. Con 50 personas compartiendo una computadora, las actualizaciones esperan hasta que todos estén listos.
TomOnTime
4

Es el resultado de las rebanadas que tradicionalmente se presentan de la siguiente manera:

s0: raíz
s1: intercambio
s2: bkup

Asignaron lo más importante a la primera porción y continuaron con una importancia decreciente :) (¿Quién necesita intercambiar si no tiene una partición raíz? Además, ¿quién necesita hacer una copia de seguridad si no tiene datos?)

No sé cuándo se decidió exactamente esto (probablemente desde el principio; cada vez que los desarrolladores de Solaris deciden usar identificadores y segmentos de disco estilo Solaris).

El problema desaparece con GPT ya que el esquema de partición de estilo MBR no es aplicable. (Aunque personalmente no estoy familiarizado con cómo Solaris representa las particiones GPT ...)

Espero que esto haya ayudado a XD


================
Editar:
Ahora me tienes interesado. Publicaré algunos enlaces que encontré justo antes de irme a trabajar.

Libro de respuestas de Solaris 2.4 Sysadmin: divisiones habituales
Guía del usuario de Solaris 2.4: Administración periférica

Ambos documentos son de alrededor de 1994 y definen la creación de s2 como integrada en 'formato' incluso entonces. Tengo que seguir cavando XD!

ParoX
fuente
Ayuda, pero aún no es la respuesta concreta que estaba buscando :-) Ya sabía las posibles razones de por qué, y el diseño de corte predeterminado. ¡Quisiera pruebas sólidas o pruebas!
X-Istence
Feliz de arrastrar a alguien más a la locura que es esta pregunta :-).
X-Istence
Ok ... El concepto de rebanadas parece haberse originado en algún lugar alrededor de los lanzamientos de BSD 4.2 y Unix System V.4 (1984-1989) ... Hora de llegar a la biblioteca>. <(No había mucho registro de internet en ese momento por razones obvias.)
ParoX
docsrv.sco.com/cgi-bin/man/man?vtoc+7 Aparentemente, UnixWare usa s0 como la partición completa con s1 y s2 como raíz e intercambio respectivamente. Interesante ...
ParoX
1
Estoy reduciendo esto a la introducción de UFS en 1982 en el árbol BSD. Ahora estoy bastante seguro de que SVR tomó prestado el concepto de BSD en su versión 4.2 (después de rebuscar en un montón de referencias del programador antiguo). Mañana
volveré a visitar
1

Más información sobre esta pregunta:

De acuerdo con http://en.wikipedia.org/wiki/BSD_disklabel en FreeBSD, la partición c en un disco que también está en uso por otros sistemas operativos solo se extenderá a todo el segmento FreeBSD, y la partición d sería el disco duro completo !

La partición c se dirige a todo el disco en modo dedicado, o al segmento completo de FreeBSD en modo segmento. Las otras particiones son de uso general.

FreeBSD Manual Disk Adding ver 18.3.1 número 3.

X-Istence
fuente
0

¿Por qué scsi id 3 era su disco de arranque predeterminado en Sun OS antiguo?

Todos esos momentos se perderán en el tiempo, como lágrimas en la lluvia.

Ronald Pottol
fuente