Direkt zum Hauptinhalt

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:

  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.extend_to_max.sh

Vergrößerung um 500M:

./resize_partition.sh -d /dev/sda1 -s 500M

Maximale Vergrößerung:

./resize_partition.extend_to_max.sh -d /dev/sda1