Share via


Exchange Server의 저장소 관리

관리 저장소는 2016년 Exchange Server 및 2019년 Exchange Server 정보 저장소(스토어라고도 함) 프로세스의 이름입니다. 2013년 Exchange Server 도입된 Managed Store는 스토리지 프로세스 격리 및 더 빠른 데이터베이스 장애 조치(failover)를 제공하는 컨트롤러/작업자 프로세스 모델을 사용합니다. 또한 Managed Store는 이전 버전의 Exchange에서 동적 버퍼 알고리즘을 대체하는 정적 데이터베이스 캐싱 메커니즘을 사용합니다.

Managed Store에서 사용하는 다중 프로세스 모델은 사서함 서버의 다음 프로세스로 구성됩니다.

  • 전체 Exchange 서버(Microsoft.Exchange.Store.Service.exe(MSExchangeIS라고도 함)에 대한 단일 저장소 서비스 컨트롤러 프로세스입니다.

  • 탑재된 각 데이터베이스(Microsoft.Exchange.Store.Worker.exe)에 대해 하나의 작업자 프로세스입니다. 데이터베이스가 탑재되면 해당 데이터베이스에만 서비스를 제공하는 새 작업자 프로세스가 인스턴스화됩니다. 데이터베이스가 분리되면 해당 데이터베이스에 대한 작업자 프로세스가 종료됩니다.

예를 들어 사서함 서버에 40개의 사서함 데이터베이스가 탑재된 경우 관리되는 저장소에 대해 실행되는 프로세스 41개(각 데이터베이스에 대해 하나씩, 저장소 서비스 프로세스 컨트롤러용)가 있습니다. 저장소 프로세스 컨트롤러는 서버의 모든 매장 작업자 프로세스의 상태를 모니터링합니다. Microsoft.Exchange.Store.Service.exe 강제 종료되거나 예기치 않은 종료로 인해 서버의 모든 활성 데이터베이스 복사본이 즉시 장애 조치(failover)됩니다.

또한 관리되는 저장소는 Microsoft Exchange 복제 서비스(MSExchangeRepl.exe) 및 Active Manager와 긴밀하게 통합됩니다. 컨트롤러 프로세스, 작업자 프로세스 및 복제 서비스는 함께 작동하여 다음 목록에 설명된 대로 더 큰 가용성과 안정성을 제공합니다.

  • Microsoft Exchange 복제 서비스 프로세스(MSExchangeRepl.exe):

    • 스토어에 탑재 및 분리 작업을 실행하는 역할을 담당합니다.

    • Microsoft Store, ESE(Extensible Storage Engine) 및 관리되는 가용성 응답자가 보고한 스토리지 또는 데이터베이스 오류에 대한 복구 작업을 시작합니다.

    • 예기치 않은 데이터베이스 오류를 검색합니다.

    • 관리 작업에 대한 관리 인터페이스를 제공합니다.

  • 서비스 프로세스/컨트롤러(Microsoft.Exchange.Store.Service.exe)를 저장합니다.

    • 복제 서비스에서 받은 탑재 및 분리 작업에 따라 각 작업자 프로세스 수명을 관리합니다.

    • Windows 서비스 제어 관리자에서 들어오는 요청을 처리합니다.

    • 저장소 작업자 프로세스 문제가 감지되면 오류 항목을 기록합니다(예: 중단 또는 예기치 않은 종료).

    • 응답 장애 조치(failover) 이벤트에서 저장소 작업자 프로세스를 종료합니다.

  • 저장소 작업자 프로세스(Microsoft.Exchange.Store.Worker.exe)

    • 데이터베이스의 사서함에 대한 RPC 작업 실행을 담당합니다.

    • 작업자 프로세스 내의 RPC 엔드포인트 instance 데이터베이스 GUID입니다.

    • 데이터베이스에 대한 데이터베이스 캐시를 제공합니다.

정적 데이터베이스 캐싱 알고리즘

Managed Store는 이전 버전의 Exchange에서 사용된 동적 버퍼 할당 과 비교하여 데이터베이스 캐시를 결정하는 간단하고 간단한 알고리즘을 사용합니다. 각 데이터베이스 캐시(즉, 각 저장소 작업자 프로세스)에 할당되는 메모리는 Set-MailboxServer cmdlet에 있는 MaximumActiveDatabases 매개 변수의 로컬 데이터베이스 복사본 수와 구성된 값을 기반으로 합니다(기본값은 $null 또는 비어 있음). MaximumActiveDatabases 값이 현재 데이터베이스 복사본 수보다 큰 경우 캐시 계산은 데이터베이스 복사본 수를 기반으로 합니다.

정적 알고리즘은 서버에 설치된 실제 RAM의 양에 따라 각 저장소 작업자 프로세스의 ESE 캐시에 대한 메모리를 할당합니다. 이를 데이터베이스의 최대 캐시 대상 이라고 합니다. 전체 서버 메모리의 25%가 ESE 캐시에 할당되며 서버 캐시 크기 대상이라고 합니다.

참고

서버 캐시 크기 대상을 재정의할 수 있으므로 Active Directory에서 InformationStore 개체의 특성을 사용하여 msExchESEParamCacheSizeMax ESE 캐시용 Store에 할당된 메모리 양을 재정의할 수 있습니다(구성된 값은 모든 저장소 프로세스에서 할당할 32KB 페이지 수).

이 캐시의 정적 크기는 활성 및 수동 복사본에 할당됩니다. 저장소 작업자 프로세스는 활성 데이터베이스 복사본을 서비스할 때만 최대 캐시 대상이 할당됩니다. 수동 데이터베이스 복사본은 최대 캐시 대상의 20%가 할당됩니다. 나머지는 Store에서 예약하고 데이터베이스가 수동에서 활성으로 전환되는 경우 작업자 프로세스에 할당됩니다.

최대 캐시 대상은 스토어 시작 시만 계산됩니다. 따라서 데이터베이스 또는 데이터베이스 복사본을 추가하거나 제거하는 경우 캐시를 적절하게 조정할 수 있도록 MSExchangeIS(Store 컨트롤러 서비스)를 다시 시작해야 합니다. 서비스를 다시 시작하지 않으면 새 데이터베이스는 마지막 서비스 시작 전에 존재한 데이터베이스보다 더 작은 캐시 크기 대상을 갖게 됩니다. 이 시나리오에서는 MSExchangeIS가 다시 시작될 때까지 데이터베이스 캐시 크기 대상의 합계가 서버 캐시 크기 대상을 초과할 가능성이 높습니다.

데이터베이스 캐시 계산 예제

다음은 사서함 서버의 메모리 및 데이터베이스 구성을 기반으로 하는 데이터베이스 캐싱 계산 예제입니다.

예 1

사서함 서버 구성:

  • 48GB 메모리

  • 활성 데이터베이스 2개와 수동 데이터베이스 2개

  • MaximumActiveDatabases 매개 변수: 구성되지 않음

데이터베이스 캐시의 양은 각 활성 데이터베이스 복사 작업자 프로세스에 대해 3GB, 수동 데이터베이스 복사 작업자 프로세스당 0.6GB입니다. 이러한 값을 계산하는 방법은 다음과 같습니다.

  • 서버 캐시 크기 대상: 메모리 양의 25% : 48GB * 0.25 = 12GB.

  • 데이터베이스 최대 캐시 대상: 서버 캐시 크기 대상을 활성 및 수동 데이터베이스의 총 수(12GB/4개 데이터베이스 = 3GB)로 나눕니다.

  • 수동 데이터베이스 복사본에 사용되는 메모리: 데이터베이스 최대 캐시 대상의 20% : 3GB * 0.20 = 0.6GB.

서버 캐시 크기 대상에 할당된 12GB 메모리 중:

  • 7.2GB는 데이터베이스 작업자 프로세스에서 사용됩니다.

  • 4.8GB는 활성 복사본이 될 경우 두 개의 수동 데이터베이스 복사본에 대해 정보 저장소에서 예약됩니다. 이 경우 최대 캐시 대상인 3GB를 사용합니다.

예 2

사서함 서버 구성:

  • 48GB 메모리

  • 활성 데이터베이스 2개와 수동 데이터베이스 2개

  • MaximumActiveDatabases 매개 변수: 2

데이터베이스 캐시의 양은 각 활성 데이터베이스 복사 작업자 프로세스에 대해 5GB, 수동 데이터베이스 복사 작업자 프로세스당 0.2GB입니다. 이러한 값을 계산하는 방법은 다음과 같습니다.

  • 서버 캐시 크기 대상: 메모리 양의 25% : 48GB * 0.25 = 12GB.

  • 데이터베이스 최대 캐시 대상: 서버 캐시 크기 대상을 다음의 합계로 나눕니다.

    • 활성 데이터베이스 수

    • 수동 데이터베이스 수의 20%

    12GB/(2A + (2P * 0.20)) = 5GB

  • 수동 데이터베이스 복사본에 사용되는 메모리: 데이터베이스 최대 캐시 대상의 20%: 5GB * 0.20 = 1GB

서버 캐시 크기 대상에 할당된 12GB 메모리 중:

  • 데이터베이스 작업자 프로세스에서 12GB를 사용합니다.

  • 두 개의 수동 데이터베이스 복사본이 활성 복사본이 될 수 없으므로 정보 저장소에서 메모리를 예약하지 않습니다(MaximumActiveDatabases 는 값이 2로 구성되고 서버에 활성 데이터베이스 복사본이 이미 2개 있음).