TIP : dé-verrouiller à coup sûr un fichier partagé via CIFS sur Isilon

Nous avons migré assez récemment un de nos très gros volumes “bureautique” partagé (voir ici). A cette occasion, même si tout s’est techniquement très bien passé, nous sommes retombé sur des considérations bassement opérationnelles vis à vis du quotidien de nos chers utilisateurs. Immanquablement, certains fichiers très utilisés sur ce partage sont régulièrement verrouillés par des personnes qui quittent leur bureau en fin de journée en oubliant de les fermer. Cela génère quelques appels par jours à notre centre d’appel qui se charge de faire sauter le verrou pour libérer l’accès au dit fichier.

Historiquement, nous avions laissé les instructions d’utiliser la MMC Windows connectée au “serveur CIFS” et de fermer les fichiers ouverts après une recherche dans la section ad-hoc. Sauf qu’avec Isilon, le comportement de cette MMC a changé.

Il a donc fallu s’adapter…

Isilon et ses serveurs CIFS

Contrairement aux autres serveurs de fichiers CIFS que nous avons été amenés à utiliser (Windows Server puis têtes NAS EMC Celerra), Isilon ne propose pas une instance unique de serveur CIFS, mais autant de serveurs que de noeuds de cluster exposés aux connexions CIFS (7 dans notre cas). De plus, la technologie d’Isilon ne semble pas maintenir de liste commune des verrous de fichiers ouverts entre les différents noeuds pour les services CIFS. Les verrous, par contre, fonctionnent bien puisque qu’un utilisateur connecté à l’instant T sur un noeud particulier ne peux pas accéder un un fichier verrouillé en lecture/écriture sur un autre Noeud.

En somme, il n’existe pas, via les API classiques des serveurs de fichiers CIFS, de liste cohérente et complète des fichiers verrouillés. Cela veut dire dans la pratique que suivant sur quel noeud vous allez être dirigé en connectant le module de gestion des fichiers ouverts (via la MMC), vous aurez des listes incomplètes et différentes les unes des autres. Pas génial pour un service de support utilisateurs :(

Passez en ligne de commande …

La seule option à notre connaissance consiste en fait à passer par l’intermédiaire de la ligne de commande et utiliser la primitive “isi_for_array”. Pour pouvoir libérer un fichier verrouillé sur Isilon, il faut donc d’abord le repérer, identifier le noeud sur lequel il est effectivement locké, puis faire sauter le verrou sur le noeud en question.

Pour identifier le fichier, on prend les bonnes habitudes que connaissent les Unixiens, un petit “pipe grep” pour retrouver le bon :

Une fois le numéro de fichier “ouvert” trouvé (il apparaît en tête de ligne), vous forcez la suppression du lock sur le bon noeud :

Sur l’exemple ci-dessus, il s’agissait du noeud 3, dont on spécifie le numéro après l’argument “-n”. Le numéro de verrou est indiqué après la directive “close”.

Evidemment, ça ne remplace pas la simplicité d’accès à une console MMC standard, mais au moins, cela permet de faire le job, en attendant, peut-être une évolution du code d’Isilon dans le bon sens.

Démarrer la discussion sur le forum vBlog.io