Exchange Server 2019 Mailbox Taşıma Hatası ve Disk Dolma Problemi
Exchange Server 2019 ortamında mailbox taşıma (migration) sırasında karşılaşılan disk dolma, move request hataları ve database mount problemleri sistem yöneticilerinin en sık karşılaştığı kritik sorunlardır. Bu kapsamlı rehberde, gerçek bir senaryo üzerinden sorunun kök nedenini ve kalıcı çözümünü adım adım açıklıyoruz.
Problem Senaryosu
Exchange Server 2019 ortamında kullanıcı mailbox’larını yeni bir database’e taşırken aşağıdaki sorunlar oluşur:
- Disk alanı hızla dolar
- Move request işlemleri fail olur
- Database mount edilemez
- Database “Dirty Shutdown” durumuna geçer
- Transaction log dosyaları kontrolsüz büyür
Örnek Hata Mesajı:
MapiExceptionNoSupport: Unable to write mailbox info
MapiExceptionDatabaseError (ec=1108)
Move Request Status: Failed
Sorunun Ana Sebebi
Mailbox taşıma işlemi sırasında Exchange Server şu işlemleri gerçekleştirir:
- Kaynak database’den veri okur
- Hedef database’e veri yazar
- Yoğun şekilde transaction log üretir
Eğer sistemde:
- Yeterli disk alanı yoksa
- Exchange-aware backup alınmıyorsa
- Circular logging kapalıysa
Transaction log dosyaları (.log) hızla büyür ve disk tamamen dolar.
Disk Dolunca Ne Olur?
Exchange Server disk dolduğunda domino etkisi yaratır:
- Yeni transaction log yazılamaz
- Database işlemleri tamamlanamaz
- Database Dirty Shutdown olur
- Mailbox taşıma işlemleri durur
- Mail akışı kesintiye uğrar
Önemli: Bu durum sadece disk problemi değil, tüm Exchange servislerini etkileyen kritik bir hatadır.
En Kritik Hata: Toplu Mailbox Taşıma
Sistem yöneticilerinin yaptığı en büyük hata:
Aynı anda çok sayıda mailbox taşımak
Bunun nedenleri:
- Her mailbox taşıma işlemi log üretir
- Büyük mailbox (5GB+) daha fazla log üretir
- Disk çok kısa sürede dolar
- Sistem çöker
Adım Adım Kesin Çözüm
Adım 1: Move Request Temizleme
İlk olarak başarısız tüm move request’leri temizleyin:
Get-MoveRequest | Remove-MoveRequest -Confirm:$false
Sadece failed olanları temizlemek için:
Get-MoveRequest -MoveStatus Failed | Remove-MoveRequest -Confirm:$false
Adım 2: Disk Alanı Açma
En güvenli yöntem:
- Exchange-aware backup alın (Windows Server Backup veya 3. parti çözüm)
- Backup sonrası transaction log’lar otomatik truncate olur
Alternatif (geçici):
- Eski log dosyalarını manuel silin (riskli)
- Başka bir diske taşıyın
Adım 3: Geçici Çözüm – Circular Logging
Uyarı: Bu yöntem sadece acil durumlarda kullanılmalıdır. Circular logging aktifken point-in-time recovery yapılamaz.
Set-MailboxDatabase "Mailbox Database Unlimited" -CircularLoggingEnabled $true
Restart-Service MSExchangeIS
İşlem tamamlandıktan sonra mutlaka kapatın:
Set-MailboxDatabase "Mailbox Database Unlimited" -CircularLoggingEnabled $false
Restart-Service MSExchangeIS
Adım 4: Database Mount Etme
Disk alanı açıldıktan sonra database’i mount edin:
Mount-Database "Mailbox Database Arsiv"
Eğer mount edilmiyorsa durumu kontrol edin:
Get-MailboxDatabase -Status | Select Name, Mounted, DatabaseSize
Adım 5: Mailbox Taşıma (Doğru Yöntem)
Önce tek kullanıcı ile test edin:
New-MoveRequest -Identity "user@domain.com" -TargetDatabase "Mailbox Database Yonetim"
Durumu kontrol edin:
Get-MoveRequest -Identity "user@domain.com" | Get-MoveRequestStatistics
Adım 6: Büyük Mailbox Taşıma
5GB üzeri mailbox’lar için:
New-MoveRequest -Identity "user@domain.com" `
-TargetDatabase "Mailbox Database Yonetim" `
-BadItemLimit 50 `
-AcceptLargeDataLoss `
-Priority High
Adım 7: Batch Taşıma (Küçük Mailbox’lar İçin)
Maksimum 5 kullanıcı ile batch oluşturun:
$users = @("user1@domain.com", "user2@domain.com", "user3@domain.com")
foreach ($user in $users) {
New-MoveRequest -Identity $user -TargetDatabase "Mailbox Database Yonetim"
}
Doğru Migration Stratejisi
| Durum |
Öneri |
Açıklama |
| Küçük mailbox (<2GB) |
Batch (5 kullanıcı) |
Aynı anda 5 kullanıcı taşınabilir |
| Orta mailbox (2-5GB) |
Batch (2-3 kullanıcı) |
Daha dikkatli ilerleme |
| Büyük mailbox (>5GB) |
Tek tek taşıma |
Her kullanıcı ayrı ayrı |
| Disk alanı |
Min. 100-200 GB boş |
Log büyümesi için rezerv |
| Log yönetimi |
Günlük backup |
Otomatik log truncate |
Profesyonel Tavsiyeler
Best Practices
- Database ve log dosyalarını farklı disklerde tutun (performans ve güvenlik)
- Exchange backup çözümü mutlaka kullanın (Veeam, Acronis, Windows Server Backup)
- Mailbox boyut limitleri belirleyin (ProhibitSendReceiveQuota)
- Archive database ayrı yapılandırın (eski mailleri archive’a taşıyın)
- Disk monitoring sistemi kurun (PRTG, Zabbix, Nagios)
- Migration öncesi disk alanı hesaplayın (toplam mailbox boyutu x 1.5)
Disk İzleme PowerShell Script
# Disk doluluk kontrolü
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='E:'" |
Select-Object @{Name="FreeGB";Expression={[math]::Round($_.FreeSpace/1GB,2)}}
if ($disk.FreeGB -lt 50) {
Send-MailMessage -To "admin@domain.com" `
-Subject "UYARI: Exchange Disk Dolmak Üzere" `
-Body "Kalan alan: $($disk.FreeGB) GB" `
-SmtpServer "mail.domain.com"
}
Transaction Log Boyutu Kontrol
Get-MailboxDatabase | ForEach-Object {
$logPath = (Get-MailboxDatabase $_.Name).LogFolderPath
$logSize = (Get-ChildItem $logPath -Filter "*.log" | Measure-Object -Property Length -Sum).Sum / 1GB
[PSCustomObject]@{
Database = $_.Name
LogSizeGB = [math]::Round($logSize, 2)
}
} | Format-Table -AutoSize
Sonuç
Exchange Server 2019 mailbox taşıma problemlerinin büyük kısmı şu nedenlerden kaynaklanır:
- Disk yönetimi eksikliği
- Transaction log kontrolü yapılmaması
- Yanlış migration planı
- Backup sisteminin olmaması
Doğru planlama ile:
- Veri kaybı önlenir
- Sistem performansı korunur
- Migration sorunsuz tamamlanır
- Downtime minimize edilir
Hızlı Özet
- Disk dolarsa Exchange durur
- Mailbox taşıma işlemi yoğun transaction log üretir
- Toplu taşıma risklidir
- En güvenli yöntem: küçük batch + sürekli monitoring
- Backup sistemi şart
Daha Fazla Exchange Rehberi
Exchange Server yönetimi, güvenlik ve performans optimizasyonu hakkında daha fazla makale için sitemizi takip edin.
Sorularınızı yorumlara yazabilirsiniz!