yumインデックスが破損するのはなぜですか?


10

時々、yumのキャッシュが破損し、次のようなエラーが表示されます。

error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm

回避策はrm -f /var/lib/rpm/__db*次の「yum」コマンドでデータを再生成します。

私の質問は、これを引き起こしている可能性が高いのは何ですか?ロックを無視する、またはこれを引き起こす他の問題がある一般的なタスクはありますか?

私たちは何百ものCentOSマシンを使用しており、この問題が発生するパターンはありません。これは「100万分の1」の問題である可能性があり、大規模に見られることがよくあります。

注:私はこれが非常に「自由回答」の質問であることを理解していますが、回答が原因を見つけた場合は、戻って特定の問題に直接関連するより標準的なものに質問を変えます。


何年か前に、これを引き起こすいくつかのバグがあったことを思い出しているようです。マシンは最新ですか?
マイケルハンプトン

何百ものCentOSマシン?これはStackexchange用ですか?Linuxシステムがそれほど多くなかったとは思いませんでした。
Zoredache 14

@Zoredacheのほとんどは仮想です。多くはリクエストを処理する直接的なラインにありませんが、多くはそうです。
TomOnTime 2014

回答:


6

一般的なケースでは、これは、Berkeley DBキー値ストアであるrpmdbの更新時にrpm(またはyum)がクラッシュし、非常に機密性が高い場合に発生します。このようなクラッシュが発生すると、rpmdbは不整合な状態のままになり、このエラーが発生します。の他のすべてのファイルに/var/lib/rpmは同じ情報が含まれていますが、形式は効率が低いため、データベースを簡単に再構築できます。

古いCentOSシステムで見られた2つの注目すべきバグがこれを引き起こす可能性があります。大きな問題は、変更ログに表示される「共有されたmmapされたページライトバックの厄介で微妙な競争」でしたが、2007年のカーネルアップデートで静かに修正されました。この1は若干異なり、それ自体を提示しても、レポートより。

あなたが2009年から表示される場合があります一つは PackageKitのが都合の悪い時にyumを殺す際に起こった、とも修正されました。ただし、これはGUIを備えたデスクトップシステムまたはサーバーに影響を与える可能性が高くなります。

これらのバグはすべてEL 6よりも前のものであり、EL 6または7でこれが発生することはほとんどありません。(私はEL 4について何も知りません。もしあれば、それが広まる前に殺してください。)つまり、rpmdbでの作業中にyumまたはrpmが停止する原因となるものは、それを引き起こす可能性があります。これには、あなたが最近目にする可能性が最も高いもの、ランダムな宇宙線が反転するビット、または誰かが熱狂しすぎていることが含まれkill -9ます。

RHEL 7では、yumは実際のトランザクション実行中にさらに多くのシグナルをトラップし、メッセージが表示されます(shutdown inhibited)。これは、誰かまたは何かがトランザクションを中断してこの問題を引き起こすほとんどの状況を防ぐのに役立ちます。


2
私の賭けは、問題が「kill -9」の熱狂的な使用であることです。ありがとう!
TomOnTime 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.