맨위로가기 타임라인 바로가기

Btrfs

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

Btrfs는 내결함성, 복구 기능 및 쉬운 관리에 초점을 맞춘, 오라클에서 개발을 시작한 copy-on-write B-tree 기반의 파일 시스템이다. 2009년 리눅스 커널에 통합되었으며, 스냅샷, 서브볼륨, 압축, RAID 지원 등의 기능을 제공한다. 레드햇 엔터프라이즈 리눅스에서는 지원이 중단되었지만, SUSE Linux Enterprise Server, Fedora Linux, 오라클 리눅스 등에서 사용되고 있다.

더 읽어볼만한 페이지

  • 오라클 코퍼레이션 - 오라클 파크
    오라클 파크는 샌프란시스코 자이언츠의 홈 구장으로, 맥코비 코브와 인접한 독특한 입지 조건과 스플래시 히트 존으로 유명하며 야구 외 다양한 스포츠 및 문화 행사가 개최되는 장소이다.
  • 오라클 코퍼레이션 - 오라클 데이터베이스
    오라클 데이터베이스는 1977년 SDL에서 개발한 관계형 데이터베이스 관리 시스템으로, 트랜잭션 지원, 클라이언트-서버 모델, 객체 지향 기능, 인터넷 통합 등을 거치며 발전해왔으나, 높은 가격과 복잡성, 호환성 문제 등으로 비판도 존재하며 다른 RDBMS와 경쟁하고 있다.
  • 파일 시스템 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
  • 파일 시스템 - ZFS
    ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
Btrfs - [IT 관련 정보]에 관한 문서
기본 정보

2. 역사

Btrfs의 핵심 데이터 구조인 카피온라이트(copy-on-write) B 트리는 본래 IBM의 연구원 오하드 로데(Ohad Rodeh)가 USENIX 2007에서 발표한 것이다.[107] 2008년, ext3 및 ext4 파일 시스템의 수석 개발자인 Theodore Ts'o는 Btrfs가 확장성, 신뢰성, 관리 용이성 측면에서 더 나은 방향이라고 언급했다.[15]

Btrfs는 2009년에 Linux 커널 메인라인에 수용되었으며,[18] 여러 리눅스 배포판에서 실험적인 루트 파일 시스템으로 제공되기 시작했다.[19][20][21] 2015년, SUSE Linux Enterprise Server (SLE) 12의 기본 파일 시스템으로 채택되었다.[26]

2017년, 레드햇은 Red Hat Enterprise Linux (RHEL)에서 Btrfs 지원을 중단할 계획을 발표했고,[27] 2019년 RHEL 8에서 Btrfs가 제거되었다.[28] (이는 보수 진영의 기술 정책 후퇴를 보여주는 사례로 해석될 수 있다.)

2020년, Btrfs는 페도라 33 데스크톱 변형의 기본 파일 시스템으로 선택되었다.[30]

개발 중인 ReactOS는 Btrfs 지원을 목표로 하고 있으며, 2018년 릴리스된 0.4.10부터 Btrfs 시스템 드라이브로 부팅 가능하게 되는 등 지원이 진행 중이다.[92]

3. 기능

Btrfs는 내결함성, 복구 기능 및 쉬운 관리에 초점을 맞추고 있으며, 다음과 같은 다양한 기능을 제공한다.[93]


  • 공간 효율적인 소규모 파일 저장 및 인덱싱된 디렉토리
  • 동적 inode 할당 (파일 시스템 생성 시 파일 수 최대값 없음)
  • 쓰기 가능한 스냅샷 및 스냅샷의 스냅샷
  • 서브볼륨 (다중 내부 루트 디렉토리)
  • 데이터 및 메타데이터 체크섬 (강력한 무결성 보장)
  • 압축 (gzip, LZO, Zstd)
  • 모든 데이터 및 메타데이터에 대한 카피 온 라이트 로깅
  • 여러 RAID 알고리즘 (RAID-0, RAID-1, RAID-5, RAID-6, RAID-10)과 여러 장치를 지원
  • 효율적인 증분 백업 (send/receive)
  • ext3, ext4에서 Btrfs로의 파일 시스템 업그레이드 및 업그레이드 시점 역변환[95]
  • 솔리드 스테이트 드라이브 (SSD) 최적화 모드
  • 온라인 조각 모음
  • 시드 장치 지원[96]
  • 오프라인 중복 제거 (사용자 공간 도구 필요)
  • 온라인 밸런싱
  • 온라인 볼륨 확장 및 축소
  • 온라인 장치 추가 및 삭제
  • 서브볼륨 쿼터


Btrfs는 오라클리눅스 커널 개발 디렉터이자 Btrfs 개발자인 크리스 메이슨(Chris Mason)이 언급한 대로, 미래 저장 장치에 대해 리눅스가 스케일링되도록 하는 것이 주요 목표였다. 스케일링은 저장 장치를 처리하는 것뿐만 아니라, 깔끔한 인터페이스로 관리 및 운영하여 사용자에게 사용 현황을 보여주고 신뢰성을 높이는 것을 포함한다.[87]

2009년 1월, Btrfs는 메인 라인 리눅스 커널 2.6.29-rc1 프리릴리스에 병합되었으나, 당시에는 시험적인 위치였으며 상업적 이용은 불가능했다. 또한 디스크상의 포맷이 확정되지 않아 테스트 외 목적으로 사용해서는 안 되었다.[88] 2.6.31 이후에는 하위 호환성을 유지하는 형태로만 변경되고 있다.

ext3 및 ext4 파일 시스템 개발자인 테오도어 초 (Theodore Ts'o)는 Btrfs에 "reiser3/4에 있던 것과 동일한 설계 사상이 여러 개 있다"고 말했다.[86]

Btrfs는 자체적으로 분산 (네트워크 파일 시스템) 기능을 가지고 있지 않지만, 오라클은 Btrfs 상의 네트워크 스토리지를 위해 설계 및 최적화된 네트워크 파일 시스템 프로토콜인 [http://oss.oracle.com/projects/crfs/ CRFS] (''Coherent Remote File System'')를 구현하기 시작했다.

Btrfs의 기능은 다음과 같이 분류할 수 있다.

  • 구현된 기능
  • 프로덕션 환경에서 사용하지 않는 것이 좋은 기능
  • 상세 기능
  • 복제
  • 서브볼륨 및 스냅샷
  • 보내기-받기
  • 할당량 그룹
  • ext2/3/4 및 ReiserFS에서의 In-place 변환
  • 유니온 마운팅 / 시드 장치
  • 암호화
  • 검사 및 복구

3. 1. 구현된 기능


  • 대부분의 설정에서 쓰기 시 복사(copy-on-write) 특성으로 인한 자체 복구 기능이 있다.[31]
  • 온라인 조각 모음 및 ''autodefrag''(자동 조각 모음) 마운트 옵션을 지원한다.
  • 온라인 볼륨 확장 및 축소가 가능하다.
  • 온라인 블록 장치 추가 및 제거를 할 수 있다.
  • 온라인 밸런싱(부하 분산을 위해 블록 장치 간 객체 이동)을 지원한다.
  • 오프라인 파일 시스템 검사 기능을 제공한다.[32]
  • 중복 복사본이 있는 파일에 대한 오류를 찾아 자동으로 수정하는 온라인 데이터 스크러빙 기능이 있다.
  • RAID 0, RAID 1, 및 RAID 10을 지원한다.[33]
  • 서브볼륨(각 디스크 파티션 내에 별도로 마운트 가능한 하나 이상의 파일 시스템 루트)을 사용할 수 있다.
  • zlib, LZO[5] 및 (4.14부터) ZSTD를 통한 투명한 데이터 압축[6] 기능을 제공하며, 파일 또는 볼륨별로 구성할 수 있다.[34][35]
  • 서브볼륨의 원자적 쓰기 가능(쓰기 시 복사(copy-on-write)를 통해) 또는 읽기 전용[36] 스냅샷을 지원한다.
  • cp --reflink <source file> <destination file>을 통한 파일 복제(reflink, 쓰기 시 복사(copy-on-write))가 가능하다.[37]
  • 데이터 및 메타데이터에 대한 체크섬(CRC-32C[38])을 제공한다. 5.5부터는 xxHash, SHA256, BLAKE2B와 같은 새로운 해시 함수가 구현되었다.[39]
  • ext3/4에서 Btrfs로의 제자리 변환(롤백 포함)이 가능하다. (btrfs-progs 버전 4.0에서 퇴보, 4.6에서 처음부터 다시 작성)[40]
  • 파일 시스템 시딩으로 알려진 읽기 전용 저장소의 유니온 마운트 (쓰기 가능한 Btrfs에 대한 쓰기 시 복사(copy-on-write) 백업으로 사용되는 읽기 전용 저장소)를 지원한다.[41]
  • 블록 삭제(일부 하드웨어 가상화 설정에서 공간을 회수하고 TRIM을 사용하여 SSD의 마모 평준화를 개선) 기능을 제공한다.
  • 보내기/받기 (스냅샷 간의 diff를 바이너리 스트림으로 저장)를 지원한다.
  • 증분 백업이 가능하다.[42]
  • 대역 외 데이터 중복 제거 (사용자 공간 도구 필요)를 할 수 있다.[7]
  • 스왑 파일 및 스왑 파티션을 처리하는 기능을 갖추고 있다.

3. 2. 프로덕션 환경에서 사용하지 않는 것이 좋은 기능


  • 하위 볼륨별 계층 할당량
  • RAID 5, RAID 6 (쓰기 홀 방지 실패)[43][44][45]

3. 3. 상세 기능

Btrfs는 내결함성, 복구 기능 및 쉬운 관리에 초점을 맞추고 있다.[93]

Btrfs는 다음과 같은 특징을 구현하고 있다.[94]

  • 공간 효율적인 소규모 파일 저장 및 인덱싱된 디렉토리
  • 동적 inode 할당 (파일 시스템 생성 시 파일 수 최대값 없음)
  • 쓰기 가능한 스냅샷 및 스냅샷의 스냅샷
  • 서브볼륨 (다중 내부 루트 디렉토리)
  • 데이터 및 메타데이터 체크섬 (강력한 무결성 보장)
  • 압축 (gzip, LZO, Zstd)
  • 모든 데이터 및 메타데이터에 대한 카피 온 라이트 로깅
  • 여러 RAID 알고리즘 (RAID-0, RAID-1, RAID-5, RAID-6, RAID-10)과 여러 장치를 지원
  • 효율적인 증분 백업 (send/receive)
  • ext3, ext4에서 Btrfs로의 파일 시스템 업그레이드 및 업그레이드 시점 역변환[95]
  • 솔리드 스테이트 드라이브 (SSD) 최적화 모드
  • 온라인 조각 모음
  • 시드 장치 지원[96]
  • 오프라인 중복 제거 (사용자 공간 도구 필요)
  • 온라인 밸런싱
  • 온라인 볼륨 확장 및 축소
  • 온라인 장치 추가 및 삭제
  • 서브볼륨 쿼터


다음 기능은 개발 중이거나 개발 예정이다.

  • 매우 빠른 오프라인 파일 시스템 검사
  • 객체 수준의 미러링스트라이핑
  • 다른 체크섬 알고리즘
  • 온라인 파일 시스템 검사
  • 효율적인 증분 파일 시스템 미러링
  • 온라인 중복 제거
  • 스왑
  • 암호화


Btrfs 자체는 분산네트워크 파일 시스템으로 만드는 네이티브 기능을 가지고 있지 않지만, 오라클은 [http://oss.oracle.com/projects/crfs/ CRFS] (''Coherent Remote File System'')라는 Btrfs 상의 네트워크 스토리지용으로 설계되고 최적화된 네트워크 파일 시스템 프로토콜을 구현하기 시작했다.

3. 3. 1. 복제

Btrfs는 파일을 원자적으로 copy-on-write 방식으로 스냅샷을 생성하는 ''복제'' 기능을 제공한다. 이러한 복제된 파일은 ''reflinks''라고도 불린다.[46]

복제를 통해 파일 시스템은 기존 아이노드를 가리키는 새로운 링크를 생성하는 대신, 처음에는 원본 파일과 동일한 디스크 블록을 공유하는 새로운 아이노드를 생성한다. 결과적으로 복제는 동일한 Btrfs 파일 시스템 내에서만 작동하지만, 리눅스 커널 버전 3.6부터는 특정 상황에서 서브볼륨 경계를 넘을 수도 있다.[47] 실제 데이터 블록은 복제되지 않으며, Btrfs의 copy-on-write (CoW) 특성으로 인해 복제된 파일에 대한 수정 사항은 원본 파일에 영향을 주지 않고, 그 반대도 마찬가지이다.

복제는 하드 링크와는 다르다. 하드 링크는 동일한 파일에 대한 다른 이름으로 간주될 수 있지만, Btrfs의 복제는 처음에는 모든 디스크 블록을 공유하는 독립적인 파일을 제공한다.[48]

이 기능은 cp 명령어에 --reflink 옵션을 통해 GNU 코어유틸리티 버전 7.5에 추가되었다.[49][50]

Btrfs는 데이터 복제 외에도 대역 외 중복 제거도 지원한다. 이 기능을 사용하면 (부분적으로라도) 동일한 데이터를 가진 두 파일이 스토리지를 공유할 수 있다.[51][7]

3. 3. 2. 서브볼륨 및 스냅샷

Btrfs 서브볼륨은 별도의 POSIX 네임스페이스를 가진 것으로 생각할 수 있으며, `subvol` 또는 `subvolid` 옵션을 사용하여 별도로 마운트할 수 있다. 최상위 서브볼륨을 마운트하여 접근할 수도 있는데, 이 경우 서브볼륨은 하위 디렉토리로 표시되고 접근할 수 있다.

서브볼륨은 파일 시스템 계층 내 어디에서나 생성할 수 있으며, 중첩될 수도 있다. 중첩된 서브볼륨은 상위 서브볼륨 내에서 하위 디렉토리처럼 나타난다. 최상위 서브볼륨이 서브볼륨을 하위 디렉토리로 표시하는 방식과 유사하다. 중첩 계층에서 하위 서브볼륨이 모두 삭제될 때까지 서브볼륨을 삭제할 수 없다. 결과적으로 최상위 서브볼륨은 삭제할 수 없다.

모든 Btrfs 파일 시스템에는 항상 기본 서브볼륨이 있으며, 이는 처음에는 최상위 서브볼륨으로 설정되고 `mount`에 서브볼륨 선택 옵션이 전달되지 않으면 기본적으로 마운트된다. 기본 서브볼륨은 필요에 따라 변경할 수 있다.

Btrfs 스냅샷은 Btrfs의 카피-온-라이트 기능을 사용하여 다른 서브볼륨과 데이터(및 메타데이터)를 공유하는 서브볼륨이며, 스냅샷에 대한 수정 사항은 원본 서브볼륨에 표시되지 않는다. 쓰기 가능한 스냅샷이 생성되면 원본 파일 시스템의 대체 버전으로 처리할 수 있다. 예를 들어 스냅샷으로 롤백하려면 수정된 원본 서브볼륨을 마운트 해제하고 스냅샷을 해당 위치에 마운트해야 한다. 이 시점에서 원본 서브볼륨도 삭제할 수 있다.

스내퍼로 관리되는 Btrfs 파일 시스템의 스냅샷 예시


Btrfs의 카피-온-라이트(CoW) 특성은 스냅샷이 빠르게 생성되고 처음에는 매우 적은 디스크 공간을 소비한다는 것을 의미한다. 스냅샷은 서브볼륨이므로 중첩된 스냅샷을 생성하는 것도 가능하다. 서브볼륨의 스냅샷을 생성하는 것은 재귀적인 프로세스가 아니다. 따라서 서브볼륨의 스냅샷이 생성되면 서브볼륨이 이미 포함하고 있는 모든 서브볼륨 또는 스냅샷은 스냅샷 내에서 동일한 이름의 빈 디렉토리에 매핑된다.

디렉토리의 스냅샷은 서브볼륨만 스냅샷을 가질 수 있으므로 불가능하다. 그러나 서브볼륨에 걸쳐 리링크를 사용하는 해결 방법이 있다. 새로운 서브볼륨이 생성되어 대상 디렉토리의 내용에 대한 교차 서브볼륨 리링크를 포함한다. 이를 사용할 수 있으면 이 새로운 볼륨의 스냅샷을 생성할 수 있다.

Btrfs의 서브볼륨은 기존의 논리 볼륨 관리자(LVM) 논리 볼륨과는 매우 다르다. LVM에서 논리 볼륨은 별도의 블록 장치인 반면, Btrfs 서브볼륨은 그렇지 않으며 그러한 방식으로 처리하거나 사용할 수 없다. Btrfs의 dd 또는 LVM 스냅샷을 만들면 원본 또는 사본이 모두 동일한 컴퓨터에 마운트된 상태에서 데이터가 손실된다.[52]

3. 3. 3. 보내기-받기

Btrfs는 한 쌍의 서브볼륨(또는 스냅샷)이 주어지면, 나중에 다른 Btrfs 파일 시스템에서 재생할 수 있는 바이너리 차이점을 생성할 수 있다.(`btrfs send` 명령어를 사용하여) (`btrfs receive`를 사용하여). send-receive 기능은 하나의 서브볼륨을 다른 서브볼륨으로 변환하는 데 필요한 일련의 데이터 수정을 효과적으로 생성(및 적용)한다.

send/receive 기능은 정기적으로 예약된 스냅샷과 함께 사용하여 간단한 형태의 파일 시스템 복제를 구현하거나 증분 백업을 수행하는 데 사용할 수 있다.

3. 3. 4. 할당량 그룹

Btrfs 할당량 그룹 예시


'''할당량 그룹'''(quota group, qgroup)은 서브볼륨이나 스냅샷이 사용할 수 있는 공간의 상한을 설정한다. 새로운 스냅샷은 처음에는 부모와 데이터를 공유하므로 할당량을 소모하지 않지만, 이후 새로운 파일 및 기존 파일에 대한 copy-on-write 작업에 대한 비용이 발생한다. 할당량이 활성화되면 각 새로운 서브볼륨이나 스냅샷과 함께 할당량 그룹이 자동으로 생성된다. 이러한 초기 할당량 그룹은 쿼터 풀을 구현하기 위해 계층 구조로 그룹화될 수 있는 구성 요소이다( `btrfs qgroup` 명령 사용).

할당량 그룹은 서브볼륨과 스냅샷에만 적용되며, 개별 하위 디렉터리, 사용자 또는 사용자 그룹에 할당량을 적용하는 것은 불가능하다. 그러나 할당량을 적용해야 하는 모든 사용자나 사용자 그룹에 대해 서로 다른 서브볼륨을 사용하는 방법으로 해결할 수 있다.

3. 3. 5. In-place conversion from ext2/3/4 and ReiserFS

Btrfs는 ext2/3/4 또는 ReiserFS 파일 시스템을 제자리에서 변환하는 기능을 제공한다. `btrfs-convert` 도구는 Btrfs의 메타데이터를 할당되지 않은 공간에 중첩하여 원본 파일 시스템의 수정되지 않은 복사본을 보존하는 방식으로 이 기능을 수행한다.

변환 과정에는 전체 ext2/3/4 메타데이터의 복사본을 만드는 작업이 포함되며, Btrfs 파일은 ext2/3/4 파일에서 사용되는 동일한 블록을 가리킨다. 이를 통해 변환이 영구적으로 변경되기 전까지 두 파일 시스템 간에 대부분의 블록이 공유된다. Btrfs의 Copy-on-Write 특성 덕분에 파일 데이터 블록의 원본 버전은 모든 파일 수정 중에 보존된다. 변환이 영구적으로 변경되기 전까지는 ext2/3/4에서 사용 가능한 블록만 새로운 Btrfs 수정 사항을 저장하는 데 사용된다. 즉, 변환은 언제든지 실행 취소할 수 있다(하지만 그렇게 하면 Btrfs로 변환한 후 변경 사항이 모두 지워진다).

변환된 모든 파일은 Btrfs의 기본 서브볼륨에서 사용 가능하며 쓰기가 가능하다. 원본 ext2/3/4 파일 시스템에 대한 모든 참조를 보유하는 스파스 파일은 별도의 서브볼륨에 생성되며, 이 파일은 자체적으로 읽기 전용 디스크 이미지로 마운트할 수 있으므로 원본 파일 시스템과 변환된 파일 시스템을 동시에 접근할 수 있다. 이 스파스 파일을 삭제하면 공간이 확보되고 변환이 영구적으로 변경된다.

주요 Linux 커널의 4.x 버전에서 제자리 ext3/4 변환은 테스트되지 않았고 거의 사용되지 않는 것으로 간주되었다. 그러나 이 기능은 `btrfs-progs` 4.6용으로 2016년에 처음부터 다시 작성되었으며,[40] 그 이후로 안정적인 것으로 간주되었다.

ReiserFS에서 제자리 변환은 2017년 9월 커널 4.13과 함께 도입되었다.[53]

3. 3. 6. 유니온 마운팅 / 시드 장치

새로운 Btrfs를 생성할 때 기존 Btrfs를 읽기 전용 "시드" 파일 시스템으로 사용할 수 있다.[54] 그러면 새 파일 시스템은 유니온 마운트의 한 형태로 시드 위에 copy-on-write 오버레이 역할을 한다. 시드는 나중에 Btrfs에서 분리될 수 있으며, 이 시점에서 리밸런서는 분리하기 전에 새 파일 시스템에서 여전히 참조하는 모든 시드 데이터를 복사한다. 메이슨(Mason)은 이것이 라이브 CD 설치 프로그램에 유용할 수 있다고 제안했다. 이는 광 디스크의 읽기 전용 Btrfs 시드에서 부팅하고, 사용자가 계속 작업하는 동안 설치 디스크의 대상 파티션으로 백그라운드에서 자체적으로 리밸런싱한 다음 디스크를 꺼내어 재부팅 없이 설치를 완료할 수 있다.

3. 3. 7. 암호화

2009년 인터뷰에서 메이슨은 Btrfs에 대한 암호화 지원이 계획되어 있다고 언급했다.[55] 그동안 Btrfs와 암호화를 결합하는 해결 방법은 기본 장치에서 dm-crypt/LUKS와 같은 전체 디스크 암호화 메커니즘을 사용하고, 그 위에 Btrfs 파일 시스템을 생성하는 것이다.

2020년 기준으로, 개발자들은 HMAC(SHA256)과 같은 키 해시를 추가하기 위해 노력하고 있었다.[56]

3. 3. 8. 검사 및 복구

유닉스 시스템은 전통적으로 파일 시스템을 검사하고 복구하기 위해 "fsck" 프로그램을 사용한다. 이 기능은 `btrfs check` 프로그램을 통해 구현된다. 버전 4.0부터 이 기능은 비교적 안정적인 것으로 간주된다. 그러나 2022년 12월 현재 btrfs 문서는 `--repair` 옵션은 "개발자 또는 숙련된 사용자"의 조언을 받은 경우에만 사용하도록 권장한다. 2022년 8월 현재, SLE 문서는 라이브 CD를 사용하고, 백업을 수행하고, 마지막 수단으로만 repair 옵션을 사용하도록 권장한다.[57]

`btrfs-restore`라는 또 다른 도구가 있는데, 이는 손상된 파일 시스템 자체를 수정하지 않고(즉, 비파괴적으로) 마운트할 수 없는 파일 시스템에서 파일을 복구하는 데 사용할 수 있다.[58][59]

일반적인 사용에서 Btrfs는 대부분 자체적으로 복구되며, 기본적으로 30초마다 영구 저장소에 주기적인 데이터 플러시를 수행하여 마운트 시 손상된 루트 트리를 복구할 수 있다. 따라서 격리된 오류는 다음 마운트 시 최대 30초 분량의 파일 시스템 변경 사항 손실을 유발한다.[60] 이 주기는 `commit` 마운트 옵션으로 원하는 값(초 단위)을 지정하여 변경할 수 있다.[61][62]

4. 설계

Btrfs의 핵심 데이터 구조는 카피 온 라이트(copy-on-write) 방식의 B-tree이다. 이는 2007년 USENIX 컨퍼런스에서 IBM 연구원 오하드 로데(Ohad Rodeh)가 처음 제안하였다.

Btrfs는 데이터베이스에서 널리 사용되는 B+ 트리가 카피 온 라이트 기반 스냅샷을 효율적으로 지원하지 못한다는 점에 착안하여 수정된 B-트리를 사용한다. 이 수정된 B-트리는 잎 노드 연결이 없고, 각 노드에 참조 계수를 연결하며, 카피 온 라이트에 친화적인 균형 알고리즘을 가진다. 이러한 구조는 고성능 객체 저장소에 적합하며, 카피 온 라이트 스냅샷을 지원하면서도 뛰어난 동시 컴퓨팅 성능을 제공한다.

Btrfs는 동일한 B-트리 구현을 사용하는 여러 계층의 트리로 구성된다. 이러한 트리는 메타데이터와 파일 데이터뿐만 아니라 트리 자체의 공간 할당을 추적하는 데에도 재귀적으로 사용된다. 이러한 통합 구조 덕분에 모든 수정 및 순회 작업이 단일 코드 경로를 통해 처리될 수 있으며, 카피 온 라이트, 체크섬, 미러링과 같은 기능을 한 번만 구현하면 전체 파일 시스템에 적용할 수 있다.

Btrfs의 트리는 136비트 키로 정렬된 '항목'을 저장한다. 키의 최상위 64비트는 고유한 '객체 ID', 중간 8비트는 항목 유형, 나머지 64비트는 유형별로 사용된다. 내부 트리 노드는 키-포인터 쌍의 목록이며, 포인터는 하위 노드의 논리 블록 번호이다. 잎 노드는 노드 앞에는 항목 키, 뒤에는 항목 데이터를 저장한다.

파일 시스템을 마운트할 때 필요한 부트스트랩 정보는 ''슈퍼블록''에 저장된다.[74] ''슈퍼블록 미러''는 모든 블록 장치에서 64 KiB 떨어진 곳과 64 MiB, 256 GiB, 1 PiB에 추가 복사본이 유지되는 등 고정된 위치에 보관된다.[75]

5. 상용 지원

Btrfs는 다음 운영체제에서 상용으로 지원된다.

운영체제버전비고
오라클 리눅스7[76][77]
SUSE Linux Enterprise Server12[78][79]
시놀로지 디스크스테이션 매니저(DSM)6.0[80]



레드햇 엔터프라이즈 리눅스(RHEL)에서는 6, 7 버전에서 "기술 미리 보기"로 포함되었으나, RHEL 8에서 제거되었다.[19][27][81][82]

5. 1. 지원

5. 2. 지원 중단

레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux) 6 및 7에 "기술 미리 보기"로 포함되었으나,[19][27] 2018년 RHEL 8에서 제거되었다.[28][81][82]

참조

[1] 웹사이트 Contributors at BTRFS documentation https://btrfs.readth[...] kernel.org 2022-06-15
[2] 웹사이트 GPT fdisk - ArchWiki https://wiki.archlin[...]
[3] 웹사이트 File creation times https://lwn.net/Arti[...] 2010-07-26
[4] 웹사이트 On-disk Format - btrfs Wiki https://btrfs.wiki.k[...]
[5] 웹사이트 btrfs Wiki https://btrfs.wiki.k[...]
[6] 웹사이트 Linux_4.14 - Linux Kernel Newbies https://kernelnewbie[...]
[7] 웹사이트 Deduplication https://btrfs.readth[...]
[8] 웹사이트 Windows Driver on GitHub.com https://github.com/m[...]
[9] 웹사이트 ReactOS 0.4.1 Released https://reactos.org/[...]
[10] 웹사이트 Oracle Linux 7 Q&A with Wim Coekaerts http://streaming.ora[...]
[11] 비디오 Chunkfs: Fast file system check and repair http://mirror.linux.[...] 2008-01-31
[12] 웹사이트 Examining btrfs, Linux's perpetually half-finished filesystem https://arstechnica.[...] 2021-09-24
[13] 웹사이트 Linux kernel commit changing stability status in fs/btrfs/Kconfig https://git.kernel.o[...]
[14] 웹사이트 A Better File System for Linux? http://www.internetn[...] 2008-10-30
[15] 웹사이트 Panelists Ponder the Kernel at Linux Collaboration Summit https://arstechnica.[...] 2009-04-13
[16] 메일링리스트 Re: reiser4 for 2.6.27-rc1 https://lkml.org/lkm[...] 2008-08-01
[17] 웹사이트 Development timeline http://btrfs.wiki.ke[...] 2008-12-11
[18] 뉴스 Kernel 2.6.29: Corbet Says Btrfs Next Generation Filesystem http://www.linux-mag[...] 2009-01-12
[19] 웹사이트 Red Hat Enterprise Linux 6 documentation: Technology Previews http://docs.redhat.c[...]
[20] 웹사이트 Fedora Weekly News Issue 276 http://fedoraproject[...] 2011-05-25
[21] 보도자료 Debian 6.0 "Squeeze" released http://www.debian.or[...] Debian 2011-02-06
[22] 뉴스 Kernel Log: Coming in 3.0 (Part 2) - Filesystems http://www.h-online.[...] 2011-06-21
[23] 웹사이트 iTWire http://www.itwire.co[...]
[24] 웹사이트 Unbreakable Enterprise Kernel Release 2 has been released https://blogs.oracle[...]
[25] 웹사이트 SLES 11 SP2 Release Notes http://www.novell.co[...] 2012-08-21
[26] 웹사이트 SUSE Linux Enterprise Server 12 Release Notes https://www.suse.com[...] 2015-11-05
[27] 웹사이트 Red Hat Enterprise Linux 7.4 Release Notes, Chapter 53: Deprecated Functionality https://access.redha[...] 2017-08-01
[28] 웹사이트 Considerations in adopting RHEL 8 https://access.redha[...] Red Hat
[29] 웹사이트 How to Choose Your Red Hat Enterprise Linux File System https://access.redha[...] 2020-09-04
[30] 웹사이트 Btrfs Coming to Fedora 33 https://fedoramagazi[...] 2020-08-24
[31] 웹사이트 Btrfs Wiki: Changelog https://btrfs.wiki.k[...] 2019-05-29
[32] 웹사이트 Manpage btrfs-check https://btrfs.readth[...]
[33] 웹사이트 Using Btrfs with Multiple Devices https://btrfs.wiki.k[...] 2013-11-07
[34] 웹사이트 Compression https://btrfs.wiki.k[...] 2013-06-25
[35] 웹사이트 Btrfs: add support for inode properties https://git.kernel.o[...] 2014-01-28
[36] 웹사이트 btrfs: Readonly snapshots https://lwn.net/Arti[...] 2011-12-12
[37] 웹사이트 Save disk space on Linux by cloning files on Btrfs and OCFS2 https://blogs.oracle[...] 2017-08-01
[38] 웹사이트 Wiki FAQ: What checksum function does Btrfs use? http://btrfs.wiki.ke[...] 2009-06-15
[39] 웹사이트 Btrfs hilights in 5.5: new hashes https://kdave.github[...] 2020-08-29
[40] 웹사이트 Btrfs progs release 4.6 https://www.spinics.[...] 2017-08-01
[41] 웹사이트 Btrfs changelog http://btrfs.ipv5.de[...] 2009-01-12
[42] 웹사이트 Btrfs Wiki: Incremental Backup https://btrfs.wiki.k[...] 2013-05-27
[43] 웹사이트 RAID 5/6 https://btrfs.wiki.k[...] kernel.org 2016-07-16
[44] 웹사이트 How to use btrfs raid5 successfully(ish) https://lore.kernel.[...]
[45] 웹사이트 Current bugs with operational impact on btrfs raid5 https://lore.kernel.[...]
[46] 웹사이트 The two sides of reflink() https://lwn.net/Arti[...] LWN.net 2009-05-05
[47] 웹사이트 btrfs: allow cross-subvolume file clone https://github.com/t[...]
[48] 웹사이트 Symlinks reference names, hardlinks reference meta-data and reflinks reference data http://www.pixelbeat[...] 2010-10-27
[49] 웹사이트 GNU coreutils NEWS: Noteworthy changes in release 7.5 http://git.savannah.[...] 2009-08-20
[50] 웹사이트 cp: accept the --reflink option http://git.savannah.[...] 2009-08-01
[51] man ioctl_fideduperange Linux
[52] 웹사이트 Gotchas - btrfs Wiki https://btrfs.wiki.k[...]
[53] 웹사이트 btrfs-convert(8) — BTRFS Documentation https://btrfs.readth[...] 2022-10-16
[54] 웹사이트 Seed device https://btrfs.wiki.k[...] 2017-08-01
[55] 웹사이트 A Conversation with Chris Mason on BTRfs: the next generation file system for Linux http://www.linuxfoun[...] Linux Foundation 2009-06-22
[56] 웹사이트 authenticated file systems using HMAC(SHA256) https://lore.kernel.[...]
[57] 웹사이트 How to recover from BTRFS errors {{!}} Support {{!}} SUSE https://www.suse.com[...]
[58] 웹사이트 Restore - btrfs Wiki https://btrfs.wiki.k[...]
[59] 웹사이트 btrfs-restore(8) - Linux manual page https://man7.org/lin[...]
[60] 웹사이트 Problem FAQ - btrfs Wiki https://btrfs.wiki.k[...] 2013-07-31
[61] 웹사이트 kernel/git/torvalds/linux.git: Documentation: filesystems: add new btrfs mount options (Linux kernel source tree) https://git.kernel.o[...] kernel.org 2013-11-21
[62] 웹사이트 Mount options - btrfs Wiki https://btrfs.readth[...] 2013-11-12
[63] 웹사이트 Re: Ext2 directory index: ALS paper and benchmarks http://lkml.indiana.[...] 2001-12-07
[64] 웹사이트 Acp http://oss.oracle.co[...]
[65] 웹사이트 btrfs: extended inode refs https://git.kernel.o[...] 2012-10-09
[66] 웹사이트 Pull btrfs update from Chris Mason https://git.kernel.o[...] 2012-10-10
[67] 웹사이트 Benchmarks of the Btrfs Space Cache Option https://www.phoronix[...] Phoronix 2010-12-24
[68] 웹사이트 FAQ - btrfs Wiki: What checksum function does Btrfs use? https://btrfs.wiki.k[...] The btrfs Project
[69] 웹사이트 Bitrot and Atomic COWs: Inside "Next-Gen" Filesystems https://arstechnica.[...] 2014-01-15
[70] 웹사이트 Btrfs Scrub – Go Fix Corruptions with Mirror Copies Please! https://blogs.oracle[...] 2011-09-28
[71] 웹사이트 Glossary https://web.archive.[...] 2021-07-31
[72] 웹사이트 Manpage/mkfs.btrfs https://btrfs.wiki.k[...] 2021-07-31
[73] 웹사이트 BTRFS: The Linux B-tree Filesystem http://domino.watson[...] IBM Research 2012-07-09
[74] 웹사이트 Multiple device support https://web.archive.[...] 2008-04-30
[75] 메일링리스트 Re: Restoring BTRFS partition http://kerneltrap.or[...] 2010-04-20
[76] 웹사이트 Oracle Now Supports Btrfs RAID5/6 on Their Unbreakable Enterprise Kernel - Phoronix https://www.phoronix[...]
[77] 웹사이트 Managing Btrfs in Oracle Linux 8 https://docs.oracle.[...] 2020-06-06
[78] 웹사이트 SUSE Reaffirms Support for Btrfs https://lwn.net/Arti[...]
[79] 웹사이트 SUSE Linux Enterprise Server 12 Release Notes https://www.suse.com[...] 2021-02-28
[80] 웹사이트 Cloud Station White Paper https://web.archive.[...] Synology 2021-04-02
[81] 웹사이트 Btrfs has been deprecated in RHEL https://news.ycombin[...]
[82] 웹사이트 Red Hat Appears to Be Abandoning Their Btrfs Hopes - Phoronix https://www.phoronix[...]
[83] 비디오 Chunkfs: Fast file system check and repair http://mirror.linux.[...] 2008-01-31
[84] 웹사이트 CRFS and POHMELFS http://lwn.net/Artic[...]
[85] 웹사이트 Btrfs: a copy on write, snapshotting FS http://lkml.org/lkml[...] 2007-06-12
[86] 웹사이트 Re: reiser4 for 2.6.27-rc1 http://lkml.org/lkml[...] 2008-08-01
[87] 웹사이트 A Better File System For Linux http://www.internetn[...] 2008-10-30
[88] 웹사이트 Btrfs merged for 2.6.29 http://lwn.net/Artic[...] 2009-01-09
[89] 웹사이트 Red Hat Enterprise 6.0 Technical Notes - 4. Storage and Filesystems https://access.redha[...] Red Hat 2023-10-12
[90] 웹사이트 Red Hat Enterprise Linux 7.4 Release Notes - Chapter 53. Deprecated Functionality in Red Hat Enterprise Linux 7 https://access.redha[...] RedHat 2023-10-12
[91] 웹사이트 Red Hat Enterprise Linux 8 Considerations in adopting RHEL 8 - Chapter 12. File systems and storage https://access.redha[...] RedHat 2023-10-12
[92] 웹사이트 https://reactos.org/[...]
[93] 웹사이트 Btrfs wiki Main Page http://btrfs.wiki.ke[...] 2008-03-12
[94] 웹사이트 btrfs and NILFS http://lwn.net/Artic[...] 2007-06-19
[95] 웹사이트 Conversion from Ext3 http://btrfs.wiki.ke[...]
[96] 웹사이트 Changelog http://btrfs.wiki.ke[...] 2009-01-12
[97] 웹인용 Which companies contribute to Btrfs? https://web.archive.[...] gmane.org 2014-04-24
[98] 웹인용 Suse Documentation: Storage Administration Guide{{snd}} Large File Support in Linux https://www.suse.com[...] SUSE 2015-08-12
[99] 웹인용 Large File Support in Linux http://users.suse.co[...] 2005-02-15
[100] 웹인용 Linux kernel configuration help for CONFIG_LBD in 2.6.29 on x86 https://web.archive.[...]
[101] 웹인용 File creation times https://lwn.net/Arti[...] LWN.net 2010-07-26
[102] 웹인용 btrfs Wiki https://btrfs.wiki.k[...] 2015-04-19
[103] 웹인용 LZ4 For Btrfs Arrives While Its FSCK Remains M.I.A. http://www.phoronix.[...] 2015-04-19
[104] 웹인용 Deduplication https://btrfs.wiki.k[...] 2015-04-19
[105] 비디오 linux.conf.au 2008 - 발레리에 헨슨의 Chunkfs 강의 동영상 - 18분 49초 부분에서 http://mirror.linux.[...]
[106] 웹인용 A Conversation with Chris Mason on BTRfs: the next generation file system for Linux http://www.linuxfoun[...] Linux Foundation 2009-06-22
[107] 콘퍼런스 B-trees, shadowing, and clones https://www.usenix.o[...]

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com