문제
VSS(Volume Shadow Copy Service) 정보 및 VSS 문제 해결.
솔루션
기본적으로, VSS는 Windows 서버 2003 이상에 설치됩니다. 이 서비스는 수동 시작 유형으로 설정되어 있습니다. 이 서비스는 백업 프로그램(요청 프로그램)이 VSS 기록 장치를 사용할 수 있는 경우 시작합니다.
Exchange 2007 VSS 백업과 관련된 문제를 해결하려면 다음 아이템을 사용하십시오.
- 이벤트 로그 정보
- VSSADMIN 명령
- 진단 로깅
- Exchange 추가 도구
이벤트 로그 정보
다음 단계는 VSS를 사용한 Exchange 2007 백업 과정과 이에 따라 로그되는 이벤트를 설명합니다. 백업 작업 중에 로그되는 이벤트를 확인하면 어느 구성 요소에서 오류가 발생하는지를 파악하는 데 도움이 됩니다.
1단계: 데이터베이스 준비
에이전트라고도 불리는 백업 프로그램이 예정된 작업을 실행합니다.
백업 프로그램의 VSS 요청 프로그램이 스냅샷 백업을 위해 선택된 Exchange 저장소 그룹을 준비하도록 VSS에 요청을 제출합니다.
VSS는 Exchange VSS 기록 장치에 스냅샷 백업을 준비하도록 신호를 보냅니다.
다음 표는 시작되는 모든 백업 인스턴스에 대해 애플리케이션 로그에 로깅되는 일련의 이벤트를 나열합니다.
2단계: 데이터베이스 스냅샷
Exchange 기록 장치가 백업 준비가 완료되었음을 VSS에 보고하고 나면 다음 동작이 발생합니다.
1 Exchange 기록 장치가 적절한 Exchange 데이터베이스를 고정합니다. 이 시나리오에서 Exchange가 다음 동작을 수행합니다.
- Exchange가 특정 저장소 그룹에 대한 관리 작업을 금지합니다.
- Exchange가 저장소 그룹의 볼륨 의존성을 검사합니다.
- Exchange가 적절한 데이터베이스 파일 및 트랜잭션 로그 파일에 대한 모든 쓰기 작업을 중지시킵니다.
참고: Exchange가 데이터베이스 파일 및 트랜잭션 로그 파일에 대한 읽기 액세스는 여전히 허용합니다.
2 Exchange가 Exchange 데이터베이스 파일 및 트랜잭션 로그 파일의 중지를 시작할 때 Exchange는 데이터베이스의 스냅샷 사본을 작성하는 데 얼마나 시간이 걸리는지를 추적하는 사용자 스레드를 시작합니다. 복사 프로세스는 10초 이상이 허용되지 않습니다.
전체 스냅샷 복사 프로세스는 70초를 초과할 수 없습니다. 이 시간에는 "2단계: 데이터베이스 스냅샷" 과정에서 발생하는 모든 작업이 포함됩니다. 전체 프로세스가 70초를 초과하는 경우 사용자 스레드의 시간이 만료됩니다. 시간 초과가 발생한 경우 Exchange는 백업 작업을 중지하고 Exchange 저장소 그룹의 중지를 해제합니다. 그런 다음 Exchange는 일반 작업을 계속합니다.
다음 표는 스냅샷 작업 과정에 애플리케이션 로그에 로깅되는 일련의 이벤트를 나열합니다.
3단계: 섀도 복사본 확인
백업 프로그램의 VSS 요청 프로그램은 섀도 복사본의 건강을 확인합니다. 그런 다음 프로그램은 백업이 성공했는지의 여부를 Exchange에 알립니다. 이 동작은 백업 작업의 완료를 가리킵니다. OnBackupComplete() 메소드가 backupInProgress 플래그의 재설정에 사용됩니다.
다음 표는 백업 완료 과정에 애플리케이션 로그에 로깅되는 일련의 이벤트를 나열합니다.
백업 작업이 종료되면 Exchange 기록 장치가 OnBackupShutdown() 메소드를 호출합니다. 이 메소드는 백업 프로그램이 백업 작업을 완료한 후 종료할 때 필요한 동작을 수행하는 데 사용됩니다.
치명적인 오류가 발생하는 경우 OnBackupShutdown() 메소드가 Exchange 기록 장치 상태를 실패로 설정합니다.
다음 표는BackupShutdown 이벤트 과정에 애플리케이션 로그에 로깅되는 일련의 이벤트를 나열합니다.
다음 두 함수 호출은 백업 실패 시 발생합니다.
- CVssIExchWriter::OnAbort()
- 이 메소드는 섀도 복사 작업이 너무 일찍 완료되었음을 가리킵니다. Exchange 기록 장치는 이 메소드를 사용하여 Exchange 기록 장치를 정리하고 JET 데이터베이스에 정보 스토어를 해제할 것을 알립니다. 또한 Exchange 기록 장치는 이 메소드를 사용하여 JET 데이터베이스에 스냅샷이 중지되었음을 알립니다.
- CVssIExchWriter::EcBackupCleanup()
- 백업이 실패한 경우 Exchange는 이 메소드를 사용하여 백업 사후 실패 정리 작업을 수행합니다. Exchange는 이 메소드를 사용해 JET 데이터베이스에 스냅샷이 실패했음을 알립니다. 또한, Exchange는 이 메소드를 사용해 정보 스토어에 스냅샷이 실패했음을 알립니다.
단계 4: 트랜잭션 로그 잘림
성공적인 백업이 끝날 때 Exchange는 다음과 같은 작업을 수행합니다.
- Exchange가 트랜잭션 로그 파일을 자릅니다.
참고: Exchange 백업을 수행하지 않은 대신 Exchange 데이터베이스 파일을 포함하는 볼륨의 스냅샷 백업을 만든 경우 이 백업은 Exchange 백업과 동일한 방식으로 처리됩니다. 그러나 이 시나리오에서 백업은 복사 백업으로 간주되어 트랜잭션 로그 잘림이 발생하지 않습니다.
- Exchange가 데이터베이스 헤더를 적절한 로그 필요 필드 정보로 업데이트합니다.
- Exchange가 백업 진행 중 상태를 지웁니다.
- Exchange가 적절한 데이터베이스에 대한 마지막 백업 시간을 기록합니다.
VSSADMIN 명령
VSS 관리 명령줄 도구(VSSADMIN)를 사용하여 VSS와 함께 등록된 기록 장치 및 제공 프로그램에 대한 정보를 가져오십시오.
VSS 기록 장치 정보를 가져오려면 다음 단계를 수행합니다.
1 Exchange 서버에서 시작을 누르고 실행을 누른 다음 cmd를 입력하고 확인을 누릅니다.
2 명령 프롬프트에서 vssadmin list writers를 입력한 다음 ENTER를 누릅니다.
반환된 결과를 검사하여 Exchange 기록 장치 결과를 찾습니다. Exchange 기록 장치는 안전 상태에 있어야 합니다. 다음 결과는 Exchange 기록 장치가 안전 상태에 있을 때 반환됩니다.
기록 장치 이름: 'Microsoft Exchange Writer'
기록 장치 Id: {76fe1ac4-15f7-4bcd987e-8e1acb462fb7}
기록 장치 인스턴스 Id: {977637c2-fcdd-463e-b1f8-a9a5d603a2e8}
상태: [1] 안전
최종 오류: 오류 없음
상태 값이 안전이 아닌 경우 Microsoft Exchange Information Store 서비스를 다시 시작하십시오. Exchange 기록 장치가 실패 상태에 있는 경우 다음과 유사한 결과가 반환됩니다.
기록 장치 이름: 'Microsoft Exchange Writer'
기록 장치 Id: {76fe1ac4-15f7-4bcd987e-8e1acb462fb7}
기록 장치 인스턴스 Id: {977637c2-fcdd-463e-b1f8-a9a5d603a2e8}
상태: [14] 실패
최종 오류: 재시도 가능한 오류
3 등록된 VSS 제공 프로그램에 대한 정보를 가져오려면 명령 프롬프트에서 vssadmin list providers 를 입력합니다. 다음 결과가 나타날 것입니다.
공급자 이름: 'Microsoft Software Shadow Copy provider 1.0'
공급자 유형: System
공급자 Id: {b5946137-7b9f-4925-af80-51abd60b20d5}
버전: 1.0.0.7
기본적으로, Microsoft Software Shadow Copy 제공 프로그램만 나열됩니다. 그러나 타사 백업 프로그램이 설치된 경우 다른 제공 프로그램도 나열될 수 있습니다.
참고: 사용 가능한 명령에 대한 자세한 내용을 보려면 명령 프롬프트에서 vssadmin /? 를 입력합니다.
진단 로그
문제의 원인이 Exchange Writer에 있는 것으로 의심되는 경우 Exchange Writer의 진단 로깅을 사용할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.
참고: 기록 장치 문제는 Microsoft를 통해 해결하는 것이 좋습니다.
1. Exchange Management Shell을 시작합니다.
2. 다음 명령을 실행합니다.
get-eventloglevel | where-object {$_.identity -like "*Exchange Writer*"} | set-eventloglevel -level expert
3. Exchange 기록 장치의 로깅 수준을 확인하려면 다음 명령을 실행합니다.
get-eventloglevel | where-object {$_.identity -like "*Exchange Writer*"}
4. 진단 로깅 수준을 기본 수준으로 복원하려면 다음 명령을 실행합니다.