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.