Tôi là một sinh viên tốt nghiệp ngành hóa học tính toán với quyền truy cập vào một cụm Linux. Cụm này bao gồm một máy chủ tệp rất lớn (25 TB), trong đó vài chục nút tính toán được kết nối. Mỗi nút tính toán bao gồm 8 đến 24 lõi Intel Xeon. Mỗi nút tính toán cũng chứa một đĩa cục bộ khoảng 365 TB.
Do máy chủ tệp được truy cập thường xuyên bởi hàng tá người dùng trong nhóm nghiên cứu, nên máy chủ chủ yếu được sử dụng để lưu trữ tệp dài hạn (được sao lưu hàng đêm, trong khi các đĩa cục bộ của các nút tính toán không bao giờ được sao lưu). Do đó, quản trị viên hệ thống đã hướng dẫn chúng tôi chạy mô phỏng trên các đĩa cục bộ - có I / O nhanh hơn máy chủ tệp - để không làm chậm máy chủ tệp cho người dùng khác.
Vì vậy, tôi chạy mô phỏng trên các đĩa cục bộ và sau đó, sau khi chúng kết thúc, tôi sao chép các tệp quỹ đạo - Tôi đang chạy mô phỏng động lực phân tử (MD) - vào máy chủ để lưu trữ. Giả sử tôi có một tệp quỹ đạo được gọi traj.trr
trong một thư mục trên đĩa cục bộ của một nút , /home/myusername/mysimulation1/traj.trr
. Để lưu trữ lâu dài, tôi luôn sao chép traj.trr
vào một thư mục trong máy chủ tệp ~/mysimulation1/traj.trr
, trong đó ~
đại diện cho thư mục của tôi trong máy chủ tệp , /export/home/myusername
. Sau khi sao chép nó, sau đó tôi thường xuyên sử dụng du -h
để xác minh rằng /home/myusername/mysimulation1/traj.trr
có cùng kích thước tệp như ~/mysimulation1/traj.trr
. Bằng cách này, tôi ít nhất có thể chắc chắn một cách hợp lý rằng việc chuyển đến máy chủ tệp đã thành công. Ví dụ:
cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Nếu hai cuộc gọi để du -h
cung cấp cùng kích thước tệp có thể đọc được của con người, thì tôi có thể chắc chắn chắc chắn rằng việc chuyển / sao chép đã thành công. (Các traj.trr
tệp điển hình của tôi có kích thước từ khoảng 15 đến 20 GB, tùy thuộc vào mô phỏng chính xác mà tôi đã chạy.) Nếu tôi chạy du
(nghĩa là không có công -h
tắc) trên hai traj.trr
tệp, kích thước của chúng theo byte thường rất, rất giống nhau - - thường chỉ trong một vài byte. Tôi đã sử dụng phương pháp tổng thể này trong một năm rưỡi qua, không có vấn đề gì.
Tuy nhiên, gần đây tôi gặp phải vấn đề sau: đôi khidu -h
báo cáo rằng haitraj.trr
tệp có kích thước khác nhau khoảng vài GB. Đây là một ví dụ:
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
Đầu ra từ hai cuộc gọi đến du -h
như sau, tương ứng:
20G traj.trr
28G traj.trr
Tôi tin rằng cái trước đây (tức là traj.trr
trong đĩa cục bộ /home/myusername/mysimulation1/
) là kích thước tệp chính xác, vì quỹ đạo mô phỏng của tôi dự kiến sẽ có khoảng 15 đến 20 GB mỗi cái. Nhưng làm thế nào để tập tin trên máy chủ tập tin thực sự lớn hơn ? Tôi có thể thấy làm thế nào nó có thể nhỏ hơn, nếu bằng cách nào đó việc cp
chuyển tiền thất bại. Nhưng tôi không thấy làm thế nào nó thực sự có thể lớn hơn .
Tôi nhận được đầu ra tương tự khi tôi thực hiện các lệnh tương tự như trên, nhưng không có công -h
tắc được đưa ra cho du
:
20717480 traj.trr
28666688 traj.trr
Bạn có thể nghĩ ra bất kỳ lý do cho sự khác biệt?
Nếu, bởi một số cơ hội không thể, du
bằng cách nào đó bị trục trặc, tôi có thể ổn với điều đó. Nhưng tôi thực sự cần phải chắc chắn rằng bản sao của traj.trr
máy chủ tệp đã hoàn chỉnh và giống hệt với phiên bản nguồn của nó trên đĩa cục bộ. Tôi cần xóa tệp cục bộ để có đủ dung lượng đĩa cục bộ để chạy các mô phỏng mới, nhưng tôi không đủ khả năng để phiên bản traj.trr
trên máy chủ tệp bị hỏng.
Các định dạng tập tin .trr (từ động lực phân tử gói Gromacs) là một định dạng nhị phân, không phải văn bản. Vì vậy, tôi không chắc chắn nếu các tập tin có thể được so sánh đáng tin cậy bởi một chương trình như diff
.
md5sum
trên hai file. Hai tổng kiểm khớp nhau. Vì vậy, tôi đoán điều này có nghĩa là hai tập tin là như nhau?
ls -l
? Lệnh du
báo cáo có bao nhiêu dung lượng trên đĩa được sử dụng cho tệp của bạn, chứ không phải tệp của bạn lớn như thế nào. Kích thước trên đĩa có thể bị ảnh hưởng bởi hệ thống tệp của bạn và các chiến lược phân bổ của nó.
ls -l -h
nói rằng cả hai tệp đều là 20 GB. Tương tự, ls -l
nói rằng cả hai tệp là 21214683940 byte. Vì vậy, tôi đoán các tệp có cùng kích thước, nhưng không sử dụng cùng một dung lượng đĩa (theo du
).
md5sum
hoặcsha1sum
trên các tập tin. Họ có hợp nhau không?