zfs 풀의 증분 / 연속 백업을 수행하는 방법은 무엇입니까?


25

zfs 풀을 오프 사이트로 지속적 / 증분 백업하는 방법은 무엇입니까?

나는 인식 send/receive을 통해 ssh를 수동으로 스냅 샷을 관리 할 필요 포함하지만 하나의 방법이다.

내가 찾은 도구가 있지만 대부분 더 이상 지원되지 않습니다.

유망한 것으로 보이는 하나의 도구는 https://github.com/jimsalterjrs/sanoid 이지만 널리 알려지지 않은 도구는 데이터를 손상 / 삭제 할 수 있기 때문에 더 해를 끼칠 수 있다고 걱정합니다.

연속 / 증분 zfs 백업은 어떻게 수행됩니까?


2
잠시 후에 응답하지만 주 ZFS 서버에서 보조 서버로 15 초마다 이러한 유형의 복제를 수행하는 솔루션이 있습니다.
ewwhite

답변:


33

ZFS 는 놀라운 파일 시스템이며 많은 로컬 및 공유 데이터 스토리지 요구를 해결합니다.

가능하다면 클러스터 된 ZFS 라는 개념이 마음에 들지만 때로는 실용적이지 않거나 지리적으로 스토리지 노드를 분리해야합니다.

내가 사용하는 사례 중 하나는 Linux 응용 프로그램 서버의 고성능 복제 저장소입니다. 예를 들어, 데이터 지연 시간이 짧은 NVMe SSD 드라이브의 혜택을받는 레거시 소프트웨어 제품을 지원합니다. 응용 프로그램에는 보조 서버로 복제 할 수있는 응용 프로그램 수준 미러링 옵션이 있지만 종종 부정확하며 10 분 RPO 입니다.

로컬, 원격 또는 둘 다가 될 수있는 보조 서버 (유사하거나 다른 하드웨어에서 ZFS를 실행)를 사용하여이 문제를 해결했습니다. 아래에 설명 된 세 가지 유틸리티를 결합하여 연속 복제, 딥 스냅 샷 보존 및 유연한 장애 조치 옵션을 제공하는 복제 솔루션을 만들었습니다.

zfs-auto-snapshot - https : //github.com/zfsonlinux/zfs-auto-snapshot

정기적 인 ZFS 파일 시스템 수준 스냅 샷을 활성화하는 편리한 도구입니다. 나는 일반적으로 프로덕션 볼륨에서 다음 일정으로 실행합니다.

# /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

이 프로그램은 ZFS 파일 시스템의 임시 스냅 / 복제를 보조 대상으로 실행할 수 있습니다. 제품 의 싱크 로이드 부분 만 사용합니다 .

가정 서버 1서버 2 에서, 간단한 명령 실행 서버 2 것은 하기 당겨 데이터 서버 1을 :

#!/bin/bash

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

exit $?

MONIT - https://mmonit.com/monit/

Monit은 매우 유연한 작업 스케줄러 및 실행 관리자입니다. 기본적으로 30 초 간격으로 작동하지만 15 초 기본 시간주기를 사용하도록 구성을 수정합니다.

15 초마다 (1주기) 위의 복제 스크립트를 실행하는 구성 예

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

구성 관리를 통해 자동화 및 추가가 간단합니다. Monit에서 스냅 샷 / 복제 실행을 래핑하면 중앙 집중식 상태, 작업 제어 및 경고 (이메일, SNMP, 사용자 정의 스크립트)를 얻을 수 있습니다.


결과는 내가 가지고있는 서버를 가지고있다 여러 개월 이내에 매달 스냅 샷과 롤백 및 유지의 많은 점을 : https://pastebin.com/zuNzgi0G - 플러스, 연속 압연 15 초 원자 복제 :

# 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
게시 해 주셔서 감사합니다. 귀하의 답변은 경이적이고 정확히 내가 찾고 있던 것입니다 (지연 시간부터 프로세스 모니터링까지). 또한 github.com/ewwhite/zfs-ha/wiki를 읽고 나는 깊은 감명을 받았습니다. 다시 한번 감사합니다 :)
Greg Greg

6

이를 수행 할 수있는 두 가지 방법이 있습니다.

  1. rsyncor 와 같은 도구를 사용하여 지난 수십 년 동안 사용 된 / 전통적인 파일 시스템과 무관 한 방식입니다 Bacula. 대규모 배포를 위해 사용자 정의 할 수 있고 ZFS에서 전환 한 경우에도 사용할 수있는 안정적이고 큰 소프트웨어를 테스트하고 (권장 적으로) 안정 시켰습니다.
  2. ZFS를 활용하는 도구 중 하나입니다 send/recv. 이것은 자체 솔루션, Github 등의 다양한 스크립트 또는 Sanoid 또는 ZnapZend (mbuffer 지원 및 유지 계획과 함께 보내기 / 복원) 와 같은 다양한 기능을 갖춘 스크립트 또는 확장 스크립트 일 수 있습니다 . 이 경우, 큰 "엔터프라이즈"(부정적인 의미의) 솔루션은 찾을 수 없지만 단일 작업 만 수행하고 다른 도구와 결합하여 특정 설정을 충족시키는 도구를 찾을 수 있습니다.

일반적으로 소스 코드를 사용할 수있는 도구 만 신뢰하고 가능한 한 간단하게 유지하려고합니다. 를 사용하는 경우 send/recv많은 관리가 필요하지 않은 경우 원격 측에서 스냅 샷 n 의 전송 및 설정에 성공 하면 로컬 측에서 스냅 샷 n-1 을 삭제 하면됩니다 .

로컬 현재 / 신규 및 로컬 이전 스냅 샷간에 만 차이점을 보낼 수있는 철 규칙을 유지하는 경우 원하는 방식으로 전송을 분할 할 수 있으며 비동기식 일 수도 있습니다 (스냅 샷을 즉시 수신하지 않아도 됨). 로컬 이전 스냅 샷이 원격에서 가장 최신 스냅 샷입니다 (백업이 완료되고 모든 것이 재설정 될 때까지).

내가 생각하기에, 당신은 아마 상태 머신에서 그것을 인코딩 한 다음 예기치 않은 경우가 미끄러질 수 없도록 확신 할 수 있습니다.


rsync대규모 솔루션이 대규모 엔터프라이즈 파일 시스템을 지속적으로 복제하는 방법으로 확장되는 방법을 모르겠습니다 . 변경 사항은 rsync발견 할 수있는 것보다 빠르게 발생할 수 있습니다.
Andrew Henle

2
@AndrewHenle 나는 그것을 옹호하지 않을 것입니다. 질문이 데이터의 범위 / 크기 또는 기간을 지정하지 않았기 때문에 그것을 제시하고 싶었습니다. 따라서 드물게 수행되는 경우 파일 시스템에 구애받지 않아야 할 수도 있습니다. 물론, 당신은 멋진 블록 레벨 델타를 잃을 것입니다 ...
user121391

@ user121391 오픈 소스가 될 길에 대해 완전히 동의합니다. 자세한 답변 감사합니다.
Greg

@ 입력하는
그대로 @Dave

1
강력 추천 znapzend
Trent Lloyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.