Partiton aufs maximum vergrößern wenn die Festplatte vergößert wurde
Beschreibung:
Es kann mal vor kommen, das eine FetsplatteFestplatte 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/resize_partition.extend_to_max.sh
Inhalt
#!/bin/bash
#
Hilfe-Funktion# usage(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 "Verwendung:Usage: $0 -d <Partition> [-s <Größe>]"
echo " -d <Partition> Die Partition, die vergrößert werden sollZielpartition (z.B. /dev/sda1)sda2)"
echo " -s <Größe> Die Größe, um die die Partition vergrößert werden soll (z.B. 100M oder 2G)"
echo " Wenn keine Größe angegeben wird, wird die Partition auf das Maximum vergrößert."
exit 1
}
# Überprüfen, ob keine Parameter angegeben wurdenprüfen
if [ "$##" -eq 0 ]; then
usageprint_help
exit 1
fi
# Parameter verarbeiten
while getopts ":d:s:"h" opt; do
case $opt in
d)
PARTITION=DEVICE="$OPTARG"
;;
s)h)
SIZE="$OPTARG"print_help
exit 0
;;
*?)
usageprint_help
exit 1
;;
esac
done
# Überprüfen, ob die Partition angegeben wurde
if [ -z "$PARTITION"DEVICE" ]; then
echo "Fehler: PartitionKein mussGerät angegeben werden.angegeben!"
usageprint_help
exit 1
fi
# Überprüfen, ob die Partition existiertRoot-Prüfung
if [ !"$(id -eu)" "$PARTITION"-ne 0 ]; then
echo "Fehler:Dieses PartitionScript $PARTITIONmuss existiertals nicht.root ausgeführt werden."
exit 1
fi
echo "Erweitere Partition $DEVICE auf maximal verfügbaren Speicher..."
# GerätBestimme den übergeordneten Datenträger und Partitionsnummerdie extrahierenPartitionsnummer.
PARENT=$(z.B.lsblk -no pkname "$DEVICE" 2>/dev/sda2null)
→if DEVICE=[ -n "$PARENT" ]; then
DISK="/dev/sda,$PARENT"
PART_NUM=2)else
DEVICE=DISK=$(echo "$PARTITION"DEVICE" | sed 's/[0-9]*$//')
fi
PART_NUM=$(echo "$PARTITION"DEVICE" | grep -osed 's/.*\([0-9]*\+\)$/\1/')
echo "Verwende Datenträger: $DISK, Partition: $PART_NUM"
# PartitionStarte vergrödie Erweiterung mit growpart.
# (growpart erweitert standardmäßernig bis zum maximal verfügbaren freien Platz)
echo "Starte growpart..."
growpart "$DISK" "$PART_NUM"
if [ $? -zne "$SIZE"0 ]; then
echo "VergrößereFehler: $PARTITIONgrowpart aufkonnte die Partition nicht erweitern."
exit 1
fi
# Erweitere anschließend das MaximumDateisystem mit(hier growpart.wird ext2/3/4 vorausgesetzt).
echo "Passe das Dateisystem an ($DEVICE) an..."
growpartresize2fs "$DEVICE"
"$PART_NUM"
else
# Größe mit parted vergrößern (z.B. +2G) und automatisch "yes" bestätigen
if [[ "$SIZE"? =~-ne ^[0-9]+[MG]$0 ]]; then
echo "Vergrößere $PARTITION um $SIZE mit parted (automatische Bestätigung)."
yes | parted "$DEVICE" resizepart "$PART_NUM" "+$SIZE" --script
else
echo "Fehler: Ungültigeresize2fs Größenangabekonnte '$SIZE'.das VerwendeDateisystem z.B.nicht 100M oder 2G.erweitern."
exit 1
fi
fiecho #"Partition und Dateisystem vergrößernwurden (online, falls unterstützt)
echo "Vergrößere das Dateisystemerfolgreich auf $PARTITION.den maximal verfügbaren Speicher erweitert."
resize2fsexit "$PARTITION"0
echo "Fertig!"
Script Ausführbar machen
chmod +x /root/resize_partition.extend_to_max.sh
Erklärung:
-
Parameterverarbeitung:
-
-d <Partition>: Gibt die Partition an, die vergrößert werden soll (z.B./dev/sda1). -s <Größe>: Gibt die Größe an, um die die Partition vergrößert werden soll (z.B.100Moder2G). Wenn keine Größe angegeben wird, wird die Partition auf das Maximum vergrößert.
-
-
Ü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.Wenn keine Größe angegeben wird, wird die Partition auf das Maximum vergrößert.
-
-
Vergrößern des Dateisystems:
-
Das Skript verwendet
resize2fs, um das Dateisystem auf der Partition zu vergrößern.
-
Hilfe anzeigen:
./resize_partition.extend_to_max.sh
Vergrößerung um 500M:
./resize_partition.sh -d /dev/sda1 -s 500MMaximale Vergrößerung:
./resize_partition.extend_to_max.sh -d /dev/sda1