Linux-Partitionen und Dateisysteme verwalten

CompTIABeginner
Jetzt üben

Einführung

In diesem Lab erwerben Sie die grundlegenden Fähigkeiten, die für die Verwaltung von Festplattenpartitionen und Dateisystemen in einer Linux-Umgebung erforderlich sind. Sie arbeiten mit Kommandozeilen-Utilities wie fdisk, um verfügbare Festplatten zu inspizieren, neue Partitionen zu erstellen und diese mit einem Standard-Dateisystem zu formatieren. Um eine sichere Lernumgebung zu gewährleisten, werden alle Operationen auf einer dedizierten sekundären virtuellen Festplatte, /dev/sdb, durchgeführt, sodass die primäre Betriebssystemfestplatte unberührt bleibt.

Hinweis: In dieser Lab-Umgebung ist /dev/sdb als Loop-Gerät implementiert (eine Datei, die sich wie eine Festplatte verhält). Wenn Sie Partitionen erstellen, erscheinen diese mit Namen wie loop13p1. Sie werden jedoch symbolische Links erstellen, um auf sie als /dev/sdb1, /dev/sdb2 usw. zuzugreifen, genau wie bei echter Hardware.

Im Laufe der Übungen werden Sie eine Standard-Linux-Partition erstellen, sie mit dem ext4-Dateisystem formatieren und lernen, wie man sie für die sofortige Nutzung einhängt (mountet). Anschließend konfigurieren Sie das System so, dass dieses Dateisystem beim Booten automatisch eingehängt wird, indem Sie die Datei /etc/fstab bearbeiten. Schließlich erweitern Sie Ihre Kenntnisse, indem Sie eine dedizierte Linux-Swap-Partition erstellen und verwalten – eine kritische Komponente für die Systemleistung.

Festplatten inspizieren und eine neue Linux-Partition mit fdisk erstellen

In diesem Schritt lernen Sie, wie Sie die verfügbaren Festplatten und deren Partitionstabellen inspizieren. Danach verwenden Sie das Utility fdisk, ein leistungsstarkes Kommandozeilen-Tool, um eine neue Partition auf einer sekundären Festplatte zu erstellen. In einer realen Umgebung müssen Sie beim Ändern von Partitionen extrem vorsichtig sein, da Fehler zu Datenverlust führen können. Für dieses Lab arbeiten wir auf einer dedizierten virtuellen Festplatte, /dev/sdb, um sicherzustellen, dass die Hauptfestplatte des Betriebssystems (/dev/sda) unberührt bleibt.

Zuerst verschaffen wir uns einen Überblick über alle Blockgeräte (Festplatten und Partitionen), die an Ihr System angeschlossen sind. Der Befehl lsblk bietet eine übersichtliche, baumartige Ansicht.

lsblk

Die Ausgabe zeigt Ihnen die verfügbaren Festplatten, einschließlich Ihrer primären Systemfestplatte (vda) und eines Loop-Geräts (loop13), das unsere virtuelle Festplatte für dieses Lab darstellt.

NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
...
loop13       7:13   0     2G  0 loop
vda        252:0    0    40G  0 disk
├─vda1     252:1    0     1M  0 part
├─vda2     252:2    0   200M  0 part /boot/efi
└─vda3     252:3    0  39.8G  0 part /

Beachten Sie, dass das Loop-Gerät (das über einen symbolischen Link als /dev/sdb zugänglich ist) eine virtuelle 2-GB-Festplatte ist, die noch keine Partitionen hat. Verwenden wir nun fdisk, um einen detaillierteren Blick auf die Partitionstabelle von /dev/sdb zu werfen. Das Flag -l listet die Partitionstabellen für die angegebenen Geräte auf und beendet sich dann. Da fdisk Root-Rechte benötigt, um Informationen auf Festplattenebene abzurufen, müssen Sie sudo verwenden.

sudo fdisk -l /dev/sdb

Die Ausgabe liefert Details über die Festplatte, einschließlich Größe, Sektoren und Identifikator. Da noch keine Partitionen vorhanden sind, ist die Geräteliste am Ende leer.

Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Hinweis: Wenn Sie die Festplatte zum ersten Mal verwenden, sehen Sie möglicherweise eine Meldung über das Erstellen eines neuen DOS-Disklabel.

Als Nächstes starten Sie fdisk im interaktiven Modus, um eine neue Partition zu erstellen. Dieser Prozess umfasst eine Abfolge von Ein-Buchstaben-Befehlen. Führen Sie den folgenden Befehl aus, um mit der Verwaltung von /dev/sdb zu beginnen:

sudo fdisk /dev/sdb

Sie befinden sich nun im fdisk-Utility, erkennbar an der Eingabeaufforderung Command (m for help):. Folgen Sie diesen Schritten sorgfältig:

  1. Neue Partition erstellen: Geben Sie n ein und drücken Sie Enter.
  2. Partitionstyp wählen: Sie werden gefragt, ob Sie eine primäre oder eine erweiterte Partition erstellen möchten. Der Standardwert ist primär (p), was wir auch wollen. Drücken Sie Enter, um den Standardwert zu akzeptieren.
  3. Partitionsnummer wählen: Der Standardwert ist 1, da dies die erste Partition ist. Drücken Sie Enter.
  4. Ersten Sektor angeben: Der Standardwert ist der erste verfügbare Sektor auf der Festplatte. Dies ist fast immer die richtige Wahl. Drücken Sie Enter.
  5. Letzten Sektor oder Größe angeben: Anstatt Sektoren zu berechnen, können Sie eine menschenlesbare Größe angeben. Erstellen wir eine 500-MB-Partition. Geben Sie +500M ein und drücken Sie Enter.
  6. Partitionstabelle im Speicher anzeigen: Bevor Sie speichern, sollten Sie Ihre Änderungen überprüfen. Geben Sie p ein und drücken Sie Enter, um das neue Partitionslayout zu sehen. Sie sollten ein neues Gerät /dev/sdb1 sehen.
  7. Änderungen auf die Festplatte schreiben: Die vorgenommenen Änderungen befinden sich bisher nur im Arbeitsspeicher. Um sie dauerhaft in die Partitionstabelle der Festplatte zu schreiben, geben Sie w ein und drücken Sie Enter. Dies schreibt die Änderungen und beendet fdisk.

Hier ist eine Zusammenfassung der interaktiven Sitzung:

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x54041549.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-4194303, default 4194303): +500M

Created a new partition 1 of type 'Linux' and of size 500 MiB.

Command (m for help): p
Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x54041549

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1        2048 1026047 1024000  500M 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Invalid argument

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

Nach dem Schreiben der Partitionstabelle bemerken Sie möglicherweise eine Meldung, dass der Kernel die Partitionstabelle nicht sofort neu einlesen konnte. Dies ist bei der Arbeit mit Loop-Geräten normal. Der Befehl partprobe fordert den Betriebssystemkern auf, die Partitionstabelle neu einzulesen.

sudo partprobe

Überprüfen Sie nun mit lsblk, ob das System die neue Partition erkennt.

lsblk /dev/sdb

Die Ausgabe sollte das Loop-Gerät und seine neue Partition zeigen. Aufgrund des Loop-Geräte-Setups erscheint die Partition als loop13p1:

NAME       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop13       7:13   0    2G  0 loop
└─loop13p1 259:0    0  500M  0 part

Da die Partition als loop13p1 erscheint, das Lab aber /dev/sdb1 benötigt, müssen wir einen symbolischen Link für die Partition erstellen. Identifizieren wir zuerst das tatsächliche Partitionsgerät:

PARTITION_DEVICE=$(lsblk -lno NAME /dev/sdb | grep p1 | head -1)
echo "Partition device: /dev/$PARTITION_DEVICE"

Erstellen Sie nun einen symbolischen Link für die Partition:

sudo ln -s /dev/$PARTITION_DEVICE /dev/sdb1

Überprüfen Sie, ob /dev/sdb1 nun funktioniert:

lsblk /dev/sdb1

Die Ausgabe sollte nun zeigen, dass die Partition als /dev/sdb1 zugänglich ist:

NAME       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop13p1   259:0    0  500M  0 part

Sie haben erfolgreich eine neue 500-MB-Linux-Partition auf /dev/sdb erstellt und sie als /dev/sdb1 zugänglich gemacht.

Ein ext4-Dateisystem mit mkfs.ext4 erstellen und formatieren

In diesem Schritt formatieren Sie die neu erstellte Partition /dev/sdb1 mit einem Dateisystem. Ein Dateisystem bietet die Struktur, die zum Speichern und Organisieren von Dateien und Verzeichnissen erforderlich ist. Ohne ein Dateisystem kann das Betriebssystem nicht von der Partition lesen oder darauf schreiben. Wir verwenden ext4, das aufgrund seiner Leistung, Zuverlässigkeit und Funktionen das Standard-Dateisystem für moderne Linux-Distributionen ist.

Der Befehl zum Erstellen eines Dateisystems lautet mkfs (kurz für "make filesystem"). Er dient als Frontend für verschiedene dateisystemspezifische Programme wie mkfs.ext4, mkfs.xfs usw. Wir verwenden mkfs.ext4 direkt. Dieser Vorgang ist destruktiv und löscht alle vorhandenen Daten auf der Partition, weshalb sudo-Rechte erforderlich sind.

Um die Partition /dev/sdb1 mit dem ext4-Dateisystem zu formatieren, führen Sie den folgenden Befehl aus:

sudo mkfs.ext4 /dev/sdb1

Der Befehl erstellt das Dateisystem und zeigt Informationen über den Prozess an, einschließlich der Dateisystem-UUID, der Blockgröße und der Anzahl der Inodes.

mke2fs x.xx.x (xx-xxx-xxxx)
Creating filesystem with 128000 4k blocks and 32000 inodes
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks:
 32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Nach der Formatierung können Sie überprüfen, ob das Dateisystem erfolgreich erstellt wurde. Der Befehl blkid ist dafür hervorragend geeignet, da er Attribute von Blockgeräten ausgibt, einschließlich ihres Dateisystemtyps.

sudo blkid /dev/sdb1

Die Ausgabe sollte deutlich zeigen, dass /dev/sdb1 nun den TYPE ext4 hat.

/dev/sdb1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1a2b3c4d-01"

Für eine detailliertere Ansicht können Sie den Befehl dumpe2fs mit dem Flag -h verwenden, um die Superblock-Informationen anzuzeigen. Der Superblock enthält wichtige Metadaten über das Dateisystem.

sudo dumpe2fs -h /dev/sdb1

Dieser Befehl erzeugt eine umfangreiche Ausgabe. Suchen Sie nach Schlüsselzeilen wie Filesystem magic number und Filesystem state, um die Integrität des Dateisystems zu bestätigen.

dumpe2fs x.xx.x (xx-xxx-xxxx)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
...

Sie haben die Partition nun erfolgreich formatiert, und sie ist bereit, eingehängt und zum Speichern von Daten verwendet zu werden.

Das Dateisystem einhängen, testen und aushängen

In diesem Schritt lernen Sie, wie Sie Ihr neu formatiertes Dateisystem für das Betriebssystem zugänglich machen. Dieser Vorgang wird "Mounten" (Einhängen) genannt. Dabei wird das Dateisystem eines Geräts (wie /dev/sdb1) mit einem bestimmten Verzeichnis im Dateisystembaum verknüpft, dem sogenannten "Mountpoint" (Einhängepunkt). Sobald es eingehängt ist, können Sie mit der Partition wie mit jedem anderen Verzeichnis interagieren.

Zuerst müssen Sie einen Mountpoint erstellen. Dies ist einfach ein leeres Verzeichnis. Es ist üblich, temporäre Mountpoints unter dem Verzeichnis /mnt zu erstellen. Erstellen wir ein Verzeichnis namens /mnt/data. Da /mnt ein Systemverzeichnis ist, benötigen Sie sudo.

sudo mkdir /mnt/data

Verwenden Sie nun den Befehl mount, um die Partition /dev/sdb1 an das Verzeichnis /mnt/data zu binden.

sudo mount /dev/sdb1 /mnt/data

Um zu überprüfen, ob das Dateisystem eingehängt ist, kontrollieren wir zunächst den Mount-Status. Wir verwenden mehrere Befehle zur Verifizierung:

## Prüfen, ob das Verzeichnis ein Mountpoint ist
mountpoint /mnt/data

Wenn das Mounten erfolgreich war, sollten Sie Folgendes sehen:

/mnt/data is a mountpoint

Prüfen wir nun die Festplattenbelegung mit df. Aufgrund des Loop-Geräte-Setups erscheint die Partition möglicherweise mit ihrem echten Gerätenamen anstelle des symbolischen Links:

df -h /mnt/data

Sie sollten einen Eintrag sehen, der das eingehängte Dateisystem anzeigt:

Filesystem      Size  Used Avail Use% Mounted on
/dev/loop13p1   488M  2.6M  459M   1% /mnt/data

Sie können dies auch mit dem Befehl mount verifizieren:

mount | grep /mnt/data

Dies sollte Folgendes ausgeben:

/dev/loop13p1 on /mnt/data type ext4 (rw,relatime)

Testen wir nun, ob wir Daten auf unser neues Dateisystem schreiben können. Überprüfen wir zunächst die aktuellen Besitzer und Berechtigungen des Mountpoints:

ls -ld /mnt/data

Sie sollten etwas Ähnliches wie dies sehen:

drwxr-xr-x 3 root root 4096 Dec 12 10:00 /mnt/data

Versuchen Sie nun, eine Datei im Mountpoint zu erstellen:

touch /mnt/data/testfile

Dieser Befehl wird wahrscheinlich mit der Fehlermeldung "Permission denied" (Berechtigung verweigert) fehlschlagen. Das liegt daran, dass das Stammverzeichnis des eingehängten Dateisystems dem Benutzer root gehört. Um dies zu beheben, ändern Sie den Besitzer des Mountpoints auf Ihren aktuellen Benutzer labex:

sudo chown labex:labex /mnt/data

Versuchen Sie nun erneut, die Datei zu erstellen:

touch /mnt/data/testfile

Diesmal sollte der Befehl erfolgreich sein. Überprüfen Sie, ob die Datei erstellt wurde:

ls -l /mnt/data

Sie sollten Folgendes sehen:

total 16
drwx------ 2 root  root  16384 Dec 12 10:00 lost+found
-rw-r--r-- 1 labex labex     0 Dec 12 10:05 testfile

Das Verzeichnis lost+found ist ein Standardmerkmal von ext4-Dateisystemen und wird zur Wiederherstellung von Dateien im Falle einer Dateisystembeschädigung verwendet.

Wenn Sie die Arbeit mit dem Dateisystem beendet haben, sollten Sie es mit dem Befehl umount aushängen. Beachten Sie, dass Sie ein Dateisystem nicht aushängen können, wenn es gerade verwendet wird – zum Beispiel, wenn Ihr aktuelles Arbeitsverzeichnis innerhalb des Mountpoints liegt. Sehen wir uns das in der Praxis an.

Wechseln Sie zuerst in das Verzeichnis /mnt/data:

cd /mnt/data

Versuchen Sie nun, es auszuhängen. Sie können ein Dateisystem entweder über seinen Gerätenamen oder seinen Mountpoint ansprechen.

sudo umount /mnt/data

Sie erhalten eine Fehlermeldung, dass das Ziel beschäftigt ist.

umount: /mnt/data: target is busy.

Um es erfolgreich auszuhängen, müssen Sie zuerst das Verzeichnis verlassen. Kehren wir in Ihr Home-Verzeichnis zurück.

cd ~

Führen Sie nun den Befehl umount erneut aus.

sudo umount /mnt/data

Der Befehl sollte ohne Ausgabe ausgeführt werden. Sie können mit dem Befehl mountpoint verifizieren, dass es nicht mehr eingehängt ist:

mountpoint /mnt/data

Sie sollten sehen:

/mnt/data is not a mountpoint

Schließlich können Sie aufräumen, indem Sie das Mountpoint-Verzeichnis entfernen:

sudo rmdir /mnt/data

Hinweis zur Fehlerbehebung: Falls der mount-Befehl nicht funktioniert, können Sie versuchen, den tatsächlichen Namen des Loop-Geräts anstelle des symbolischen Links zu verwenden:

## Den tatsächlichen Gerätenamen finden
ACTUAL_DEVICE=$(readlink -f /dev/sdb1)
echo "Actual device: $ACTUAL_DEVICE"

## Mit dem tatsächlichen Gerätenamen einhängen
sudo mkdir /mnt/data
sudo mount $ACTUAL_DEVICE /mnt/data

Dauerhaftes Einhängen in /etc/fstab konfigurieren

In diesem Schritt lernen Sie, wie Sie Ihr Dateisystem so konfigurieren, dass es bei jedem Systemstart automatisch eingehängt wird. Der Befehl mount, den Sie im vorherigen Schritt verwendet haben, ist temporär; die Verbindung geht nach einem Neustart verloren. Um ein dauerhaftes Einhängen zu erreichen, müssen Sie einen Eintrag in einer speziellen Konfigurationsdatei namens /etc/fstab (filesystem table) erstellen.

Das System liest die /etc/fstab während des Bootvorgangs, um zu bestimmen, welche Dateisysteme eingehängt werden sollen. Da dies eine kritische Datei ist, empfiehlt es sich immer, vor dem Bearbeiten eine Sicherungskopie zu erstellen.

Erstellen wir zunächst ein Backup der aktuellen fstab-Datei.

sudo cp /etc/fstab /etc/fstab.bak

Als Nächstes benötigen wir einen dauerhaften Mountpoint. Im vorherigen Schritt haben wir /mnt/data verwendet und dann wieder gelöscht. Für permanente Mounts ist es üblich, ein Verzeichnis im Root-Dateisystem zu erstellen. Erstellen wir ein Verzeichnis namens /data.

sudo mkdir /data

Obwohl Sie den Gerätenamen (/dev/sdb1) in der /etc/fstab verwenden können, wird dies nicht empfohlen. Gerätenamen können sich nach Neustarts ändern, insbesondere wenn Hardware hinzugefügt oder entfernt wird. Eine wesentlich zuverlässigere Methode ist die Verwendung des Universally Unique Identifier (UUID) der Partition. Dies ist eine eindeutige Zeichenfolge, die dem Dateisystem bei der Erstellung zugewiesen wurde und sich nicht ändert.

Um die UUID für /dev/sdb1 zu finden, verwenden Sie erneut den Befehl blkid:

sudo blkid /dev/sdb1

Die Ausgabe zeigt die UUID an. Kopieren Sie diesen Wert (ohne die Anführungszeichen).

/dev/sdb1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1a2b3c4d-01"

Nun bearbeiten Sie die /etc/fstab mit dem Editor nano. Sie müssen sudo verwenden, da es sich um eine Systemdatei handelt.

sudo nano /etc/fstab

Gehen Sie zum Ende der Datei und fügen Sie eine neue Zeile für Ihre Partition hinzu. Das Format für einen fstab-Eintrag lautet:
<Geräte-Identifikator> <Mountpoint> <Dateisystemtyp> <Optionen> <Dump> <Pass>

Fügen Sie die folgende Zeile hinzu und ersetzen Sie xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx durch die tatsächliche UUID, die Sie mit dem Befehl blkid ermittelt haben.

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
  • UUID=...: Identifiziert die Partition anhand ihrer eindeutigen ID.
  • /data: Das Verzeichnis, in dem das Dateisystem eingehängt wird.
  • ext4: Der Typ des Dateisystems.
  • defaults: Ein Standardsatz von Mount-Optionen, der für die meisten Fälle geeignet ist.
  • 0: Das dump-Feld. Dies ist ein veraltetes Flag für Backup-Utilities und sollte auf 0 stehen.
  • 2: Das pass-Feld. Es teilt dem Utility fsck die Reihenfolge für die Dateisystemprüfung beim Booten mit. 1 ist für das Root-Dateisystem reserviert, 2 für andere permanente Dateisysteme, und 0 deaktiviert die Prüfung.

Nachdem Sie die Zeile hinzugefügt haben, speichern Sie die Datei und beenden Sie nano durch Drücken von Strg+X, dann J (oder Y bei englischer Tastaturbelegung) und Enter.

Anstatt das System zum Testen neu zu starten, können Sie den Befehl mount -a verwenden. Dieser Befehl hängt alle in der /etc/fstab aufgeführten Dateisysteme ein, die noch nicht eingehängt sind.

sudo mount -a

Wenn keine Fehler auftreten, wird der Befehl ohne Rückmeldung abgeschlossen. Sie können nun mit dem Befehl df überprüfen, ob Ihr Dateisystem korrekt eingehängt ist.

df -h | grep /data

Die Ausgabe sollte bestätigen, dass /dev/sdb1 auf /data eingehängt ist.

/dev/sdb1       488M  2.6M  459M   1% /data

Ihre Partition wird nun bei jedem Systemstart automatisch eingehängt.

Eine Linux-Swap-Partition erstellen und verwalten

In diesem Schritt lernen Sie einen weiteren speziellen Partitionstyp kennen: Linux Swap. Swap-Speicher wird vom Betriebssystem als virtueller Arbeitsspeicher verwendet, wenn der physische RAM voll ist. Er ermöglicht es dem System, inaktive Speicherseiten auf die Festplatte auszulagern und so RAM für aktive Prozesse freizugeben. Obwohl Swap kein Ersatz für ausreichend RAM ist, kann eine Swap-Partition Systemabstürze aufgrund von Speichermangel verhindern.

Wichtiger Hinweis: Bevor Sie eine neue Partition erstellen, stellen Sie sicher, dass alle vorhandenen Dateisysteme auf /dev/sdb ausgehängt sind. Wenn das Gerät derzeit eingehängt ist (aus vorherigen Schritten), können beim Versuch, die Partitionstabelle zu ändern, Fehler wie "Device or resource busy" auftreten.

Wir werden eine neue Partition auf /dev/sdb erstellen und sie als Swap-Speicher konfigurieren. Stellen wir zuerst sicher, dass das Gerät nicht eingehängt ist, und verwenden dann fdisk, um die Partition zu erstellen. Da wir bereits /dev/sdb1 erstellt haben, wird diese neue Partition /dev/sdb2 sein.

## Zuerst prüfen, ob das Gerät eingehängt ist, und bei Bedarf aushängen
lsblk /dev/sdb
sudo umount /data /mnt/data 2> /dev/null || true

## Jetzt die Partition erstellen
sudo fdisk /dev/sdb

Folgen Sie innerhalb der interaktiven fdisk-Eingabeaufforderung diesen Befehlen:

  1. Neue Partition erstellen: Geben Sie n ein und drücken Sie Enter.
  2. Partitionstyp und -nummer wählen: Akzeptieren Sie die Standardwerte für eine primäre Partition (p) und die Partitionsnummer 2, indem Sie zweimal Enter drücken.
  3. Sektoren angeben: Akzeptieren Sie den Standardwert für den ersten Sektor. Für die Größe erstellen wir eine 256-MB-Partition. Geben Sie +256M ein und drücken Sie Enter.
  4. Partitionstyp ändern: Dies ist der entscheidende Schritt. Geben Sie t ein, um den Typ einer Partition zu ändern. Wenn Sie nach der Partitionsnummer gefragt werden, geben Sie 2 ein. Wenn nach dem Hex-Code gefragt wird, geben Sie 82 ein, was "Linux swap / Solaris" entspricht.
  5. Prüfen und verifizieren: Geben Sie p ein, um die Änderungen zu überprüfen. Sie sollten /dev/sdb2 mit dem Typ Linux swap / Solaris sehen.
  6. Änderungen schreiben: Geben Sie w ein, um die neue Partitionstabelle zu speichern und das Programm zu beenden.
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (1026048-4194303, default 1026048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1026048-4194303, default 4194303): +256M

Created a new partition 2 of type 'Linux' and of size 256 MiB.

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p
Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
...
Device     Boot   Start     End   Sectors   Size Id Type
/dev/sdb1          2048 1026047   1024000   500M 83 Linux
/dev/sdb2       1026048 1550335    524288   256M 82 Linux swap / Solaris

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

Nach dem Erstellen der Partition müssen wir einen symbolischen Link für /dev/sdb2 erstellen, genau wie wir es für /dev/sdb1 getan haben. Führen Sie zuerst partprobe aus, um sicherzustellen, dass der Kernel die neue Partition erkennt:

sudo partprobe

Identifizieren und erstellen Sie nun den symbolischen Link für die zweite Partition:

PARTITION2_DEVICE=$(lsblk -lno NAME /dev/sdb | grep p2 | head -1)
sudo ln -s /dev/$PARTITION2_DEVICE /dev/sdb2

Überprüfen Sie, ob die Partition zugänglich ist:

lsblk /dev/sdb2

Bevor wir die Partition als Swap-Speicher formatieren, müssen wir sicherstellen, dass das Gerät nicht beschäftigt ist. Wenn Sie eine Fehlermeldung "Device or resource busy" erhalten, bedeutet dies, dass das Gerät möglicherweise noch eingehängt ist. Prüfen wir dies und hängen alle vorhandenen Mounts aus:

## Aktuellen Mount-Status prüfen
lsblk /dev/sdb

## Falls das Gerät eingehängt ist, aushängen
sudo umount /data /mnt/data 2> /dev/null || true

Da die Partition nun erstellt und zugänglich ist, müssen Sie sie mit dem Befehl mkswap für die Verwendung als Swap-Speicher formatieren.

sudo mkswap /dev/sdb2

Nach der Formatierung können Sie den Swap-Speicher aktivieren. Überprüfen Sie zunächst die aktuelle Swap-Nutzung mit dem Befehl free -h.

free -h

Die Ausgabe wird wahrscheinlich 0B für Swap anzeigen.

              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       151Mi       1.6Gi       0.0Ki       202Mi       1.7Gi
Swap:            0B          0B          0B

Aktivieren Sie nun die neue Swap-Partition mit dem Befehl swapon.

sudo swapon /dev/sdb2

Überprüfen Sie die Swap-Nutzung erneut mit free -h und swapon -s (Zusammenfassung).

free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       152Mi       1.4Gi       0.0Ki       202Mi       1.6Gi
Swap:         256Mi          0B       256Mi
swapon -s
Filename    Type  Size Used Priority
/dev/sdb2                               partition 262140 0 -2

Sie können sehen, dass der gesamte Swap-Speicher zugenommen hat. Um eine Swap-Partition zu deaktivieren, verwenden Sie den Befehl swapoff.

sudo swapoff /dev/sdb2

Vergewissern Sie sich durch erneutes Ausführen von free -h, dass sie deaktiviert wurde. Der Swap-Speicher wird wieder auf Null zurückgehen. Dies zeigt, wie man Swap-Speicher auf einem laufenden System dynamisch verwaltet.

Hinweis zur Fehlerbehebung: Wenn Sie in diesem Schritt auf "Device or resource busy"-Fehler stoßen, bedeutet dies in der Regel:

  1. Das Gerät oder eine seiner Partitionen ist derzeit eingehängt.
  2. Ein Prozess greift auf das Gerät zu.

Um dies zu beheben, stellen Sie sicher, dass alle Mountpoints mit sudo umount /data /mnt/data ausgehängt sind, bevor Sie mit Partitionsoperationen fortfahren.

Zusammenfassung

In diesem Lab haben Sie die wesentlichen Fähigkeiten zur Verwaltung von Festplattenpartitionen und Dateisystemen auf einem Linux-System erlernt. Sie begannen mit der Inspektion der verfügbaren Blockgeräte mittels lsblk und nutzten dann das Utility fdisk, um eine neue primäre Partition auf einer sekundären Festplatte zu erstellen. Nach der Erstellung der Partition haben Sie diese mit dem ext4-Dateisystem über mkfs.ext4 formatiert. Sie haben außerdem geübt, das neue Dateisystem in ein Verzeichnis einzuhängen, seinen Status zu überprüfen und es wieder auszuhängen. Schließlich konfigurierten Sie das dauerhafte Einhängen, indem Sie die Datei /etc/fstab mit der UUID der Partition bearbeiteten, um sicherzustellen, dass sie beim Systemstart automatisch gemountet wird.

Zusätzlich behandelte das Lab den Prozess der Erstellung und Verwaltung eines dedizierten Swap-Speichers. Dies beinhaltete die erneute Verwendung von fdisk, um eine Partition zu erstellen und ihren Typ auf "Linux swap" zu ändern. Anschließend bereiteten Sie diese Partition mit dem Befehl mkswap als Swap-Bereich vor und aktivierten sie mit swapon. Um den Swap-Speicher über Neustarts hinweg dauerhaft zu machen, haben Sie zudem einen entsprechenden Eintrag in der Datei /etc/fstab hinzugefügt.