Je suis un étudiant diplômé en chimie computationnelle avec accès à un cluster Linux. Le cluster est constitué d'un très grand serveur de fichiers (25 To), auquel plusieurs dizaines de nœuds de calcul sont connectés. Chaque nœud de calcul se compose de 8 à 24 cœurs Intel Xeon. Chaque nœud de calcul contient également un disque local d'environ 365 To.
Étant donné que le serveur de fichiers est régulièrement consulté par une douzaine d'utilisateurs du groupe de recherche, le serveur de fichiers est principalement utilisé pour le stockage de fichiers à long terme (il est sauvegardé tous les soirs, tandis que les disques locaux des nœuds de calcul ne sont jamais sauvegardés). Ainsi, l'administrateur système nous a demandé d'exécuter des simulations sur les disques locaux - qui ont des E / S plus rapides que le serveur de fichiers - afin de ne pas ralentir le serveur de fichiers pour les autres utilisateurs.
Donc, j'exécute des simulations sur les disques locaux, puis, une fois qu'elles sont terminées, je copie les fichiers de trajectoire - j'exécute des simulations de dynamique moléculaire (MD) - sur le serveur de fichiers pour les stocker. Supposons que j'ai un fichier de trajectoire appelé traj.trrdans un répertoire sur le disque local d'un nœud, /home/myusername/mysimulation1/traj.trr. Pour le stockage à long terme, je copie toujours traj.trrà un répertoire dans le serveur de fichiers, ~/mysimulation1/traj.trroù ~représente mon répertoire dans le serveur de fichiers, /export/home/myusername. Après l'avoir copié, je l'utilise habituellement du -hpour vérifier qu'il /home/myusername/mysimulation1/traj.trra la même taille de fichier que ~/mysimulation1/traj.trr. De cette façon, je peux être au moins raisonnablement sûr que le transfert vers le serveur de fichiers a réussi. Par exemple:
cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Si les deux appels du -hdonnent la même taille de fichier lisible par l'homme, je peux être raisonnablement sûr que le transfert / la copie a réussi. (La traj.trrtaille de mes fichiers typiques varie d'environ 15 à 20 Go, selon la simulation exacte que j'ai exécutée.) Si je lance du(c'est-à-dire sans le -hcommutateur) sur les deux traj.trrfichiers, leurs tailles en octets sont généralement très, très similaires - - généralement en quelques octets seulement. J'utilise cette méthode globale depuis un an et demi, sans aucun problème.
Cependant, récemment, j'ai rencontré le problème suivant:du -hsignaleparfoisque les deuxtraj.trrfichiers sont de taille différente de plusieurs Go. Voici un exemple:
cd /home/myusername/mysimulation1/ # this is the local disk
cp -v traj.trr ~/mysimulation1/
du traj.trr -h
cd ~/mysimulation1/ # this is the fileserver
du traj.trr -h
La sortie des deux appels à du -hest la suivante, respectivement:
20G traj.trr
28G traj.trr
Je crois que le premier (c'est-à-dire le traj.trrsur le disque local /home/myusername/mysimulation1/) est de la bonne taille de fichier, car mes trajectoires de simulation devraient être d'environ 15 à 20 Go chacune. Mais alors, comment le fichier sur le serveur de fichiers pourrait-il être plus volumineux ? Je pouvais voir comment il pourrait être plus petit, si le cptransfert échouait. Mais je ne vois pas comment cela pourrait être plus important .
J'obtiens une sortie similaire lorsque j'exécute les mêmes commandes que ci-dessus, mais sans le -hcommutateur donné à du:
20717480 traj.trr
28666688 traj.trr
Pouvez-vous penser à une raison de la différence?
Si, par une chance improbable, duest en quelque sorte dysfonctionnement, je peux être d'accord avec cela. Mais je dois vraiment m'assurer que la copie de traj.trrsur le serveur de fichiers est complète et identique à sa version source sur le disque local. J'ai besoin de supprimer le fichier local afin d'avoir suffisamment d'espace disque local pour exécuter de nouvelles simulations, mais je ne peux pas me permettre de traj.trrcorrompre la version de sur le serveur de fichiers.
Le format de fichier .trr (du package de dynamique moléculaire Gromacs) est un format binaire, pas de texte. Ainsi, je ne sais pas si les fichiers peuvent être comparés de manière fiable par un programme tel que diff.
md5sumsur les deux fichiers. Les deux sommes de contrôle correspondent. Donc je suppose que cela signifie que les deux fichiers sont identiques?
ls -l? La commande duindique la quantité d'espace sur le disque utilisée pour votre fichier, et non sa taille. La taille du disque peut être influencée par votre système de fichiers et ses stratégies d'allocation.
ls -l -hindique que les deux fichiers font 20 Go. De même, ls -ldit que les deux fichiers font 21214683940 octets. Je suppose donc que les fichiers sont de la même taille, mais n'utilisent pas la même quantité d'espace disque (selon du).
md5sumousha1sumsur les fichiers. Correspondent-ils?