virtualization/microsoft

[Microsoft Exchange Server 2003] 사서함 저장소 탑재 실패

yueisu 2012. 9. 19. 00:30

회사 메일서버는 아직까지 Exchange Server 2003 입니다. 7년전에 도입을 했죠. 물론 물리 서버입니다.

작년부터  Exchange Server 2010 환경으로 이행을 준비했었습니다만, 다른 업무로 인해 차일피일 미루고 있었죠. 

드디어 일이 터졌습니다. 며칠 전 메일수신이 않된다며 새벽에 전화가 왔더군요.

확인을 해보니 메일서버에 접속이 않되었습니다. ping도 안가더군요. 야근을 하고있는 동료에게 컨솔 확인을 부탁했더니 BSOD였습니다. --; 순간 올게 왔구나. 싶더군요. 강제로 전원을 껐다 켰더니 기동은 되었습니다. 다만...


사서함 저장소 탑재가 않되더군요. --;; 탑재를 시도하면 다음과 같은 에러가 발생했습니다.

The database files in the store are inconsistent.

ID no: c1041739

Exchange System Manager

또한 이벤트 로그에는 455, 9518, 9519, 9175 등의 에러가 기록되더군요.


■ 원인

원인은 BSOD가 되며 OS가 이상정지를 했기 때문입니다. 보통은 RAID 컨트롤러의 메모리상에 캐쉬되기 때문에 별다른 문제가 없었지만, 이번에는 RAID 컨트롤러에 장애가 발생했기에, 메모리상의 캐쉬 데이터가 전부 삭제되어버렸습니다. 

때문에 사서함 DB와 로그화일(E00.log)의 정합성이 틀어져버렸습니다. 아울러 OS의 ntfs가 손상되었죠. --;;;


해결방법

일단 사서함 DB와 로그화일(E00.log)의 정합성이 맞지않을 경우는 백업 데이터로 복원을 하던지 eseutil로 사서함 DB를 스캔, 손상된 부분을 수정해줘야 되었습니다.

① ms-dos 명령 프롬프트에서 c:\program files\Exchsrvr\bin로 이동, 다음의 명령어를 실행합니다.

   eseutil.exe /ml "사서함 DB(.edb) 풀패스"

   위의 명령어를 실행하면, 사서함 DB의 status를 확인할 수 있습니다. 결과중 다음과 같은 부분이 있는걸 확인후,

   State : Dirty Shutdown

② eseutil.exe /p "사서함 DB(.edb) 풀패스" 를 실행, 사서함 DB를 수복합니다.

    eseutil.exe /p를 실행하면 다음과 같은 부분에서 정지한 듯 아무런 변화가 없을겁니다.

    Deleting unicode fixup table.

    아무런 변화가 없다고 초조해마시고, 기다리세요. 기다리셔야됩니다. 

    사서함 DB 용량이 45GB일 경우 약 6시간 정도 소요되었습니다.

    위의 "Deleting~"이 마지막 프로세스입니다. 이 프로세스가 정상적으로 완료되면 다음과 같은 메시지가 표시됩니다.

Repair completed. Database corruption has been repaired!


③ 사서함 저장소를 탑재합니다.


보통은 여기서 끝입니다만, 제 경우는 RAID 컨트롤러에 장애가 발생했기에 또다른 시련이 있었습니다...

이 얘긴 다음에 하죠... 흐흐