Partiton vergrößern wenn die Festplatte vergößert wurde
Beschreibung:
Es kann mal vor kommen, das eine Fetsplatte 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 cloud-guest-utils e2fsprogs
Das Script:
nano /root/resize_partition.sh
Inhalt
#!/bin/bash
# Hilfe-Funktion
usage() {
echo "Verwendung: $0 -d <Partition> [-s <Größe>]"
echo " -d <Partition> Die Partition, die vergrößert werden soll (z.B. /dev/sda1)"
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 wurden
if [ $# -eq 0 ]; then
usage
fi
# Parameter verarbeiten
while getopts ":d:s:" opt; do
case $opt in
d) PARTITION="$OPTARG" ;;
s) SIZE="$OPTARG" ;;
*) usage ;;
esac
done
# Überprüfen, ob die Partition angegeben wurde
if [ -z "$PARTITION" ]; then
echo "Fehler: Partition muss angegeben werden."
usage
fi
# Überprüfen, ob die Partition existiert
if [ ! -e "$PARTITION" ]; then
echo "Fehler: Partition $PARTITION existiert nicht."
exit 1
fi
# Größe der Partition ermitteln
if [ -z "$SIZE" ]; then
echo "Vergrößere die Partition $PARTITION auf das Maximum."
growpart "$(echo "$PARTITION" | sed 's/[0-9]*$//')" "$(echo "$PARTITION" | grep -o '[0-9]*$')"
else
# Größe in Sektoren umrechnen
if [[ "$SIZE" =~ ^[0-9]+[MG]$ ]]; then
UNIT="${SIZE: -1}"
VALUE="${SIZE%?}"
if [ "$UNIT" == "M" ]; then
SECTORS=$((VALUE * 1024 * 1024 / 512)) # 1M = 2048 Sektoren (512 Bytes pro Sektor)
elif [ "$UNIT" == "G" ]; then
SECTORS=$((VALUE * 1024 * 2048)) # 1G = 2048 * 1024 Sektoren
fi
echo "Vergrößere die Partition $PARTITION um $SIZE ($SECTORS Sektoren)."
growpart "$(echo "$PARTITION" | sed 's/[0-9]*$//')" "$(echo "$PARTITION" | grep -o '[0-9]*$')" "+$SECTORS"
else
echo "Fehler: Ungültige Größenangabe. Verwende z.B. 100M oder 2G."
exit 1
fi
fi
# Dateisystem vergrößern
echo "Vergrößere das Dateisystem auf $PARTITION."
resize2fs "$PARTITION"
echo "Fertig!"
Script Ausführbar machen
chmod +x /root/resize_partition.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.sh
Vergrößerung um 500M:
./resize_partition.sh -d /dev/sda1 -s 500M
Maximale Vergrößerung:
./resize_partition.sh -d /dev/sda1