BTRFS의 "rm : xxx를 제거 할 수 없음 : 장치에 남은 공간 없음"


17

OpenSuse 실행 12.2.

갑자기 루트 분할이 가득 찬 것 같지만 (99 %) 더 이상 파일을 수동으로 제거 할 수 없습니다.

df에 따라 450mb는 여전히 사용 가능하지만 "rm : xxx를 제거 할 수 없음 : 장치에 남은 공간 없음" 파일 시스템은 BTRFS입니다.

btrfsck를 사용하여 FS를 확인하려고 시도했지만 도움이되지 않았습니다.

무엇을해야합니까?


1
스냅 샷이 활성화되어 있습니까?
MadHatter

여전히 파일을 사용하는 프로세스가 있는지 확인 했습니까? (lsof로 확인) 그렇다면 프로세스를 중지하고 파일을 다시 제거하십시오.
chocripple 2019

답변:


20

BTRFS가 파일을 제거하기 전에 약간의 메타 데이터를 할당해야하는 문제가 발생했을 가능성이 큽니다. BTRFS의 약점 중 하나는 공간 부족 상태를 처리하는 것입니다. 이 분야의 행동 개선은 프로젝트의 우선 순위 중 하나입니다.

btrfs 위키에 대한 한 가지 제안은 파일을 제거하는 대신 파일을 클로버하는 것입니다.

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

디렉토리 항목을 변경하지 않고 파일 내용을 제거합니다. 당신이있는 곳을 벗어나면 정상적으로 파일을 삭제할 수 있습니다. 그래도 문제가 발생하면 nodatacow옵션 으로 일시적으로 다시 마운트하여 쓰기 중 복사 동작을 해제 할 수 있습니다. 그러나 ... 그것이 도움이 될지 확실하지 않습니다.

그러나 일반적으로 BTRFS 파일 시스템을 실행하지 마십시오. 여전히 사전 프로덕션 소프트웨어이며 코너 케이스는 약간 거칠습니다.


2
이 트릭은 cifs 탑재 네트워크 드라이브에도 잘 작동합니다. 감사합니다!
markusN

2

나는 같은 오류 메시지에 직면했지만 내 경우 파일 시스템이 가득 찬 것으로보고되지 않았습니다.

user@host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       2.8G  2.0G  618M  77% /

그러나 BTRFS에 문의하면 실제로 가득 찼습니다.

user@host:/# btrfs fi show
Label: none  uuid: {UUID redacted because reasons}
        Total devices 1 FS bytes used 1.92GiB
        devid    1 size 2.79GiB used 2.79GiB path /dev/sda3

타일러가 제안한 것처럼 모든 파일을 덮어 쓰기조차 불가능했습니다. 내 솔루션은에서 발견 된 http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html 사용하여 파일 시스템을 수동으로 리 밸런싱을 실행하는 데 조언한다 btrfs balance start -dusage=55 /path/to/filesystem.


0

ZFS를 사용하여 다른 파일을 삭제하면 ZFS 파티션에서 충분한 공간을 확보 한 다음 해당 파일을 삭제할 수있었습니다.


0

필자의 경우 Linux에서 ZFS 파일 시스템을 사용하여 파일을 자르지도 못했습니다. 오래된 스냅 샷을 폐기하면 트릭이 발생했습니다 (있는 경우).

zfs destroy /path/of/snapshot

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