댓글 검색 목록

[기타] Linux 용 btrfs 시작하기

페이지 정보

작성자 운영자 작성일 20-12-01 21:49 조회 704 댓글 0

B- 트리 파일 시스템은 파일 시스템과 볼륨 관리자가 하나로 통합 된 것입니다. Linux에 고급 파일 시스템 기능 세트를 제공 할 수있는 많은 가능성을 제공합니다.


Btrfs는 Linux에서 수년 동안 사용할 수 있었으므로 이미 익숙 할 것입니다. 그렇지 않은 경우 특히 Fedora Workstation을 사용하는 경우 질문이 있을 수 있습니다 (이제 Btrfs가 기본 파일 시스템 임). 이 기사는 기록 중 복사 (copy-on-write) 및 체크섬과 같은 고급 기능에 익숙해지는 데 도움이 됩니다.


B-Tree Filesystem의 약자 인 Btrfs는 실제로 파일 시스템과 볼륨 관리자가 하나로 통합 된 것입니다. 2005 년에 Sun Microsystem의 Solaris OS에 도입 된 ZFS에 대한 응답으로 종종 간주되며 현재는 OpenZFS라는 오픈 소스 구현으로 대체되었습니다. Ubuntu Linux 및 FreeBSD는 종종 OpenZFS를 특징으로 합니다. 유사한 기능을 가진 다른 예로는 Red Hat의 Stratis 및 Linux LVM (Logical Volume Manager)이 있습니다.


설정 


Btrfs를 사용해보기 위해 Fedora 33 Workstation ISO 파일을 다운로드하여 새 가상 머신 (VM)에 설치했습니다. 설치 프로세스는 이전 버전에서 변경되지 않았습니다. 이 튜토리얼에 대한 정확한 "즉시"설정을 유지하기 위해 드라이브 파티셔닝 및 포맷을 포함한 설정을 사용자 정의하지 않았습니다. VM이 실행되고 나면 드라이브 레이아웃을 공장 에서 처럼 보기 좋게 보기 위해 GParted (GNOME 파티션 편집기)를 설치하고 실행했습니다.


GParted's view of Btrfs on Fedora 33 Workstation using GParted 


이 시점에서 익숙한 것과 크게 다르지 않습니다. 실제로 시스템을 정상적으로 사용할 수 있으며 파일 시스템이 Btrfs라는 사실조차 알지 못할 수도 있습니다. 그러나 이 새로운 기본값을 사용하면 몇 가지 멋진 기능을 활용할 수 있습니다.


Btrfs 파일 시스템 조사 


일부 기능이 기존 디스크 관리 도구에 통합되었지만 Btrfs 특정 그래픽 도구에 대해 알지 못합니다.


명령 줄에서 Btrfs 형식을 자세히 살펴볼 수 있습니다.


# btrfs filesystem show
Label: 'fedora_localhost-live'  uuid: f2bb02f9-5c41-4c91-8eae-827a801ee58a
        Total devices 1 FS bytes used 6.36GiB
        devid    1 size 10.41GiB used 8.02GiB path /dev/vda3 



Btrfs 레이블 변경 


가장 먼저 눈에 띄는 것은 설치 프로그램이 설정 한 파일 시스템 레이블 인 fedora_localhost-live입니다. 현재 설치된 시스템이고 더 이상 라이브 CD가 아니기 때문에 이것은 정확하지 않습니다. 그래서 btrfs 파일 시스템 레이블 명령을 사용하여 변경했습니다.


Btrfs 파일 시스템 레이블 변경은 간단합니다.


# btrfs filesystem label /
fedora_localhost-live
# btrfs filesystem label / fedora33workstation
# btrfs filesystem label /
fedora33workstation 


Btrfs 하위 볼륨 관리 


하위 볼륨은 Btrfs에서 관리 할 수 있는 표준 디렉터리로 나타납니다. 새로운 Fedora 33 Workstation에는 여러 하위 볼륨이 있습니다.


# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines 


btrfs subvolume create 명령을 사용하여 새 하위 볼륨을 생성하거나 btrfs subvolume delete를 사용하여 하위 볼륨을 삭제합니다.


# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 top level 5 path home
ID 258 gen 2888 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 276 gen 2888 top level 258 path opt/foo
# btrfs subvolume delete /opt/foo
Delete subvolume (no-commit)'/opt/foo' 


하위 볼륨을 사용하면 할당량 설정, 스냅 샷 생성, 다른 위치 및 호스트로 복제와 같은 작업을 수행 할 수 있습니다. 시스템 관리자는 이러한 기능을 어떻게 활용할 수 있습니까? 사용자 홈 디렉토리는 어떻습니까?


사용자 추가 


예전부터 그랬듯이 새 사용자 계정을 추가하면 계정이 사용할 홈 디렉토리가 생성됩니다.


# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 student1 student1  80 Oct 29 00:21 student1 


일반적으로 사용자의 홈 디렉토리는 / home의 하위 디렉토리입니다. 소유권과 권한은 소유자에 따라 다르지만 관리를 위한 특별한 기능은 없습니다. 엔터프라이즈 서버 환경은 또 다른 시나리오입니다. 종종 디렉토리는 특정 응용 프로그램과 사용자가 사용하도록 예약되어 있습니다. Btrfs를 활용하여 이러한 디렉터리에 대한 제약 조건을 관리하고 적용 할 수 있습니다.


Btrfs 하위 볼륨을 사용자 홈으로 수용하기 위해 useradd 명령에 대한 새로운 옵션이 있습니다 : --btrfs-subvolume-home. 매뉴얼 페이지는 업데이트되지 않았지만 (이 글을 쓰는 시점에서) useradd --help를 실행하여 옵션을 볼 수 있습니다. 새 사용자를 추가 할 때이 옵션을 전달하면 새 Btrfs 하위 볼륨이 생성됩니다. -d 옵션이 일반 디렉토리를 생성하는 것과 같은 기능을 합니다.


# useradd --btrfs-subvolume-home student2
Create subvolume '/home/student2' 


getent passwd student2로 사용자를 확인하면 정상적으로 나타납니다. 그러나 btrfs subvolume 명령을 실행하여 하위 볼륨을 나열하면 새로운 사용자의 홈 디렉토리라는 흥미로운 내용이 표시됩니다!


# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 272 gen 2459 top level 256 path home/student2 


엔터프라이즈 서버 환경의 두 번째 시나리오를 살펴보십시오. / opt에 WildFly 서버를 설치하고 Java 웹 애플리케이션을 배포해야 한다고 가정합니다. 종종 첫 번째 단계는 wildfly 사용자를 만드는 것입니다. -b 옵션과 함께 새로운 --btrfs-subvolume-home 옵션을 사용하여 / opt를 기본 디렉토리로 지정합니다. 


# useradd -b /opt --btrfs-subvolume-home wildfly
Create subvolume '/opt/wildfly' 


이제 wildfly 사용자는 로그인하여 / opt / wildfly에서 설치를 완료 할 수 있습니다.


사용자 삭제 


사용자를 삭제할 때 때때로 해당 사용자의 파일과 홈 디렉토리를 동시에 삭제하려고 합니다. userdel 명령에는 이를 위한 -r 옵션이 있으며 Btrfs 하위 볼륨도 삭제합니다.


# userdel -r student2
Delete subvolume (commit)'/home/student2' 


디스크 사용 할당량 설정 


내 컴퓨터 과학 수업 중 한 학생이 제어를 벗어난 C 프로그램을 실행하여 전체 / home이 부서의 Unix 시스템에 채워질 때까지 디스크에 기록했습니다! 관리자가 런 어웨이 프로세스를 종료하고 일부 공간을 비울 때까지 서버를 사용할 수 없게 되었습니다. 위의 시나리오도 마찬가지입니다. Wildfly 엔터프라이즈 애플리케이션은 사용자를 위해 점점 더 많은 수의 로그 파일과 콘텐츠 저장소를 갖게 될 것입니다. 디스크가 가득 차서 서버가 중단되는 것을 어떻게 방지 할 수 있습니까? 디스크 사용 제한을 설정하는 것이 좋습니다. 다행히 Btrfs는 할당량을 통해 이를 지원합니다.


할당량을 구성하려면 몇 가지 단계가 필요합니다. 첫 번째 단계는 Btrfs 파일 시스템에서 할당량을 활성화하는 것입니다.


btrfs quota enable / 


btrfs subvolume list 명령으로 표시되는 각 하위 볼륨의 할당량 그룹 (qgroup) ID 번호를 알고 있는지 확인하십시오. 각 하위 볼륨에는 ID 번호에 따라 연결된 qgroup이 필요합니다. 이것은 btrfs qgroup create를 사용하여 개별적으로 수행 할 수 있지만 편리하게 Btrfs 위키는 파일 시스템의 하위 볼륨에 대한 qgroup을 신속하게 생성하기 위해 다음 명령을 제공합니다.


>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path> 


새로 설치된 Fedora 33 워크 스테이션 시스템에서 루트 파일 시스템 경로 /에서 작업하고 있습니다. \ <path>를 루트 경로로 대체하십시오.


btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} / 


그런 다음 btrfs 할당량 재검색을 실행하고 새 qgroup을 살펴 봅니다. # btrfs 할당량 재검색 /


# btrfs quota rescan /
quota rescan started
# btrfs qgroup show /
qgroupid         rfer         excl
--------         ----         ----
0/5          16.00KiB     16.00KiB
0/256       272.04MiB    272.04MiB
0/258         6.08GiB      6.08GiB
0/265        16.00KiB     16.00KiB
0/271        16.00KiB     16.00KiB
0/273        16.00KiB     16.00KiB 


이제 qgroup 중 하나에 할당량을 할당 할 수 있으며, 그러면 연결된 하위 볼륨에 적용됩니다. 따라서 student3의 홈 디렉토리 사용량을 1GB로 제한하려면 btrfs qgroup limit 명령을 사용하십시오.


btrfs qgroup limit 1G /home/student3 


특정 하위 볼륨에 대한 할당량을 확인합니다.


# btrfs qgroup show -reF /home/student3
qgroupid         rfer         excl     max_rfer     max_excl
--------         ----         ----     --------     --------
0/271        16.00KiB     16.00KiB      1.00GiB         none 


약간 다른 옵션은 모든 qgroup과 설정된 할당량을 표시합니다.


# btrfs qgroup show -re /
qgroupid         rfer         excl     max_rfer     max_excl
--------         ----         ----     --------     --------
0/5          16.00KiB     16.00KiB         none         none
0/256       272.04MiB    272.04MiB         none         none
0/258         6.08GiB      6.08GiB         none         none
0/265        16.00KiB     16.00KiB         none         none
0/271        16.00KiB     16.00KiB      1.00GiB         none
0/273        16.00KiB     16.00KiB         none         none 


다른 기능들 


이 예제는 Btrfs의 기능에 대한 아이디어를 제공합니다. 전체 명령 목록을 보려면 btrfs --help를 실행하십시오. 다른 많은 주목할만한 기능이 존재합니다. 예를 들어 스냅 샷과 보내기 / 받기는 학습 할 가치가 있는 두 가지입니다.


마지막 생각들 


Btrfs는 Linux에 고급 파일 시스템 기능 세트를 제공 할 수 있는 많은 가능성을 제공합니다. 처음이 아니었습니다. 저는 약 15 년 전에 이런 유형의 파일 시스템을 소개 한 데 대해 ZFS를 신뢰하지만 Btrfs는 완전 오픈 소스이며 특허에 의해 방해 받지 않습니다.


이 파일 시스템을 탐색하려면 가상 머신이나 예비 시스템으로 시작하는 것이 좋습니다.


GUI 세계에서 운영하고자 하는 시스템 관리자를 위해 제작 된 그래픽 관리 유틸리티를 보고 싶습니다. 다행히도 Btrfs는 Workstation 33에서 기본으로 설정하기로 한 Fedora 프로젝트의 결정에서 알 수 있듯이 강력한 개발 활동을 가지고 있습니다.



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.