lvmetadが起動時にハングする

lvmetadが起動時にハングする

Arch Linuxを実行しているコンピュータがありますが、起動に問題があります。ブロックデバイスでpvscanを待ち、90秒間停止して放棄します。 (実際には、pvscanプロセスはそれ以降のlvmコマンドと同様にまだ中断されています。)時にはうまくいきます。

もう少し調べたところ、起動時に中断されるlvmetad(8)がこの中断の原因であるようです。

lvmetad[360]: Cannot lock lockfile [/run/lvmetad.pid], error was [Resource temporarily unavailable]

起動してシャットダウンして再起動すると、停止したpvscanプロセスがロック解除され、操作が完了し、すべてが正常に戻ります(lvmコマンドが再び機能するなど)。

ログでこれを確認できます。パスツールビン

lvmetadの詳細を下げようとしましたが、エラーのみが発生しました。

時々起動に通常より少し時間がかかり(ルートパーティションを待っている間)、lvmetadは正常に起動します(しかし実際には関係があるかどうかはわかりません)。

このエラーを回避する方法を知っていますか?

私が集めた追加情報:

  • fcntl() が EAGAIN で失敗したときに「ファイルを記録できません」エラーが発生しました。
  • 非常に小さいpid(ログに表示されている失敗したプロセスよりはるかに小さい)でシステム上で実行されているlvmetadがあります。
  • lvm2-lvmetad.serviceによって生成されたlvmetadプロセスは-fで実行されるため、実行中のプロセスではありません。
  • 最初のものは2番目のものより3秒早く始まります(システム化前)。

initrdのlvm2コンポーネントのクリーンアップフックは初期lvmetadを終了する必要がありますが、何らかの理由で機能しません。

run_cleanuphook() {
    kill $(cat /run/lvmetad.pid)
}

起動後にプロセスを終了しても機能しません。

デバッグトレースを行いましたが(3番目のリンクを投稿できませんでした。2番目の貼り付けの最後にしました)、メインスレッドが別のスレッドが終了するのを待っていて、FD 6で読み取っている間にclient_threadがハングしたようです。 (/run/lvm/lvmetad.socket)

関連情報