Linux-Partitionen und Dateisysteme verwalten

CompTIABeginner
Jetzt üben

Einführung

In diesem Lab erlernen Sie die grundlegenden Fähigkeiten, die zur Verwaltung von Festplattenpartitionen und Dateisystemen in einer Linux-Umgebung erforderlich sind. Sie arbeiten mit Befehlszeilen-Dienstprogrammen wie fdisk, um verfügbare Festplatten zu untersuchen, neue Partitionen zu erstellen und diese mit einem Standard-Dateisystem zu formatieren. Um eine sichere Lernumgebung zu gewährleisten, werden alle Vorgänge auf einer dedizierten sekundären virtuellen Festplatte, /dev/sdb, durchgeführt, während die primäre Betriebssystemfestplatte unangetastet bleibt.

Hinweis: In dieser Lab-Umgebung ist /dev/sdb als Loop-Device implementiert (eine Datei, die wie eine Festplatte fungiert). Wenn Sie Partitionen erstellen, erhalten diese Namen wie loop13p1 oder loop14p1. Die genaue Loop-Nummer hängt davon ab, welches Loop-Device in Ihrer Sitzung frei ist, und kann daher von den hier gezeigten Beispielen abweichen. Sie werden symbolische Links erstellen, um auf diese Partitionen als /dev/sdb1, /dev/sdb2 usw. zuzugreifen, genau wie bei echter Hardware.

Im Verlauf der Übungen erstellen Sie eine Standard-Linux-Partition, formatieren diese mit dem ext4-Dateisystem und lernen, wie Sie diese für die sofortige Verwendung einhängen. Anschließend konfigurieren Sie das System so, dass dieses Dateisystem beim Booten automatisch eingehängt wird, indem Sie die Datei /etc/fstab bearbeiten. Abschließend erweitern Sie Ihre Kenntnisse durch das Erstellen und Verwalten einer dedizierten Linux-Swap-Partition, einer kritischen Komponente für die Systemleistung.

Festplatten untersuchen und eine neue Linux-Partition mit fdisk erstellen

In diesem Schritt lernen Sie, wie Sie die verfügbaren Festplatten und deren Partitionstabellen untersuchen. Anschließend verwenden Sie das Dienstprogramm fdisk, ein leistungsstarkes Befehlszeilen-Tool, 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 Hauptfestplatte des Betriebssystems (/dev/sda) unangetastet bleibt.

Verschaffen wir uns zunächst 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 wie loop13 oder loop14, das unsere virtuelle Festplatte für dieses Lab darstellt. Die genaue Nummer des Loop-Devices kann in Ihrer Umgebung abweichen.

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. Lassen Sie uns nun fdisk verwenden, 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 das Programm anschließend. Da fdisk Root-Rechte benötigt, um Informationen auf Festplattenebene zu untersuchen, müssen Sie sudo verwenden.

sudo fdisk -l /dev/sdb

Die Ausgabe enthält Details zur Festplatte, einschließlich Größe, Sektoren und Kennung. Da noch keine Partitionen vorhanden sind, ist die Geräteliste am unteren Rand 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-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 die Eingabetaste.
  2. Partitionstyp wählen: Sie werden aufgefordert, einen Partitionstyp (primär oder erweitert) auszuwählen. Der Standardwert ist primär (p), was wir benötigen. Drücken Sie die Eingabetaste, um den Standardwert zu akzeptieren.
  3. Partitionsnummer wählen: Der Standardwert ist 1, da dies die erste Partition ist. Drücken Sie die Eingabetaste, um ihn 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 die Eingabetaste, um den Standardwert 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 große Partition. Geben Sie +500M ein und drücken Sie die Eingabetaste.
  6. Partitionstabelle im Speicher ausgeben: Vor dem Speichern ist es gute Praxis, Ihre Änderungen zu überprüfen. Geben Sie p ein und drücken Sie die Eingabetaste, 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 noch im Arbeitsspeicher. Um sie in die Partitionstabelle der Festplatte zu schreiben, geben Sie w ein und drücken Sie die Eingabetaste. 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-Devices normal. Der Befehl partprobe fordert den Betriebssystem-Kernel auf, die Partitionstabelle neu einzulesen.

sudo partprobe

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

lsblk /dev/sdb

Die Ausgabe sollte das Loop-Device und seine neue Partition anzeigen. Aufgrund der Loop-Device-Einrichtung erscheint die Partition als etwas wie loop13p1 oder loop14p1, abhängig von Ihrer Sitzung:

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, loop14p1 oder ein ähnlicher Loop-basierter Name anstelle von /dev/sdb1 erscheint, müssen wir einen symbolischen Link für die Partition erstellen. Identifizieren wir zunächst das tatsächliche Partitionsgerät. Das Muster p1$ stellt sicher, dass wir nur den Partitionsnamen abgleichen, nicht das übergeordnete Loop-Device:

PARTITION_DEVICE=$(lsblk -lno NAME /dev/sdb | grep -E "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 zeigen, dass die Partition als /dev/sdb1 zugänglich ist. Der zugrunde liegende Gerätename kann immer noch loop13p1, loop14p1 oder ein anderer Loop-basierter Partitionsname sein:

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

Sie haben erfolgreich eine neue 500 MB große 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 neue Partition, die Sie erstellt haben, /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 auf sie 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, was für "make filesystem" steht. Es ist ein Frontend für verschiedene dateisystemspezifische Erstellungsprogramme wie mkfs.ext4, mkfs.xfs usw. Wir verwenden direkt mkfs.ext4. Dieser Vorgang ist destruktiv und löscht alle vorhandenen Daten auf der Partition, weshalb er sudo-Rechte 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 Vorgang an, einschließlich der UUID des Dateisystems, 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 deutlich zeigen, dass /dev/sdb1 jetzt 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 eine Menge Ausgabe. 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 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 als "Mounten" (Einhängen) 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" (Einhängepunkt) 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 kontrollieren. Wir verwenden mehrere Befehle, um den Mount zu verifizieren:

## Prüfen, ob das Dateisystem am Mount-Point eingehängt ist
mountpoint /mnt/data

Wenn das Mounten erfolgreich war, sollten Sie Folgendes sehen:

/mnt/data is a mountpoint

Lassen Sie uns nun die Festplattennutzung mit df überprüfen. Aufgrund der Loop-Device-Einrichtung erscheint die Partition möglicherweise mit ihrem echten Gerätenamen anstelle des Namens des symbolischen Links. Ihre Ausgabe zeigt möglicherweise loop13p1, loop14p1 oder einen anderen Loop-basierten Partitionsnamen:

df -h /mnt/data

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

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 den eingehängten Loop-basierten Partitionsnamen für Ihre Sitzung anzeigen:

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

Lassen Sie uns nun testen, ob wir Daten auf unser neues Dateisystem schreiben können. Überprüfen wir zunächst die aktuellen Eigentumsverhältnisse und Berechtigungen des Mount-Points:

ls -ld /mnt/data

Sie sollten etwas wie das hier 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 einem Fehler "Permission denied" (Zugriff verweigert) fehlschlagen. Das liegt daran, dass das Stammverzeichnis des eingehängten Dateisystems dem Benutzer root gehört. Um dies zu beheben, ändern Sie den Eigentümer 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 bei Dateisystembeschädigungen 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, zum Beispiel wenn Ihr aktuelles Arbeitsverzeichnis innerhalb des Mount-Points liegt. Lassen Sie uns das in der Praxis sehen.

Wechseln Sie zuerst in das Verzeichnis /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 belegt ist.

umount: /mnt/data: target is busy.

Um es erfolgreich auszuhängen, müssen Sie zuerst aus dem Verzeichnis navigieren. Gehen wir zurück in Ihr 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 Folgendes sehen:

/mnt/data is not a mountpoint

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

sudo rmdir /mnt/data

Fehlerbehebungshinweis: Wenn Sie Probleme damit haben, dass der Mount-Befehl nicht funktioniert, können Sie versuchen, das tatsächliche Loop-Device anstelle des symbolischen Links zu mounten:

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

## Mounten unter Verwendung des tatsächlichen Gerätenamens
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 bei jedem Systemstart automatisch einhängen lassen. Der Befehl mount, den Sie im vorherigen Schritt verwendet haben, ist temporär; das Einhängen geht nach einem Neustart verloren. Um ein dauerhaftes Einhängen zu erstellen, müssen Sie einen Eintrag in einer speziellen Konfigurationsdatei namens /etc/fstab (Dateisystemtabelle) hinzufügen.

Das System liest /etc/fstab während des Bootvorgangs, um zu bestimmen, welche Dateisysteme eingehängt werden sollen. Es ist eine kritische Datei, daher ist es immer eine gute Idee, ein Backup zu erstellen, bevor Sie sie bearbeiten.

Erstellen wir zunächst ein Backup 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 Stammdateisystem 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 manchmal zwischen Neustarts ändern, insbesondere wenn Sie Hardware hinzufügen oder entfernen. Eine viel 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. 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 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ätebezeichner> <Mount-Point> <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 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: Ein Standardsatz von Mount-Optionen, der für die meisten Fälle geeignet ist.
  • 0: Das dump-Feld. Dies ist ein veraltetes Backup-Dienstprogramm-Flag und sollte 0 sein.
  • 2: Das pass-Feld. Dies teilt dem fsck-Dienstprogramm die Reihenfolge für die Überprüfung der Dateisysteme beim Booten mit. 1 ist für das Stammdateisystem, 2 ist 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 die Eingabetaste 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 lautlos 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 unter /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 dies kein Ersatz für ausreichend RAM ist, 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 vorherigen Schritten), können beim Versuch, die Partitionstabelle zu ändern, Fehler wie "Device or resource busy" auftreten.

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

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

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

Befolgen Sie innerhalb der interaktiven fdisk-Eingabeaufforderung diese Befehle:

  1. Neue Partition erstellen: Geben Sie n ein und drücken Sie die Eingabetaste.
  2. Partitionstyp und -nummer wählen: Akzeptieren Sie die Standardwerte für eine primäre Partition (p) und die Partitionsnummer 2, indem Sie zweimal die Eingabetaste drücken.
  3. Sektoren angeben: Akzeptieren Sie den Standard für den ersten Sektor. Für die Größe erstellen wir eine 256 MB große Partition. Geben Sie +256M ein und drücken Sie die Eingabetaste.
  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. Ausgeben und überprüfen: Geben Sie p ein, um die Änderungen zu überprüfen. Sie sollten /dev/sdb2 sehen, wobei der Typ als "Linux swap / Solaris" aufgeführt ist.
  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.

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 Sie nun die zweite Partition und erstellen Sie den symbolischen Link:

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 einen Fehler "Device or resource busy" erhalten, bedeutet dies, dass das Gerät möglicherweise eingehängt ist. Lassen Sie uns zuerst alle vorhandenen Mounts prüfen und aushängen:

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

## Wenn das Gerät eingehängt ist, aushängen
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.

              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

Überprüfen Sie, ob er deaktiviert wurde, indem Sie free -h erneut ausführen. Der Swap-Speicher wird wieder auf Null zurückkehren. Dies zeigt, wie man Swap-Speicher auf einem laufenden System dynamisch verwaltet.

Fehlerbehebungshinweis: Wenn Sie in diesem Schritt Fehler wie "Device or resource busy" erhalten, bedeutet dies normalerweise:

  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 zur Verwaltung von Festplattenpartitionen und Dateisystemen auf einem Linux-System erlernt. Sie begannen mit der Untersuchung verfügbarer Blockgeräte mithilfe von lsblk und nutzten dann das Dienstprogramm 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 mithilfe von mkfs.ext4 formatiert. Sie haben auch das Einhängen des neuen Dateisystems in ein Verzeichnis, das Überprüfen seines Status und das Aushängen geübt. Schließlich haben Sie das dauerhafte 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 des Erstellens und Verwaltens eines dedizierten Swap-Speichers. Dies beinhaltete die erneute Verwendung von fdisk, um eine Partition zu erstellen und ihren Typ in "Linux swap" zu ändern. 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 dauerhaft zu machen, haben Sie auch einen entsprechenden Eintrag in der Datei /etc/fstab hinzugefügt.