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 파티션 편집기)를 설치하고 실행했습니다.
이 시점에서 익숙한 것과 크게 다르지 않습니다. 실제로 시스템을 정상적으로 사용할 수 있으며 파일 시스템이 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 프로젝트의 결정에서 알 수 있듯이 강력한 개발 활동을 가지고 있습니다.
등록된 댓글이 없습니다.