Re: Montage/démontage dossiers samba avec wifi et ubuntu

Page principale

Répondre à ce message
Auteur: Olivier Allard-Jacquin
Date:  
À: ML Guilde
Sujet: Re: Montage/démontage dossiers samba avec wifi et ubuntu
    Bonjour,

Le 15/12/2011 14:52, Olivier Desportes a écrit :
> Bonjour,
>
> Je reviens vers vous pour le problème de mon collègue Joseph-André. Il
> s'avère que le problème à l'extinction du PC est dû au fait que la
> connexion wifi est gérée au niveau session de gnome. Or le démontage
> des dossiers se fait une fois la connexion coupée, ce qui fait met le
> pc en attente d'un (long) time out pour s'éteindre (1 minute par
> dossier !!!)
> Même en mettant un script de démontage explicite des dossiers samba à
> la fermeture de session, rien n'y fait : la connexion wifi est coupée
> avant toute chose lors de l'extinction du PC.
> Par ailleurs, nous sommes au courant d'une possibilité d'exécuter ce
> même script de démontage lors de l'évènement 'coupure de la connexion
> wifi' dans /etc/NetworkManager/Dispatcher.d/01ifupdown, mais il ne
> veut toujours rien savoir, c'est comme si ce script ne s'exécutait
> pas, et on n'arrive même pas à le tracer.
> Je doute très fortement que nous soyons les seuls à vouloir utiliser
> des partages samba via une connexion wifi, qui pourrait nous guider ?
> On se casse les dents sur ce problème depuis hier matin.....
>
> Merci !


    J'ai déjà vu ce problème de démontage "lent" lorsque la source à
disparu. La solution est dans le "man mount":


<extrait>
-l     Lazy unmount. Detach the filesystem from the filesystem hierarchy
now, and cleanup all references to the filesystem
as soon as it is not busy anymore.  (Requires kernel 2.4.11 or later.)
</extrait>


    Tu peux donc écrire un script de démontage, qui utilise l'option "-l"
de "mount" :


    umount -l xxxx


    Chez moi, j'ai écris ceci pour un problème assez similaire lié à une
VirtualBox :


# Umount share in background mode
# This is needed, due to slowdown when VB is shutdown in snapshot mode
(umount -l "xxx" &) >/dev/null 2>&1

# Wait 3s for umount
for I in `seq -w 1 3`; do

echo -ne '.' ; sleep 1s
done

# Check umount status
if [ -n "`mount|grep "^//.*xxx"`" ]; then

    # Umount not finished, force it...
        killall -9 umount >/dev/null 2>&1
        echo -ne '.' ; sleep 1s


        (umount -l xxx" &) >/dev/null 2>&1
        echo -ne '.' ; sleep 1s


        # Re-check umount status
        if [ -z "`mount|grep "^//.*$WIN_D_MOUNT"`" ]; then


            # Umount success on 2nd attempt
                echo " OK"
    else


            # Display error message
                echo "ERREUR
##### ERREUR: Impossible de démonter xxx"
    fi
else


    # Umount success on 1st attempt
        echo " OK"
fi




    Maintenant, à la question "Où mettre un tel script", le mettre dans les
scripts d'init est une bonne idée.


    Tu peux utiliser recopier le /etc/init.d/skeleton en
/etc/init.d/mount_custom , et le modifier en customisant la partie "stop".


    Pour définir l'ordre de démarrage/arrêt du script (en fait, surtout
l'arrêt), tu mets ceci dans l'entête :


# Required-Start:    $local_fs $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:


    Enfin, pour rajouter le script au mécanisme d'init, lances un :


    update-rc mount_custom defaults


    Cela aura pour effet que ce script:
- soit lancé en dernier durant la séquence d'init. Cela, on s'en moque
un peu, puisque la partie "start" doit être vide
- soit lancé en PREMIER durant l'arrêt de la machine.


    Cordialement,


                        Olivier


-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!