GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ändern Sie die Größe der Partition auf das Maximum, indem Sie parted im nicht interaktiven Modus verwenden

HINWEIS:Dieses Skript ist mit parted v3+ OOTB kompatibel, wenn Sie parted 2 haben, müssen Sie parted resizepart ändern bis parted resize

Lassen Sie uns dies in ein Skript einbauen, der acualy-Befehl ist ein Onliner, wir fügen einfach viel mehr hinzu, um sicherzustellen, dass die ersten beiden Parameter gesetzt sind:

#!/bin/bash
set -e

if [[ $# -eq 0 ]] ; then
    echo 'please tell me the device to resize as the first parameter, like /dev/sda'
    exit 1
fi


if [[ $# -eq 1 ]] ; then
    echo 'please tell me the partition number to resize as the second parameter, like 1 in case you mean /dev/sda1 or 4, if you mean /dev/sda2'
    exit 1
fi

DEVICE=$1
PARTNR=$2
APPLY=$3

fdisk -l $DEVICE$PARTNR >> /dev/null 2>&1 || (echo "could not find device $DEVICE$PARTNR - please check the name" && exit 1)

CURRENTSIZEB=`fdisk -l $DEVICE$PARTNR | grep "Disk $DEVICE$PARTNR" | cut -d' ' -f5`
CURRENTSIZE=`expr $CURRENTSIZEB / 1024 / 1024`
# So get the disk-informations of our device in question printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda we use printf %s\\n 'unit MB print list' to ensure the units are displayed as MB, since otherwise it will vary by disk size ( MB, G, T ) and there is no better way to do this with parted 3 or 4 yet
# then use the 3rd column of the output (disk size) cut -d' ' -f3 (divided by space)
# and finally cut off the unit 'MB' with blanc using tr -d MB
MAXSIZEMB=`printf %s\\n 'unit MB print list' | parted | grep "Disk ${DEVICE}" | cut -d' ' -f3 | tr -d MB`

echo "[ok] would/will resize to from ${CURRENTSIZE}MB to ${MAXSIZEMB}MB "

if [[ "$APPLY" == "apply" ]] ; then
  echo "[ok] applying resize operation.."
  parted ${DEVICE} resizepart ${PARTNR} ${MAXSIZEMB}
  echo "[done]"
else
  echo "[WARNING]!: Sandbox mode, i did not size!. Use 'apply' as the 3d parameter to apply the changes"
fi

Nutzung

Speichern Sie das obige Skript als resize.sh und ausführbar machen

# resize the fourth partition to the maximum size, so /dev/sda4
# this is no the sandbox mode, so no changes are done
./resize.sh /dev/sda 4

# apply those changes
./resize.sh /dev/sda 4 apply

Falls Sie zum Beispiel ein vg vgdata mit einem lv 'data' auf /dev/sdb1 haben, während Sie LVM verwenden, würde die ganze Geschichte so aussehen

./resize.sh /dev/sdb 1 apply
pvresize /dev/sdb1
lvextend -r /dev/mapper/vgdata-data -l 100%FREE

Das war's, logisches Volume in der Größe geändert, einschließlich Dateisystem in der Größe geändert ( -r ) - alles erledigt, mit df -h überprüfen :)

Erklärung

Was wir verwenden, um die Festplattengröße zu ermitteln, ist

resizepart ${PARTNR} `parted -l | grep ${DEVICE} | cut -d' ' -f3 | tr -d MB

a) Holen Sie sich also die Disk-Informationen unseres Gerätes in Frage printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda wir verwenden printf %s\\n 'unit MB print list' um sicherzustellen, dass die Einheiten als MB angezeigt werden, da sie sonst je nach Festplattengröße ( MB, G, T ) variieren und es noch keinen besseren Weg gibt, dies mit parted 3 oder 4 zu tun

b) Verwenden Sie dann die 3. Spalte der Ausgabe (Plattengröße) cut -d' ' -f3 (durch Leerzeichen getrennt)

c) und schließlich die Einheit 'MB' mit blanc mit tr -d MB abschneiden

Nachverfolgung

Ich habe das Skript auf https://github.com/EugenMayer/parted-auto-resize veröffentlicht. Wenn also etwas in Bezug auf die Funktionen verbessert werden soll, verwenden Sie dort Pull-Anforderungen (alles, was nicht in den Geltungsbereich dieser Frage fällt)


Linux
  1. Partitionieren Sie ein Laufwerk unter Linux mit GNU Parted

  2. So ändern Sie die Größe einer LVM-Partition innerhalb einer erweiterten Partition

  3. So erstellen Sie eine Partition unter Linux für eine Größe von 2 TB mit Parted GPT

  4. So löschen Sie eine Festplattenpartition mit dem Parted-Befehl

  5. Skriptfähige GPT-Partitionen mit parted

Partitionieren mit den Befehlen parted und fdisk

9 Beispiele für partierte Linux-Befehle – mkpart, mkpartfs, Partitionsgröße ändern

Verwenden von Ubuntu 18.04 im erweiterten Modus für Hyper-V unter Windows 10

So erstellen Sie eine Partition mit dem Befehl „parted“

Verstehen des parted Linux-Dienstprogramms

So erstellen Sie Festplattenpartitionen mit cfdisk