GNU/Linux >> Tutoriels Linux >  >> Linux

Redimensionner la partition au maximum en utilisant parted en mode non interactif

ASTUCE :ce script est compatible avec parted v3+ OOTB, si vous avez parted 2, vous devez changer parted resizepart à parted resize

mettons cela dans un script, la commande acualy est un onliner, nous en ajoutons juste beaucoup plus pour nous assurer que les 2 premiers paramètres sont définis :

#!/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

utilisation

Enregistrez le script ci-dessus sous resize.sh et le rendre exécutable

# 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

Par exemple, si vous avez un vg vgdata avec un lv 'data' sur /dev/sdb1 tout en utilisant LVM, toute l'histoire ressemblerait à

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

C'est tout, volume logique redimensionné, y compris le système de fichiers redimensionné ( -r ) - tout est fait, vérifiez-le avec df -h :)

Explication

Ce que nous utilisons pour trouver la taille du disque est

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

a) Récupérez donc les informations du disque de notre appareil en question printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda nous utilisons printf %s\\n 'unit MB print list' pour s'assurer que les unités sont affichées en Mo, sinon cela variera en fonction de la taille du disque ( Mo, G, T ) et il n'y a pas encore de meilleur moyen de le faire avec parted 3 ou 4

b) puis utilisez la 3ème colonne de la sortie (taille du disque) cut -d' ' -f3 (divisé par un espace)

c) et enfin couper l'unité 'MB' avec du blanc en utilisant tr -d MB

Suivis

J'ai publié le script sur https://github.com/EugenMayer/parted-auto-resize donc si quelque chose doit être amélioré en termes de fonctionnalités, utilisez les demandes d'extraction là-bas (tout ce qui n'est pas dans le cadre de cette question)


Linux
  1. Partitionner un disque sous Linux avec GNU Parted

  2. Ubuntu - Est-il sûr de redimensionner la partition sur /?

  3. Comment redimensionner une partition LVM à l'intérieur d'une partition étendue

  4. Redimensionnement en direct d'une partition GPT sous Linux

  5. fdisk - partition en une seule ligne

Partitionnement à l'aide des commandes parted et fdisk

9 exemples de commandes partagées Linux - mkpart, mkpartfs, redimensionner les partitions

Utilisation du mode amélioré Ubuntu 18.04 pour Hyper-V sous Windows 10

Comment créer une partition à l'aide de la commande "parted"

Comprendre l'utilitaire séparé Linux

Comment créer des partitions de disque à l'aide de cfdisk