IT & IoT Security | Cloud | It's all about the life itself

Nothing in life is as important as you think it is, while you are thinking about it.

Exchange Server 2010, Mailbox’ların eşit şekilde “move” edilmesine dair

Merhaba,

Bu yazımda, Exchange Server 2010 Mailbox database’lerinde saklanan mailbox’ların “move” işlemine dair bir kaç ems cmdlet’inden bahsetmek istiyorum.

Geçenlerde bir Mailbox DB içindeki binlerde mailbox’ı, whitespace’ı geri kazanmak amacıyla yeni açtığım 4 adet mailbox database’e yayarak “move” etmek istedim. GUI’den yapmak isterseniz zaten kolay bir işlem herkesin bildiği üzere. Daha hızlı ve az efor ile shell’den yapmak için TechNet’e gezindim. Bulduğum cmdlet’leri ve script blok’larını ihtiyacım doğrultusunda derledim.

Test’lerimi test ortamımda yapmıştım. Test ortamımda, Exchange Server 2010 ve Service Pack 3 kurulu durumda.

$mbxs = Get-Mailbox -database “User-AZ” | select -first 100

$dbs = “User-AZ-1″,”User-AZ-2″,”User-AZ-3”

foreach ($n in 0..($mbxs.count -1)){

New-MoveRequest $mbxs[$n] -TargetDatabase $dbs[($n%3)] -BadItemLimit ’10’ }

Üstteki code bloğu ile : User-AZ isimli mailbox database’i içindeki mailbox’ları bir değişkene alıyoruz. Bu değişkene alınan mailbox’lardan ilk 5 tanesini User-AZ-1,User-AZ-2,User-AZ-3 isimli 3 adet mailbox database’e eşit olacak şekilde yayarak “move” edebiliyoruz. (tek sayı çift sayı seçimi önemli değil, ilk 6 tanesini alsam 2+2+2 dağıtıyor, ilk 5 tanesini alınca 2+2+1)

Aşağıda ise üstteki code bloğunun biraz değiştirilmişi mevcut.

$mbxs = Get-Mailbox -database “User-AZ”

$dbs = “User-AZ-1″,”User-AZ-2″,”User-AZ-3”,”User-AZ-4”

foreach ($n in 0..($mbxs.count -1)){

New-MoveRequest $mbxs[$n] -TargetDatabase $dbs[($n%4)] -BadItemLimit ’10’ }

Üstteki code bloğunda ile : User-AZ isimli mailbox database’i içindeki mailbox’ları bir değişkene alıyoruz. Ardında User-AZ içindeki tüm mailbox’ları bir alt satırdaki 4 adet mailbox’a eşit olarak dağıtıyoruz. İşlem bittikten sonra EMC’den yada EMS’den Move Request’leri silmeyi unutmayınız!

Eğer komutu test etmek isterseniz –whatif anahtarını kullanabilirsiniz. Örnek aşağıdaki gibi.

$mbxs = Get-Mailbox -database “User-AZ”

$dbs = “User-AZ-1″,”User-AZ-2″,”User-AZ-3”,”User-AZ-4”

foreach ($n in 0..($mbxs.count -1)){

New-MoveRequest $mbxs[$n] -TargetDatabase $dbs[($n%4)] -BadItemLimit ’10’ –whatif }

Bu anahtar ile komutu çalıştırmadan bir test yapmak mümkün 🙂

Ardından User-AZ isimli mailbox database’ine ait dosyaları ilgili path’lerden silebiliriz! Böylece whitespace’ı kazanmış oluruz.

clip_image002

Üstteki resim’de –whatif ile bir alıntı mevcut.

Aktaracağım mailbox’lara dair ilk durum görüntüsü aşağıdaki gibi.

clip_image003

Şimdi code bloğunu çalıştırayım. Bu arada bu code’u ps1 dosyası yapmak uygun olacaktır.

clip_image005

Move-Request’ler yapıldı. Kuyruğa alındı.

clip_image006

İşlemin sonucuna dair aşağıda EMC’den bir görüntü mevcut.

clip_image007

İşlem tamamlandı. 13 user, 4 mailbox database’e 4+3+3+3 şeklinde dağıtılmış.

Whitespace’i geri kazanmak adına offline defragmentation’da yapılabilir ama önerilmiyor. Özellikle DAG yapısında önerilmiyor! Dolayısıyla “move” işlemi önemli ve önerilen işlem durumunda.

Herkese sorunsuz ve neşeli günler dilerim.