e2fsck

Es steht eine Vergrößerung der Festplatte eines Datenbankservers an. Der Server ist virtualisiert und die Vergrößerung der Festplatte ist über VMWare recht einfach. Wenn es sich bei dem Festplatten-Kontroller im einen SCSI-Controller handelt kann man die Festplatte direkt bearbeiten und die neue Größe einstellen. Nach der Veränderung muss das System einmal neugestartet werden, damit die neue Größe der Festplatte angezeigt wird.

Man kann dies mit cfdisk /dev/sdb kontrollieren. Wobei sdb die jeweilige Festplatte ist. Bevor die Festplatte vergrößert wird, ist ein Backup zu machen, sonst kann im Falle eines Fehlers ein Datenverlust drohen.

Mittels parted /dev/sdb kann man die Konsole von parted öffnen. Eine Befehlsübersicht bekommt man mit dem Befehl „help“.

Wenn man alle Partitionen sehen möchte kann man den Befehl „print“ eingeben. Nun sieht man die Partitionen mit ihren Start- und Endpunkten, die Größe, den Typ und das Dateisystem.

root@test-debian:~# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 15,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  15,0GB  15,0GB  primary  ext2

Nun kann mit resize minor start end die Festplatte vergrößert oder verkleinert werden. Minor ist hierbei die Partitions-nummer. In unserem Fall die 1. Start sollte immer der gleiche sein, der schon angegeben ist. Wenn es sich um die erste Partition handelt ist der Start 0. Ende ist die Größe in MB. Wenn wir also wie auf dem Bild zu sehen von 14GB  auf 20 GB vergrößern wollen, geben wir folgendes ein:

(parted) resize 1 0 20000

Wenn parted feststellt, dass etwas mit der Eingabe oder den Voraussetzungen nicht stimmt, meldet parted dies. Ein Fehler ist z.B. wenn das Laufwerk gemountet ist:

WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Error: Partition /dev/sdb1 is being used. You must unmount it before you modify it
with Parted.

Ein weiterer Fehler ist, wenn die angegebene Größe größer ist, als die Festplatte:

(parted) resize 1 0 25000
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Error: The location 25000 is outside of the device /dev/sdb.

Standardmäßig sollte ein resize nicht funktionieren, da auf dem Dateisystem (z.B. ext2, ext3) Features aktiviert sind, die ein Resize verhindern. Diese müssen erst entfernt werden um die Festplatte zu vergrößern. Nach dem vergrößern werden die Features wieder aktiviert.

(parted) resize 1 0 20000
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Error: File system has an incompatible feature enabled.  Compatible features are
has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs or
debugfs to remove features.

Eine Liste, welche Features auf der Partition aktiviert sind, bekommt man mit folgendem Befehl:

root@test-debian:~# tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          af977d1b-bf8b-443b-a04e-c386e3c3bd23
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash

Damit ein Resize erfolgreich absolviert wird, müssen die Features ext_attr, resize_inode und dir_index entfernt werden. Mit diesen Befehlen können die Features entfernt werden.

root@test-debian:~# tune2fs -O ^has_journal /dev/sdb1
root@test-debian:~# tune2fs -O ^dir_index /dev/sdb1
root@test-debian:~# debugfs -w /dev/sdb1 -R "feature -ext_attr"
root@test-debian:~# e2fsck -y -f /dev/sdb1
root@test-debian:~# debugfs -w /dev/sdb1 -R "feature -resize_inode"
root@test-debian:~# e2fsck -y -f /dev/sdb1

Nachdem die Befehle erfolgreich durch gelaufen sind, kann erneut ein resize durch geführt werden.

root@test-debian:~# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resize 1 0 20000
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Warning: A resize operation on this file system will use EXPERIMENTAL code
that MAY CORRUPT it ((although no one has reported any such damage yet).
You should at least backup your data first, and run 'e2fsck -f' afterwards.
OK/Cancel? OK
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 21,5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  21,4GB  21,4GB  primary  ext2

Ist dieser Schritt vollendet sollte die Festplatte gechecked werden und die Features wieder aktiviert.

root@test-debian:~# e2fsck -y -f /dev/sdb1
root@test-debian:~# tune2fs -j /dev/sdb1
root@test-debian:~# debugfs -w /dev/sdb1 -R "feature dir_index ext_attr resize_inode"

Damit ist der Vergrößerungsprozess abgeschlossen.

4. Juli 2011

Festplatte vergrößern mit parted

Es steht eine Vergrößerung der Festplatte eines Datenbankservers an. Der Server ist virtualisiert und die Vergrößerung der Festplatte ist über VMWare recht einfach. Wenn es sich […]