23.5parted-Kommando

parted ist das wichtigste Partitionierungswerkzeug für Linux auf Kommandoebene. Es kommt sowohl mit MBR- als auch mit GPT-Partitionen zurecht. Details zu den vielen Funktionen von parted finden Sie unter:

http://www.gnu.org/software/parted

fdisk – Ein Relikt aus der Vergangenheit

Als Alternative zu parted ist bis heute auch fdisk beliebt. Da sich fdisk aber nur für Datenträger mit MBR-Partitionen eignet, gehe ich in diesem Buch auf fdisk nicht mehr ein.

Bearbeiten Sie mit parted nur die Partitionen, nicht deren Inhalt!

parted kennt diverse Kommandos, die nicht nur die Partitionen bearbeiten, sondern auch das darauf enthaltene Dateisystem. Das Handbuch rät von der Benutzung dieser Kommandos ab, und in zukünftigen parted-Versionen sollen diese Kommandos ganz eliminiert werden. Verwenden Sie parted nur zur Partitionierung! Um Dateisysteme einzurichten oder zu verändern, verwenden Sie besser die dafür vorgesehenen Kommandos außerhalb von parted, z.B. mkfs.ext4 oder resize2fs.

Beim Start von parted geben Sie das Festplatten-Device an. help oder auch kurz h führt zur Anzeige der zur Auswahl stehenden Kommandos. h kommando liefert einen knappen Hilfetext zu den einzelnen Kommandos. print zeigt die Partitionstabelle an – hier für eine 1,5-TByte-Festplatte, die bereits drei Partitionen enthält:

root# parted /dev/sda (parted) print Modell: ATA WDC WD15EARS-00Z (scsi) Festplatte /dev/sda: 1500GB Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Anzahl Beginn Ende Größe Typ Dateisystem Flags 1 1049kB 50,0GB 50,0GB primary ext4 boot 2 50,0GB 52,0GB 2000MB primary linux-swap(v1) 3 52,0GB 84,2GB 32,2GB primary

Standardmäßig zeigt parted Partitionsgrenzen und -größen in dezimalen Maßeinheiten an, also in MB = 106 Byte oder GB = 109 Byte. Eingaben ohne Maßeinheit werden als dezimale MByte interpretiert. Sie können auch explizit die gewünschte Einheit angeben – beispielsweise 100MiB (binäre MByte) oder 15GB (dezimale GByte).

Mit unit können Sie die gewünschte Maßeinheit für alle Ein- und Ausgaben festlegen. Mögliche Einstellungen sind MB und GB, MiB und GiB (binäre Zählweise, also GiB = 230 Byte) sowie % für Prozentangaben relativ zur Größe der Festplatte.

(parted) unit MiB (parted) print ... Festplatte /dev/sda: 1397GiB ... Anzahl Beginn Ende Größe Typ Dateisystem Flags 1 1,00MiB 47684MiB 47683MiB primary ext4 boot 2 47684MiB 49591MiB 1907MiB primary linux-swap(v1) 3 49591MiB 80311MiB 30720MiB primary

Wenn die Festplatte noch vollkommen ungenutzt ist und keine Partitionstabelle enthält, müssen Sie diese einrichten. Dazu führen Sie mklabel msdos für MBR-Partitionen oder mklabel gpt für GPT-Partitionen aus. Beachten Sie, dass Sie mit mklabel alle bisher vielleicht gespeicherten Daten der Festplatte verlieren!

Mit den Kommandos mkpart bzw. rm erzeugen bzw. löschen Sie Partitionen. Bei mkpart müssen Sie bei MBR-Partitionen den Typ (primary, extended oder logical) sowie die gewünschte Start- und Endposition angeben. Bei GPT-Partitionen wird der erste Parameter als frei wählbarer Partitionsname interpretiert.

(parted) mkpart primary 1MiB 10GiB (MBR) (parted) mkpart part1 1MiB 10GiB (GPT)

Arbeiten ohne Undo-Funktion

Im Gegensatz zu fdisk, wo alle durchzuführenden Änderung nur vorgemerkt und erst mit dem Write-Kommando tatsächlich ausgeführt werden, führt parted jedes Partitionierkommando sofort aus!

Achten Sie immer darauf, dass Sie die richtige Festplatte bearbeiten. Wenn Sie beim Start von parted kein Device angeben, verwendet parted automatisch /dev/sda. Das ist möglicherweise nicht beabsichtigt.

Ärgerlicherweise macht es parted Nutzern extrem schwer, aneinanderliegende Partitionen zu definieren: Das folgende Kommando zeigt den Versuch, der gerade angelegten ersten Partition eine zweite hinzuzufügen, wobei die zweite Partition dort beginnen soll, wo die erste Partition endet:

(parted) mkpart primary 10GiB 15GiB (MBR) (parted) mkpart part2 10GiB 15GiB (GPT) Warnung: Sie wollen eine Partition von 10,7GB bis 16,1GB (Sektoren 20971520..31457280). Das Beste, was Parted bieten kann, ist von 10,7GB nach 16,1GB (Sektoren 20971521..31457280). Ist dies noch akzeptabel für Sie? Ja/Yes/Nein/No? No

parted quittiert das Kommando mit der Warnung, dass der Start der zweiten Partition um einen Sektor (in der Regel 512 Byte) verschoben werden muss, und fragt, ob das für Sie akzeptabel ist. Das ist es eben gerade nicht, weil Partitionen auf modernen Festplatten und SSDs unbedingt an 4k-Byte-Grenzen ausgerichtet sein sollen.

Nachdem Sie das Erzeugen der neuen Partition also abgelehnt haben, versuchen Sie es neuerlich, wobei Sie den Startpunkt diesmal aber in der Einheit MiB angeben und dabei zur vorherigen Partition eine Lücke von einem MByte frei lassen. Die Startposition 10241 ergibt sich aus der Rechnung 1024×10 + 1, weil jedes GiB aus 1024 MiB besteht.

(parted) mkpart primary 10241MiB 15GiB (MBR) (parted) mkpart part2 10241MiB 15GiB (GPT)

Je größer der Datenträger, desto mühsamer wird das korrekte Berechnen der Startpunkte. Das können Sie sich ersparen, wenn Sie MiB als Einheit vorgeben und mit print die aktuelle Partitionstabelle ansehen. Die Spalte Ende gibt an, wo die jeweilige Partition endet. Zu diesem Wert addieren Sie 1 – und schon haben Sie den Startpunkt für die nächste Partition. Der Nachteil dieser Einstellung offenbart sich allerdings bei großen Datenträgern mit sechsstelligen und entsprechend unübersichtlichen MiB-Werten.

(parted) unit MiB (parted) print ... Nummer Anfang Ende Größe Typ Dateisystem Flags 1 1,00MiB 10240MiB 10239MiB primary LBA 2 10241MiB 15360MiB 5119MiB primary LBA

Normalerweise erzeugt mkpart Partitionen, die später ein Linux-Dateisystem aufnehmen. Dieser Partitionstyp ist auch für Software-RAID und LVM geeignet. Wenn Sie hingegen eine Swap- oder eine Windows-Partition erzeugen möchten, müssen Sie in einem zusätzlichen Parameter vor der Startposition den Dateisystemtyp angeben, z.B. linux-swap, fat32 oder ntfs. Weitere mögliche Dateisystemtypen liefert help mkpart.

(parted) mkpart primary linux-swap 1MiB 10GiB (MBR) (parted) mkpart part1 linux-swap 1MiB 10GiB (GPT)

Bevor Sie eine logische Partition auf einem MBR-Datenträger erzeugen können, müssen Sie eine erweiterte Partition anlegen (mkpart extended start ende). Gegebenenfalls können eine schon vorhandene erweiterte Partition mit resize vergrößern, sofern am Ende der erweiterten Partition noch freier Platz auf dem Datenträger ist. Das Kommando resize kann aber nicht für andere Partitionsarten verwendet werden.

Um eine Partition zu löschen, ermitteln Sie zuerst mit print die Nummern aller Partitionen. Anschließend löschen Sie mit rm n die gewünschte Partition, wobei n eine Partitionsnummer laut print ist.

Beim Löschen einer Partition gehen vorerst noch keine Daten verloren. Deswegen ist es prinzipiell möglich, diesen Schritt rückgängig zu machen, indem Sie die Partition mit exakt demselben Start- und Endpunkt neuerlich erzeugen. Das Problem dabei ist allerdings die Positionsangabe – diese muss auf den Sektor genau stimmen.

Wenn Sie die neue Partition als Teil eines LVM- oder RAID-Systems nutzen möchten, müssen Sie Zusatzattribute (Flags) entsprechend einstellen. Das erforderliche Kommando lautet set partitionsnummer attributname on/off. Mögliche Attribute sind unter anderem boot, lvm, raid und bios_grub.

(parted) set 3 lvm on

Um mit parted eine EFI-Partition auf einem GPT-Datenträger einzurichten, verwenden Sie als Partitionstyp fat32 und die Flags boot und esp:

(parted) mkpart part1 fat32 1mib 100mib (parted) set 1 boot on (parted) set 1 esp on

Wenn Sie eine Partition irrtümlich gelöscht haben, können Sie mit rescue versuchen, diese Partition wiederherzustellen. Dabei müssen Sie den ungefähren Start- und Endpunkt der Partition angeben. parted durchsucht den Datenträger dann nach bekannten Dateisystemen. Diese Suche gelingt umso schneller, je genauer Start- und Endpunkt sind. Wenn parted fündig wird, bietet es an, diese Partition wieder in die Partitionstabelle einzutragen:

root# (parted) rescue 1mib 18gib Suche nach Dateisystemen... Informationen: Eine ext4 primary-Partition wurde bei 1049kB -> 17,2GB gefunden. Wollen Sie diese Partition zur Partitionstabelle hinzufügen? Ja/Yes/Nein/No/Abbrechen/Cancel? ja Fehler: Der/die Partition(en) auf /dev/sda wurden geschrieben, aber es war nicht möglich, den Kernel über die Änderungen zu informieren, weil sie wahrscheinlich in Benutzung sind. Daher werden die alten Partitionen noch benutzt. Sie sollten nun den Rechner neu starten, bevor Sie weitere Änderungen vornehmen. Ignorieren/Ignore/Abbrechen/Cancel? ignorieren

Erwarten Sie keine Wunder vom Rescue-Kommando. Es kann nur dann zum Erfolg führen, wenn das Dateisystem unbeschädigt ist und nicht z.B. durch andere, überlappend platzierte Dateisysteme bereits teilweise überschrieben wurde.

Beispiel 1 (MBR)

Die folgenden Kommandos richten zuerst eine primäre Partition (500 MiB), dann eine erweiterte Partition (19,5 GiB) und darin eine logische Partition in derselben Größe ein. Beachten Sie, dass der Startpunkt für die logische Partition um 1 MiB größer ist als der Startpunkt der erweiterten Partition. Dadurch entsteht zwar eine kleine, ungenutzte Lücke, dafür sind die Partitionen aber optimal ausgerichtet.

root# parted /dev/sdb (parted) mklabel msdos (parted) mkpart primary 1mib 500mib (parted) mkpart extended 500mib 20gib (parted) mkpart logical 501mib 20gib (parted) unit GiB (parted) print Nummer Anfang Ende Größe Typ Dateisystem Flags 1 0,00GiB 0,49GiB 0,49GiB primary 2 0,49GiB 20,0GiB 19,5GiB extended LBA 5 0,49GiB 20,0GiB 19,5GiB logical

Nun soll auf der Festplatte eine weitere logische Swap-Partition eingerichtet werden. Dazu muss zuerst die erweiterte Partition vergrößert werden. resize zeigt dabei eine vollkommen irreführende Warnung an – eine erweiterte Partition enthält ja ohnedies nie ein Dateisystem:

(parted) resize 2 0,49GiB 21GiB WARNUNG: Sie versuchen parted auf einem Dateisystem (resize) zu verwenden ... (parted) mkpart logical linux-swap 20GiB 21GiB (parted) unit GiB (parted) print Nummer Anfang Ende Größe Typ Dateisystem Flags 1 0,00GiB 0,49GiB 0,49GiB primary 2 0,49GiB 21,0GiB 20,5GiB extended LBA 5 0,49GiB 20,0GiB 19,5GiB logical 6 20,0GiB 21,0GiB 1,00GiB logical

Beispiel 2 (GPT)

In einem zweiten Beispiel sollen auf einer Festplatte mit GPT zwei Partitionen eingerichtet werden, von denen eine später als Physical Volume für ein LVM-System dienen wird:

root# (parted) mklabel gpt (parted) mkpart part1 1mib 2000mib (parted) mkpart part2 2001mib 64000mib (parted) set 2 lvm on (parted) print Nummer Anfang Ende Größe Dateisystem Name Flags 1 0,00GiB 2,00GiB 2,00GiB part1 2 2,00GiB 64,0GiB 62,0GiB part2 LVM