ex_rat wrote:Salut
Le soucis avec le script, c'est que je ne peux le tester que sur un kim tout simple (pas de raid etc...) du coup je suis un peu limité pour debugger ce genre de truc

Sur de la conf toute basic c'est vrai que ça marche pas mal à part ça.
Je vais pas pouvoir gérer je pense, enfin j'ai pas d'idées là pour l'instant

Ex.
Salut;
Pas grave...c'est déjà très bien bien...
Sinon, hier j'ai modifié ton script (
à la rustre certainement !!!), pour solutionner ce problème dans mon cas !! : ( /home déclaré en UUID ou en LABEL dans fstab).
J'ai aussi rajouté une option au menu, permettant de créer un utilisateur, utilisant toute la capacité restante (permet de récupérer les Mo non pris en compte et donc d'occuper 100% de l'espace : pas de gaspillage !!!); surtout pratique pour le dernier volume à créer:
Voici donc ton script modifié (testé sur un rpi) :
#!/bin/bash
#
# cd /tmp
# git clone https://github.com/exrat/LVM-MonDedie
# cd LVM-MonDedie
# chmod a+x lvm-mondedie.sh && ./lvm-mondedie.sh
#
# Auteur ex_rat
# Adapté du tuto de Xataz pour mondedie.fr http://mondedie.fr/d/7147
#
# This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
# http://creativecommons.org/licences/by-nc-sa/4.0
# variables
CSI="\033["
CEND="${CSI}0m"
CRED="${CSI}1;31m"
CGREEN="${CSI}1;32m"
CYELLOW="${CSI}1;33m"
CBLUE="${CSI}1;34m"
# Ne rien modifier, la détection d'un VG existant est automatique
VGNAME="vghome"
DEV="/dev/mapper"
FSTAB="/etc/fstab"
# functions
function FONCUSER ()
{
echo -e "${CGREEN}Entrez le nom de l'utilisateur ruTorrent pour le volume lvm :${CEND}"
read -r USER
}
function FONCTAILLE ()
{
echo -e "${CGREEN}Entrez la taille de volume souhaité (en GiB) :${CEND}"
read -r GIB
TAILLE=$(echo "scale=2 ; $GIB" | bc | cut -d. -f1)
}
function FONCVG ()
{
TESTVG=$(lvm vgscan | sed '1d' |cut -d '"' -f2)
if [ "$TESTVG" = "" ]; then
VG="$VGNAME"
else
VG="$TESTVG"
fi
}
function FONCFREE ()
{
FREE=$( vgdisplay "$VG" | grep -w Free)
echo -e "${CBLUE}Place disponible${CEND} ${CRED}(en GiB)${CEND}\n${CYELLOW}$FREE${CEND}"
}
function FONCOCCUP ()
{
OCCUP=$( lvdisplay "$DEV"/"$VG"-"$USER" | grep -w Size)
echo -e "${CBLUE}Place occupé par l'utilisateur${CEND} ${CRED}(en GiB)${CEND}\n${CYELLOW}$OCCUP${CEND}"
}
clear
echo -e "${CBLUE} Installation & Gestion LVM${CEND}"
echo -e "${CBLUE}
| |_) _|
__ \`__ \ _ \ __ \ _\` | _ \ _\` | | _ \ | __|
| | | ( | | | ( | __/ ( | | __/ __| |
_| _| _|\___/ _| _|\__,_|\___|\__,_|_|\___|_)_| _|
${CEND}"
while :; do
echo -e "${CGREEN}Choisissez une option${CEND}"
echo -e "${CYELLOW} 1 ${CEND} Installation LVM"
echo -e "${CYELLOW} 2 ${CEND} Rapport LVM"
echo -e "${CYELLOW} 3 ${CEND} Conversion Go en GiB"
echo -e " *****************************"
echo -e "${CYELLOW} 4 ${CEND} Ajout d'un volume utilisateur"
echo -e "${CYELLOW} 5 ${CEND} Augmentation ou réduction d'un volume utilisateur"
echo -e "${CYELLOW} 6 ${CEND} Suppression complète d'un volume utilisateur"
echo -e "${CYELLOW} 7 ${CEND} Ajout d'un volume utilisateur sur toute la capacité (restante) disponible : 100%FREE" ##Ajoute une option pour récupérer Les Mo !!!
echo -e "${CYELLOW} 8 ${CEND} Sortir"
echo -n -e "${CGREEN}Entrez votre choix :${CEND} "
read -r OPTION
case $OPTION in
1)
# Installation LVM
TESTSDX=$( grep -w /home "$FSTAB" | cut -c 6-9)
if [ "$TESTSDX" = "" ]; then
echo -e "${CRED}Pas de partition /home disponible${CEND}"
exit
else
TESTSDX=$( df | grep /home$ | cut -c 6-9 ) ##récupère la variable avec df sous la forme sd(x)...
SDX="$TESTSDX"
fi
apt-get install bc lvm2 -y
umount /home
sed -i "/$SDX/d" "$FSTAB"
sed -i "/UUID.*home/d" "$FSTAB" #efface dans fstab si si sous forme UUID ou PARTUUID
sed -i "/LABEL.*home/d" "$FSTAB" #efface dans fstab si si sous forme LABEL ou PARTLABEL
pvcreate /dev/"$SDX"
vgcreate "$VGNAME" /dev/"$SDX"
echo "" ; vgdisplay "$VGNAME" ; echo ""
;;
2)
# Rapport LVM
echo "" ; echo -e "${CYELLOW}Attributs de groupes de volumes${CEND}" ; vgdisplay
echo "" ; echo -e "${CYELLOW}Informations sur les volumes physiques${CEND}" ; pvs
echo "" ; echo -e "${CYELLOW}Information sur les groupes de volumes${CEND}" ; vgs
echo "" ; echo -e "${CYELLOW}Informations sur les volumes logiques${CEND}" ; lvs
echo -e "${CBLUE}Toutes les tailles sont données en${CEND} ${CRED}GiB${CEND}" ; echo ""
;;
3)
# Conversion
echo "" ; echo -e "${CBLUE}Entrez la taille en${CEND} ${CYELLOW}Go${CEND} ${CBLUE}souhaité pour la convertir en ${CYELLOW}GiB${CEND} ${CBLUE}:${CEND}"
read -r CONV
CONVGIB=$(echo "scale=2;((($CONV/1000)*1024)*0.99)" | bc | sed "s/\,/./")
echo -e "${CBLUE}La conversion pour "$CONV" Go est de :${CEND} ${CYELLOW}"$CONVGIB" GiB${CEND}" ; echo ""
;;
4)
# Ajout volume utilisateur
FONCVG
echo "" ; FONCUSER
echo "" ; FONCFREE
echo "" ; FONCTAILLE
lvcreate -L "$TAILLE"G -n "$USER" "$VG"
mkfs.ext4 "$DEV"/"$VG"-"$USER"
mkdir -p /home/"$USER"
mount "$DEV"/"$VG"-"$USER" /home/"$USER"
echo "$DEV/$VG-$USER /home/$USER ext4 defaults 0 2" >> "$FSTAB"
tune2fs -m 0 "$DEV"/"$VG"-"$USER"
mount -o remount /home/"$USER"
echo "" ; df -h /home/"$USER"
echo "" ; FONCFREE ; echo ""
;;
5)
# Augmentation ou reduction de l'espace disque
FONCVG
echo "" ; FONCUSER
echo "" ; FONCFREE
echo "" ; FONCOCCUP
echo "" ; FONCTAILLE
umount /home/"$USER"/
e2fsck -f "$DEV"/"$VG"-"$USER"
SECURE=$((TAILLE-5))
resize2fs -p "$DEV"/"$VG"-"$USER" "$SECURE"G
if [ $? -ge 2 ] ; then
echo -e "${CRED}Une erreur rend l'opération impossible${CEND}"
exit
fi
lvresize -L "$TAILLE"G "$DEV"/"$VG"-"$USER"
sleep 3
resize2fs "$DEV"/"$VG"-"$USER"
mount "$DEV"/"$VG"-"$USER" /home/"$USER"
echo "" ; df -h /home/"$USER"
echo "" ; FONCFREE ; echo ""
;;
6)
# Suppression d'un volume utilisateur
FONCVG
echo "" ; FONCUSER
umount /home/"$USER"
lvremove /dev/"$VG"/"$USER"
sed -i "/$VG-$USER/d" "$FSTAB"
rm -R /home/"$USER"
echo "" ; FONCFREE ; echo ""
;;
7)
# Ajout volume utilisateur (tout espace disponible)
FONCVG
echo "" ; FONCUSER
echo "" ; FONCFREE
lvcreate -l 100%FREE -n "$USER" "$VG" ##récupère tout l'espace restant
mkfs.ext4 "$DEV"/"$VG"-"$USER"
mkdir -p /home/"$USER"
mount "$DEV"/"$VG"-"$USER" /home/"$USER"
echo "$DEV/$VG-$USER /home/$USER ext4 defaults 0 2" >> "$FSTAB"
tune2fs -m 0 "$DEV"/"$VG"-"$USER"
mount -o remount /home/"$USER"
echo "" ; df -h /home/"$USER"
echo "" ; FONCFREE ; echo ""
;;
8)
# Sortie
echo "" ; break
;;
*)
# Invalide
echo "" ; echo -e "${CRED}Choix Invalide${CEND}" ; echo ""
;;
esac
done
Si ça peut te donner des idées !!! voir aussi agrandir aussi un lv à 100%...etc.., n'étant pas intéressé dans l'instant, je me suis arrêté là...
A+++