Kubuntu 12.04 시스템의 루트 파티션 공간이 부족하여 부팅되지 않습니다. 이 명령 df -h
은 사용 가능한 많은 공간을 보여줍니다 (37 % 만 사용됨).
/dev/sda2 45G 17G 29G 37%
다음 페이지는 balance 명령을 실행해야 함을 나타냅니다.
$ 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
올바른 해결책은 무엇입니까?
답변
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는 이전 커널로는 할 수 없었던 일부 밸런싱 문제를 해결할 수 있으므로 커널이 오래된 경우에는 그 사실을 알려줍니다.
답변
나는 허용 된 답변과 Marc의 블로그에서 -dusage
매개 변수를 늘리고 다른 블록 장치를 추가 하는 것을 포함하여 모든 것을 시도했지만 아무 소용이 없었습니다. 일부 파일을 삭제하고 가득 찬 디스크에서 약간의 공간을 확보 한 후에도 balance
완료 할 수 없었습니다. 어떤 이유로 든 항상 데이터를 거의 가득 찬 디스크로 옮기는 것처럼 보였습니다. 결국 나를 위해 일한 것은 전체 장치로 균형을 조정하는 것이 었습니다.
btrfs balance start -ddevid=<dev_id> <path>
어디에서 dev_id
찾을 수 있습니까?
btrfs fi show
답변
sudo apt-btrfs-snapshot
3 보다 오래된 delete 3 일보다 오래된 스냅 샷을 삭제합니다 . 데이터를 이동하면 스냅 샷 데이터가 제자리를 벗어나게되고 실제 데이터는 드라이브의 여러 위치에 기록되어야합니다. 이렇게하면 이전 위치의 오래된 데이터와 관련된 스냅 샷이 제거되고 해당 섹터를 다시 사용할 수있게됩니다. 또한 btrfs 파일 시스템에서 데이터와 범위를 중복 제거하려면 duperemove를 권장합니다.