500,000개 이상의 파일을 매일 백업하는 가장 빠른 방법은 무엇입니까?

500,000개 이상의 파일을 매일 백업하는 가장 빠른 방법은 무엇입니까?

우리는 지금까지 540,000개 이상의 이미지를 생성한 애플리케이션을 보유하고 있습니다. 이미지는 지금까지 5백만 개의 Inode를 사용하는 트리 구조로 보관됩니다.

원격 외부 서버에 매일 데이터를 백업하고 싶습니다. 우리는 rsync를 사용하려고 생각했지만 그것이 가장 빠른 방법이 될지는 확신할 수 없습니다.

효율적인 백업 전략에 대한 권장 사항이 있습니까?

답변1

변경된 파일을 찾기 위해 매일 5,000,000개의 inode를 스캔하는 데 시간이 너무 오래 걸립니다!

마지막 백업 이후 변경된 내용만 백업할 수 있는 방법이 있다면 어떨까요?

글쎄요, 당신은…스냅샷!

스냅샷의 가장 큰 장애물은 스냅샷을 지원하는 파일 시스템으로 전환하는 것입니다.

Linux에서 잘 알려진 두 가지 스냅샷 파일 시스템은 다음과 같습니다.

  • BTRFS– Linux용으로 설계되었으며 전투 테스트를 덜 거쳤습니다.
  • ZFS– Linux로 포팅되었으며 더 오래 사용되었습니다.

둘 다기록 중 복사 파일 시스템. 이것이 실제로 의미하는 바는 마지막 스냅샷 이후의 변경 사항을 추적하므로 최신 스냅샷을 백업 서버로 보낼 때 변경 사항만 전송되지만 결정한 모든 일일 백업의 전체 복사본은 계속 유지된다는 것입니다. 유지.

즉, 보너스로 많은 추가 공간 없이(매일 변경 사항에 사용되는 디스크 공간만) 백업을 하루 이상 보관할 수 있으며 매주, 매월, 백업을 유연하게 삭제할 수 있습니다. 또는 원하는 대로 연간 백업을 수행할 수 있습니다.

Btrfs 증분 백업

다음은 증분 백업을 만들고 이를 백업 서버로 보내기 위해 실행할 수 있는 명령의 예입니다.

# Make a snapshot
btrfs subvolume snapshot -r /app/data /backup/app-data-$(date "+%Y%m%dT%H%M%S%Z")

# Ensure the snapshot is saved
sync

# Find your latest snapshot, referred to as `/backup/app-data-THIS_BACKUP_TIMESTAMP` below
ls -lhtr /backup/

# Send the snapshot since the previous snapshot to the backup server
btrfs send -p /backup/app-data-LAST_BACKUP_TIMESTAMP /backup/app-data-THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "btrfs receive /backup/app-data"

메모:-p /backup/app-data-LAST_BACKUP_TIMESTAMP첫 번째 백업인 경우 마지막 명령에서 제외합니다 .

ZFS 증분 백업

다음은 증분 백업을 만들고 이를 백업 서버로 보내기 위해 실행할 수 있는 명령의 예입니다.

# Create a snapshot of the "data" dataset in your "app-pool" zpool
zfs snapshot app-pool/data@$(date "+%Y%m%dT%H%M%S%Z")

# Find your latest snapshot, referred to as `app-pool/data@THIS_BACKUP_TIMESTAMP` below
zfs list -rt snapshot app-pool/data

# Send the snapshot since the previous snapshot to the backup server
zfs send -i app-pool/data@LAST_BACKUP_TIMESTAMP app-pool/data@THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "zfs receive backup-pool/app-data"

메모:-i app-pool/data@LAST_BACKUP_TIMESTAMP첫 번째 백업인 경우 마지막 명령에서 제외합니다 .

관련 정보