Direkt zum Hauptinhalt

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 parted

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

# Gerät und Partitionsnummer extrahieren (z.B. /dev/sda2 → DEVICE=/dev/sda, PART_NUM=2)
DEVICE=$(echo "$PARTITION" | sed 's/[0-9]*$//')
PART_NUM=$(echo "$PARTITION" | grep -o '[0-9]*$')

# Partition vergrößern
if [ -z "$SIZE" ]; then
    echo "Vergrößere $PARTITION auf das Maximum mit growpart."
    growpart "$DEVICE" "$PART_NUM"
else
    # Größe mit parted vergrößern (z.B. +2G)
    if [[ "$SIZE" =~ ^[0-9]+[MG]$ ]]; then
        echo "Vergrößere $PARTITION um $SIZE mit parted."
        parted "$DEVICE" resizepart "$PART_NUM" "+$SIZE" --script
    else
        echo "Fehler: Ungültige Größenangabe '$SIZE'. 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:

  1. 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. 100M oder 2G). Wenn keine Größe angegeben wird, wird die Partition auf das Maximum vergrößert.

  2. Überprüfung der Partition:

    • Das Skript überprüft, ob die angegebene Partition existiert.

  3. 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.

  4. 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