Làm cách nào để có được tính năng chụp nhanh hoặc phiên bản hệ thống tệp trong suốt, hiệu quả trên ext3 / 4?


11

Tôi đã suy nghĩ từ lâu về các hệ thống tập tin phiên bản. Đây là một tính năng sát thủ và tôi đã xem Wayback, ext3cow, zfs, giải pháp cầu chì hoặc chỉ các lớp phủ cvs / svn / git.

Tôi xem xét ext3cow mô hình cho các yêu cầu của tôi. Minh bạch, hiệu quả, nhưng tôi có thể làm mà không cần ls abc@timestamptính năng bổ sung . Miễn là bằng cách nào đó tôi có được phiên bản tự động, minh bạch của các tệp của mình.

Nó có thể là tức thời hoặc có thể dựa trên các ảnh chụp nhanh trong các khoảng thời gian 10, 30, 1m, 5m, 15m, v.v. Chỉ cần một cái gì đó sẽ xử lý hiệu quả hàng ngàn tệp trong một thư mục nhất định với mọi kích cỡ khác nhau, nhỏ nhất, nhưng một số lên từ 100m đến 1gb.

ZFS không thực sự là một tùy chọn như tôi trên linux (và không muốn sử dụng nó thông qua cầu chì vì tôi đã có một thiết lập ext3 tôi muốn phiên bản, không phải là một cái gì đó mới).

Có những giải pháp nào ngoài kia?

Câu trả lời:


7

Nếu bạn bọc hệ thống tệp của mình bằng LVM, thì bạn có thể tạo một khối ảnh chụp nhanh bằng cách sử dụng lớp âm lượng logic bên dưới. Đó là một quy trình khá đơn giản và hiệu quả đáng ngạc nhiên đối với những thứ "snapshotty" tiêu chuẩn, chẳng hạn như sao lưu và hoàn tác rm -froopsies.


Cảm ơn câu trả lời. Thật không may, tôi đang tìm kiếm một cái gì đó có thể được áp dụng trên một hệ thống tập tin hiện có.
Dale Forester

6

Sau 8 năm tìm kiếm, tôi đã tìm thấy SVNFS của Marco R. Gazzetta (khác với dự án cũ có cùng tên của John Madden [người nào làm những việc khác nhau]). SVNFS này sử dụng svn trong suốt trong các hoạt động r / w:

Thay vì tạo một hệ thống tập tin có phiên bản riêng, tôi đã sử dụng một công cụ tạo phiên bản hiện có, lật đổ và sử dụng nó trong suốt. Ưu điểm là hệ thống tệp này không yêu cầu bạn phải học một công cụ mới, nếu bạn biết lật đổ

Nó được viết bằng Python và sử dụng FUSE:

Bây giờ bạn bắt đầu hệ thống tập tin phiên bản bằng cách gọi tập lệnh đính kèm:

python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles

Một khi mọi thứ đều ổn, bạn sẽ có thể có được một danh sách của cả hai thư mục và thấy rằng nội dung là như nhau.

Bây giờ, nếu bạn tạo (gần như) bất kỳ tệp nào trong một trong hai thư mục, nó cũng sẽ hiển thị ở phía bên kia của hàng rào. Sự khác biệt lớn là nếu bạn tạo một tệp trong thư mục myfiles, nó sẽ tự động được đặt dưới sự kiểm soát phiên bản (điều ngược lại là không đúng).

Trong ví dụ SVNFS sử dụng thư mục riêng cho repo. Mặc dù tôi chưa thử nó. Đối với nhu cầu của tôi, tôi muốn có kho lưu trữ ngay trong thư mục làm việc của mình.


Tôi cũng đã tìm thấy tài liệu tham khảo về khả năng tạo phiên bản của Reiser4 4 năm trước:

Xem Reiser 4. Tập tin là thư mục.

ví dụ: diff -u main.C main.C/r/123

Hoặc để truy cập thuộc tính

cat main.C/p/svn-eolstyle

echo "foobar" > main.C/p/my-property 

Có vẻ như tốt nhất là theo mô hình đó, vì một hệ thống tập tin chính đã đi theo lộ trình đó.

-Paul Querna

Nhưng tôi cũng không kiểm tra nó.


Hai năm trước tôi đã đi tìm kiếm thêm, tìm thấy dự án FiST để tạo các hệ thống tệp có thể xếp chồng lên nhau và liên hệ với prof. Erez Zadok của Đại học Stony Brook , người từng là cố vấn / cố vấn cho dự án được gọi là phiên bản từ lâu. Trích dẫn:

http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/

http://www.fsl.cs.sunysb.edu/docs/versionfs-mstribution/versionfs.pdf

cho phép người dùng quản lý các phiên bản của riêng họ một cách dễ dàng và hiệu quả. Versionfs cung cấp chức năng này với không quá 4% chi phí cho khối lượng công việc giống như người dùng thông thường. Versionfs cho phép người dùng chọn cả hai phiên bản được lưu giữ và cách chúng được lưu trữ thông qua các chính sách lưu giữ và chính sách lưu trữ, tương ứng. Người dùng có thể chọn sự đánh đổi giữa không gian và hiệu suất đáp ứng tốt nhất nhu cầu cá nhân của họ: bản sao đầy đủ, bản sao nén hoặc khối deltas. Mặc dù người dùng có thể kiểm soát các phiên bản của họ, quản trị viên có thể thực thi các giá trị tối thiểu và tối đa và cung cấp cho người dùng các mặc định hợp lý.

Ngoài ra, thông qua việc sử dụng libversionfs, các ứng dụng chưa sửa đổi có thể kiểm tra, thao tác và khôi phục các phiên bản. Người dùng có thể chỉ cần chạy các công cụ quen thuộc để truy cập các phiên bản tệp trước đó, thay vì yêu cầu người dùng tìm hiểu các lệnh riêng biệt hoặc yêu cầu quản trị viên hệ thống truy xuất lại hệ thống tệp. Không có libversionfs, các phiên bản trước hoàn toàn bị ẩn khỏi người dùng.

Cuối cùng, Versionfs vượt xa bản sao chép đơn giản được sử dụng bởi các hệ thống trong quá khứ: chúng tôi thực hiện sao chép khi thay đổi. Mặc dù lúc đầu, chúng tôi dự đoán rằng việc so sánh giữa các trang cũ và mới sẽ quá đắt, chúng tôi thấy rằng sự gia tăng thời gian hệ thống được bù đắp nhiều hơn bởi thời gian I / O và CPU giảm đi kèm với việc viết các khối không thay đổi. Khi các chính sách lưu trữ đắt tiền hơn được sử dụng (ví dụ: nén), sao chép khi thay đổi thậm chí còn hữu ích hơn.

Nó có vẻ rất thú vị đối với tôi nhưng liên hệ với những người làm việc trong dự án tiết lộ rằng ngai vàng không phải là nơi được biết đến của mã nguồn. Giáo sư tự nêu trong thư:

Mã của Versionfs hiện đã rất cũ và nó chỉ hoạt động trong kernel 2.4. Nếu bạn vẫn muốn một f / s phiên bản có thể xếp chồng lên nhau, thì người ta sẽ phải viết nó từ đầu - có thể dựa trên Wrafs (xem Wrafs.filesystems.org/).

Vì vậy, không có dự án làm việc ở đây mặc dù khái niệm về các hệ thống tập tin có thể xếp chồng lên nhau có vẻ rất tốt với tôi. Có ai muốn bắt đầu dự án dựa trên các gói của onf không , thông báo cho tôi nhé :)


3

Bạn có thể kiểm tra gitfs . Đây là một hệ thống tập tin FUSE dựa trên git, khá ổn định và siêu dễ sử dụng.

Về cơ bản, nó là một lớp phủ trên git. Bất cứ khi nào bạn cập nhật một tệp hoặc thư mục, nó sẽ tạo một cam kết với thay đổi đó (biết để thực hiện các cam kết để bạn không kết thúc với 100 lần xác nhận khi bạn giải nén tệp lưu trữ). Cũng biết để đồng bộ hóa điều khiển từ xa của bạn và hợp nhất các xung đột bằng cách sử dụng chiến lược 'luôn chấp nhận của tôi'.

Khi bạn gắn kết nó, nó mang lại cho bạn hai thư mục: hiện tạilịch sử . ├── current │   ├── test1.md │   ├── test2.md │   ├── test3.md -> current/test2.md │   ├── test4.md │   └── test_directory └── history ├── 2014-11-23 │   ├── 20-00-21-d71d1579a7 │   │   └── testing.md │   └── 20-42-32-7d09611d83 │   ├── test2.md │   └── testing.md ├── 2014-12-08 │   ├── 16-38-30-6d6e71fe47 │   │   ├── test2.md │   │   └── test1.md

Thông tin thêm có thể được tìm thấy trên trang này .


Thêm thông tin sẽ cải thiện câu trả lời này.
Dave M

2

Bup có vẻ đầy hứa hẹn.

Thảo luận cũ hơn về nó ở đây: http://lwn.net/Articles/380983/


Có một cảnh báo với việc sử dụng một cái gì đó dựa trên git, sửa đổi trong git không được coi là deltas từ nguồn gốc - mỗi cam kết là tệp đầy đủ ngay cả khi bạn chỉ thay đổi một byte.
tổng hợp

0

Hãy thử rsnapshot - Tôi đã không sử dụng nó cho mình, nhưng tôi tình cờ thấy nó trong khi tìm kiếm các hệ thống sao chép cấp độ tệp @.


Nó thật thú vị. Tôi chắc chắn sẽ xem xét nó. Lo lắng của tôi là tải io của nó sẽ gây ra tình trạng nói lắp trên hệ thống của tôi (tôi đã không làm điều gì đó tương tự với rsync trước đây và đã ngừng sử dụng vì quá giang / hành vi nói lắp trong các máy chơi game khác khi chạy).
Dale Forester

Tôi đã xem rsnapshot và tôi thích ý tưởng của nó nhưng thật không may là nó yêu cầu một bản sao của bất cứ thứ gì nó chụp nhanh. Thật không may, và cần thiết, tôi đang làm việc với các ổ đĩa ở giới hạn của chúng và tôi muốn chụp nhanh nội dung lớn hơn một chút so với không gian trống còn lại.
Dale Forester

1
Khó khăn là trong yêu cầu của bạn. bên cạnh một cái gì đó như rsnapshot, hoặc LVM, ext2 / ext3 không có tiện ích chụp nhanh được tích hợp. Bạn chỉ ra ext3cow, nhưng bạn phải thay đổi hệ thống fiels bên dưới. Lưu ý rằng có vẻ như bạn có thể sử dụng rsnapshot và lưu trữ dữ liệu của mình trên máy KHÁC , tôi không biết bạn nói về loại không gian nào, nhưng có thể có ý nghĩa để giữ ảnh chụp nhanh của bạn trên máy khác không? Ngoài ra, hãy nhớ rằng ảnh chụp nhanh của bất kỳ loại nào sẽ yêu cầu không gian đĩa. Nếu ổ đĩa của bạn gần dung lượng, bạn còn bao nhiêu dung lượng cho ảnh chụp nhanh?
Jason

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.