명령을 실행할 때 "입력 및 출력 오류" 발생

명령을 실행할 때 "입력 및 출력 오류" 발생

지난 월요일 아침에 내 서버에서 어떤 명령도 실행할 수 없고 "입력 및 출력 오류"가 표시되는 것을 발견했습니다. 30분 동안 시도한 후에 작동하는 유일한 명령은 sudo poweroff -f(플래그를 사용해야 합니다 -f. 그렇지 않으면 "입력 출력 오류"가 발생합니다)였습니다.
수동으로 서버를 시작하고 시스템 로그를 확인했지만 특별한 것은 없었습니다. 하드 드라이브에 문제가 있는지 확인하기 위해 smartctl 테스트를 수행했습니다. 그리고 성공적으로 합격했습니다.
그러다가 이번주 월요일에 문제가 다시 발생했습니다. 서버를 종료하고 수동으로 시작했는데 아무 일도 일어나지 않은 것처럼 보입니다. 그런 다음 msmtest86 8.2를 사용하여 메모리 모듈이 정상인지 테스트합니다. 그리고 SATA 케이블과 하드 드라이브의 상태가 양호하고 안정적으로 연결되어 있는지 확인하세요.
운영 체제나 파일 시스템 문제일 수 있다고 생각합니까? 내 운영 체제는 데비안 8.11입니다. 몇 가지 제안을 해주실 수 있나요? 다들 감사 해요!

답변1

내 서버에서 어떤 명령도 실행할 수 없으며 "입력 출력 오류"가 표시되는 것을 발견했습니다.

EIO파일 시스템이 손상되면 명령이 실행될 때 오류 코드("입력/출력 오류")가 나타나거나 결함이 있는 저장소에서 실행할 때 나타납니다.

어느 쪽이든 이 시점에서 주의하세요.꼭 필요한 경우가 아니면 서버 전원을 켜지 마십시오.. 1

시험을 치르다

두 가지 근본 원인을 구별할 수 있는 확실한 방법이 있습니다. 즉, 시스템에서 블록 수준 읽기를 검사하고 커널 메시지를 주시하는 것입니다.

  1. GNU/Linux 복구 디스크를 사용하여 시스템을 부팅합니다.
  2. 시스템을 일반 텍스트 콘솔로 변경합니다(Ctrl+Alt+F1 누르기).이를 위해 그래픽 터미널을 사용하지 마십시오.
  3. 루트로 로그인하십시오.
  4. dmesg -E콘솔에 실시간 커널 메시지 표시를 활성화하려면 실행하세요 .
  5. 그러나 실행하면 dmesg -n debug낮은 수준의 커널 메시지가 표시됩니다.
  6. 달려가서 blkid어느 것인지 확인해보세요디스크시스템 파티션을 포함합니다. ( blkid파티션이 나열됩니다. 파티션 경로 끝에서 번호를 제거하면 디스크를 얻을 수 있습니다.)
  7. time -p dd if=/dev/sda of=/dev/null bs=4M전체를 위해 실행 -디스크읽기 테스트(신중하게 입력하세요) 귀하의 시스템이디스크아니요 /dev/sda, 그에 따라 교체하세요.
  8. 화면을 보세요(시간이 오래 걸립니다)...

결과

  • 성공적이고 원활하게 완료되는 최상의 시나리오에서는 dd파일 시스템 문제일 수 있습니다.

    • 부팅 디스크에서 파일 시스템 검사를 수행하려는 경우 지금 수행할 수 있습니다(권장).
    • 시스템이 자체적으로 정렬하도록 하려면 재부팅(부팅 디스크도 제거)한 다음 부트 스톡을 fsck.mode=force커널 명령줄 끝에 추가합니다. (바라보다이 문제세부)
    • 그러나 파일 시스템 검사 결과를 논의하면 다른 문제가 발생합니다.
  • 하지만,최악의 경우, 화면에 다음과 같은 커널 메시지가 표시됩니다.

    ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    ata2.00: irq_stat 0x40000001
    ata2.00: failed command: READ DMA EXT
    ata2.00: cmd 25/00:08:78:15:c5/00:00:6c:00:00/e0 tag 0 dma 4096 in
             res 51/40:00:78:15:c5/00:00:6c:00:00/e0 Emask 0x9 (media error)
    ata2.00: status: { DRDY ERR }
    ata2.00: error: { UNC }
    ata2.00: configured for UDMA/100
    sd 1:0:0:0: [sda] Unhandled sense code
    sd 1:0:0:0: [sda]  
    Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    sd 1:0:0:0: [sda]  
    Sense Key : Medium Error [current] [descriptor]
    Descriptor sense data with sense descriptors (in hex):
            72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
            6c c5 15 78 
    sd 1:0:0:0: [sda]  
    Add. Sense: Unrecovered read error - auto reallocate failed
    sd 1:0:0:0: [sda] CDB: 
    Read(10): 28 00 6c c5 15 78 00 00 08 00
    end_request: I/O error, dev sda, sector 1824855416
    Buffer I/O error on device sda, logical block 228106927
    ata2: EH complete
    

    주요 부품 찾기:

    • DRDY, ERR그리고 UNC중괄호 안에
    • Medium Error상태
    • Unrecovered read error지각정보

    메시지에서 이러한 내용을 찾아보면(한 번이라도) 물리적 디스크 오류가 발생했음을 나타냅니다.

    이런 일이 발생하면,끝내지 마세요 dd. 지금 중지하려면 Ctrl+C를 누르세요.; 시스템을 종료하고디스크를 데이터 복구 업체에 가져가세요당신은 신뢰합니다.

  • 위의 최악의 경우 표시를 찾지 못했지만 대신 다음 커널 메시지가 반복되는 경우:

    ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
    ata2: irq_stat 0x00000040, connection status changed
    ata2: SError: { CommWake DevExch }
    ata2: hard resetting link
    ata2: link is slow to respond, please be patient (ready=0)
    

    중요 섹션:

    • hard resetting link
    • link is slow to respond

    그렇다면 SATA 링크 문제(예: 잘못된 케이블 연결)가 있는 것입니다. Ctrl+C를 눌러 중지하고 시스템을 종료한 후 디스크 케이블과 연결을 복구하고 다시 시도하십시오.

참고 사항

하드 드라이브에 문제가 있는지 확인하기 위해 smartctl 테스트를 수행했습니다. 그리고 성공적으로 합격했습니다.

조심하세요일부 하드 드라이브의 SMART 상태는 거짓말을 직접적으로 나타냅니다.(Toshiba를 보고 있습니다.) 이전 노트북의 하드 드라이브가 읽는 동안 갑자기 멈추고 읽기 오류가 발생했으며 상태 레지스터에 여전히 "문제 없음"이 표시되었습니다.

서버가 업무상 중요한 경우 다음을 고려해야 합니다.공격설정을 기준으로 합니다.


  • 1 주의사항:내 룸메이트는 한때 이 경고를 무시하고 그의 데스크탑 시스템에서 파일 시스템 검사기를 실행했습니다. 내가 확인하기 전에 그는 그것을 확인했습니다.결국 시작에 실패했습니다. 제가 확인할 기회가 있었을 때 디스크는 복구할 수 없을 정도로 손상되었습니다(500GB 디스크는 달팽이 속도, KB/s로 거의 읽을 수 없었으며 며칠 후에도 뚜렷한 연속 읽기 영역이 발견되지 않았습니다).

    반면, 동일한 증상이 나타난 또 다른 사례에서는 기계 소유자가 내 경고에 귀를 기울이고 내가 검사할 때까지 기계를 보류했습니다. 물론 이것은 하드 드라이브 오류입니다. 반나절 뒤에GNU DDR 구조나중에 세션과 새 하드 드라이브를 사용하면서 그의 시스템과 데이터가 블록 수준에서 100% 복원되었다는 좋은 소식을 전했습니다. 즉, 모든 파일이 손상되지 않았으며 수정 없이 다시 부팅할 수 있다는 것입니다.

답변2

드라이브가 모든 SMART 테스트를 통과했지만 Linux 서버(Debian 10 실행)에서 폴더를 탐색하고 파일에 액세스할 때 이 오류가 발생했습니다. Stackexchange에 게시된 답변으로는 문제를 해결할 수 없습니다.

3.5인치 드라이브 베이에 2.5인치 하드 드라이브를 사용하고 있었는데 SATA 커넥터의 진동으로 인해 드라이브가 손실된 것을 발견했습니다. 서버를 종료하고 드라이브를 단단히 다시 삽입했더니 오류가 사라졌습니다.

관련 정보