Я аспирант вычислительной химии с доступом к кластеру Linux. Кластер состоит из очень большого (25 ТБ) файлового сервера, к которому подключено несколько десятков вычислительных узлов. Каждый вычислительный узел состоит из 8–24 ядер Intel Xeon. Каждый вычислительный узел также содержит локальный диск объемом около 365 ТБ.
Поскольку к файловому серверу обычно обращаются около дюжины пользователей в исследовательской группе, файловый сервер в основном используется для долгосрочного хранения файлов (резервное копирование выполняется ночью, в то время как локальные диски вычислительных узлов никогда не копируются). Таким образом, системный администратор поручил нам запускать симуляции на локальных дисках, которые имеют более быстрый ввод-вывод, чем файловый сервер, чтобы не замедлять работу файлового сервера для других пользователей.
Итак, я запускаю симуляции на локальных дисках, а затем, после их завершения, копирую файлы траектории - я запускаю симуляции молекулярной динамики (MD) - на файловый сервер для хранения. Предположим, у меня есть файл траектории, который называется traj.trr
в каталоге на локальном диске узла /home/myusername/mysimulation1/traj.trr
. Для длительного хранения я всегда копирую traj.trr
в каталог на файловом сервере ~/mysimulation1/traj.trr
, где ~
представляет мой каталог на файловом сервере /export/home/myusername
. После его копирования я обычно использую, du -h
чтобы убедиться, что у /home/myusername/mysimulation1/traj.trr
него тот же размер файла, что и у ~/mysimulation1/traj.trr
. Таким образом, я могу быть по крайней мере достаточно уверенным, что передача на файловый сервер прошла успешно. Например:
cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Если два вызова du -h
дают одинаковый читаемый человеком размер файла, то я могу быть вполне уверен, что передача / копирование прошло успешно. ( traj.trr
Размер моих типичных файлов варьируется от 15 до 20 ГБ, в зависимости от того, какую именно симуляцию я запустил.) Если я запускаю du
(т.е. без -h
переключателя) два traj.trr
файла, их размеры в байтах обычно очень и очень похожи - - обычно в течение нескольких байтов. Я использовал этот общий метод в течение последних полутора лет, без проблем.
Однако в последнее время я столкнулся со следующей проблемой: иногдаdu -h
сообщает, что дваtraj.trr
файла различаются по размеру на несколько ГБ. Вот пример:
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
Вывод из двух вызовов к du -h
выглядит следующим образом:
20G traj.trr
28G traj.trr
Я полагаю, что первый (т. Е. traj.trr
Локальный диск /home/myusername/mysimulation1/
) имеет правильный размер файла, так как мои траектории симуляции, как ожидается, будут примерно от 15 до 20 ГБ каждая. Но тогда как на самом деле файл на файловом сервере может быть больше ? Я мог видеть, как это могло быть меньше, если так или иначе cp
передача не удалась. Но я не понимаю, как это может быть на самом деле больше .
Я получаю похожий вывод, когда выполняю те же команды, что и выше, но без -h
переключателя du
:
20717480 traj.trr
28666688 traj.trr
Можете ли вы придумать причину такой разницы?
Если по какой-то маловероятной случайности du
что-то не работает, я могу согласиться с этим. Но мне просто нужно убедиться, что копия traj.trr
на файловом сервере завершена и идентична его исходной версии на локальном диске. Мне нужно удалить локальный файл, чтобы у меня было достаточно места на локальном диске для запуска новых симуляций, но я не могу позволить себе traj.trr
испортить версию на файловом сервере.
Формат .trr файла (из пакета молекулярной динамики Gromacs) представляет собой бинарный формат, а не текст. Таким образом, я не уверен, что файлы могут быть надежно сопоставлены такой программой, как diff
.
md5sum
два файла. Две контрольные суммы совпадают. Итак, я думаю, это означает, что два файла одинаковы?
ls -l
? Команда du
сообщает, сколько места на диске используется для вашего файла, а не размер вашего файла. Размер диска может зависеть от вашей файловой системы и стратегий ее размещения.
ls -l -h
говорит, что оба файла имеют размер 20 ГБ. Аналогично, ls -l
говорится, что оба файла имеют размер 21214683940 байт. Поэтому я предполагаю, что файлы имеют одинаковый размер, но не занимают одинаковое количество дискового пространства (согласно du
).
md5sum
илиsha1sum
на файлы. Они совпадают?