ZFS 미러링 풀에 대한 효과적인 오프사이트 백업 전략은 무엇입니까?

ZFS 미러링 풀에 대한 효과적인 오프사이트 백업 전략은 무엇입니까?

두 개의 미러링된 디스크로 구성된 ZFS 풀을 사용합니다. 오프사이트 백업을 위해 디스크를 두 개 더 구입했습니다.

원래 계획은 세 번째 디스크를 미러에 연결하여 오프사이트 백업을 만들고 ZFS가 다시 동기화될 때까지 기다린 다음 드라이브를 분리하여 오프사이트로 가져가는 것이었습니다. 이것은 잘 작동하지만 놀랍게도 수행되는 것 같습니다.가득한재동기화는 디스크가 연결될 때마다 발생합니다. 모든 연결로 인해 증분 또는 델타 재동기화가 발생한다는 내용을 읽었지만 오해했을 수도 있습니다. 이로 인해 백업이 허용 가능한 것보다 오래 걸릴 수 있습니다.

내 요구 사항은 매일 회전할 수 있도록 내 zpool과 모든 스냅샷의 오프사이트 복사본을 갖는 것입니다. 이는 재동기화에 최대 24시간이 소요될 수 있음을 의미합니다. 현재는 이에 가깝지만 풀 확장 계획에 따르면 그 시간을 초과할 예정입니다.

전체 재동기화 작업이 필요하지 않은 오프사이트 백업을 어떻게 보존합니까? 백업 드라이브에서 다른 파일 시스템을 사용해야 합니까(예: 이미지를 ZFS 풀의 일부로 만드는 대신 이미지 내보내기)? 백업을 별도의 풀에 넣고 새 스냅샷이 생성되면 해당 풀로 보내야 합니까?

답변1

zfs가 원격 ZFS 시스템에 스냅샷을 보내지 않는 이유는 무엇입니까? 이를 위해 간단한 bash 스크립트를 사용합니다.

#!/usr/local/bin/bash
# ZFS Snapshot BASH script by Shawn Westerhoff
# Updated 1/14/2014

### DATE VARIABLES
# D = Today's date
# D1 = Yesterday's date
# D# = Today less # days date
Y=$(date -v-1d '+%m-%d-%Y')
D=$(date +%m-%d-%Y)
D1=$(date -v-1d '+%m-%d-%Y')
D10=$(date -v-10d '+%m-%d-%Y')
D20=$(date -v-20d '+%m-%d-%Y')

# Step 1: Make the snapshots

for i in $( zfs list -H -o name ); do
    if [ $i == tier1 ]
    then echo "$i found, skipping"
    else
    zfs snapshot $i@$D
    fi
done

# Step 2: Send the snapshots to backup ZFS sever

    for i in $( zfs list -H -o name ); do
        zfs send -i $i@$D1 $i@$D | ssh -c arcfour [email protected] zfs recv $i
    done

# Step 3: Destroy snapshots that are 20 days old

for i in $( zfs list -H -o name ); do
        if [ $i == tier1 ]
        then echo "$i found, skipping"
        else
        zfs destroy $i@$D20
        fi
done

답변2

많은 고민과 실험 끝에 비록 상당한 절충안이 있었지만 해결책을 찾았습니다.

첫째, 제외해야 했던 옵션은 다음과 같습니다.

  • 비용상의 이유로 미러 풀이 있는 두 번째 오프사이트 ZFS 서버를 갖는 것은 옵션이 아닙니다. 가능하다면 이는 ZFS 보내기/받기를 사용하여 원격 풀에 스냅샷을 보내는 가장 좋은 방법입니다.

  • 디스크를 제거하고 집으로 가져갈 수 있는 두 번째 현장 ZFS 미러 풀을 확보하십시오. 이는 첫 번째 옵션보다 더 실현 가능하지만 항상 현장에 두 개의 디스크를 두려면 두 번째 풀이 필요합니다(또는 단일 온사이트 디스크에 있는 두 개의 데이터 복사본을 사용). 현재 디스크가 4개 있는데 서버에 다섯 번째 디스크를 넣을 공간이 부족합니다. 이는 공정한 접근 방식이지만 여전히 이상적이지는 않습니다.

  • ZFS 연결 및 분리를 사용하여 미러 풀 안팎으로 백업 디스크를 회전합니다. 이 접근 방식은 효과적이지만 디스크를 추가할 때마다 전체 재동기화를 수행해야 합니다. 이 작업은 시간이 너무 오래 걸리므로 신뢰할 수 없습니다.

attach내 솔루션은 and를 사용하는 것과 비슷 detach하지만 onlineand를 사용합니다 offline. 이는 전체 재동기화에 비해 증분 재동기화를 수행한다는 장점이 있지만 풀이 항상 상태를 보고한다는 단점이 있습니다 DEGRADED(풀에는 항상 두 개의 디스크가 있습니다. 회전하는 오프사이트 디스크는 offline원격 저장소에 있을 때 표시되어 재동기화되고 그런 다음 온라인으로 가져옴).

내 설정에 대한 간단한 검토 및 개요는 다음과 같습니다.

ZFS 서버와 4개의 동일한 디스크가 있습니다. ZFS는 미러 풀을 사용하도록 설정됩니다. 4개의 디스크 중 2개는 풀의 영구 구성원입니다. 다른 두 개의 디스크는 회전합니다. 하나는 항상 오프사이트 저장소에 있고 다른 하나는 풀의 일부로 항상 사용 가능한 백업 역할을 합니다.

백업을 순환해야 하는 경우:

  • zfs scrub백업 디스크에 오류가 없는지 합리적으로 확인하기 위해 완료될 때 까지 기다립니다.

  • zfs offline원격으로 획득할 디스크 입니다 . 일단 오프라인이 되면 hdparm -Y /dev/id꺼두었어요 . 1분 후 디스크 베이스를 부분적으로 제거하고(전원이 꺼졌는지 확인할 수 있을 만큼만) 1분 더 기다렸다가 드라이브를 완전히 당겨서 회전이 멈췄는지 확인했습니다. 디스크는 고정 백에 넣은 다음 보호 케이스에 넣고 외부로 옮깁니다.

  • 다른 오프사이트 디스크를 가져왔습니다. 핫스왑 가능한 트레이에 장착되어 회전합니다. 저는 zfs online디스크를 풀에 복원하고 부분 재동기화를 시작하여 동시에 수행했습니다.

시스템은 언제든지 ONLINE미러 디스크 2개와 OFFLINE원격 디스크 1개(스크러빙됨)를 갖도록 보장합니다. 네 번째 디스크는 다시 동기화되거나 온라인 상태가 됩니다. 이는 실행 중인 드라이브에 오류가 발생하더라도 풀이 두 개의 온라인 디스크와 여전히 일치할 수 있다는 이점이 있습니다.

지난 몇 주 동안 훌륭하게 작동했지만 여전히 해킹이라고 생각합니다. 중대한 문제가 있으면 후속 조치를 취하겠습니다.


고쳐 쓰다:몇 달 동안 실행한 후 실제 사용 시 분리/연결 및 오프라인/온라인 모두에서 재동기화에 동일한 시간이 소요된다는 사실을 발견했습니다. 내 테스트에서는 스크럽을 실행하지 않은 것 같습니다. 스크러빙으로 인해 드라이브가 오프라인 상태인 경우 전체 재동기화가 필요할 것으로 예상됩니다.

답변3

내가 만들었다zfs 자동 백업이 작업과 그 이상을 투명한 방식으로 수행하십시오. (두 개의 zfs 시스템 사이에서만 작동하며 외부 시스템에 대한 백업은 작동하지 않습니다.)

ZFS-autobackup은 모든 기능을 갖추고 있으면서도 가장 안정적이고 사용하기 쉬운 도구가 되기 위해 노력하고 있습니다.

백업 도구, 복제 도구 또는 스냅샷 도구로 사용할 수 있습니다.

사용자 정의 ZFS 속성을 설정하여 백업할 항목을 선택할 수 있습니다. 이를 통해 특정 데이터 세트를 쉽게 추가/제거하거나 전체 풀을 백업할 수 있습니다.

다른 설정은 명령줄에서만 지정하면 됩니다. zfs-autobackup 명령을 설정 및 테스트하고 발생할 수 있는 문제를 해결하기만 하면 됩니다. 완료되면 명령을 cron이나 스크립트에 복사/붙여넣기만 하면 됩니다.

ZFS 명령을 사용하기 때문에 --debug를 지정하면 실제로 수행되는 작업을 확인할 수 있습니다. 이상한 문제나 오류가 발생하는 경우에도 많은 도움이 될 것입니다. 실패한 명령을 복사하여 붙여넣고 명령줄에서 사용할 수 있습니다. (다른 도구에서 놓친 것)

다른 도구에는 없는 중요한 기능 중 하나는 신뢰할 수 있는 --test 옵션입니다. 이를 통해 zfs-autobackup이 수행할 작업을 확인하고 매개변수를 조정할 수 있습니다. 시스템 변경을 제외한 모든 작업을 수행합니다.

설치 지침 및 다운로드는 다음을 참조하세요.https://github.com/psy0rz/zfs_autobackup

관련 정보