Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:partitionierung [2019/08/15 09:53] dhoppe [Übung: virtuelle Festplatte partitionieren] |
admin_grundlagen:partitionierung [2025/09/09 22:08] (aktuell) ingo_wichmann |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
lsblk | lsblk | ||
- | ===== Kernel Partitionsliste aktualisieren ===== | + | ====== Partitionierung ====== |
- | Nach Änderungen an einem Boot-Datenträger. (Im Paket parted) | + | ===== Format der Partitionstabelle ===== |
+ | Das lange unter Linux gebräuchliche [[wpde>Master Boot Record|MSDOS oder MBR]] Format kann man nur bei Festplatten unter 2TB verwenden. Es ist komplizierter zu benutzen(( zumindest wenn man mehr als 4 Partitionen anlegen will)). Wenn man wie bei aktuellen Rechnern üblich eine [[wpde>Unified Extensible Firmware Interface|UEFI]] Firmware an Stelle des [[wpde>BIOS]] vorfindet, muss man für die Partitionstabelle [[wpde>GUID Partition Table|GPT]] verwenden. Labels sind nützlich, wenn man mehrere Festplatten eingebaut hat - die gibt es nicht bei MBR Partitionen. | ||
+ | |||
+ | Tools: | ||
+ | * fdisk - MBR und GPT Partitionstabellen | ||
+ | * gdisk - Spezialist für GPT Partitionstabellen | ||
+ | * parted - MBR und GPT Partitionstabellen | ||
+ | |||
+ | ===== Beispiel: neue Partition anlegen ===== | ||
+ | ==== mit gdisk ==== | ||
+ | ++++ Wichtige gdisk Befehle | | ||
+ | | ? | Hilfe | | ||
+ | | d | Partition löschen | | ||
+ | | n | neue Partition erstellen | | ||
+ | | t | Typ der Partition setzen | | ||
+ | | c | Name/Label der Partition setzen | | ||
+ | | p | Partitionstabelle anzeigen | | ||
+ | | w | geänderte Partitionstabelle speichern | | ||
+ | | q | gdisk verlassen ohne zu speichern | | ||
+ | ++++ | ||
+ | === Benötigte Pakete === | ||
+ | * Debian: ''gdisk'' | ||
+ | |||
+ | === Partition erstellen === | ||
+ | [[wpde>Byte#Vergleich|2 Gigibyte]] große Partition auf Festplatte ''/dev/sda'' anlegen: | ||
+ | gdisk /dev/sda | ||
+ | Aktuelle Partitionstabelle anzeigen: | ||
+ | p | ||
+ | Neue Partition erstellen: | ||
+ | n | ||
+ | Startblock auswählen: //Bei der ersten Partition sollte hier Sektor 2048 oder ein Vielfaches davon stehen// | ||
+ | |||
+ | Größe angeben: | ||
+ | +2G | ||
+ | Label ändern: | ||
+ | c | ||
+ | Name eingeben: ((Wenn in dem Computer viele Festplatten eingebaut sind, dann wird man wahrscheinlich nur eine Partition anlegen und den Platz mit [[LVM]], [[RAID]], [[lpi2:btrfs]] oder [[ZFS]] verwalten. Dann ist ein Namensschema nützlich, z.B. f/b für Front/Back,r0 für Reihe 0 von oben und c0 für Spalte 0 von links)) | ||
+ | fr0c0 | ||
+ | geänderte Partitionstabelle speichern: | ||
+ | w | ||
+ | |||
+ | === Prüfen, ob der Kernel die geänderte Partitionstabelle kennt == | ||
+ | cat /proc/partitions | ||
+ | Wenn nicht, Kernel Partitionstabelle neu einlesen lassen: | ||
+ | blockdev --rereadpt /dev/sda | ||
+ | ((oder | ||
partprobe | partprobe | ||
- | ====== Format der Partitionstabelle ====== | + | )) |
- | Das lange unter Linux gebräuchliche MSDOS oder [[wpde>Master Boot Record|MBR]] Format sollte man nur bei Festplatten unter 2TB verwenden. Für größere Festplatten, und wenn man wie bei aktuellen Rechnern üblich eine [[wpde>Unified Extensible Firmware Interface|UEFI]] Firmware an Stelle des [[wpde>BIOS]] vorfindet, sollte man für die Partitionstabelle [[wpde>GUID Partition Table|GPT]] verwenden. | + | ==== mit fdisk ==== |
+ | ++++ Wichtige fdisk Befehle | | ||
+ | | m | Hilfe | | ||
+ | | d | Partition löschen | | ||
+ | | n | neue Partition erstellen | | ||
+ | | t | Typ der Partition setzen | | ||
+ | | p | Partitionstabelle anzeigen | | ||
+ | | w | geänderte Partitionstabelle speichern | | ||
+ | | q | fdisk verlassen ohne zu speichern | | ||
+ | ++++ | ||
+ | === Benötigte Pakete === | ||
+ | * Debian: ''util-linux'' | ||
+ | === Partition erstellen === | ||
+ | [[wpde>Byte#Vergleich|2 Gigibyte]] große Partition auf Festplatte ''/dev/sda'' anlegen: | ||
+ | fdisk /dev/sda | ||
+ | Aktuelle Partitionstabelle anzeigen: | ||
+ | p | ||
+ | Neue Partition erstellen: | ||
+ | n | ||
+ | Partition als logische Partition erstellen (//nur bei MSDOS/MBR//): | ||
+ | l | ||
+ | Startblock auswählen: //Bei der ersten Partition sollte hier Sektor 2048 oder ein Vielfaches davon stehen. Wenn die Sektorgröße 512 Bytes ist, dann liegt der Partitionsbeginn bei 1048576 Bytes ([[wpde>Mebibyte|=1 MiB]]).// | ||
+ | |||
+ | Größe angeben: | ||
+ | +2G | ||
+ | geänderte Partitionstabelle speichern: | ||
+ | w | ||
+ | |||
+ | === Prüfen, ob der Kernel die geänderte Partitionstabelle kennt == | ||
+ | cat /proc/partitions | ||
+ | Wenn nicht, Kernel Partitionstabelle neu einlesen lassen: | ||
+ | blockdev --rereadpt /dev/sda | ||
+ | ((oder | ||
+ | partprobe | ||
+ | )) | ||
+ | |||
+ | ==== mit parted ==== | ||
+ | ++++ Wichtige parted Befehle | | ||
+ | | help | Hilfe | | ||
+ | | rm | Partition löschen | | ||
+ | | mklabel | neue Partitionstabelle erstellen | | ||
+ | | mkpart | neue Partition erstellen | | ||
+ | | set | Typ der Partition setzen | | ||
+ | | print | Partitionstabelle anzeigen | | ||
+ | | quit | fdisk verlassen ohne zu speichern | | ||
+ | ++++ | ||
+ | === Benötigte Pakete === | ||
+ | * Debian: ''parted'' | ||
+ | |||
+ | === Partition erstellen === | ||
+ | 2 Gibibyte große Partition auf Festplatte ''/dev/sda'' anlegen: | ||
+ | parted /dev/sda | ||
+ | Aktuelle Partitionierung ausgeben: | ||
+ | |||
+ | Neue Partition erstellen: | ||
+ | mkpart | ||
+ | Partition type? primary/logical? | ||
+ | l | ||
+ | File system type? | ||
+ | ext3 | ||
+ | Start? | ||
+ | xxx | ||
+ | End? | ||
+ | xxx | ||
+ | Parted verlassen: | ||
+ | quit | ||
+ | |||
+ | ====== Partitionstabelle sichern und wiederherstellen ====== | ||
+ | ==== sfdisk ==== | ||
+ | === sichern === | ||
+ | sfdisk -d /dev/sda > part-table.txt | ||
+ | === wiederherstellen === | ||
+ | sfdisk /dev/sda < part-table.txt | ||
+ | |||
+ | ==== sgdisk ==== | ||
+ | nur für GPT Partitionen | ||
+ | === sichern === | ||
+ | sgdisk --backup=sda.gpt.bkup /dev/sda | ||
+ | === wiederherstellen === | ||
+ | sgdisk --load-backup=sda.gpt.bkup /dev/sda | ||
+ | |||
+ | ==== dd ==== | ||
+ | geht nur bei identischer Festplatte | ||
+ | === sichern === | ||
+ | dd if=/dev/sda of=part-table.img bs=1 count=512 | ||
+ | === wiederherstellen === | ||
+ | dd if=part-table.img of=/dev/sda bs=1 count=64 skip=446 seek=446 | ||
+ | |||
+ | ==== fdisk ==== | ||
+ | === sichern === | ||
+ | fdisk -l > partitionierung.txt | ||
+ | === wiederherstellen === | ||
+ | geht nur von Hand | ||
+ | |||
+ | ==== gdisk ==== | ||
+ | === sichern === | ||
+ | gdisk -l > partitionierung.txt | ||
+ | === wiederherstellen === | ||
+ | geht nur von Hand | ||
+ | |||
+ | ==== parted ==== | ||
+ | === sichern === | ||
+ | parted /dev/sda print > partitionierung.txt | ||
+ | === wiederherstellen === | ||
+ | geht nur von Hand | ||
====== Übung: default-Werte für mount-Optionen herausfinden ====== | ====== Übung: default-Werte für mount-Optionen herausfinden ====== | ||
Test-Image erstellen und mounten: | Test-Image erstellen und mounten: | ||
+ | fallocate -l 500M /tmp/zero.img | ||
+ | (( | ||
+ | oder | ||
dd if=/dev/zero of=/tmp/zero.img bs=1M seek=500 count=0 | dd if=/dev/zero of=/tmp/zero.img bs=1M seek=500 count=0 | ||
+ | oder | ||
+ | dd if=/dev/zero of=/tmp/zero.img bs=1M 500 | ||
+ | )) | ||
mkfs.ext4 /tmp/zero.img | mkfs.ext4 /tmp/zero.img | ||
mkdir /mnt/img | mkdir /mnt/img | ||
Zeile 39: | Zeile 194: | ||
* Debian 8: ''parted qemu-utils'' | * Debian 8: ''parted qemu-utils'' | ||
* openSUSE 42.2: ''parted qemu-tools'' | * openSUSE 42.2: ''parted qemu-tools'' | ||
+ | |||
+ | ===== Beispiel: Loop-Devices mit Sparse-Files ===== | ||
+ | Nicht in der Praxis ;-) | ||
+ | |||
+ | == Sparse-File erzeugen == | ||
+ | dd if=/dev/zero of=disc1 bs=1K count=0 seek=200M | ||
+ | ls -lsh disc* | ||
+ | losetup -f disc1 --show | ||
+ | losetup -a | ||
+ | |||
+ | == Loop-Devices partitionieren == | ||
+ | lsblk | ||
+ | {fdisk,gdisk,parted} /dev/loopxx | ||
+ | |||
+ | == Partitionen sichtbar machen == | ||
+ | partprobe | ||
+ | partprobe /dev/loopxx | ||
===== Beispiel: GPT mit parted ===== | ===== Beispiel: GPT mit parted ===== | ||
Zeile 82: | Zeile 254: | ||
| | ||
TODO: formatieren, vergrößern | TODO: formatieren, vergrößern | ||
- | ====== Partitionstabelle sichern und wiederherstellen ====== | ||
- | ==== sfdisk ==== | ||
- | für MBR-partitionierte Blockgeräte | ||
- | === sichern === | ||
- | sfdisk -d /dev/sda > part-table.txt | ||
- | === wiederherstellen === | ||
- | sfdisk /dev/sda < part-table.txt | ||
- | |||
- | ==== sgdisk ==== | ||
- | für GPT Partitionen | ||
- | === sichern === | ||
- | sgdisk --backup=sda.gpt.bkup /dev/sda | ||
- | === wiederherstellen === | ||
- | sgdisk --load-backup=sda.gpt.bkup /dev/sda | ||
- | |||
- | ==== dd ==== | ||
- | geht nur bei identischer Festplatte | ||
- | === sichern === | ||
- | dd if=/dev/sda of=part-table.img bs=1 count=512 | ||
- | === wiederherstellen === | ||
- | dd if=part-table.img of=/dev/sda bs=1 count=64 skip=446 seek=446 | ||
- | ==== fdisk ==== | ||
- | === sichern === | ||
- | fdisk -l > partitionierung.txt | ||
- | === wiederherstellen === | ||
- | geht nur von Hand | ||
- | |||
- | ==== gdisk ==== | ||
- | === sichern === | ||
- | gdisk -l > partitionierung.txt | ||
- | === wiederherstellen === | ||
- | geht nur von Hand | ||
- | |||
- | |||
- | ==== parted ==== | ||
- | === sichern === | ||
- | parted /dev/sda print > partitionierung.txt | ||
- | === wiederherstellen === | ||
- | geht nur von Hand | ||
- | |||
- | Leere Partitionstabelle erstellen: | ||
- | parted /dev/sda mklabel | ||
- | msdos | ||
- | oder | ||
- | gpt | ||
- | Partitionierung [[partitionierung#beispielneue_partition_anlegen| von Hand anlegen]] | ||
- | |||
- | ====== Partitionierung ====== | ||
- | ===== fdisk/gdisk ===== | ||
- | fdisk - ausschließlich MBR-Partitionierte Blockgeräte\\ | ||
- | gdisk - GPT Blockgeräte | ||
- | ==== Benötigte Pakete ==== | ||
- | Debian: | ||
- | util-linux | ||
- | === Wichtige fdisk Befehle === | ||
- | | m | Hilfe | | ||
- | | d | Partition löschen | | ||
- | | n | neue Partition erstellen | | ||
- | | t | Typ der Partition setzen | | ||
- | | p | Partitionstabelle anzeigen | | ||
- | | w | geänderte Partitionstabelle speichern | | ||
- | | q | fdisk verlassen ohne zu speichern | | ||
- | |||
- | ==== Beispiel: neue Partition anlegen ==== | ||
- | 2100 MByte große Partition auf Festplatte ''/dev/sda'' anlegen: | ||
- | fdisk /dev/sda | ||
- | Neue Partition erstellen: | ||
- | n | ||
- | Partition als logische Partition erstellen: | ||
- | l | ||
- | Startblock auswählen: | ||
- | |||
- | //Bei der ersten Partition sollte hier Sektor 2048 oder ein Vielfaches davon stehen. Wenn die Sektorgröße 512 Bytes ist, dann liegt der Partitionsbeginn bei 1048576 Bytes ([[wpde>Mebibyte|=1 MiB]]). Bei virtuellen Maschinen kann man hier auch 0 angeben.// | ||
- | |||
- | Größe angeben: | ||
- | +2100M | ||
- | geänderte Partitionstabelle speichern: | ||
- | w | ||
- | Alte Kerneltabelle ansehen: | ||
- | cat /proc/partitions | ||
- | Kernel Partitionstabelle neu einlesen lassen: | ||
- | partprobe | ||
- | ((oder | ||
- | blockdev --rereadpt /dev/sda | ||
- | )) | ||
- | |||
- | Neue Kerneltabelle prüfen: | ||
- | cat /proc/partitions | ||
- | |||
- | ===== Mit parted ===== | ||
- | ==== Benötigte Pakete ==== | ||
- | Debian: | ||
- | parted | ||
- | |||
- | === Wichtige parted Befehle === | ||
- | | help | Hilfe | | ||
- | | rm | Partition löschen | | ||
- | | mklabel | neue Partitionstabelle erstellen | | ||
- | | mkpart | neue Partition erstellen | | ||
- | | set | Typ der Partition setzen | | ||
- | | print | Partitionstabelle anzeigen | | ||
- | | quit | fdisk verlassen ohne zu speichern | | ||
- | |||
- | ==== Beispiel: neue Partition anlegen ==== | ||
- | 2100 MByte große Partition auf Festplatte ''/dev/sda'' anlegen: | ||
- | parted /dev/sda | ||
- | Aktuelle Partitionierung ausgeben: | ||
- | |||
- | Neue Partition erstellen: | ||
- | mkpart | ||
- | Partition type? primary/logical? | ||
- | l | ||
- | File system type? | ||
- | ext3 | ||
- | Start? | ||
- | 16500 | ||
- | End? | ||
- | 19077 | ||
- | Parted verlassen: | ||
- | quit | ||
- | |||
- | === Fehlermeldung: The resulting partition is not properly aligned for best performance === | ||
- | eine Lösung wird nicht mehr Bereitgestellt | ||
- | |||
- | ==== Beispiel: lesend genutztes Verzeichnis im laufenden Betrieb auf neue Partition verschieben ==== | ||
- | Partition anlegen: | ||
- | parted /dev/sda | ||
- | |||
- | mkpart | ||
- | quit | ||
- | Mountpoint anlegen und temporär mounten | ||
- | mkfs.ext4 /dev/sda6 | ||
- | mkdir /mnt/sda6 | ||
- | mount /dev/sda6 /mnt/sda6 | ||
- | Daten in die neue Partition kopieren: | ||
- | cp -a /usr/bin/. /mnt/sda6 | ||
- | Kopie überprüfen: | ||
- | ( cd /usr/bin; tar c . ) | ( cd /mnt/sda6; tar d . ) | ||
- | Partition wieder aushängen | ||
- | umount /mnt/sda6 | ||
- | Partition endgültig mounten: | ||
- | mount /dev/sda6 /usr/bin | ||
- | tail -n 1 /etc/mtab >> /etc/fstab | ||
- | Daten auf Orginalpartition löschen: | ||
- | mkdir /mnt/original | ||
- | mount --bind / /mnt/original | ||
- | shopt -s dotglob | ||
- | rm /mnt/original/usr/bin/* | ||
- | ls -la /mnt/original/usr/bin | ||
- | umount /mnt/original | ||
- | |||