Computer >> 컴퓨터 >  >> 시스템 >> Linux

Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

리눅스 데스크톱 사용자라면 ZFS나 Btrfs처럼 '카피 온 라이트(Copy on Write, CoW)' 방식의 파일시스템에 대해 한 번쯤 들어보셨을 겁니다. 압축 기능, 내장 RAID 지원, 스냅샷 기능 덕분에 이러한 CoW 파일시스템은 매우 진보적이고 현대적인 파일시스템으로 꼽힙니다. 그렇다면 어떻게 시작해야 할까요? Btrfs는 완전한 FOSS(자유·오픈소스 소프트웨어)이면서 리눅스 커널에 기본 내장되어 있어 입문하기에 가장 좋은 선택지입니다. 이번 글에서는 Btrfs를 처음 접하는 분들을 위한 단계별 초보자 가이드를 소개합니다.

리눅스에서의 Btrfs 지원 현황

Btrfs가 ZFS보다 나은 점 중 하나는 바로 '인트리(in-tree)' 방식이라는 것입니다. 즉, 이미 리눅스 커널에 포함되어 있어 별도로 설치하거나 설정할 필요 없이 바로 사용할 수 있습니다. 다만 배포판마다 Btrfs 지원 수준이 다르므로, 사용 중인 배포판의 지원 여부를 미리 확인하는 것이 좋습니다. Btrfs는 커널 2.6.29부터 메인라인에 포함되었고, 현재는 5.10 버전에 근접하고 있으니 큰 걱정은 없을 것입니다.

Btrfs 파티션 생성하기

가장 먼저 할 일은 익숙한 mkfs 명령어로 Btrfs용 파티션을 만드는 것입니다. 터미널 사용이 부담스럽다면 GParted로 파티션을 관리할 수도 있습니다. 디스크에 쓰기 전에 파티션 구성을 눈으로 확인할 수 있어 편리합니다.

Btrfs 파티션을 만들려면 대상 디스크나 파티션을 확인한 후 mkfs.btrfs 명령어를 실행하면 됩니다. 필자의 시스템에는 세 개의 디스크가 있으며, 첫 번째로 '/dev/vdb1'을 선택했습니다. 기존 파티션 테이블이 남아 있다면 -f 옵션을 추가해야 할 수 있습니다.

Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

파티션 생성이 끝나면 해당 서브볼륨을 마운트할 위치를 정해야 합니다. 용도에 따라 달라지는데, 게임 라이브러리용이라면 '/home' 디렉터리에 Games 폴더를 만들어 '~/Games'에 마운트할 수 있습니다. 백업 용도라면 관리 편의성을 위해 '/mnt' 디렉터리에 마운트하는 것이 좋습니다. 여기서는 간단하게 '/mnt/btrfs' 디렉터리를 만들어 사용하겠습니다.

Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

다음 명령어로 '/dev/vdb' Btrfs 장치를 해당 마운트 지점에 연결합니다:

sudo mount -t btrfs /dev/vdb /mnt/btrfs
Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

사용하는 장치명과 마운트 지점은 작업 환경에 따라 달라질 수 있습니다.

Btrfs 서브볼륨 생성하기

Btrfs에서 서브볼륨(subvolume)은 Btrfs가 고유한 CoW 방식으로 다룰 수 있는 하나의 디렉터리입니다. btrfs 명령어의 subvolume create 하위 명령으로 손쉽게 생성할 수 있습니다.

btrfs subvolume create /mnt/btrfs/backups
Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

여기서는 시스템 백업용 서브볼륨을 만들었지만, 이름은 자유롭게 정하면 됩니다. 일반 디렉터리처럼 사용하면 되며, Btrfs에 내장된 다양한 기능의 혜택을 받을 수 있다는 점만 기억하면 됩니다.

Btrfs 서브볼륨 스냅샷 찍기

Btrfs의 가장 큰 장점 중 하나는 내장된 스냅샷 기능입니다. Snapper 같은 전용 도구도 있지만, btrfs 명령어 자체의 subvolume snapshot 하위 명령만으로도 충분히 강력합니다. 필자는 '/mnt/btrfs/backups' 디렉터리에 'btrfs-test.txt'라는 파일을 준비했습니다.

Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

이 디렉터리(또는 모든 Btrfs 서브볼륨)의 스냅샷을 찍으려면 btrfs subvolume snapshot /서브볼륨/경로 /스냅샷/저장/경로 형식으로 입력합니다. 필자의 경우 다음과 같이 실행했습니다:

btrfs subvolume snapshot /mnt/btrfs/backups /mnt/btrfs/backups/snapshots/
Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기 Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

데이터 변동 이력을 추적하고 싶다면 스냅샷 디렉터리 이름에 날짜를 붙여 언제 무슨 일이 있었는지 한눈에 알아볼 수 있게 하는 것이 좋습니다.

-r 플래그를 사용하면 읽기 전용(read-only) 스냅샷을 만들 수 있는데, 이는 뒤에서 다룰 btrfs sendreceive 기능에 반드시 필요합니다.

스냅샷이 저장된 디렉터리로 이동해 보면, 원본 디렉터리의 모든 데이터가 동일한 구조로 그대로 담겨 있는 것을 확인할 수 있습니다. 예기치 못한 재해 상황에서 데이터를 보호할 수 있는 아주 유용한 기능입니다.

이 기능을 활용하면 시스템 전체의 스냅샷을 찍은 뒤 btrfs sendbtrfs receive 명령으로 다른 Btrfs 장치에 전송할 수 있습니다. 명령어 형식은 다음과 같습니다:

sudo btrfs send /mnt/btrfs/backups/ro-snapshot/ | btrfs receive /mnt/btrfs-send-test/
Btrfs 초보자 가이드: 리눅스 CoW 파일시스템 시작하기

NAS나 RAID 어레이에 Btrfs 장치가 있다면 운영체제 스냅샷을 찍어 그곳으로 전송하는 방식으로 활용할 수 있습니다. 전송된 스냅샷은 mount 명령으로 마운트하여 언제든 데이터에 다시 접근할 수 있습니다.

Btrfs에 대한 이 글이 도움이 되었다면, 리눅스용 새 PC 조립 방법, 자신만의 리눅스 배포판을 쉽게 만드는 8가지 도구, 2020년 최고의 리눅스 게임 12선 등 저희의 다른 리눅스 콘텐츠도 함께 확인해 보세요.