AutoReseed nedir, neyi çözer?

DAG (Database Availability Group) üyesi bir sunucuda, bir veritabanı kopyasını taşıyan disk arızalanır ya da bozulursa, ilgili kopya FailedAndSuspended durumuna düşer. AutoReseed; ortamda hazır bekleyen yedek (spare) disk varsa, bu diski otomatik hazırlayıp (format/mount), veritabanı kopyasını yeniden tohumlayarak (reseed) yedekliliği insan müdahalesi olmadan geri getirir.
Kısacası: Dizayn doğruysa, disk arızası → spare diske otomatik geçiş → reseed → kopya tekrar sağlıklı.

Önemli not: AutoReseed fiziksel disk takma/çıkarma işini yapmaz. Donanım değişimi yine yöneticinin sorumluluğunda; AutoReseed, yazılım tarafındaki otomasyonu sağlar.

Temel çalışma mantığı

  1. MSExchangeRepl servisi periyodik olarak kopyaları tarar.
  2. Kopya FailedAndSuspended ise, hızlı “resume/suspend” denemelerinden sonuç alamazsa spare diski Disk Reclaimer ile hazırlar.
  3. Hedef mount point’e InPlaceSeed yapar (gerekirse var olan dosyaları güvenli temizleyerek).
  4. Kopya senkronize olur, Content Index toparlanır, DAG yedekliliği geri gelir.

Tasarımın kalbi: Dizayn ilkeleri ve klasör/mount şablonu

1. Standart kök yollar

AutoReseed’in beklediği varsayılan şablon:

  • C:\ExchangeVolumes → Tüm veri ve spare volume’lar bunun altında mount edilir.
  • C:\ExchangeDatabases → Her veritabanı için mount point klasörleri ve altında DB/LOG klasörleri burada yer alır.

2. Her DB için zorunlu klasör adlandırma

Her veritabanı için aynı isim kalıbı kullanılmalı:

C:\ExchangeDatabases\<DB_ADI>\<DB_ADI>.db
C:\ExchangeDatabases\<DB_ADI>\<DB_ADI>.log

Bu isim/konumlandırma kritiktir. Farklı isim ya da yol kullanırsanız AutoReseed tetiklenmez.

3. 1 DB = 1 Volume

Performans, izolasyon ve basitlik için en yaygın pratik: Her disk üzerinde tek bir DB (DB ve LOG aynı volümde).

  • Dosya sistemi: ReFS
  • Allocation Unit: 64K
  • RAID yerine JBOD (DAG ile birlikte ölçekli tasarım).

4. Spare (yedek) disk

Her DAG üyesinde en az 1 boş volume’u C:\ExchangeVolumes altında mount edilmiş ve kullanılmaya hazır tutun. Arıza anında AutoReseed bu diski otomatik devreye alır.

DAG üzerinde AutoReseed parametrelerini tanımlama

1. Kök yolları ve kapasite (DB/volume)

# DAG adınızı değiştirin
$Dag = "DAG01"

# Kök klasörler
Set-DatabaseAvailabilityGroup $Dag `
  -AutoDagDatabasesRootFolderPath "C:\ExchangeDatabases" `
  -AutoDagVolumesRootFolderPath   "C:\ExchangeVolumes"

# Her volume üzerindeki DB kopyası sayısı (öneri: 1)
Set-DatabaseAvailabilityGroup $Dag -AutoDagDatabaseCopiesPerVolume 1

# AutoReseed / Disk Reclaimer / Otomatik yeniden dağıtım
Set-DatabaseAvailabilityGroup $Dag `
  -AutoDagAutoReseedEnabled       $true `
  -AutoDagDiskReclaimerEnabled    $true `
  -AutoDagAutoRedistributeEnabled $true  # 2016+ varsayılan genelde true

Doğrulama:

Get-DatabaseAvailabilityGroup $Dag | fl *auto*

2. (İsteğe bağlı) BitLocker / MCDB

  • Diskleri şifreleyecekseniz DAG seviyesinde AutoDagBitlockerEnabled’ı planlayın.
  • Exchange 2019’un MCDB (Metacache DB) senaryolarında Disk Reclaimer/AutoReseed ilişkisini göz önünde bulundurun.

Sunucu tarafı hazırlık (her DAG üyesinde)

1. Kök klasörler

md C:\ExchangeDatabases
md C:\ExchangeVolumes

2. Volume’ları mount etme

Disk Yönetimi veya mountvol ile her veri ve spare disk için mount point oluşturun:

mountvol C:\ExchangeVolumes\Volume1 \\?\Volume{GUID-OF-VOLUME1}\
mountvol C:\ExchangeVolumes\Volume2 \\?\Volume{GUID-OF-VOLUME2}\
...

Hangi GUID hangi disk? mountvol çıktısından ya da Disk Yönetimi’nden görebilirsiniz.

3. Veritabanı mount point’leri

Örneğin 2 DB + 1 spare senaryosunda:

md C:\ExchangeDatabases\db001
md C:\ExchangeDatabases\db002

mountvol C:\ExchangeDatabases\db001 \\?\Volume{GUID-OF-VOLUME1}\
mountvol C:\ExchangeDatabases\db002 \\?\Volume{GUID-OF-VOLUME2}\

md C:\ExchangeDatabases\db001\db001.db
md C:\ExchangeDatabases\db001\db001.log
md C:\ExchangeDatabases\db002\db002.db
md C:\ExchangeDatabases\db002\db002.log

Spare volume için C:\ExchangeVolumes altında mount edili olması yeterli; AutoReseed gerektiğinde onu kullanacaktır.

Veritabanlarını şablona göre oluşturma (örnek)

New-MailboxDatabase `
  -Name "db001" `
  -Server "MBX01" `
  -EdbFilePath  "C:\ExchangeDatabases\db001\db001.db\db001.edb" `
  -LogFolderPath "C:\ExchangeDatabases\db001\db001.log"

# DAG’e kopya ekleme (klasik DAG operasyonu)
Add-MailboxDatabaseCopy -Identity db001 -MailboxServer MBX02 -ActivationPreference 2

Diğer DB’ler için aynı kalıbı uygulayın; ActivationPreference ile aktif olmasını istediğiniz sunucu sırasını belirleyin.

AutoReseed nasıl tetiklenir, nasıl izlenir?

1. İzleme komutları

# Genel kopya durumu
Get-MailboxDatabaseCopyStatus * |
  ft Name,Status,CopyQueueLength,ReplayQueueLength,ContentIndexState -Auto

# Reseed ilerleme bilgileri
Get-MailboxDatabaseCopyStatus * | ft Name,Status,DatabaseSeedStatus -Auto

2. Sağlık testleri

Test-ReplicationHealth

3. Olay günlükleri

Uygulama günlüğünde (Application) MSExchangeRepl ve ilgili kaynak adlarıyla AutoReseed/Disk Reclaimer adımlarını görebilirsiniz. Arıza → spare disk hazırlığı → reseed → tamamlanma akışı burada kayıt altına alınır.

Gerçek hayatta doğrulama/test (lab önerisi)

Üretimde kesinlikle önerilmez. Lab ortamında AutoReseed davranışını görmek için:

  • İlgili volume’ü offline edip kopyayı FailedAndSuspended durumuna düşürün.
  • Spare volume’un hazır olduğundan emin olun.
  • MSExchangeRepl birkaç denemeden sonra spare diski hazırlayıp reseed etmeli.
  • Get-MailboxDatabaseCopyStatus ile DatabaseSeedStatus alanından ilerlemeyi izleyin.

Sık yapılan hatalar ve pratik çözümler

1) AutoReseed hiç tetiklenmiyor

  • Klasör/isim şablonuna uymadınız:
    C:\ExchangeDatabases\<DB>\<DB>.db ve <DB>.log zorunlu.
  • DB ve LOG aynı volume üzerinde olmalı (tasarım gereği).
  • Spare disk C:\ExchangeVolumes altında mount edilmiş olmalı.

2) “Spare var ama kullanılmıyor”

  • Spare volume’ın içinde veri bırakmayın; boş olmalı.
  • Mount point yolunu ve izinleri kontrol edin.
  • Disk Reclaimer’ın zamanlaması nedeniyle kısa gecikmeler normaldir.

3) Reseed sonrası içerik indeksi (CI) sorunları

  • CI bazen yeniden oluşturulmayı isteyebilir: Update-MailboxDatabaseCopy DB01\MBX02 -CatalogOnly

4) Reseed kaynağını değiştirme (bant genişliği/mesafe)

Update-MailboxDatabaseCopy DB01\MBX02 -SourceServer MBX03 -DeleteExistingFiles

5) Manuel kurtarma gerekirse

Suspend-MailboxDatabaseCopy DB01\MBX02
Update-MailboxDatabaseCopy DB01\MBX02 -DeleteExistingFiles
Resume-MailboxDatabaseCopy  DB01\MBX02

Gelişmiş ayarlar ve ince ayar

  • Otomatik yeniden dağıtım sıklığı (2016+):
Set-DatabaseAvailabilityGroup DAG01 -PreferenceMoveFrequency 01:00:00
  • BitLocker:
    AutoReseed/DisK Reclaimer ile birlikte çalışacaksa DAG seviyesinde planlayın; yedek disklerin otomatik hazırlanması sürecinde etkileşim vardır.
  • MCDB (Exchange 2019):
    MCDB kullanıyorsanız disk planlamasını AutoReseed/DisK Reclaimer mantığına uygun yapın.

Kapasite ve operasyon planlama

  • Spare disk sayısı: En az 1 önerilir; birden fazla disk aynı anda arızalanırsa, spare sayısını artırın.
  • İzleme: Reseed trafiği, DAG replikasyon trafiği ve disk IO’yu izleyin (özellikle üretimde).
  • Bakım penceresi: Büyük reseed’lerde ağ/disk yoğunluğu artar; planlı bakım aralıkları tanımlayın.
  • Dokümantasyon: DAG ayarları, volume/DB eşleşmeleri, ActivationPreference değerleri ve runbook’u güncel tutun.

Örnek Topoloji

  • Sürüm: Exchange 2019/SE (AutoReseed + MCDB destekli).
  • DAG: DAG01
  • Sunucular: MBX01, MBX02, MBX03 (her DB için 3 kopya: 1 aktif + 2 pasif)
  • DB sayısı: 25 (DB01…DB25)
  • Disk modeli: 1 DB = 1 Volume (ReFS, 64K AU, JBOD)
  • Mount şablonu
    • Volume kökü: C:\ExchangeVolumes\VolumeXX
    • DB mount noktası: C:\ExchangeDatabases\DBXX
    • DB içi klasörler:
      • C:\ExchangeDatabases\DBXX\DBXX.db
      • C:\ExchangeDatabases\DBXX\DBXX.log
  • BitLocker: Veri ve MCDB volume’larında TPM+Recovery (anahtarları AD’ye/GPO ile yedekle)
  • MCDB (SSD): Her sunucuda en az 2 SSD volume (ör. MCDB01, MCDB02) – mount: C:\ExchangeMCDB\MCDB01, C:\ExchangeMCDB\MCDB02
  • Spare yaklaşımı: Fiziksel disk arızasında yedek (spare) volume tak-çalıştır. Windows’ta önceden C:\ExchangeVolumes\Spare01, Spare02 mount klasörlerini hazır tut (disk takılınca bu mount path’e bağlayacaksın). Böylece “25 diskli” başlangıçta korunur; arıza anında yeni disk takıp spare rolüyle bağlayarak AutoReseed’e yakıt verirsin.

Not: AutoReseed disk takıp bağlayınca çalışır. Boş “spare” volume’un mount path’i hazır olsa da fiziksel diskin gerçekten takılması gerekir.

Aktivasyon (ActivationPreference) Planı

Denge için 25 DB’i 3 sunucuya dağıt:

  • MBX01 aktif: DB01–DB09
  • MBX02 aktif: DB10–DB17
  • MBX03 aktif: DB18–DB25

Kopyalar karşı düğümlerde olacak (her DB’de toplam 3 kopya). ActivationPreference sıralamasıyla bunu netleştireceğiz.

DAG/AutoReseed/BitLocker/MCDB Tasarım Parametreleri

  • Kök dizinler:
    • C:\ExchangeDatabases
    • C:\ExchangeVolumes
    • (MCDB için) C:\ExchangeMCDB
  • DAG AutoReseed parametreleri:
    • AutoDagDatabasesRootFolderPath = C:\ExchangeDatabases
    • AutoDagVolumesRootFolderPath = C:\ExchangeVolumes
    • AutoDagDatabaseCopiesPerVolume = 1
    • AutoDagAutoReseedEnabled = $true
    • AutoDagDiskReclaimerEnabled = $true
    • AutoDagAutoRedistributeEnabled = $true
    • BitLocker: AutoDagBitlockerEnabled = $true (BitLocker politikalarını/GPO’yu hazırla)
  • Volume’lar: ReFS, 64K Allocation Unit, Label: EXVOL01…EXVOL25 (MCDB’ler SSD üzerinde: MCDB01…)

Güvenli Kurulum Sırası

  1. Hazırlık (00-VolumePrep.ps1)
    • Kök klasörleri oluştur.
    • Diskleri ReFS/64K biçimlendir, etiketle (EXVOL01–25).
    • İki mount path ver:
      • C:\ExchangeVolumes\VolumeXX (Disk Reclaimer’in beklediği)
      • C:\ExchangeDatabases\DBXX (DB’nin mount path’i)
    • Alt klasörler: DBXX.db, DBXX.log
    • BitLocker: TPM+Recovery ile etkinleştir, recovery anahtarlarını AD’ye gönder (GPO).
    • MCDB SSD’leri için mount path’leri hazırla ve şifrele.
  2. DAG/AutoReseed Ayarı (01-DAG-AutoReseed.ps1)
    • Yukarıdaki DAG parametrelerini ayarla.
  3. DB’leri oluştur/kopyala (02-DB-CreateAndCopy.ps1)
    • DB01–DB25’i (ör. MBX01 üzerinde) oluştur.
    • Kopyaları MBX02/MBX03’e ekle.
    • ActivationPreference’ı plana göre ayarla.
  4. Doğrulama (03-Validation.ps1)
    • Get-MailboxDatabaseCopyStatus / Test-ReplicationHealth
    • “DatabaseSeedStatus”, Event log’lar, BitLocker durumu.
    • Lab’da arıza senaryosu simülasyonu (mountvol offline/online) ile AutoReseed gözlemi.

PowerShell: 00-VolumePrep.ps1 (Sunucu başına)

Amaç: 25 veri volume’unu biçimlendir, mount et, DB klasörlerini oluştur, BitLocker’ı aç.
Girdi: Disk eşlemelerini bir CSV’de tut (her sunucu farklı olabilir).

CSV örneği (Server üzerinde çalıştırılacak):

DiskNumber,DbName,VolLabel
3,DB01,EXVOL01
4,DB02,EXVOL02
...
27,DB25,EXVOL25

Script:

param(
  [Parameter(Mandatory=$true)] [string]$CsvPath,
  [switch]$SkipFormat,     # Diskler önceden formatlıysa
  [switch]$SkipBitLocker   # BitLocker'ı sonra açmak istersen
)

$DbRoot = "C:\ExchangeDatabases"
$VolRoot = "C:\ExchangeVolumes"
$McdbRoot = "C:\ExchangeMCDB"

# Kök klasörler
$null = New-Item -ItemType Directory -Path $DbRoot  -ErrorAction SilentlyContinue
$null = New-Item -ItemType Directory -Path $VolRoot -ErrorAction SilentlyContinue
$null = New-Item -ItemType Directory -Path $McdbRoot -ErrorAction SilentlyContinue

# CSV yükle
$map = Import-Csv $CsvPath

function Ensure-Dir($p){ if(-not (Test-Path $p)){ New-Item -ItemType Directory -Path $p | Out-Null } }

foreach($row in $map){
  $diskNo   = [int]$row.DiskNumber
  $dbName   = $row.DbName.Trim()
  $label    = $row.VolLabel.Trim()

  $volPath1 = Join-Path $VolRoot ("Volume" + $dbName.Substring(2))   # Volume01…Volume25
  $dbPath   = Join-Path $DbRoot $dbName                              # C:\ExchangeDatabases\DB01

  Ensure-Dir $volPath1
  Ensure-Dir $dbPath

  # Alt klasörler
  Ensure-Dir (Join-Path $dbPath "$dbName.db")
  Ensure-Dir (Join-Path $dbPath "$dbName.log")

  if(-not $SkipFormat){
    $disk = Get-Disk -Number $diskNo -ErrorAction Stop
    if($disk.PartitionStyle -eq 'RAW'){
      Initialize-Disk -Number $diskNo -PartitionStyle GPT -PassThru | Out-Null
    }
    $part = Get-Partition -DiskNumber $diskNo -ErrorAction SilentlyContinue
    if(-not $part){
      $part = New-Partition -DiskNumber $diskNo -UseMaximumSize -IsActive:$true
    }
    # ReFS 64K
    Format-Volume -Partition $part -FileSystem ReFS -NewFileSystemLabel $label -AllocationUnitSize 65536 -Force -Confirm:$false
  }

  # Mount path 1 (C:\ExchangeVolumes\VolumeXX)
  $part = (Get-Partition -DiskNumber $diskNo | Sort-Object -Property Size -Descending | Select-Object -First 1)
  if(-not ($part.AccessPaths -contains $volPath1)){
    Add-PartitionAccessPath -DiskNumber $diskNo -PartitionNumber $part.PartitionNumber -AccessPath $volPath1
  }

  # Mount path 2 (C:\ExchangeDatabases\DBXX)
  if(-not ($part.AccessPaths -contains $dbPath)){
    Add-PartitionAccessPath -DiskNumber $diskNo -PartitionNumber $part.PartitionNumber -AccessPath $dbPath
  }

  if(-not $SkipBitLocker){
    # BitLocker: TPM + RecoveryPassword, anahtarı AD'ye yedeklemek için GPO kullanın.
    # Aşağıdaki komut, recovery parolasını otomatik oluşturur ve AD'ye yedekler (GPO doğru ise).
    # Alternatif: manage-bde -on $dbPath -RecoveryPassword
    try {
      $status = (Get-BitLockerVolume -MountPoint $dbPath -ErrorAction Stop)
      if($status.ProtectionStatus -eq 'Off'){
        Enable-BitLocker -MountPoint $dbPath -EncryptionMethod XtsAes256 -UsedSpaceOnly -TpmProtector -RecoveryPasswordProtector | Out-Null
        Write-Host "BitLocker başlatıldı: $dbName ($dbPath)"
      }
    } catch {
      Write-Warning "BitLocker hata: $dbName ($dbPath) -> $_"
    }
  }
}

# MCDB SSD volume'ları (elle/dışarıdan) ekleyeceksin; mount path'leri burada oluşturuluyor
1..2 | ForEach-Object {
  $p = Join-Path $McdbRoot ("MCDB{0:D2}" -f $_)
  Ensure-Dir $p
}
Write-Host "00-VolumePrep tamam."

Not: Disk numaraları/etiketler ortama göre değişir. MCDB SSD’lerini de benzer yöntemle biçimlendirip C:\ExchangeMCDB\MCDB01/02’ye mount edip BitLocker açın.

PowerShell: 01-DAG-AutoReseed.ps1

param(
  [string]$Dag = "DAG01",
  [string]$DbRoot = "C:\ExchangeDatabases",
  [string]$VolRoot = "C:\ExchangeVolumes"
)

Set-DatabaseAvailabilityGroup $Dag `
  -AutoDagDatabasesRootFolderPath $DbRoot `
  -AutoDagVolumesRootFolderPath   $VolRoot `
  -AutoDagDatabaseCopiesPerVolume 1 `
  -AutoDagAutoReseedEnabled       $true `
  -AutoDagDiskReclaimerEnabled    $true `
  -AutoDagAutoRedistributeEnabled $true `
  -AutoDagBitlockerEnabled        $true

Get-DatabaseAvailabilityGroup $Dag | fl Name,*auto*,AutoDag*
Write-Host "01-DAG-AutoReseed tamam."

PowerShell: 02-DB-CreateAndCopy.ps1

Amaç: DB’leri oluştur, kopyaları ekle, ActivationPreference ayarla.
Girdi: DB–Sunucu–Path haritası (CSV ya da kod içi tablo).

CSV örneği (her DB için EDB/LOG mount path’leri):

DbName,ActiveServer,EdbPath,LogPath
DB01,MBX01,C:\ExchangeDatabases\DB01\DB01.db\DB01.edb,C:\ExchangeDatabases\DB01\DB01.log
DB02,MBX01,C:\ExchangeDatabases\DB02\DB02.db\DB02.edb,C:\ExchangeDatabases\DB02\DB02.log
...
DB09,MBX01, ...
DB10,MBX02, ...
...
DB17,MBX02, ...
DB18,MBX03, ...
...
DB25,MBX03, ...

Script:

param(
  [Parameter(Mandatory=$true)] [string]$CsvPath,
  [string[]]$PassiveServers = @("MBX02","MBX03") # Sıra önemli değil, AP ile düzenleyeceğiz
)

$items = Import-Csv $CsvPath

foreach($row in $items){
  $db  = $row.DbName
  $act = $row.ActiveServer
  $edb = $row.EdbPath
  $log = $row.LogPath

  if(-not (Get-MailboxDatabase -Identity $db -ErrorAction SilentlyContinue)){
    New-MailboxDatabase -Name $db -Server $act -EdbFilePath $edb -LogFolderPath $log -IsExcludedFromProvisioning $false
    Mount-Database $db
  } else {
    Write-Host "$db zaten mevcut."
  }

  # Kopyaları ekle
  foreach($srv in $PassiveServers){
    if($srv -ne $act){
      if(-not (Get-MailboxDatabaseCopyStatus "$db\$srv" -ErrorAction SilentlyContinue)){
        Add-MailboxDatabaseCopy -Identity $db -MailboxServer $srv -SeedingPostponed:$false
      }
    }
  }
}

# ActivationPreference (AP) planı
# AP=1 aktif sunucu, AP=2 ve AP=3 pasifler (dağılım planına göre ayarla)
function Set-AP($db,$ap1,$ap2,$ap3){
  Set-MailboxDatabaseCopy -Identity "$db\$ap1" -ActivationPreference 1
  Set-MailboxDatabaseCopy -Identity "$db\$ap2" -ActivationPreference 2
  Set-MailboxDatabaseCopy -Identity "$db\$ap3" -ActivationPreference 3
}

# Örnek dağılım: MBX01 aktif DB01-DB09; MBX02 aktif DB10-DB17; MBX03 aktif DB18-DB25
1..9   | % { $d="DB{0:D2}" -f $_;  Set-AP $d "MBX01" "MBX02" "MBX03" }
10..17 | % { $d="DB{0:D2}" -f $_;  Set-AP $d "MBX02" "MBX03" "MBX01" }
18..25 | % { $d="DB{0:D2}" -f $_;  Set-AP $d "MBX03" "MBX01" "MBX02" }

Write-Host "02-DB-CreateAndCopy tamam."

İsterseniz -SeedingPostponed:$true ile seed sonra başlatırsın büyük ortamlarda bant genişliği planlaması için yararlı.

PowerShell: 03-Validation.ps1

# DAG replike sağlık
Test-ReplicationHealth | ft Check,Result,Error -Auto

# Kopya durumları
Get-MailboxDatabaseCopyStatus * |
  ft Name,Status,CopyQueueLength,ReplayQueueLength,ContentIndexState,DatabaseSeedStatus -Auto

# BitLocker
Get-BitLockerVolume | ft MountPoint,VolumeType,ProtectionStatus,EncryptionMethod,EncryptionPercentage -Auto

# Son Exchange ilgili uyarı/hatalar
Get-WinEvent -LogName Application -MaxEvents 200 |
 ? {$_.ProviderName -like "*Exchange*" -and $_.LevelDisplayName -match "Warning|Error"} |
 select TimeCreated,ProviderName,Id,LevelDisplayName,Message | more

MCDB Notları (Plan/Pratik)

  • Donanım: Düşük gecikmeli SSD (NVMe tercih), her sunucuya en az 2 MCDB volume.
  • Mount: C:\ExchangeMCDB\MCDB01, MCDB02 (ReFS + 64K + BitLocker).
  • Yerleşim: MCDB veri taşımıyor; ESE metadata’yı SSD’de önbellekler → IO düşer, gecikme azalır.
  • AutoReseed entegrasyonu: SSD değişiminde de aynı AutoReseed/Disk Reclaimer mimarisi çalışır (SSD’yi önceden mount path’ine bağlayın).
  • Boyutlandırma: Metadata hacmi, posta kutusu sayısı ve database büyüklüklerine göre değişir; SSD’de fazladan boşluk bırak.
  • Operasyon: SSD arızasında yeni SSD’yi aynen aynı mount path’e tak/biçimlendir/şifrele; Exchange otomatik toparlar.

MCDB’yi açma/kapama ve ileri ayarlar üretim belgelerine göre yapılmalıdır; burada mount/şifreleme/AutoReseed entegrasyon kısmı standartlaştırıldı.

Doğrulama Checklist’i

A. Dosya/Disk Yapısı

  • C:\ExchangeDatabases & C:\ExchangeVolumes & C:\ExchangeMCDB mevcut
  • Her DB için: C:\ExchangeDatabases\DBXX\DBXX.db ve DBXX.log var
  • Her veri diski ReFS/64K ve iki mount path’e bağlı:
    • C:\ExchangeVolumes\VolumeXX
    • C:\ExchangeDatabases\DBXX
  • BitLocker ProtectionStatus=On (DB ve MCDB volume’ları)
  • (Opsiyon) Spare01/Spare02 mount klasörleri hazır (disk takılınca mount edilecek)

B. DAG/AutoReseed

  • Get-DatabaseAvailabilityGroup DAG01 | fl *auto* → kök yollar/Flags doğru
  • AutoDagDatabaseCopiesPerVolume = 1
  • AutoDagAutoReseedEnabled = True, AutoDagDiskReclaimerEnabled = True, AutoDagBitlockerEnabled = True

C. DB ve Kopyalar

  • Get-MailboxDatabaseCopyStatus *Healthy/Mounted/CIS=Healthy
  • ActivationPreference planlandığı gibi (MBX01: DB01–09 vs.)
  • DatabaseSeedStatus normal (başlangıçta tohumlandı/bitmek üzere)

D. Sağlık ve Loglar

  • Test-ReplicationHealth tüm kontroller Passed
  • Application log’da MSExchangeRepl uyarıları yok (veya bilinen önemsiz)
  • MCDB SSD’lerinde BitLocker açık, mount path’ler doğru

E. Lab Arıza Simülasyonu (Üretime uygulama)

  • Disk offline/çıkartma → yeni disk tak/format/mount → AutoReseed log akışı gözlemlendi
  • Reseed sonrası CopyQueue/ReplayQueue ~ 0, CIS=Healthy