私はbtrfsの既知のバグに見舞われたと思います:
https://www.spinics.net/lists/linux-btrfs/msg60984.html
確かに、エラーメッセージは似ているようです。同じ問題である場合、2年前の問題の修正がV4.9安定カーネル(Debian 9が使用しているもの)に移植されていないのは少し残念なようです。
現在、ファイルシステムのiノードの1つにエクステントの問題がある状況にあります(btrfs check
によって報告されています)。
root 257 inode 2607184 errors 100, file extent discount
Found file extent holes:
start: 0, len: 81920
このような状況から抜け出す方法についてのアドバイスやドキュメントはあまりないようです(幸い、関係するファイルシステムのバックアップがあるので、最悪の場合は再フォーマットして復元できます)
btrfs check --repair
は、実際に修正せずに、同じエラーを繰り返し出力することをループしているようです。
既存のファイルシステムを修正する方法はありますか、それとも再作成してバックアップを復元するのが最善ですか?
おもう root 257
はサブボリュームIDを参照し、次にinode 2607184
問題のあるiノードを指します。 iノードにリンクされているすべてのパスを削除(リンク解除)しようとします。
サブボリュームをマウントします。
mount /dev/sdXN -o subvolid=257 /mnt/mountpoint
Iノード番号が一致するすべてのエントリを見つけます。
find /mnt/mountpoint -xdev -inum 2607184
オブジェクトを調査します。うまくいけば、それらを削除する余裕があります。
mv
新しいディレクトリを古い名前に変更します。アンマウント:
umount /mnt/mountpoint
ファイルシステムを確認してください。問題のあるiノードはもうないはずです。
または、サブボリューム全体を削除することもできます。これはやり過ぎのように見えますが、問題のあるiノードを取り除く必要があります。
ファイルシステムのルートをマウントします。
mount /dev/sdXN -o subvol=/ /mnt/mountpoint
サブボリュームのリスト:
btrfs subvolume list /mnt/mountpoint
iD257のものを見つけます。
サブボリュームを削除します。
btrfs subvolume delete -c /mnt/mountpoint/path/to/the/subvolume/with/ID/257
アンマウント:
umount /mnt/mountpoint
ファイルシステムを確認してください。問題のあるiノードはもうないはずです。