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.trr
dans 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.trr
où ~
représente mon répertoire dans le serveur de fichiers, /export/home/myusername
. Après l'avoir copié, je l'utilise habituellement du -h
pour vérifier qu'il /home/myusername/mysimulation1/traj.trr
a 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 -h
donnent 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.trr
taille 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 -h
commutateur) sur les deux traj.trr
fichiers, 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 -h
signaleparfoisque les deuxtraj.trr
fichiers 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 -h
est la suivante, respectivement:
20G traj.trr
28G traj.trr
Je crois que le premier (c'est-à-dire le traj.trr
sur 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 cp
transfert é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 -h
commutateur donné à du
:
20717480 traj.trr
28666688 traj.trr
Pouvez-vous penser à une raison de la différence?
Si, par une chance improbable, du
est en quelque sorte dysfonctionnement, je peux être d'accord avec cela. Mais je dois vraiment m'assurer que la copie de traj.trr
sur 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.trr
corrompre 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
.
md5sum
sur 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 du
indique 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 -h
indique que les deux fichiers font 20 Go. De même, ls -l
dit 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
).
md5sum
ousha1sum
sur les fichiers. Correspondent-ils?