Question

Quelle est la meilleure (plus rapide) pour déterminer si un point de montage Samba est mort sur Linux? Je dois le faire en C. appels système comme statfs (), bloc statvfs () pendant 30-40 secondes lorsqu'il est appelé sur une monture rassis, et ils ne reviennent même pas une erreur dans ce cas. stat () semble échouer plus vite que d'autres (environ 10 s) et renvoie une erreur. point de montage peut être rassis parce que l'autre hôte est descendu ou démon Samba, il a été tué. Tout conseil est apprécié ..

Était-ce utile?

La solution 3

Je réponds à ma propre question. L'objectif était de réduire au minimum le temps passé par plusieurs processus qui tentent d'accéder mountpoints rassis. Normalement, les appels système termineraient dans le temps la seconde. Le blocage des actions rassis pendant 10 secondes, ou même, disons, 3 sec n'était pas acceptable parce que ces appels sont effectués en plusieurs endroits, plusieurs fois et le temps de retard accumule. Donc, je fini par écrire un processus de surveillance, qui vérifie tous les supports n secondes et les démonte si elles sont inaccessibles. Je lis aussi les informations de mon configs en disant que les systèmes de fichiers sont censés être à distance (montée) et vérifier mtab - si elles ne sont pas là, il y a une erreur. Code de vérification mtab complète dans un temps la seconde. A pris un jour ou deux pour mettre en œuvre, mais fonctionne très bien pour moi.

Autres conseils

Vous pouvez définir une alarme (voir alarm() et setitimer()) que les temps après quelques secondes.

Eh bien, je ne sais pas comment faire un enregistrement plus rapide, mais je vous suggère de vérifier tous les points de montage en même temps, en parallèle, de sorte que vous aurez toujours le même temps total, même avec de nombreux supports de samba .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top