• Serveurs
  • [Discussion] Partitionnement de mon dédié avec LVM

kolgate wrote:
setsuneh wrote:Plop,
umount: /home: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)

Une idée?
Alors soit tu est dedans genre tu fait
cd /
ou si tu est sur debian 8 et que tu utilise un premier user pour faire ensuite
su root
ton premier user est dans sa /home/premieruser
Non plus. J'y ai pensé après coup que je me log en Puty via mon id (Online).
Donc obligé de passer en rescue je pense..
Je pense que c'est parce qu'une application utilise la partition home en fait.
As-tu essayé d'arrêter rutorrent et toute les applications que tu as installées sur ton dédié?
ex_rat wrote:Bon alors suite à l'autre topic j'ai repris le truc avec la modif' xataz et j'ai supprimé la conversion auto Go=>GiB parce que ça tounait mal cette affaire.

Donc on ne parle plus qu'en GiB. Pour simplifier le calcul j'ai ajouté une option "Calcul" choix 3 :
http://www.ratbox.nl/md/lvm2.png

Pour le menu ça donne ça:
http://www.ratbox.nl/md/lvm1.png

En pré-requis si installation, toujours une partition /home à part obligatoire.
Et on ne peut pas utiliser de virgule pour les tailles, juste un point. Ex: 202.75

J'ai bien testé et j'ai pas d'erreur donc voilà quoi... Si des beta-testeurs veulent tenter le coup c'est toujours :
apt-get update && apt-get upgrade -y
apt-get install git-core -y
cd /tmp
git clone https://github.com/exrat/LVM-MonDedie
cd LVM-MonDedie
chmod a+x lvm-mondedie.sh && ./lvm-mondedie.sh
J'insiste un peu, pour le choix 1 "installation LVM", pas oublier que ça supprime la partition /home d'origine donc c'est seulement si serveur vierge avant d'installer autre chose sinon bobo ^^
Ex.
J'ai un serveur avec un RAID 0 partition /home
Je lance le script, et après cela, mon serveur est pas stable, je suis encore confus l'utilisation du voisin de LVM.
Bonjour;
@ex_rat

Pas mal ton script : "lvm-mondedie.sh"

Par contre, pour info, il faut savoir qu'avant de le lancer, il ne faut pas que /home soit monté en UUID à l'origine dans fstab...sinon :
Device /dev/6af3 not found (or ignored by filtering).
Device /dev/6af3 not found (or ignored by filtering).
Unable to add physical volume '/dev/6af3' to volume group 'vghome'.

  Volume group "vghome" not found
  Skipping volume group vghome
J'ai modifié le fstab avec /dev/sda2 (dans mon cas) , et là pas de problèmes...

Sinon, ras....et félicitations...
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.
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+++
13 jours plus tard
Merci pour ce tuto !
Lorsque je l'avais suivi sur Oracle VirtualBox (debian 8.4.0 64) il avait parfaitement marché. Cependant j'ai eu un petit problème sur mon serveur Dedibox :

Lors de la création du VG :
root@seedbox:~# vgcreate vghome /dev/sda3
J'avais obtenu ce message d'erreur (que je n'ai pas remarqué la 1ère fois), malgré le message "succesfully created" :
/proc/misc: No entry for device-mapper found
Volume group "vghome" successfully created
Après l'installation de seedbox manager via le script automatique, j'avais constaté que l'espace restant de mes users était celui du root.

Pour régler ça j'ai utilisé ceci après l'installation de LVM (apparemment il faut parfois installer le device mapper "dm-mod" dans le kernel pour que lvm2 marche correctement : source) :
modprobe dm-mod
J'ai ensuite installé le seedbox manager avec le script auto de rat sans soucis.
8 mois plus tard

Je pose ça la

Pour trouver l'UUID d'un LV a inserer dans le fstab avec la cmd blkid
example :
~/$ blkid /dev/VGDATA/home
/dev/VGDATA/home: UUID="cf85f0c7-87bd-4cad-9287-4eb6f1590ee3" TYPE="ext4"

14 jours plus tard

Hello,
Très bon tuto qui m'a permis d'apprendre le partitionnement avec LVM pour ma seedbox multiusers avec le fameux bonobox. Couplé avec le tuto ssl letsencrypt pour nginx de jedediah ;-)

Un grand merci
mimego

un mois plus tard

Bonjour à ttous,

Je souhaite redimenssioner des partition, sachant que je les ai monté en LVM des le depart, mais lorsque je veux la demonter il me dit qu'elle est occupé :

~# umount /home/secours/
umount: /home/secours/: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)

Comment puis je faire sans passer par un netboot?

En vous remerciant pour vos réponses.

Salutations

Bob

C'est plus ou moins indiqué dans le message d'erreur : lsof

lsof | grep secours

va te donner une liste des fichiers en cours d'utilisation sur ta partition. De là, tu verras de quoi il s'agit et tu pourras décider d'essayer de fermer le process qui le tient.

Merci bien, l'Anglais et moins..... lol
Le soucis c'est que là je suis sur une partition d'essai qui ne comporte que r et rutorrent, ça va et le meme probleme sur la partition principale, vais pouvoir tout fermer sans risque?

Il n'y a pas de réponse magique, hélas. Tout dépend de ce que retourne la commande que je t'ai donnée plus haut.
Si tu veux, fais nous un copier coller et on te dira ce qui est possible ou non.

JE vais m'occuper de cela dimanche je vous posterai le log, merci 😉

Répondre…