Temps extinction portable si CIFS monté

Bonjour à tous!

J’ai un petit problème sur tous mes portables Debian au boulot (toutes marques: Toshiba, HP ou autre):
Si notre NAS est monté (CIFS), le portable met plusieurs minutes à s’éteindre.
Si il n’est pas monté, l’extinction est quasi instantanée.

Ce qui m’étonne c’est que je n’ai pas du tout ce problème sur mes postes clients “fixes”.
Les quelques portables sous Ubuntu n’ont pas ce problème (alors que le fstab est exactement le même).

Savez vous à quoi cela peut être due? :think:

/etc/fstab:

[quote]//x.x.x.x/Nas /media/Partage cifs user,noauto,rw,username=username,password=password,iocharset=utf8,noperm
[/quote]

Merci d’avance :smiley:

Je viens de remarquer que ca ne me le fait qu’en WIFI.

Je suppose qu’au moment d’éteindre, networkmanager se charge de couper le WIFI avant que le systeme tente de démonter mon partage ==> du coup Debian plante sur le démontage d’un partage qu’il ne peut plus joindre.

Je suis obligé de passer par un script de démontage de mes partages dans mes rc.d (genre S01 pour être avant NetworkManager) ou il y a plus propre comme solution?

Je me permet juste un petit “up” car je n’ai toujours pas réussi à régler ce problème.

J’ai tenté un script init visant à démonter mes montages CIFS avant l’extinction de networkmanager (et donc du wifi) mais ca ne semble pas marcher.

C’est vraiment gênant je n’ose pas passer mes portables en prod dans ces conditions :frowning:

Il faut regarder l’ordre d’arrêt des services.
J’ai déjà vu un arrêt très long de portable avec un montage cifs.

Debian arrête d’abord le services réseau et ensuite essai de démonter les partages, mais sans réseau il galère…

Donc soit tu fais un script qui se lance dès le début (de l’arrêt) pour arrêter les montages, soit tu changes l’ordre d’arrêt des services.

Bonjour Tof et merci pour cette réponse :slightly_smiling:

C’est en effet ce que je fais, j’ai créé un script qui démonte mes partitions CIFS (je l’appel en K01 pour rc0.d et rc6.d).

Mais mon WIFI semble s’arrêter avant lui.

Network-manager est également en K01, j’ai donc modifié le script init de networkmanager pour qu’il ai en “required-stop” le “Provides” que j’ai donné dans mon script.
Toujours le même problème.

Du coup j’aimerai analyser mes séquences de shutdown pour voir quel service peut stopper mon network avant mon démontage CIFS.

Vous savez si il est possible d’avoir une analyse du shutdown comme le ferai systemd-analyse pour le démarrage

Sur ma debian dans le rc0 le network-manager est en 02 et le networking en 07

si je me souviens bien dans mon script je faisais umount -f … pour être sure que ça se démonte.

Tu es sur Jessie ou Wheezy Tof?

Je vais tenter le umount -f :slightly_smiling: Merci!

Même chose avec le umount -f :confused:

(Mon network-manager est en K01 et mon networking est en K07)

Bon, je mets ici mon rc0.d, mes deux scripts et un log de tout ca en espérant que ca puisse aider quelqu’un (à m’aider :stuck_out_tongue: )

Mon /etc/rc0.d:

lrwxrwxrwx 1 root root 13 févr. 9 17:08 K01atd -> ../init.d/atd lrwxrwxrwx 1 root root 22 mars 2 11:51 K01avahi-daemon -> ../init.d/avahi-daemon lrwxrwxrwx 1 root root 22 févr. 9 17:36 K01cups-browsed -> ../init.d/cups-browsed lrwxrwxrwx 1 root root 18 févr. 26 17:06 K01ebtables -> ../init.d/ebtables lrwxrwxrwx 1 root root 15 févr. 9 17:08 K01exim4 -> ../init.d/exim4 lrwxrwxrwx 1 root root 17 févr. 9 17:37 K01hddtemp -> ../init.d/hddtemp lrwxrwxrwx 1 root root 20 févr. 9 17:18 K01irqbalance -> ../init.d/irqbalance lrwxrwxrwx 1 root root 24 févr. 26 17:06 K01libvirt-guests -> ../init.d/libvirt-guests lrwxrwxrwx 1 root root 17 févr. 9 17:37 K01lightdm -> ../init.d/lightdm lrwxrwxrwx 1 root root 19 mars 2 11:51 K01mountcifs -> ../init.d/mountcifs lrwxrwxrwx 1 root root 25 févr. 9 17:37 K01network-manager -> ../init.d/network-manager lrwxrwxrwx 1 root root 14 févr. 9 17:36 K01nmbd -> ../init.d/nmbd lrwxrwxrwx 1 root root 21 févr. 9 17:36 K01samba-ad-dc -> ../init.d/samba-ad-dc lrwxrwxrwx 1 root root 15 févr. 9 17:36 K01saned -> ../init.d/saned lrwxrwxrwx 1 root root 14 févr. 9 17:36 K01smbd -> ../init.d/smbd lrwxrwxrwx 1 root root 17 févr. 9 16:52 K01urandom -> ../init.d/urandom lrwxrwxrwx 1 root root 17 févr. 9 17:36 K01winbind -> ../init.d/winbind lrwxrwxrwx 1 root root 18 févr. 26 17:06 K02libvirtd -> ../init.d/libvirtd lrwxrwxrwx 1 root root 18 mars 2 11:51 K03sendsigs -> ../init.d/sendsigs lrwxrwxrwx 1 root root 17 mars 2 11:51 K04rsyslog -> ../init.d/rsyslog lrwxrwxrwx 1 root root 22 mars 2 11:51 K05umountnfs.sh -> ../init.d/umountnfs.sh lrwxrwxrwx 1 root root 20 mars 2 11:51 K06nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 17 mars 2 11:51 K06rpcbind -> ../init.d/rpcbind lrwxrwxrwx 1 root root 20 mars 2 11:51 K07hwclock.sh -> ../init.d/hwclock.sh lrwxrwxrwx 1 root root 20 mars 2 11:51 K07networking -> ../init.d/networking lrwxrwxrwx 1 root root 18 mars 2 11:51 K08umountfs -> ../init.d/umountfs lrwxrwxrwx 1 root root 20 mars 2 11:51 K09umountroot -> ../init.d/umountroot lrwxrwxrwx 1 root root 14 mars 2 11:51 K10halt -> ../init.d/halt -rw-r--r-- 1 root root 353 janv. 27 2014 README

Mon script mountcifs:

[code]#! /bin/sh

BEGIN INIT INFO

Provides: mountcifs

Required-Start: $syslog $time

Required-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: umount cifs systems

Description: Permet de umount les systemes CIFS avant que networkmanager ne desactive tout

END INIT INFO

start() {
echo “mountcifs: nothing to do!”
}

stop() {
echo date “********* debut umount cifs *************” >> /var/log/testgui
echo date "mount avant: " mount | grep Commun >> /var/log/testgui
echo date "ifconfig avant: " ifconfig wlan0 | grep "inet adr" >> /var/log/testgui
echo date "ping avant: " ping -c 1 xx.xx.xx.202 >> /var/log/testgui
echo date "route avant: " route | grep "*" >> /var/log/testgui
echo date "lsof avant: " lsof /media/Commun >> /var/log/testgui

echo date "Umount: " >> /var/log/testgui
umount -f /media/Commun 2>> /var/log/testgui

echo date "lsof apres: " lsof /media/Commun >> /var/log/testgui
echo date "mount apres: " mount | grep Commun >> /var/log/testgui
echo date "ifconfig apres: " ifconfig wlan0 | grep "inet adr" >> /var/log/testgui
echo date "route apres: " route | grep "*" >> /var/log/testgui
echo date "ping apres: " ping -c 1 xx.xx.xx.202 >> /var/log/testgui
echo date “****************** fin umount cifs **************” >> /var/log/testgui
}

status() {
echo "Mounted samba-cifs filesystems…"
mount -t cifs| cut -d\ -f3
}

restart() {
echo "restart …"
start
}

reload() {
echo "start …"
start
}

force_reload() {
echo "force-reload …"
start
}

case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
reload)
reload
;;
force-reload)
force_reload
;;
*)
echo “Usage: mountcifs {start|stop|restart|reload|force-reload|status}”
;;
esac

exit 0

[/code]

Mon network-manager:

[code]#! /bin/sh

BEGIN INIT INFO

Provides: network-manager

Required-Start: $remote_fs dbus udev

Required-Stop: $remote_fs dbus udev mountcifs

Should-Start: $syslog

Should-Stop: $syslog

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: network connection manager

Description: Daemon for automatically switching network

connections to the best available connection.

END INIT INFO

echo date “**************** DEBUT NETWORKMANAGER ***********” >> /var/log/testgui

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="network connection manager"
NAME=“NetworkManager”

DAEMON=/usr/sbin/$NAME

PIDFILE=/var/run/$NAME/$NAME.pid

SCRIPTNAME=/etc/init.d/network-manager

Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

test -f /etc/default/NetworkManager && . /etc/default/NetworkManager

Function that starts the daemon/service.

d_start() {
start-stop-daemon --start --quiet --pidfile $PIDFILE
–exec $DAEMON – $DAEMON_OPTS
}

Function that stops the daemon/service.

d_stop() {
echo date “**************** D_STOP NETWORKMANAGER ***********” >> /var/log/testgui
start-stop-daemon --stop --retry 5 --quiet --pidfile $PIDFILE
–exec $DAEMON
}

case “$1” in
start)
log_daemon_msg “Starting $DESC” "$NAME"
d_start
case “$?” in
0) log_end_msg 0 ;;
1) log_progress_msg “already started"
log_end_msg 0 ;;
) log_end_msg 1 ;;
esac
;;
stop)
echo date "
*************** STOP NETWORKMANAGER ***********” >> /var/log/testgui
log_daemon_msg “Stopping $DESC” "$NAME"
d_stop
case “$?” in
0) log_end_msg 0 ;;
1) log_progress_msg "already stopped"
log_end_msg 0 ;;
*) log_end_msg 1 ;;
esac
;;
restart|force-reload)
$0 stop
$0 start
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}” >&2
exit 1
;;
esac

exit 0[/code]
J’ai essayé de mettre 2 ou 3 “echo” vers un log pour voir si il passait bien par ce script.

Mon “log” testgui:

lundi 2 mars 2015, 17:52:27 (UTC+0100) ********* debut umount cifs ************* lundi 2 mars 2015, 17:52:27 (UTC+0100) mount avant: //xx.xx.xx.200/commun on /media/Commun type cifs (rw,nosuid,.......... lundi 2 mars 2015, 17:52:27 (UTC+0100) ifconfig avant: inet adr:xx.xx.xx.25 Bcast:xx.xx.xx.255 Masque:255.255.255.0 lundi 2 mars 2015, 17:52:27 (UTC+0100) ping avant: PING xx.xx.xx.200 (xx.xx.xx.200) 56(84) bytes of data. --- xx.xx.xx.200 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms lundi 2 mars 2015, 17:52:37 (UTC+0100) route avant: lundi 2 mars 2015, 17:52:37 (UTC+0100) lsof avant: lundi 2 mars 2015, 17:54:46 (UTC+0100) Umount: lundi 2 mars 2015, 17:54:46 (UTC+0100) lsof apres: lundi 2 mars 2015, 17:54:46 (UTC+0100) mount apres: lundi 2 mars 2015, 17:54:46 (UTC+0100) ifconfig apres: lundi 2 mars 2015, 17:54:46 (UTC+0100) route apres: lundi 2 mars 2015, 17:54:46 (UTC+0100) ping apres: lundi 2 mars 2015, 17:54:46 (UTC+0100) ****************** fin umount cifs **************

Donc en gros:

  • Il ne lance pas le script K01network-manager
  • Avant de tenter le démontage il a toujours une IP mais plus de route (donc forcement tous les paquets se perdent!)
  • Il met plus de 2 minutes à démonter mon partage.

et avec :

Moi je suis sous Wheezy.

Mais il a peut être du mal si un fichier est utilisé sur ce point de montage, ou si un répertorie est encore utilisé …

Justement le:

est là pour voir si rien n’utilise le montage.

Et j’ai bien fait attention pour ces tests justement, que rien ne soit lancé.