Microsoft Exchange 2010 zmniejszenie rozmiaru bazy

This post is also available in: angielski

Jak wiadomo w Microsoft Exchange rozmiar bazy po usunięciu skrzynek nie zmniejsza się lecz pozostaje taki sam.
Powstaje natomiast w bazie „luka” tzw. White Space który informuje nas o ilości dostępnego miejsca, które może być wykorzystane bez potrzeby powiększenia rozmiaru pliku bazy .edb.
Dopiero po wypełnieniu White Space, dalszy przyrost rozmiaru skrzynek w bazie, spowoduje zwiększanie rozmiaru pliku .edb.

W przypadku baz Microsoft Exchange rozwiązanie takie jest kłopotliwe, ponieważ aby zmniejszyć rozmiar pliku .edb po usunięciu skrzynek z bazy przeważnie musimy użyć narzędzia  ESEUTIL za pomocą, którego wykonywaliśmy defragmentację bazy.
Operacja taka miała swoje wady, ponieważ niosła za sobą ryzyko uszkodzenia bazy, oraz na czas defragmentacji baza musiała być odmontowana co powodowało brak dostępu do skrzynek.
Czas defragmentacji jest dość długi, średnio 5-7GB defragmentowane jest w czasie 1h. Dlatego defragmentacja przeciętnej bazy trwała około 24h.

Aby zapewnić użytkownikom ciągłość dostępu do skrzynek podczas zmniejszania rozmiaru bazy, możemy w Microsoft Exchange 2010 utworzyć nową bazę, następnie przenieść wszystkie skrzynki ze zbyt dużej bazy do nowej bazy, po czym usunąć starą bazę.
Dzięki temu rozmiar nowej bazy będzie odpowiadał sumie rozmiarów znajdujących się w niej skrzynek, a wolne miejsce White Space zostanie wyeliminowane.
Dzięki temu możemy uzyskać znaczny spadek rozmiaru pliku .edb a co za tym idzie przyśpieszyć backup serwer Exchange.

Kolejność czynności przy przenoszeniu skrzynek do innej bazy w Microsoft Exchange 2010 DAG:

Upewniamy się czy baza ze skrzynkami którą chcemy zmniejszyć ma dużo wolnej przestrzeni White Space. Jeżeli ilość wolnego miejsca jest mniejsza niż 10GB to przy założeniu że baza zajmuje 100GB cała operacja raczej nie ma sensu.

White Space (AvailableNewMailboxSpace) sprawdzamy za pomocą PowerShella:

Get-MailboxDatabase BIGDatabse -Status | select Name, DatabaseSize, AvailableNewMailboxSpace

 

Kolejnym krokiem jest utworzenie nowej bazy do której zostaną przeniesione skrzynki.

W tym celu na serwerze gdzie ma być utworzona nowa baza, przygotowujemy strukturę folderów z odpowiednimi ścieżkami oraz odpowiednią ilością miejsca na nową bazę.
To samo wykonujemy dla serwerów gdzie będą znajdowały się kopie bazy w środowisku DAG.

Nową bazę tworzymy na serwerze gdzie ma być przetrzymywana Aktywna kopia bazy.

Bazę możemy utworzyć w EMC (Exchange Management Console), rozwijając drzewo po lewej stronie, Organization Configuration, następnie Mailbox, gdzie wybieramy New Mailbox Database . Nastepnie wpisujemy nazwę bazy, serwer na którym baza ma być umieszczona, określamy ścieżki dla pliku bazy .edb oraz dla logów.

Drugim sposobem utworzenia nowej bazy jest użycie komend PowerShell.

Utworzenie nowej bazy:

New-MailboxDatabase -Server 'EX2010_01' -Name 'NowaBaza' -EdbFilePath 'P:\MountPoints\NowaBaza\EDB\NowaBaza.edb' -LogFolderPath 'L:\MountPoints\NowaBaza\Logs'

Dla zapewnienia większej wydajności zalecane jest aby plik bazy .edb znajdował się na innym dysku niż pliki logów tej bazy.

Montowanie bazy:

mount-database -Identity 'NowaBaza'

 

Po upewnieniu się, że nowa baza jest w stanie Mounted, przystępujemy do utworzenia kopii bazy na innym serwerze należącym do DAG.

Czynność tę również możemy wykonać w EMC (Exchange Management Console) jak i w EMS (Exchange Management Shell).

Otwieramy konsole PowerShell i wpisujemy:

Add-MailboxDatabaseCopy -Identity 'NowaBaza' -MailboxServer 'EX2010_02' -ActivationPreference '2'

Activationpreference określa kolejność montowania baz na serwerach, cyfra 2 oznacza że jest to kopia bazy aktywnej znajdującej się na innym serwerze. Dla aktywnej bazy wartość ta wynosi 1, jeżeli przy tworzeniu kopii bazy wybralibyśmy 1 wówczas, aktywna baza została by zamieniona na kopię.

Dla utworzonej bazy ustawiamy dodatkowo w jej właściwościach:

  • wartości Limitów wielkości skrzynek dla bazy (Quota)
  • określamy domyślny folder publiczny oraz książkę adresową OAB – zakładka Client Settings
  • Maintenance – okno czasowe podczas którego przeprowadzane są różne operacje na bazie

Dodatkowo jeżeli w naszym środowisku używamy innych aplikacji lub serwerów, które mają mieć dostęp do danych znajdujących się w bazie (np.: serwer BlackBerry), musimy nadać odpowiednie dostępy:

get-mailboxdatabase –identity “NowaBaza” | add-adpermission –user <service account> -extendedrights receive-as,send-as

 

Po utworzeniu nowej bazy, oraz określeniu lokalizacji jej kopii, kolejną czynnością jest przeniesienie skrzynek ze starej bazy do nowej.

Jak zwykle operację tę możemy wykonać za pomocą konsoli EMC lub EMS.

W przypadku konsoli EMC (Exchange Management Console), przechodzimy do sekcji Recipients, gdzie ustawiamy sobie filtr widoku tak aby wyświetlone zostały tylko skrzynki znajdujące się w starej bazie. Następnie zaznaczamy wszystkie skrzynki i po prawej stronie wybieramy New Local Move Request… po czym określamy limit „złych” wiadomości które mogą zostać pominięte zanim operacja przenoszenia skrzynki zostanie przerwana.
Wybieramy utworzoną przez nas bazę jako docelową i czekamy aż skrzynki się przeniosą.

Przeniesienie skrzynek za pomocą konsoli EMS:

O wiele szybszym sposobem na przeniesienie skrzynek jest skorzystanie z poleceń PowerShell dostępnych w konsoli Exchange Management Shell.

Aby przenieść wszystkie skrzynki znajdujące się w starej bazie do nowej wykonujemy polecenie:

Get-Mailbox –Database ‘BazaStara’ | New-MoveRequest –TargetDatabase ‘NowaBaza’

Dzięki temu uruchomione zostaną zadania przenoszenia wszystkich skrzynek do nowej bazy.
Aby podglądnąć ile w danym momencie jest przeprowadzanych operacji przenoszenia skrzynek wpisujemy polecenie:

Get-MoveRequest –MoveStatus InProgress

Jeżeli również chcemy określić ilość złych wiadomości które mogą zostać pominięte podczas przenoszenia bazy wówczas należy dodatkowo użyć opcji BadItemLimit

Opcja ta pozwala na pominięcie od 1 do 50 wiadomości, jeżeli sytuacja wymaga pominięcia większej ilości wiadomości wówczas musimy dodatkowo użyc:

-AcceptLargeDataLoss

Get-Mailbox –Database ‘BazaStara’ | New-MoveRequest –TargetDatabase ‘NowaBaza’ -BadItemLimit 100 -AcceptLargeDataLoss

Oczywiście cały proces przenoszenia możemy też śledzić w konsoli graficznej EMC.

Należy pamiętać o domyślnych ograniczeniach serwera Microsoft Exchange 2010 odnośnie ilości jednoczesnych operacji przenoszenia skrzynek do tej samej bazy. Domyślnie wartośc ta wynosi 2.

Jeżeli przenosimy większą ilość skrzynek i chcemy zwiększyć ten limit wówczas na serwerze edytujemy plik:

C:\Program Files\Microsoft\Exchange Server\V14\Bin\MSExchangeMailboxReplication.exe.config

Odnajdujemy linię z wpisem:

MaxActiveMovesPerTargetMDB = "2"

i zmieniamy tą wartość na większą pamiętając, że większa ilość jednoczesnych operacji przenoszenia skrzynek dodatkowo obciąża serwer.

W przypadku przenoszenia skrzynek pomiędzy bazami w Exchange 2010, użytkownik nie traci dostępu do swojej skrzynki.

Po upewnieniu się, że wszystkie skrzynki zostały przeniesione możemy wyłączyć kopie starej bazy, następnie ją odmontować i usunąć.

 

Print Friendly
Otagowany , , , , , , , .Dodaj do zakładek permalink.

3 Responses to Microsoft Exchange 2010 zmniejszenie rozmiaru bazy

  1. Pingback:Exchange 2010 databases tworzenie wolnego miejsca white space - ExchangeBlog

  2. Pingback:Exchange 2010 zwiększający się rozmiar bazy - ExchangeBlog

  3. Pingback:Czyszczenie Exchange 2010 « blog Daniela

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>