Как раз сейчас я занимаюсь проектированием большой (более 16 000 почтовых ящиков) среды Exchange 2010 для одного из своих клиентов. И одной из проблем является, конечно же, создание и тестирование среды хранилища для почтовых серверов.
В Exchange Server 2010 Microsoft внесла значительные изменения в архитектуру баз данных, по сравнению с предыдущими версиями Exchange Server увеличение производительности может составить от 70% до 90%. Это очень много. Одним из приоритетов при создании новой версии было использование больших SATA-дисков, где могут храниться и почтовая база данных, и файлы журналов. Необходимым требованием для использования SATA-дисков в подобной конфигурации (JBOD, Just a Bunch of Disks) является то, что у вас настроено множество копий почтовых баз данных в Database Availability Group (DAG). Такая ситуация просто умоляет о тестировании!!
Но перед тем как начать играться с доступными инструментами тестирования, я хочу дать вам некоторую базовую информацию о той конфигурации, которую я собираюсь тестировать.
В моем случае мы говорим о размещении 4 000 почтовых ящиков на одном почтовом сервере. Мы установим DAG в целях избыточности, у почтовых серверов будет Direct Attached Storage (DAS) при конфигурации RAID-6. Почему RAID-6? Конфигурация RAID-6 похожа на RAID-5, но два диска будут использоваться для хранения данных о четности. Если работа одного из дисков будет нарушена, массив хранилища не сразу перейдет к перестройке массива, и для замены диска в массиве будет масса времени. Кроме того, идея пересоздания больших почтовых баз данных в DAG – это не то, что понравится клиенту.
Чтобы создать подобную конфигурацию с почтовыми серверами, вам понадобится Exchange 2010 Mailbox Server Role Requirements Calculator (калькулятор требований для серверной роли), который можно найти на сайте команды Exchange. Следующие значения используются как входы для калькулятора требований:
Переменная | Значение |
Number of Mailboxes (число почтовых ящиков) | 16,000 |
Number of Mailbox Servers (число почтовых серверов) | 4 |
Current amount of storage (текущий объем хранилища) | 3,5 TB |
Avg. Data/mailbox (средний объем данных на почтовый ящик) | 230 MB |
Mailbox size limit (предельный размер почтового ящика) | 512 MB |
Max Database size (максимальный размер базы данных) | 500 GB (решение клиента!) |
Usage Profile (пользовательский профиль) | Light (Легкий) (10 отправляется, 40 получается) |
Average message size (средний размер сообщения) | 75 KB |
Deleted Items retention (хранение удаленных объектов) | 30 days (30 дней) |
Single Item Recovery (Восстановление отдельных элементов) | Enabled (Включено) |
Disk type (Тип диска) | 1 TB 7200 RPM SATA |
Number of database copies (число копий баз данных) | 2 (1 активная, 1 пассивная) |
Калькулятор данных выдаст следующие данные:
Переменная | Значение |
Active Databases in the DAG (активных баз данных в DAG) | 28 |
Number of active databases per server (Число активных баз данных на сервер) | 7 |
Number of passive databases per server (Число пассивных баз данных на сервер) | 7 |
Number of mailboxes per database (Число почтовых ящиков на базу данных) | 571 |
Internal Server memory (Внутренняя память сервера) | 22 GB |
MaximumDatabase size (Максимальный размер базы данных) | 414 GB |
Maximumnumber of Log files (Максимальное число файлов журнала) | 23 GB |
Database plus Log files LUN size (размер LUN, состоящего из базы данных и файлов журнала) | 598 GB (RAID-10) |
Database IOPS (per database) (Операций ввода/вывода в секунду для базы данных (на одну базу данных)) | 32 |
Log File IOPS (per database) (Операций ввода/вывода в секунду для файла журнала (на одну базу данных)) | 7 |
CPU Megacycle Requirements (Требования к количеству мегациклов у процессора) | 3840 MCycles |
Restore LUN (Восстановление LUN) | 546 GB (RAID-5) |
Итак, согласно калькулятору требований каждая база данных будет генерировать 32 IOPS, что означает всего 234 IOPS на сервер (для активных баз данных). Теперь все это интересно проверить.
Microsoft предлагает два инструмента для тестирования среды Exchange 2010:
- Jetstress ' Jetstress – это инструмент, позволяющий подвергнуть серьезной нагрузке вашу подсистему хранения, позволяя проверить максимальную производительность. Используйте Jetstress перед построением среды Exchange. Загрузить Jetstress можно с сайта Microsoft.
- Loadgen ' Loadgen – это инструмент, позволяющий подвергнуть нагрузке среду Exchange. Используйте Loadgen после построения среды Exchange. Loadgen тоже можно загрузить с сайта Microsoft. Текущая версия (На апрель 2010) все еще бета, но согласно обещаниям Microsoft, финальная версия не будет сильно отличаться от бета-версии.
Чтобы протестировать почтовые серверы, я воспользовался вышеприведенными значениями на устройстве хранения HP Lefthand P4100 iSCSI. Объект Lefthand настраивается с двумя наборами RAID-5 (в каждом по 6 дисков). Серверы запускаются на HP DL380G6, iSCSI подключается через два сетевых пути.
Каждый сервер оборудуется 7 LUN’ами, где хранятся и почтовые базы данных, и файлы журнала. Поскольку я был ограничен по времени в данном конкретном тесте, у меня не было возможности протестировать среду DAG, поэтому я протестировал только односерверную среду (с 4 000 почтовых ящиков).
JetStress
Первые тесты проводились с помощью Jetstress. Как уже пояснялось ранее, Jetstress был разработан для тестирования подсистемы хранения. Установите Windows Server 2008 (или R2), настройте хранилище и установите Jetstress на сервере. Jetstress требует некоторых ESE-файлов для движка базы данных (ese.dll, eseperf.dll, eseperf.hxx и eseperf.ini), поэтому скопируйте эти файлы с установочного DVD Exchange в каталог Jetstress на сервере, и будете готовы к запуску.
Запустите инструмент JetStress и выберите 'start a new test'. Выполняйте указания мастера, чтобы создать конфигурацию для тестирования. Вы можете выбирать между тестированием пропускной способности дисковой системы и Exchange Mailbox Profile. Выберите 'disk system throughput' и продолжайте работать с мастером. В окне 'Select Capacity and Throughput' есть опция, позволяющая автоматически подстраивать Jetstress, которая включена по умолчанию. Однако эта функция время от времени работает неправильно по неизвестной причине (к сожалению), поэтому лучше ее отключить (просто уберите отметку) и вручную увеличить число потоков.
Рисунок 1: Отключение автонастройки и ручное увеличение числа потоков
Далее в мастере выберите продолжительность теста. Минимальное время, которое можно выбрать, — это 2 часа, хотя вы и можете вручную ввести 1 час. В окне Database Configuration введите число баз данных, а также местоположение каждой базы данных и путь к файлу журнала.
Если вы в первый раз запускаете JetStress, ему нужно создать базы данных в определенных местах. Будьте готовы к тому, что это может занять огромнейшее количество времени, в некоторых случаях более 24 часов! В окне Review and Execute Test вы можете выбрать 'Prepare test'(Подготовить тест), и в этом случае начнут создаваться базы данных. Если базы данных уже созданы, можно нажать 'Execute test', и Jetstress начнет работу. Чтобы отследить происходящее, вы можете запустить Performance Monitor и посмотреть на физические показатели дисков, которые проходят проверку с помощью JetStress. Более подробную информацию о мониторинге дисковых показателей можно найти на сайте Microsoft.
Когда Jetstress заканчивает свою работу, он показывает, пройден ли тест успешно или нет. Если он завершился неудачно, пороги связанных с диском счетчиков находятся выше рекомендуемых требований, если он завершился успешно, пороги ниже рекомендуемых значений. Jetstress также делает обзор этих счетчиков и их значений:
Рисунок 2: Страница результатов Jetstress частично.
На Рисунке 2 ясно видны достигаемые показатели ввода/вывода и счетчики производительности, показываемые JetStress. Для целей удобочитаемости некоторые счетчики были опущены. Очевидно, что, хотя мы тестировали только одну почтовую базу данных, подсистема хранения способна обрабатывать больше IOPS, чем мы изначально вычислили.
LoadGen
Loadgen – это инструмент, который можно использовать для тестирования всей среды Exchange после построения сети Exchange. Согласно проекту почтовый сервер подключен к 7 LUN'ам, при этом создается 7 баз данных. Для данного теста база данных и соответствующие файлы журнала располагаются на одних и тех же дисках.
Итак, когда вы решили, что ваша подсистема хранения способна обрабатывать ожидаемую нагрузку, вы можете построить сервер Exchange в соответствии с вашим проектом. Установите LoadGen на клиентском сервере и по завершении установки можно запускать утилиту LoadGen. Следуйте указаниям мастера, чтобы запустить новый тест и создать новую конфигурацию тестирования.
Введите продолжительность 'simulation day'(дня симуляции), введите авторизационные данные аккаунта, которые использует утилиту (по умолчанию используется аккаунт администратора), и продолжайте управление получателем. Сейчас вы должны увидеть 7 баз данных, созданных нами ранее, и ввести число почтовых ящиков на базу данных. В нашей тестовой среде мы вводим 571 ящика на базу данных (всего получается 3997 почтовых ящиков на сервере).
При желании вы можете выбрать опцию использовать Dynamic Distribution Groups, использовать внутренние или внешние контакты.
Настройки 'test user group' имеют большое значение, потому что именно здесь вы определяете профиль использования. Вы можете выбрать тип клиента (например, Outlook 2007 в режиме кэширования), профиль использования и размеры почтовых ящиков. Можно начать с легкого профиля и усиливать профиль в последующих тестах. Можно также создать множество типов клиентов и использовать его одновременно.
Если у вас несколько клиентов LoadGen, вы можете настроить удаленные конфигурации, и тесты LoadGen будут выполняться с множества клиентских машин.
Последним шагом тут становится инициализация теста, при этой инициализации будут созданы 7 почтовых баз данных. Как и в случае с JetStress, это занимает огромное количество времени, до 24 часов. После того, как базы данных будут созданы, вы можете запускать LoadGen, который будет симулировать рабочий день.
LoadGen не отслеживает и не показывает счетчики, как JetStress, поэтому вам будет нужно настроить Performance Monitor на запись различных счетчиков.
Увеличить
Рисунок 3: Показатели производительности при запуске LoadGen. Для целей удобочитаемости данные от MDB05, MDB06 и MDB07 удалены
Заключение
Для грамотного проектирования среды хранения вы можете использовать Storage Requirements Calculator. Для целей данной статьи я протестировал один почтовый сервер с 4000 почтовых ящиков, распределенных между 7 почтовыми базами данных. С помощью инструмента Jetstress вы можете протестировать вашу подсистему хранения, а с помощью LoadGen вы можете протестировать конечные установки сервера Exchange.
Использование этих средств поможет вам заранее ясно увидеть, как будет себя вести ваш почтовый сервер.