104.1 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
104 Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard |
Lernziel: |
104.1 Partitionen und Dateisysteme anlegen |
Lektion: |
1 von 1 |
Einführung
Auf jedem Betriebssystem muss eine Festplatte vor deren Verwendung partitioniert werden. Eine Partition ist eine logische Untermenge der physischen Festplatte, und Informationen über Partitionen werden in einer Partitionstabelle gespeichert. Diese Tabelle enthält Informationen über den ersten und letzten Sektor der Partition und deren Typ sowie weitere Einzelheiten zu jeder Partition.
Gewöhnlich wird jede Partition von einem Betriebssystem als ein separater “Speicher” betrachtet, auch wenn sich alle Partitionen auf demselben physischen Medium befinden. Auf Windows-Systemen werden ihnen Buchstaben wie C:
(historisch die Hauptplatte), D:
und so weiter zugewiesen. Unter Linux ist jede Partition einem Verzeichnis unter /dev
zugeordnet, wie z.B. /dev/sda1
oder /dev/sda2
.
In dieser Lektion werden wir lernen, wie man Partitionen mit den drei gebräuchlichsten Hilfsprogrammen (fdisk
, gdisk
und parted
) erstellt, löscht, wiederherstellt und in der Größe verändert, wie man ein Dateisystem auf ihnen erstellt und wie man eine Auslagerungspartition oder Auslagerungsdatei erstellt und einrichtet, die als virtueller Speicher verwendet wird.
Note
|
Aus historischen Gründen werden wir in dieser Lektion Speichermedien als “Platten” bezeichnen, obwohl moderne Speichersysteme, wie SSDs und Flash-Speicher, überhaupt keine "Platten" enthalten. |
MBR und GPT verstehen
Es gibt im Wesentlichen zwei Möglichkeiten, Partitionsinformationen auf Festplatten zu speichern. Die Erste nennt sich MBR (Master Boot Record), und die Zweite lautet GPT (GUID Partition Table).
- MBR
-
Dies ist ein Überbleibsel aus den frühen Tagen von MS-DOS (genauer gesagt PC-DOS 2.0 von 1983) und war jahrzehntelang das Standardpartitionierungsschema auf PCs. Die Partitionstabelle wird auf dem ersten Sektor einer Platte gespeichert, der Boot-Sektor genannt wird, zusammen mit einem Bootloader, der auf Linux-Systemen normalerweise der GRUB-Bootloader ist. Der MBR hat jedoch eine Reihe von Einschränkungen, die seine Verwendung auf modernen Systemen behindern, wie die Unfähigkeit, Platten mit einer Größe von mehr als 2 TB anzusprechen, und die Begrenzung auf nur 4 primäre Partitionen pro Platte.
- GUID
-
Ein Partitionierungssystem, das viele der Einschränkungen des MBR beseitigt. Es gibt keine praktische Begrenzung der Festplattengröße, und die maximale Anzahl der Partitionen wird nur durch das Betriebssystem selbst begrenzt. Es ist häufiger auf moderneren Maschinen zu finden, die UEFI anstelle des alten PC-BIOS verwenden.
Bei Aufgaben der Systemadministration ist es sehr gut möglich, dass beide Schemata in Gebrauch sind. Daher ist es wichtig zu wissen, wie man die für jedes einzelne Schema relavanten Werkzeuge zum Erstellen, Löschen oder Ändern von Partitionen verwendet.
Verwaltung von MBR-Partitionen mit FDISK
Das Standardwerkzeug zur Verwaltung von MBR-Partitionen unter Linux ist fdisk
. Dies ist ein interaktives, menügesteuertes Dienstprogramm. Um es zu benutzen, ruft man den Befehl fdisk
auf, gefolgt von dem Gerätenamen, der der Platte entspricht, die es zu bearbeiten gilt. Zum Beispiel der Befehl
# fdisk /dev/sda
würde die Partitionstabelle des ersten an SATA angeschlossenen Gerätes (sda
) auf dem System bearbeiten. Zu beachten gilt es hier das Gerät anzugeben, welches der physikalischen Platte entspricht, nicht eine der Partitionen (wie /dev/sda1
).
Note
|
Alle plattenbezogenen Operationen in dieser Lektion müssen als Benutzer |
Wenn Sie fdisk
aufrufen, zeigt fdisk
eine Begrüßung, dann eine Warnung und wartet auf Ihre Befehle.
# fdisk /dev/sda Welcome to fdisk (util-linux 2.33.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
Die Warnung ist wichtig. Sie können Partitionen nach Belieben erstellen, bearbeiten oder löschen, aber nichts wird auf die Festplatte geschrieben, es sei denn, Sie verwenden den Befehl write (w
). Sie können also “üben”, ohne Gefahr zu laufen, Daten zu verlieren, solange Sie sich von der w
-Taste fernhalten. Um fdisk
zu verlassen, ohne Änderungen vorzunehmen, benutzen Sie den Befehl q
.
Note
|
Allerdings sollte man niemals auf einer wichtigen Platte üben, da es immer Risiken gibt. Verwenden Sie stattdessen eine externe Reserveplatte oder ein USB-Flash-Stick. |
Darstellen der aktuellen Partitionstabelle
Der Befehl p
wird verwendet, um die aktuelle Partitionstabelle darzustellen. Die Ausgabe sieht in etwa so aus:
Command (m for help): p Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors Disk model: CT120BX500SSD1 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: 0x97f8fef5 Device Boot Start End Sectors Size Id Type /dev/sda1 4096 226048942 226044847 107.8G 83 Linux /dev/sda2 226048944 234437550 8388607 4G 82 Linux swap / Solaris
Folgend die Bedeutung der einzelnen Spalten:
Device
-
Das der Partition zugewiesene Gerät.
Boot
-
Zeigt an, ob die Partition
bootfähig
ist oder nicht. Start
-
Der Sektor, in dem die Partition beginnt.
End
-
Der Sektor, in dem die Partition endet.
Sectors
-
Die Gesamtzahl der Sektoren in der Partition. Multipliziert mit der Sektorgröße, erhält man die Partitionsgröße in Bytes.
Size
-
Die Größe der Partition im “menschenlesbarem” Format. Im obigen Beispiel sind die Werte in Gigabyte angegeben.
Id
-
Der numerische Wert, der den Partitionstyp darstellt.
Type
-
Die Beschreibung für den Partitionstyp.
Primäre vs. Erweiterte Partitionen
Auf einer MBR-Festplatte können 2 Haupttypen von Partitionen verwendet werden, primäre und erweiterte. Wie wir bereits gesagt haben, können Sie nur 4 primäre Partitionen auf der Platte haben, und wenn die Platte “bootfähig” sein soll, muss die erste Partition vom Typ primär sein.
Eine Möglichkeit, diese Einschränkung zu umgehen, besteht darin, eine erweiterte Partition zu erstellen, die als Container für logische Partitionen dient. So könnten z.B. eine primäre Partition, eine erweiterte Partition welche den Rest des Festplattenplatzes belegt, und fünf logische Partitionen enthalten sein.
Bei einem Betriebssystem wie Linux werden primäre und erweiterte Partitionen gleich behandelt, so dass es keine “Vorteile” der Verwendung der einen gegenüber dem anderen Partitionstypen gibt.
Erstellen einer Partition
Um eine Partition zu erstellen, verwenden Sie den Befehl n
. Standardmäßig werden die Partitionen zu Beginn des nicht zugewiesenen Speicherplatzes auf der Festplatte erstellt. Anschließend werden der Partitionstyp (primär oder erweitert), der erste Sektor und der letzten Sektor abgefragt.
Für den ersten Sektor können Sie normalerweise den von fdisk
vorgeschlagenen Standardwert akzeptieren, es sei denn, Sie benötigen eine Partition, welche bei einem bestimmten Sektor beginnt. Anstatt den letzten Sektor anzugeben, können Sie auch eine Größe angeben, gefolgt von den Buchstaben K
, M
, G
, T
oder P
(Kilo, Mega, Giga, Tera oder Peta). Wenn Sie also eine 1 GB große Partition erstellen wollen, können Sie +1G
als den letzten Sektor
angeben. fdisk
wird die Partitionsgröße entsprechend anpassen. Folgendes Beispiel zeigt die Erstellung einer primären Partition auf:
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-3903577, default 2048): 2048 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3903577, default 3903577): +1G
Überprüfung von nicht zugewiesenem Speicher
Wenn Sie nicht wissen, wie viel freier Speicherplatz auf der Platte vorhanden ist, können Sie den Befehl F
verwenden, um den nicht zugewiesenen Speicherplatz anzuzeigen, etwa so:
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 2099200 3903577 1804378 881M
Löschen von Partitionen
Um eine Partition zu löschen, verwenden Sie den Befehl d
. fdisk
fragt nach der Nummer der Partition, welche gelöscht werden soll, es sei denn es gibt nur eine Partition auf der Platte. In diesem Fall wird diese Partition ausgewählt und sofort gelöscht.
Beachten Sie, dass beim Löschen einer erweiterten Partition auch alle logischen Partitionen innerhalb dieser Partition gelöscht werden.
Lücken beachten!
Denken Sie daran, dass beim Erstellen einer neuen Partition mit fdisk
die maximale Größe auf die maximale Menge an zusammenhängendem nicht zugewiesenem Speicherplatz auf der Platte begrenzt ist. Nehmen wir zum Beispiel an, dass die folgende Partitionstabelle vorliegt:
Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 1050623 1048576 512M 83 Linux /dev/sdd2 1050624 2099199 1048576 512M 83 Linux /dev/sdd3 2099200 3147775 1048576 512M 83 Linux
Dann löschen Sie Partition 2 und prüfen die Platte auf freien Speicherplatz:
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 1050624 2099199 1048576 512M 3147776 3903577 755802 369M
Wenn man die Größe des nicht zugewiesenen Speicherplatzes zusammenzählt, stehen theoretisch 881 MB zur Verfügung. Aber beachten Sie, was passiert, wenn wir versuchen, eine 700 MB große Partition zu erstellen:
Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (2,4, default 2): 2 First sector (1050624-3903577, default 1050624): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-2099199, default 2099199): +700M Value out of range.
Dies geschieht, weil der größte zusammenhängende, nicht zugewiesene Speicherplatz auf der Festplatte der 512 MB-Block ist, der zu Partition 2 gehörte. Die neue Partition kann nicht über Partition 3 “hinausreichen”, um danach einen Teil des nicht zugewiesenen Speicherplatzes zu nutzen.
Ändern des Partitionstyps
Gelegentlich kann es erforderlich sein, den Partitionstyp zu ändern, insbesondere wenn es sich um Festplatten handelt, die auf anderen Betriebssystemen und Plattformen verwendet werden. Dies geschieht mit dem Befehl t
, gefolgt von der Nummer der Partition, die Sie ändern möchten.
Der Partitionstyp muss durch den entsprechenden Hexadezimalcode angegeben werden. Um eine Liste aller gültigen Codes einzusehen, ist der Befehl l
erforderlich.
Verwechseln Sie den Partitionstyp nicht mit dem Dateisystem, das auf der Partition verwendet wird. Obwohl es anfangs eine Beziehung zwischen diesen gab, können Sie heute nicht mehr davon ausgehen, dass dem immer noch so ist. Eine Linux-Partition kann zum Beispiel jedes Linux-native Dateisystem enthalten, wie ext4 oder ReiserFS.
Tip
|
Linux-Partitionen sind vom Typ |
Verwaltung von GUID-Partitionen mit GDISK
Das Dienstprogramm gdisk
ist das Äquivalent zu fdisk
, wenn es sich um GPT-partitionierte Platten handelt. Tatsächlich ist die Schnittstelle nach fdisk
modelliert, mit einer interaktiven Eingabeaufforderung und den gleichen (oder sehr ähnlichen) Befehlen.
Darstellen der aktuellen Partitionstabelle
Der Befehl p
wird verwendet, um die aktuelle Partitionstabelle darzustellen. Die Ausgabe sieht in etwa so aus:
Command (? for help): p Disk /dev/sdb: 3903578 sectors, 1.9 GiB Model: DataTraveler 2.0 Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): AB41B5AA-A217-4D1E-8200-E062C54285BE Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 3903544 Partitions will be aligned on 2048-sector boundaries Total free space is 1282071 sectors (626.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2623488 3147775 256.0 MiB 8300 Linux filesystem
Direkt fallen uns ein paar Unterschiede auf:
-
Jeder Datenträger hat einen eindeutigen Datenträgeridentifikator (GUID). Dies ist eine 128-Bit-Hexadezimalzahl, die bei der Erstellung der Partitionstabelle zufällig zugewiesen wird. Da es 3,4 × 1038 mögliche Werte für diese Zahl gibt, ist die Wahrscheinlichkeit, dass 2 zufällige Platten die gleiche GUID haben, ziemlich gering. Die GUID kann verwendet werden, um zu identifizieren, welche Dateisysteme beim Booten gemountet werden sollen (und wo), wodurch die Notwendigkeit entfällt, den Gerätepfad dafür zu verwenden (wie
/dev/sdb
). -
Beachten Sie den Satz
Partition table holds up to 128 entries
? Das ist richtig, Sie können bis zu 128 Partitionen auf einer GPT-Platte haben. Aus diesem Grund gibt es keinen Bedarf für primäre und erweiterte Partitionen. -
Der freie Speicherplatz wird in der letzten Zeile aufgeführt, so dass kein Äquivalent des Befehls
F
von fdisk benötigt wird.
Erstellen einer Partition
Der Befehl zum Erstellen einer Partition lautet n
, genau wie bei fdisk
. Der Hauptunterschied besteht darin, dass Sie bei der Erstellung neben der Partitionsnummer und dem ersten und letzten Sektor (oder Größe) auch den Partitionstyp angeben können. GPT-Partitionen unterstützen viel mehr Typen als MBR. Sie können eine Liste aller unterstützten Typen anzeigen, indem Sie den Befehl l
verwenden.
Löschen einer Partition
Um eine Partition zu löschen, geben Sie d
und die Nummer der Partition ein. Im Gegensatz zu fdisk
wird die erste Partition nicht automatisch ausgewählt, wenn es sich um die einzige Partition auf der Festplatte handelt.
Auf GPT-Platten können die Partitionen leicht neu geordnet oder “sortiert” werden, um Lücken in der Nummerierungsreihenfolge zu vermeiden. Verwenden Sie dazu einfach den Befehl s
. Stellen Sie sich zum Beispiel eine Platte mit der folgenden Partitionstabelle vor:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2099200 2361343 128.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Wenn Sie die zweite Partition löschen, würde die Tabelle wie folgt aussehen:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Wenn das Kommando s
verwenden wird, würde dies zu folgender Ausgabe führen:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2361344 2623487 128.0 MiB 8300 Linux filesystem
Beachten Sie, dass die dritte Partition zur Zweiten wurde.
Lücke? Welche Lücke?
Im Gegensatz zu MBR-Platten ist die Größe beim Erstellen einer Partition auf GPT-Platten nicht durch die maximale Menge an zusammenhängendem nicht zugewiesenem Speicherplatz begrenzt. Sie können jedes letzte Bit eines freien Sektors verwenden, unabhängig davon, wo er sich auf der Platte befindet.
Wiederherstellungsoptionen
GPT-Platten speichern Sicherungskopien des GPT-Headers und der Partitionstabelle, so dass es einfach ist, Platten wiederherzustellen, falls diese Daten beschädigt worden sind. gdisk
bietet Funktionen, die bei diesen Wiederherstellungsaufgaben helfen, auf die mit dem Befehl r
zugegriffen wird.
Sie können einen beschädigten GPT-Hauptheader oder eine beschädigte Partitionstabelle mit b
bzw. c
wiederherstellen oder den Hauptheader und die Tabelle verwenden, um ein Backup mit d
und e
zu erstellen. Sie können auch mit f
einen MBR in eine GPT konvertieren und mit g
unter anderem das Gegenteil tun. Geben Sie ?
in das Wiederherstellungsmenü ein, um eine Liste aller verfügbaren Wiederherstellungsbefehle und Beschreibungen, inklusive einer Erläuterung deren Wirkung, zu erhalten.
Dateisysteme erstellen
Die Partitionierung der Festplatte ist nur der erste Schritt, um eine Festplatte verwenden zu können. Danach muss die Partition mit einem Dateisystem formatieren werden, bevor das Speichern von Daten möglich ist.
Ein Dateisystem steuert, wie die Daten auf der Platte gespeichert werden und wie auf diese zugegriffen wird. Linux unterstützt viele Dateisysteme, einige davon nativ, wie die ext-Familie (Extended Filesystem), während andere von anderen Betriebssystemen wie FAT von MS-DOS, NTFS von Windows NT, HFS und HFS+ von Mac OS usw. stammen.
Das Standardwerkzeug zur Erstellung eines Dateisystems unter Linux lautet mkfs
, welches in vielen “Varianten” existiert, entsprechend dem zu bearbeitendem Dateisystem.
Erstellen eines ext2/ext3/ext4-Dateisystems
Das Extended Filesystem (ext) war das erste Dateisystem für Linux und wurde im Laufe der Jahre durch neue Versionen namens ext2, ext3 und ext4 ersetzt, welches derzeit das Standarddateisystem für viele Linux-Distributionen darstellt.
Die Dienstprogramme mkfs.ext2
, mkfs.ext3
und mkfs.ext4
werden verwendet, um ext2-, ext3- und ext4-Dateisysteme zu erstellen. Tatsächlich existieren all diese “Dienstprogramme” nur als symbolische Links zu einem anderen Dienstprogramm namens mke2fs
. mke2fs
ändert seine Standardeinstellungen entsprechend dem Namen, unter dem es aufgerufen wird. Als solche haben alle dasselbe Verhalten und dieselben Befehlszeilenparameter.
Die einfachste Form der Nutzung ist:
# mkfs.ext2 TARGET
Wobei TARGET
der Name der Partition ist, auf der das Dateisystem erstellt werden soll. Um zum Beispiel ein ext3-Dateisystem auf /dev/sdb1
zu erstellen, lautet der Befehl:
# mkfs.ext3 /dev/sdb1
Anstatt den Befehl zu verwenden, der dem Dateisystem entspricht, das erstellt werden soll, kann der Parameter -t
an mke2fs
, gefolgt vom Namen des Dateisystems, übergeben werden. Zum Beispiel sind die folgenden Befehle äquivalent und erzeugen ein ext4-Dateisystem auf /dev/sdb1
.
# mkfs.ext4 /dev/sdb1 # mke2fs -t ext4 /dev/sdb1
Kommandozeilenparameter
mke2fs
unterstützt eine breite Palette von Kommandozeilenparametern und -optionen. Hier sind einige der Wichtigsten. Alle haben die gleiche Bedeutung für mkfs.ext2
, mkfs.ext3
und mkfs.ext4
:
-b SIZE
-
Setzt die Größe der Datenblöcke im Gerät auf
SIZE
, die 1024, 2048 oder 4096 Bytes pro Block betragen kann. -c
-
Überprüft das Zielgerät auf fehlerhafte Blöcke, bevor das Dateisystem erstellt wird. Sie können eine gründliche, aber deutlich langsamere Prüfung durchführen, indem der Parameter zweimal übergeben wird, wie in
mkfs.ext4 -c -c TARGET
. -d DIRECTORY
-
Kopiert den Inhalt des angegebenen Verzeichnisses in die Wurzel des neuen Dateisystems. Nützlich, wenn die Platte mit einem vordefinierten Satz von Dateien "`vorbefüllen’' werden soll.
-F
-
Diese Option zwingt mke2fs, ein Dateisystem zu erstellen, selbst wenn die anderen Optionen, die ihm oder dem Ziel übergeben werden, gefährlich sind oder überhaupt keinen Sinn ergeben. Falls zweimal angegeben (wie in
-F -F
), kann mke2fs somit sogar benutzt werden, um ein Dateisystem auf einem Gerät zu erstellen, das gemountet oder in Benutzung ist, was eine sehr, sehr schlechte Idee ist. -L VOLUME_LABEL
-
Setzt das Volumelabel auf
VOLUME_LABEL
. Dieses Label darf maximal 16 Zeichen lang sein. -n
-
Dies ist eine wirklich nützliche Option, welche die Erstellung des Dateisystems simuliert und anzeigt, was getan würde, wenn es ohne die Option
n
ausgeführt würde. Prinzipiell ein “Versuchsmodus”. Es ist gut, Dinge auszuprobieren, bevor man Änderungen tatsächlich auf die Platte schreibt. -q
-
Leiser Modus.
mke2fs
läuft normal, erzeugt aber keine Ausgabe auf dem Terminal. Nützlich, wennmke2fs
von einem Skript aus ausgeführt wird. -U ID
-
Dadurch wird die UUID (Universally Unique Identifier) einer Partition auf den als ID angegebenen Wert gesetzt. UUIDs sind 128-Bit-Zahlen in hexadezimaler Notation, die zur eindeutigen Identifizierung einer Partition gegenüber dem Betriebssystem dienen. Diese Nummer wird als 32-stellige Zeichenfolge im Format 8-4-4-4-4-12 angegeben, d.h. 8 Ziffern, Bindestrich, 4 Ziffern, Bindestrich, 4 Ziffern, Bindestrich, 4 Ziffern, Bindestrich, 12 Ziffern, wie
D249E380-7719-45A1-813C-35186883987E
. Anstelle einer ID kann auch ein Parameter wieclear
zum Löschen der Dateisystem-UUID,random
, um eine zufällig generierte UUID zu verwenden, odertime
, um eine zeitbasierte UUID zu erzeugen, angeben werden. -V
-
Verbose-Modus, gibt während des Ausführen des Befehlt wesentlich mehr Informationen als gewöhnlich aus. Nützlich für Debugging-Zwecke.
Erstellen eines XFS-Dateisystems
XFS ist ein Hochleistungsdateisystem, das ursprünglich 1993 von Silicon Graphics für das Betriebssystem IRIX entwickelt wurde. Aufgrund seiner Leistungs- und Zuverlässigkeitsmerkmale wird es häufig für Server und andere Umgebungen verwendet, die eine hohe (oder garantierte) Dateisystembandbreite benötigen.
Werkzeuge zur Verwaltung von XFS-Dateisystemen sind Teil des Pakets xfsprogs
. Dieses Paket muss möglicherweise manuell installiert werden, da es in einigen Linux-Distributionen nicht standardmäßig enthalten ist. Andere, wie Red Hat Enterprise Linux 7, verwenden XFS als Standarddateisystem.
XFS-Dateisysteme sind in mindestens 2 Teile unterteilt, einer Log-Sektion, in dem ein Protokoll aller Dateisystemoperationen (allgemein als Journal bezeichnet) geführt wird, und der Daten-Sektion. Die Log-Sektion kann sich innerhalb der Daten-Sektion (das Standardverhalten) oder sogar auf einer separaten Platte befinden, um eine bessere Leistung und Zuverlässigkeit zu gewährleisten.
Der grundlegendste Befehl zur Erstellung eines XFS-Dateisystems ist mkfs.xfs TARGET
, wobei TARGET
die Partition ist, in der das Dateisystem erstellt werden soll. Zum Beispiel: mkfs.xfs /dev/sda1
.
Wie in mke2fs
unterstützt mkfs.xfs
eine Reihe von Kommandozeilenoptionen. Hier sind einige der Gebräuchlichsten.
-b size=VALUE
-
Setzt die Blockgröße des Dateisystem, auf
VALUE
in Bytes. Der Standardwert ist 4096 Bytes (4 KiB), das Minimum ist 512, und das Maximum ist 65536 (64 KiB). -m crc=VALUE
-
Parameter, die mit
-m
beginnen, sind Metadatenoptionen. Diese Option aktiviert (wennVALUE
gleich1
ist) oder deaktiviert (wennVALUE
gleich0
ist) die Verwendung von CRC32C-Prüfungen zur Ermittlung der Integrität aller Metadaten auf der Platte. Dies ermöglicht eine bessere Fehlererkennung und -behebung nach Abstürzen aufgrund von Hardwareproblemen, so dass es standardmäßig aktiviert ist. Die Auswirkung dieser Prüfung auf die Leistung sollte minimal sein, so dass es normalerweise keinen Grund gibt, diese zu deaktivieren. -m uuid=VALUE
-
Setzt die UUID der Partition auf die als
VALUE
angegebene UUID. Denken Sie daran, dass UUIDs Zahlen mit 32 Zeichen (128 Bit) in hexadezimaler Schreibweise sind, die in Gruppen von 8, 4, 4, 4 und 12 durch Striche getrennten Ziffern angegeben werden, wie z.B.1E83E3A3-3AE9-4AAC-BF7E-29DFFECD36C0
. -f
-
Erzwingt die Erstellung eines Dateisystems auf dem Zielgerät, selbst wenn auf diesem ein Dateisystem erkannt wird.
-l logdev=DEVICE
-
Dadurch wird die Log-Sektion des Dateisystems auf das angegebene Gerät gelegt, anstatt innerhalb der Daten-Sektion.
-l size=VALUE
-
Dadurch wird die Größe der Log-Sektion auf die in
VALUE
angegebene Größe gesetzt. Die Größe kann in Bytes angegeben werden, und es können Suffixe wiem
oderg
verwendet werden.-l size=10m
begrenzt zum Beispiel die Log-Sektion auf 10 Megabyte. -q
-
Leiser Modus. In diesem Modus gibt
mkfs.xfs
die Parameter des zu erstellenden Dateisystems nicht aus. -L LABEL
-
Setzt das Dateisystemlabel, das maximal 12 Zeichen lang sein darf.
-N
-
Ähnlich wie der Parameter
-n
vonmke2fs
, wirdmkfs.xfs
alle Parameter für die Erstellung des Dateisystems ausgeben, ohne tatsächlich ein Dateisystem zu erstellen.
Erstellen eines FAT- oder VFAT-Dateisystems
Das FAT-Dateisystem hat seinen Ursprung in MS-DOS und wurde im Laufe der Jahre mehrfach überarbeitet, was schlussendlich im FAT32-Format gipfelte, das 1996 mit Windows 95 OSR2 veröffentlicht wurde.
VFAT ist eine Erweiterung des FAT16-Formats mit Unterstützung für lange (bis zu 255 Zeichen) Dateinamen. Beide Dateisysteme werden von demselben Dienstprogramm, mkfs.fat
, gehandhabt. mkfs.vfat
ist ein Alias für mkfs.fat
.
Das FAT-Dateisystem hat entscheidende Nachteile, die seine Verwendung auf großen Platten einschränken. So unterstützt FAT16 beispielsweise Volumes von höchstens 4 GB und eine maximale Dateigröße von 2 GB. FAT32 erhöht die Volumengröße auf bis zu 2 PB und die maximale Dateigröße auf 4 GB. Aus diesem Grund werden FAT-Dateisysteme heute häufiger auf kleinen Flash-Speichern oder Speicherkarten (bis zu 2 GB Größe) oder auf älteren Geräten und Betriebssystemen verwendet, die fortgeschrittenere Dateisysteme nicht unterstützen.
Der grundlegendste Befehl für die Erstellung eines FAT-Dateisystems ist mkfs.fat TARGET
, wobei TARGET
die Partition ist, in der das Dateisystem erstellt werden soll. Zum Beispiel: mkfs.fat /dev/sdc1
.
Wie andere Dienstprogramme unterstützt mkfs.fat
eine Reihe von Kommandozeilenoptionen. Nachfolgend sind die Wichtigsten aufgeführt. Eine vollständige Liste und Beschreibung jeder Option kann im Handbuch des Dienstprogramms mit dem Befehl man mkfs.fat
nachgelesen werden.
-c
-
Überprüft das Zielgerät auf fehlerhafte Blöcke, bevor das Dateisystem erstellt wird.
-C FILENAME BLOCK_COUNT
-
Erstellt die in
FILENAME
angegebene Datei und erzeugt dann ein FAT-Dateisystem darin, wodurch ein leeres “Disk-Image” erzeugt wird, das später mit einem Dienstprogramm wiedd
auf ein Gerät geschrieben oder als Loopbackgerät gemountet werden kann. Wenn diese Option verwendet wird, muss die Anzahl der Blöcke im Dateisystem (BLOCK_COUNT
) hinter dem Gerätenamen angegeben werden. -F SIZE
-
Wählt die Größe der FAT (File Allocation Table) aus, zwischen 12, 16 oder 32, d.h. zwischen FAT12, FAT16 oder FAT32. Wenn nicht anders angegeben, wählt
mkfs.fat
die entsprechende Option basierend auf der Dateisystemgröße. -n NAME
-
Legt das Volumelabel oder den Namen für das Dateisystem fest. Dieser kann bis zu 11 Zeichen lang sein. Standardmäßig wird kein Label gesetzt.
-v
-
Verbose-Modus. Gibt wesentlich mehr Informationen als gewöhnlich aus, was nützlich für die Fehlersuche ist.
Note
|
|
Erstellen eines exFAT-Dateisystems
exFAT ist ein 2006 von Microsoft geschaffenes Dateisystem, das eine der wichtigsten Einschränkungen von FAT32 beseitigt: die Datei- und Festplattengröße. Bei exFAT beträgt die maximale Dateigröße 16 Exabyte (4 GB bei FAT32), und die maximale Festplattengröße beträgt 128 Petabyte.
Da es von allen drei großen Betriebssystemen (Windows, Linux und Mac OS) gut unterstützt wird, ist es eine gute Wahl, wenn Interoperabilität erforderlich ist, wie bei Flash-Speichern mit großer Kapazität, Speicherkarten und externen Platten. Tatsächlich ist es das Standarddateisystem, wie es von der SD Association für SDXC-Speicherkarten mit mehr als 32 GB definiert wird.
Das Standardwerkzeug zum Erstellen von exFAT-Dateisystemen ist mkfs.exfat
, das ein Link zu mkexfatfs
ist. Der grundlegendste Befehl lautet mkfs.exfat TARGET
, wobei TARGET
die Partition ist, in der das Dateisystem erstellt werden soll. Zum Beispiel: mkfs.exfat /dev/sdb2
.
Im Gegensatz zu den anderen in dieser Lektion besprochenen Dienstprogrammen hat mkfs.exfat
nur sehr wenige Befehlszeilenoptionen. Diese lauten:
-i VOL_ID
-
Setzt die Volume ID auf den in
VOL_ID
angegebenen Wert. Dies ist eine hexadezimale 32-Bit Zahl. Wenn nicht definiert, wird eine ID auf der Basis der aktuellen Zeit gesetzt. -n NAME
-
Legt die Datenträgerbezeichnung oder den Namen fest. Dieser kann bis zu 15 Zeichen lang sein. Standardmäßig wird kein Label gesetzt.
-p SECTOR
-
Gibt den ersten Sektor der ersten Partition auf der Festplatte an. Dies ist ein optionaler Wert, und der Standardwert ist 0.
-s SECTORS
-
Definiert die Anzahl der physischen Sektoren pro Zuordnungscluster. Diese muss eine Zweierpotenz sein, wie 1, 2, 4, 8 usw.
Kennenlernen des Btrfs-Dateisystems
Btrfs (offiziell das B-Tree Filesystem, ausgesprochen als “Butter FS”, “Better FS” oder sogar “Butterfuss”, Ihre Wahl) ist ein Dateisystem, das seit 2007 speziell für Linux von der Oracle Corporation und anderen Firmen, darunter Fujitsu, Red Hat, Intel und SUSE und weiteren Firmen, entwickelt wird.
Es gibt viele Merkmale, die Btrfs auf modernen Systemen attraktiv machen, auf denen massive Speichermengen üblich sind. Dazu gehören die Unterstützung mehrerer Geräte (einschließlich Striping, Mirroring und Striping+Mirroring, wie in einem RAID-Setup), transparente Komprimierung, SSD-Optimierungen, inkrementelle Sicherungen, Snapshots, Onlinedefragmentierung, Offlineprüfungen, Unterstützung von Subvolumes (mit Quotas), Deduplizierung und vieles mehr.
Da es sich um ein copy-on-write Dateisystem handelt, ist es sehr widerstandsfähig gegen Abstürze. Und obendrein ist Btrfs einfach zu benutzen und wird von vielen Linux-Distributionen gut unterstützt. Und einige von ihnen, wie SUSE, verwenden es als Standarddateisystem.
Note
|
Wenn Sie auf einem traditionellen Dateisystem einen Teil einer Datei überschreiben möchten, werden die neuen Daten direkt über die alten Daten gelegt, die sie ersetzen. Auf einem copy-on-write-Dateisystem werden die neuen Daten auf freien Speicherplatz auf der Platte geschrieben, dann werden die ursprünglichen Metadaten der Datei aktualisiert, um auf die neuen Daten zu verweisen, und erst dann werden die alten Daten freigegeben, da sie nicht mehr benötigt werden. Dies verringert die Wahrscheinlichkeit eines Datenverlusts im Falle eines Absturzes, da die alten Daten erst dann verworfen werden, wenn das Dateisystem absolut sicher ist, dass sie nicht mehr benötigt werden und die neuen Daten vorhanden sind. |
Erstellen eines Btrfs-Dateisystems
Das Dienstprogramm mkfs.btrfs
wird verwendet, um ein Btrfs-Dateisystem zu erstellen. Wird der Befehl ohne irgendwelche Optionen verwendet, wird ein Btrfs-Dateisystem auf dem angegebenen Gerät erstellt, wie hier zu sehen:
# mkfs.btrfs /dev/sdb1
Tip
|
Wenn das Dienstprogramm |
Sie können -L
benutzen, um ein Label (oder einen Namen) für Ihr Dateisystem zu setzen. Btrfs-Labels können bis zu 256 Zeichen umfassen, Zeilenumbrüche ausgeschlossen:
# mkfs.btrfs /dev/sdb1 -L "New Disk"
Tip
|
Schließen Sie das Label in Anführungszeichen ein (wie oben), wenn es Leerzeichen enthält. |
Beachten Sie die Besonderheit von Btrfs: Sie können mehrere Geräte an den Befehl mkfs.btrfs
übergeben. Wenn Sie mehr als ein Gerät übergeben, wird das Dateisystem über alle Geräte verteilt, was einem RAID- oder LVM-Setup ähnlich ist. Um anzugeben, wie die Metadaten im Plattenarray verteilt werden sollen, benutzen Sie den Parameter -m
. Gültige Parameter sind raid0
, raid1
, raid5
, raid6
, raid10
, single
und dup
.
Um zum Beispiel ein Dateisystem zu erstellen, das /dev/sdb1
und /dev/sdc1
umfasst, verketten Sie die beiden Partitionen wie folgt zu einer großen Partition:
# mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Warning
|
Dateisysteme, die wie oben beschrieben mehrere Partitionen umfassen, mögen zunächst vorteilhaft aussehen, sind aber aus Sicht der Datensicherheit keine gute Idee, da ein Ausfall auf einer einzelnen Platte des Arrays einen gewissen Datenverlust bedeutet. Das Risiko wird umso größer, je mehr Platten Sie verwenden, da dies auch mehr mögliche Ausfallpunkte ergibt. |
Verwaltung von Subvolumes
Subvolumes sind wie Dateisysteme innerhalb von Dateisystemen. Stellen Sie sich diese als ein Verzeichnis vor, das als ein separates Dateisystem gemountet (und wie ein solches behandelt) wird. Subvolumes erleichtern die Organisation und Systemverwaltung, da jedes einzelne von ihnen separate Quotas oder Snapshot-Regeln besitzen kann.
Note
|
Subvolumes sind keine Partitionen. Eine Partition weist einen festen Platz auf einem Laufwerk auf. Dies kann im weiteren Verlauf zu Problemen führen, wie z.B. dass einer Partition der Platz ausgeht, wenn eine andere Partition viel Platz übrig hat. Nicht so bei Subvolumes, da sie sich den freien Speicherplatz ihres Root-Dateisystems “teilen” und bei Bedarf wachsen. |
Angenommen, Sie haben ein Btrfs-Dateisystem, das auf /mnt/disk
gemountet ist, und Sie möchten darin ein Subvolume erstellen, um Ihre Sicherungen zu speichern. Lassen Sie es uns BKP
nennen:
# btrfs subvolume create /mnt/disk/BKP
Als nächstes listen wir den Inhalt des /mnt/disk
-Dateisystems auf. Sie werden sehen, dass wir ein neues Verzeichnis haben, benannt nach unserem Subvolume.
$ ls -lh /mnt/disk/ total 0 drwxr-xr-x 1 root root 0 jul 13 17:35 BKP drwxrwxr-x 1 carol carol 988 jul 13 17:30 Images
Note
|
Ja, auf Subvolumes kann auch wie auf jedes andere Verzeichnis zugegriffen werden. |
Mit folgendem Befehl können wir überprüfen, ob das Subvolumen aktiv ist:
# btrfs subvolume show /mnt/disk/BKP/ Name: BKP UUID: e90a1afe-69fa-da4f-9764-3384f66fa32e Parent UUID: - Received UUID: - Creation time: 2019-07-13 17:35:40 -0300 Subvolume ID: 260 Generation: 23 Gen at creation: 22 Parent ID: 5 Top level ID: 5 Flags: - Snapshot(s):
Sie können das Subvolume auf /mnt/BKP
mounten, indem Sie die Parameter -t btrfs -o subvolume=NAME
an den Befehl mount
übergeben:
# mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
Note
|
Der |
Arbeiten mit Schnappschüssen
Schnappschüsse sind genau wie Subvolumes, aber mit dem Inhalt des Volumes, von dem der Schnappschuss erstellt wurde, vorbelegt.
Bei der Erstellung haben ein Schnappschuss und der Originaldatenträger exakt den gleichen Inhalt. Von diesem Zeitpunkt an werden diese jedoch voneinander abweichen. Am Originaldatenträger vorgenommene Änderungen (wie das Hinzufügen, Umbenennen oder Löschen von Dateien) werden nicht im Snapshot wiedergespiegelt und umgekehrt.
Denken Sie daran, dass ein Schnappschuss die Dateien nicht dupliziert und anfangs fast keinen Speicherplatz benötigt. Er dupliziert einfach den Dateisystembaum, während er auf die Originaldaten verweist.
Der Befehl zum Erstellen eines Snapshots ist derselbe, der auch zum Erstellen eines Subvolumes verwendet wird, fügen Sie einfach den Parameter snapshot
hinter btrfs subvolume
ein. Der folgende Befehl erzeugt einen Snapshot der Btrfs-Dateien, die in /mnt/disk
unter /mnt/disk/snap
gemountet sind:
# btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
Nun stellen Sie sich vor, Sie haben den folgenden Inhalt in /mnt/disk
:
$ ls -lh total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Beachten Sie das Snapverzeichnis, welches den Snapshot enthält. Nun wollen wir einige Dateien entfernen und den Inhalt des Verzeichnisses überprüfen:
$ rm LG-G8S-ThinQ-* $ ls -lh total 1,7M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Wenn Sie jedoch einen Blick auf das Snapverzeichnisses werfen, sind die gelöschten Dateien noch vorhanden und können bei Bedarf wiederhergestellt werden.
$ ls -lh snap/ total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Es ist auch möglich, schreibgeschützte Snapshots zu erstellen. Sie funktionieren genau wie beschreibbare Schnappschüsse, mit dem Unterschied, dass der Inhalt des Schnappschüsses nicht verändert werden kann, diese sind zeitlich “eingefroren”. Fügen Sie einfach den Parameter -r
bei der Erstellung des Schnappschusses hinzu:
# btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Ein paar Worte zur Kompression
Btrfs unterstützt transparente Dateikomprimierung, wobei dem Benutzer drei verschiedene Algorithmen zur Verfügung stehen. Dies geschieht automatisch auf einer pro-Datei-Basis, solange das Dateisystem mit der Option -o compress
gemountet ist. Die Algorithmen sind intelligent genug, um nicht komprimierbare Dateien zu erkennen, und werden nicht versuchen, diese zu komprimieren, was Systemressourcen spart. Auf einem einzigen Verzeichnis können Sie also komprimierte und unkomprimierte Dateien zusammen ablegen. Der Standardkompressionsalgorithmus ist ZLIB, aber LZO (schneller, schlechteres Kompressionsverhältnis) oder ZSTD (schneller als ZLIB, vergleichbare Kompression) sind mit mehreren Kompressionsstufen verfügbar (siehe dazu das entsprechende Lernziel zu Mountoptionen).
Partitionen mit GNU Parted verwalten
GNU Parted ist ein sehr leistungsfähiger Partitionseditor (daher der Name), der zum Erstellen, Löschen, Verschieben, Ändern der Größe, Retten und Kopieren von Partitionen verwendet werden kann. Er kann sowohl mit GPT- als auch mit MBR-Platten arbeiten und deckt fast alle Anforderungen an die Plattenverwaltung ab.
Es gibt viele grafische Front-Ends, welche die Arbeit mit parted
wesentlich einfacher machen, wie GParted für GNOME-basierte Desktopumgebungen und den KDE Partition Manager für KDE-Desktops. Man sollten jedoch lernen, wie man parted
auf der Kommandozeile benutzt, da man sich in einer Serverumgebung nie darauf verlassen können, dass eine grafische Desktopumgebung verfügbar ist.
Warning
|
Im Gegensatz zu |
Der einfachste Weg, mit der Verwendung von parted zu beginnen, ist die Eingabe von parted DEVICE
, wobei DEVICE
das Gerät ist, das Sie verwalten wollen (parted /dev/sdb
). Das Programm startet eine interaktive Kommandozeilenschnittstelle wie fdisk
und gdisk
mit einer (parted)
Eingabeaufforderung, für die Eingabe von Befehlen.
# parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Warning
|
Seien Sie vorsichtig! Wenn Sie kein Gerät angeben, wird |
Auswählen von Datenträgern
Um auf eine andere als die auf der Kommandozeile angegebene Platte zu wechseln, können Sie den Befehl select
, gefolgt vom Gerätenamen, verwenden:
(parted) select /dev/sdb Using /dev/sdb
Informationsbeschaffung
Der Befehl print
kann verwendet werden, um mehr Informationen über eine bestimmte Partition oder sogar über alle an Ihr System angeschlossenen Blockgeräte (Platten) zu erhalten.
Um Informationen über die aktuell ausgewählte Partition zu erhalten, geben Sie einfach print
ein:
(parted) print Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2097kB 116GB 116GB primary ext4 2 116GB 120GB 4295MB primary linux-swap(v1)
Eine Liste aller am System angeschlossenen Blockgeräte erhalten Sie via print devices
:
(parted) print devices /dev/sdb (1999MB) /dev/sda (120GB) /dev/sdc (320GB) /dev/mapper/cryptswap (4294MB)
Um Informationen über alle angeschlossenen Geräte auf einmal zu erhalten, können Sie print all
verwenden. Wenn Sie wissen möchten, wieviel freier Speicherplatz in jedem einzelnen Gerät vorhanden ist, benutzen Sie print free
:
(parted) print free Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 2097kB 2065kB Free Space 1 2097kB 116GB 116GB primary ext4 116GB 116GB 512B Free Space 2 116GB 120GB 4295MB primary linux-swap(v1) 120GB 120GB 2098kB Free Space
Erstellen einer Partitionstabelle auf einem leeren Datenträger
Um eine Partitionstabelle auf einer leeren Platte zu erstellen, verwenden Sie den Befehl mklabel
, gefolgt von dem Partitionstabellentyp, welcher erstellt werden soll.
Es gibt viele unterstützte Partitionstabellentypen, aber die Haupttypen, die Sie kennen sollten, sind msdos
, welcher hier benutzt wird, um auf eine MBR-Partitionstabelle zu verweisen, und gpt
, um auf eine GPT-Partitionstabelle zu verweisen. Um eine MBR-Partitionstabelle zu erstellen, geben Sie folgendes ein:
(parted) mklabel msdos
Und um eine GPT-Partitionstabelle zu erstellen, lautet der Befehl:
(parted) mklabel gpt
Erstellen einer Partition
Um eine Partition zu erstellen, wird der Befehl mkpart
verwendet, wobei die Syntax mkpart PARTTYPE FSTYPE START END
verwendet wird:
PARTTYPE
-
Ist der Partitionstyp, der
primär
,logisch
odererweitert
sein kann, falls eine MBR-Partitionstabelle verwendet wird. FSTYPE
-
Gibt an, welches Dateisystem auf dieser Partition verwendet werden soll. Beachten Sie, dass
parted
das Dateisystem nicht erstellen wird. Es setzt lediglich ein Flag auf der Partition, das dem Betriebssystem mitteilt, welche Art von Daten es von dieser Partition erwarten kann. START
-
Gibt den genauen Punkt auf dem Gerät an, an dem die Partition beginnt. Sie können verschiedene Einheiten verwenden, um diesen Punkt anzugeben.
2s
kann verwendet werden, um auf den zweiten Sektor der Platte zu verweisen, während1m
auf den Anfang des ersten Megabyte der Platte verweist. Andere gebräuchliche Einheiten sindB
(Bytes) und%
(Prozentsatz der Platte). END
-
Gibt das Ende der Partition an. Beachten Sie, dass dies nicht die Größe der Partition ist, dies ist der Punkt auf der Platte, an dem die Partition endet. Wenn Sie zum Beispiel
100m
angeben, endet die Partition 100 MB nach dem Start der Platte. Es können die gleichen Einheiten wie im ParameterSTART
verwendet werden.
Folgend ein Beispiel:
(parted) mkpart primary ext4 1m 100m
Erstellt eine primäre Partition des Typs ext4
, beginnend mit dem ersten Megabyte der Platte und endend nach dem 100sten Megabyte.
Entfernen einer Partition
Um eine Partition zu entfernen, verwenden Sie den Befehl rm
, gefolgt von der Partitionsnummer, die Sie sich mit dem Befehl print
anzeigen lassen können. So würde rm 2
die zweite Partition auf der aktuell ausgewählten Platte entfernen.
Wiederherstellen von Partitionen
parted
kann eine gelöschte Partition wiederherstellen. Ausgehend von folgender Partitionsstruktur:
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 primary 3 200MB 300MB 99.6MB ext4 primary
Versehentlich haben Sie zweite Partition mit rm 2
entfernt. Zur Wiederherzustellung, können Sie den Befehl rescue
verwenden, mit der Syntax rescue START END
, wobei START
die ungefähre Stelle ist, an der die Partition begann, und END
die ungefähre Stelle, an der die Partition einst endete.
parted
durchsucht die Platte auf der Suche nach Partitionen und bietet an, alle gefundenen Partitionen wiederherzustellen. Im obigen Beispiel begann die Partition 2
bei 99,6 MB und endete bei 200 MB. Sie können also den folgenden Befehl verwenden, um die Partition wiederherzustellen:
(parted) rescue 90m 210m Information: A ext4 primary partition was found at 99.6MB -> 200MB. Do you want to add it to the partition table? Yes/No/Cancel? y
Dadurch werden die Partition und ihr Inhalt wiederhergestellt. Beachten Sie, dass rescue
nur Partitionen wiederherstellen kann, auf denen ein Dateisystem installiert ist. Leere Partitionen werden nicht erkannt.
Größenänderung von ext2/3/4-Partitionen
parted
kann dazu verwendet werden, die Größe von Partitionen zu verändern, um diese zu vergrößern oder zu verkleinern. Es gibt jedoch einige Vorbehalte:
-
Während der Größenänderung muss die Partition unbenutzt und ungemountet sein.
-
Sie benötigen nach der Partition genügend freien Speicherplatz, um diese auf die gewünschte Größe zu vergrößern.
Der Befehl dazu lautet resizepart
, gefolgt von der Partitionsnummer und wo sie enden soll. Zum Beispiel, wenn Sie die folgende Partitionstabelle vorliegt:
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary
Der Versuch, die Partition 1
unter Verwendung von resizepart
zu vergrößern, würde eine Fehlermeldung verursachen, da sich mit der neuen Größe die Partition 1
mit der Partition 2
überschneiden würde. Partition 3
kann jedoch in der Größe verändert werden, da danach freier Platz vorhanden ist, was mit dem Befehl print free
überprüft werden kann:
(parted) print free Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary 300MB 1999MB 1699MB Free Space
Sie können also den folgenden Befehl verwenden, um die Größe von Partition 3 auf 350 MB zu ändern:
(parted) resizepart 3 350m (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 350MB 150MB ext4 primary
Denken Sie daran, dass der neue Endpunkt vom Anfang der Platte an gezählt angegeben wird. Da Partition 3
bei 300 MB endete, muss sie jetzt bei 350 MB enden.
Aber die Größenänderung der Partition ist nur ein Teil der möglichen Aufgabe. Sie müssen auch die Größe des Dateisystems, das sich darin befindet, ändern. Für ext2/3/4-Dateisysteme geschieht dies mit dem Befehl resize2fs
. Im Fall des obigen Beispiels zeigt Partition 3 nach dem Mounten immer noch die “alte” Größe an:
$ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 88M 1.6M 80M 2% /media/carol/part3
Um die Größe anzupassen, kann der Befehl resize2fs DEVICE SIZE
verwendet werden, wobei DEVICE
der Partition entspricht, deren Größe Sie ändern möchten, und SIZE
für die neue Größe steht. Wenn Sie den Parameter SIZE
weglassen, wird der gesamte verfügbare Platz der Partition genutzt. Vor einer Größenänderung wird empfohlen, die Partition auszuhängen.
Im obigen Beispiel:
$ sudo resize2fs /dev/sdb3 resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 146212 (1k) blocks. The filesystem on /dev/sdb3 is now 146212 (1k) blocks long. $ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 135M 1.6M 123M 2% /media/carol/part3
Um eine Partition zu schrumpfen, muss der Vorgang in umgekehrter Reihenfolge durchgeführt werden. Zuerst verkleinern Sie das Dateisystem auf die neue, kleinere Größe, dann verkleinern Sie die Partition mittels parted
.
Warning
|
Achten Sie beim Verkleinern von Partitionen auf die Reihenfolge. Wenn Sie die Reihenfolge falsch angehen, besteht das Risiko von Datenverlust! |
In unserem Beispiel:
# resize2fs /dev/sdb3 88m resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 90112 (1k) blocks. The filesystem on /dev/sdb3 is now 90112 (1k) blocks long. # parted /dev/sdb3 (parted) resizepart 3 300m Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? y (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.7MB ext4 primary
Tip
|
Anstatt eine neue Größe anzugeben, können Sie den |
Erstellen von Swap-Partitionen
Unter Linux kann das System je nach Bedarf Speicherseiten vom RAM auf die Festplatte auslagern und auf einem separaten Speicherplatz speichern, der normalerweise als separate Partition auf einer Festplatte implementiert ist und als Auslagerungspartition oder einfach Swap bezeichnet wird. Diese Partition muss von einem bestimmten Typ sein und mit einem geeigneten Dienstprogramm (mkswap
) eingerichtet werden, bevor diese benutzt werden kann.
Um die Swap-Partition mit fdisk
oder gdisk
zu erstellen, gehen Sie einfach so vor, als ob Sie eine reguläre Partition erstellen würden, wie zuvor beschrieben. Der einzige Unterschied besteht darin, dass Sie den Partitionstyp in Linux-Swap ändern müssen.
-
Mit
fdisk
verwenden Sie den Befehlt
. Wählen Sie die Partition, die Sie benutzen wollen, und ändern Sie ihren Typ in82
. Schreiben Sie die Änderungen auf die Platte und beenden Sie das Programm mitw
. -
Mit
gdisk
ist der Befehl zum Ändern des Partitionstyps ebenfallst
, aber der Code ist8200
. Schreiben Sie die Änderungen auf die Platte und beenden Sie mitw
.
Wenn Sie parted
verwenden, sollte die Partition während der Erstellung als Swap-Partition identifiziert werden, verwenden Sie einfach linux-swap
als Dateisystemtyp. Zum Beispiel lautet der Befehl zum Erstellen einer 500 MB großen Swap-Partition, beginnend bei 300 MB auf der Platte:
(parted) mkpart primary linux-swap 301m 800m
Sobald die Partition erstellt und richtig identifiziert ist, verwenden Sie einfach mkswap
, gefolgt von dem Gerät, das die zu verwendende Partition repräsentiert, z.B:
# mkswap /dev/sda2
Um Swap auf dieser Partition zu aktivieren, verwenden Sie swapon
, gefolgt vom Gerätenamen:
# swapon /dev/sda2
In ähnlicher Weise deaktiviert swapoff
, gefolgt von Gerätenamen, die Auslagerung auf dieses Gerät.
Linux unterstützt auch die Verwendung von Swap-Dateien anstelle von Partitionen. Erstellen Sie einfach eine leere Datei der gewünschten Größe mit dd
und benutzen Sie dann mkswap
und swapon
mit dieser Datei als Ziel.
Die folgenden Befehle erzeugen eine 1 GB große Datei namens myswap
im aktuellen Verzeichnis, die mit Nullen aufgefüllt wird, und dann als Auslagerungsdatei eingerichtet und aktiviert wird.
Erstellen einer Auslagerungsdatei:
$ dd if=/dev/zero of=myswap bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.49254 s, 143 MB/s
if=
ist die Eingabedatei, die Quelle der Daten, die in die Datei geschrieben werden. In diesem Fall ist es das /dev/zero
-Gerät, das so viele NULL
-Zeichen zur Verfügung stellt, wie angefordert werden. of=
steht für die Ausgabedatei, d.h. die Datei, die erstellt wird. bs=
ist die Größe der Datenblöcke, hier in Megabyte angegeben, und count=
ist die Anzahl der Blöcke, die in die Ausgabedatei geschrieben werden. 1024 Blöcke von je 1 MB entsprechen 1 GB.
# mkswap myswap Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=49c53bc4-c4b1-4a8b-a613-8f42cb275b2b # swapon myswap
Mit den obigen Befehlen wird diese Auslagerungsdatei nur während der aktuellen Systemsitzung verwendet. Wenn der Rechner neu gestartet wird, ist die Datei weiterhin verfügbar, wird aber nicht automatisch geladen. Sie können dies automatisieren, indem Sie die neue Auslagerungsdatei zur /etc/fstab
hinzufügen, was wir in einer späteren Lektion besprechen werden.
Tip
|
Sowohl |
Geführte Übungen
-
Welches Partitionierungsschema sollte verwendet werden, um eine 3 TB Festplatte in drei 1 GB Partitionen zu partitionieren? Warum?
-
Mittels
gdisk
, wie können wir herausfinden, wieviel Speicherlatz auf der Platte noch verfügbar ist? -
Wie würde der Befehl lauten, ein ext3-Dateisystem auf dem Gerät
/dev/sdc1
mit dem LabelMyDisk
und einer zufälligen UUID zu erstellen und vorher auf fehlerhafte Blöcke zu prüfen? -
Wie lautet der Befehl, mit
parted
eine 300 MB große ext4-Partition zu erstellen, beginnend bei 500 MB auf der Platte? -
Stellen Sie sich vor, Sie haben 2 Partitionen, eine auf
/dev/sda1
und die andere auf/dev/sda2
, beide 20 GB groß. Wie können Sie sie auf einem einzelnen Btrfs-Dateisystem so benutzen, dass der Inhalt der einen Partition automatisch auf die andere gespiegelt wird, wie bei einer RAID1-Einrichtung? Wie groß wird das Dateisystem sein?
Offene Übungen
-
Ausgehend von einer 2 GB Festplatte mit einer MBR-Partitionstabelle und dem folgenden Layout:
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 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: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Können Sie darauf eine 600 MB-Partition erstellen? Warum?
-
Auf einer Platte unter
/dev/sdc
haben wir die erste Partition von 1 GB, die etwa 256 MB an Dateien enthält. Wie können Sie diese Partition mitparted
verkleinern, so dass sie gerade genug Platz für die abgelegten Dateien hat? -
Stellen Sie sich vor, Sie haben eine Platte unter
/dev/sdb
, und Sie wollen am Anfang eine 1 GB große Swap-Partition anlegen. Mitparted
erstellen Sie also die Partition mittelsmkpart primary linux-swap 0 1024M
. Dann aktivieren Sie das Auslagern auf dieser Partition mitswapon /dev/sdb1
, erhalten aber die folgende Fehlermeldung:swapon: /dev/sdb1: read swap header failed
Was ist schief gelaufen?
-
Im Verlauf dieser Lektion haben Sie einige Befehle in
parted
ausprobiert, aber versehentlich die dritte Partition auf Ihrer Festplatte gelöscht. Sie wissen, dass die gelöschte Partition nach einer 250 MB großen UEFI-Partition und einer 4 GB großen Swap-Partition lag und eine Größe von 10 GB aufwies. Welchen Befehl können Sie verwenden, um die gelöschte Partition wiederherzustellen? -
Stellen Sie sich vor, Sie haben eine unbenutzte 4 GB große Partition auf
/dev/sda3
. Mittelsfdisk
, was wäre die Reihenfolge der Operationen, um diese Partition in eine aktive Swap-Partition zu verwandeln?
Zusammenfassung
In dieser Lektion haben Sie gelernt:
-
Wie man eine MBR-Partitionstabelle auf einer Platte mit
fdisk
erstellt und wie man damit Partitionen erstellt und löscht. -
Wie man eine GPT-Partitionstabelle auf einer Platte mit
gdisk
erstellt und wie man damit Partitionen erstellt und löscht. -
Wie man ext2-, ext3-, ext4-, XFS-, VFAT- und exFAT-Partitionen erstellt.
-
Wie man
parted
zum Erstellen, Löschen und Wiederherstellen von Partitionen auf MBR- und GPT-Platten verwendet. -
Wie man ext2-, ext3-, ext4- und Brts-Partitionen verwendet.
-
Wie man Auslagerungspartitionen und Auslagerungsdateien erstellt, einrichtet und aktiviert.
Die folgenden Befehle wurden in dieser Lektion besprochen:
-
fdisk
-
gdisk
-
mkfs.ext2
,mkfs.ext3
,mkfs.ext4
,mkfs.xfs
,mkfs.vfat
undmkfs.exfat
-
parted
-
btrfs
-
mkswap
-
swapon
undswapoff
Lösungen zu den geführten Übungen
-
Welches Partitionierungsschema sollte verwendet werden, um eine 3 TB Festplatte in drei 1 GB Partitionen zu partitionieren? Warum?
GPT, da MBR höchstens 2 TB Festplatten unterstützt.
-
Mittels
gdisk
, wie können wir herausfinden, wieviel Speicherlatz auf der Platte noch verfügbar ist?Verwenden Sie
p
(print). Der gesamte freie Speicherplatz wird als letzte Informationszeile vor der eigentlichen Partitionstabelle angezeigt. -
Wie würde der Befehl lauten, ein ext3-Dateisystem auf dem Gerät
/dev/sdc1
mit dem LabelMyDisk
und einer zufälligen UUID zu erstellen und vorher auf fehlerhafte Blöcke zu prüfen?Der Befehl lautet
mkfs.ext3 -c -L MyDisk -U random /dev/sdc1
. Alternativ kann auchmke2fs -t ext3
anstelle vonmkfs.ext3
verwendet werden. -
Wie lautet der Befehl, mit
parted
eine 300 MB große ext4-Partition zu erstellen, beginnend bei 500 MB auf der Platte?Verwenden Sie
mkpart primary ext4 500m 800m
. Denken Sie daran, dass Sie das Dateisystem mitmkfs.ext4
erstellen müssen, da parted dies nicht tut. -
Stellen Sie sich vor, Sie haben 2 Partitionen, eine auf
/dev/sda1
und die andere auf/dev/sdb1
, beide 20 GB groß. Wie können Sie sie auf einem einzelnen Btrfs-Dateisystem so benutzen, dass der Inhalt der einen Partition automatisch auf die andere gespiegelt wird, wie bei einer RAID1-Einrichtung? Wie groß wird das Dateisystem sein?Verwenden Sie
mkfs.btrfs /dev/sda1 /dev/sdb1 -m raid1
. Das resultierende Dateisystem wird 20 GB groß sein, da eine Partition einfach als Spiegel der anderen fungiert.
Lösungen zu den offenen Übungen
-
Ausgehend von einer 2 GB Festplatte mit einer MBR-Partitionstabelle und dem folgenden Layout:
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 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: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Können Sie darauf eine 600 MB-Partition erstellen? Warum?
Das können Sie nicht, weil es nicht genug zusammenhängender Speicher vorhanden ist. Der erste Hinweis darauf, dass der Speicher “aus” ist, zeigt die Liste der Geräte: Sie haben
/dev/sdb1
und/dev/sdb3
, aber kein/dev/sdb2
. Es fehlt also etwas.Dann müssen Sie schauen, wo eine Partition endet und die andere beginnt. Die erste Partition endet im Sektor
1050623
, und die zweite Partition beginnt bei2099200
. Das ist eine "Lücke" von 1048577 Sektoren. Bei 512 Bytes pro Sektor sind das 536.871.424 Bytes. Wenn man diesen Wert nun durch 1024 teilt, erhält man 524.288 Kilobyte. Erneut dividiert durch 1024, erhält man 512 MB. Dies ist die Größe der "Lücke".Wenn die Platte 2 GB umfasst, dann stehen nach Partition 3 maximal weitere 512 MB zur Verfügung. Selbst wenn insgesamt etwa 1 GB nicht zugewieser Speicher vorliegt, beträgt der größte zusammenhängende Block 512 MB. Es gibt also keinen Platz für eine 600 MB Partition.
-
Auf einer Platte unter
/dev/sdc
haben wir die erste Partition von 1 GB, die etwa 256 MB an Dateien enthält. Wie können Sie diese Partition mitparted
verkleinern, so dass sie gerade genug Platz für die abgelegten Dateien hat?Dies ist eine mehrteilige Operation. Zuerst muss das Dateisystem mit
resize2fs
verkleinert werden. Anstatt die neue Größe direkt anzugeben, können Sie den-M
Parameter benutzen, so dass das geänderte Dateisystem gerade “groß genug” ist. Also:resize2fs -M /dev/sdc1
.Anschließend wird die Größe der Partition selbst mit parted unter Verwendung von
resizepart
geändert. Da es die erste Partition ist, können wir davon ausgehen, dass diese bei Null beginnt und bei 241 MB endet. Der Befehl lautet alsoresizepart 1 241M
. -
Stellen Sie sich vor, Sie haben eine Platte unter
/dev/sdb
, und Sie wollen am Anfang eine 1 GB große Swap-Partition anlegen. Mitparted
erstellen Sie also die Partition mittelsmkpart primary linux-swap 0 1024M
. Dann aktivieren Sie das Auslagern auf dieser Partition mitswapon /dev/sdb1
, erhalten aber die folgende Fehlermeldung:swapon: /dev/sdb1: read swap header failed
Was ist schief gelaufen?
Sie haben eine Partition des richtigen Typs erstellt (
linux-swap
), aber denken Sie daran, dassmkpart
kein Dateisystem erstellt. Sie haben vergessen, die Partition zuerst mitmkswap
als Auslagerungsspeicher einzurichten, bevor diese genutzt werden kann. -
Im Verlauf dieser Lektion haben Sie einige Befehle in
parted
ausprobiert, aber versehentlich die dritte Partition auf Ihrer Festplatte gelöscht. Sie wissen, dass die gelöschte Partition nach einer 250 MB großen UEFI-Partition und einer 4 GB großen Swap-Partition lag und eine Größe von 10 GB aufwies. Welchen Befehl können Sie verwenden, um die gelöschte Partition wiederherzustellen?Keine Panik, Sie haben alle Informationen, die Sie brauchen, um die Partition wiederherzustellen, verwenden Sie einfach
rescue
und rechnen Sie nach. Sie hatten 250 MB + 4.096 MB (4*1024) davor, also sollte der Startpunkt bei etwa 4346 MB liegen. Zuzüglich 10,240 MB (10*1024) Speicherplatz sollte er bei 14,586 MB enden. Also sollterescue 4346m 14586m
die Lösung sein. Möglicherweise müssen Sie der Rettung etwas “Spielraum” geben, indem Sie etwas weiter vorn beginnen und etwas weiter hinten enden, je nach Geometrie Ihrer Festplatte. -
Stellen Sie sich vor, Sie haben eine unbenutzte 4 GB große Partition auf
/dev/sda3
. Mitfdisk
, was wäre die Reihenfolge der Operationen, um sie in eine aktive Swap-Partition zu verwandeln?Ändern Sie zunächst den Partitionstyp in “Linux Swap” (82), schreiben Sie Ihre Änderungen auf die Platte und beenden Sie das Programm. Dann benutzen Sie
mkswap
, um die Partition als Swapbereich einzurichten. Dann benutzen Sieswapon
, um diesen zu aktivieren.