You are here

Exchange – не подключается база из за ошибок - Database error Disk IO error - event id 482, 206, 1159, 1160, 739 и The exchange store DB is limited to 1024GB – event id 1216, 9685, 9690


Exchange – не подключается база из за ошибок - Database error Disk IO error - event id 482, 206, 1159, 1160, 739 и The exchange store DB is limited to 1024GB – event id 1216, 9685, 9690

Привет. Столкнулись с ситуацией – нежданно-негаданно отвалился Mailbox Database в Exchange 2010, из-за ошибок, указанных в заголовке. Хочу рассказать, что было в нашем случае, и как подобное можно решить.

Само собой сразу после того, как база отвалилась, попробовали её примонтировать, но безрезультатно, сразу после монтирования статус у базы снова становился Dismounted. Конечно, первым делом изучили логи. Обнаружили там занимательные записи:

Source: ExchangeStoreDB
ID: 206
Level: Error
Source: ExchangeStoreDB
Message: At ‘9/26/2012 8:48:36 PM’ database copy ‘DB’ on this server appears to have a serious I/O error. To help identify the specific failure, consult the Event log on the server for other storage and “ExchangeStoreDb” events. Service recovery was attempted by failover to another copy. Failover was unsuccessful in restoring the service. Error: Couldn’t perform the database failover.

Так же может встретится что-то вроде:

Source: ESE
Event ID: 739
Task Category: General
Level: Error
Description:
Information Store (5652) TestDB: The NTFS file attributes size for database ‘F:\TestDB\TestDB.EDB’ is 243136 bytes, which exceeds the threshold of 204800 bytes. The database file must be reseeded or restored from a copy or backup to prevent the database file from being unable to grow because of a file system limitation.

Проблема тут кроется не в самой базе, как таковой - база цела и невредима, а в файловой системе. Точнее в ее ограничениях. У каждого файла есть такой параметр, как Attribute List Size, так вот он не может быть больше 256КБ. И заполняется этот параметр тем быстрее, чем меньше установлен размер кластера на разделе, где находится база. Уменьшаться он не может. И когда он заполнится, база просто не сможет расти и будет отключена. Кроме того, есть еще такой параметр, как количество фрагментов для каждого файла, и этот параметр не может превышать примерно 1500000 фрагментов. Более подробно про данные штуки можно почитать ]]>тут]]> и ]]>тут]]>, по этому особо не буду останавливаться на теории. Скажу только, что данные ограничения связаны со скоростью работы дисков и принципами работы NTFS. Чем больше у вас будет фрагментов, тем дольше будут происходить операции ввода и вывода на диск. И вот если они приблизятся к указанным значениям, то нагрузка может стать критичной.

Как быть? Сперва необходимо убедиться, что проблема действительно связана с Attribute List Size или в количестве фрагментов.

Для этого можно выполнить команду:

eseutil /ms f:\data\DB.edb

В выводе можно будет увидеть примерно следующее:

Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 14.01
Copyright (C) Microsoft Corporation. All Rights Reserved.
Initiating FILE DUMP mode...
Error: Access to source database 'f:\data\DBName.edb' failed with Jet error -1032.
File Information:
  File Name: f:\data\DB.edb
  Volume Name: Drive2
  File System: NTFS
  Cluster Size: 4096 bytes
  Attribute List Size: 256 KB
  Extents Enumerated: 1157172

Если в выводе Attribute List Size меньше 256КБ или Extents Enumerated меньше примерно 1500000, то проблема у вас не вышеописанном. Если же что то совпадает, то это наш случай.

Для исправления ситуации бессмысленно делать дефрагментацию на диске и базе. Единственный способ – скопировать базу на другой диск, что бы все данные записались последовательно. Желательно сразу на раздел с рекомендованным размером кластеров, как минимум в 64КБ (кстати, это является рекомендацией Microsoft, для Exchange). После этого, если планируете оставить оригинальный диск его необходимо отформатировать с размером сектора 64КБ и скопировать базу обратно.

Форматирование делается командой:

 format F: /q /y /fs:ntfs  /v:VolumeName /a:64K 

Если вы не хотите перемещать базу на оригинальный диск, то указать путь до нового расположения Mailbox Database можно командой:

move-databasepath -identity DB -edbfilepath "путь_до_edb" -configurationonly

Как вы могли заметить в заголовке у меня указано 2 ошибки. После того как мы скопировали так базу, она успешно примонтировалась, но в логах обнаружилось следущее:

Source: MSExchangeIS Mailbox Sore.
Event ID: 9685
Exchange store 'DB': The current physical size of this database (the .edb file) is 1247 GB. This database has exceeded the size limit of 1024 GB. However, the logical free space in this database has not yet been evaluated. Therefore, it is possible that this database contains enough free space to bring its logical size below the maximum size limit.

Либо может быть зафиксировано аналогичное событие:

Event ID: 1216
The Exchange store DB is limited to 1024 GB. The current physical size of this
database (the .edb file) is <1 GB. If the physical size of this database minus its
logical free space exceeds the limit of 1024 GB, the database will be dismounted on a
regular basis.

При подобных событиях, база если и примонтируется, то, скорее всего, не на долго. В Exchange есть заданное ограничение на размер базы – 1ТБ, если база разрастется выше этого предела, то она просто будет отмонтирована. При достижении лимита может быть зафиксировано событие – 9690.

К счастью, этот лимит можно поднять до 2ТБ, возможно и до большего значения, но официально поддерживаются именно базы размером до 2 ТБ. Для этого:

Определим guid нашей базы:

Get-MailboxDatabase DB | fl guid

Дальше в реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\Имя_Сервера\Private-[ваш_guid] нужно создать параметр Dword, если его нет - "Database Size Limit in GB" и ввести нужное значение максимального размера.

Exchange – не подключается база из за ошибок - Database error Disk IO error - event id 482, 206, 1159, 1160, 739 и The exchange store DB is limited to 1024GB – event id 1216, 9685, 9690

Информация по второй проблеме взята ]]>отсюда]]>.

0 0

Share the article with your friends in social networks, maybe it will be useful to them.


If the article helped you, you can >>thank the author<<