Sự trùng lặp ở cấp độ phân vùng


8

Các giải pháp có sẵn cho cấp độ khối hoặc trùng lặp chi tiết hơn là gì?

Có những cái dựa trên tập tin - với phương pháp "Sao chép khi ghi".

Tôi đang tìm kiếm "sao chép khi ghi" ở cấp độ khối, vì vậy tôi có thể định kỳ tìm các khối phổ biến hoặc - tốt nhất là - các phần của tệp, hợp nhất chúng và gắn cờ cho cách sử dụng CoW. Có một cái gì đó như thế này có sẵn, hoặc nó vẫn cần phải được tạo ra? Tôi không chắc chắn nếu trùng lặp Btrfs là khối / tập tin / cấp phụ? Có LessFS, nhưng tôi không chắc nó cung cấp mức độ trùng lặp nào? Có lẽ giải pháp khác?


Tôi không hiểu tại sao câu hỏi này được bình chọn. Googling cho "sao chép linux" hiển thị một danh sách các hệ thống tập tin và sản phẩm mà chúng ta không cần phải sao chép ở đây.
Kyle Jones

Googling như vậy trả về rất nhiều giải pháp làm việc ở cấp độ tập tin. Mục đích của câu hỏi này là gì, một lời khuyên phù hợp với mục đích của tôi - tốt nhất là có thể sao chép lại hai phần của tệp, không cần điều chỉnh theo cấp độ chặn. Nếu giải pháp như vậy là không có sẵn, hơn mức khối. Một điều nữa là rất nhiều thứ tạo ấn tượng về thử nghiệm - tôi dựa vào kinh nghiệm của những người dùng khác để tư vấn một số giải pháp trưởng thành.
Grzegorz Wierzowiecki

1
@GrzegorzWierzowiecki không chắc chắn nó phù hợp với dự luật, nhưng hãy kiểm tra cyphertite, chính thức hoành tráng : peeboom.us/epitome cyphertite.com
.

Câu trả lời:


3

Khi sự trùng lặp ở cấp độ khối đi, tôi nghĩ ZFS là triển khai tốt nhất chưa được kiểm chứng hiện nay. Nó thực sự không được thiết kế để tối ưu hóa sau thực tế, vì tính trùng lặp của nó (nếu được bật) được tích hợp trực tiếp vào các chức năng đọc / ghi. Do đó, nó có thể tốn một chút bộ nhớ khi tải, khi cố gắng giữ các phần có liên quan nhất của bảng sao chép trong bộ nhớ, nhưng ZFS rất tốt trong việc hạn chế tiêu thụ không quá 50% bộ nhớ, tùy thuộc vào số lượng bộ nhớ được cài đặt, có vẻ khá tùy tiện (50% của 2Gb so với 50% của 64Gb, đặc biệt là nếu có ít tác vụ người dùng cần bộ nhớ).

Tùy thuộc vào những gì bạn đang muốn sử dụng nó, bạn có một số tùy chọn:

OpenIndiana dường như có một số tùy chọn Máy tính và Máy tính tốt, dựa trên Solaris

FreeBSD (kể từ 9.0) có phiên bản ZFS khá tiên tiến (bao gồm cả sao chép) được tích hợp trong đó. Một bản phân phối có nguồn gốc FreeBSD (sau đó là MonoWall) là NAS4Free , giúp cho việc tạo ra một NAS khá dễ dàng.

Linux có một vài lựa chọn, một số có khấu trừ, một số khác thì không. Vì bạn đang tìm kiếm khoản khấu trừ , đáng chú ý nhất tôi từng thấy là zfsonlinux . Tôi không chắc tiến độ của họ là gì, hoặc dự án của họ ổn định đến mức nào, nhưng chắc chắn là có triển vọng.

Đối với bất cứ điều gì với sự trùng lặp khối một phần, tôi đã thấy KHÔNG CÓ GÌ cho đến nay báo cáo một khả năng để làm điều đó.


0

Câu hỏi của bạn hơi khó hiểu do thuật ngữ "khối", đây là một từ rất quá tải khi nói đến đĩa và hệ thống tập tin. (Nhưng bối cảnh xung quanh của bạn sẽ giúp làm rõ.) Btrfs không xử lý các "khối" hệ thống tệp có kích thước cố định, nó xử lý các "phạm vi" có kích thước thay đổi. (Mặc dù, thật khó hiểu, cũng xác định các vùng khối có kích thước thay đổi.) ZFS xử lý các "khối" hệ thống tệp, một phần hoặc chủ yếu vì làm như vậy đưa ra các vấn đề dễ giải quyết hơn đáng kể. Cả Btrfs và ZFS đều biết về các "khối" cấp đĩa, bản thân chúng là trừu tượng hóa. (Sau đó, chúng tôi cũng có "lưu trữ cấp khối", có thể có ý nghĩa khác nhau về mặt ngữ nghĩa.) Tôi có thể có những mô tả đó một chút, không đủ rõ ràng, hoặc không chính xác 100%. (Nếu bạn cần sự rõ ràng và chính xác 100% về chủ đề của các khối, giả vờ như bạn không đọc nó Nếu bạn chỉ cần một sự hiểu biết sơ bộ để tiếp tục, thì bạn nên đi thật tốt.) Điểm chính của câu trả lời này không phải là xác định hoàn hảo "khối", mà là cuộc thảo luận dưới đây, nhiều hơn trong nhà xe của tôi.

Như @killermist đã viết, ZFS thực sự hỗ trợ sao chép cấp khối [ZFS].

Nó không được bật theo mặc định trong ZFS. Bật nó lên mà không có đủ bộ nhớ liên quan đến một hiệu suất mạnh mẽ. Ngoài ra, theo giai thoại, ZFS cần một số tiền khá lớn hơn so với quy tắc sử dụng "RAM 1gb cho mỗi bộ nhớ 1tb", để phù hợp với toàn bộ hashtable trong RAM. Nhưng ngay cả như vậy, tùy thuộc vào phần cứng, bạn vẫn có thể đạt tốc độ ghi lên tới 40 MB / s. Tôi hiểu điều đó trên công nghệ kỷ nguyên 2008 chạy ~ ổ đĩa thời đại 2015. Hoàn toàn chấp nhận với tôi đối với hầu hết các dữ liệu lưu trữ. Hạn chế lớn nhất đối với sự trùng lặp của ZFS, là chưa có cách nào hay để thực hiện điều đó trong chế độ "bó / ngoại tuyến" (hay chính xác hơn là "ngoài băng"), ngoài việc bật tính năng trích xuất, sao chép mọi thứ sang một thư mục tạm thời mới trên cùng một hệ thống tệp, xóa bản gốc, sau đó di chuyển nội dung tạm thời (hiện đã bị trùng lặp) trở lại.

Sự trùng lặp Btrfs được cho là sơ sài hơn một chút, chỉ có các tiện ích của bên thứ ba hiện có sẵn để thực hiện công việc. (Nhưng sử dụng API hạt nhân được hỗ trợ tốt và / hoặc tùy chọn được hỗ trợ tốt cho cp; và bằng cách nào đó yêu cầu logic riêng của họ để xác định trùng lặp, điều mà người ta hy vọng là chính xác.) là "ngoài băng". Tuy nhiên, chi phí cho hầu hết các tiện ích là chúng giết chết hiệu năng trong khi bỏ đi - có thể mất hàng giờ, hàng ngày, thậm chí hàng tuần để hoàn thành. (Cá nhân tôi muốn giải quyết vấn đề sao chép ZFS trong băng tần chậm hơn so với việc sử dụng ổ cứng của tôi trong nhiều ngày, giả sử, kết thúc mỗi năm một lần.)

Hai giải pháp Btrfs tôi biết về việc xử lý "khối" (nhưng theo định nghĩa khác) chứ không phải là tệp, là ongdduper .

Ong, ví dụ, tự ý định nghĩa kích thước "khối" cho lần chạy đầu tiên, dựa trên bộ nhớ khả dụng và có thể các yếu tố khác. (Mặc dù tôi có thể trình bày sai mục đích, tính năng, cơ chế và ưu / nhược điểm của nó, vì tôi không sử dụng nó, tôi chỉ đánh giá nó gần đây là một tùy chọn.)

Ong được cho là hơi lai-ish, vì nó được thiết kế để chạy liên tục và không đập các đĩa quá mạnh - mặc dù về mặt kỹ thuật vẫn không "trong băng" như suy luận ZFS. Nó chỉ đơn giản là chọn ra các bản sao sau thực tế và cố gắng sao chép chúng bằng một cú chạm nhẹ. Làm việc với kích thước khối được xác định tùy ý có nghĩa là, theo thiết kế, nó sẽ phù hợp với hàm băm trong RAM. Hạn chế (có lẽ là) có thể có các phạm vi trong một "khối" giống nhau, nhưng Ong không thể khấu trừ vì "các khối" chúng ở khác nhau.

Hãy nhớ rằng ngay cả các tiện ích thực hiện cụ thể "sao chép " -level Btrfs trùng lặp (như bedup , duperemove , rmlint , và các dịch vụ khác), vẫn có thể đáp ứng yêu cầu của bạn. Tôi không thể chắc chắn, nhưng có vẻ như họ sẽ làm thế. Đó là bởi vì ngay cả một lệnh "cp --reflink = always" cũng không thực sự trùng lặp "tập tin". Nó được deduplicating btrfs mức độ . Khi một "tập tin" bị phản xạ thay đổi, Btrfs chỉ không lặp lại các mức độ thay đổi, thành các phạm vi duy nhất của riêng họ. Phần còn lại của tập tin vẫn bị trùng lặp. Đó là cách các tệp bị trùng lặp lớn vẫn có thể phân kỳ như thể các tệp duy nhất của riêng chúng, nhưng chủ yếu vẫn bị trùng lặp.

(Đây cũng là lý do tại sao nó rất khó để xác định xem một "tập tin" được reflinked hay không, bởi vì khái niệm mà thậm chí không thực sự có ý nghĩa. Tất cả các của một tập tin mức độ bản thân có thể được reflinked đến cùng mức độ khác, một khái niệm mà không có ý nghĩa, nhưng đó là một câu hỏi đặc biệt khó trả lời. Đó là lý do tại sao, trừ khi tiện ích sao chép Btrfs theo dõi những gì nó đã bị trùng lặp, không đáng để cố gắng "phát hiện" nếu một tệp đã bị sao chép. Không có thuộc tính nào giống như kiểm tra để kiểm tra. Dù sao đi nữa, việc lặp lại nó sẽ dễ dàng hơn. Ngược lại, xác định xem toàn bộ tệp có được liên kết theo cách cũ hay không, chỉ là kiểm tra số lượng st_nlink cho một inode đã cho.)

Việc thiếu "toàn bộ bản sao tệp" trên thực tế là một tính năng nội tại của tất cả các hệ thống tệp CoW hỗ trợ ảnh chụp nhanh "miễn phí" và / hoặc sao chép, và đúng cho dù là xử lý các phạm vi Btrfs, khối ZFS hay thứ gì khác. Đó là lý do tại sao một trong hai có thể là một câu trả lời cho câu hỏi của bạn. (Có ít nhất ba hệ thống tệp CoW khác có thể hoặc được lên kế hoạch để có thể thực hiện tất cả những điều mà tôi biết: nilfs2, bcachefs và xfs.)

Mặc dù bạn không đề cập đến vấn đề này, nhưng không có công nghệ chống trùng lặp theo hiểu biết của tôi, là nhận thức rõ ràng. Nói cách khác, không có trình sao chép nào biết bỏ qua siêu dữ liệu * .jpg và chỉ xem xét dữ liệu hình ảnh nén để sao chép. Tương tự như vậy, không ai trong số họ xem xét các số ma thuật tập tin (ít nhất là để xác định những gì cần xem xét cho sự trùng lặp). Đó có thể là một tính năng sát thủ - mặc dù chắc chắn yêu cầu cập nhật định nghĩa liên tục, liên tục. Và có thể rất khó để thiết kế, đồng thời coi các tệp là một bộ sưu tập M: M trừu tượng gồm các phạm vi, khối, v.v.


Để mở rộng câu trả lời cũ này, rmlint hiện là trình suy luận btrfs chưa được kiểm chứng, ít nhất là hiện tại. 1) Nó so sánh thông minh, để tránh băm các ứng cử viên trùng lặp không cần thiết trừ khi nó đã hết các lựa chọn khác; 2) Nhánh phát triển [và tôi tin rằng bậc thầy] hỗ trợ băm tăng dần và 3) khấu trừ gia tăng. Hai cái cuối cùng là những tính năng rất lớn. Không có bộ suy luận nào khác cung cấp cả ba tính năng, có thể cắt giảm ngày chạy theo nghĩa đen.
Jim

rmlintchỉ coi các tệp giống hệt nhau là ứng cử viên cho sự trùng lặp , bỏ qua các tệp chỉ có phạm vi trùng lặp một phần.
Tom Hale

@ tom-hale Tôi không hiểu quan điểm của bạn?
Jim
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.