102.1 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
102 Linux-Installation und -Paketverwaltung |
Lernziel: |
102.1 Festplattenaufteilung planen |
Lektion: |
1 von 1 |
Einführung
Ziel dieser Lektion ist es, die Beziehung zwischen Speichergeräten, Partitionen, Dateisystemen und Volumes zu verstehen.
Stellen Sie sich eine Platte (oder ein Speichergerät, da moderne Geräte überhaupt keine “Platten” mehr enthalten) als “physischen Container” für Ihre Daten vor.
Bevor eine Festplatte von einem Computer verwendet werden kann, muss diese partitioniert werden. Eine Partition ist eine logische Untermenge des physischen Speichers, wie ein logischer “Zaun”. Partitionierung ist eine Möglichkeit, auf dem Speicher gespeicherte Informationen “abzutrennen”, indem z.B. Betriebssystemdaten von Benutzerdaten getrennt werden.
Jede Festplatte benötigt mindestens eine Partition, kann aber bei Bedarf mehrere Partitionen enthalten. Die Informationen darüber werden in einer Partitionstabelle gespeichert. Diese Tabelle enthält Informationen über den ersten und letzten Sektor der Partition, deren Typ sowie weitere Details zu jeder Partition.
Innerhalb jeder Partition gibt es ein Dateisystem. Das Dateisystem beschreibt die Art und Weise, wie die Informationen tatsächlich auf dem Gerät gespeichert werden. Zu diesen Informationen gehört beispielsweise wie Verzeichnisse organisiert sind, in welcher Beziehung diese zueinander stehen, wo sich die Daten für jede Datei befinden usw.
Partitionen können nicht Bestandteil mehrere Geräte sein. Durch den Logical Volume Manager (LVM) können jedoch mehrere Partitionen über mehrere Geräte hinweg, zu einem einzigen logischen Volume zusammengefasst werden.
Logische Volumes abstrahieren die Beschränkungen der physischen Geräte und lassen Sie mit “Pools” von Speichergeräten arbeiten, die viel flexibler kombiniert oder verteilt werden können als herkömmliche Partitionen. Der LVM ist in Situationen nützlich, in denen einer Partition mehr Speicherplatz zugewiesenwerden muss, ohne dabei die Daten auf ein größeres Speichergerät migrieren zu müssen.
Das aktuelle Lernziel besteht darin zu erlernen, wie man ein Festplattenpartitionierungsschema für ein Linux-System entwirft, wobei Dateisysteme und Auslagerungsspeicher bei Bedarf auf separate Partitionen oder Speichermedien aufgeteilt werden.
Wie man Partitionen und Dateisysteme anlegt und verwaltet, wird in anderen Lektionen besprochen. In diesem Kapitel wird lediglich ein Überblick über den LVM gegeben, eine detaillierte Erklärung ist nicht vorgesehen.
Einhängepunkte
Bevor auf ein Dateisystem unter Linux zugegriffen werden kann, muss es gemountet werden. Das bedeutet, dass das Dateisystem an einen bestimmten Punkt im Verzeichnisbaum Ihres Systems angehängt wird, der Einhängepunkt genannt wird.
Nach dem Einhängen steht der Inhalt des Dateisystems unter dem Einhängepunkt zur Verfügung. Stellen Sie sich zum Beispiel vor, Sie haben eine Partition mit den persönlichen Daten Ihrer Benutzer (deren Homeverzeichnisse), welche die Verzeichnisse /john
, /jack
und /carol
enthält. Wenn Sie unter /home
gemountet werden, ist der Inhalt dieser Verzeichnisse unter /home/john
, /home/jack
und /home/carol
verfügbar.
Der Einhängepunkt muss vor dem Einhängen des Dateisystems vorhanden sein. Eine Partition unter /mnt/userdata
kann nicht gemountet werden, wenn dieses Verzeichnis nicht existiert. Wenn das Verzeichnis jedoch existiert und Dateien enthält, werden die enthaltenen Dateien nicht verfügbar sein, bis das Dateisystem ausgehängt wird. Beim Auflisten des Verzeichnisinhalts, werden nur die auf dem gemounteten Dateisystem gespeicherten Dateien angezeigt, nicht jedoch der ursprüngliche Inhalt des Verzeichnisses.
Dateisysteme können beliebig gemountet werden. Es gibt jedoch einige bewährte Vorgehensweisen, welche befolgt werden sollten, um die Systemverwaltung zu erleichtern.
Traditionell war /mnt
das Verzeichnis, unter dem alle externen Geräte gemountet wurden und unter dem eine Reihe von vorkonfigurierten Ankerpunkten für gängige Geräte, wie CD-ROM-Laufwerke (/mnt/cdrom
) und Disketten (/mnt/floppy
) existierten.
Dies wurde durch /media
ersetzt, welcher nun der Standard-Einhängepunkt für alle vom Benutzer entfernbaren Medien (z.B. externe Festplatten, USB-Stick, Speicherkartenleser, optische Speichermedien, usw.) darstellt, die an das System angeschlossen sind.
Auf den meisten modernen Linux-Distributionen und Desktopumgebungen werden Wechseldatenträger automatisch unter /media/USER/LABEL
eingehängt, sobald sie mit dem System verbunden werden, wobei USER
der Benutzername und LABEL
die Gerätebezeichnung ist. Zum Beispiel würde ein USB-Flash-Laufwerk mit der Bezeichnung FlashDrive
, das vom Benutzer john
angeschlossen wurde, unter /media/john/FlashDrive/
gemountet. Abhängig von der Desktopumgebung unterscheiden sich die Verfahren.
Davon abgesehen ist es immer dann, wenn ein Dateisystem manuell gemountet werden muss, eine gute Vorgehensweise, dieses unter /mnt
einzuhängen. Die spezifischen Befehle zur Steuerung des Mountens und Unmountens von Dateisystemen unter Linux werden in einer anderen Lektion behandelt.
Dinge getrennt halten
Unter Linux gibt es einige Verzeichnisse, die Sie auf separaten Partitionen halten sollten. Dafür gibt es viele Gründe: Wenn Sie zum Beispiel Bootloader bezogene Dateien (die auf /boot
gespeichert sind) auf einer Bootpartition aufbewahren, stellen Sie sicher, dass Ihr System im Falle eines Absturzes des Root-Dateisystems immer noch in der Lage ist, zu booten.
Die persönlichen Verzeichnisse der Benutzer (unter /home
) auf einer separaten Partition zu halten, erleichtert die Neuinstallation des Systems ohne das Risiko, versehentlich Benutzerdaten zu verändern. Die Aufbewahrung von Daten, die sich auf einen Web- oder Datenbankserver beziehen (normalerweise unter /var
), auf einer separaten Partition (oder sogar auf einer separaten Festplatte) erleichtert die Systemverwaltung, falls mehr Festplattenspeicher für diese Anwendungsfälle benötigt werden.
Es kann sogar Leistungsgründe dafür geben, bestimmte Verzeichnisse auf separaten Partitionen zu halten. Vielleicht möchten Sie das Root-Dateisystem (/
) auf einer schnellen SSD-Einheit halten und größere Verzeichnisse wie /home
und /var
auf langsameren Festplatten, die für einen Bruchteil der Kosten viel mehr Platz bieten.
Die Bootpartition (/boot
)
Die Bootpartition enthält Dateien, die vom Bootloader zum Laden des Betriebssystems verwendet werden. Auf Linux-Systemen ist der Bootloader normalerweise GRUB2 oder, auf älteren Systemen, GRUB Legacy. Die Partition wird normalerweise unter /boot
gemountet und ihre Dateien werden in /boot/grub
gespeichert.
Technisch gesehen ist eine Bootpartition nicht erforderlich, da GRUB in den meisten Fällen die Root-Partition (/
) mounten und die Dateien aus einem separaten /boot
-Verzeichnis laden kann.
Eine separate Bootpartition kann jedoch aus Sicherheitsgründen erwünscht sein (um sicherzustellen, dass das System auch bei einem Absturz des Root-Dateisystems bootet), oder wenn Sie ein Dateisystem verwenden möchten, das der Bootloader in der Root-Partition nicht versteht, oder wenn dieser eine nicht unterstützte Verschlüsselungs- oder Komprimierungsmethode verwendet.
Die Bootpartition liegt normalerweise in der ersten Partition auf der Festplatte. Das liegt daran, dass das ursprüngliche IBM PC-BIOS die Festplatten über Zylinder, Köpfe und Sektoren (CHS) mit maximal 1024 Zylindern, 256 Köpfen und 63 Sektoren ansprach, was zu einer maximalen Festplattengröße von 528 MB (504 MB unter MS-DOS) führte. Dies bedeutet, dass alles, was über diese Marke hinausgeht, auf Altsystemen nicht mehr zugänglich wäre, es sei denn, es würde ein anderes Festplattenadressierungsschema (wie Logical Block Addressing, LBA) verwendet.
Aus Kompatibilitätsgründen befindet sich die Bootpartition daher normalerweise am Anfang der Platte und endet vor Zylinder 1024 (528 MB), wodurch sichergestellt wird, dass die Maschine immer in der Lage ist, den Kernel zu laden.
Da die Bootpartition nur die vom Bootloader benötigten Dateien, die anfängliche RAM-Disk und Kernel-Images speichert, kann sie für heutige Standards recht klein sein. Eine gute Größe liegt bei etwa 300 MB.
EFI-System-Partition (ESP)
Die EFI-System-Partition (ESP) wird von Maschinen verwendet, die auf dem Unified Extensible Firmware Interface (UEFI) basieren, um Bootloader und Kernel-Images für die installierten Betriebssysteme zu speichern.
Diese Partition ist in einem FAT-basierten Dateisystem formatiert. Auf einer Festplatte, die mit einer GUID-Partitionstabelle partitioniert ist, hat sie eine weltweit eindeutige Kennung von C12A7328-F81F-11D2-BA4B-00A0C93EC93B
. Wenn die Platte nach dem MBR-Partitionierungsschema formatiert wurde, lautet die Partitions-ID 0xEF
.
Auf Rechnern mit Microsoft Windows ist diese Partition normalerweise die erste auf der Festplatte, obwohl dies nicht erforderlich ist. Die ESP wird vom Betriebssystem bei der Installation erstellt (oder bestückt) und auf einem Linux-System unter /boot/efi
gemountet.
Die /home
Partition
Jeder Benutzer im System hat ein Homeverzeichnis, in dem persönliche Dateien und Einstellungen gespeichert sind, die meisten davon befinden sich unter /home
. Gewöhnlich trägt das Homeverzeichnis den selben Namen wie der Benutzer, so dass der Benutzer John sein Homeverzeichnis unter /home/john
erreichen kann.
Es gibt jedoch Ausnahmen. Zum Beispiel ist das Homeverzeichnis für den Root-Benutzer /root
, und einige Systemdienste haben möglicherweise Benutzer mit Homeverzeichnissen an anderen Orten assoziiert.
Es gibt keine Regel zur Bestimmung der Größe einer Partition für das /home
-Verzeichnis (die Homepartition). Sie sollten allerdings die Anzahl der Benutzer im System und die Art und Weise, wie es benutzt wird, berücksichtigen. Ein Benutzer, der nur Webbrowsing und Textverarbeitung betreibt, wird weniger Platz benötigen als einer, der beispielsweise überwiegend Videos bearbeitet.
Variable Daten (/var
)
Dieses Verzeichnis enthält “variable Daten” oder Dateien und Verzeichnisse, in die das System während des Betriebs schreiben können muss. Dazu gehören Systemprotokolle (in /var/log
), temporäre Dateien (/var/tmp
) und zwischengespeicherte Anwendungsdaten (in /var/cache
).
/var/www/html
ist beispielsweise das Standardverzeichnis für die Webdateien eines Webservers wie Apache und /var/lib/mysql
ist das Standardverzeichnis für die Datenbankdateien für den MySQL-Server. Beide können jedoch geändert werden.
Ein guter Grund, /var
in eine separate Partition zu legen, ist die Stabilität. Viele Anwendungen und Prozesse schreiben in /var
und Unterverzeichnisse, wie z.B. /var/log
oder /var/tmp
. Ein Prozess, der sich falsch verhält, kann so lange Daten schreiben, bis kein freier Platz mehr auf dem Dateisystem vorhanden ist.
Wenn /var
unter /
liegt, kann dies eine Kernel panic und eine Beschädigung des Dateisystems verursachen, was zu einer schwer behebaren Situation führt kann. Wenn aber /var
in einer separaten Partition gehalten wird, bleibt das Root-Dateisystem davon unberührt.
Wie bei /home
gibt es auch für /var
keine allgemeingültige Regel, um die Größe einer Partition zu bestimmen, da es von der Art und Weise abhängt, wie das System benutzt wird. Auf einem Heimsystem kann diese nur wenige Gigabyte betragen. Auf einer Datenbank oder einem Webserver kann jedoch viel mehr Platz benötigt werden. In solchen Szenarien ist es ratsam, /var
auf eine Partition auf einer anderen Platte als die Root-Partition zu legen, um eine zusätzliche Schutzebene gegen physische Festplattenfehler einzuführen.
Swap
Die Swap-Partition wird verwendet, um bei Bedarf Speicherseiten vom RAM auf die Festplatte auszulagern. Diese Partition muss von einem bestimmten Typ sein und mit einem geeigneten Dienstprogramm namens mkswap
eingerichtet werden, bevor sie benutzt werden kann.
Die Swap-Partition kann nicht wie andere Speicher gemountet werden, d.h. Sie können nicht wie auf ein normales Verzeichnis zugreifen und ihren Inhalt einsehen.
Ein System kann mehrere Swap-Partitionen haben (obwohl dies ungewöhnlich ist). Linux unterstützt auch die Verwendung von Swap-Dateien anstelle von Partitionen, was nützlich sein kann, um den Swap-Speicher bei Bedarf schnell zu vergrößern.
Die Größe der Swap-Partition ist ein strittiges Thema. Die alte Regel aus den frühen Tagen von Linux (“doppelt so viel RAM”) gilt möglicherweise nicht mehr, je nachdem, wie das System genutzt wird und wie viel physischer RAM installiert ist.
In der Dokumentation für Red Hat Enterprise Linux 7 empfiehlt Red Hat Folgendes:
Größe des RAM | Empfohlene Swap-Größe | Empfohlene Swap-Größe mit Ruhezustand |
---|---|---|
< 2 GB RAM |
2x die Menge des RAM |
3x die Menge des RAM |
2-8 GB RAM |
Entspricht der Menge des RAM |
2 x der Menge des RAM |
8-64 GB RAM |
Mindestens 4 GB |
1,5x so viel RAM |
> 64 GB RAM |
Mindestens 4 GB |
Nicht empfohlen |
Natürlich kann der Umfang des Swaps von der Arbeitsbelastung abhängig sein. Wenn auf der Maschine ein kritischer Dienst läuft, wie z.B. ein Datenbank-, Web- oder SAP-Server, ist es ratsam, in der Dokumentation dieser Dienste (oder bei Ihrem Softwarehersteller) nach einer Empfehlung zu suchen.
Note
|
Weitere Informationen zum Erstellen und Aktivieren von Auslagerungspartitionen und Auslagerungsdateien finden Sie unterden Lernziel 104.1 von LPIC-1. |
LVM
Wir haben bereits besprochen, wie Festplatten in eine oder mehrere Partitionen organisiert werden können, wobei jede Partition ein Dateisystem enthält, das beschreibt, wie Dateien und zugehörige Metadaten gespeichert werden. Einer der Nachteile der Partitionierung ist, dass der Systemadministrator im Voraus entscheiden muss, wie der verfügbare Plattenplatz auf einem Gerät verteilt wird. Dies kann später zu einigen Herausforderungen führen, wenn eine Partition mehr Speicherplatz als ursprünglich geplant benötigt. Natürlich können Partitionen in der Größe verändert werden, aber dies ist unter Umständen nicht möglich, wenn z.B. kein freier Speicherplatz auf der Platte vorhanden ist.
Logical Volume Management (LVM) ist eine Form der Speichervirtualisierung, die Systemadministratoren einen flexibleren Ansatz zur Verwaltung des Festplattenspeichers bietet als die herkömmliche Partitionierung. Das Ziel von LVM ist es, den Endbenutzern die Verwaltung von Speicheranforderungen zu erleichtern. Die Grundeinheit ist das Physical Volume (PV), welches ein Blockgerät des Systems (wie eine Plattenpartition oder ein RAID-Array) darstellt.
PVs werden in Volume Groups (VG) gruppiert, welche die zugrunde liegenden Geräte abstrahieren und als ein einziges logisches Gerät darstellt, welches die Speicherkapazität der PVs kombiniert.
Jedes Volume in einer Volume Group ist in Stücke fester Größe unterteilt, die als Extents bezeichnet werden. Extents auf einem PV werden Physical Extents (PE) genannt, während diejenigen auf einem Logical Volume Logical Extents (LE) genannt werden. Im Allgemeinen wird jede Logical Extents einer Physical Extents zugeordnet, aber dies kann sich ändern, wenn Funktionen wie Festplattenspiegelung verwendet werden.
Volume Groups lassen sich in Logical Volumes (LVs) unterteilen, welche funktionell ähnlich wie Partitionen arbeiten, aber flexibler sind.
Die Größe eines Logical Volume, entsprechend der Festlegung während deren Erstellung, wird durch die Größe der Physical Extents (standardmäßig 4 MB) multipliziert mit der Anzahl der Extents auf dem Volume definiert. Daraus ist leicht zu verstehen, dass der Systemadministrator zum Beispiel zum Vergrößern eines Logical Volumes lediglich weitere Extents aus dem in der Volume Group verfügbaren Pool hinzufügen muss. Ebenso können Extents entfernt werden, um das LV zu verkleinern.
Nachdem ein Logical Volume erstellt wurde, wird es vom Betriebssystem als ein normales Blockgerät betrachtet. Ein Gerät wird in /dev
erstellt und als /dev/VGNAME/LVNAME
bezeichnet, wobei VGNAME
der Name der Volumegruppe und LVNAME
der Name des Logical Volume ist.
Diese Geräte können mit einem gewünschten Dateisystem unter Verwendung von Standardwerkzeugen (wie z.B. mkfs.ext4
) formatiert und mit den üblichen Methoden gemountet werden, entweder manuell mit dem Befehl mount
oder automatisch durch Hinzufügen in die Datei /etc/fstab
.
Geführte Übungen
-
Wo werden auf Linux-Systemen die Dateien für den GRUB-Bootloader gespeichert?
-
Wo sollte die Bootpartition enden, um sicherzustellen, dass ein PC immer in der Lage sein wird, den Kernel zu laden?
-
Wo wird die EFI-Partition normalerweise gemountet?
-
Wenn ein Dateisystem manuell gemountet wird, unter welchem Verzeichnis sollte es normalerweise gemountet werden?
Offene Übungen
-
Was ist die kleinste Einheit innerhalb einer Volume Group?
-
Wie wird die Größe eines Logical Volume definiert?
-
Welche ID hat die EFI-System-Partition auf einer Platte, welche mit dem MBR-Partitionierungsschema formatiert wurde?
-
Wie kann man, abgesehen von Swap-Partitionen, den Swap-Speicherplatz auf einem Linux-System schnell vergrößern?
Zusammenfassung
In dieser Lektion haben Sie über Partitionierung gelernt, welche Verzeichnisse gewöhnlich in getrennten Partitionen gehalten werden und warum dies geschieht. Neben einem Überblick über LVM (Logical Volume Management), wurde aufgezeigt wie im Vergleich zur traditionellen Partitionierung eine flexiblere Art der Zuweisung Ihrer Daten und Festplattenspeichers geschehen kann.
Die folgenden Dateien, Begriffe und Dienstprogramme wurden diskutiert:
/
-
Das Linux Root-Dateisystem.
/var
-
Der Standardort für “variable Daten”, welche mit der Zeit ihre Speichergröße ändern.
/home
-
Das Standard-Elternverzeichnis für Homeverzeichnisse aller Benutzer auf einem System.
/boot
-
Der Standard-Speicherort für die Bootloaderdateien, den Linux-Kernel und das initiale RAM Image.
- EFI System Partition (ESP)
-
Wird von Systemen verwendet, die UEFI für die Speicherung der Bootdateien des Systems implementiert haben.
- Swap space
-
Wird zum Auslagern von Arbeitsspeicherseiten verwendet, wenn der RAM-Speicher stark beansprucht wird.
- Mount points
-
Verzeichnisorte, an denen ein Gerät (z.B. eine Festplatte) eingebunden wird.
- Partitions
-
Partitionen auf einer Festplatte.
Lösungen zu den geführten Übungen
-
Wo werden auf Linux-Systemen die Dateien für den GRUB-Bootloader gespeichert?
Unter
/boot/grub
. -
Wo sollte die Bootpartition enden, um sicherzustellen, dass ein PC immer in der Lage sein wird, den Kernel zu laden?
Vor Zylinder 1024.
-
Wo wird die EFI-Partition normalerweise gemountet?
Unter
/boot/efi
. -
Wenn ein Dateisystem manuell gemountet wird, unter welchem Verzeichnis sollte es normalerweise gemountet werden?
Unter
/mnt
. Dies ist jedoch nicht zwingend erforderlich. Sie können eine Partition unter jedem beliebigen Verzeichnis mounten.
Lösungen zu den offenen Übungen
-
Was ist die kleinste Einheit innerhalb einer Volume Group?
Die Volume Groups sind in Extents unterteilt.
-
Wie wird die Größe eines Logical Volume definiert?
Durch die Größe der physischen Extents multipliziert mit der Anzahl der Extents auf dem Volumen.
-
Welche ID hat die EFI-System-Partition auf einer Platte, welche mit dem MBR-Partitionierungsschema formatiert wurde?
Die ID lautet
0xEF
. -
Wie kann man, abgesehen von Swap-Partitionen, den Swap-Speicherplatz auf einem Linux-System schnell vergrößern?
Durch die Verwendung von Auslagerungsdateien.