btrfs 오류 : 밸런싱 중 오류-장치에 남은 공간이 없습니다.


15

Kubuntu 12.04 시스템의 루트 파티션 공간이 부족하여 부팅되지 않습니다. 이 명령 df -h은 사용 가능한 많은 공간을 보여줍니다 (37 % 만 사용됨).

/dev/sda2        45G   17G   29G  37%

다음 페이지는 balance 명령을 실행해야 함을 나타냅니다.

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

이것이 최선의 방법이라고 확신하지는 않지만 이것이 내가 찾은 유일한 방법입니다. 그러나 해당 명령을 실행하면 다음 오류가 발생합니다.

ERROR: error during balancing '/blah/blah/blah' - No space left on device

다음과 같은 오류가 발생합니다.

$ sudo btrfs fi balance start -dusage=1 /mount/point

올바른 해결책은 무엇입니까?

답변:


15

balance이 상황에서 실행 하는 방법 이 있습니다.

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

balance 명령이 "완료, XX 청크에서 0을 재배치해야 함"으로 끝나면 최소 하나의 청크가 재배치 될 때까지 "dusage"백분율 매개 변수를 늘려야합니다.

balance 명령이 실패하면 :

ERROR: error during balancing '/blah/blah/blah' - No space left on device

실제로 공간을 확보하기 위해 장치에서 파일을 삭제해야 할 수도 있습니다. 그런 다음 밸런스 명령을 다시 실행하십시오.

그러나 Marc의 블로그 덕분에 btrfs-Btrfs 파일 시스템 전체 문제 해결 여기에 다른 옵션이 있습니다.

이 문제를 해결하는 한 가지 트릭은 btrfs 파일 시스템에 장치를 추가하는 것입니다 (USB 키도 가능). 이렇게하면 저울이 시작되고 저울이 완료되면 btrfs device delete로 장치를 제거 할 수 있습니다. 또한 커널 3.14는 이전 커널로는 할 수 없었던 일부 밸런싱 문제를 해결할 수 있으므로 커널이 오래된 경우에는 그 사실을 알려줍니다.


7
때로는 mount -oremount,clear_cache /mountpoint여유 공간 계산을 수정 해야하는 경우가 있음을 발견했습니다 . (그들은 손상됩니다 ...)
rrauenza

1
@rrauenza, 감사합니다! 답변으로 추가해야합니다 :)
mwfearnley

0

나는 허용 된 답변과 Marc의 블로그에서 -dusage매개 변수를 늘리고 다른 블록 장치를 추가 하는 것을 포함하여 모든 것을 시도했지만 아무 소용이 없었습니다. 일부 파일을 삭제하고 가득 찬 디스크에서 약간의 공간을 확보 한 후에도 balance완료 할 수 없었습니다. 어떤 이유로 든 항상 데이터를 거의 가득 찬 디스크로 옮기는 것처럼 보였습니다. 결국 나를 위해 일한 것은 전체 장치로 균형을 조정하는 것이 었습니다.

btrfs balance start -ddevid=<dev_id> <path>

어디에서 dev_id찾을 수 있습니까?

btrfs fi show 

이들 중 아무도 일하지
메트로

이로 인해 시스템이 다운되고 시스템을 재부팅해도 볼륨을 사용할 수 없게되었습니다. EXT4를 사용하여 볼륨을 설치했으며 이제 많은 설계 문제로 실패로 간주되는 매우 민감한 BTRFS 시스템을 제거 할 수 있기를 바랍니다.
Al Bundy

0

sudo apt-btrfs-snapshot 3 보다 오래된 delete 3 일보다 오래된 스냅 샷을 삭제합니다 . 데이터를 이동하면 스냅 샷 데이터가 제자리를 벗어나게되고 실제 데이터는 드라이브의 여러 위치에 기록되어야합니다. 이렇게하면 이전 위치의 오래된 데이터와 관련된 스냅 샷이 제거되고 해당 섹터를 다시 사용할 수있게됩니다. 또한 btrfs 파일 시스템에서 데이터와 범위를 중복 제거하려면 duperemove를 권장합니다.

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