Soy un estudiante graduado de química computacional con acceso a un clúster de Linux. El clúster consta de un servidor de archivos muy grande (25 TB), al que están conectadas varias docenas de nodos de cómputo. Cada nodo de cómputo consta de 8 a 24 núcleos Intel Xeon. Cada nodo de proceso también contiene un disco local de aproximadamente 365 TB.
Dado que el servidor de archivos es accedido rutinariamente por una docena de usuarios en el grupo de investigación, el servidor de archivos se utiliza principalmente para el almacenamiento de archivos a largo plazo (se realiza una copia de seguridad todas las noches, mientras que los discos locales de los nodos de cómputo nunca se respaldan). Por lo tanto, el administrador del sistema nos ha indicado que ejecutemos simulaciones en los discos locales, que tienen E / S más rápidas que el servidor de archivos, para no ralentizar el servidor de archivos para los demás usuarios.
Entonces, ejecuto simulaciones en los discos locales y luego, una vez que terminan, copio los archivos de trayectoria (estoy ejecutando simulaciones de dinámica molecular (MD)) en el servidor de archivos para su almacenamiento. Supongamos que tengo un archivo llamado trayectoria traj.trr
en un directorio en el disco local de un nodo, /home/myusername/mysimulation1/traj.trr
. Para el almacenamiento a largo plazo, siempre copio traj.trr
a un directorio en el servidor de archivos, ~/mysimulation1/traj.trr
donde ~
representa mi directorio en el servidor de archivos, /export/home/myusername
. Después de copiarlo, lo uso habitualmente du -h
para verificar que /home/myusername/mysimulation1/traj.trr
tenga el mismo tamaño de archivo que ~/mysimulation1/traj.trr
. De esta manera, puedo estar al menos razonablemente seguro de que la transferencia al servidor de archivos fue exitosa. Por ejemplo:
cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Si las dos llamadas du -h
dan el mismo tamaño de archivo legible por humanos, entonces puedo estar razonablemente seguro de que la transferencia / copia fue exitosa. (Mis traj.trr
archivos típicos varían en tamaño de aproximadamente 15 a 20 GB, dependiendo de la simulación exacta que he ejecutado). Si ejecuto du
(es decir, sin el -h
interruptor) en los dos traj.trr
archivos, sus tamaños en bytes son generalmente muy, muy similares. - generalmente dentro de unos pocos bytes. He estado usando este método general durante el último año y medio, sin problemas.
Sin embargo, recientemente me he encontrado con el siguiente problema: a vecesdu -h
informa quetraj.trr
varios archivos tienen un tamaño diferente en varios GB. Aquí hay un ejemplo:
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
El resultado de las dos llamadas a du -h
es el siguiente, respectivamente:
20G traj.trr
28G traj.trr
Creo que el primero (es decir, traj.trr
en el disco local /home/myusername/mysimulation1/
) es el tamaño de archivo correcto, ya que se espera que mis trayectorias de simulación sean de aproximadamente 15 a 20 GB cada una. Pero entonces, ¿cómo podría el archivo en el servidor de archivos en realidad ser más grande ? Pude ver cómo podría ser más pequeño, si de alguna manera la cp
transferencia fallara. Pero no veo cómo podría ser más grande .
Obtengo resultados similares cuando ejecuto los mismos comandos que arriba, pero sin el -h
interruptor dado a du
:
20717480 traj.trr
28666688 traj.trr
¿Se te ocurre alguna razón para la diferencia?
Si, por alguna improbable oportunidad, de du
alguna manera funciona mal, puedo estar de acuerdo con eso. Pero realmente necesito asegurarme de que la copia del traj.trr
servidor de archivos esté completa e sea idéntica a su versión de origen en el disco local. Necesito eliminar el archivo local para tener suficiente espacio en el disco local para ejecutar nuevas simulaciones, pero no puedo permitir que la versión del traj.trr
servidor de archivos esté dañada.
El formato de archivo .trr (del paquete de dinámica molecular Gromacs) es un formato binario, no texto. Por lo tanto, no estoy seguro si los archivos pueden ser comparados de manera confiable por un programa como diff
.
md5sum
en los dos archivos. Las dos sumas de verificación coinciden. Entonces, ¿supongo que esto significa que los dos archivos son iguales?
ls -l
? El comando du
informa cuánto espacio en el disco se utiliza para su archivo, no qué tan grande es su archivo. El tamaño del disco puede verse influenciado por su sistema de archivos y sus estrategias de asignación.
ls -l -h
dice que ambos archivos son de 20 GB. Del mismo modo, ls -l
dice que ambos archivos son 21214683940 bytes. Así que supongo que los archivos son del mismo tamaño, pero no usan la misma cantidad de espacio en disco (según du
).
md5sum
osha1sum
en los archivos. ¿Se complementan?