Ảnh chụp nhanh ZFS để lưu trữ dưới dạng Sao lưu với xoay


14

Tôi có một hệ thống FreeNAS cục bộ và muốn sử dụng ảnh chụp nhanh ZFS để sao lưu.
FreeNAS có các Nhiệm vụ nhân rộng tích hợp sử dụng

zfs send snapshot_name

để gửi ảnh chụp nhanh đến một hệ thống từ xa. Nhưng điều này cần một hệ thống với ZFS ở đầu bên kia.

Tôi muốn gửi ảnh chụp nhanh đến tệp aa và gửi tệp được nén và mã hóa này đến máy từ xa.

Điều này là có thể với

zfs send snapshot_name | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl

Hàng ngày tôi tạo một ảnh chụp nhanh của kho lưu trữ và giữ mọi ảnh chụp nhanh trong 30 ngày.
Với mỗi ảnh chụp được thực hiện, tôi sẽ chuyển ảnh chụp nhanh này vào một tệp.
- snapshot_file 1 có mọi tệp trong đó (giả sử là 2GB)
- snapshot_file 2 chỉ có các thay đổi đối với snapshot_file 1 (giả sử 5MB)
- snapshot_file 3 giữ các thay đổi thành snapshot_file 2; và như thế.

Vào ngày 31 snapshot_file 1 đang bị xóa (vì tôi chỉ muốn những thay đổi từ 30 ngày qua)

Do đó snapshot_file 2 cần giữ mọi tệp (2GB thay đổi snapshot_file 1 + 5MB)

Nhưng với cách tiếp cận này hàng ngày (từ ngày 31 trở đi), một tệp 2GB mới phải được tạo và gửi đến một hệ thống từ xa. Đây là quá nhiều chi phí.

Điều gì sẽ là cách tiếp cận tốt nhất để sử dụng ảnh chụp nhanh được chuyển đến một tệp làm chiến lược sao lưu có lịch sử X ngày?

PS: Tôi biết có rất nhiều phần mềm sao lưu ngoài đó (ví dụ: sao lưu dự phòng), mà tôi có thể sử dụng. Nhưng tôi tò mò làm thế nào điều này có thể được thực hiện.


Tại sao bạn không sử dụng zfs recvở đầu bên kia ( zfs set compression=gzip-9ví dụ trên một nhóm ). Lưu trữ các tập tin chụp nhanh nghe có vẻ rất không hiệu quả đối với tôi.
Stéphane Chazelas

1
@StephaneChazelas vì tôi không có hệ thống tệp ZFS ở đầu bên kia. Hệ thống từ xa của tôi là một hộp gentoo với ext4 (Tôi biết tôi có thể cài đặt zfsonlinux, nhưng tôi thì không)
Martin Grohmann

Câu trả lời:


12

Nếu bạn lưu trữ các ảnh chụp nhanh trong các tệp, trái ngược với trong hệ thống tệp (ví dụ như với zfs receive), tôi sợ, điều này là không thể.

ZFS ở phía nhận

Nếu bạn sử dụng ZFS ở bên gửi và bên nhận, bạn có thể tránh phải chuyển toàn bộ ảnh chụp nhanh và chỉ chuyển những khác biệt của ảnh chụp so với trước đó:

ssh myserver 'zfs send -i pool/dataset@2014-02-04 pool/dataset@2014-02-05' | \
  zfs receive

ZFS biết về các ảnh chụp nhanh và lưu trữ các khối lẫn nhau chỉ một lần. Có hệ thống tập tin hiểu các ảnh chụp nhanh cho phép bạn xóa những cái cũ mà không gặp vấn đề gì.

Hệ thống tập tin khác ở phía nhận

Trong trường hợp của bạn, bạn lưu trữ các ảnh chụp nhanh trong các tệp riêng lẻ và hệ thống tệp của bạn không biết về các ảnh chụp nhanh. Như bạn đã nhận thấy, điều này phá vỡ luân chuyển. Bạn có thể phải truyền toàn bộ ảnh chụp nhanh, điều này sẽ lãng phí băng thông và dung lượng lưu trữ, nhưng cho phép bạn xóa các ảnh chụp nhanh riêng lẻ. Họ không phụ thuộc vào nhau. Bạn có thể thực hiện các ảnh chụp nhanh tăng dần như thế này:

ssh myserver 'zfs send -i pool/dataset@2014-02-04 pool/dataset@2014-02-05' \
  > incremental-2014-02-04:05

Để khôi phục ảnh chụp nhanh tăng dần, bạn cũng cần các ảnh chụp nhanh trước đó. Điều này có nghĩa là bạn không thể xóa các số gia cũ.

Phương pháp khả thi

Bạn có thể thực hiện gia tăng như trong ví dụ trước của tôi và thực hiện không tăng dần mới mỗi tháng. Gia số mới phụ thuộc vào mức tăng không tăng này và bạn có thể tự do xóa các ảnh chụp nhanh cũ.

Hoặc bạn có thể xem xét các giải pháp sao lưu khác. Có rsnapshot , sử dụng rsyncvà liên kết cứng. Nó thực hiện công việc rất tốt khi quay và rất hiệu quả về băng thông, vì nó yêu cầu sao lưu toàn bộ chỉ một lần.

Sau đó là trần . Nó không tăng, đó là băng thông và tiết kiệm không gian. Nó có một tính năng rất hay; nó có thể tính toán một bản sao lưu đầy đủ từ một tập các số gia. Điều này cho phép bạn xóa số gia cũ. Nhưng đó là một hệ thống khá phức tạp và dành cho các thiết lập lớn hơn.

Tuy nhiên, giải pháp tốt nhất là sử dụng ZFS ở phía bên nhận. Nó sẽ là băng thông hiệu quả, lưu trữ hiệu quả và nhanh hơn nhiều so với các giải pháp khác. Hạn chế thực sự duy nhất tôi có thể nghĩ đến là bạn nên có tối thiểu 8 GiB ECC trên hộp đó (bạn có thể ổn với 4 GiB nếu bạn không chạy bất kỳ dịch vụ nào và chỉ sử dụng nó để zfs receive).


vâng tôi biết điều này Nhưng nếu tôi xóa (vì tôi chỉ muốn có lịch sử 30 ngày) thì tập dữ liệu tệp @ 2014 / 02-04? Sau đó, tôi chỉ có các thay đổi được thực hiện sau tháng 2, 4, nhưng không phải mọi tệp.
Martin Grohmann

2
@MartinGrohmann Tôi hiểu ý của bạn lúc này. Đó là vẻ đẹp của ZFS, bạn có thể xóa các ảnh chụp nhanh cũ trên ZFS mà không gặp vấn đề gì. Trên các hệ thống tập tin khác, bạn phải giữ những cái cũ. Có lẽ bạn tốt hơn với một cái gì đó như rsnapshotsau đó. Hoặc bạn có thể bắt đầu một mức tăng mới sau một tháng và sau đó xóa các mức tăng trước đó.
Marco

cảm ơn sự giúp đỡ của bạn; Tôi chỉ tìm thấy sự trùng lặp Đó có lẽ là cách để đi với khả năng mã hóa.
Martin Grohmann

2
@MartinGrohmann Bản sao là một chương trình hay, nhưng nó bị vấn đề tương tự . Nếu bạn chỉ làm tăng không gian của bạn tiếp tục phát triển. Bạn không thể lấy lại dung lượng mà không lãng phí băng thông và thực hiện sao lưu toàn bộ mới. Hoặc đi ZFS ở cả hai bên hoặc nhìn vào trần , nó có thể tính toán một bản sao lưu đầy đủ mới từ số gia. Điều đó cho phép bạn xóa số gia cũ mà không cần chuyển lại mọi thứ.
Marco

Nếu băng thông từ nguồn của bạn là vấn đề, thì một giải pháp tiềm năng (hiện tôi đang triển khai cho NAS ZFS tại nhà của tôi) là luôn chỉ gửi số gia tới bộ nhớ từ xa của bạn, nhưng mỗi tháng một lần lại mở một VPS FreeBSD từ xa (ví dụ: đại dương kỹ thuật số) sau đó có thể mở ảnh chụp nhanh đầy đủ cuối cùng, zfs recv một số # gia tăng vào đó, sau đó lưu kết quả dưới dạng ảnh chụp mới. VPS chỉ cần tồn tại đủ lâu để tạo bản sao lưu cơ sở mới. Digital Ocean có API cho phép dễ dàng tạo / hủy VPS của họ. Và hệ thống cục bộ của bạn chỉ cần gửi bản sao lưu gia tăng.
mắc kẹt vào
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.