Làm thế nào để thực hiện sao lưu gia tăng / liên tục của nhóm zfs?


25

Làm thế nào các nhóm zfs có thể được sao lưu liên tục / tăng dần ngoài khu vực?

Tôi nhận ra send/receiveover ssh là một phương thức tuy nhiên liên quan đến việc phải quản lý ảnh chụp nhanh bằng tay.

Có một số công cụ tôi đã tìm thấy tuy nhiên hầu hết không còn được hỗ trợ.

Một công cụ có vẻ hứa hẹn là https://github.com/jimsalterjrs/sanoid tuy nhiên tôi lo lắng rằng công cụ không được biết đến rộng rãi này có thể gây hại nhiều hơn khi nó có thể làm hỏng / xóa dữ liệu.

Làm thế nào là sao lưu zfs liên tục / gia tăng được thực hiện?


2
Tôi sẽ trả lời sau, nhưng tôi có một giải pháp thực hiện kiểu sao chép này cứ sau 15 giây từ máy chủ ZFS chính đến phụ.
ewwhite

Câu trả lời:


33

ZFS là một hệ thống tập tin đáng kinh ngạc và giải quyết nhiều nhu cầu lưu trữ dữ liệu cục bộ và chia sẻ của tôi.

Trong khi, tôi thực sự thích ý tưởng phân cụm ZFS bất cứ khi nào có thể, đôi khi nó không thực tế hoặc tôi cần một số nút lưu trữ địa lý.

Một trong những trường hợp sử dụng mà tôi có là lưu trữ nhân rộng hiệu năng cao trên các máy chủ ứng dụng Linux. Ví dụ: tôi hỗ trợ một sản phẩm phần mềm cũ có lợi từ các ổ SSD NVMe có độ trễ thấp cho dữ liệu của nó. Ứng dụng này có tùy chọn phản chiếu ở cấp ứng dụng có thể sao chép sang máy chủ thứ cấp, nhưng nó thường không chính xác và là RPO 10 phút .

Tôi đã giải quyết vấn đề này bằng cách có một máy chủ thứ cấp (cũng chạy ZFS trên phần cứng tương tự hoặc không giống nhau) có thể là cục bộ, từ xa hoặc cả hai. Bằng cách kết hợp ba tiện ích chi tiết bên dưới, tôi đã tạo ra một giải pháp sao chép mang lại cho tôi bản sao liên tục, lưu giữ ảnh chụp nhanh và các tùy chọn chuyển đổi linh hoạt.

zfs-tự động chụp nhanh - https://github.com/zfsonlinux/zfs-auto-snapshot

Chỉ cần một công cụ tiện dụng để kích hoạt các snapshot cấp hệ thống tập tin ZFS định kỳ. Tôi thường chạy với lịch trình sau đây về khối lượng sản xuất:

# /etc/cron.d/zfs-auto-snapshot

PATH="/usr/bin:/bin:/usr/sbin:/sbin"

*/5 * * * * root /sbin/zfs-auto-snapshot -q -g --label=frequent --keep=24 //
00 * * * * root /sbin/zfs-auto-snapshot -q -g --label=hourly --keep=24 //
59 23 * * * root /sbin/zfs-auto-snapshot -q -g --label=daily --keep=14 //
59 23 * * 0 root /sbin/zfs-auto-snapshot -q -g --label=weekly --keep=4 //
00 00 1 * * root /sbin/zfs-auto-snapshot -q -g --label=monthly --keep=4 //

Syncoid (Sanoid) - https://github.com/jimsalterjrs/sanoid

Chương trình này có thể chạy snap-hoc snap / sao chép hệ thống tập tin ZFS đến mục tiêu phụ. Tôi chỉ sử dụng phần syncoid của sản phẩm.

Giả sử server1server2 , lệnh đơn giản chạy từ server2 để lấy dữ liệu từ server1 :

#!/bin/bash

/usr/local/bin/syncoid root@server1:vol1/data vol2/data

exit $?

Tiền tệ - https://mmonit.com/monit/

Monit là một người lập kế hoạch công việc và quản lý thực thi cực kỳ linh hoạt. Theo mặc định, nó hoạt động trong khoảng thời gian 30 giây, nhưng tôi sửa đổi cấu hình để sử dụng chu kỳ thời gian cơ sở 15 giây.

Một cấu hình ví dụ chạy tập lệnh sao chép ở trên cứ sau 15 giây (1 chu kỳ)

check program storagesync with path /usr/local/bin/run_storagesync.sh
        every 1 cycles
        if status != 0 then alert

Điều này là đơn giản để tự động hóa và thêm thông qua quản lý cấu hình. Bằng cách gói thực thi ảnh chụp nhanh / sao chép trong Monit, bạn sẽ có được trạng thái tập trung, kiểm soát công việc và cảnh báo (email, SNMP, tập lệnh tùy chỉnh).


Kết quả là tôi có các máy chủ có nhiều ảnh chụp nhanh hàng tháng và nhiều điểm khôi phục và lưu giữ trong: https://pastebin.com/zuNzgi0G - Plus, bản sao nguyên tử 15 giây liên tục:

# monit status

Program 'storagesync'
  status                            Status ok
  monitoring status                 Monitored
  last started                      Wed, 05 Apr 2017 05:37:59
  last exit value                   0
  data collected                    Wed, 05 Apr 2017 05:37:59
.
.
.
Program 'storagesync'
  status                            Status ok
  monitoring status                 Monitored
  last started                      Wed, 05 Apr 2017 05:38:59
  last exit value                   0
  data collected                    Wed, 05 Apr 2017 05:38:59

4
Cảm ơn bạn đã đăng bài, câu trả lời của bạn là phi thường và chính xác những gì tôi đang tìm kiếm (từ độ trễ đến giám sát quá trình). Cũng đọc github.com/ewwhite/zfs-ha/wiki và tôi hoàn toàn ấn tượng. Cảm ơn bạn một lần nữa :)
Greg

6

Bạn có hai cách khác nhau để làm điều đó:

  1. Cách truyền thống, không biết hệ thống tập tin được / được sử dụng trong những thập kỷ qua, với các công cụ như rsynchoặc Bacula. Ở đó bạn đã thử nghiệm và (hy vọng) phần mềm lớn, ổn định, có thể được tùy chỉnh cho các triển khai lớn và có thể được sử dụng ngay cả khi bạn chuyển khỏi ZFS
  2. Một trong những công cụ tận dụng ZFS send/recv. Đây có thể là giải pháp của riêng bạn, tập lệnh hoặc tập lệnh mở rộng từ các tập lệnh khác nhau trên Github và cộng sự hoặc các công cụ giàu tính năng hơn như Sanoid hoặc ZnapZend (gửi / recv với các kế hoạch duy trì và hỗ trợ mbuffer). Trong trường hợp này, rất có thể bạn sẽ không tìm thấy bất kỳ giải pháp lớn nào, "enterprisey" (theo nghĩa tiêu cực), nhưng các công cụ chỉ thực hiện một nhiệm vụ duy nhất và có thể được kết hợp với các công cụ khác để phục vụ cho thiết lập cụ thể của bạn.

Nói chung, tôi chỉ tin tưởng một công cụ có sẵn mã nguồn và tôi sẽ giữ nó đơn giản nhất có thể. Nếu sử dụng send/recv, bạn không phải quản lý nhiều, bạn chỉ cần xóa snapshot n-1 ở phía cục bộ khi việc truyền và thiết lập snapshot n ở phía xa đã thành công.

Bạn có thể phân chia vận chuyển của mình theo bất kỳ cách nào bạn muốn, thậm chí có thể không đồng bộ (không cần phải nhận ngay ảnh chụp nhanh), nếu bạn chỉ giữ nguyên tắc sắt mà bạn chỉ có thể gửi khác biệt giữa ảnh chụp nhanh hiện tại / mới và cục bộ trước đó và rằng ảnh chụp nhanh cục bộ trước đó là ảnh chụp gần đây nhất ở phía xa (cho đến khi sao lưu kết thúc và mọi thứ được đặt lại).

Bây giờ tôi nghĩ về nó, có lẽ bạn có thể mã hóa nó trong một máy trạng thái và sau đó chắc chắn rằng không có trường hợp không lường trước nào có thể lướt qua.


Tôi không thấy một rsyncgiải pháp dựa trên cơ sở sẽ mở rộng như thế nào để liên tục sao chép một hệ thống tệp quy mô doanh nghiệp lớn. Những thay đổi có thể xảy ra nhanh hơn rsynccó thể khám phá chúng.
Andrew Henle

2
@AndrewHenle Tôi cũng không ủng hộ nó, tôi chỉ muốn trình bày nó, vì câu hỏi không chỉ định phạm vi / kích thước của dữ liệu hoặc khung thời gian. Vì vậy, trong trường hợp hành động không thường xuyên, nó có thể là một khả năng nếu nó không phải là hệ thống bất khả tri. Tất nhiên, bạn sẽ mất các đồng bằng cấp khối đẹp ...
121391

@ user121391 Hoàn toàn đồng ý với bạn về nguồn mở là con đường để đi. Cảm ơn bạn đã phản hồi chi tiết của bạn.
Greg

@Dave giống như tôi đang gõ ...
ewwhite

1
rất khuyến khích znapzend
Trent Lloyd
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.