Btrfs 스냅샷 수에 대한 실제 제한은 무엇입니까?

Btrfs 스냅샷 수에 대한 실제 제한은 무엇입니까?

데이터 드라이브에서 btrfs를 사용하여 사용할 수 있도록 고려 중입니다.도미, 또는 시간 기반 스냅샷을 찍을 수 있는 snapper와 같은 것입니다. 나는 이것이 이전 버전의 데이터를 탐색할 수 있게 해줄 것이라고 믿습니다. 드라이브 오류로 인해 데이터와 스냅샷이 삭제되므로 이는 현재의 오프사이트 백업에 추가됩니다.

내가 이해한 바에 따르면 btrfs 스냅샷은 많은 공간(메타데이터 및 변경된 블록, 그리고 아마도 약간의 오버헤드)을 차지하지 않으므로 공간이 제한이 되지 않는 것 같습니다.

백만 개의 스냅샷(예: 2년 동안 1분에 1개씩)이 있는 경우 데이터, 변경된 데이터 및 메타데이터를 저장할 충분한 디스크 공간이 있다고 가정하면 이것이 큰 혼란을 초래할 수 있습니까?

스냅샷 수에 실제 제한이 있는 경우 파일 수 및/또는 파일 크기에 따라 달라지나요?

답변1

지난 몇 년 동안 btrfs파일 시스템을 사용해 온 사람으로서 , 쉽게 얻을 수 있는 스냅샷 수에는 실질적인 제한이 없는 것 같다고 안전하게 말할 수 있습니다. 그러나 몇 가지 주의 사항이 있습니다. 파일 시스템은 조각화될 수 있습니다. 따라서 내장된 온라인 조각 모음 기능을 사용하는 것이 좋습니다 . 또한 압축 기능 을 최대한 활용할 수 있습니다 . 이러한 조치는 합리적으로 괜찮은 시스템에서 많은 수의 스냅샷을 생성할 때 명백하게 나타날 수 있는 대부분의 성능 문제를 해결해야 합니다.Arch Linux2btrfsbtrfsbtrfs

아시다시피 btrfs하위 볼륨은 파일 시스템으로 간주되므로 스냅샷 수는 파일 크기에 따라 실제로 제한됩니다. Wiki 에 따르면 btrfs달성할 수 있는 최대 파일 크기는 다음과 같습니다.2^64 byte == 16 EiB[1].

이러한 제한 사항 외에도 파일 시스템에서 여유 공간을 확인하는 것이 때때로 까다로울 수 있기 때문에 즉시 깨닫지 못한 채 공간이 부족할 때 항상 문제가 있을 수 있습니다 . 즉 , 여유 공간을 측정하는 다양한 방법을 btrfs구별할 수 있는 방법이 없습니다. btrfs파일 시스템에서. 실제 남은 공간을 쉽게 추적할 수 있습니다. 이를 방지하는 한 가지 가능한 방법은 할당량을 사용하는 것입니다. 이렇게 하면 사용자(또는 사용자가 한 명뿐인 경우 사용자)가 특정 공간만 사용할 수 있습니다. 이 개념은 매우 교묘하게 논의됩니다.여기그리고여기.

마지막이지만 중요한 경고: 저는 btrfs파일 시스템 전문가가 아니며 얼마 전에 동일한 문제에 직면했을 때 이 글을 읽었습니다. 또한 항상 "빠르게 움직이는 목표"( btrfs위키 페이지에서 훔친 멋진 표현이라고 생각합니다.) 문제가 있으므로 상황이 바뀔 수 있습니다.Arch Linux

답변2

기술적으로 스냅샷 수에는 제한이 없지만 제가 물었습니다.BTRFS 메일링 리스트:

(실제) 대답은 btrfs를 사용하는 방법에 따라 다소 다릅니다.

Btrfs에는 너무 많은 스냅샷으로 인해 크기 조정 문제가 있습니다(또는 실제로 참조 링크 스냅샷을 사용하거나 중복 제거를 위해 참조 링크를 사용하면 동일한 크기 조정 문제가 발생할 수 있음). 따라서 낮은 두 자릿수의 스냅샷 하위 볼륨당 스냅샷에 한 자릿수를 사용하는 것이 좋습니다.

그러나 확장 문제는 주로 btrfs 유지 관리 명령 자체, 균형 조정, 확인 및 하위 볼륨 삭제에 영향을 미칩니다. 수백만 개의 스냅샷으로 인해 균형 조정이 불가능해지지만(작동하지만 몇 달이 걸릴 수 있음) 조각화가 문제가 되지 않는 한 일반적인 파일 시스템 작업(예: 파일 읽기 및 저장)은 영향을 받지 않는 경향이 있습니다(소 파일 시스템(예: btrfs)) 조각화를 줄이기 위해 조각 모음과 같은 단계를 수행하지 않는 한 조각화로 악명이 높습니다.

Time Machine/Snapshot과 유사한 아카이브 백업으로 스냅샷을 사용하는 것은 좋은 생각이 아닌 것 같습니다.

답변3

총 2,64개의 스냅샷과 하위 볼륨을 보유할 수 있습니다 .

이것btrfs디자인 위키 페이지말했다(강조):

하위 볼륨은 기본적으로 파일과 디렉터리를 보유하는 명명된 btree입니다. 루트 트리 내에 inode가 있으며 루트가 아닌 소유자 및 그룹을 가질 수 있습니다. 하위 볼륨에는 블록 할당량이 할당될 수 있으며 해당 할당량에 도달하면 새로운 쓰기가 허용되지 않습니다. 하위 볼륨 내의 모든 블록 및 파일 범위는 스냅샷을 허용하기 위해 참조 계산됩니다.FS에서는 최대 2,64개의 하위 볼륨을 생성할 수 있습니다 .

스냅샷은 하위 볼륨과 동일합니다., 그러나 해당 루트 블록은 원래 다른 하위 볼륨과 공유되었습니다. 스냅샷이 생성되면 루트 블록의 참조 카운트가 증가하고 쓰기 시 복사 트랜잭션 시스템은 스냅샷이나 소스 하위 볼륨의 변경 사항이 해당 루트에만 적용되도록 보장합니다. 스냅샷은 쓰기 가능하며 여러 번 생성될 수 있습니다. 읽기 전용 스냅샷이 필요한 경우 생성 시 해당 블록 할당량은 1로 설정됩니다.

관련 정보