btrfs デバイスに空き容量がなくなり、すべてのトラブルシューティングのヒントが同じエラーにつながります。をインストールしていますsudo mount -o rw,skip_balance,nodatacow
。カーネル6.1.13を使用しており、サブボリュームやスナップショットはありません。
echo "" > largefile"
取引の中断:
[ 438.953007] BTRFS: error (device sdf: state A) in __btrfs_update_delayed_inode:1060: errno=-28 No space left
[ 438.953059] BTRFS info (device sdf: state EA): forced readonly
[ 438.953064] BTRFS: error (device sdf: state EA) in __btrfs_run_delayed_items:1153: errno=-28 No space left
[ 438.953100] BTRFS warning (device sdf: state EA): Skipping commit of aborted transaction.
[ 438.953102] BTRFS: error (device sdf: state EA) in cleanup_transaction:1958: errno=-28 No space left
そこに追加情報があります。space_info METADATA has 4321902592 free, is full
btrfs balance start -v -dusage=0 /mnt
常に他の残高が保留中であることが示されます。それ以外の場合は、次のエラーが発生します。
[ 1023.356909] BTRFS: error (device sdf: state A) in cleanup_transaction:1958: errno=-28 No space left
[ 1023.356969] BTRFS warning (device sdf: state EA): btrfs_uuid_scan_kthread failed -30
[ 1023.357006] BTRFS: error (device sdf: state EA) in reset_balance_state:3599: errno=-30 Readonly filesystem
私が見た最後のヒントは、新しいデバイスを追加することでした。ループバックデバイスと物理ディスク()を試してみましたbtrfs device add /dev/sdb /mnt
。両方とも次のようになります。
[ 1393.030477] BTRFS info (device sdf: state A): dumping space info:
[ 1393.030479] BTRFS info (device sdf: state A): space_info DATA has 14588968960 free, is not full
[ 1393.030482] BTRFS info (device sdf: state A): space_info total=11980400689152, used=11965811326976, pinned=0, reserved=0, may_use=0, readonly=393216 zone_unusable=0
[ 1393.030485] BTRFS info (device sdf: state A): space_info METADATA has 4322557952 free, is not full
[ 1393.030487] BTRFS info (device sdf: state A): space_info total=21944598528, used=17084776448, pinned=0, reserved=0, may_use=536870912, readonly=393216 zone_unusable=0
[ 1393.030490] BTRFS info (device sdf: state A): space_info SYSTEM has 11780096 free, is not full
[ 1393.030492] BTRFS info (device sdf: state A): space_info total=12582912, used=802816, pinned=0, reserved=0, may_use=0, readonly=0 zone_unusable=0
[ 1393.030495] BTRFS info (device sdf: state A): global_block_rsv: size 536870912 reserved 536870912
[ 1393.030497] BTRFS info (device sdf: state A): trans_block_rsv: size 0 reserved 0
[ 1393.030499] BTRFS info (device sdf: state A): chunk_block_rsv: size 0 reserved 0
[ 1393.030500] BTRFS info (device sdf: state A): delayed_block_rsv: size 0 reserved 0
[ 1393.030504] BTRFS: error (device sdf: state A) in btrfs_init_new_device:2778: errno=-28 No space left
[ 1393.030548] BTRFS info (device sdf: state EA): forced readonly
興味深いことに、今回はデバッグ出力にMETADATAがいっぱいであるとは表示されません。
ここで私のオプションは何ですか?
答え1
「もう一つのバランスが止まった」は大きなヒントになります。私は走る:
mount -o rw,skip_balance /mnt && btrfs balance cancel /mnt
ファイルシステムを強制的に読み取り専用にする前に、既存の残高をキャンセルしてください。その後、大容量ファイルを削除して正常に再調整できます。