Sou estudante de química computacional com acesso a um cluster Linux. O cluster consiste em um servidor de arquivos muito grande (25 TB), ao qual várias dezenas de nós de computação estão conectados. Cada nó de computação consiste em 8 a 24 núcleos Intel Xeon. Cada nó de computação também contém um disco local de cerca de 365 TB.
Como o servidor de arquivos é acessado rotineiramente por uma dúzia de usuários no grupo de pesquisa, o servidor de arquivos é usado principalmente para armazenamento de arquivos a longo prazo (o backup é feito todas as noites, enquanto o backup dos discos locais dos nós de computação nunca é feito). Assim, o administrador do sistema nos instruiu a executar simulações nos discos locais - que têm E / S mais rápidas que o servidor de arquivos - para não diminuir a velocidade do servidor de arquivos para os outros usuários.
Portanto, executo simulações nos discos locais e, depois que elas terminam, copio os arquivos de trajetória - estou executando simulações de dinâmica molecular (MD) - no servidor de arquivos para armazenamento. Suponha que eu tenha um arquivo de trajetória chamado traj.trr
em um diretório no disco local de um nó /home/myusername/mysimulation1/traj.trr
,. Para armazenamento de longo prazo, eu sempre copio traj.trr
para um diretório no servidor de arquivos,, ~/mysimulation1/traj.trr
onde ~
representa meu diretório no servidor de arquivos /export/home/myusername
,. Depois de copiá-lo, costumo usar du -h
para verificar /home/myusername/mysimulation1/traj.trr
se o mesmo tamanho de arquivo é ~/mysimulation1/traj.trr
. Dessa forma, posso ter pelo menos razoavelmente certeza de que a transferência para o servidor de arquivos foi bem-sucedida. Por exemplo:
cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Se as duas chamadas du -h
tiverem o mesmo tamanho de arquivo legível por humanos, posso ter certeza razoável de que a transferência / cópia foi bem-sucedida. (Meus traj.trr
arquivos típicos variam em tamanho de 15 a 20 GB, dependendo da simulação exata que eu executei.) Se eu executar du
(ou seja, sem a -h
opção) nos dois traj.trr
arquivos, seus tamanhos em bytes são geralmente muito, muito semelhantes - - geralmente dentro de apenas alguns bytes. Eu tenho usado esse método geral há um ano e meio, sem problemas.
No entanto, recentemente , encontrei o seguinte problema: às vezes,du -h
informa que os doistraj.trr
arquivos são diferentes em tamanho por vários GB. Aqui está um exemplo:
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
A saída das duas chamadas para du -h
é a seguinte, respectivamente:
20G traj.trr
28G traj.trr
Acredito que o primeiro (ou seja, o traj.trr
disco local /home/myusername/mysimulation1/
) tenha o tamanho correto de arquivo, pois minhas trajetórias de simulação devem ter entre 15 e 20 GB cada. Mas então como o arquivo no servidor de arquivos pode ser realmente maior ? Eu podia ver como poderia ser menor, se de alguma forma a cp
transferência falhou. Mas não vejo como poderia ser maior .
Recebo uma saída semelhante quando executo os mesmos comandos acima, mas sem a -h
opção fornecida du
:
20717480 traj.trr
28666688 traj.trr
Você consegue pensar em alguma razão para a diferença?
Se, por alguma chance improvável, du
estiver de alguma forma com defeito, posso concordar com isso. Mas eu realmente preciso ter certeza de que a cópia do traj.trr
servidor de arquivos esteja completa e idêntica à sua versão de origem no disco local. Preciso excluir o arquivo local para ter espaço em disco local suficiente para executar novas simulações, mas não posso me permitir que a versão do traj.trr
servidor de arquivos seja corrompida.
O formato de arquivo .trr (do pacote de dinâmica molecular do Gromacs) é um formato binário, não texto. Portanto, não tenho certeza se os arquivos podem ser comparados com segurança por um programa como o diff
.
md5sum
os dois arquivos. As duas somas de verificação coincidem. Então eu acho que isso significa que os dois arquivos são iguais?
ls -l
? O comando du
relata quanto espaço no disco é usado para o seu arquivo, e não o tamanho dele. O tamanho do disco pode ser influenciado pelo seu sistema de arquivos e suas estratégias de alocação.
ls -l -h
diz que os dois arquivos têm 20 GB. Da mesma forma, ls -l
diz que os dois arquivos são 21214683940 bytes. Acho que os arquivos têm o mesmo tamanho, mas não usam a mesma quantidade de espaço em disco (de acordo com du
).
md5sum
ousha1sum
nos arquivos. Eles combinam?