|
1.
Einführung in Block Devices
Block Devices
Wir werden einen guten Einblick in die Festplatten bezogenen Aspekte von Gentoo
Linux und Linux im allgemeinen, inklusive Linux Dateisystemen, Partitionen und
Block Devices erhalten. Dann, sobald Sie mit den Vor- und Nachteilen von
Festplatten und Dateisystemen vertraut sind, werden Sie durch den Prozess
des Partitionierens und der Dateisystemerstellung für Ihre Gentoo Linux
Installation geführt.
Zu Beginn werden wir Ihnen Block Devices vorstellen. Das berühmteste
Block Device ist wahrscheinlich das, welches das erste Laufwerk in einem
Linux System repräsentiert, namentlich /dev/sda. SCSI- und
Serial-ATA-Laufwerke erhalten beide Namen mit /dev/sd*; selbst
IDE-Laufwerke werden mit dem neuen libata-Framework im Kernel mit einem
/dev/sd* Namen versehen. Wenn Sie noch das alte Geräte-Framework
verwenden wird Ihr erstes IDE-Laufwerk /dev/hda sein.
Das obige Block Device repräsentiert eine abstrakte Schnittstelle zur
Festplatte. Benutzerprogramme können dieses Block Device benutzen, um Ihre
Festplatte anzusprechen, ohne sich darum zu kümmern, ob Ihre Festplatten IDE,
SCSI oder irgendetwas anderes sind. Das Programm kann den Speicherplatz auf der
Festplatte einfach als eine Anhäufung von zusammenhängenden, beliebig
zugreifbaren 512-Byte Blöcken ansprechen.
Slices
Obwohl es theoretisch möglich ist, eine ganze Festplatte zu nutzen, um Ihr Linux
System zu beherbergen, wird dies in der Praxis so gut wie nie gemacht.
Stattdessen werden komplette Festplatten Block Devices in kleinere, besser
verwaltbare Block Devices unterteilt. Auf Alpha-Systemen werden Sie
Slices genannt werden.
1.
Erstellung eines Partitionsschemas
Standard-Partitionsschema
Als Beispiel nutzen wir das folgende Slice Layout:
| Slice |
Beschreibung |
| /dev/sda1 |
Swap Slice |
| /dev/sda2 |
Root Slice |
| /dev/sda3 |
Gesamte Festplatte (benötigt) |
Wenn Sie daran interessiert sind, zu erfahren, wie groß eine Partition sein
sollte, oder auch wie viele Partitionen (oder Volumes) Sie benötigen, lesen
Sie weiter. Anderenfalls fahren Sie nun mit dem Partitionieren Ihrer Festplatte mit fdisk (nur SRM)
oder Partitionieren Ihrer Festplatte (nur
ARC/AlphaBIOS) fort:
Wie viele und wie groß?
Die Anzahl an Partitionen hängt von Ihrer Umgebung ab.
Wenn Sie z.B. eine Menge User haben, wollen Sie
höchst wahrscheinlich Ihr /home separat halten, da es die
Sicherheit erhöht und Backups einfacher macht. Wenn Sie Gentoo installieren um
als Mailserver zu fungieren, sollten Sie /var separat halten, da
alle Mails in /var gespeichert werden. Eine gute Wahl des
Dateisystems maximiert dann zusätzlich die Performance. Gameserver sollten ein
separates /opt haben, da die meisten Game Server dort installiert
werden. Der Grund ist ähnlich wie bei /home: Sicherheit und
Backups. Es liegt definitiv in Ihrem Interesse /usr groß zu
behalten: es wird nicht nur die Mehrheit der Programme enthalten; der
Portage-Baum allein belegt etwa 500Mbyte, ohne die verschiedensten Quellen, die
darin gespeichert sind, mitzurechnen.
Wie Sie sehen können, hängt es sehr stark davon ab, was Sie erreichen wollen.
Separate Partitionen oder Volumes haben folgende Vorteile:
-
Sie können das Filesystem mit der höchsten Performance für jede Partition oder
jedes Volume auswählen
-
Ihr System behält noch freien Speicherplatz, selbst wenn ein defektes Tool
ununterbrochen Dateien auf eine Partition oder ein Volume schreibt
-
Falls nötig können Dateisystem Checks zeitlich verkürzt werden, in dem
mehrere Checks parallel durchgeführt werden können (obwohl dieser Vorteil eher
mit mehreren Festplatten als mit mehreren Partitionen zum Tragen kommt)
-
Die Sicherheit kann erhöht werden, indem Sie einige Partitionen oder Volumes
read-only, nosuid (setuid bits werden ignoriert), noexec (executable bits
werden ignoriert) etc mounten.
Jedoch, mehrere Partitionen haben einen großen Nachteil: wenn sie nicht
ordentlich konfiguriert werden, könnte das Resultat ein System sein, welches
viel Speicherplatz auf der einen Partition und keinen auf einer anderen frei
hat. Es gibt weiterhin ein Limit von 15 Partitionen bei SCSI und SATA.
1.
Benutzung von fdisk zur Partitionierung Ihrer Festplatte (nur SRM)
Die folgende Teile erklären, wie Sie das vorhin vorgestellte Slice Layout
erstellen.
| Slice |
Beschreibung |
| /dev/sda1 |
Swap Slice |
| /dev/sda2 |
Root Slice |
| /dev/sda3 |
Gesamte Festplatte (benötigt) |
Passen Sie das Slice Layout an Ihre Vorstellungen an.
Identifizierung verfügbarer Festplatten
Um herauszufinden, welche Festplatten Ihnen zur Verfügung stehen, benutzen Sie
die folgenden Kommandos:
Befehlsauflistung 1.1: Identifizierung verfügbarer Festplatten |
# dmesg | grep 'drive$'
# dmesg | grep 'scsi'
|
Aus dieser Ausgabe sollten Sie in der Lage sein zu erkennen, welche Festplatten
erkannt wurden und deren besonderen /dev Eintrag abzulesen. In den
folgenden Abschnitten gehen wir von einer SCSI Festplatte auf
/dev/sda aus.
Starten Sie nun fdisk:
Befehlsauflistung 1.1: Starten von fdisk |
# fdisk /dev/sda
|
Löschen von allen Slices
Wenn Ihre Festplatte vollständig leer ist müssen Sie zunächst ein BSD-Disklabel
erstellen.
Befehlsauflistung 1.1: Erstellen eines BSD-Disklabels |
Command (m for help): b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
3 partitions:
# start end size fstype [fsize bsize cpg]
c: 1 5290* 5289* unused 0 0
|
Wir beginnen mit dem Löschen von allen Slices, außer des 'c'-Slice
(eine Anforderung für BSD-Disklabel). Nachfolgend zeigen wir Ihnen, wie Sie
ein Slice (im Beispiel nutzen wir 'a') löschen können. Wiederholen Sie den
Schritt für alle Slices (wieder: außer des 'c'-Slice).
Benutzen Sie p um alle existierenden Slices anzuzeigen. d
benötigen Sie zum Löschen eines Slices.
Befehlsauflistung 1.1: Löschen eines Slice |
BSD disklabel command (m for help): p
8 partitions:
# start end size fstype [fsize bsize cpg]
a: 1 235* 234* 4.2BSD 1024 8192 16
b: 235* 469* 234* swap
c: 1 5290* 5289* unused 0 0
d: 469* 2076* 1607* unused 0 0
e: 2076* 3683* 1607* unused 0 0
f: 3683* 5290* 1607* unused 0 0
g: 469* 1749* 1280 4.2BSD 1024 8192 16
h: 1749* 5290* 3541* unused 0 0
BSD disklabel command (m for help): d
Partition (a-h): a
|
Nachdem Sie den Prozess für alle anderen Slices wiederholt haben, sollte die
Auflistung folgender ähnlich sehen:
Befehlsauflistung 1.1: Ansicht einer leeren Partitionstabelle |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
c: 1 5290* 5289* unused 0 0
|
Erstellen des Swap Slice
Auf Alpha basierten System benötigen Sie kein separates Boot Slice. Dennoch kann
der erste Zylinder nicht benutzt werden, da das aboot Image dort
abgelegt werden wird.
Wir werden ein Swap Slice beginnend am dritten Cylinder mit einer Größe von 1
GB erstellen. Benutzen Sie n um ein neues Slice zu erstellen. Nachdem Sie
das Slice erstellt haben, ändern Sie den Typ mit 1 (eins) auf
swap.
Befehlsauflistung 1.1: Erstellen der Swap Slice |
BSD disklabel command (m for help): n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M
BSD disklabel command (m for help): t
Partition (a-c): a
Hex code (type L to list codes): 1
|
Nach diesen Schritten sollten Sie ein der folgenden Auflistung ähnliches Layout
sehen:
Befehlsauflistung 1.1: Slice Layout nach dem Erstellen des Swap Slice |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
a: 3 1003 1001 swap
c: 1 5290* 5289* unused 0 0
|
Erstellen des Root Slice
Wir werden nun das Root Slice anlegen beginnend vom ersten Zylinder nach
der Swap Slice. Benutzen Sie das p Kommando um zu schauen, wo das Swap
Slice endet. In unserem Beispiel ist dies 1003, das Root Slice beginnt also
bei 1004.
Ein weiteres Problem ist, dass aktuell ein Bug in fdisk existiert.
Dadurch denkt fdisk, dass die Anzahl verfügbarer Zylinder Eins
über der realen Zahl der Zylinder liegt. In anderen Worten, wenn Sie nach dem
letzten Zylinder gefragt werden, verkleinern Sie die Zylindernummer (in diesem
Beispiel: 5290) um eins.
Wenn das Slice erstellt wurde, ändern Sie den Typ auf 8 für ext2.
Befehlsauflistung 1.1: Erstellen des Root Slice |
D disklabel command (m for help): n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289
BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 8
|
Ihr Slice Layout sollte nun ähnlich dem Folgenden aussehen:
Befehlsauflistung 1.1: Ansicht des Slice Layout |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
a: 3 1003 1001 swap
b: 1004 5289 4286 ext2
c: 1 5290* 5289* unused 0 0
|
Speichern des Slice Layout und Beenden von fdisk
Schließen Sie fdisk indem Sie w eingeben. Damit wird auch Ihr
Slice Layout gespeichert.
Befehlsauflistung 1.1: Speichern und Verlassen von fdisk |
Command (m for help): w
|
Nachdem Ihre Slices nun erstellt sind, können Sie mit dem
Erstellen der Dateisysteme fortfahren
1.
Benutzung von fdisk zur Partitionierung Ihrer Festplatte (nur ARC/AlphaBIOS)
Der folgende Abschnitt erklärt wie man eine Festplatte mit einem ähnlichen
Layout, wie zuvor beschrieben, partitioniert. Genauer gesagt:
| Partition |
Beschreibung |
| /dev/sda1 |
Boot Partition |
| /dev/sda2 |
Swap-Partition |
| /dev/sda3 |
Root Partition |
Ändern Sie das Layout Ihrer Partitionen entsprechend Ihren eigenen
Vorlieben.
Erkennung von verfügbaren Festplatten
Führen Sie folgenden Befehl aus um herausfinden welche Festplatten Sie
verwenden:
Befehlsauflistung 1.1: Identifizierung verfügbarer Festplatten |
# dmesg | grep 'drive$'
# dmesg | grep 'scsi'
|
Von der erzeugten Ausgabe sollten Sie erkennen können welche Fesplatten
gefunden wurden und was Ihre zugehörigen /dev Einträge sind.
In den folgenden Abschnitten nehmen wir an, dass es eine SCSI Festplatte an
/dev/sda ist.
Starten Sie nun fdisk:
Befehlsauflistung 1.1: Starten von fdisk |
# fdisk /dev/sda
|
Löschen aller Partitionen
Wenn Ihre Festplatte komplett leer ist, dann müssen Sie zuerst ein DOS-Disklabel
erstellen.
Befehlsauflistung 1.1: Erstellen eines DOS-Disklabels |
Command (m for help): o
Building a new DOS disklabel.
|
Wir beginnen damit, dass wir alle Parititionen löschen. Folgend wird gezeigt,
wie eine Paritition (in diesem Beispiel verwenden wir '1') gelöscht wird.
Wiederholen Sie den Vorgang um alle anderen Partitionen zu löschen.
Verwenden Sie p um alle existierenden Partitionen einzusehen. d
wird verwendet um eine Partition zu löschen.
Befehlsauflistung 1.1: Löschen einer Partition |
command (m for help): p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 478 489456 83 Linux
/dev/sda2 479 8727 8446976 5 Extended
/dev/sda5 479 1433 977904 83 Linux Swap
/dev/sda6 1434 8727 7469040 83 Linux
command (m for help): d
Partition number (1-6): 1
|
Erstellen einer Boot Partition
Auf Alpha Systemen, die MILO verwenden um zu booten, müssen wir eine kleine
vfat Boot Partition erstellen.
Befehlsauflistung 1.1: Erstellen der 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-8727, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)
|
Erstellen der Swap-Partition
Nun erstellen wir eine Swap-Partition mit einer Gesamtgröße von 1 GB. Verwenden
Sie n um eine neue Partition zu erstellen.
Befehlsauflistung 1.1: Erstellen der Swap-Partition |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
|
Nach diesen Schritten sollten Sie ein Layout sehen, welches diesem sehr ähnlich
ist:
Befehlsauflistung 1.1: Liste der Partitionen nach Erstellung der Swap-Partition |
Command (m for help): p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 16 16368 6 FAT16
/dev/sda2 17 971 977920 82 Linux swap
|
Erstellen der Root Partition
Wir werden nun die Root Partition erstellen. Verwenden Sie auch hier den
n Befehl.
Befehlsauflistung 1.1: Erstellen der Root Partition |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727
|
Nach diesen Schritten sollten Sie ein Layout sehen, welches diesem sehr ähnlich
ist:
Befehlsauflistung 1.1: Liste der Partitionen nach Erstellung der Root Partition |
Command (m for help): p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 16 16368 6 FAT16
/dev/sda2 17 971 977920 82 Linux swap
/dev/sda3 972 8727 7942144 83 Linux
|
Speichern des Partitionslayout und Beenden
Speichern Sie fdisk indem Sie w eintippen. Dies wird auch
Ihr Partitionslayout abspeichern.
Befehlsauflistung 1.1: Speichern und Beenden von fdisk |
Command (m for help): w
|
Nun da Ihre Partitionen erstellt sind können Sie fortfahren mit dem Erstellen der Dateisysteme.
1.
Erstellen der Dateisysteme
Einleitung
Jetzt sind Ihre Partitionen erstellt, so dass es nun an der Zeit ist
Dateisysteme anzulegen. Wenn Sie mit dem zufrieden sind, was wir Ihnen
vorschlagen, dann fahren Sie mit Dateisystem
auf einer Partition anlegen fort. Wenn nicht, lesen Sie weiter, um
ein wenig mehr über Dateisysteme zu lernen ...
Dateisysteme
Der Linux-Kernel unterstützt zahlreiche Dateisysteme. Wir erklären ext2, ext3,
ext4, ReiserFS, XFS und JFS, da diese die unter Linux gebräuchlichsten
Dateisysteme sind.
ext2 ist das erprobte und wahre Linux Dateisystem, unterstützt aber keine
Metadaten-Journalisierung, was bedeutet, dass routinemäßige Überprüfungen des
Dateisystem beim Booten ziemlich zeitaufwändig sein können. Es gibt mittlerweile
eine Auswahl an journalisierenden Dateisystemen neuerer Generation, die die
Konsistenzchecks sehr schnell erledigen und dadurch im Vergleich mit den
nicht-journalisierenden Gegenstücken vorzuziehen sind. Jounalisierende
Dateisysteme verhindern lange Verzögerungen beim Booten, wenn sich das
Dateisystem in einem inkonsistenten Zustand befindet. Wenn Sie vorhaben, Gentoo
auf einer sehr kleinen Platte (weniger als 4GB) zu installieren, dann müssen Sie
ext2 anweisen, genügend Inodes zu reservieren, wenn Sie das Dateisystem
erstellen. Dies geschieht mit mke2fs -T small /dev/<device>.
ext3 ist die journalisierte Version des ext2-Dateisystem. Es liefert
Metadaten-Journalisierung für schnelle Wiederherstellung, sowie andere
verbesserte Journalisierungs-Modi wie "Full Data"- und "Ordered
Data"-Journalisierung. Es verwendet einen HTree-Index der in fast allen
Situation zu einer hohen Performance führt. Kurz, ext3 ist ein sehr gutes und
verlässliches Dateisystem. Wenn Sie vorhaben, Gentoo auf einer sehr kleinen
Platte (weniger als 4GB) zu installieren, dann müssen Sie ext2 anweisen,
genügend Inodes zu reservieren, wenn Sie das Dateisystem erstellen. Dies
geschieht mit mke2fs -j -T small /dev/<device>.
ext4 ist ein Dateisystem, das basierend auf ext3 erstellt wurde und neue
Features sowie Performance-Verbesserungen mit sich bringt. Zusätzlich wurden
Größenbeschränkungen entfernt und nur mäßige Änderungen am Format auf der
Platte vorgenommen. ext4 unterstützt Laufwerke mit einer Größe von bis zu 1 EB
und eine maximale Dateigröße von 16 TB. Anstelle der klassischen
Bitmap-Block-Allokation von ext2/3, verwendet ext4 Extents, die
die Performance bei großen Dateien verbessert und Fragmentierung reduziert. Ext4
bietet zudem ausgeklügeltere Blockallokationsalgorithmen (verzögerte Allokation
und Multiblock-Allokation), was es dem Dateisystemtreiber erlaubt, das Layout
der Daten auf der Platte zu optimieren. Das ext4-Dateisystem ist ein Kompromiss
zwischen produktionssnaher Code-Stabilität und dem Wunsch, Erweiterungen zu
einem fast ein Jahrzehnt altem Dateisystem einzuführen.
JFS ist IBMs journalisiertes Hochgeschwindigkeits-Dateisystem. JFS ist
schlankes, schnelles und verläßliches B+Tree basierendes Dateisystem mit guter
Performance in zahlreichen Situationen.
ReiserFS ist ein auf B+-Trees basierendes Dateisystem mit einer insgesamt
guten Performance, besonders wenn mit vielen sehr kleinen Dateien, zur Last von
mehr CPU-Zyklen, gearbeitet wird. ReiserFS hat den Anschein weniger gepflegt zu
werden als andere Dateisysteme.
XFS ist ein Dateisystem mit Metadaten-Journalisierung, es liefert einen
robusten Satz von Features und ist auf Skalierbarkeit optimiert. XFS scheint
weniger robust zu sein bei verschiedenen Hardware-Problemen.
Eine Partition mit einem Dateisystem formatieren
Um ein Dateisystem auf einer Partition oder einem Volume zu erstellen, gibt es
für jedes Dateisystem Tools:
| Dateisystem |
Kommando |
| ext2 |
mkfs.ext2 |
| ext3 |
mkfs.ext3 |
| ext4 |
mkfs.ext4 |
| reiserfs |
mkfs.reiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Um die Root Partition (/dev/sda2 in unserem Beispiel) als ext3
zu formatieren, führen Sie folgende Kommandos aus:
Befehlsauflistung 1.1: Eine Partition mit einem Dateisystem formatieren |
# mkfs.ext3 /dev/sda2
|
Erstellen Sie nun die Dateisysteme auf Ihren neu erstellten Partionen (oder
logischen Volumes).
Aktivieren der Swap-Partition
mkswap ist das Kommando, mit dem Sie die Swap-Partition initialisieren:
Befehlsauflistung 1.1: Erstellen der Swap Signatur |
# mkswap /dev/sda1
|
Um die Swap-Partition zu aktivieren, benutzen Sie swapon:
Befehlsauflistung 1.1: Aktivieren der Swap-Partition |
# swapon /dev/sda1
|
Erstellen und aktivieren Sie jetzt Ihre Swap-Partition mit den folgenden
Befehlen.
1.
Mounten
Nachdem Ihre Partitionen nun initialisiert sind und ein Dateisystem beinhalten,
ist es an der Zeit diese Partitionen zu mounten. Benutzen Sie das mount
Kommando. Vergessen Sie nicht die notwendigen Mount Verzeichnisse für jede
erstellte Partition anzulegen. Als Beispiel mounten wir die Root-Partition:
Befehlsauflistung 1.1: Mounten von Partitionen |
# mount /dev/sda2 /mnt/gentoo
|
Notiz:
Wenn Sie /tmp auf eine separate Partition legen möchten, stellen
Sie sicher, dass Sie die Berechtigungen nach dem mounten ändern:
chmod 1777 /mnt/gentoo/tmp. Dies gilt auch für /var/tmp.
|
Sie müssen auch noch das proc Dateisystem (eine virtuelle Schnittstelle zum
Kernel) auf /proc mounten. Zunächst müssen Sie aber ein
Stage-Archiv entpacken.
Fahren Sie mit dem (Installation der Gentoo
Installationsdateien) fort.
|