この問題は、btrfsファイルシステム上のフォルダーで発生しました。マウントポイントとlsofの確認は、通常の検索対象です。私の場合、それは修正されて以来、古いバグによって引き起こされた破損でした:
通常確認すること:
- lsofを+ D <パス> -この意志L iがsの全てのT OのペンFジル。開いているファイルを含むフォルダーを削除することはできませんが、通常は「デバイスまたはリソースがビジー」というわずかに異なるエラーが発生します。「+ D <path>」を省略すると、lsofはすべてのファイルシステム上のすべてのフォルダーのリストを表示することに注意してください-これは時間の無駄になります。;)
- mount:これは現在マウントされているファイルシステムを表示します。アクティブにマウントされたマウントポイントまたはその親フォルダーを削除することはできません。
- btrfs sub list <path>:マウントポイントと同様に、btrfs固有のコマンドbtrfs subvolume delete <path>を使用しない限り、btrfsサブボリュームを削除できません。
破損の回避策
簡単に修復できない破損の場合、基本的な回避策は、バックアップしてファイルシステムをフォーマットし、復元することです(不良データを残します)。ファイルシステムにあるデータの量によっては、これは面倒な場合があります。:-/
私の場合、問題のフォルダーはサブボリューム内にあったので、上記を行うことができましたが、ファイルシステム全体ではなくサブボリュームのみを削除しました。データをバックアップし、サブボリュームbtrfs sub del <subvolume-path>を削除しました。その後、問題のあるフォルダーを除外して、新しいサブボリュームに復元することができました。
i_sizeの破損
私の場合の原因はi_sizeの破損であることがわかりました。ゼロではありませんでした。Btrfsはi_sizeを使用して、フォルダーが空かどうかを判断します。これを確認するには、次を実行します。
stat -c %s <foldername>
btrfsの空のフォルダーのi_sizeはゼロでなければなりません。extでは、通常4kです。
関連リンク:
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
rm -r
ターミナルからの出力は何ですか?この投稿の答えを試してみましたか?