Follow us on Twitter
Follow us on YouTube
Would you like to suggest a topic for the Exchange team to blog about? Send suggestions to us.
최초 문서 게시일: 2011년 11월 9일 수요일
얼마 전에 지원 가능성 프로그램 관리자인 Nino Bilic과 채팅을 하는 중에 꽤 놀라운 이야기를 들었습니다. Nino의 설명에 따르면, Exchange 2010을 사용하는 Microsoft의 주요 고객들에게 심각한 문제가 발생하는 가장 큰 이유는 트랜잭션 로그 LUN의 디스크 공간이 부족하여 사서함 데이터베이스가 분리되기 때문이라고 하더군요.
잠시 그 설명에 대해 곰곰이 생각해 보았는데, 솔직히 충격을 받았습니다. 개인적으로는 사서함 요구 사항 계산기를 활용하고 TechNet의 지침을 참조하면 그런 문제는 발생하지 않을 것이라고 믿고 있었거든요. Nino는 저에게 이 정보를 알려 주면서 트랜잭션 로그 용량 계획이라는 주제에 대해 블로그 게시물을 작성할 것을 권했습니다(고마워요 Nino!).
트랜잭션 로그 LUN의 크기를 적절하게 지정하려면 작업 중인 환경에 대해 다음과 같은 몇 가지 사항을 파악해야 합니다.
이 게시물에서는 각 데이터베이스에 사서함 250개가 포함된다고 가정하겠습니다. 각 사서함에서는 매일 150개의 메시지를 보내고 받으며, 평균 메시지 크기는 100KB입니다. 사서함 데이터베이스 및 로그 용량 요소 이해의 표를 참고하면, 평균 메시지 크기가 75KB인 150개의 메시지 프로필에서는 매일(24시간) 트랜잭션 로그가 30개 생성됩니다. 이 게시물에서 사용하는 예에서는 메시지 크기가 75KB보다 크므로 사서함 생성당 트랜잭션 로그 수를 계산할 때 해당 크기를 고려해야 합니다. 대략적인 지침은 다음과 같습니다.
평균 메시지 크기가 두 배(150KB)가 되면 사서함당 생성되는 로그 수는 1.9배 증가합니다. 이 값은 첨부 파일 및 메시지 테이블(메시지 본문과 첨부 파일)을 포함하는 데이터베이스의 비율을 나타냅니다.
따라서 다음 수식을 사용하면 평균 메시지 크기가 100KB인 사서함에 대한 로그 수 증가를 확인할 수 있습니다.
150/1.9 = [프로필의 평균 메시지 크기] / x
x = (100*1.9)/150
x = 1.266666666666667~1.27
보시다시피 기준보다 메시지 크기가 25KB 커지면 매일 사서함당 생성되는 트랜잭션 로그의 수는 1.27배 증가합니다. 따라서 사서함당 매일 생성되는 트랜잭션 로그 수는 트랜잭션 로그 30개*1.27 = 39개가 됩니다. 즉, 사서함이 250개인 데이터베이스의 경우 각 데이터베이스의 사서함에서 매일 생성되는 트랜잭션 로그의 수는 39*250 = 9,750개입니다.
사서함을 이동할 때도 트랜잭션 로그가 생성됩니다. 대상 데이터베이스로 각 사서함을 이동하면 사서함 크기(휴지통 폴더의 콘텐츠 포함)와 거의 같은 충분한 수의 로그가 원본이 아닌 대상 데이터베이스에 생성됩니다. 예를 들어 매일 사서함 중 1%를 이동하는 경우 사서함 2.5개가 데이터베이스로 이동되는 것입니다. 각 사서함의 평균 크기가 5.4GB이면(단일 항목 복구를 사용하도록 설정한 경우 삭제된 항목 보존 기간인 14일 동안의 콘텐츠 포함) 데이터베이스당 매일 사서함 이동 트랜잭션 로그의 수는 2.5*5.4GB/1024 = 13,888개입니다.
백업/복원의 경우에는 사용 중인 백업 아키텍처의 유형을 고려해야 합니다. 각 백업 시나리오에서는 사서함 생성 트랜잭션 로그의 용량을 고려하여 프로비전해야 하는 권장 추가 기간(일)에 해당하는 공간이 있습니다. 추가 공간을 프로비전하면 여러 오류가 발생해도 데이터베이스의 작동이 중단되지 않습니다. 트랜잭션 로그 자르기에 대한 자세한 내용은 백업, 복원 및 재해 복구 이해를 참조하십시오.
물론 다른 시나리오도 고려해야 할 수 있습니다. 예를 들어 두 데이터 센터 간에 확대된 DAG(데이터베이스 사용 가능 그룹)를 배포하는 경우에는 두 데이터 센터 간의 네트워크 링크가 작동하고 데이터베이스 복사본이 정상 상태일 때만 로그 자르기가 수행됩니다. WAN 링크의 작동이 중단되어 복구하는 데 5일이 걸리는 경우에는 해당 기간을 고려하여 백업 오류 방지 기능을 조정해야 합니다.
이 게시물에서 사용하는 시나리오에서는 자르기 오류 이벤트 기간 3일 동안 데이터베이스가 정상적으로 작동하도록 하면 됩니다. 즉, 사서함 생성 트랜잭션 로그용으로 9,750/1024*3 = 28.5GB의 디스크 공간이 필요합니다.
또한 해당 주에 계속 수행되는 사서함 이동 이벤트에 필요한 디스크 공간도 고려해야 합니다. 사서함 이동 작업을 위한 디스크 공간은 13,888/1014*7일 = 94.9GB입니다.
이러한 수치들을 종합할 때 각 데이터베이스에서 트랜잭션 로그에 필요한 디스크 공간은 123GB입니다. 또한 예기치 않은 현상이 발생할 경우에 대비하기 위한 데이터 오버헤드 요인도 포함해야 하므로, 트랜잭션 로그용으로 필요한 최종 디스크 공간은 123GB*1.2 = 148GB입니다.
트랜잭션 로그에 대해 전용 LUN을 배포하는 경우에는 150GB LUN을 프로비전해서는 안 됩니다. 백업 오류가 발생하고 사서함을 빈번하게 이동하는 경우에는 디스크 공간이 모두 사용될 수 있기 때문입니다. 일반적으로는 디스크 용량의 80%만 사용하도록 각 LUN을 프로비전해야 합니다. 해당 공식은 다음과 같습니다.
LUN 공간 = [예상 디스크 공간 사용률] / (1-[원하는 사용 가능한 공간 비율])
LUN 공간 = 148GB/(1-0.2) = 148GB/0.8 = 전용 트랜잭션 로그 볼륨에 대한 185GB LUN 공간
데이터베이스와 동일한 LUN에 트랜잭션 로그를 배포하는 경우에는 트랜잭션 로그 디스크 공간 요구 사항과 데이터베이스 디스크 공간 요구 사항을 더하면 [예상 디스크 공간 사용률] 값을 구할 수 있습니다.
가장 먼저 작업 환경의 기준을 파악하여 일반적인 일별 로그 생성 속도를 확인해야 합니다. 또한 모니터링을 설정하고 생성되는 경고에 대해 조치를 취해야 합니다. 모니터링을 통해 다음과 같은 시나리오를 모니터링해야 합니다.
제 동료인 Mike Lagase가 이러한 시나리오의 문제를 해결하는 방법에 대한 유용한 정보를 제공하는 문서(http://blogs.technet.com/b/mikelag/archive/2009/07/12/troubleshooting-store-log-database-growth-issues.aspx(영문일 수 있음))를 작성했습니다. 이 문서는 Exchange 2007을 중심으로 작성되었으므로 몇 가지 도구 및/또는 권장 사항은 Exchange 2010에는 더 이상 적용되지 않을 수도 있습니다. 이 문서에서 Mike가 설명하는 단계 외에도, Exchange 2010에서 다음 방법을 통해 예기치 않은 트랜잭션 로그 증가 현상을 확인할 수 있습니다. 이 문서를 작성하는 데 도움을 준 Todd Luttinen에게 감사의 인사를 전합니다.
[PS] C:\>$stats = Get-StoreUsageStatistics –Database <Database Name> [PS] C:\>$stats | ? {$_.DigestCategory -eq 'LogBytes'} | group MailboxGuid |sort count -Descending | Select -first 1 -ExpandProperty Group | sort SampleTime | ft -a MailboxGuid,Sample*,Log*
<날짜/시간>에서 시작한 <이름> 서비스가 서버에서 이 작업을 수행했습니다. RPC 작업: 24168 읽은 데이터베이스 페이지: 1329(미리 읽은 629페이지 중) 업데이트된 데이터베이스 페이지: 12418(다시 업데이트된 11555페이지 중) 생성된 데이터베이스 로그 레코드: 13906 생성된 데이터베이스 로그 레코드 바이트: 660331 서버의 시간: 19142ms 사용자 모드의 시간: 6100ms 커널 모드의 시간: 63ms
데이터베이스 가용성에 영향을 주지 않으려면 충분한 공간을 확보해야 합니다. 이 게시물의 정보가 트랜잭션 로그 용량을 계획하는 데 도움이 되었으면 합니다.
Ross Smith IV 주임 프로그램 관리자 Exchange Customer Experience
이 문서는 번역된 블로그 게시물입니다. 원본 문서는 Capacity Planning – Yes Transaction Log Space is Critical to Keeping your Databases Healthy and Mounted를 참조하십시오.