btrfs, 스냅샷에서 백업할 때 발생하는 악명 높은 ENOSPC 오류

btrfs, 스냅샷에서 백업할 때 발생하는 악명 높은 ENOSPC 오류

내 시스템은 3.10.7 커널이 포함된 Fedora 19 x86_64입니다. btrfs 스냅샷을 사용하여 다음과 같이 백업하려고 합니다 /.

#!/bin/bash
btrfs subvolume snapshot / /snap/
tar -cvf - /snap 2>/dev/null | /opt/bup/bin/bup split -n nb -vv
btrfs subvolume delete /snap

불행하게도 이 프로세스 도중에 시스템의 여유 공간이 부족해집니다. btrfs filesystem df /실제로 여유 공간이 있다고 보고합니다.

[root@cellar ~]# btrfs filesystem df /
Data: total=107.21GB, used=75.06GB
System, DUP: total=8.00MB, used=20.00KB
System: total=4.00MB, used=0.00
Metadata, DUP: total=3.50GB, used=3.00GB
Metadata: total=8.00MB, used=0.00

하지만 개별 파일을 생성하거나 삭제할 수는 없습니다. 스크립트를 실행할 때마다 이는 100% 재현 가능합니다. 일반적으로 중요하지 않은 항목을 무작위로 삭제하려고 30분 정도 시도한 후에는 이 상황에서 복구할 수 있습니다. 문제의 원인은 메타데이터 공간이 부족한 것 같습니다. 스냅샷이 없을 때 내 시스템은 약 2.39-2.40GB의 메타데이터 공간을 사용합니다.

이것은 나에게 버그처럼 보입니다. 대량 쓰기가 전혀 없는데 스냅샷에 0.6GB의 메타데이터 공간이 필요한 이유는 무엇입니까? btrfs가 나머지 0.5GB의 메타데이터 공간을 사용할 수 없는 이유는 무엇입니까? 을 사용해 보았지만 btrfs balance아무것도 재배치되지 않았으므로 FS는 이미 완벽하게 균형을 이루고 있는 것 같습니다. 더 많은 메타데이터 공간을 예약하는 것이 가능합니까? (전체 파티션을 다시 포맷해야 할 수도 있는데 mkfs.btrfs매뉴얼에서 메타데이터 공간 크기와 관련된 내용을 찾을 수 없습니다.) 옵션을 사용하여 더 큰 노드 크기를 설정할 수 있을 것 같지만 -n도움이 될지는 잘 모르겠습니다.

답변1

음, BTRFS 스냅샷은 기본적으로 읽기 전용이 아닙니다. 읽기 전용 스냅샷을 만드는 데 사용해 보았는데 btrfs subvolume snapshot -r많은 도움이 되었습니다. 메타데이터 공간은 더 이상 부족하지 않습니다.

관련 정보