Warum gibt es auf einer MBR-Festplatte nur vier primäre Partitionen?

23

Ich lese die Dokumente bei CentOS.org .

In Abschnitt 25.1.2. Partitionen: Aus einem Laufwerk viele machen , lautet die folgende Anweisung:

Die Partitionstabelle ist in vier Abschnitte oder vier primäre Partitionen unterteilt. Eine primäre Partition ist eine Partition auf einer Festplatte, die nur ein logisches Laufwerk (oder einen logischen Abschnitt) enthalten kann. Jeder Abschnitt kann die Informationen enthalten, die zum Definieren einer einzelnen Partition erforderlich sind. Dies bedeutet, dass die Partitionstabelle nicht mehr als vier Partitionen definieren kann.

Ich verstehe nicht, warum es immer nur vier Partitionen geben kann. Ist es so, wie es am Anfang entworfen wurde? Kann es wirklich immer nur 4 primäre Partitionen geben?

Jongosi
quelle

Antworten:

36

Ist es so, wie es am Anfang entworfen wurde? Kann es wirklich immer nur 4 primäre Partitionen geben?

Ja, genau das ist es. Die Partitionstabelle an der Vorderseite einer MBR-Festplatte (im Gegensatz zu einer Festplatte im GPT-Stil) weist eine sehr strenge Datenstruktur auf, die aus den 1980er Jahren stammt, als Speicherplatz eine kostbare, kostbare Sache war. Die damalige Entwurfsentscheidung bestand darin, nur vier Partitionen zuzulassen, aber eine davon als erweiterte Partition zuzulassen, die als Zeiger auf eine andere Stelle auf der Festplatte fungierte, die viel mehr logische Partitionen enthalten konnte.

(Dies ist der gleiche Grund, warum MBR-formatierte Datenträger Probleme mit 2 TB + -Datenträgern haben. Cluster mit 512 Byte Größe und 32-Bit-Felder mit Clusteranzahl für Partitionsgröße = 2 TB maximale Datenträgergröße. Eine Clustergröße von 4 KB schlägt das Problem ein Stück weiter. )

GPT ist eine aktualisierte Methode zum Behandeln der Partitionierung, die diese Einschränkungen nicht aufweist.

sysadmin1138
quelle
1
Dies ist auch nur eine Einschränkung bei IDE-Discs. SCSI hat beispielsweise 8, wobei die dritte Partition eine Überlappungspartition ist, die sich über das gesamte Gerät erstreckt.
MadHatter unterstützt Monica am
18
@MadHatter Die Partitionstabelle selbst ist speicherunabhängig. Anscheinend beschreiben Sie Solaris Slices, bei denen es sich um ein etwas anderes Konzept handelt.
The-Wabbit
3
Ich habe nicht gedacht, dass dies der Fall ist, aber Sie haben völlig Recht, dass der größte Teil meiner SCSI-Partitionierungserfahrung von Solaris stammt. Ich verneige mich vor deiner Korrektur und danke dir!
MadHatter unterstützt Monica am
4
Tatsächlich kamen erweiterte Partitionen viel später . IBM PC DOS 2.0 führte den MBR im März 1983 als Teil seiner Festplattenunterstützung ein , erweiterte Partitionen wurden jedoch erst ab 3.3 (April 1987) verfügbar .
ein CVn
Tatsächlich verweist die "erweiterte Partition" einfach auf eine andere Partitionstabelle im MBR-Stil, die wiederum nur 4 Einträge enthalten kann (wobei jeder Eintrag eine erweiterte Partition sein kann, die auf eine andere Partitionstabelle verweist, die ebenfalls 4 Einträge enthalten kann). Jede dieser Partitionen könnte eine erweiterte Partition sein ...)) In der Realität erlauben einige Betriebssysteme nur erweiterte Partitionen in Steckplatz 4, und wenn es eine gibt, müssen die Steckplätze 2 und 3 leer sein. Verknüpfte Liste von Partitionstabellen mit einem Primary in Steckplatz 1 und einem Link zur nächsten Tabelle in Steckplatz 4.
Jörg W Mittag
25

Es gibt nur vier, da die Datenstrukturen für die MBR-Partitionstabelle nur genau vier Datensätze zulassen, die Partitionen beschreiben:

Sie könnten zusätzliche Partitionstabellen erstellen, die in Definitionen einer sogenannten "erweiterten Partition" verschachtelt sind. Die darin definierten Partitionen werden jedoch traditionell als "logische" Partitionen bezeichnet. Beachten Sie, dass dies eine Einschränkung dieser spezifischen Implementierung ist. Andere Partitionstypen, wie die GUID-Partitionstabelle , teilen diese Einschränkung nicht.

das-wabbit
quelle
3

Eine primäre Partition ist ein Konzept auf niedriger Ebene - es hängt mit dem anfänglichen Startvorgang der Maschine zusammen und basiert auf einem genau definierten Satz von Spezifikationen. Es ist daher sehr schwierig, die Anzahl der primären Partitionen zu ändern, da viele Hersteller von Festplatten und Motherboards sich darauf einigen müssten, einen neuen Standard zu implementieren.

In der Praxis ist dies jedoch ein strittiger Punkt - er ist zum Zeitpunkt des Starts von Bedeutung, damit Ihr Betriebssystem überhaupt erst gestartet werden kann, aber das war es auch schon. Es gibt erweiterte Partitionen, die mehr Partitionen auf Ihrer Festplatte ermöglichen. Sie konnten sie jedoch nicht starten.

Grundsätzlich - die meisten Betriebssysteme arbeiten mit einer stärkeren Festplattenabstraktion - sind Manager für logische Volumes. Dies bedeutet, dass die tatsächliche Topologie auf der Festplatte weitgehend irrelevant ist. (In der Tat ist es häufig nicht wünschenswert, Ihren Speicherpool zu segmentieren.)

Sobrique
quelle
1
Ich denke, Sie irren sich, wenn Sie nicht in der Lage sind, einen zu booten. Ich denke, GRUB wird Linux gerne von einer erweiterten Partition booten. Davon abgesehen stimme ich Ihnen größtenteils zu.
MadHatter unterstützt Monica am
GRUB selbst muss sich jedoch auf einer primären Partition befinden - der Bootstrap auf niedriger Ebene startet grub, mit dem Sie auswählen können.
Sobrique
1
Der Lader der Stufe 1 sollte sich überhaupt nicht auf einer Partition befinden. es sollte im MBR sein. Der Rest des Codes befindet sich in der/boot Partition, und wie ich schon sagte, kann dies glücklicherweise eine erweiterte Partition sein.
MadHatter unterstützt Monica am
Meinetwegen. Ich werde nachlesen und meine Hausaufgaben machen. Aber ich nehme immer noch an, dass der Fall, dass die primären Partitionen begrenzt sind, derzeit weitgehend irrelevant ist.
Sobrique
1
"... weil viele Hersteller von Festplatten und Motherboards sich darauf einigen müssten, einen neuen Standard einzuführen." Was? Wie das? Es ist für die Festplatte völlig irrelevant, und selbst das Mainboard sollte sich darum nicht kümmern müssen. Das Mainboard muss lediglich Sektor 0 lesen und seinen Code ausführen. Das Erkennen von Partitionen ist die Aufgabe dieses Codes.
Glglgl
0

Ich bin mir nicht sicher, ob ich zu spät zur Party komme, aber hier ist es:

Die Partitionstabellengröße beträgt 64 Bytes und jede Partitionstabelle 16 Bytes. 16 * 4 = 64 und daher ist kein Platz mehr für andere Einträge in der Partitionstabelle.

Um dies zu umgehen, enthält der vierte Eintrag einen erweiterten Partitionseintrag, der sequenzielle Zeiger auf andere erweiterte Partitionen enthalten kann.

https://docs.microsoft.com/en-us/windows/win32/fileio/basic-and-dynamic-disks

Guru
quelle