,

btrfs 계의 auto-snapshot

zfs auto snapshot을 대체할 수 있는 서비스를 찾아보다가 찾았습니다.
아직은 fedora에서만 되는 것 같더군요.

기능1: 자동 스냅샷

주기적으로 스냅샷을 찍어줍니다.
얼마나 저장할지 설정할 수 있고, 매 시간 마다 찍은 스냅샷도 일정 기간이 지나면 하루에 한개로 줄여서 보관할 수도 있습니다.

기능2: 스냅샷 읽기 전용 마운트

마운트까지 해줍니다.
파일 잘못 건드려서 날라갔다면
심플하게 스냅샷 디렉토리로 가서 복사해주면 됩니다.
zfs는 스냅샷을 클론하고 마운트를 해줘야 하지만, btrbk는 완벽 그 자체입니다.ㅎㅎ

btrbk setup

btrfs 풀 마운트

기본적으로 /etc/fstab에는 btrfs의 서브 볼륨 //home이 마운트 되어있습니다.
하지만 스냅샷을 찍기 위해서 btrfs pool을 마운트 해줘야 합니다.

pool 마운트 할 directory 생성

sudo mkdir /_btrfs_pool

fstab 수정

sudo nano /etc/fstab

/etc/fstab은 기본적으로 다음과 같은 꼴로 되어있습니다.

#
# /etc/fstab
# Created by anaconda on Sat Nov  5 08:34:02 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=2a456084-c10e-4dc3-a528-d8b6c1b78b8e /                       btrfs   subvol=root,compress=zstd:1 0 0
UUID=3bd26cdc-a335-4f3e-a590-f334762002bd /boot                   ext4    defaults        1 2
UUID=FF3A-A35D          /boot/efi               vfat    defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
UUID=2a456084-c10e-4dc3-a528-d8b6c1b78b8e /home                   btrfs   subvol=home,compress=zstd:1 0 0

그러면 가장 아래에 다음을 추가해줍니다.

UUID=2a456084-c10e-4dc3-a528-d8b6c1b78b8e /_btrfs_pool                   btrfs   subvolid=5,compress=zstd:1 0 0

subvolid=5가 pool을 의미합니다.
어떤 pool이던 5가 pool의 최상단입니다.

sudo mount -a로 btrfs_pool을 마운트합니다.

btrbk 설치

dnf 패키지 설치

sudo dnf install btrbk

btrbk config 설정

/etc/btrbk/btrbk.conf를 편집합니다.

sudo nano /etc/btrbk/btrbk.conf
설정을 채워넣습니다.

transaction_log         /var/log/btrbk.log
lockfile                /var/lock/btrbk.lock
timestamp_format        long

snapshot_dir            _snapshot

volume /_btrfs_pool
  snapshot_create  always
  subvolume root
    snapshot_preserve_min   5d
    snapshot_preserve   36h 20d 12w 12m 2y

  subvolume home
    snapshot_preserve_min   1d
    snapshot_preserve   12h 14d 2w 1m

snapshot_dir은 /_btrfs_pool 아래에 생성됩니다.
즉, subvolume이랑 같은 수준의 디렉토리에 생성이 되요.

(_glusterfs는 기본으로 포함되지 않은 서브볼륨입니다.)
각 서브볼륨마다 보관 기간을 다르게 한 예를 작성해보았습니다.

스냅샷 찍는 주기 설정

systemd의 타이머 파일을 수정합니다.
sudo nano /lib/systemd/system/btrbk.timer
daily를 *:0/15- 로 변경해줍니다.

[Unit]
Description=btrbk daily backup

[Timer]
OnCalendar=*:0/15
AccuracySec=10min
Persistent=true

[Install]
WantedBy=timers.target

btrbk 작동 테스트

sudo btrbk dryrun

실행하면 아래와 같은 결과가 나옵니다.

(glusterfs는 기본으로 없는 디렉토리입니다.)

서비스를 enable하고 시작합니다.

systemctl daemon-reload
systemctl enable --now btrbk.timer btrbk.service

btrbk 설정 끝!

이제 매 15분마다 찍히고 48개의 스냅샷이 preserve 되었다가 삭제 될 것입니다.
또한 아래 이미지처럼 스냅샷들이 directory 형태로 나열되고, 이 폴더에 접근할 수 있는 것을 볼수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock