Wie man die Größe von ext3 Partitionen anpasst ohne Daten zu verlieren

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Diese Anleitung veranschaulicht, wie man die Größe von ext3 Partitionen anpasst ohne Daten zu verlieren. Sie zeigt, wie man vorhandene ext3 Partitionen verkleinert und vergrößert und wie man zwei ext3 Partitionen vereint. Das kann sehr nützlich sein, wenn man LVM nicht verwendet und feststellt, dass die aktuelle Partitionierung nicht mehr den Vorstellungen entspricht.

Es gibt viele Möglichkeiten dieses Ziel zu erreichen – dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

(Ich führe alle Befehle dieser Anleitung als Root-Benutzer aus, also vergewissere Dich, dass Du als Root angemeldet bist. Wenn Du Dich auf einem Ubuntu System befindest, wirst Du wie folgt zum Root-Benutzer:

sudo su

)

Ich habe dies auf einem Ubuntu Edgy Eft Desktop System getestet, das alle Dateien in einer großen Partition hat (ungefähr 10 GB, Gerät /dev/sda1). Die Partitionierung sieht wie folgt aus:

df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.5G 4.1G 4.9G 46% /
varrun 94M 132K 94M 1% /var/run
varlock 94M 0 94M 0% /var/lock
udev 10M 52K 10M 1% /dev
devshm 94M 0 94M 0% /dev/shm
lrm 94M 18M 77M 19% /lib/modules/2.6.17-10-generic/volatile

Die Partition, die in ihre Größe angepasst werden soll, darf nicht eingehängt sein wenn die Anpassung vorgenommen wird; ganz offensichtlich ist das nicht möglich, wenn es dabei um die Partition geht, die alle wichtigen System-Dateien enthält. Daher laden wir eine Live Linux-CD runter, wie zum Beispiel Knoppix, von der aus wir später starten (wenn Du zu dem System physischen Zugang hast). Wenn es sich um ein entferntes System handelt, zu dem Du keinen Zugang hast, benötigst Du auf diesem System ein Rettungssystem (viele Hostingfirmen bieten heutzutage dedizierte Server mit Rettungssystemen an), mit dem Du starten kannst (anstelle von Knoppix). Dieses Rettungssystem muss folgende Tools haben: fdisk, umount, fsck, tune2fs, e2fsck, resize2fs.

Wenn die Partition, die Du anpassen möchtest, keine System-Dateien beinhaltet (wie zum Beispiel /home Partitionen, Partitionen für Backups, etc.), benötigst Du keine Knoppix Live-CD oder ein Rettungssystem, da dann alle Schritte vom ursprünglichen System aus durchgeführt werden können.

Wenn Du Partitionen auf Produktivsystemen verändern möchtest, dann sichere vorher bitte Deine Dateien, da Du all Deine Dateien verlieren könntest, wenn Du die Größe Deiner neuen Partition falsch kalkulierst (vor allem wenn Du eine Partition verkleinerst)! Du wurdest also gewarnt! Anleitungen über Backups findest Du hier: https://www.howtoforge.com/taxonomy_menu/1/34

Ich werde in dieser Anleitung /dev/sda1 verändern. Wenn Deine Partition anders bezeichnet ist, ersetze bitte /dev/sda1 mit Deinem eigenen Gerät (z.B. /dev/hda5, /dev/sdb3, etc.).

2 Eine ext3 Partition verkleinern

Dieses Kapitel befasst sich mit dem Verkleinern einer ext3 Partition. Ich möchte in diesem Beispiel /dev/sda1 verkleinern. Zunächst tragen wir einige Informationen über unser ursprüngliches System zusammen:

df

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 9859036 4234908 5123304 46% /
varrun 95480 132 95348 1% /var/run
varlock 95480 0 95480 0% /var/lock
udev 10240 52 10188 1% /dev
devshm 95480 0 95480 0% /dev/shm
lrm 95480 17580 77900 19% /lib/modules/2.6.17-10-generic/volatile

df -B 4k

Filesystem 4K-blocks Used Available Use% Mounted on
/dev/sda1 2464759 1058727 1280826 46% /
varrun 23870 33 23837 1% /var/run
varlock 23870 0 23870 0% /var/lock
udev 2560 13 2547 1% /dev
devshm 23870 0 23870 0% /dev/shm
lrm 23870 4395 19475 19% /lib/modules/2.6.17-10-generic/volatile

df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.5G 4.1G 4.9G 46% /
varrun 94M 132K 94M 1% /var/run
varlock 94M 0 94M 0% /var/lock
udev 10M 52K 10M 1% /dev
devshm 94M 0 94M 0% /dev/shm
lrm 94M 18M 77M 19% /lib/modules/2.6.17-10-generic/volatile

fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1247 10016496 83 Linux
/dev/sda2 1248 1305 465885 5 Extended
/dev/sda5 1248 1305 465853+ 82 Linux swap / Solaris

fdisk -s /dev/sda1

10016496

Dann fahren wir das System runter und starten in unsere Knoppix Live-CD (oder Dein Rettungssystem) (wenn die Partition, die Du ändern möchtest, keine System-Dateien enthält, kannst Du alles vom ursprünglichen System aus durchführen; die Schritte sind die gleichen, lass einfach das Starten in Knoppix/Dein Rettungssystem aus).

shutdown -r now

Nachdem Knoppix gestartet ist, öffne eine Terminalfenster und werde Root indem Du Folgendes ausführst

su

/dev/sda1 sollte standardmäßig nicht eingehängt sein, aber um sicher zu gehen, kannst Du dies ausführen

umount /dev/sda1

Führe dann dies aus

fsck -n /dev/sda1

Die Ausgabe sollte wie folgt aussehen:

fsck 1.38 (30-Jun-2005)
e2fsck 1.38 (30-Jun-2005)
/dev/sda1: clean, 159037/1254176 files, 1095299/2504124 blocks

Als Nächstes entfernen wir das Journal von /dev/sda1, auf diese Weise verwandeln wir es in eine ext2 Partition:

tune2fs -O ^has_journal /dev/sda1

Die Ausgabe sieht wie folgt aus:

tune2fs 1.38 (30-Jun-2005)

Führe dann Folgendes aus

e2fsck -f /dev/sda1

e2fsck 1.38 (30-Jun-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: 164178/1254176 files (0.6% non-contiguous), 1051617/2504124 blocks

Nun ändern wir die Größe unseres Dateisystems mit resize2fs. resize2fs kann ext2 Dateisysteme ändern, aber keine ext3 Dateisysteme. Daher mussten wir /dev/sda1 in ext2 umwandeln. Zur Zeit werden  4.1GB auf  /dev/sda1 verwendet (siehe die obige df -h Ausgabe). Es ist also in Ordnung sie von 10GB auf 6GB zu verkleinern (wenn Du sie kleiner als 4.1GB machst, wirst Du Daten verlieren!). Daher führen wir dies aus

resize2fs /dev/sda1 6000M

Die Ausgabe ist wie folgt:

resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/sda1 to 1536000 (4k) blocks.
The filesystem on /dev/sda1 is now 1536000 blocks long.

Bitte notiere Dir die Anzahl von Blocks (1536000) und deren Größe (4k). Wir benötigen das gleich.

Nun löschen wir unsere /dev/sda1 Partition (hab keine Angst, es werden keine Daten verloren gehen) und erstellen eine neue, kleinere Partition (aber immer noch groß genug für unser verändertes Dateisystem!). Dies können wir mit fdisk ausführen:

fdisk /dev/sda

(Ja, es ist /dev/sda nicht /dev/sda1.)

The number of cylinders for this disk is set to 1305.
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)

Tippe m um eine Liste aller Befehl anzeigen zu lassen:

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Nun löschen wir Partition Nr. 1 (/dev/sda1):

Command (m for help): d
Partition number (1-5): 1

Als Nächstes erstellen wir eine neue /dev/sda1 Partition. Vorher war es eine primäre Partition, also wählen wir wieder p  und schon ist es wieder unsere Partition Nr. 1:

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

Nun kommt der kritische Part – wir werden nach der Größe unserer neuen Partition gefragt. Der erste Zylinder ist kein Problem, es ist der von der fdisk -l Ausgabe am Anfang dieses Kapitels (1).

First cylinder (1-1305, default 1): 1

Allerdings haben wir keinen Wert für den letzten Zylinder unserer neuen Partition. Glücklicherweise können wir die Größe in Kilobytes (K) angeben, also berechnen wir die Größe wie folgt:

Wir multiplizieren die Anzahl der Blocks der resize2fs Ausgabe (1536000) mit der Größe eines Blocks (4k) und um sicher zu gehen, dass die Partition groß genug ist, fügen wir 3 bis 5% hinzu (3% hat bei mir gereicht, aber wenn Du sicher gehen willst, dann nimm 5%):

1536000 * 4k * 1.03 = 6328320k

Also stellen wir dem Wert ein + Zeichen voran und ersetzen das kleine k mit einem Großbuchstaben (K) und geben es ein:

Last cylinder or +size or +sizeM or +sizeK (1-1247, default 1247): +6328320K

Unsere originale /dev/sda1 hatte eine Boot Flag (siehe fdisk -l Ausgabe zu Beginn des Kapitels), also müssen wir sie unserer neuen /dev/sda1 hinzufügen:

Command (m for help): a
Partition number (1-5): 1

Lass uns nun unsere neue Partitionstabelle schreiben und beenden fdisk:

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Nun starten wir das System neu und starten wieder in unser Knoppix System (Rettungssystem; ursprüngliches System wenn die geänderte Partition keine System-Dateien enthält):

shutdown -r now

Werde wieder Root-Benutzer (führe auf Knoppix dies aus

su

)

und führe dann Folgendes aus:

fsck -n /dev/sda1

Das könnte dich auch interessieren …