BTRFS ルートにデバイス上の空き容量がないため、読み取り専用で自動的に再マウントされます。バランス調整ができず、デバイスを追加できません。

BTRFS ルートにデバイス上の空き容量がないため、読み取り専用で自動的に再マウントされます。バランス調整ができず、デバイスを追加できません。

システム アップデート中に BTRF ルートがいっぱいになり、読み取り専用として自動的に再マウントされました。消去できるファイルはたくさんありますが、読み取り専用です。試したのは次のとおりです。

  1. sudo mount -o remount,rw / → マウントポイントがマウントされていないか、オプションが間違っています

  2. 一時的な10Gファイルを作成し/dev/loop0、それをBTRFSデバイスに追加してみます: sudo btrfs device add /dev/loop0 /error adding device /dev/loop0: Read-only file system

  3. 再バランス調整: sudo btrfs balance start -dusage=0 /(これも試しました-musage=0) →error during balancing '/': Read-only file system

つまり、ファイルシステムが読み取り専用であるため、基本的に私が試したことはすべて失敗します。何らかの理由で rw として再マウントできません。おそらく起動しないので、システムを再起動するのが怖いです。btrfs の完全なルートファイルシステムを持っている人には希望がないのでしょうか?

答え1

同じ問題がありましたが、次のようにして解決できました:

umount /home
mount /dev/sdd1 on /home -o rw,clear_cache,skip_balance

これにより、再バランス操作 (ロック ポイント) がスキップされ、一部のキャッシュがクリアされて、既にあるスペースが解放されます。

しかし、その後はどの操作も読み取り専用に切り替わってしまうため、代わりにマウント コマンドの直後に再バランスをチェックして停止しました。

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 (メタデータ) の値を微調整して、速度を上げたり、より多くの情報を移動したりします。同じケースでは、-ddevid=???再バランスをフルデバイスに制限するために を追加して、btrfs がフルデバイスからより多くのスペースのあるデバイスにチャンクを移動するように強制することもできます。devid を以下から取得します。brtfs fi show

最後に結果を確認します (btrfs には複数のレイヤーがあり、df では 1 つしか表示できないため、btrfs の df だけでは不十分であることに注意してください)

btrfs fi show
btrfs fi usage /home
btrfs device usage /home
btrfs fi df /home

関連情報