我的 BTRF 根目錄在系統更新期間已滿,並已自動重新安裝為唯讀。我有很多可以刪除的文件,但它們是唯讀的。我試過:
sudo mount -o remount,rw /
→ 安裝點未安裝或選項錯誤建立一個
/dev/loop0
臨時 10G 檔案並嘗試將其新增至 BTRFS 裝置:sudo btrfs device add /dev/loop0 /
→error adding device /dev/loop0: Read-only file system
重新平衡:(
sudo btrfs balance start -dusage=0 /
也嘗試過-musage=0
)→error during balancing '/': Read-only file system
所以基本上我嘗試的一切都失敗了,因為檔案系統是唯讀的。由於某種原因,我無法將其重新安裝為 rw。我擔心重新啟動系統,因為它可能無法啟動。擁有 btrfs 全 root fs 的人就沒有希望了嗎?
答案1
遇到了同樣的問題,設法透過這樣做來解決這個問題:
umount /home
mount /dev/sdd1 on /home -o rw,clear_cache,skip_balance
這將跳過任何重新平衡操作(我的鎖定點)並清除一些快取以釋放一些空間。
但在此之後,任何操作仍會導致切換為唯讀,因此我在 mount 命令之後檢查並停止任何重新平衡:
btrfs fi balance show /home
btrfs fi balance cancel /home
在此之後,btrfs 更加穩定,我能夠調整它的大小
btrfs fi resize max /home
也許 FAQ 平衡命令現在也應該可以工作或手動刪除一些大檔案。
FAQ 報告了這一點(您可能想要嘗試從低到高的不同值,因為這是區塊中已使用空間的百分比,將由餘額選擇並最終合併,釋放空間)
btrfs fi balance start -dusage=10 /home
最後,還有添加新設備並請求重新平衡的路徑(因此是 raid0,但如果您願意並且有足夠的空間,您可以稍後對其進行微調並切換到 raid1)。 btrfs 可以使用多個設備即時構建“raid”(更糟糕的情況是臨時 USB 存儲,但請記住最後刪除數據並刪除設備)
btrfs device add /dev/sdf1 /home
btrfs balance start -dusage=20 -musage=20 /home
微調 dusage(資料)和 musage(元資料)中的值以加速和/或移動更多資訊。在相同的情況下,您可能需要新增 a-ddevid=???
以限制對完整裝置的重新平衡,從而強制 btrfs 將區塊從完整裝置移至具有更多空間的裝置。取得除法brtfs fi show
最後查看結果(請記住,btrfs 中的 df 是不夠的,因為 btrfs 有幾層,而 df 只能看到一層)
btrfs fi show
btrfs fi usage /home
btrfs device usage /home
btrfs fi df /home