Я аспирант вычислительной химии с доступом к кластеру 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на файлы. Они совпадают?