fstab 항목이 포함된 RAID 장치가 연결된 가상 머신이 있습니다.
/dev/md127 /mnt/blah ext4 nofail 0 2
RAID 디스크가 손상되었으며 부팅 중에 장치가 응급/유지 관리 모드로 전환됩니다. 이는 로컬 호스트 사용자만 이 모드를 종료하고 정상적으로 부팅할 수 있음을 의미합니다. 정상적으로 시작하는 동안 시스템 로그에 다음이 발생합니다.
systemd-fsck[1272]: /dev/md127 contains a file system with errors, check forced.
systemd-fsck[1272]: /dev/md127: Inodes that were part of a corrupted orphan linked list found.
systemd-fsck[1272]: /dev/md127: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
systemd-fsck[1272]: #011(i.e., without -a or -p options)
systemd-fsck[1272]: fsck failed with exit status 4.
systemd-fsck[1272]: Running request emergency.target/start/replace
systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
systemd[1]: [email protected]: Failed with result 'exit-code'.
systemd[1]: Failed to start File System Check on /dev/md127.
systemd[1]: Dependency failed for /mnt/blah.
systemd[1]: Dependency failed for Provisioner client daemon.
내 생각엔 디스크 손상으로 인해 OS가 응급/유지 관리 모드로 전환된 것 같습니다.
systemctl --state=failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● [email protected] loaded failed failed File System Check on /dev/md127
내가 원하는 것은 손상된 드라이브가 손상되었거나 마운트 해제될 수 있는지 여부에 관계없이 VM이 부팅되므로 긴급/유지 관리 모드로 전환되어서는 안 된다는 것입니다. 비상/유지 관리 모드를 비활성화하기 위해 다음 게시물을 따랐습니다.
local-fs.target.d
먼저 디렉토리를 만들어야 하는데 /etc/systemd/system/
, 기분이 좋지 않습니다. 그런 다음 다음 nofail.conf
을 포함하는 패키지를 만들었습니다 /etc/systemd/system/local-fs.target.d/nofail.conf
.
[Unit]
OnFailure=
배치 파일을 로드한 후 local-fs.target이 배치 파일을 찾았음을 확인할 수 있었습니다.
sudo systemctl status local-fs.target
● local-fs.target - Local File Systems
Loaded: loaded (/lib/systemd/system/local-fs.target; static; vendor preset: enabled)
Drop-In: /etc/systemd/system/local-fs.target.d
└─nofail.conf
Active: active since Tue 2019-01-08 12:36:41 UTC; 3h 55min ago
Docs: man:systemd.special(7)
그러나 재부팅 후에도 가상 머신은 여전히 긴급/유지 관리 모드에 있습니다. 내가 뭐 놓친 거 없니? nofail.conf 솔루션이 RAID 디스크에 작동하지 않습니까?
편집: 시스템이 비상 모드로 부팅되었을 때 로그에서 이 내용을 인쇄할 수 있었습니다(죄송합니다. 호스트에 액세스할 수 없어서 소유자에게 문의해야 했기 때문에 스크린샷입니다).
이것은 다음의 출력입니다 systemctl for systemd-fsck@dev-md127
.
sudo systemctl status --no-pager --full systemd-fsck@dev-md127
● [email protected] - File System Check on /dev/md127
Loaded: loaded (/lib/systemd/system/[email protected]; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2019-01-10 12:05:44 UTC; 2h 57min ago
Docs: man:[email protected](8)
Process: 1025 ExecStart=/lib/systemd/systemd-fsck /dev/md127 (code=exited, status=1/FAILURE)
Main PID: 1025 (code=exited, status=1/FAILURE)
systemd[1]: Starting File System Check on /dev/md127...
systemd-fsck[1025]: /dev/md127 contains a file system with errors, check forced.
systemd-fsck[1025]: /dev/md127: Inodes that were part of a corrupted orphan linked list found.
systemd-fsck[1025]: /dev/md127: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
systemd-fsck[1025]: (i.e., without -a or -p options)
systemd-fsck[1025]: fsck failed with exit status 4.
systemd-fsck[1025]: Running request emergency.target/start/replace
systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
systemd[1]: [email protected]: Failed with result 'exit-code'.
systemd[1]: Failed to start File System Check on /dev/md127.
앞서 지적했듯이 저는 이미 nofail
시작했습니다 /etc/fstab
. 이제 질문은 다음과 같습니다.
- 스크린샷에서 실패한 종속성 중 종속성은 무엇입니까?
- fsck가 실패하면
/dev/md127
패닉 모드로 전환되는 이유와 이를 비활성화하는 방법은 무엇입니까?
편집 2:
내가 추가할 수 있는 다른 사항은 다음과 같습니다.
- 이 가상 머신은 kvm 가상 머신입니다.
- 이것은 소프트웨어 공격이다
감사합니다, 안쿠르
답변1
귀하의 시스템시험을 마친손상을 복구하고 자동으로 시작되지만 그럴 수는 없습니다. 그래서 비상 모드로 들어갑니다.
이 상태에서는 파일 시스템을 마운트할 수 없고 부팅 시 파일 시스템이 마운트되도록 지정했기 때문에 이는 재정의할 수 있는 사항이 아닙니다.
다음 방법 중 하나를 시도해 볼 수 있습니다.
- 파일 시스템을 손상시키지 마십시오. 데이터가 계속 기록되는 동안 가상 머신을 강제로 종료하는 대신 정상적으로 마운트 해제하세요.
- 파일 시스템을 자동으로 마운트하지 않습니다(
noauto
에서 설정/etc/fstab
). VM이 시작되지만 나중에 파일 시스템을 수동으로 입력하고 마운트해야 합니다. - XFS와 같이 보다 탄력적인 파일 시스템으로 전환하십시오.
답변2
nofail
버그로 인해 systemd는 fsck 실패를 지원하지 않습니다. 나는 가지고있다안정적인systemd 250 이상에서 작동합니다.
이전 버전의 systemd를 사용해야 한다면 /lib/systemd/systemd-fsck
바이너리를 사용하지 않는 것이 유일한 선택이라고 생각합니다. 아마도 파일 시스템을 나열하는 대신 /etc/fstab
자신의 시스템 장치를 사용하여 fsck하고 마운트할 수도 있습니다.