Disks: Partitionierung

Eine MBR-basierte Partitionstabelle einer Festplatte kann maximal vier Partitionen enthalten - vier primäre oder drei primäre und eine erweiterte Partition. Die erweiterte Partition kann eine zweistellige Anzahl logischer (= virtueller) Partitionen aufnehmen. Insgesamt sind maximal 15 Partitionen und 2 TB grosse Disks möglich. Wird häufig auf Systemen eingesetzt, die BIOS-Firmware ausführen.

Auf UEFI-Systemen ist dagegen GPT der Standard für das Layout der Partitonierungstabelle. Hier sind maximal 128 Partitionen möglich. Disks könne bis zu 8 ZB gross werden. Disks und Partitionen können über GUIDs identifiziert werden.

Das von Redhat empfohlene Kommandozeilen-Tool zur Partitionsverwaltung heisst parted, die GNOME-Variante gparted. Fans des älteren fdisk können dieses ebenfalls verwenden; die TUI-Variante heisst cfdisk. Während fdisk Partitionen erzeugen, löschen und prüfen kann, ist parted darüber hinaus in der Lage, Partitionsgrössen zu ändern oder Partitionen zu kopieren. Der grösste Nachteil von fdisk ist, dass es nicht mit Partitionen grösser als 2 TB und GUID Partition Table (GPT) umgehen kann.

Es gibt rund einhundert verschiedene Partitionstypen, z.B. FAT16, FAT32, OS/2, NTFS, Linux, Linux swap usw. Die bereits eingerichteten Typen lassen sich mit fdisk -l in der Spalte „Id“ und „System“ einsehen. Jeder Partitionstyp wird über dessen hexadezimale Nummer angesprochen. Die gebräuchlichsten sind:

  • 82: Linux swap

  • 83: Linux

  • 8e: Linux LVM

fdisk

Art der Partitionen inkl. deren Grössen auflisten:

fdisk -l

Soll auf der Platte /dev/sdb eine Partition angelegt werden, geht man wie folgt vor:

fdisk /dev/sdb

Damit befindet man sich in der Kommandozeile des Tools. Um eine primäre oder eine erweiterte Partition zu erzeugen, müssen folgende Kommandos eingegeben werden:

  • n: new, neue Partition erzeugen

    • p: primäre Partition (um eine erweiterte Partition zu erstellen, e eingeben)

    • 1: gewünschte Partitionsnummer von 1 bis 4 eingeben

    • Das Tool fragt nach zwei Zylinder-Zahlen: der erste Zylinder ist der kleinstmögliche Bereich auf der Festplatte für die kommende Partition, der letzte Zylinder der grösstmögliche (oft das Ende der Festplatte).
      Es geht aber auch anders: möchte man beispielsweise eine Partition mit einer Grösse von 100 MB erzeugen, verwendet man als zweite Angabe +100M.
  • p: print, neue Partitionstabelle prüfen - wurde die Partition auch (erst mal nur im Memory) angelegt?

  • w: write, schreibt die Änderungen auf die Festplatte. Das Tool wird damit beendet.

Um den Typ einer primären Partition festzulegen, geht man folgendermassen vor:

fdisk /dev/sdb
  • t: type, Partitionstyp festlegen - über L wird eine Hilfe angezeigt

  • 83: der Hex-Code für die allgemeine Linux-Partition

  • w

Um die Partition wieder zu löschen, verwendet man das Kommando d innerhalb von fdisk:

fdisk /dev/sdb
  • d: delete, Partition löschen (wenn mehrere auf /dev/sdb vorhanden sind, noch die passende Partition auswählen)

  • w: schreiben

Bemerkung

Ein Aufruf von partprobe oder udevadm settle hilft, sämtliche Änderungen an Festplatten und Partitionen dem Kernel bekanntzumachen, ganz ohne Neustart des Servers (natürlich nur solange sich nichts an der Geometrie einer aktiven Partition geändert hat).

parted

Bemerkung

Wird eine GPT verwendet, wird der erste Parameter primary nach parted --script /dev/sd$disk mkpart ... als Label der Partition interpretiert. Bei MBR ist dagegen ein Partitionstyp anzugeben.

Infos über die Disk auslesen:

parted /dev/vdb print

Die Disk vdb mit einer GPT und zwei Partitionen versehen (Vorsicht: Partitionsinformationen werden dadurch überschrieben):

parted --script /dev/vdb \
    mklabel gpt \
    mkpart primary 0% 50% \
    mkpart primary 50% 100%

Die Disks sdb bis sde auf GPT setzen (Vorsicht: Partitionsinformationen werden dadurch überschrieben) und mehrere Paritionen einrichten, die insgesamt 100% der Disk nutzen, und bei der die erste durch den Startblock 2048s sauber aligniert ist.

for disk in {b..e}
do
    parted --script /dev/sd$disk mklabel gpt
    parted --script /dev/sd$disk mkpart primary 2048s 50%
    parted --script /dev/sd$disk mkpart primary 50% 77G
    parted --script /dev/sd$disk mkpart primary 77G 100%
done

Ein zusätzliche Partition auf der Systemdisk einrichten:

parted /dev/vda 'unit s print'
# last "End" sector, for example 37328895

parted --script /dev/vda mkpart primary 37328896s 25G
# creates a partition up to position 25G, so with (25G - Pos 37328896s) in size

Disk per BIOS/MBR bootfähig partitionieren:

parted /dev/vdb mklabel msdos
parted /dev/vdb mkpart primary 1MiB 10G
parted /dev/vdb set 1 boot on

Disk per BIOS/GPT bootfähig partitionieren:

parted /dev/vdb mklabel gpt
parted /dev/vdb mkpart primary 2048s 10G
parted /dev/vdb set 1 bios_grub on

Alignment prüfen:

# check partition 2 for optimal alignment
parted /dev/vda align-check optimal 2
Sind mehr als vier „primary“ Partitions möglich?

Ja. Das „primary“ ist hier logisch zu sehen, nicht physisch.

Muss man sich über den „Name“ der Partition Sorgen machen?

Nein, völlig wurscht. Die Partitionen im Beispiel werden zwar als „Microsoft basic“ ausgegeben, enthalten aber trotzdem xfs-Dateisysteme:

#         Start          End    Size  Type            Name
1          2048      1953791    953M  Microsoft basic primary
2       1953792      3905535    953M  Microsoft basic primary
3       3905536      5859327    954M  Microsoft basic primary
4       5859328     10741759    2.3G  Microsoft basic primary
5      10741760     21483519    5.1G  Microsoft basic primary
6      21483520     37109759    7.5G  Microsoft basic primary

Error: /dev/vdb: unrecognised disk label

Vorher mklabel verwenden: parted --script /dev/vda mklabel gpt

Built on 2022-06-03