Handbuch:MIPS/Blöcke/Festplatten

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:MIPS/Blocks/Disks and the translation is 100% complete.


Partitionen

Obwohl es theoretisch möglich wäre eine vollständige Festplatte zu nutzen um ein Linux-System unterzubringen, kommt das in der Praxis fast nie vor. Stattdessen werden komplette Festplatten Block Devices in kleinere, besser handhabbare Block Devices unterteilt. Diese werden Partitionen genannt.

Ein Partitionsschema entwerfen

Wie viele Partitionen und wie groß?

Die Anzahl der Partitionen hängt stark von der Ziel-Umgebung ab. Wenn es beispielsweise viele Nutzer gibt, ist eine eigene Partition /home/ ratsam, da diese die Sicherheit erhöht und Backups vereinfacht. Wenn Gentoo installiert wird um als Mailserver zu dienen, dann sollte es ein eigenes /var/ geben, weil alle Mails in /var/ gespeichert werden. Eine gute Wahl des Dateisystems maximiert dann die Performance. Spiele-Server werden eine eigene Partition /opt/ besitzen, da die meiste Spiele-Server-Software dort installiert wird. Der Grund ist ähnlich wie für das /home/ Verzeichnis: Sicherheit und Backups. In den meisten Situationen muss /usr/ ausreichend groß sein: hier wird nicht nur die Mehrzahl der Anwendungen gespeichert, sondern auch das Gentoo ebuild Repository (standardmäßig unter: /var/db/repos/gentoo), das alleine schon rund 650 MiB benötigt. Diese Größenabschätzung enthält noch nicht den benötigten Plattenplatz für die Verzeichnisse binpkgs/ und distfiles/, die standardmäßig unter /var/cache/ gespeichert werden.

Es hängt also stark davon ab, was der Administrator erreichen möchte. Separate Partitionen oder Volumes haben folgende Vorteile:

  • Wählen Sie das performanteste Dateisystem für jede Partition oder jedes Volume.
  • Dem Gesamtsystem kann der freie Speicherplatz nicht ausgehen, wenn ein fehlerhaftes Tool kontinuierlich Dateien auf eine Partition oder ein Volume schreibt.
  • Falls nötig werden Dateisystemüberprüfungen zeitlich reduziert, da mehrere Überprüfungen gleichzeitig durchgeführt werden können. (Wenngleich dieser Vorteil eher bei mehreren Festplatte als bei Partitionen zum Tragen kommt.)
  • Sie können die Sicherheit erhöhen indem Sie einige Partitionen oder Volumes read-only, nosuid (setuid Flags werden ignoriert), noexec (executable Flags werden ignoriert) etc. einbinden.

Viele Partitionen können aber auch Nachteile haben. Wenn diese schlecht an das System angepasst sind, kann es sein, dass eine Partition voll ist und auf einer anderen Partition noch viel freier Platz verfügbar ist. Ein weiterer Nachteil besteht darin, dass separate Partitionen - vor allem für wichtige Mount-Pfade wie /usr/ oder /var/ - es häufig notwendig machen, während des Bootens ein initramfs zu benutzen, welches diese Partitionen vor der Ausführung anderer Boot-Skripte mountet. Das ist aber nicht immer notwendig und hängt vom Einzelfall ab.

Weiterhin gibt es ein Limit von maximal 15 Partitionen für SCSI- und SATA-Datenträger, es sei denn, der Datenträger nutzt GPT-Labels.

Was ist mit dem Swap-Speicher?

Die perfekte Größe für eine Swap-Partition gibt es nicht. Der Zweck von Swap-Speicher es ist Festplattenspeicherplatz für den Kernel bereitzuhalten, wenn der interne Speicher (RAM) knapp wird. Der Swap-Speicher erlaubt dem Kernel Speicherseiten auf die vermutlich nicht bald zugegriffen wird auf die Platte auszulagern (Swap oder Page-Out) um Arbeitsspeicher freizumachen. Wird der Speicherinhalt plötzlich benötigt, müssen diese Speicherseiten (Pages) wieder zurück in den Arbeitsspeicher geladen werden (Page-In), dies dauert eine Weile (da Festplatten verglichen mit Arbeitsspeicher sehr langsam sind).

Wenn auf dem System keine Speicherintensiven Anwendungen ausgeführt werden oder das System viel Speicher zur Verfügung hat, benötigt es vermutlich nicht viel Swap-Speicher. Allerdings wird der Swap-Speicher ebenfalls dazu verwendet, den gesamten Speicherinhalt im Ruhezustand (Hibernation) aufzunehmen. Wenn das System den Ruhezustand benötigt, brauchen Sie daher einen größeren Swap-Speicher. Häufig muss dieser mindestens so groß sein, wie der im System installierte Arbeitsspeicher.


fdisk verwenden

SGI Maschinen: SGI Plattenlabel erstellen

Alle Festplatten in einem SGI System benötigen ein SGI Plattenlabel, welches eine ähnliche Funktionalität wie ein Sun oder MS-DOS Plattenlabel bietet -- es speichert Informationen über die Partitionen einer Festplatte. Die Erzeugung eines neuen SGI Plattenlabels erzeugt zwei spezielle Partitionen auf der Festplatte:

  • SGI Volume Header (9. Partition): Diese Partition ist wichtig. Sie ist der Ort an dem sich der Bootloader befindet und in einigen Fällen enthält sie ebenfalls die Kernel-Abbilder.
  • SGI Volume (11. Partition): Diese Partition ist ähnlich wichtig wie die dritte Partition des Sun Plattenlabels "Whole Disk". Diese Partition umschließt die gesamte Festplatte und solle unberührt bleiben. Sie dient keinem anderen speziellen Zweck außer das PROM in undokumentierter Weise zu unterstützen (oder es wird irgendwie von IRIX verwendet).
Warnung
Der SGI Volume Header muss bei Zylinder 0 beginnen. Ein Fehler hierbei bedeutet ein Scheitern beim Booten von der Platte.

Das Folgende ist ein Beispiel-Auszug einer fdisk Sitzung. Lesen und passen Sie es Ihren persönlichen Bedürfnissen an ...

root #fdisk /dev/sda

Wechseln Sie in den Expertenmodus:

Command (m for help):x

Mit m wird das vollständige Menü der Optionen angezeigt:

Expert command (m for help):m
Command action
   b   move beginning of data in a partition
   c   change number of cylinders
   d   print the raw data in the partition table
   e   list extended partitions
   f   fix partition order
   g   create an IRIX (SGI) partition table
   h   change number of heads
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   s   change number of sectors/track
   v   verify the partition table
   w   write table to disk and exit

Erzeugen Sie ein SGI Plattenlabel:

Expert command (m for help):g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be irrecoverably lost.

Kehren Sie zum Hauptmenü zurück:

Expert command (m for help):r

Werfen wir einen Blick auf das aktuelle Partitions-Layout:

Command (m for help):p
Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes
  
----- partitions -----
Pt#     Device  Info     Start       End   Sectors  Id  System
 9:  /dev/sda1               0         4     10240   0  SGI volhdr
11:  /dev/sda2               0     17481  35803136   6  SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Notiz
Wenn die Festplatte bereits ein bestehendes SGI Plattenlabel hat, wird fdisk die Erzeugung eines neuen Labels nicht gestatten. Es gibt zwei Möglichkeiten das zu umgehen. Die erste ist die Erstellung eines Sun oder MS-DOS Plattenlabels, die Änderungen auf die Festplatte zu schreiben und fdisk neu zu starten. Die zweite ist die Partitionstabelle mit Nullwerten durch den folgenden Befehl zu überschreiben: dd if=/dev/zero of=/dev/sda bs=512 count=1

SGI Volume-Header Größenänderung

Wichtig
Diesen Schritt benötigt man aufgrund eines Bugs in fdisk oft. Aus irgendeinem Grund wird der Volume-Header nicht korrekt erstellt. Das Ergebnis ist, dass er auf Zylinder 0 startet und endet. Dies verhindert, dass mehreren Partitionen erstellt werden. Um dieses Problem zu umgehen ... lesen Sie weiter.

Da jetzt ein SGI Plattenlabel erstellt wurde, können nun Partitionen definiert werden. Im obigen Beispiel sind bereits zwei Partitionen definiert. Das sind wie erwähnt die besonderen Partitionen und sie sollten normalerweise nicht verändert werden. Wie auch immer, zur Installation von Gentoo müssen wir einen Bootloader und möglicherweise mehrere Kernel-Abbilder (abhängig vom Systemtyp) direkt in den Volume-Header laden. Der Volume-Header selbst kann bis zu acht Abbilder jeglicher Größe beinhalten mit jeweils einem acht Zeichen langen Namen.

Der Vorgang den Volume-Header größer zu machen ist etwas verworren und mit einem kleinen Trick verbunden. Man kann den Volume-Header wegen dem eigenartigen Verhalten von fdisk nicht einfach löschen und ihn dann wieder neu hinzufügen. Im Beispiel unten erzeugen wir einen 50 MB großen Volume-Header in Verbindung mit einer 50 MB großen /boot/ Partition. Das tatsächliche Plattenlayout kann sich unterscheiden, dies dient nur der Veranschaulichung.

Eine neue Partition erstellen:

Command (m for help):n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
 Last cylinder (51-8682, default 8682): 101

Beachten Sie, dass fdisk zur Neuerstellung von Partition Nr. 1 als kleinsten Zylinder 5 gestattet. Wenn wir versucht hätten den SGI Volume-Header zu löschen und auf diese Weise wiederherzustellen, würden wir vor dem gleichen Problem stehen. In unserem Beispiel wollen wir dass /boot/ 50 MB groß ist, deshalb starten wir bei Zylinder 51. (- Der Volume-Header muss bei Zylinder 0 beginnen, erinnern Sie sich?) Den End-Zylinder setzten wir bei 101, das in etwa 50 MB entspricht (+/- 1..5 MB).

Die Partition löschen:

Command (m for help):d
Partition number (1-16): 9

Jetzt die Neuerstellung der Volume-Header Partition:

Command (m for help):n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
 Last cylinder (0-50, default 50): 50

Wenn Sie sich unsicher über die Verwendung fdisk sind, werfen sie weiter unten einen Blick auf die Anleitung zur Partitionierung auf Cobalt Systemen. Das Konzept ist genau das gleiche -- denken Sie nur daran die Volume-Header und die "Whole Disk" Partition in Ruhe zu lassen.

Sobald dies geschehen ist können Sie die übrigen Partitionen die Sie benötigen erzeugen. Nachdem Sie alle Partitionen angelegt haben, stellen Sie sicher die Partitions-ID der Swap Partition auf 82 zu stellen, "Linux Swap". Der Standard ist 83, "Linux Native".

Cobalt Festplatten partitionieren

Auf Cobalt Maschinen erwartet das BOOTROM einen MS-DOS MBR, deshalb ist die Festplattenpartitionierung relativ geradlinig. -- In der Tat wird dies wie bei einer Intel x86 Maschine gemacht. Es gibt jedoch ein paar Dinge die Sie beachten sollten.

  • Die Cobalt Firmware erwartet /dev/sda1 als Linux Partition im Format EXT2 Revision 0. EXT Revision 1 Partitionen funktionieren NICHT! (Das Cobalt BOOTROM versteht nur EXT2r0.)
  • Die oben angesprochene Partition muss das gzip-komprimierte ELF Abbild vmlinux.gz in der Wurzel ("root") dieser Partition enthalten, das als Kernel geladen wird.

Aus diesem Grund wird eine ca. 20 MB große mit EXT2r0 formatierte /boot/ Partition empfohlen auf der CoLo und die Kernel installiert werden. Dies gestattet dem Benutzer ein modernes Dateisystem (EXT3 oder ReiserFS) auf der Root Partition zu betreiben.

Im Beispiel wird davon ausgegangen, dass /dev/sda1 erzeugt wird, um später als /boot/ Partition eingehängt zu werden. Falls Sie die Partition zu / machen wollen, denken Sie an die Erwartungen des PROMs.

Also weiter ... Um die Partition zu erstellen geben Sie an der Eingabeaufforderung fdisk /dev/sda ein. Die wichtigsten Befehle, die Sie wissen sollten sind diese:

CodeWichtige fdisk Befehle

'"`UNIQ--pre-00000006-QINU`"'

This is a deprecated template and will be removed soon!!! Help us update this template!

root #fdisk /dev/sda
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Fangen Sie damit an, alle vorhandenen Partitionen zu löschen:

Command (m for help):o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
  
  
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Überprüfen Sie nun durch Drücken der Befehlstaste p, dass die Partitionstabelle leer ist:

Command (m for help):p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  
   Device Boot      Start         End      Blocks   Id  System

Erstellen Sie die /boot Partition:

Command (m for help):n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M

Wenn Sie die Partitionen ausgeben lassen, beachten Sie die neu erstellte:

Command (m for help):p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          40       20128+  83  Linux

Lassen Sie uns nun eine erweiterte Partition erstellen, die den Rest der Festplatte umfasst. In dieser erweiterten Partition legen wir die übrigen Partitionen (logische Partitionen) an:

Command (m for help):n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (41-19870, default 41):
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870

Jetzt erstellen wir die Partitionen /, /usr, /var usw.

Command (m for help):n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (41-19870, default 41):<Press ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M

Wiederholen Sie dies wie benötigt.

Zum Schluss zur Swap Partition. Es wird empfohlen mindestens 250 MB, besser 1 GB Speicherplatz zu verwenden:

Command (m for help):n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Press ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER>
Using default value 19870

Wenn Sie die Partitionstabelle überprüfen, sollte alles bereit sein - bis auf eine Sache.

Command (m for help):p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  
Device Boot      Start         End      Blocks      ID  System
/dev/sda1               1          21       10552+  83  Linux
/dev/sda2              22       19870    10003896    5  Extended
/dev/sda5              22        1037      512032+  83  Linux
/dev/sda6            1038        5101     2048224+  83  Linux
/dev/sda7            5102        9165     2048224+  83  Linux
/dev/sda8            9166       13229     2048224+  83  Linux
/dev/sda9           13230       17293     2048224+  83  Linux
/dev/sda10          17294       19870     1298776+  83  Linux

Ist Ihnen aufgefallen, dass Partition 10 - die Swap Partition - immer noch vom Typ 83 ist? Lassen Sie uns das auf den richtigen Typ ändern:

Command (m for help):t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)

Nun zur Überprüfung:

Command (m for help):p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  
Device Boot      Start         End      Blocks      ID  System
/dev/sda1               1          21       10552+  83  Linux
/dev/sda2              22       19870    10003896    5  Extended
/dev/sda5              22        1037      512032+  83  Linux
/dev/sda6            1038        5101     2048224+  83  Linux
/dev/sda7            5102        9165     2048224+  83  Linux
/dev/sda8            9166       13229     2048224+  83  Linux
/dev/sda9           13230       17293     2048224+  83  Linux
/dev/sda10          17294       19870     1298776+  82  Linux Swap

Wir speichern die neue Partitionstabelle:

Command (m for help):w
The partition table has been altered!
  
Calling ioctl() to re-read partition table.
Syncing disks.