Dans une offre d'emploi récente pour un administrateur Unix général dans un centre de données, une des exigences énumérées était de déplacer des fichiers actifs dans un centre de données. Qu'est-ce que cela signifie et comment peut-on déplacer des fichiers actifs ?
Réponses
Trop de publicités?Déplacer des fichiers en direct... pour autant que je sache, aucun administrateur sain d'esprit n'essaierait de le faire (non pas que la plupart des administrateurs soient complètement sains d'esprit). Habituellement, le fichier est verrouillé de sorte que vous ne pouvez pas le déplacer jusqu'à ce que le système d'exploitation ou l'application le libère, et si vous déplacez un fichier actif, certaines applications vont planter et/ou corrompre des données.
Il y a de fortes chances que l'annonce ait été mal rédigée ou qu'elle ait été postée par quelqu'un qui ne sait pas de quoi il parle (ou encore que ce soit un bon indice de la raison pour laquelle un ancien titulaire du poste s'est enfui en hurlant).
Ou bien ils restent vagues et parlent de migration en direct de machines virtuelles, de services de basculement, de mise en grappe, etc., mais la publicité ne fait que spéculer.
La seule chose que vous pouvez faire si vous êtes intéressé par le poste est de postuler et, lors de l'entretien, de leur demander ce qu'ils veulent dire exactement, car vous ne connaissez aucun moyen sûr de déplacer un fichier en cours d'utilisation sans mécanismes supplémentaires de basculement ou de migration en direct des machines virtuelles pour y parvenir. Voulaient-ils dire qu'il est possible d'installer un nouveau serveur et de mettre hors service un serveur actuellement en production ?
Je suis d'accord avec les autres réponses que cette question est trop vague, et doit être clarifiée.
Si l'on part du principe que déplacer un "fichier actif" signifie déplacer un fichier qui est actuellement ouvert par un processus qui est en train de le lire ou d'y écrire, ce n'est généralement pas un problème compte tenu de certains paramètres. Lorsqu'un programme ouvre un fichier, il le fait généralement en se référant à un nom de fichier. Dans notre exemple, nous utilisons "/var/log/monimportant.log". Ce nom de fichier n'est en fait qu'un pointeur vers un inode sur le disque. Une fois que le processus a ouvert ce fichier, il importe peu que vous supprimiez cette entrée de répertoire vers l'inode, ou que vous ajoutiez une nouvelle entrée de répertoire pointant vers ce même inode. Et le déplacement d'un fichier peut souvent être juste cela : supprimer une entrée de répertoire à un inode et en ajouter une autre. Je dis souvent au lieu de toujours car ce n'est PAS vrai si vous essayez de déplacer le fichier d'un système de fichiers à un autre.
Notez que c'est ainsi que fonctionne la rotation des journaux. Le fichier dans lequel un processus est probablement en train d'écrire est déplacé. Le processus continue à écrire dans le fichier même après qu'il ait été déplacé. Puis, un peu plus tard, le processus est redémarré ou reçoit un signal HUP, ce qui déclenche l'ouverture d'un nouveau fichier à l'emplacement d'origine.