Partiton aufs maximum vergrößern wenn die Festplatte vergößert wurde
Beschreibung:
Es kann mal vor kommen, das eine Festplatte z.b in einer VM vergrößert wird.
Leider wird das Dateisystem nicht mit angepasst.
Hier ein Script das die macht.
Dies Script hat allerdings Pakete Voraussetzungen die noch installiert werden müssen.
Voraussetzungen:
apt-get install bc e2fsprogs parted util-linux cloud-utils
Das Script:
nano /root/extend_to_max.sh
Inhalt
#!/bin/bash
#
# extend_to_max.sh – Erweitert eine Partition (und das Dateisystem)
# auf den maximal verfügbaren freien Speicher.
#
# Benutzung:
# ./extend_to_max.sh -d <Partition>
#
# Beispiel:
# ./extend_to_max.sh -d /dev/sda2
#
# ACHTUNG: Vor Änderungen unbedingt ein vollständiges Backup anfertigen!
#
print_help() {
echo "Usage: $0 -d <Partition>"
echo " -d Zielpartition (z.B. /dev/sda2)"
}
# Parameter prüfen
if [ "$#" -eq 0 ]; then
print_help
exit 1
fi
while getopts "d:h" opt; do
case $opt in
d)
DEVICE="$OPTARG"
;;
h)
print_help
exit 0
;;
?)
print_help
exit 1
;;
esac
done
if [ -z "$DEVICE" ]; then
echo "Fehler: Kein Gerät angegeben!"
print_help
exit 1
fi
# Root-Prüfung
if [ "$(id -u)" -ne 0 ]; then
echo "Dieses Script muss als root ausgeführt werden."
exit 1
fi
echo "Erweitere Partition $DEVICE auf maximal verfügbaren Speicher..."
# Bestimme den übergeordneten Datenträger und die Partitionsnummer.
PARENT=$(lsblk -no pkname "$DEVICE" 2>/dev/null)
if [ -n "$PARENT" ]; then
DISK="/dev/$PARENT"
else
DISK=$(echo "$DEVICE" | sed 's/[0-9]*$//')
fi
PART_NUM=$(echo "$DEVICE" | sed 's/.*\([0-9]\+\)$/\1/')
echo "Verwende Datenträger: $DISK, Partition: $PART_NUM"
# Starte die Erweiterung mit growpart.
# (growpart erweitert standardmäßig bis zum maximal verfügbaren freien Platz)
echo "Starte growpart..."
growpart "$DISK" "$PART_NUM"
if [ $? -ne 0 ]; then
echo "Fehler: growpart konnte die Partition nicht erweitern."
exit 1
fi
# Erweitere anschließend das Dateisystem (hier wird ext2/3/4 vorausgesetzt).
echo "Passe das Dateisystem an ($DEVICE) an..."
resize2fs "$DEVICE"
if [ $? -ne 0 ]; then
echo "Fehler: resize2fs konnte das Dateisystem nicht erweitern."
exit 1
fi
echo "Partition und Dateisystem wurden erfolgreich auf den maximal verfügbaren Speicher erweitert."
exit 0
Script Ausführbar machen
chmod +x /root/extend_to_max.sh
Erklärung:
-
Parameterverarbeitung:
-
-d <Partition>: Gibt die Partition an, die vergrößert werden soll (z.B./dev/sda1).
-
-
Überprüfung der Partition:
-
Das Skript überprüft, ob die angegebene Partition existiert.
-
-
Vergrößern der Partition:
-
Das Skript verwendet
growpart, um die Partition zu vergrößern.
-
-
Vergrößern des Dateisystems:
-
Das Skript verwendet
resize2fs, um das Dateisystem auf der Partition zu vergrößern.
-
Hilfe anzeigen:
./extend_to_max.sh
Vergrößerung:
./extend_to_max.sh -d /dev/sda1