Linux: Festplatten richtig und komfortabel partitionieren

22.02.2005 von Michael Kofler
Unsere Serie führt in die Administration des Linux-Dateisystems ein. Der fünfte Teil beschäftigt sich mit der Partitionierung. Dabei zeigen wir auch, wie Sie die Größe einer Partition ohne Datenverlust verändern können.

Unsere neue Linux-Serie beschreibt die verschiedenen Facetten der Administration des Dateisystems. Mit Ausnahme der ersten beiden Teile richtet sich die Serie explizit an Linux-Profis. Die achtteilige Artikelreihe behandelt dabei folgende Themen:

Die Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als eBook herunterladen.

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten

Gängige Tools zur Partitionierung

Während der Installation bietet beinahe jede Linux-Distribution einfach zu bedienende Werkzeuge zur Partitionierung der Festplatte. Bei manchen Distributionen stehen diese Werkzeuge auch im laufenden Betrieb zur Verfügung, etwa bei Mandrake (diskdrake) oder bei SUSE (YAST-Modul - SYSTEM - PARTITIONIEREN). Wenn das nicht der Fall ist, müssen Sie auf die relativ schwierig zu bedienenden Kommandos fdisk, cfdisk oder parted zurückgreifen, die alle in diesem Beitrag beschrieben werden.

Vorab noch einige Hinweise und Warnungen:

fdisk

fdisk ist seit rund einem Jahrzehnt das klassische Partitionierungsprogramm für Linux. Das Programm ist also ausgereift, aber leider nicht besonders intuitiv zu bedienen. Es kann immer nur eine Festplatte bearbeiten, deren Device-Name beim Start angegeben werden muss (zum Beispiel /dev/hda für die erste IDE-Festplatte, /dev/sdc für die dritte SCSI-Festplatte). Wenn Sie stattdessen die Option -l übergeben, zeigt fdisk eine Liste aller Partitionen auf allen Festplatten an.

Wenn die Festplatte mehr als 1024 Zylinder besitzt - was bei jeder modernen Festplatte der Fall ist -, zeigt fdisk eine Warnung an. Die Warnung betrifft nur die Linux-Bootpartition und gilt nur, wenn Sie ein altes Mainboard (altes BIOS) oder eine sehr alte Version von LILO einsetzen. In aller Regel können Sie die Warnung einfach ignorieren.

Nach dem Start können Sie sich mit "M" (menu) eine kurze Übersicht der zur Verfügung stehenden Kommandos ausgeben lassen. "P" (print) zeigt eine Liste der Partitionen an, die zurzeit auf der ausgewählten Festplatte vorhanden sind.

fdisk-Befehle

Partitionstyp (primär, erweitert oder logisch): Mit "N" (new) können Sie neue Festplattenpartitionen einrichten. Dabei können maximal vier primäre Partitionen eingerichtet werden. Wenn mehr als vier Partitionen verwaltet werden sollen, muss eine der vier primären Partitionen als erweitert (extended) deklariert sein. Im Bereich der erweiterten Partition dürfen Sie dann fast beliebig viele logische Partitionen einrichten (bei SCSI-Platten maximal 12, bei IDE-Platten maximal 60). Falls beim Einrichten einer neuen Festplattenpartition unterschiedliche Typen in Frage kommen (primär, erweitert oder logisch), antwortet fdisk mit einer zusätzlichen Rückfrage bezüglich des Partitionstyps.

Partitionsgröße: Nachdem geklärt ist, welchen Typ die neue Partition haben soll, fragt das Programm, an welcher Stelle die Partition beginnen soll (normalerweise beim ersten freien Zylinder) und wie groß sie sein soll (Endzylinder). Die Größenangabe kann auch bequemer in der Form +nM erfolgen (also +2500M für eine 2500 MByte große Partition).

Wie groß ein Zylinder ist, hängt von der Festplatte, vom BIOS und gegebenenfalls auch vom SCSI-Controller ab. Diese Information finden Sie in der zweiten Zeile der Ausgabe des Kommandos "P". Im später noch gezeigten Beispiel sind es 16.065 * 512 Byte, also 8 MByte.

Nach der Definition einer neuen Partition kann die gesamte Partitionstabelle mit "P" (print) angezeigt werden. Anschließend können weitere Partitionen definiert und bereits definierte Partitionen wieder gelöscht werden.

Partitions-ID: fdisk erzeugt neue Partitionen immer vom Typ Linux native (ID-Nummer 83). Wenn Sie einen anderen Typ benötigen, müssen Sie die ID-Nummer der neu eingerichteten Partition mit "T" (type) ändern. Übliche ID-Nummern sind:

Eine Liste aller verfügbaren ID-Nummern (etwa zur Kennzeichnung einer Partition für ein anderes Betriebssystem) erhalten Sie mit "L".

Weitere fdisk-Befehle

Änderungen speichern: fdisk führt sämtliche Änderungen erst dann aus, wenn Sie das Kommando "W" (write) ausführen. Vorher können Sie mit "V" (verify) überprüfen, ob alle internen Informationen mit der Platte übereinstimmen. Das ist eine zusätzliche Sicherheitskontrolle. Normalerweise besteht die Reaktion auf "V" nur darin, dass die Anzahl der von keiner primären oder logischen Partition erfassten (also noch ungenutzten) Sektoren zu je 512 Byte angezeigt wird.

Wenn Sie sich unsicher sind, können Sie fdisk jederzeit mit "Q" (quit) oder auch mit Strg +C verlassen - Ihre Festplatte bleibt dann unverändert.

Die mit fdisk eingerichteten Partitionen sind noch leer, fdisk installiert kein Dateisystem! Die Kommandos zur Einrichtung eines Dateisystems hängen vom gewünschten Dateisystem ab - etwa mk2fs.ext3 für ein ext3-Dateisystem. Die Kommandos wurden in den vorangegangenen Artikeln vorgestellt. Falls Sie eine Swap-Partition manuell einrichten möchten, finden Sie dort auch diesbezügliche Informationen.

Partition vergrößern: Es ist mit fdisk prinzipiell nicht möglich, die Größe einer existierenden Partition ohne Datenverlust zu verändern. Die einzige Ausnahme liegt dann vor, wenn die zu ändernde Partition die letzte Partition auf der Festplatte oder die letzte logische Partition innerhalb einer erweiterten Partition ist und dahinter noch Platz frei ist. In diesem Fall können Sie diese Partition löschen und anschließend vergrößert neu anlegen.

fdisk verändert nur die Partitionstabelle, lässt die eigentlichen Daten auf der Festplatte aber unberührt. Das bedeutet, dass das Dateisystem in der vergrößerten Partition nicht mitwächst. Damit ist nun ein Teil der Partition ungenutzt. Eine Vergrößerung des Dateisystems ist nur bei manchen Dateisystemen möglich.

Generell ist die Veränderung einer Partition beziehungsweise eines Dateisystems eine sehr gefährliche Operation, die nur Linux-Profis zu empfehlen ist! Führen Sie nach Möglichkeit vorher ein Backup durch!

fdisk-Beispiel

Das folgende Beispiel zeigt, wie auf einer 16 GByte großen Festplatte eine zusätzliche Linux-Partition eingerichtet wird. Bei der Festplatte handelt es sich um die zweite IDE-Festplatte im Rechner. fdisk wird deswegen mit dem Parameter /dev/hdb gestartet.

Das Kommando "P" gibt Auskunft über den aktuellen Zustand der Festplatte. Die Festplatte ist 255 * 63 * 2055 * 512 Byte = 16.120 MByte groß. Ein Zylinder ist 16.065 * 512 Byte = 7,8 MByte groß.

Es gibt eine primäre Partition (13 Zylinder, 102 MByte, FAT-Dateisystem für DOS/Windows) sowie eine erweiterte Partition (alle weiteren Zylinder, 16.018 MByte). Darin befinden sich zurzeit fünf Linux-Datenpartitionen und eine Linux-Swap-Partition. In der erweiterten Partition sind die Sektoren 1334 bis 2055 noch frei (5663 MByte).

root# fdisk /dev/hdb
The number of cylinders for this disk is set to
2055. There is nothing wrong with that, but this
is larger than 1024,and could in certain setups
cause problems with:
1) software that runs at boot time
(e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p
Disk /dev/hdb: 255 heads, 63 sectors, 2055 cylinders
Units = cylinders of 16065 * 512 bytes


Device Boot Start End Blocks Id System
/dev/hdb1 * 1 13 104391 6 FAT16
/dev/hdb2 14 2055 16402365 5 Extended
/dev/hdb5 14 17 32098+ 83 Linux
/dev/hdb6 18 50 265041 82 Linux swap
/dev/hdb7 51 369 2562336 83 Linux
/dev/hdb8 370 687 2554303+ 83 Linux
/dev/hdb9 688 1006 2562336 83 Linux
/dev/hdb10 1007 1333 2626596 83 Linux

Beispiel: Erzeugen der Partition

Mit "N" wird nun eine neue, logische Partition erzeugt. Als Startzylinder wird der erste freie Zylinder verwendet. Die Größe wird mit +1500M angegeben. Anschließend wird die neue Partitionstabelle mit "P" nochmals angezeigt. Es zeigt sich, dass die tatsächliche Größe der neuen Partition 1506 MByte beträgt (weil fdisk auf ganze Zylinder runden muss):

Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l

First cylinder (1334-2055, default 1334): <Return>
Using default value 1334
Last cylinder or +sizeM (1334-2055, default 2055):
+1500M

Command (m for help): p

Disk /dev/hdb: 255 heads, 63 sectors, 2055 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 * 1 13 104391 6 FAT16
/dev/hdb2 14 2055 16402365 5 Extended
/dev/hdb5 14 17 32098+ 83 Linux
/dev/hdb6 18 50 265041 82 Linux swap
/dev/hdb7 51 369 2562336 83 Linux
/dev/hdb8 370 687 2554303+ 83 Linux
/dev/hdb9 688 1006 2562336 83 Linux
/dev/hdb10 1007 1333 2626596 83 Linux
/dev/hdb11 1334 1525 1542208+ 83 Linux

Beispiel: Schreiben der Partition

Mit "W" wird die geänderte Partitionstabelle gespeichert. Da einige andere Partitionen der Festplatte zurzeit genutzt werden, gelingt es nicht, die neue Tabelle korrekt einzulesen. Der Rechner sollte also neu gestartet werden, bevor die neue Partition genutzt wird.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Re-read table failed with error 16: Device or resource busy.
Reboot your system to ensure the partition table is updated.
Syncing disks.

Folgende Tabelle listet nochmals die wichtigsten fdisk-Befehle übersichtlich auf:

fdisk-Tastenkürzel

D

Partition löschen (delete)

L

Partitions-ID-Nummer anzeigen (list)

M

Online-Hilfe (menu)

N

neue Partition anlegen (new)

P

Partitionsliste anzeigen (print)

Q

Programm beenden (ohne die Partitionstabelle zu verändern; quit)

T

Partitionstyp verändern (für Swap-Partition)

V

Partitionstabelle überprüfen (verify)

W

Partitionstabelle ändern (write)

cfdisk

cfdisk ist eine komfortablere Variante von fdisk. Es handelt sich dabei um ein eigenständiges Programm, nicht nur um eine Benutzeroberfläche zu fdisk. Die Bedienung erfolgt mit Cursor-Tasten und über ein Menü. Das Programm zeigt nach dem Start alle gefundenen Partitionen mit ihrer Größe an. Mit den Cursor-Tasten können eine Partition und ein Kommando ausgewählt werden.

Außerdem stehen folgende Tastaturkommandos zur Verfügung:

cfdisk-Tastenkürzel

H

Online-Hilfe anzeigen

N

neue Partition anlegen

D

die ausgewählte Partition löschen

T

den Typ der Partition ändern (für Swap-Partitionen)

Q

Programm beenden (ohne die Partitionstabelle zu verändern)

Shift + W

Partitionstabelle ändern (write)

Unter X funktionieren die Cursor-Tasten in manchen Konsolenfenstern nicht. Diese sind zur Bedienung des Programms aber unbedingt erforderlich. Starten Sie in diesem Fall cfdisk in einem xterm-Fenster oder in einer Textkonsole.

parted und QTparted

Das Programm parted geht über die Funktionen von fdisk beziehungsweise cfdisk weit hinaus. Es kümmert sich nicht nur um die Partitionierung, sondern auch um den Inhalt von Partitionen. Das Programm kann beispielsweise dazu eingesetzt werden, die Größe von Partitionen samt den darin enthaltenen Dateisystemen ohne Datenverlust zu verändern oder um Partitionen zu verschieben.

Trotz der beeindruckenden Funktionspalette dieses Programms ist es bisher kaum verbreitet, was vielleicht an seiner unkomfortablen Bedienung liegt. Die ähnelt fdisk und spricht eher Linux-Profis an.

Beim Start von parted muss das Festplatten-Device angegeben werden (Default: /dev/hda). "h" führt zur Anzeige der zur Auswahl stehenden Kommandos. Mit "h" können Sie zudem einen sehr knappen Hilfetext zu einzelnen Kommandos anzeigen (etwa "h resize").

"P" zeigt die Partitionstabelle an, wobei alle Angaben in MByte erfolgen (immer mit drei Nachkommastellen). Befehle zur Veränderung von Partitionen erwarten als Parameter immer eine so genannte minor-Nummer. Bei IDE-Festplatten handelt es sich dabei einfach um die Device-Nummer (also zum Beispiel 7 für /dev/hdb7).

parted-Beispiel

root# parted /dev/hdb
GNU Parted 1.6.6
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.

Using /dev/hdb

(parted) h <Return>

check MINOR do a simple check on the
filesystem
cp [FROM-DEVICE] FROM-MINOR TO-MINOR
copy filesystem to another
partition
help [COMMAND] prints general help, or help
on COMMAND
mklabel LABEL-TYPE create a new disklabel
(partition table)
mkfs MINOR FS-TYPE make a filesystem FS-TYPE on
partititon MINOR
mkpart PART-TYPE [FS-TYPE] START END
make a partition
mkpartfs PART-TYPE FS-TYPE START END
make a partition with a
filesystem
move MINOR START END move partition MINOR
name MINOR NAME name partition MINOR NAME
print display the partition table
quit exit program
resize MINOR START END resize filesystem on
partition
MINOR
rm MINOR delete partition MINOR
select DEVICE choose the device to edit
set MINOR FLAG STATE change a flag on partition
MINOR


(parted) p
Disk geometry for /dev/hdb: 0.000-29311.734 mbyte
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 101.975 primary FAT
2 101.975 29306.074 extended
5 102.006 203.950 logical ext2
6 203.981 6204.792 logical ntfs
7 6204.823 8205.073 logical FAT
8 8205.104 10707.385 logical ext2
9 10707.416 15209.978 logical ext2
10 15210.009 20206.757 logical ntfs
11 20206.789 23077.749 logical ext2

Weitere Informationen zum Programm sowie eine Download-Möglichkeit finden Sie unter http://www.gnu.org/software/parted/

QTParted

QTParted ist eine komfortable grafische Benutzeroberfläche zu parted. Das Programm steht beispielsweise unter Knoppix zur Verfügung. Der Autor dieses Beitrags hat es nur relativ kurz getestet. Dabei sind beim Versuch, die Größe vorhandener Partitionen zu ändern, diverse Fehlermeldungen aufgetreten.

Davon abgesehen, scheint das Programm aber sehr gut zu funktionieren. Ausführliche FAQs sowie die aktuelle Download-Version finden Sie unter http://qtparted.sourceforge.net/

Ausblick

Nachdem wir in diesem Teil die Partitionierung einer Festplatte vorgestellt haben, geht es in Teil 6 um einen Verbund von mehreren Festplatten: Der Beitrag "RAID unter Linux" zeigt, wie Sie durch das Zusammenschalten mehrerer Festplatten die Geschwindigkeit und Datensicherheit steigern können.

Diese Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als eBook herunterladen. (ala)

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten