다음을 통해 공유


데이터 손상 및 디스크 오류 문제 해결 지침

데이터 손상 및 디스크 오류는 드라이브 액세스, 드라이브 손상 및 성능 저하와 같은 다양한 영역을 다룹니다.

다음 이벤트 ID는 데이터 손상 또는 디스크 오류가 있음을 나타냅니다.

  • 이벤트 ID 153

    디스크 2에 대한 논리 블록 주소 123456 IO 작업이 다시 시도되었습니다.

  • 이벤트 ID 129

    \Device\RaidPort1 디바이스로 다시 설정이 실행되었습니다.

  • 이벤트 ID 157

    디스크 2가 깜짝 제거되었습니다.

  • 이벤트 ID 55

    디스크의 파일 시스템 구조가 손상되어 사용할 수 없습니다. 볼륨에서 chkdsk 유틸리티를 실행하세요.

  • 이벤트 ID 98

    볼륨 C: (\Device\HarddiskVolume3)를 오프라인으로 전환하여 전체 Chkdsk를 수행해야 합니다. 명령줄을 통해 로컬로 "CHKDSK /F"를 실행하거나 PowerShell을 통해 로컬 또는 원격으로 "REPAIR-VOLUME <드라이브:>"를 실행하세요.

문제 해결 검사 목록

참고

이 문서에서는 관리자 권한 명령 프롬프트에서 실행해야 하는 명령에 대해 설명합니다.

  • 시스템 이벤트 로그에서 NTFS(신기술 파일 시스템) 및 디스크 관련 경고 및 오류를 검색합니다. 예를 들어 이벤트 ID 55, 153 또는 98입니다.

  • chkdsk /scan 명령을 실행하고 결과를 검사.

    참고

    명령은 chkdsk /scan 읽기 전용입니다.

  • 다음 명령을 실행하여 NTFS 관련 볼륨 정보에 대한 드라이브를 쿼리합니다.

    fsutil fsinfo ntfsinfo <rootpath>:

    참고

    자리 표시자 <루트 경로> 는 루트 드라이브의 드라이브 문자를 나타냅니다.

  • 명령을 실행하여 볼륨이 fsutil dirty query <volumepath>: 더티 경우 검사.

    참고

    자리 표시자 <볼륨 경로> 는 드라이브 문자를 나타냅니다.

    • 파일 시스템이 NTFS인 볼륨의 경우 볼륨이 chkdsk /f /r 더티 경우 명령을 실행합니다. 디스크에 chkdsk /F /R 액세스할 수 없으므로 명령에 가동 중지 시간이 필요합니다.

    • 파일 시스템이 ReFS(복원 파일 시스템)인 볼륨의 경우 디스크 손상이 자동으로 복구됩니다.

  • "chkdsk" 유틸리티가 디스크 오류를 수정하지 않는 경우 백업에서 복원을 수행합니다.

  • 스토리지 관련 오류가 있는 경우 스토리지 유효성 검사를 실행하여 검사.

  • 클러스터에서 디스크를 제거하고 운영 체제 수준을 검사.

  • chkdsk /f 이벤트가 기록되는 모든 볼륨에서 명령을 실행합니다.

  • 타사 스토리지 드라이버 또는 펌웨어를 업데이트합니다.

문제가 지속되면 다음 방법을 시도해 보세요.

  • 타사 디스크 관리 소프트웨어(예: Diskeeper)를 제거합니다.

  • 필터 드라이버를 제거하거나 업데이트합니다.

  • 하드웨어 문제가 발생하지 않도록 하드웨어 공급업체에 문의하고 하드웨어 진단 실행합니다.

  • 스토리지 공급업체에 문의하여 다중 경로 구성을 검사.

  • SCSI 포트 또는 RAID 컨트롤러 드라이버를 업데이트합니다.

  • 다양한 유형의 드라이버로 전환. 예를 들어 RAID 컨트롤러 드라이버 또는 모놀리식 드라이버입니다.

  • HBA(호스트 버드 어댑터) 드라이버를 업데이트합니다.

  • DSM(디바이스별 모듈)의 다중 경로 드라이버를 업데이트합니다.

  • HBA 펌웨어를 업데이트합니다.

이벤트 ID 153 문제 해결

이벤트 ID 153은 스토리지 하위 시스템에 오류가 있음을 나타냅니다. 이벤트 ID 153은 이벤트 ID 129와 비슷하지만, 차이점은 Storport 드라이버가 디스크에 대한 요청을 시간 초과할 때 이벤트 ID 129가 기록되고 Storport 미니포트 드라이버가 요청을 초과할 때 이벤트 ID 153이 기록된다는 것입니다. 미니포트 드라이버를 어댑터 드라이버 또는 HBA 드라이버라고도 하며, 일반적으로 하드웨어 공급업체에서 작성합니다.

이벤트 ID 153 또는 이벤트 ID 129가 기록된 경우 스토리지 컨트롤러가 부하를 처리할 수 없기 때문에 디스크 I/O 시간 제한이 일반적인 원인입니다. 이 경우 I/O 작업이 시간 초과되고 미니포트 드라이버(공급업체)가 Storport 드라이버(스택의 마지막 Microsoft 스토리지 드라이버)에게 메시지를 다시 보냅니다. 그런 다음 Storport 드라이버는 정보를 변환하고 이벤트 뷰어 이벤트를 기록합니다.

미니포트 드라이버는 요청 실행 환경에 대한 충분한 지식을 가지고 있기 때문에 일부 미니포트 드라이버는 Storport 드라이버가 요청 타이밍을 처리하도록 하는 대신 요청 자체를 시간 초과합니다. 미니포트 드라이버는 개별 요청을 중단하고 오류를 반환할 수 있지만 Storport 드라이버는 시간 제한 후 드라이브를 다시 설정합니다. 드라이브를 다시 설정하는 것은 I/O 하위 시스템에 방해가 되며 하나의 요청만 시간이 초과된 경우 필요하지 않을 수 있습니다. 미니포트 드라이버는 이벤트 ID 153을 기록하고 요청을 다시 시도하는 클래스 드라이버에 오류를 반환합니다.

이벤트 ID 153의 예는 다음과 같습니다.

Log Name: System
Source: disk
Event ID: 153
Level: Warning
Description: The IO operation at logical block address 123456 for Disk 2 was retried.

이 이벤트는 요청이 실패하고 클래스 드라이버에 의해 다시 시도되었음을 나타냅니다. Storport 드라이버가 요청 시간을 초과하지 않았기 때문에 이 상황에서 오류 메시지가 기록되지 않았습니다. 오류의 증거가 없어 디스크 오류 문제를 해결할 때 메시지가 부족하여 혼란이 발생했습니다.

이벤트 로그의 세부 정보 탭에서 자세한 정보에는 재시도를 발생시킨 오류와 요청이 읽기 또는 쓰기 요청인지 여부가 표시됩니다. 예를 들면

0000: 0004010F 002C0003 00000000 80040099
0010: 00000000 00000000 00000000 00000000
0020: 00000000 00000000 28090000

in bytes

0000: 0F 01 04 00 03 00 2C 00 ......,.
0008: 00 00 00 00 99 00 04 80 ......
0010: 00 00 00 00 00 00 00 00 ........
0018: 00 00 00 00 00 00 00 00 ........
0020: 00 00 00 00 00 00 00 00 ........
0028: 00 00 09 28             ...*

이 예제에서 바이트 오프셋 29 은 SCSI 상태 표시하고, 바이트 오프셋 30 은 재시도를 발생시킨 SRB(SCSI 요청 블록) 상태 표시하고, 바이트 오프셋 31 은 다시 시도 중인 SCSI 명령을 보여 줍니다. 이 경우 SCSI 상태 00 (SCSISTAT_GOOD), SRB 상태 (SRB_STATUS_TIMEOUT) 이며 09 SCSI 명령은 (SCSIOP_READ)입니다 28 .

가장 일반적인 SCSI 명령은 다음과 같습니다.

SCSIOP_READ - 0x28
SCSIOP_WRITE - 0x2A

SCSI 작업 및 상태 목록은 scsi.h 를 참조하세요.

가장 일반적인 SRB 상태는 다음과 같습니다.

SRB_STATUS_TIMEOUT - 0x09
SRB_STATUS_BUS_RESET - 0x0E
SRB_STATUS_COMMAND_TIMEOUT - 0x0B

SRB 상태 목록은 srb.h를 참조하세요.

참고

  • 시간 제한 오류(SRB_STATUS_TIMEOUT 또는 SRB_STATUS_COMMAND_TIMEOUT)는 어댑터에서 요청 시간이 초과되었음을 나타냅니다. 요청이 드라이브로 전송되었으며 시간 제한 기간 내에 응답이 없었습니다.

  • 버스 재설정 오류(SRB_STATUS_BUS_RESET)는 드라이브가 재설정을 받을 때 불완전한 모든 요청이 중단되므로 디바이스가 다시 설정되었고 다시 설정으로 인해 요청이 다시 시도되고 있음을 나타냅니다.

관리자는 디스크 하위 시스템의 상태를 확인해야 합니다. 가끔 시간 제한이 시스템의 정상적인 작업의 일부일 수 있지만, 자주 다시 시도 요청은 수정해야 하는 스토리지의 성능 문제를 나타냅니다.

추가 정보

이 문제는 일반적으로 운영 체제 외부에 있으므로 다음과 같은 일반적인 원인을 검사.

  • I/O 제한과 같은 일부 유형의 제한이 구성됩니다. 경우에 따라 VMware의 스토리지 I/O 컨트롤로 인해 이 문제가 발생합니다.

  • 부하가 높은 드라이브가 동일한 스토리지 컨트롤러에 너무 많습니다. 따라서 드라이브는 서로 다른 컨트롤러 간에 분할되어야 합니다.

  • MPIO(다중 경로 I/O)가 구성된 경우 단일 케이블 또는 손상된 NIC로 인해 iSCSI에 문제가 발생할 수 있습니다.

이벤트 ID 129 문제 해결

이벤트 ID 129는 HBA(스토리지 어댑터) 드라이버 이름으로 원본으로 기록됩니다. Storport 드라이버(Storport.sys)는 요청 시간이 초과된 것을 감지하면 이 이벤트를 기록합니다. HBA 드라이버의 이름은 Storport 드라이버와 연결된 미니포트 드라이버이기 때문에 이벤트에 사용됩니다.

이벤트 ID 129의 예는 다음과 같습니다.

Event Type:       Warning
Event Source:     <HBA_Name>
Event Category:   None
Event ID:         129
Computer:         <Computer_Name>
Description: Reset to device, \Device\RaidPort1, was issued.

Windows I/O 스택 아키텍처에 대한 정보

Windows I/O 작업은 디바이스 드라이버가 디바이스 스택에 있는 계층화된 아키텍처를 사용합니다. 기본 모델에서 스택의 맨 위는 파일 시스템입니다. 다음으로 볼륨 관리자와 디스크 드라이버가 차례로 표시됩니다. 포트 및 미니포트 드라이버는 디바이스 스택의 맨 아래에 있습니다. I/O 요청이 파일 시스템에 도달하면 파일의 블록 번호를 가져와서 볼륨의 오프셋으로 변환합니다. 그런 다음 볼륨 관리자는 볼륨 오프셋을 디스크의 블록 번호로 변환하고 요청을 디스크 드라이버에 전달합니다. 요청이 디스크 드라이버에 도달하면 CDB(명령 설명자 블록)를 만들고 SCSI 디바이스로 보냅니다. 디스크 드라이버는 CDB를 SRB(SCSI_REQUEST_BLOCK) 구조체에 포함합니다. 이 SRB는 IRP(I/O 요청 패킷)의 일부로 포트 드라이버로 전송됩니다.

포트 드라이버는 대부분의 요청 처리를 수행합니다. 아키텍처에 따라 다른 포트 드라이버가 있습니다. 예를 들어 ATA 포트 드라이버(Ataport.sys) 및 SCSI 포트 드라이버(Storport.sys)가 있습니다. 포트 드라이버의 몇 가지 책임은 다음과 같습니다.

  • 요청에 대한 타이밍 서비스 제공

  • 디바이스에 처리할 수 있는 것보다 더 많은 요청이 없는지 확인하기 위해 큐 깊이 적용

  • 데이터 버퍼에 대한 "분산" 및 "수집" 배열 빌드

포트 드라이버는 미니포트 드라이버와 인터페이스하고 미니포트 드라이버는 하드웨어 공급업체가 특정 어댑터와 작동하도록 설계되었습니다. 포트 드라이버에서 요청을 가져와서 LUN(대상 논리 단위 번호)으로 보내는 작업을 담당합니다. 포트 드라이버는 함수를 HwStorStartIo() 호출하여 미니포트 드라이버에 요청을 보내고, 미니포트 드라이버는 물리적 매체(파이버 또는 이더넷)를 통해 LUN으로 보낼 수 있도록 HBA 드라이버에 요청을 보냅니다. 요청이 완료되면 미니포트 드라이버는 완료된 SRB에 대한 포인터와 NotificationType 함께 값이 로 설정된 RequestComplete매개 변수를 사용하여 함수를 호출 StorPortNotification() 합니다.

요청이 미니포트 드라이버로 전송되면 Storport 드라이버는 보류 중인 큐에 요청을 배치하고 시간이 초과됩니다. 요청이 완료되면 이 큐에서 제거됩니다.

타이밍 메커니즘은 간단합니다. 논리 단위당 하나의 타이머가 있으며 로 초기화됩니다 -1. 첫 번째 요청이 미니포트 드라이버로 전송되면 타이머는 SRB의 시간 제한 값으로 설정됩니다. 디스크 시간 제한 값은 다음 레지스트리 키 아래에 있는 튜닝 가능한 매개 변수입니다.

HKLM\System\CurrentControlSet\Services\Disk\TimeOutValue

일부 하드웨어 공급업체는 하드웨어와 가장 잘 일치하도록 이 값을 조정합니다. 스토리지 공급업체의 지침 없이 이 값을 변경하지 마세요.

타이머는 초당 한 번 감소합니다. 요청이 완료되면 타이머가 보류 중인 큐에 있는 헤드 요청의 시간 제한 값으로 새로 고쳐집니다. 따라서 요청이 완료되는 한 타이머는 0으로 이동하지 않습니다. 타이머가 0으로 설정되면 디바이스가 응답을 중지했음을 의미합니다. 예를 들어 Storport 드라이버가 이벤트 ID 129를 기록할 때 Storport 드라이버는 단위를 다시 설정하여 수정 작업을 수행해야 합니다. 단위가 다시 설정되면 모든 불완전한 요청이 오류와 함께 완료되고 다시 시도됩니다. 보류 중인 큐가 지워지면 타이머는 초기 값인 로 -1설정됩니다.

각 SRB에는 타이머 값 집합이 있습니다. 요청이 완료되면 큐 타이머가 목록의 맨 앞에 있는 SRB의 시간 제한 값으로 새로 고쳐집니다.

이벤트 ID 129의 가장 일반적인 원인은 응답하지 않는 LUN 또는 삭제된 요청입니다. 삭제된 요청은 SAN(스토리지 영역 네트워크)의 잘못된 라우터 또는 기타 하드웨어 문제로 인해 발생할 수 있습니다.

이벤트 ID 157 문제 해결

이 이벤트는 Classpnp.sys 드라이버가 이동식이 아닌 디스크에 대한 PNP(플러그 앤 플레이 관리자)로부터 깜짝 제거 요청을 수신했음을 나타냅니다.

이 문제는 SAN 패브릭 오류 또는 SCSI 버스 문제와 같이 디스크와의 시스템 통신이 중단되는 경우에 가장 자주 발생합니다. 오류가 발생한 디스크 또는 시스템이 실행되는 동안 사용자가 디스크를 분리할 때 발생할 수도 있습니다. 이 경우 관리자는 디스크 하위 시스템의 히스를 확인해야 합니다.

이벤트 ID 55 및 98 문제 해결

이벤트 ID 55, 50, 140 및 98과 같은 NTFS 이벤트가 기록된 경우 "chkdsk" 유틸리티를 실행해야 합니다.

NTFS가 트랜잭션 로그에 데이터를 쓸 수 없으므로 트랜잭션 데이터를 쓸 수 없는 작업을 중지하거나 롤백하는 NTFS의 기능에 영향을 줄 수 있습니다.

이벤트 ID 55의 예는 다음과 같습니다.

Event Type: Error
Event Source: NTFS
Event ID: 55
Description: The file system structure on the disk is corrupt and unusable. Please run the chkdsk utility on the volume.

일반적으로 파일 시스템 손상이 발생할 때 이벤트 ID 55가 기록됩니다. 파일 시스템 손상은 다음 문제 중 하나 이상이 발생할 때 발생합니다.

  • 디스크에 잘못된 섹터가 있습니다.

  • 파일 시스템에서 디스크 하위 시스템으로 전달되는 I/O 요청이 성공적으로 완료되지 않았습니다.

대부분의 문제는 하드웨어 관련 문제이며 하드웨어가 예기치 않게 손상될 수 있습니다. 다음 방법을 사용하여 문제를 해결할 수 있습니다.

  • SCSI 포트 또는 RAID 컨트롤러 드라이버를 업데이트합니다.

  • 필터 드라이버를 제거하거나 업데이트합니다.

  • 타사 스토리지 드라이버 또는 펌웨어를 업데이트합니다.

  • 다양한 유형의 드라이버로 전환. 예를 들어 RAID 컨트롤러 드라이버 또는 모놀리식 드라이버입니다.

  • 하드웨어를 다양한 조합으로 다시 정렬합니다.

타사 정보 고지 사항

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.