btrfs 지원 백업 솔루션


14

이번 달 Oracle EL 14에서 btrfs가 생산을 시작하면서 (Linux fsc에서 fsck 작업 및 스크러빙과 함께)이를 활용하기 위해 현재 백업 솔루션을 재 설계 할 생각이었습니다. 10TB 미만의 소량의 데이터에 대해 수행하는 것은 상당히 정적입니다 (매일 1 % 미만 변경됨). 간단히 말해서 SMB / SOHO 백업 솔루션입니다.

백업이해야 할 일 :

  1. 프로덕션 서버에서 ext [234] / XFS / JFS의 LVM 스냅 샷 수행
  2. rsync백업 서버에서 변경된 데이터를 btrfs로 / transfer
  3. btrfs 파일 시스템 스냅 샷
  4. 여유 공간이 부족하면 오래된 스냅 샷 삭제

장점 :

  • 모든 파일을 쉽게 사용할 수 있으며 압축 해제 또는 루프 마운트가 필요하지 않습니다.
  • 과거 스냅 샷도 쉽게 사용할 수 있습니다 ...
  • ... 따라서 읽기 전용 Samba 공유 (섀도 복사 지원)로 공유 할 수 있습니다
  • 스냅 샷은 기록 중 복사 덕분에 최소 공간을 차지합니다 (변경없는 스냅 샷은 사실상 디스크에서 KiB가 거의 없음)
  • 높은 백업 일관성 : 파일의 체크섬, 모든 데이터 스크러빙 및 내장 중복성

질문 :

  • COW (Copy-On-Write) 파일 시스템을 인식하거나 쉽게 만들 수있는 백업 솔루션 (Bulula, BackupPC 등의 형태)이 있습니까?
  • 아니면 가정 내 rsync솔루션 을 사용해야 합니까?
  • 백업 전용 ZFS 박스를 가진 사람들은 Linux 시스템을 백업하기 위해 무엇을합니까?

볼 수 없습니다 cons! 그 중 하나는 Btrfs 스냅 샷이 증분 백업과 동일하다는 것입니다 (디스크의 파일 백업 당 실제 사본은 없음). 디스크 표면 문제에 직면 할 때 중요 할 수 있습니다. Btrfs에 포함 된 기본 RAID1 지원으로 한 번의 복제를 수행 할 수 있습니다.
vaab

1
@vaab : 즉, pro체크섬이 있고 FS를 적극적으로 스크러빙 할 경우 실제로 두 개 이상의 복사본이 필요하지 않습니다. 세 개는 RAID6를 지원할 것입니다. 내가 말했듯이, 이것은 단일 컴퓨터의 FS 내부에 "백업"복사본이 아니라 전용 백업 시스템을위한 설정입니다. "RAID가 백업되지 않습니다"및 "스냅 샷이 백업되지 않았습니다"입니다. cp -a그리고 rsync그것을 위해 ...
휴 버트 카리오

또한 btrfs 로의 백업을 고려하고 있지만 rsync -a --delete /home/user /mnt/butterfs/backups/ && snapper create백업 후 스냅 샷을 만드는 것 외에는 COW를 인식하는 것이 무엇입니까?
unhammer

1
@unhammer : 사용 rsync하지 않고 --inplace당신이하는 원격 파일 시스템에서 동일한 데이터의 여러 사본을 얻을 수 있습니다. (rsync는 일반적으로 데이터를 임시 숨김 파일로 복사 한 다음 기존 파일 위로 이동합니다. Copy-On-Write 파일 시스템을 사용하면이 방법으로 변경되지 않은 데이터에 대해 두 개의 사본을 얻습니다)
Hubert Kario

답변:


5

지난주에 비슷한 것을 찾기 위해 광범위한 검색을 수행했습니다. 4 단계를 모두 수행 할 수있는 솔루션을 찾지 못했습니다. ' rsync to btrfs '유형의 백업 을 시도하는 가정 사용자의 블로그가 많이 있으며 모든 주요 Btrfs 위키는 Btrfs 스냅 샷 수행 방법을 다룹니다.

Btrfs 스냅 샷회전시키는 다른 방법을 시도하는 사람들도 꽤 있습니다 . 그러나 디스크 공간을 기준으로 스냅 샷을 회전하려는 사람은 내가 처음 본 사람입니다. 나는 매시간, 매주 및 매월 스냅 샷을 만드는 btrfs-snap을 가지고 놀고 있으며 훌륭하고 간단합니다.

Dirvish 프로젝트는 요구 사항의 대부분을 충족 것으로 보인다. 일부 개발자는 Dirvish를 Btrfs와 통합 하려고합니다 . 그러나 Dirvish 프로젝트는 약간 지연된 것으로 보인다 .

이 시점에서, 당신은 곡선보다 앞서 있습니다.


디스크 공간이 부족하면 오래된 데이터 (오래된 스냅 샷) 만 삭제합니다. 내가 앞서 곡선의 나는 두려워 동안 ZFS는 지난 몇 년 동안 우리와 함께하지 것처럼, 그것은 ... 아니에요
휴 버트 Kario

3

Avi Miller (LinuxConf.AU에서의 대화)에 따르면 btrfs 전송 / 수신이 진행되고있다. 파일의 변경 사항을 찾기 위해 디렉토리를 탐색 할 필요가 없기 때문에 rsync보다 빠릅니다. 아직 릴리스 날짜가 예상되는지 모르겠습니다.

그러나 btrfs-progs에 내장 된 유틸리티는 snapshots / etc 사이에서 변경된 모든 파일을 나열합니다. btrfs subvolume find-new


2
나는 백업 할 btrfs를하지 에서 ...
휴 버트 Kario

2

BackupPC와 비슷한 OS 백업 시스템에서 작업하고 있습니다. 나는 이것에 대해 생각했다. 실제로 구현하지 못하게 한 것은 하위 볼륨간에 하드 링크 할 수 없다는 것입니다. 하위 볼륨의 스냅 샷 만 생성 할 수 있으며 백업 클라이언트 당 하나의 하위 볼륨 만 생성 할 수 있습니다. 따라서 파일 수준 중복 제거 기능은이 방법과 공존 할 수 없습니다. 그리고 파일 수준 중복 제거는 일반적으로 많은 공간을 절약합니다. 하나의 서버 만 백업 하시겠습니까?

btrfs에 블록 레벨 중복 제거 기능이있는 경우이 문제를 피할 수는 있지만 일반적으로 너무 느립니다.

그런 접근 방식은 물론 하나의 파일 시스템 (btrfs)과 긴밀하게 통합되므로 선택적인 기능이어야합니다.

이러한 소 기능 추가에 대해 생각하고 있기 때문에 묻고 있지만 위에 나열된 단점으로 인해 필요한지 모르겠습니다.

편집 : UrBackup 은 현재 리눅스 커널> = 3.6 (교차 볼륨 참조 링크 지원)으로 질문에 설명 된대로 백업을 지원합니다. 설정 방법을 참조하십시오 .


1
교차 서브 볼륨 참조 링크 사본 (에 의해 수행되는 반 하드 링크 cp --reflink)은 이미 구현되었거나 가까운 시일 내에 구현 될 것입니다. FS의 온라인 중복 제거는 속도가 느리거나 (lessfs) 대량의 RAM (ZFS)이 필요하므로 백업 소프트웨어에서 실제로 나쁜 기능 수 있습니다. 어느 쪽이든, btrfs 지향 백업 소프트웨어는 많은 청중을 가질 것입니다. 결국 다음 ext3이 될 것입니다.
휴 버트 카리오

한 가지 더 : 모든 서버를 하나의 하위 볼륨에 유지하여이 문제를 해결할 수 있습니다. 스냅 샷 기능을 유지하면서 중복 제거를 위해 서버간에 사본을 다시 연결할 수 있습니다. 중복 제거 후 스냅 샷을 작성하면됩니다. 단일 서버 만 백업 한 후에도 스냅 샷을 작성할 수 있습니다! 한 번에 하나씩 백업을 수행하면 백업에 더 많은 공간이 필요하지 않습니다. 또는 모든 서버를 백업하고 중복 제거한 다음 스냅 샷 만 백업 할 수 있습니다. 이 방법으로 몇 개의 서버를 동시에 백업 할 수 있습니다.
휴 버트 카리오

네가 옳아. 그렇게 생각하지 않았습니다. 편의를 위해 다른 볼륨의 올바른 스냅 샷으로 심볼릭 링크 할 수 있습니다. 또한 교차 볼륨 하드 링크 (또는 --reflink)에 대한 패치를 보았지만 메인 라인으로 만들거나 보일 것 같지 않았습니다. 정말 조사하겠습니다! 이제 아마도 ssh를 통해 백업을 수행 할 것입니다. 내 프로젝트는 로컬 네트워크에 특화되어 있습니다 ... (자동 검색 등)
UrOni

예, 패치는 살아 있고 작동하지만 불행히도 메인 라인에는 없습니다. 이유를 모르겠습니다. Chris Mason에게 버그를 범하려고합니다. 귀하의 프로젝트에 관해서는, 나에게 라인을 떨어 뜨려 주시기 바랍니다, 나는 기꺼이 그것을 베타 테스트 할 것입니다 (허용 시간). 확실히 재미 있겠다.
Hubert Kario

마지막으로이 패치는 기본 Linux 커널 3.6에 포함되었습니다. 교차 장치 reflink를 사용하면 실제로 그다지 효과가 없었습니다. 나는 여기에 대해 쓴 : urbackup.org/blog/?p=83 코드는 자식 저장소에서 "다음"지점에있다. 현재 테스트 중입니다.
UrOni

1

btrfs 위키 페이지 " 사용 사례 "에는 SnapBtr , Snapper, btrfs-time-machine, UrBackup과 같은 도구가 나열되어 있습니다 .

autosnap 이라는 내장 도구에 대한 제안이 있습니다 .

자동 스냅 기능을 사용하면 정기적 또는 이벤트 기반 스냅 샷을 생성하고 스냅 샷을 자동으로 추가 관리하도록 btrfs를 구성 할 수 있습니다.

자동 스냅은 스냅 샷을 생성 할뿐만 아니라 생성 된 스냅 샷을 관리하는 것뿐입니다. 이제 파일 시스템 사용 공간을 기반으로 스냅 샷을 삭제하도록 자동 스냅을 구성 할 수 있습니다.

그러나 위키 2013 년 10 월 현재 "오토 스냅 기능은 현재 업스트림 버전의 btrfs에 포함되어 있지 않습니다"라고 말합니다.


1

나는 비슷한 좌절감을 느꼈기 때문에 snazzer 라고하는 몇 가지 스크립트를 만들었습니다 . 이들은 함께 ssh를 통한 스냅 샷, 프 루닝, 측정 및 전송 기능을 제공합니다 (오늘날 현재 로컬 파일 시스템과 송수신 할 수 있음). 측정은 sha512sum 및 스냅 샷 경로의 PGP 서명에 대한 보고서 일뿐입니다. 출시 준비가되었지만 아직 초기 단계에서 의견을 검토 할 시간이 있다면 의견을 듣고 싶습니다.

일반적으로 내가 대해 별도의 서브 볼륨이 - CLI는 전용이 시점에서,하지만 난 쉽게 많은 btrfs를 서브 볼륨에 시스템에서 사용할 수 있도록 시간을 촬영했습니다 /var/cache, /home/ 이하 더 스냅 샷 생성에서 제외 할 필요하거나 할 수 있습니다, 등 적극적인 가지 치기 일정.

제거 알고리즘이 순전히 스냅 샷 세트 및 날짜의 존재 여부를 결정하는 것이 두렵습니다. 디스크 사용량 제한이 충족 될 때까지 제거를 유지할 수있는 것은 없습니다. 먼저 삭제하는 것은 무엇입니까? 처음으로 시간을 줄입니까, 아니면 매일을 줄입니까? 아마도 가장 오래된 것을 떨어 뜨릴 것입니다. 매년? 배포마다 다른 우선 순위가 있습니다. 그리고 이것이 유일한 백업 계층인지 (이 경우 법적 / 보험 의무의 경우 가장 오래된 백업을 삭제해서는 안 됨) 중간 중간 백업인지 여부를 알 수 없습니다. 다른 곳).

ZFS 지원 및 / 또는 상호 운용성을 추가 할 예정입니다. 그것은 현재 "제로"의 의존성에 대한 강한 욕구 때문에 대부분 posix-ish 쉘과 펄로 작성되었으며, 언젠가는 깔끔한 파이썬 대체 구현이 병렬로 유지되기를 바랍니다.


FS가 매우 크고 자주 변경되지 않는 한, 한 달 전에 스냅 샷을 유지하는 것과 거의 한 달 동안 하루에 한 번만 비교하는 것과는 거의 차이가 없습니다 .btrfs는 그 차이를 저장해야합니다. 현재 상태 및 전 어쨌든 달에서 한 - 난 그냥 일간지을 유지하지만 압축 및 diffed 때문에 반년 다시 쉽게 유지할 수 있습니다 - 후 적어도 확보하기 위해 가장 오래된 보장을 떨어 뜨리고 약간의 공간
휴 버트 Kario

글쎄, 추적 할 수있는 많은 수의 VM이 있습니다. 일부 제안 된대로 중간 스냅 샷을 정리하면 이점을 얻을 수있는 큰 임시 파일 (예 : 고유 범위의 스냅 샷)이 있습니다. 따라서 가지 치기 중간체가 가장 오래된 디스크를 삭제하는 것만 큼 많은 디스크를 사용하지 않는 것이 사실이지만, 말할 수 있습니다 ... btrfs와 같은 COW 파일 시스템을 사용하여 최소의 스냅 샷 수를 유지하고 그렇게하는 것은 효율적입니다. 얻을 수 있지만 그보다 적절한 솔루션을 선택하는 것이 더 많다는 것을 알고 있습니다 :)
csirac2

@ csirac2 당신은 snazzer를 유지합니까? 이 유형의 솔루션을 찾고 있습니다. Snazzer가 적극적으로 유지 관리되고 있다면 snazzer에 관심이 있습니다. GitHub가 최근 활동을 보여주지 않는 것 같습니다.
MountainX-for-Monica

@MountainX snazzer에 대한 초기 피드백을 많이 얻지 못했을 때 나는 열정을 잃어 버렸습니다. 글을 쓰기 시작했을 때 실제로 OpenSUSE의 snapper와 btrfs 자동화를 위해 소수의 쉘 / 파이썬 스크립트가 떠있었습니다. 내가 세계와 공유 할 때까지 많은 다른 옵션이 나타 났으며 btrbk는 많은 추진력을 가지고있는 것으로 보입니다 (자동 테스트의 부족 [지금 수정 되었습니까?]). 다시 모든 작업을 수행해야한다면 아마도 btrfs 호환성을 추가하기 위해 sanoid 저자와 협력했을 것입니다. 당신의 생각을 듣고 싶습니다.
csirac2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.