Linux에서 BtrFS를 사용하여 스냅샷을 만드는 방법

데이터 손실에 대비하여 리눅스 PC에 데이터 스냅샷을 만들고 싶으신가요? BtrFS 파일 시스템을 사용하면 가능합니다. BtrFS 스냅샷을 생성하려면 우선 BtrFS 파일 시스템을 사용하는 리눅스 블록 장치가 필요합니다. 기존 드라이브를 BtrFS 드라이브로 변경하려면 아래 지침을 따르세요. 만약 BtrFS를 루트 파일 시스템으로 사용하고 싶다면, 설치 과정에서 “사용자 정의 설치”를 선택하고 BtrFS를 파일 시스템으로 지정하세요.

BtrFS 파일 시스템으로 포맷된 블록 장치 외에도, 사용자는 btrfs-progs 패키지를 설치해야 합니다.

참고: 포맷할 블록 장치를 확인하려면 `lsblk` 명령어를 실행해야 할 수도 있습니다.

리눅스에서의 BtrFS 활용

드라이브를 포맷하기 전에 드라이브 내 모든 데이터를 백업한 후 터미널을 실행합니다. 터미널에서 `sudo -s` 명령으로 루트 권한을 획득하세요. 루트 권한으로 `mkfs` 명령을 사용하여 해당 장치에 새로운 파일 시스템을 만듭니다. 이 예시에서는 `/dev/sdd1`을 사용합니다.

mkfs.btrfs -f /dev/sdd1

문제 해결

BtrFS로 포맷한 후 드라이브가 작동하지 않나요? 새로운 파티션 테이블을 생성해야 할 수도 있습니다. 다음 방법을 참고하세요.

parted /dev/sdd
mklabel gpt
mkpart primary btrfs 1MiB 100%

`quit` 명령으로 `parted` 도구를 종료합니다.

quit

이제 포맷 명령을 다시 실행합니다.

mkfs.btrfs -f /dev/sdd1

BtrFS 스냅샷 생성

스냅샷을 생성하기 전에 먼저 하위 볼륨을 만들어야 합니다. 만약 기본 리눅스 파일 시스템이 BtrFS라면 이 단계를 건너뛰고 하위 볼륨 설정으로 바로 넘어가세요. BtrFS 파일 시스템과 함께 보조 드라이브를 사용하는 경우에만 다음 단계를 따르세요. 해당 드라이브를 마운트해야 합니다. 이 예시에서 하드 드라이브는 `/dev/sdd`입니다.

sudo -s
mkdir /btrfs
mount -t btrfs /dev/sdd1 /btrfs

기본 BtrFS 폴더가 생성되고 마운트되어 사용할 준비가 되었습니다. 이제 하위 볼륨을 생성할 차례입니다. 하위 볼륨이란 무엇일까요? 이는 생성된 볼륨이 블록 장치(`/dev/sda1` 등)와 유사하게 작동하도록 하는 BtrFS 파일 시스템의 특별한 기능입니다.

실제로는 블록 장치가 아니라 “이름 공간”이라는 기술을 활용하는 특별한 디렉토리입니다. BtrFS는 이러한 이름 공간 기술을 이용하여 여러 개의 개별적으로 마운트 가능한 하위 볼륨을 생성하여, 사용자가 마치 블록 장치처럼 작동하고 동작하도록 할 수 있습니다.

자신만의 하위 볼륨을 생성하려면 다음 단계를 따르세요. 이 예시에서는 기본 `/btrfs` 폴더에서 시작하는 기본 하위 볼륨 구조를 보여줍니다. BtrFS 파일 시스템 내에서는 원하는 위치 어디든 자신만의 볼륨을 만들 수 있습니다.

먼저 루트 쉘을 획득합니다. `sudo` 권한으로 이러한 명령을 수행할 수 있지만 파일 시스템과 상호 작용하는 데 번거로울 수 있으므로 바로 루트 권한을 얻는 것이 좋습니다. `sudo -s` 또는 `su` 명령을 사용하여 루트로 로그인한 후 다음 명령을 실행하세요.

btrfs subvolume create /btrfs/vol_a

첫 번째 명령은 `/dev/sdd1` 예제 드라이브의 `/mnt/btrfs` 아래에 BtrFS 하위 볼륨을 생성합니다. 원한다면 이 단계를 완료하고 이를 볼륨으로 사용하여 중요한 데이터를 저장할 수 있습니다. 또한 하위 볼륨 내에 또 다른 하위 볼륨을 생성할 수도 있습니다 (원하는 만큼). 볼륨 내에 또 다른 볼륨을 생성하려면 다음 명령을 실행하세요.

btrfs subvolume create /btrfs/vol_a/vol_b

스냅샷을 생성하려면 먼저 중요한 데이터를 하위 볼륨으로 이동/복사해야 합니다. 예를 들어 다음과 같이 합니다.

cp -R ~/Documents /btrfs/vol_a/

그런 다음 파일 시스템을 사용하여 스냅샷을 만듭니다.

btrfs subvolume snapshot /btrfs/vol_a/ /btrfs/vol_a/backup_1

참고: “backup_1” 부분을 스냅샷으로 부르고 싶은 이름으로 변경하세요. 나중에 구별할 수 있도록 명확하게 이름을 지정하는 것이 좋습니다.

모든 스냅샷을 복원하려면 다음 명령을 사용하세요: `mv /btrfs/vol_a/ /mnt/btrfs/vol_a/backup_1`

블록 장치로 하위 볼륨 마운트

하위 볼륨의 장점 중 하나는 모든 하위 볼륨을 독립적인 장치로 개별적으로 마운트할 수 있다는 것입니다. 먼저 `btrfs` 명령을 사용하여 알려진 모든 볼륨을 나열합니다.

btrfs subvolume list /btrfs

목록에서 하위 볼륨의 ID 번호를 찾은 후 `mount` 명령으로 마운트합니다. ID를 확인했으면 마운트를 해제합니다.

mount -o subvolid=XXX /dev/sdX /btrfs

`XXX`를 ID로 변경하고 `/dev/sdX`를 마운트하려는 볼륨이 있는 드라이브로 변경합니다. 최상위 파티션과 같은 파티션에 하위 볼륨을 마운트할 수는 없다는 점에 유의하세요. 대신 다른 BtrFS 포맷 파티션이나 드라이브에 마운트해야 합니다. 예를 들면 다음과 같습니다.

mount -o subvolid=38 /dev/sdc1 /btrfs

Subvol 38은 `/dev/sdd1`에 있지만, `/dev/sdc1` 또한 BtrFS이므로 여기에 스냅샷을 마운트할 수 있습니다. 개별 드라이브에서는 이 작업을 수행할 필요가 없습니다. 대신 `/dev/sdc2` 등에 마운트할 수 있습니다.

기본 하위 볼륨 설정

기본 BtrFS 하위 볼륨을 설정하면 상호 작용이 더 쉬워지므로 유용합니다. 기본값을 설정하려면 먼저 `subvolume list` 명령을 사용하여 ID를 찾습니다. ID를 확인한 후 `set-default` 명령에 연결합니다.

btrfs subvolume set-default XXX /btrfs

설정한 기본값을 제거하려면 하위 볼륨 목록에서 볼륨 ID를 사용하는 대신 숫자 `0`을 사용하는 것을 제외하고 동일한 명령을 실행합니다. 이렇게 하면 공장 설정으로 다시 돌아가며 자유롭게 다른 하위 볼륨을 기본값으로 설정할 수 있습니다.

btrfs subvolume set-default 0 /btrfs

하위 볼륨 삭제

볼륨을 제거하려면 BtrFS 도구를 사용하여 삭제해야 합니다. `rmdir` 또는 `rm -rf`와 같은 명령을 사용하여 하드 드라이브에서 수동으로 하위 볼륨을 삭제하지 마세요. BtrFS 파일 시스템 도구를 사용하는 것이 좋습니다.

볼륨을 삭제하려면 다음 명령을 사용하세요.

btrfs subvolume delete /btrfs/volume-name