Linux 커널이 실행되는 동안 하드 드라이브에 오류가 발생하면 어떻게 됩니까?

Linux 커널이 실행되는 동안 하드 드라이브에 오류가 발생하면 어떻게 됩니까?

저는 Linux 커널이 실행되는 동안 하드 드라이브에 오류가 발생하면 어떻게 되는지 늘 궁금했습니다. 커널 이미지 자체가 RAM에 풀로드되어 있기 때문에 커널 장애가 발생하지 않을 것이라고 생각합니다. 분명히 디스크에 액세스하려는 모든 소프트웨어는 실패할 것입니다.

시스템이 무기한으로 계속 작동하는 것이 가능합니까? 그렇지 않다면 무엇이 당황하게 만들까요(또는 적어도 작동할 수 없게 만들까요)?

다음 각 시나리오를 고려하십시오.

  • 커널은 스왑 파일을 활성화할 수도 있고 활성화하지 않을 수도 있습니다.
  • 실패 시 커널 모듈을 로드하려고 시도하지 않습니다.
  • 파일 시스템의 일부가 다른 디스크에 있으면 차이가 있습니까?

답변1

하드웨어 오류로 인해 커널이 충돌할 위험은 항상 존재합니다. 이러한 코드 경로는 일반적으로 훨씬 덜 테스트되었지만 일반적으로 하드 드라이브 오류로 인해 커널이 충돌해서는 안 되기 때문입니다. 정확히 무슨 일이 일어나는지는 실패의 성격에 따라 다릅니다. 현재는 일부 섹터만 읽을 수 없으므로 /home 파티션의 일부를 읽을 수 없게 되므로 시스템 관리자가 문제를 분석할 수 있습니다. 루트 파일 시스템을 사용할 수 없게 되면 커널 패닉에 관계없이 시스템이 거의 정지됩니다. 간단한 쉘도 사용할 수 없기 때문입니다. 스왑 파티션을 사용할 수 없게 되면 스왑을 사용하는 프로그램에서 스왑 아웃된 데이터를 읽을 때 분할 오류가 발생합니다. 손상된 하드 드라이브가 단지 추가 스토리지일 경우 일부 파일 시스템을 읽을 수 없게 되는 것 외에는 거의 영향을 미치지 않을 수 있습니다.

또한 하드 드라이브에서 발생한 오류 유형에 따라 달라질 수도 있습니다. 드라이브가 실제로 사라지고 파일 시스템이 사라진 것을 제외하고는 모든 것이 잘 실행되는 것을 보았습니다. 또한 하드 드라이브가 지속적으로 시스템을 정지시키고 오랜 시간 초과 후에 오류를 발생시켜 전체 시스템 성능이 저하되는 것을 보았습니다. RAID1/4/5를 실행하는 MD와 같은 계층을 사용하는 경우 심각한 오류로 인해 일반적으로 커널은 디스크를 실패로 표시하고 이를 무시하며 나머지 드라이브에 의존하여 시스템을 계속 실행합니다.

답변2

PowerEdge 2500을 처음 구입했을 때 PERC(하드웨어 RAID) 컨트롤러용 펌웨어가 최신 버전이 아니었습니다. 그 결과 루트 디스크가 갑자기 사라지고 더 이상 액세스할 수 없게 됩니다(이동식 드라이브의 연결이 갑자기 끊어지는 것과 유사).

새 프로그램을 로드할 수 없습니다. 이미 로드된 프로그램은 계속 실행되지만 디스크에 쓰려고 하면 오류가 발생합니다. bash로그인하라는 메시지가 계속 표시 되고 네트워크는 계속 실행됩니다. 놀랍게도 상황은 생각보다 심각하지 않았습니다.

PERC 읽기/쓰기를 담당하는 드라이버가 오류와 함께 모든 것을 즉시 거부하는 것처럼 보이기 때문에 이것이 "완전한" 실패라고 생각합니다(정확한 오류는 잊어버렸지만 이는 SCSI 인식 오류입니다). 드라이브가 응답하지 않거나, 느리게 응답하거나, 쓰기가 제대로 작동하는 것처럼 보이지만 실제로는 그렇지 않은 경우에는 더욱 그렇습니다.

답변3

실제로 실행 중이었는데 X가 없는 시스템에서 드라이브 오류가 발생했습니다. getty를 사용할 수 없기 때문에 로그인할 수 없습니다. 실행 중인 애플리케이션의 쉘을 해제해 보았으나 사용 가능한 쉘이 없어 애플리케이션이 작동하지 않습니다. 바로 그때 Aiieeee News가 내 관심을 끌었고 그 이야기를 전했습니다.

관련 정보