Làm thế nào để sao chép 40TB dữ liệu?


17

Tôi đã thừa hưởng một cụm nghiên cứu với ~ 40TB dữ liệu trên ba hệ thống tệp. Dữ liệu kéo dài gần 15 năm và rất có thể có một số lượng lớn các bản sao khi các nhà nghiên cứu sao chép dữ liệu của nhau vì những lý do khác nhau và sau đó chỉ cần giữ lại các bản sao.

Tôi biết về các công cụ khử trùng như fdupes và rmlint. Tôi đang cố gắng tìm một cái sẽ hoạt động trên một tập dữ liệu lớn như vậy. Tôi không quan tâm nếu phải mất hàng tuần (hoặc thậm chí vài tháng) để thu thập dữ liệu tất cả dữ liệu - tôi có thể sẽ điều chỉnh nó bằng mọi cách để dễ dàng trên các hệ thống tệp. Nhưng tôi cần tìm một công cụ nào đó siêu hiệu quả với RAM hoặc có thể lưu trữ tất cả dữ liệu trung gian mà nó cần trong các tệp thay vì RAM. Tôi giả sử rằng RAM của tôi (64GB) sẽ cạn kiệt nếu tôi thu thập dữ liệu qua tất cả dữ liệu này dưới dạng một bộ.

Tôi đang thử nghiệm với fdupes trên cây 900 GB. Đó là 25% trong suốt quá trình và việc sử dụng RAM đã dần tăng lên trong suốt thời gian qua, bây giờ là 700MB.

Hoặc, có cách nào để chỉ đạo một quy trình sử dụng RAM ánh xạ đĩa để có sẵn nhiều hơn và nó không sử dụng RAM hệ thống?

Tôi đang chạy CentOS 6.


Các hệ thống tập tin là XFS, trong trường hợp có liên quan. Đó là, tôi biết đó không phải là một fs có khả năng khử trùng như XFS.
Michael Stauffer

Tại sao bạn lo lắng về RAM ngay từ đầu? Hệ điều hành có các thuật toán quản lý bộ nhớ riêng và thực tế là việc sử dụng RAM đang "leo lên" không có nghĩa là cuối cùng nó sẽ ăn hết RAM của bạn. Tôi khá chắc chắn rằng nó sẽ không xảy ra.
Art Gertner

1
Tôi không biết các công cụ chuyên dụng hoạt động như thế nào, nhưng bạn có thể tính toán hàm băm cho mỗi tệp và đăng nhập nó cùng với đường dẫn tệp, sau đó sắp xếp theo băm và sao chép. Nó có thể thực hiện được với một tập lệnh Python đơn giản hoặc thậm chí có thể bằng Bash. Việc sử dụng RAM phải ở mức tối thiểu ngoại trừ bước sắp xếp, nhưng tôi đoán bạn có thể sử dụng một số loại hợp nhất được sửa đổi để giữ cho nó ở mức thấp hợp lý.
gronostaj

1
Có, công cụ chuyên dụng tính toán hàm băm, nhưng trước tiên hãy thực hiện những việc như xem kích thước tệp và chỉ băm phần đầu của tệp để giới hạn số lượng băm đầy đủ cần tính toán.
Michael Stauffer

Đối với RAM, tôi đã lo lắng về việc làm chậm máy chủ tệp - xem nhận xét của tôi bên dưới để Trả lời.
Michael Stauffer

Câu trả lời:


4

Hoặc, có cách nào để chỉ đạo một quy trình sử dụng RAM ánh xạ đĩa để có sẵn nhiều hơn và nó không sử dụng RAM hệ thống?

Vâng, nó được gọi là ổ đĩa trao đổi. Bạn có thể đã có một. Nếu bạn lo lắng về việc hết RAM thì tăng lên đây là một nơi tốt để bắt đầu. Nó hoạt động tự động mặc dù vậy không cần phải làm gì đặc biệt.

Tôi sẽ không lo lắng về fdupes. Hãy thử nó, nó sẽ làm việc mà không có vấn đề.


Tôi đã nghĩ rằng việc dựa vào trao đổi sẽ làm chậm toàn bộ hệ thống - đó là một máy chủ tệp bận rộn. Nhưng có lẽ không đủ để lo lắng? Tôi có thể sử dụng ulimit để ngăn quá trình sử dụng nhiều hơn ram hệ thống trong mọi trường hợp, tôi cho rằng, là một sự không an toàn. Nhưng có vẻ như krowe và smc không nghĩ rằng fdupes sẽ sử dụng nhiều ram như vậy, vì vậy tôi nên thử nó.
Michael Stauffer

1

tìm kiếm các bản sao dựa trên hashkey hoạt động tốt và rất nhanh.

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

0

Viết một ứng dụng nhanh để đi bộ trên cây, đẩy (băm, mtime) => filepath vào từ điển hoặc đánh dấu tệp để xóa nếu mục nhập đã tồn tại. Hàm băm sẽ chỉ là MD5 được tính trên N byte đầu tiên. Bạn có thể thực hiện một vài lần chuyền khác nhau, với một hàm băm trên một chữ N nhỏ và sau đó là một hàm băm trên một chữ N lớn.

Bạn có thể có thể làm điều này trong ít hơn hai mươi hoặc ba mươi dòng Python (sử dụng os.walk ()).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.