Sudo updateb `/var/lib/mlocate/mlocate.db'がドライブエラーのためにロックされました。永久に修正する方法は?

Sudo updateb `/var/lib/mlocate/mlocate.db'がドライブエラーのためにロックされました。永久に修正する方法は?

この 4.20.3 Arch システムの BTRFS フォーマットディスクには/空き容量がありません。その理由はmlocateによるものであることがわかりました。

# du -h --exclude=Volumes -- * 2>/dev/null | sort -hr | head -2
11G var
9.6G    var/lib/mlocate

質問更新済み: '/var/lib/mlocate/mlocate.db' 一時ファイルを開けません。許可された回答では事前に追加することを提案しますsudoが、何も変更されません。

# sudo updatedb
updatedb: `/var/lib/mlocate/mlocate.db' is locked (probably by an earlier updatedb)

/var/lib/mlocateにすべてのディスク領域を使用する一時ファイルがあるようです。

# ls -lh var/lib/mlocate/
-rw-r----- 1 root locate 1.1M Oct 21 00:00 mlocate.db
-rw------- 1 root root   9.6G Dec 30 19:46 mlocate.db.PRvfsw

根本的な原因は保留.timer中の更新操作である可能性がありますか?

# systemctl status updatedb.timer
* updatedb.timer - Daily locate database update
   Loaded: loaded (/usr/lib/systemd/system/updatedb.timer; static; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 16:05:10 CEST; 2 months 9 days ago
  Trigger: n/a

一時的な大容量の.dbファイルもrestart削除されず、まだ返されます。stopupdatedblocked

updatedbまだ実行中のプロセスがあるようです。

# ps -ef | grep updatedb
root      3249     1 99 Oct22 ?        213573-14:47:11 /usr/bin/updatedb

プロセスを終了できることを知っています。根本的な原因はUSBスティックの欠陥である可能性が高いです。

# ls /Volumes/RM_GUE__
ls: cannot access '/Volumes/RM_GUE__/'$'\001\020': Input/output error
ls: cannot access '/Volumes/RM_GUE__/)': Input/output error

次にUSBスティックが失敗した場合は、/再びいっぱいになります。

データベース構成ファイルの更新

このupdatedb.confオプションは有用なフィルタリングオプションを提供しません。

  • パス別:パーティションが破損した後にパーティション名を推測できません。
  • ファイルシステム固有:この場合、VFATは破損しています(読み取り専用)が、将来のどのファイルシステムが破損するかを予測することはできません。

updatedb.timerたとえば、実行可能期間を制限したり、入力/出力エラーのあるディスクをスキップしたり、LimitFSIZE=ファイルサイズを制限してこの問題を完全かつ恒久的に解決したりするにはどうすればよいですか。

答え1

mlocate(についてのドキュメントを参照)はman mlocateにつながり、updatedb順番に次のように言います。

特定のオプションによって変更されたPRUNE_BIND_MOUNTS変数と変数はPRUNEFS(5)で詳しく説明されていますPRUNENAMESPRUNEPATHSupdatedb.conf

ドキュメント(man updatedb.conf)を読み、ファイルを表示すると、/etc/updatedb.conf要件を満たすことができる2つの可能なオプションが表示されます。

PRUNEFSupdatedb(8)で検索してはいけないスペースで区切られたファイルシステムタイプのリスト(/ etc / mtabで使用)。ファイルシステムタイプの一致は大文字と小文字を区別しません。

PRUNEPATHS(8)で検索してはいけないスペースupdatedbで区切られたディレクトリパス名のリスト。各パス名は、(1)レポートディレクトリの正確な形式でなければなりませんlocate

USBスティックやその他のリムーバブルメディアが常に下にマウントされている場合は、そのディレクトリを設定/Volumesに追加できます。私のDebianシステムでは、次のような結果が出ます。PRUNEPATHS/etc/updatedb.conf

PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /Volumes"

または、USBスティックが常にFATまたはNTFSの場合は、これらのファイルシステムタイプを指定された除外セットに追加できますPRUNEFS

関連情報