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로 실행되므로 실행 중인 프로세스가 아닙니다.
  • 첫 번째는 두 번째 것보다 3초 일찍 시작됩니다(시스템화 전).

initrd의 lvm2 구성 요소에 대한 정리 후크는 초기 lvmetad를 종료해야 하지만 어떤 이유로 작동하지 않습니다.

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

시작 후 프로세스를 종료해도 작동하지 않습니다.

디버그 추적을 수행했는데(세 번째 링크를 게시할 수 없습니다. 두 번째 붙여넣기 끝에 넣었습니다.) 메인 스레드가 다른 스레드가 종료되기를 기다리고 있고 FD 6에서 읽는 동안 client_thread가 멈춘 것 같습니다. (/run/lvm/lvmetad.socket)

관련 정보