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


23

Snapper 또는 Snapper와 같은 것을 사용 하여 시간 기반 스냅 샷을 만들 수 있도록 데이터 드라이브에서 btrfs를 사용하는 것을 고려 하고 있습니다. 이전 버전의 데이터를 찾아 볼 수 있다고 생각합니다. 드라이브 고장으로 인해 데이터와 스냅 샷이 지워지기 때문에 현재 오프 사이트 백업에 추가됩니다.

내 이해에 따르면 btrfs 스냅 샷은 많은 공간 (메타 데이터 및 변경된 블록과 오버 헤드)을 차지하지 않으므로 공간이 제약되는 것처럼 보이지 않습니다.

데이터, 변경된 데이터 및 메타 데이터를위한 충분한 디스크 공간이 있다고 가정 할 때 백만 개의 스냅 샷이있는 경우 (예 : 2 년 동안 매분마다 스냅 샷) 혼란을 유발할 수 있습니까?

스냅 샷 수에 실질적인 제한이있는 경우 파일 수 및 / 또는 파일 크기에 따라 달라 집니까?

답변:


16

거의 몇 년 동안 btrfs파일 시스템을 사용하는 사람으로서 이제는 쉽게 도달 할 수있는 스냅 샷 수에 실질적인 제한이없는 것 같습니다. 그러나 몇 가지주의 사항이 있습니다. 파일 시스템은 조각화로 이어질 수 있습니다. 따라서에 내장 된 온라인 조각 모음 기능을 사용하는 것이 좋습니다 . 또한 압축 기능 을 잘 활용할 수 있습니다 . 이러한 조치는 합리적 수준의 컴퓨터에서 많은 스냅 샷을 생성하지 못했을 때 발생할 수있는 대부분의 성능 문제를 처리해야합니다.Arch Linux2btrfsbtrfsbtrfs

아시다시피 btrfs하위 볼륨을 파일 시스템으로 취급하므로 스냅 샷 수는 파일 크기에 따라 제한됩니다. btrfs위키 에 따르면 도달 할 수있는 최대 파일 크기는 2^64 byte == 16 EiB[1] 입니다.

이러한 제한 외에도 btrfs파일 시스템 에서 여유 공간을 확인하는 것이 까다로울 수 있기 때문에 즉각 인식하지 않고 공간이 부족한 경우 항상 문제가 발생할 수 btrfs있습니다. 실제로 남은 공간을 쉽게 추적 할 수 있습니다. 이 시나리오를 막을 수있는 한 가지 방법은 할당량을 사용하는 것입니다. 이를 통해 사용자 (또는 하나 인 경우 사용자)는 일정량의 공간 만 사용할 수 있습니다. 이 개념은 여기여기 에서 매우 잘 논의 됩니다 .

마지막으로 경고는 아닙니다 : 저는 btrfs파일 시스템 전문가가 아니며 한참 전에 같은 질문을 받았을 때만 이것에 대해 읽습니다. 또한 항상 btrfs"빠르게 움직이는 대상"( Arch Linux위키 페이지 에서 도난당한 좋은 표현 )이라는 문제가 있기 때문에 상황이 바뀔 수 있습니다.


1
그 이전의 채택 자 중 한 명이기도합니다.
mikeserv

pretty :)
Mark K Cowan

1
하나의 BTRFS 볼륨에서 100 개 미만의 스냅 샷을 유지해야합니다. 그렇지 않으면 특히 스냅 샷 삭제시 성능 문제가 발생할 수 있습니다. 스냅 샷 생성 비용은 저렴하지만 삭제하지는 않습니다. 또한 스냅 샷 사용과 함께 조각 모음을 수행 할 것을 권장하면 스냅 샷의 공간 효율성이 없어집니다. 조각 모음은 참조 링크를 끊고 사용 된 공간을 곱합니다.
Monica Cellio를위한 MountainX

@MountainX 당신은 이것에 대한 답을 정교하게 할 수 있습니다. 볼륨의 스냅 샷 100 개는 2 년 동안 일주일에 1 개도 아닙니다.
StrongBad

@StrongBad-문제에 대한 응답으로 BTRFS 메일 링리스트에서 해당 정보를 받았습니다. 모두 수백 또는 수천 개의 스냅 샷을 만드는 것이 좋지 않다는 데 동의했습니다. 보다 기술적 인 답변을 얻으려면 BTRFS 메일 링리스트에 문의해야합니다.
Monica Cellio를위한 MountainX

5

기술적으로 스냅 샷 수에는 제한이 없지만 BTRFS 메일 링리스트 에 요청했습니다 .

(실제) 답변은 btrfs 사용 방법에 따라 어느 정도 다릅니다.

Btrfs에는 너무 많은 스냅 샷 (또는 실제로는 reflink 스냅 샷에서 사용하는 reflink를 사용한 중복 제거가 동일한 스케일링 문제를 유발할 수 있음)으로 인해 스케일링 문제가 있으며 스냅 샷 된 하위 볼륨 당 단일 또는 낮은 두 자리 수의 스냅 샷이 그 이유에 대한 강력한 권장 사항으로 남아 있습니다.

그러나 스케일링 문제는 주로 btrfs 유지 보수 명령 자체, 밸런스, 점검, 하위 볼륨 삭제에 영향을줍니다. 수백만 개의 스냅 샷이 예를 들어 효과적으로 작동 할 수없는 균형을 유지하지만 (일종의 작업이지만 몇 달이 걸릴 수 있음) 파일 읽기 및 저장과 같은 일반적인 파일 시스템 작업은 조각화가 문제가되는 범위를 제외하고는 영향을받지 않는 경향이 있습니다 ( 조각 모음과 같은 단계를 수행하지 않으면 btrfs와 같은 소 파일 시스템이 조각화로 표시됩니다.

스냅 샷을 타임머신 / 스냅 퍼와 유사한 아카이브 백업으로 사용하는 것은 좋은 생각이 아닙니다.


Time Machine은 보관 백업이 아니라 백업입니다. 나는 당신의 결론을 공유하지 않습니다. btrfs 스냅 샷을 사용하는 것은 백업과 같은 Time Machine에 매우 좋은 아이디어가 될 수 있습니다 (Linux 커널은 디렉토리를 링크 할 수 없으므로 모든 스냅에 대해 전체 디렉토리 구조를 다시 생성하여 디스크 공간이 많이 사용될 수 있기 때문에). 장치를 추가하지 않고 단일 백업 장치에서 백업하는 경우 balance 명령을 실행할 목적조차 없습니다. btrfs 목록 답변도 이것을 설명하려고 시도합니다.
프로 백업

@ProBackup btrfs 목록 답변에 따르면 스냅 샷의 수는 의심스러운 자릿수에서 낮은 의심 자릿수로 유지해야합니다. 스냅 아치 기본값은 실제로 그렇지 않습니다. 간단한 설정에는 btrfs-balance가 필요하지 않지만 btrfs-check라는 아이디어는 필요하지 않더라도 많은 사용자가 필요하지 않으며 스냅 퍼가하는 방식으로 하위 볼륨을 회전시키려는 경우 하위 볼륨 삭제가 중요해 보입니다.
StrongBad

@ProBackup 보관 백업은 Time Machine에 적합한 용어가 아닐 수 있습니다. Time Machine은 단순한 증분 백업 그 이상이지만 Snapper 또는 rsnapshot과 같은 스냅 샷 기반 백업이라고 부르기는 쉽지 않았지만 아마도 더 좋을 것입니다. 필드에 대해 많이 알고있는 것처럼 용어를 편집하게되어 기쁩니다.
StrongBad

snapper의 홈페이지에서 읽은 내용에서 snapper는 백업 도구가 아닙니다. 스 내퍼가 시간을 거슬러 올라갈 수 있지만 타임머신과 같은 것은 아닙니다. 근본적인 차이점은 Time Machine 은 모든 데이터의 사본 을 별도의 매체로 저장한다는 점입니다 . 여기서 Snapper는 사본을 만들지 않을 수도 있습니다.
Pro Backup

@ProBackup은 마지막으로 답변을 작성하고 메일 링리스트의 답변에 대한 나의 결론이 왜 틀린지 설명하십시오. 그렇게하면 커뮤니티의 느낌을 알 수 있습니다.
StrongBad

3

총 2 개의 64 개의 스냅 샷과 하위 볼륨을 만들 수 있습니다.

btrfs디자인 위키 페이지 (empahsis 광산) 말한다 :

서브 볼륨은 기본적으로 파일과 디렉토리를 보유하는 명명 된 btree입니다. 그들은 나무 뿌리의 나무 안에 inode를 가지고 있으며 루트가 아닌 소유자와 그룹을 가질 수 있습니다. 하위 볼륨에는 블록 할당량을 부여 할 수 있으며이 할당량에 도달하면 새로운 쓰기가 허용되지 않습니다. 하위 볼륨 내부의 모든 블록과 파일 범위는 참조 횟수로 계산되어 스냅 샷이 가능합니다. FS에 최대 2 개의 64 개의 하위 볼륨을 만들 수 있습니다.

스냅 샷은 하위 볼륨과 동일 하지만 루트 블록은 처음에 다른 하위 볼륨과 공유됩니다. 스냅 샷이 작성되면 루트 블록의 참조 수가 증가하고 COW (Copy On Write) 트랜잭션 시스템은 스냅 샷 또는 소스 서브 볼륨에서 작성된 변경 사항이 해당 루트에 대해 개인용임을 확인합니다. 스냅 샷은 쓰기 가능하며 여러 번 다시 스냅 샷 할 수 있습니다. 읽기 전용 스냅 샷이 필요한 경우 블록 할당량은 생성시 1로 설정됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.