Linux-Partitionen und Dateisysteme verwalten

CompTIACompTIABeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Lab lernen Sie die grundlegenden Fähigkeiten, die für die Verwaltung von Festplattenpartitionen und Dateisystemen in einer Linux-Umgebung erforderlich sind. Sie werden mit Befehlszeilen-Dienstprogrammen wie fdisk arbeiten, um verfügbare Festplatten zu inspizieren, neue Partitionen zu erstellen und diese mit einem Standarddateisystem zu formatieren. Um eine sichere Lernerfahrung 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 wird /dev/sdb als Loop-Device (eine Datei, die sich wie eine Festplatte verhält) implementiert. Wenn Sie Partitionen erstellen, erscheinen diese mit Namen wie loop13p1, aber Sie werden symbolische Links erstellen, um auf sie als /dev/sdb1, /dev/sdb2 usw. zuzugreifen, wie Sie es bei echter Hardware tun würden.

Während der Übungen erstellen Sie eine Standard-Linux-Partition, formatieren diese mit dem ext4-Dateisystem und lernen, wie Sie sie für die sofortige Verwendung einbinden (mounten). Anschließend konfigurieren Sie das System so, dass dieses Dateisystem beim Booten automatisch eingebunden wird, indem Sie die Datei /etc/fstab bearbeiten. Abschließend erweitern Sie Ihre Fähigkeiten durch die Erstellung und Verwaltung einer dedizierten Linux-Swap-Partition, einer kritischen 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 ihre Partitionstabellen inspizieren. Anschließend verwenden Sie das Dienstprogramm fdisk, ein leistungsstarkes Befehlszeilenwerkzeug, um eine neue Partition auf einer sekundären Festplatte zu erstellen. In einem realen Szenario müssen Sie beim Ändern von Partitionen äußerst 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 Hauptbetriebssystemfestplatte (/dev/sda) unberührt bleibt.

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

lsblk

Die Ausgabe zeigt Ihnen die verfügbaren Festplatten, einschließlich Ihrer primären Systemfestplatte (vda) und eines Loop-Devices (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-Device (das über einen symbolischen Link als /dev/sdb zugänglich ist) eine 2 GB große virtuelle Festplatte ohne Partitionen ist. Nun verwenden wir fdisk, um die Partitionstabelle von /dev/sdb genauer zu betrachten. Das Flag -l listet die Partitionstabellen für die angegebenen Geräte auf und beendet sich dann. Da fdisk Root-Privilegien benötigt, um auf Festplattenebene Informationen zu inspizieren, müssen Sie sudo verwenden.

sudo fdisk -l /dev/sdb

Die Ausgabe liefert Details zur Festplatte, einschließlich ihrer Größe, Sektoren und Kennung. Da noch keine Partitionen vorhanden sind, ist die Liste der Geräte 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 zur Erstellung eines neuen DOS-Disk-Labels.

Als Nächstes starten Sie fdisk im interaktiven Modus, um eine neue Partition zu erstellen. Dieser Prozess beinhaltet eine Reihe 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-Dienstprogramm, was durch die Eingabeaufforderung Command (m for help): angezeigt wird. Befolgen Sie diese Schritte sorgfältig:

  1. Neue Partition erstellen: Geben Sie n ein und drücken Sie Enter.
  2. Partitionstyp wählen: Sie werden aufgefordert, einen Partitionstyp auszuwählen (primär oder erweitert). Der Standard ist primär (p), was wir wollen. Drücken Sie Enter, um den Standard zu akzeptieren.
  3. Partitionsnummer wählen: Die Standardeinstellung ist 1, da dies die erste Partition ist. Drücken Sie Enter, um sie zu akzeptieren.
  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, um den Standard zu akzeptieren.
  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. In-Memory-Partitionstabelle anzeigen: Bevor Sie speichern, ist es eine gute Praxis, Ihre Änderungen zu überprüfen. Geben Sie p ein und drücken Sie Enter, um das neue Partitionslayout anzuzeigen. Sie sollten ein neues Gerät, /dev/sdb1, sehen.
  7. Änderungen auf die Festplatte schreiben: Die von Ihnen vorgenommenen Änderungen befinden sich noch nur im Speicher. Um sie in der Partitionstabelle der Festplatte zu speichern, 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).

Nachdem Sie die Partitionstabelle geschrieben haben, bemerken Sie möglicherweise eine Meldung, dass der Kernel die Partitionstabelle nicht sofort neu lesen konnte. Dies ist normal, wenn Sie mit Loop-Devices arbeiten. Der Befehl partprobe fordert das Betriebssystem-Kernel auf, die Partitionstabelle neu zu lesen.

sudo partprobe

Überprüfen Sie nun, ob das System die neue Partition erkennt, indem Sie erneut lsblk ausführen.

lsblk /dev/sdb

Die Ausgabe sollte das Loop-Device und seine neue Partition anzeigen. Aufgrund der Loop-Device-Konfiguration wird die Partition als loop13p1 angezeigt:

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 angezeigt wird, das Lab aber /dev/sdb1 benötigt, um zu funktionieren, müssen wir einen symbolischen Link für die Partition erstellen. Zuerst identifizieren wir 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 jetzt funktioniert:

lsblk /dev/sdb1

Die Ausgabe sollte nun die Partition anzeigen, die 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.

Erstellen und Formatieren eines ext4-Dateisystems mit mkfs.ext4

In diesem Schritt formatieren Sie die neu erstellte Partition, /dev/sdb1, mit einem Dateisystem. Ein Dateisystem stellt die Struktur bereit, die zum Speichern und Organisieren von Dateien und Verzeichnissen benötigt wird. Ohne ein Dateisystem kann das Betriebssystem nicht von der Partition lesen oder auf sie schreiben. Wir verwenden ext4, das aufgrund seiner Leistung, Zuverlässigkeit und Funktionen das Standard- und am weitesten verbreitete Dateisystem für moderne Linux-Distributionen ist.

Der Befehl zum Erstellen eines Dateisystems ist mkfs, was für "make filesystem" steht. Es ist ein Frontend für verschiedene dateisystemspezifische Builder, wie z. B. mkfs.ext4, mkfs.xfs usw. Wir werden mkfs.ext4 direkt verwenden. Diese Operation ist destruktiv und löscht alle vorhandenen Daten auf der Partition, weshalb sie sudo-Privilegien erfordert.

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 Inode-Anzahl.

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 ein hervorragendes Werkzeug dafür, da er Attribute von Blockgeräten ausgibt, einschließlich ihres Dateisystemtyps.

sudo blkid /dev/sdb1

Die Ausgabe sollte klar zeigen, dass /dev/sdb1 nun einen TYPE von 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 kritische Metadaten über das Dateisystem.

sudo dumpe2fs -h /dev/sdb1

Dieser Befehl erzeugt viele Ausgaben. Suchen Sie nach wichtigen Zeilen 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 (mounted) und zur Speicherung von Daten verwendet zu werden.

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 als "Mounting" bezeichnet. Beim Mounten wird das Dateisystem auf einem Gerät (wie /dev/sdb1) an ein bestimmtes Verzeichnis im Dateisystembaum angehängt, das als "Mount Point" bezeichnet wird. Sobald es eingehängt ist, können Sie mit der Partition wie mit jedem anderen Verzeichnis interagieren.

Zuerst müssen Sie einen Mount Point erstellen. Dies ist einfach ein leeres Verzeichnis. Es ist üblich, temporäre Mount Points 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 anzuhängen.

sudo mount /dev/sdb1 /mnt/data

Um zu überprüfen, ob das Dateisystem eingehängt ist, prüfen wir zunächst, ob der Mount-Befehl erfolgreich war, indem wir den Mount-Status überprüfen. Wir verwenden mehrere Befehle, um den Mount zu verifizieren:

## Prüfen, ob der Mount Point das eingehängte Dateisystem hat
mountpoint /mnt/data

Wenn das Einhängen erfolgreich war, sollten Sie Folgendes sehen:

/mnt/data is a mountpoint

Überprüfen wir nun die Festplattennutzung mit df. Aufgrund der Loop-Device-Konfiguration kann die Partition mit ihrem tatsächlichen Gerätenamen anstelle des symbolischen Link-Namens angezeigt werden:

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 überprüfen:

mount | grep /mnt/data

Dies sollte Folgendes anzeigen:

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

Testen wir nun, ob wir Daten auf unser neues Dateisystem schreiben können. Zuerst überprüfen wir den aktuellen Besitz und die Berechtigungen des Mount Points:

ls -ld /mnt/data

Sie sollten etwas Ähnliches sehen:

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

Versuchen Sie nun, eine Datei im Mount Point zu erstellen:

touch /mnt/data/testfile

Dieser Befehl wird wahrscheinlich mit einer Fehlermeldung "Permission denied" fehlschlagen. Das liegt daran, dass das Stammverzeichnis des eingehängten Dateisystems dem Benutzer root gehört. Um dies zu beheben, ändern Sie den Besitz des Mount Points 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 mit der Verwendung des Dateisystems fertig sind, sollten Sie es mit dem Befehl umount aushängen. Es ist wichtig zu beachten, dass Sie ein Dateisystem nicht aushängen können, wenn es gerade verwendet wird, z. B. wenn Ihr aktuelles Arbeitsverzeichnis sich innerhalb des Mount Points befindet. Sehen wir uns das in Aktion an.

Ändern Sie zuerst Ihr Verzeichnis zu /mnt/data:

cd /mnt/data

Versuchen Sie nun, es auszuhängen. Sie können sich auf ein Dateisystem entweder über seinen Gerätenamen oder seinen Mount Point beziehen.

sudo umount /mnt/data

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

umount: /mnt/data: target is busy.

Um es erfolgreich auszuhängen, müssen Sie zuerst das Verzeichnis verlassen. Gehen wir zurück zu Ihrem Home-Verzeichnis.

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 überprüfen, ob es nicht mehr eingehängt ist, indem Sie den Befehl mountpoint ausführen:

mountpoint /mnt/data

Sie sollten sehen:

/mnt/data is not a mountpoint

Schließlich können Sie die Bereinigung durch Entfernen des Mount Point-Verzeichnisses durchführen:

sudo rmdir /mnt/data

Fehlerbehebungshinweis: Wenn Sie Probleme mit dem mount-Befehl haben, können Sie versuchen, das Einhängen mit dem tatsächlichen Loop-Device-Namen anstelle des symbolischen Links durchzuführen:

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

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

Konfigurieren des persistenten Mountens in /etc/fstab

In diesem Schritt lernen Sie, wie Sie Ihr Dateisystem bei jedem Systemstart automatisch einhängen lassen. Der mount-Befehl, den Sie im vorherigen Schritt verwendet haben, ist temporär; der Mount geht nach einem Neustart verloren. Um einen persistenten Mount zu erstellen, müssen Sie einen Eintrag zu einer speziellen Konfigurationsdatei namens /etc/fstab (filesystem table) hinzufügen.

Das System liest /etc/fstab während des Bootvorgangs, um zu bestimmen, welche Dateisysteme eingehängt werden sollen. Dies ist eine kritische Datei, daher ist es immer eine gute Idee, vor der Bearbeitung eine Sicherungskopie zu erstellen.

Erstellen wir zunächst eine Sicherungskopie der aktuellen fstab-Datei.

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

Als Nächstes benötigen wir einen permanenten Mount Point. Im vorherigen Schritt haben wir /mnt/data verwendet und es dann entfernt. 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 /etc/fstab verwenden können, wird dies nicht empfohlen. Gerätenamen können sich zwischen Neustarts manchmal ändern, insbesondere wenn Sie Hardware hinzufügen oder entfernen. Eine wesentlich zuverlässigere Methode ist die Verwendung der Universally Unique Identifier (UUID) der Partition, einer eindeutigen Zeichenfolge, die dem Dateisystem bei seiner Erstellung zugewiesen wird 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 /etc/fstab mit dem nano-Editor. 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 ist:
<device_identifier> <mount_point> <filesystem_type> <options> <dump> <pass>

Fügen Sie die folgende Zeile hinzu und ersetzen Sie xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx durch die tatsächliche UUID, die Sie aus dem blkid-Befehl kopiert 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: Eine Standardmenge von Mount-Optionen, die für die meisten Fälle geeignet sind.
  • 0: Das Feld dump. Dies ist ein veralteter Flag für Sicherungsdienstprogramme und sollte 0 sein.
  • 2: Das Feld pass. Dies teilt dem fsck-Dienstprogramm die Reihenfolge für die Überprüfung von Dateisystemen beim Booten mit. 1 ist für das Root-Dateisystem, 2 für andere permanente Dateisysteme und 0 deaktiviert die Überprüfung.

Nachdem Sie die Zeile hinzugefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und dann Enter drücken.

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

sudo mount -a

Wenn keine Fehler auftreten, wird der Befehl stillschweigend 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.

Erstellen und Verwalten einer Linux-Swap-Partition

In diesem Schritt lernen Sie eine weitere spezielle Art von Partition kennen: Linux Swap. Der 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 zu verschieben und so RAM für aktive Prozesse freizugeben. Obwohl er keinen ausreichenden RAM ersetzen kann, kann eine Swap-Partition verhindern, dass das System aufgrund von Out-of-Memory-Fehlern abstürzt.

Wichtiger Hinweis: Stellen Sie vor dem Erstellen einer neuen Partition sicher, dass alle vorhandenen Dateisysteme auf /dev/sdb ausgehängt sind. Wenn das Gerät derzeit eingehängt ist (aus früheren Schritten), können Sie beim Versuch, die Partitionstabelle zu ändern, Fehler wie "Device or resource busy" erhalten.

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

## Überprüfen Sie zuerst, ob das Gerät eingehängt ist, und hängen Sie es bei Bedarf aus
lsblk /dev/sdb
sudo umount /data /mnt/data 2> /dev/null || true

## Erstellen Sie nun die Partition
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 Standard-Startsektor. Für die Größe erstellen wir eine 256MB-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 Sie nach dem Hex-Code gefragt werden, geben Sie 82 ein, was "Linux swap / Solaris" entspricht.
  5. Änderungen anzeigen und überprüfen: 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 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.

Nachdem die Partition erstellt wurde, 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 belegt ist. Wenn Sie eine Fehlermeldung "Device or resource busy" erhalten, bedeutet dies, dass das Gerät möglicherweise eingehängt ist. Lassen Sie uns zuerst alle vorhandenen Mounts überprüfen und aushängen:

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

## Wenn das Gerät eingehängt ist, hängen Sie es aus
sudo umount /data /mnt/data 2> /dev/null || true

Nachdem die Partition 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 zuerst die aktuelle Swap-Nutzung mit dem Befehl free -h.

free -h

Die Ausgabe zeigt wahrscheinlich 0B für Swap an.

              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 sehen, dass der gesamte Swap-Speicher zugenommen hat. Um eine Swap-Partition zu deaktivieren, verwenden Sie den Befehl swapoff.

sudo swapoff /dev/sdb2

Überprüfen Sie durch erneutes Ausführen von free -h, ob sie deaktiviert wurde. Der Swap-Speicher wird wieder auf Null zurückgesetzt. Dies zeigt, wie der Swap-Speicher auf einem laufenden System dynamisch verwaltet wird.

Fehlerbehebungshinweis: Wenn Sie in diesem Schritt Fehler wie "Device or resource busy" erhalten, 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 Mount Points mit sudo umount /data /mnt/data ausgehängt sind, bevor Sie mit den Partitionsvorgängen fortfahren.

Zusammenfassung

In diesem Lab haben Sie die wesentlichen Fähigkeiten für die Verwaltung von Partitionen und Dateisystemen auf einem Linux-System erlernt. Sie haben mit der Inspektion verfügbarer Blockgeräte mit lsblk begonnen und dann das fdisk-Dienstprogramm verwendet, um eine neue primäre Partition auf einer sekundären Festplatte zu erstellen. Nach der Partitionserstellung haben Sie sie mit dem ext4-Dateisystem mit mkfs.ext4 formatiert. Sie haben auch das Einhängen des neuen Dateisystems in ein Verzeichnis geübt, dessen Status überprüft und es wieder ausgehängt. Schließlich haben Sie das persistente Einhängen konfiguriert, indem Sie die Datei /etc/fstab mit der UUID der Partition bearbeitet haben, um sicherzustellen, dass sie beim Systemstart automatisch eingehängt wird.

Darüber hinaus behandelte das Lab den Prozess der Erstellung und Verwaltung eines dedizierten Swap-Speichers. Dies beinhaltete die erneute Verwendung von fdisk zur Erstellung einer Partition und die Änderung ihres Typs in "Linux swap". Sie haben diese Partition dann mit dem Befehl mkswap als Swap-Bereich vorbereitet und sie mit swapon aktiviert. Um den Swap-Speicher über Neustarts hinweg persistent zu machen, haben Sie auch einen entsprechenden Eintrag zur Datei /etc/fstab hinzugefügt.