web-dev-qa-db-fra.com

mount.cifs: Comment éviter les longs délais d'attente après le changement d'IP (câblé <=> wifi)

Lors de la déconnexion de mon ordinateur portable de la station d’accueil avec sa connexion Ethernet câblée je laisse le gestionnaire de réseau allumer automatiquement la radio wifi . En entrant dans la station d'accueil, je le laisse éteindre le wifi car la connexion filaire est préférable.

Le problème est le suivant: tous les accès aux fichiers ou aux dossiers des partages cifs que j'ai montés avant le blocage pendant 120 secondes. Cela conduit à des applications bloquées, si elles accèdent à ces partages (comme des sessions Shell dans ces répertoires, des gestionnaires de fichiers avec un onglet ouvert là-bas, etc.). Leurs processus se bloquent dans le terrible état ininterruptible .

Le journal du noyau indique: noyau: CIFS VFS: le serveur n'a pas répondu dans les 120 secondes. Reconnexion ...

Question: Comment puis-je réduire ce délai afin de ne pas perdre plus de 2 minutes de café à chaque fois que je bascule vers/depuis la station d'accueil car toutes mes applications sont bloquées?

Plus de détails:

  • Les deux interfaces ont des adresses IP différentes sur le même sous-réseau et peuvent évidemment atteindre le serveur de fichiers.
  • exemple de ligne/etc/fstab:

    // serveur/install/mnt/net/install cifs uid = bob, identifiants =/etc/cifs-credentials, _netdev, utilisateur, logiciel 0 0

  • exemple de sortie de mount | grep cifs:

    // serveur/install sur/mnt/net/install type cifs (rw, nosuid, nodev, noexec, relatime, vers = 1.0, cache = strict, nom d'utilisateur = bob, domaine = bobsdom, uid = 1000, identifiant de tâche, gid = 0 , noforcegid, addr = [serverIP], unix, posixpaths, serverino, acl, rsize = 1048576, wsize = 65536, actimeo = 1, _netdev, utilisateur)

Ce que j'ai essayé:

  • Les options de montage "soft" et "hard". Ils ne modifient pas ce comportement, même si le texte de la page de manuel sur "soft" suggère que
  • Assurez-vous qu'il n'y a pas de perte de paquets sur les deux interfaces et que la latence et la bande passante sont excellentes (Ethernet GBit et WiFi 802.11ac avec un signal puissant). Cela me permet d’être sûr que le délai d’attente de CIFs est vraiment dépassé.
  • Le serveur (samba 3.6) n’a aucun problème de réseau ni de perte de paquets.
  • Googlé pour un bouton dans les cifs afin de réduire le délai d'attente à quelque chose de raisonnable comme 15sec. Seulement trouvé pour Windows . Il s'appelle HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\SessTimeout et est exactement ce que je veux. Il est intéressant de noter que MS a également réduit ce délai dans Win 8.1 à 20 secondes ...
  • Utiliser les métriques de route au lieu d'activer/désactiver le wifi pour avoir les deux routes activées et laisser le noyau préférer la route Ethernet. Cependant, cette approche est défectueuse car le noyau envoie ensuite des réponses aux paquets arrivant via une connexion sans fil sur l’interface filaire. Pourrait être résolu avec un peu de magie "règle ip" mais je préférerais vraiment basculer simplement la radio wifi.
2
doublehelix

Une solution de travail consiste à définir les deux interfaces sur la même adresse IP . De cette façon, cifs n’a pas de délai d’expiration, car il n’est pas nécessaire de rétablir la connexion à partir d’une adresse IP différente sur le même sous-réseau.

Cela signifie également que les connexions SSH sont maintenues actives pendant les <=> commutateurs Wi-Fi câblés sans avoir besoin de outils sophistiqués comme Mosh .

Il a aussi des inconvénients:

  • Requiert des adresses IP statiques au lieu de DHCP
  • Conflit IP si mes deux interfaces étaient simultanément actives. Mon script de gestionnaire de résea empêche cela, cependant.
2
doublehelix