Чому зріз 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 ТБ і знаходиться в масиві 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

Ніколи насправді так не думав про це, але інтригує зараз, коли ти змусив мене замислитися над цим. Цікаво дізнатися, чи хтось відповість.
Мілнер

хммм. Я знаю, що в Solaris це називалося "резервним" фрагментом. Цікаво, чи це був спосіб резервного копіювання всього диска, включаючи карту розділів, на одному звалищі? Можливо, викачайте / dev / rdsk / c0t0d0s2 у файл із стрічкою, і ваш міг відновити весь фізичний диск, включаючи макет FS, за одне відновлення? Просто здогадка. Не вдалося знайти більше нічого в google. Гарне питання!
jj33

@ jj33: Звичайно, купіть, чому скибочку 2 ? Чому б не 0 або -1 чи якесь інше відмітне значення?
Едді

Відповіді:


7

Ще в давні часи ми б робили резервні копії, використовуючи "dd" всього диска. Тому у нас був фрагмент "с", щоб ми могли зробити це все за допомогою однієї команди.

Ось чому фрагмент "с" існує.

DD не є ідеальним. Якщо на диску всього 10%, ви витрачаєте 90% свого часу на копіювання блоків, які "барахло" або (наприклад) використовуються для "swap" (марно робити резервну копію). "dd" - це марна трата часу, якщо ваш диск майже не заповнений, або якщо з якихось причин вам потрібна точна копія по блоку.

Це було все до того, як дзеркальне відображення на дисках RAID-0 і менеджери томів зробили все таке копіювання розділів для вас.

(Хтось згадав "dump" на фрагменті "c". Це не буде працювати. "Dump" - це копія по одному файлу [насправді, inode by inode], щоб не працювати.)

Хтось ще запитав "чому це c, не перший розділ чи останній". Відповідь - «традиція». Я можу лише здогадуватися, що Кен або Денніс (або, можливо, Білл Джой чи Кірк Маккусік) ​​мали на це вагомі причини. Я припускаю, що вони використовували перші дві мітки розділів для фактичних розділів. Потім одного дня у когось з'явилася ідея перерозподілу розділу для створення резервних копій, а "c" - наступний доступний розділ. Оскільки на той час було всього 2-3 машини Unix, виконання цього вдвічі може «встановити стандарт», який використовується для решти часу.

Ще один приклад того, як історичні аварії стають стандартами, які ніколи не йдуть шляхом, описаний у цій статті: Розуміння розбиття bin, sbin, usr / bin, usr / sbin split


Так, але чому c, а не a ?
Крістіан Цюпіту

1
Чому був обраний цей лист? Не знаю. Або Річі, Томпсон, або, можливо, Білл Джой міг відповісти на це. Я здогадуюсь, що вони використовували 0, потім 1, а потім хтось має цю геніальну ідею перекриття мітки розділу. Наступний слот був доступний і набагато безпечніший, ніж переміщення перегородок. Пам'ятайте ... це було тоді, коли цілі університети мали 1 або 2 комп’ютери. Ви робили основні зміни системи рідко. Це було не так, як сьогодні, якби ви вносили такі зміни, ви вільно передумаєте свої машини. З 50 людей, які мають спільний доступ до одного комп’ютера, оновлення дочекаються, коли всі будуть готові.
TomOnTime

4

Це результат, коли скибочки традиційно викладаються наступним чином:

s0: root
s1: swap
s2: bkup

Першому фрагменту вони присвоїли найважливіше і продовжували зі зменшенням важливості :) (Кому потрібен своп, якщо у вас немає кореневого розділу? Далі, кому потрібно створити резервну копію, якщо у вас немає даних.)

Я не знаю, коли саме було вирішено це (напевно, досить рано; всякий раз, коли розробники Solaris вирішили використовувати ідентифікатори та фрагменти диска в стилі Solaris).

Проблема усувається з GPT, оскільки схема розділів стилю MBR не застосовується. (Хоча я особисто не знайомий із тим, як Solaris представляє розділи GPT ...)

Сподіваюся, це допомогло XD


=================
Редагувати:
Тепер ви зацікавили мене. Я опублікую декілька посилань, які я знайшов перед тим, як вирушати на роботу.

Solaris 2.4 Книжка відповідей "Сисадмін": Звичайні фрагменти
Solaris 2.4 Посібник користувача: Периферійне адміністрування

Обидва ці документи приблизно в 1994 році, і вони визначають створення s2 як інтегрованого у "формат" навіть тоді. Треба продовжувати копати XD!


Це допомагає, але все ще не є конкретною відповіддю, яку я шукав :-) Я вже знав можливі причини, чому і макет фрагментів за замовчуванням. Я хотів би твердих доказів чи доказів!
X-Istence

Радий перетягнути когось іншого в божевілля, що це питання :-).
X-Istence

Гаразд ... Концепція фрагментів, схоже, виникла десь біля випусків 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
Я звужу це до впровадження UFS в 1982 році в дереві BSD. Я зараз впевнений, що SVR запозичив концепцію BSD у своєму випуску 4.2 (після перекопування тони старих посилань програміста.) Завтра я знову
завітаю

1

Більше інформації щодо цього питання:

Згідно з http://en.wikipedia.org/wiki/BSD_disklabel на FreeBSD, розділ c на диску, який також використовується іншими операційними системами, пошириться лише на весь фрагмент FreeBSD, а розділ d - це весь жорсткий диск !

Розділ c адресує весь диск у виділеному режимі або весь фрагмент FreeBSD у режимі зрізів. Інші перегородки для загального користування.

Додавання ручного диска FreeBSD див. У розділі 18.3.1 №3.


0

Чому scsi id 3 був завантажувальним диском за замовчуванням у старовинних ОС Sun?

Усі ці моменти будуть втрачені в часі, як сльози під дощем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.