안전한 접근 방식은 쓰기 안정화, 작업 공간 복구, 필터링된 밸런스만 실행, 정상 서비스 전 데이터 확인을 단일 명령이 아닌 관찰 가능한 단계로 처리하는 것입니다.
거의 가득 찬 Btrfs 홈 서버 파일 시스템에서는 메타데이터 공간이 소진되어 Btrfs가 ENOSPC를 보고하거나 읽기 전용 상태가 되는 것이 현실적인 위험입니다. 현재 상태와 복구 지점을 기록하고, 가장 영향이 적은 판별 작업부터 시작한 다음, 다른 변수를 변경하기 전에 통과 및 실패 결과를 해석하십시오. 스토리지가 불안정해지거나 복구 가능한 사본이 하나뿐인 상태에서 그 사본이 노출될 경우에는 중단하십시오. 아래 워크플로는 원래 작업이 성공하거나 증거가 에스컬레이션 경계에 도달한 후에만 종료됩니다.
복구를 시도하기 전에 파일 시스템 안정화
영향을 받는 파일 시스템에 쓰기 작업을 수행하는 컨테이너, 다운로드, 스냅샷 및 로그 집약적인 작업을 중지하십시오. 커널 오류와 btrfs device stats 출력을 다른 위치에 저장하십시오. 파일 시스템이 읽기 전용으로 다시 마운트되었거나 체크섬, parent transid 또는 I/O 오류를 보고하는 경우, 복구 가능한 사본을 확보할 때까지 읽기 전용 상태를 유지하십시오.
btrfs check --repair, 전체 밸런스, 조각 모음 또는 대량 삭제부터 시작하지 마십시오. 즉시 확인해야 할 것은 유효한 파일 시스템 상태에 할당 작업 공간만 부족한 것인지, 아니면 스토리지 오류가 메타데이터를 손상시키고 있는지입니다. 복구를 먼저 수행하면 이 구분이 더 어려워지고 남은 공간이 소진될 수 있습니다.
쓰기 작업이 많은 서비스가 중지되고, 중요한 데이터에 다른 사본이 있으며, 어떤 블록 장치와 마운트 지점을 검사하는지 알고 있다면 안전 단계가 통과된 것입니다. 장치가 재설정되거나 사라지거나 읽기 오류가 누적되면 복구 이미징으로 에스컬레이션하십시오.
표면적인 여유 공간 수치가 아닌 할당 상태 확인
btrfs filesystem usage -T /mount, btrfs filesystem df /mount, btrfs device usage /mount를 실행하고 최근 커널 메시지를 확인하십시오. 모든 장치에서 할당된 메타데이터와 사용 중인 메타데이터, 할당되지 않은 공간을 비교하십시오. 일반적인 df만으로는 Btrfs가 다른 메타데이터 청크를 할당할 수 있는지 알 수 없습니다.
제한된 밸런스를 수행하려면 완전히 사용되지 않는 작업 공간이 필요합니다. 자세한 Btrfs 제한 밸런스 가이드에서는 필터 없이 밸런스를 수행하면 사용 가능한 모든 블록 그룹을 다시 작성하며, 목표는 단순히 큰 파일을 삭제하고 메타데이터가 늘어날 것이라고 가정하는 것이 아니라 장치 수준의 할당되지 않은 공간을 유지하는 것이라고 설명합니다.
메타데이터 사용량은 높지만 할당되지 않은 공간이 남아 있다면, 비어 있거나 사용량이 적은 청크를 회수하기 위해 작은 필터 기반 밸런스를 수행할 수 있습니다. 어떤 장치에도 작업 공간이 없다면 먼저 안전하게 삭제할 수 있는 데이터나 스냅샷을 소량씩 제거하거나, 파일 시스템 프로필에 적합한 임시 장치를 추가하십시오. 완료할 수 없는 재배치를 시작하지 마십시오.
영향이 가장 적은 방법으로 작업 공간 복구
스냅샷에 보존되지 않는 임시 파일을 삭제하는 것부터 시작한 다음, 필요하지 않다고 확인된 스냅샷만 삭제하십시오. 각각의 작은 변경 후 동기화하고 사용량을 다시 확인하십시오. 밸런스가 필요하다면 전체 밸런스가 아니라 관찰된 할당 상태에 맞춰 선택한 좁은 필터로 btrfs balance start -dusage=0 -musage=0 /mount 또는 다른 제한된 필터를 사용하십시오.
Linux 매뉴얼의 필터 기반 밸런스 동작 설명에 따르면 필터는 재배치 범위를 제한하며, 밸런스 자체에 작업 공간이 부족하면 ENOSPC가 발생할 수 있습니다. btrfs balance status와 커널 로그를 확인하십시오. 재배치로 인해 오류가 증가하거나, 장치 오류와 함께 멈추거나, 마지막 안전 여유 공간까지 소모되면 취소하고 읽기 전용 복구로 돌아가십시오.
각 단계 사이에 측정하지 않은 채 필터와 삭제 작업을 연달아 수행하지 마십시오. 메타데이터에 여유 공간이 생기고, 필요한 장치에 할당되지 않은 공간이 존재하며, 작은 쓰기 작업이 새로운 ENOSPC나 강제 읽기 전용 전환 없이 완료되면 복구 단계가 성공한 것입니다.
데이터 확인 및 즉각적인 재발 방지
위험이 낮은 서비스 하나만 다시 시작하고, 스냅샷 생성이나 수많은 작은 파일 변경처럼 원래 메타데이터를 가득 채웠던 작업을 재현하십시오. 작업 후와 재부팅 후에 사용량과 커널 로그를 다시 확인하십시오. 한 번은 마운트되지만 일반적인 변경 작업 중 다시 읽기 전용 상태가 된다면 복구된 것이 아닙니다.
보존 정책을 변경하기 전에 ZimaSpace의 방법을 사용하여 NAS 공간을 스냅샷과 실제 파일 중 무엇이 사용하는지 구분하십시오. 스냅샷이 보유한 익스텐트는 삭제가 효과가 없는 것처럼 보이게 할 수 있고, 실제 작은 파일의 빈번한 변경은 메타데이터 압박을 계속 높일 수 있습니다. 올바른 정책은 측정 결과로 확인된 상태에 따라 달라집니다.
파일 시스템이 계속 쓰기 가능한 상태이고, 장치 통계 증가가 멈추며, 대표 파일을 올바르게 복원하거나 해시할 수 있고, 같은 여유 공간이 다시 사라지기 전에 모니터링 알림이 발생하는 경우에만 정상 서비스를 재개하십시오. 구조적 오류가 지속되면 Btrfs 복구 전문가에게 에스컬레이션하고, 유일한 사본에서 복구 명령을 반복하지 말고 복제본을 사용하십시오.
지원 및 팁
더 읽어보기

새 스토리지로 리포지토리를 이전하기 위한 Borg Backup 마이그레이션 가이드
Borg 저장소를 하나의 일관된 객체로 이동하세요. 쓰기를 중지하고, 키와 ID를 보존하며, 복원을 확인한 다음, 원본을 유지한 채 클라이언트를 업데이트하세요.

Restic 저장소 유지 관리 워크플로: 검사, 정리, 압축, 복원 테스트
Restic에는 별도의 압축 명령이 없습니다. prune이 재패킹을 수행합니다. 잠금과 여유 공간을 보호하고, 이후 다시 확인한 다음 격리된 복원으로 마무리하세요.

손상되었거나 중단된 백업 기록을 위한 Time Machine NAS 복구 가이드
이전 번들을 유지하세요. 복구 또는 새 체인을 선택하기 전에 NAS 액세스, 대상 ID, 이미지 손상, 방치된 기록을 분리하세요.

