Exchange Queue & A트랜잭션 로그, cmdlet, 원격 관리 및 기타 기능

KC Lemson and Nino Bilic

Q: Microsoft® Exchange Server 2007에서는 트랜잭션 로그 크기가 1MB로 줄었는데 그 이유가 무엇입니까?

A: Exchange 2007에는 LCR(로컬 연속 복제)과 CCR(클러스터 연속 복제)이라는 새로운 기능의 기반이 되는 로그 전달이라는 매우 우수한 기술이 도입되었습니다. 이 로그 전달 기능을 SG(저장소 그룹) 수준에서 사용할 때는 실행 중인 프로덕션 SG에서 복사본 SG로 트랜잭션 로그가 복사됩니다. 복사본 SG의 트랜잭션 로그는 다시 데이터베이스로 재생되어 데이터베이스가 최신 상태로 유지됩니다. 설명이 너무 간단한 것 같지만 큰 그림은 파악할 수 있으리라 믿습니다.

중요한 것은 프로덕션 SG에서 트랜잭션 로그가 닫히지 않으면 복사본 SG로 트랜잭션 로그를 보낼 수 없다는 것입니다. 다시 말해, 첫 번째 저장소 그룹의 현재 로그 e00은 꽉 차서 닫힌 후 이름이 바뀌기 전에는 복사본 SG로 보낼 수 없습니다. 또한 가용성과 성능 간의 균형을 이루도록, 이 프로세스에서 자동으로 기록되는 로그의 수를 제어하는 설정도 제공됩니다. 이러한 설정은 Exchange 관리 셸의 Set-MailboxServer cmdlet을 실행하여 사용할 수 있습니다. 필요한 매개 변수에 대한 정보는 도움말 파일을 통해 볼 수 있습니다.

간단히 요약하면, 저장소 그룹의 두 복사본 간의 동기화되지 않은 데이터 양을 최소화하기 위해 트랜잭션 로그 크기를 줄인 것입니다. 이는 프로덕션 데이터베이스가 있는 하드 드라이브에 오류가 발생하여 복사본에서 SG를 시작해야 할 경우에 매우 유용한데, 트랜잭션 로그의 크기가 작을수록 손실되는 데이터의 양도 줄어들기 때문입니다.

그렇다고 정확히 1MB의 데이터만 손실된다는 말은 아닙니다. 1MB의 데이터가 트랜잭션 로그라고 가정할 경우, 손실된 1MB의 로그 파일에는 5MB의 데이터에 대한 COMMIT 트랜잭션 로그가 포함되어 있을 수도 있습니다. 이러한 경우에는 복사본에 이 5MB의 데이터가 존재하지 않게 됩니다. 데이터 자체가 있는 다섯 개의 로그를 받았더라도 소량의 데이터가 있고 COMMIT 트랜잭션을 필요로 하는 마지막 필수 로그를 받지 못했기 때문입니다.

결국 비즈니스 요구 사항에 비추어서 이러한 데이터 손실이 감당할 만한 것인지를 결정하는 것은 순전히 사용자의 몫입니다. 이는 복원하는 데 시간이 오래 걸리는 다른 방법에 비해 손실되는 데이터의 양이 적고 복구 시간이 짧다는 점에서 매우 우수하다고 볼 수 있습니다. 이 주제에 관해서는 향후에 자세히 다루겠습니다.

Q: 트랜잭션 로그의 크기가 작아지면 트랜잭션 로그가 더 빨리 소모되나요?

A: Exchange에서는 "소모된다"라는 표현이 트랜잭션 로그 이름에 적용됩니다. Exchange Server 2003에서는 트랜잭션 로그 이름이 다음과 같이 지정됩니다.

E nn fffff.log

nn은 SG마다 다르게 지정되는 접두사입니다. nn은 SG가 사용되는 동안에는 동일하게 유지되므로 저장소 그룹에 대해 고유하게 만들어지는 번호는 "fffff" 값이라고 할 수 있습니다. 이 값은 로그 수를 최대 백만 개까지 수용할 수 있습니다. 어마어마한 수에 놀라울 지경이지만 저희 고객 중 몇몇은 사용량이 많은 메일 서버에서 실제로 이 한계에 도달한 적도 있었습니다.

Exchange Server 2000부터는 이 한계에 근접했을 때 응용 프로그램 로그에 이벤트를 표시하는 핫픽스를 제공하고 있습니다. 이에 대한 자세한 내용은 support.microsoft.com/kb/896001 페이지를 참조하십시오.

Exchange 2007에서는 이런 식의 이름 지정으로 인해 어떤 현상이 발생할까요? 앞에서 Exchange 2007에서는 트랜잭션 로그 크기가 이전 버전 Exchange의 5MB에서 1MB로 줄었다는 설명을 드린 바 있습니다. 그러면 고유 트랜잭션 로그 이름이 모두 소모되기 전까지 5분의 1의 데이터만 수용할 수 있다는 의미일까요?

아닙니다. Exchange 2007에서는 트랜잭션 로그 이름이 다음과 같은 형식으로 지정됩니다.

E nn ffffffff.log

이전 버전의 "fffff"가 아니라 "ffffffff" 로그를 사용하게 되었다는 점을 눈여겨보십시오. 내부 ESE(Extensible Storage Engine)에서 사용하는 수학 공식으로 인해 Exchange 2007에서는 "ffffffff" 로그를 전부 만들지는 못하고 대신 "7fffffec" 로그를 만드는데, 이 수치는 어마어마합니다. 못 믿으시겠다면 이 16진수를 10진수로 변환해 보십시오.

실제 환경에서는 이것이 무엇을 의미할까요? Exchange 2007에서는 이전 버전의 Exchange보다 2,048배나 많은 로그를 만들 수 있다는 것을 의미합니다. 이제 이러한 로그 수를 5로 나누면 최종 수치가 나옵니다.

2048 / 5 = 409.6

앞에서 살펴보았듯이 새로운 이름 지정 체계는 이전보다 409배나 많은 데이터를 처리할 수 있습니다. 또한 저장소 그룹마다 e00, e01 등, 서로 다른 로그 파일 접두사가 지정되므로 이러한 처리 성능의 개선은 서버 단위가 아니라 SG 단위로 이루어집니다. 뿐만 아니라 Exchange 2007 Enterprise 버전에서는 서버당 SG를 50개나 만들 수 있습니다. 이렇게 많은 트랜잭션 로그를 모두 사용할 수 있는 조직은 앞으로 당분간은 거의 없다고 봅니다.

Q: Exchange 2007 서버를 원격으로 관리하려면 어떻게 해야 합니까?

A: Exchange 2007 서버는 몇 가지 방법을 사용하여 원격으로 관리할 수 있습니다. 먼저, Exchange 서버와는 별도의 컴퓨터에 Exchange 2007 관리 도구를 설치할 수 있습니다. 단, Exchange 2007 관리 도구를 설치하는 컴퓨터에서 32비트 또는 64비트 버전의 Windows Server® 2003 SP1(서비스 팩 1) 이상, Windows Server 2003 R2 또는 Windows XP SP2 이상을 실행해야 합니다. 프로덕션 환경에서 클라이언트 액세스, 사서함, Edge 전송 서버 등의 서버 역할은 32비트 하드웨어에 설치할 수 없지만 관리 도구는 32비트 컴퓨터에 설치할 수 있습니다. 또한 Exchange Server 2007이 처음 릴리스될 당시에는 Windows Vista™에서 관리 도구가 지원되지 않았다는 점에도 유의하십시오.

일부 조직의 IT 부서에서는 관리 서버로 사용할 서버를 하나 만든 다음, 이 서버에 다양한 제품을 관리하는 데 필요한 관리 도구를 모두 설치합니다. 그리고 해당 관리 도구를 사용해야 하는 관리자가 터미널 서버를 통해 관리 서버에 액세스하여 원격 관리 작업을 수행합니다. 다른 설정 환경에서는 사용자가 자신의 데스크톱 컴퓨터에 관리 도구를 설치합니다.

콘솔이나 셸에서 조직의 서버에 대한 작업을 수행할 수 있습니다. 콘솔에는 조직의 서버가 모두 표시되므로 원하는 서버에서 작업을 수행할 수 있습니다. 셸에서는 대부분의 작업에 필터링 플래그가 지원됩니다. 예를 들어 -server와 같은 필터링 플래그는 작업 범위를 단일 서버로 제한하려는 경우에 유용합니다. 하지만 Get-NetworkConnectionInfo와 같이 로컬에서만 실행해야 하는 명령이 있는 등, 몇 가지 제한도 따릅니다.

Q: 지난 호 칼럼에서는 Exchange 2007 서버의 권장 RAM 크기에 대해 설명하신 바 있습니다. 권장 페이지 파일 크기는 어느 정도입니까?

A: Exchange 2007 서버의 잠재적 가상 메모리 부족 오류를 방지하려면 다음 지침에 따라 시스템의 페이지 파일 크기를 결정하는 것이 좋습니다.

서버의 RAM 크기가 8GB 미만이면 페이지 파일의 최소 크기가 RAM 크기에 10MB를 더한 크기여야 합니다. 따라서 서버의 RAM 크기가 4GB일 경우 페이지 파일의 최소 크기는 이 4GB에 10MB를 더한 크기입니다. 하지만 페이지 파일의 권장 크기는 RAM 크기에 1.5를 곱한 크기이므로 4GB 서버의 경우 6GB가 됩니다.

RAM 크기가 8GB 이상인 서버의 경우에도 페이지 파일의 최소 크기는 RAM 크기가 8GB 미만인 서버와 마찬가지로 RAM 크기에 10MB를 더한 크기입니다. 하지만 권장 크기는 이와는 다르게 결정됩니다. 기본적으로 RAM 크기가 8GB 이상인 서버에서는 작은 페이지 파일로 인해 가상 메모리 부족 오류가 발생할 경우에만 RAM 크기의 1.5배로 페이지 파일 크기를 설정하면 됩니다.

여기서 말하는 오류는 Exchange 2000 및 Exchange 2003 서버에서 문제가 되었던 가상 메모리 조각과는 아무런 관계가 없으며, 페이지 파일 크기를 늘리도록 요청하거나 페이지 파일이 너무 작다는 것을 알려 주는 시스템에 기록된 실제 팝업 오류를 의미합니다.

Q: Exchange 관리 셸을 사용하는 방법을 배우고 싶은데 명령줄을 사용하여 시스템을 관리해 본 적이 없습니다. 어디서부터 시작하는 것이 좋을까요?

A: 먼저 몇 가지 기본적인 사항부터 살펴보겠습니다. Exchange 관리 셸의 각 cmdlet은 동사 하나와 명사 하나로 이루어집니다. Exchange 관리 셸에는 몇 가지 동사밖에 사용되지 않습니다. "Get"은 개체의 속성을 검색하는 데 사용되고, "Set"은 개체의 속성을 변경하는 데 사용되며, "New"는 개체에 새로운 속성을 만드는 데 사용됩니다. Exchange 관리 셸에서 사용되는 명사에는 Exchange 관리자라면 누구나 잘 알고 있는 Mailbox, Contact, Queue, OWAVirtualDirectory 등의 다양한 개념이 포함됩니다. 이와 더불어 Exchange Server 2007에 새로 추가된 TransportRule, StorageGroupCopy, UMAutoAttendant 등의 개념도 포함됩니다. 실제로 사용되는 기본적인 cmdlet은 사서함을 만드는 New-Mailbox나 조직의 사서함 목록을 검색하는 Get-Mailbox와 같은 형식입니다.

하지만 대부분의 cmdlet의 경우 이를 사용하여 원하는 작업을 정확하게 수행하려면 보다 구체적인 정보를 제공해야 합니다. 예를 들어 사서함 속성을 변경하려면 사서함과 속성을 지정해야 하는데 이때는 매개 변수를 사용하면 됩니다. 예를 들어 New-Sandwich가 cmdlet이라면, -NumberOfTomatoSlices 4, -Bread Wheat, 그리고 원하는 샌드위치를 만들기 위해 보다 자세히 지정하는 데 사용되는 다양한 옵션이 매개 변수가 됩니다.

이러한 동사-명사 구조만 이해한다면 EMC(Exchange 관리 콘솔) 마법사에 표시되는 명령줄을 사용하여 각 cmdlet으로 어떤 작업을 수행할 수 있는지를 금방 배울 수 있습니다. EMC에서 마법사를 처음부터 끝까지 실행하여 새 사용자를 만들어 보십시오. 작업이 완료된 후 마법사가 끝날 때 마법사가 배경에서 실행한 명령의 복사본이 표시됩니다(그림 1 참조). Ctrl+C를 누르면 대화 상자의 내용이 복사되므로 cmdlet을 메모장에 붙여 넣어 고유의 간단한 배치 파일을 만들 수 있습니다.

Figure 1 Command-line exposure for creating a new user

Figure 1** Command-line exposure for creating a new user **(더 크게 보려면 이미지를 클릭하십시오.)

시스템에 어떠한 손상도 주지 않고 cmdlet을 직접 사용해 보려면 명령 끝에 -WhatIf를 넣으십시오. 그런 다음 명령을 실행하면 시스템에서 실제로 무언가가 변경되는 대신, 명령을 실행할 경우 어떤 일이 발생하는지를 보여 주는 메시지가 표시됩니다.

*-Mailbox와 같은 기본 cmdlet에 익숙해지면 몇 가지 다른 명령을 시도해 볼 수 있습니다. cmdlet에 대한 자세한 정보를 보려면 Get-ExCommand cmdlet을 사용하십시오. Get-ExCommand cmdlet을 실행하면 모든 Exchange 관리 cmdlet 목록이 표시됩니다. 이 명령은 Exchange 관리 셸을 실행하는 동안 실행해야 합니다. 단순히 Microsoft Command Shell이나 Windows PowerShell™을 열었다고 해서 cmdlet을 이용한 작업이나 다른 Exchange 관리 작업을 수행할 수 있는 것은 아닙니다. 표시되는 목록이 방대하므로 와일드카드 검색 방법을 사용하여 원하는 cmdlet을 찾아야 합니다. 예를 들어 Get-ExCommand *database*는 Dismount-Database, Move-DatabasePath, New-MailboxDatabase 등 이름에 "database"가 있는 모든 Exchange cmdlet 목록을 반환합니다.

찾으려는 cmdlet의 명사 부분을 알고 있는 경우에는 옵션을 차례로 볼 수 있습니다. 예를 들어 Get-Mailbox를 입력한 다음 Tab 키를 눌러 작업 이름의 명사에 mailbox가 들어가는 모든 cmdlet을 차례로 표시할 수 있습니다. 와일드카드 일치와 Tab 키를 이용한 완성 기능을 함께 사용할 수도 있습니다. 예를 들어 Get-*Mailbox*를 입력한 다음 Tab 키를 눌러 가능한 옵션을 차례로 표시할 수 있습니다.

프롬프트를 사용하는 방법도 있습니다. 각 cmdlet에는 해당 작업을 수행하는 데 필요한 기본 매개 변수 집합이 있습니다. Get-Mailbox와 같은 "Get" cmdlet에는 매개 변수가 필요하지 않습니다. 기본적으로 Get-Mailbox는 조직 전체의 모든 사서함 목록을 반환합니다. 목록은 기본적으로 1,000개까지 반환됩니다. 이 최대값을 변경하려면 Get-Mailbox -ResultSize 2000과 같이 값을 입력합니다. 개체를 만들거나 변경하는 Set 또는 New cmdlet은 만들거나 수정하려고 하는 개체에 필요한 정보를 사용자에게 요청합니다. 예를 들어 New-Mailbox를 실행하면 암호, 데이터베이스, 이름 등을 요청하는 프롬프트가 한 번에 하나씩 셸에 표시됩니다.

특정 cmdlet에 사용할 수 있는 매개 변수에 대한 자세한 정보를 보려면 Help Move-DatabasePath를 실행하여 도움말 시스템을 사용하십시오. 기본적인 내용만 살펴보려면 Move-DatabasePath, Move-DatabasePath -? 등으로만 입력해도 됩니다. 그러면 cmdlet에 대한 설명과 함께 각 cmdlet의 용도와 매개 변수 목록이 표시됩니다. Get-Help cmdlet을 사용하여 도움말을 표시할 수도 있습니다. Get-Help만 입력하면 되므로 정말 편리합니다. 다른 사람들에게도 이 cmdlet을 실행하는 방법을 쉽게 알려 줄 수 있습니다.

cmdlet에 필요한 매개 변수를 찾는 또 다른 방법은 Tab 키를 사용하여 매개 변수 이름을 표시하는 것입니다. 예를 들어 Get-Mailbox -S를 입력한 다음 Tab 키를 누르면 S로 시작하는 매개 변수가 차례로 표시됩니다.

이 외에 더 광범위한 도움말 시스템도 제공됩니다. 원하는 정보를 오프라인에서 찾지 못한 경우에는 go.microsoft.com/fwlink/?linkid=79421의 정기적으로 업데이트되는 도움말 및 go.microsoft.com/fwlink/?linkid=64647의 빠른 참조 안내를 참조하십시오.

이 정도의 지식만 있으면 Exchange 관리 콘솔을 사용하는 데 별 무리가 없습니다. 하지만 여기에서 제공한 정보는 명령줄의 우수한 성능과 융통성이 지닌 일면만 간단히 보여 준 것에 불과합니다. 명령줄의 성능과 융통성에 대해서는 향후에 제공될 칼럼에서 보다 자세히 다루겠습니다.

Q: Exchange Server 2003 ESM(Exchange 시스템 관리자)에서는 모든 사용자의 사서함 크기를 쉽게 볼 수 있었는데 Exchange 2007에는 이와 같은 기능이 없는 것 같습니다. Exchange 2007에 이에 해당하는 기능이 있습니까?

A: 새로운 Exchange 2007 콘솔에서는 사서함 자체의 속성 페이지에서 사서함 크기를 볼 수 있습니다. 여러 사용자의 사서함 크기를 보려면 Exchange 관리 셸을 사용해야 합니다.

Exchange 관리 셸에서 Get-MailboxStatistics를 실행하면 특정 데이터베이스뿐만 아니라 서버 전체의 모든 사서함과 관련된 통계를 볼 수 있습니다. 기본적으로 크기는 표시되지 않습니다. 크기를 보려면 Format-List와 함께 이 cmdlet을 실행해야 합니다.

get-mailboxstatistics | format-list

이 경우에는 보려는 정보를 선택한 다음 이를 표에 연결하는 것이 좋습니다. 다음 예에서는 사서함의 표시 이름, 항목의 총 크기, 지운 편지함의 총 크기, 사서함이 있는 데이터베이스를 표시합니다.

Get-MailboxStatistics | Select-Object 
displayname,totalitemsize,
totaldeleteditemsize,databasename 
| Format-Table

보려는 정보에 따라 출력 내용에 서로 다른 형식을 사용할 수 있습니다. 이 예에서는 Format-List보다 Format-Table을 사용하는 것이 적절합니다.

KC Lemson은 Exchange Server 팀의 수석 프로그램 관리자이고 ATM PIN 번호는 0000입니다. 한 곳에서 모두 인출하지만 마십시오.

Nino Bilic은 기술 팀장 직을 맡고 있으며 Bill에게 전자 메일을 전달하는 대가로 1,000달러짜리 수표를 받으며 여가 시간을 보내고 있습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..