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:
- Neue Partition erstellen: Geben Sie
nein und drücken Sie die Eingabetaste. - 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. - Partitionsnummer wählen: Der Standardwert ist
1, da dies die erste Partition ist. Drücken Sie die Eingabetaste, um ihn zu akzeptieren. - 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.
- 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
+500Mein und drücken Sie die Eingabetaste. - Partitionstabelle im Speicher ausgeben: Vor dem Speichern ist es gute Praxis, Ihre Änderungen zu überprüfen. Geben Sie
pein und drücken Sie die Eingabetaste, um das neue Partitionslayout zu sehen. Sie sollten ein neues Gerät,/dev/sdb1, sehen. - Änderungen auf die Festplatte schreiben: Die vorgenommenen Änderungen befinden sich noch im Arbeitsspeicher. Um sie in die Partitionstabelle der Festplatte zu schreiben, geben Sie
wein und drücken Sie die Eingabetaste. Dies schreibt die Änderungen und beendetfdisk.
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: Dasdump-Feld. Dies ist ein veraltetes Backup-Dienstprogramm-Flag und sollte0sein.2: Daspass-Feld. Dies teilt demfsck-Dienstprogramm die Reihenfolge für die Überprüfung der Dateisysteme beim Booten mit.1ist für das Stammdateisystem,2ist für andere permanente Dateisysteme, und0deaktiviert 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:
- Neue Partition erstellen: Geben Sie
nein und drücken Sie die Eingabetaste. - Partitionstyp und -nummer wählen: Akzeptieren Sie die Standardwerte für eine primäre Partition (
p) und die Partitionsnummer2, indem Sie zweimal die Eingabetaste drücken. - 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
+256Mein und drücken Sie die Eingabetaste. - Partitionstyp ändern: Dies ist der entscheidende Schritt. Geben Sie
tein, um den Typ einer Partition zu ändern. Wenn Sie nach der Partitionsnummer gefragt werden, geben Sie2ein. Wenn Sie nach dem Hex-Code gefragt werden, geben Sie82ein, was "Linux swap / Solaris" entspricht. - Ausgeben und überprüfen: Geben Sie
pein, um die Änderungen zu überprüfen. Sie sollten/dev/sdb2sehen, wobei der Typ als "Linux swap / Solaris" aufgeführt ist. - Änderungen schreiben: Geben Sie
wein, 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:
- Das Gerät oder eine seiner Partitionen ist derzeit eingehängt.
- 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.



