Filesystems

btrfs 錯誤:平衡期間出錯 - 設備上沒有剩餘空間

  • July 16, 2021

我的 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

什麼是正確的解決方案?

在這種情況下有很多方法可以balance執行。

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

如果 balance 命令以“Done, had to relocate 0 out of XX chunks”結尾,則需要增加“dusage”百分比參數,直到至少有一個塊被重新定位。

如果 balance 命令失敗並顯示:

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

您實際上可能需要從設備中刪除文件以騰出一些空間。然後再次執行 balance 命令。

但是,感謝Marc 的部落格:btrfs - Fixing Btrfs Filesystem Full Problems這裡是另一種選擇:

解決此問題的一個技巧是將設備(甚至 USB 密鑰也可以)添加到您的 btrfs 文件系統。這應該允許平衡開始,然後您可以在平衡完成時使用 btrfs device delete 刪除設備。列表中還提到核心 3.14 可以修復一些舊核心無法解決的平衡問題,所以如果您的核心是舊的,請嘗試一下。

引用自:https://unix.stackexchange.com/questions/174446