btrfs: ls はディレクトリ内に同じファイルを 2 回リストします

btrfs: ls はディレクトリ内に同じファイルを 2 回リストします

私は Linux 4.10.8 で btrfs を使用しています。ハードリブート後、Google Chrome はローカルデータが見つからないと表示しました。関連するユーザー ID を追加するとすぐに一部が戻ってきたので、何が起こっているのか気になりました。~/.config/google-chrome を調べてみると、次のことがわかりました。

$ ls -i 

...
3529523 'Local State'
3529523 'Local State'
...

これは同じファイルで、同じ inode が 2 回あります。Google Chrome が混乱したのは、おそらくこれが原因だと思います。再起動のたびに正常に動作しているように見えますが、この Local\ State ファイルに大量の書き込みが行われているのです。しかし、再起動すると、ローカル状態を読み込めないというメッセージが表示されます。SMART チェックも btrfsck もエラーを報告しません。何かアイデアはありますか?

答え1

私はカーネルのbtrfsで同じ問題を抱えています4.14.0が、重複したファイルは でした.config/google-chrome-unstable/Default/TransportSecurity。私は次のようにすることでそれを修正することができました。

cd .config/google-chrome-unstable/Default
mkdir -p ~/tmp/Default
chmod 700 ~/tmp/Default
tar cf - . | (cd ~/tmp/Default && tar xf -)
cd ~
rm -rf .config/google-chrome-unstable/Default # this will error because the directory isn't empty because the duplicated file left some residue
mv .config/google-chrome-unstable/Default{,.old}
mv ~/tmp/Default .config/google-chrome-unstable/

さて、私が以下を取得するとls -l .config/google-chrome-unstable/Default.old:

ls: cannot access '.config/google-chrome-unstable/Default.old/TransportSecurity': No such file or directory
total 0
-????????? ? ? ? ?            ? TransportSecurity

この時点で、シングルユーザー モードで再起動し、次を実行しました。

umount /home
btrfs check --repair /dev/sdc1

破損したディレクトリが検出され、修復されました。そこから開始できるかもしれませんが、完全性のために私が実行した他の手順も残しておきます。

関連情報