CZ 
30.11.2025 Ondřej VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
Exchange Server 2016 to Subscription Edition (SE) Migration Part 4 Mailbox Moves

Migrace Exchange Server 2016 na Subscription Edition (SE) část 4 přesun schránek

| Petr Bouška - Samuraj |
Migraci Exchange organizace z verze 2016 na Subscription Edition (SE) musíme provést pomocí Legacy upgrade. To znamená, že nainstalujeme nový server, který přidáme do organizace, nakonfigurujeme a provedeme migraci schránek. V čtvrté části se věnujeme přesunu poštovních schránek do nových databází na nových serverech. Jde o systémové a uživatelské schránky a také schránky veřejných složek. Po přesunu všech schránek můžeme původní databáze odstranit.
zobrazeno: 4 319x (932 CZ, 3 387 EN) | Komentáře [0]

Pozn.: Prakticky jsem instaloval Exchange Server SE roli Mailbox server na Windows Server 2025. V prostředí s jinou interní a veřejnou DNS doménou a Split DNS (Split-Brain DNS). Do existující organizace Exchange 2016 s využitím DAG (Database Availability Group).

Přesun poštovních schránek

Při migraci Exchange organizace na novou verzi a nové servery musíme nejprve nové servery nakonfigurovat. Pak následuje krok, kdy přesuneme poštovní schránky do nových DB na nových serverech. Přesun poštovní schránky z jedné databáze poštovních schránek do jiné je běžný jednoduchý proces. Označuje se jako Move Request a může probíhat za provozu. Využívá se Mailbox Replication Service (MRS).

Přesun schránek nějakou dobu trvá, což záleží na jejich množství a velikosti. V praxi nám může postupný přesun zabrat několik týdnů. Může probíhat za provozu a nenarazil jsem na žádné problémy. Ale možná je efektivnější provádět mimo pracovní dobu, kdy ke schránce není připojený klient.

Přesun schránek zatěžuje poštovní servery, ale Exchange zatížení hlídá a pozastavuje přesuny. Stav požadavku na přesun pak ukazuje místo CopyingMessages například StalledDueToTarget_MdbReplication, StalledDueToTarget_DiskLatency, StalledDueToTarget_Processor.

DŮLEŽITÉ Přesun poštovní schránky probíhá jako standardní transport, takže se k celému obsahu vytváří transakční logy. Během migrace potřebujeme hodně místa pro uložení těchto logů. Tedy disk pro logy musí být mnohem větší než pro běžný provoz. Pokud prostor dojde, tak se odpojí databáze. Když využíváme DAG, tak se stejné místo obsadí na všech serverech, kde se nachází kopie databáze.

Pořadí přesunu schránek

Microsoft uvádí následující pořadí, jak různé typy schránek přesouvat.

  • přesun systémových schránek (arbitration mailboxes)
  • přesun poštovních schránek uživatelů (user mailboxes)
  • přesun poštovních schránek veřejných složek (public folder mailboxes)

Pozn.: Narazil jsem na doporučení přesunout nejdříve schránky veřejných složek, než se pustíme do přesunu uživatelských poštovních schránek. Uvedený důvod byl, že jinak v OWA není přístup k veřejným složkám (což se dělá přes oblíbené - Favorites). Mě u přesunutého testovacího uživatele přístup k PF na původních serverech fungoval.

Můžeme přesouvat

  • jednu poštovní schránku (Move Request)
  • více poštovních schránek (Batch Move Request)
  • více poštovních schránek zadaných v CSV (Migration Batch)

Jak schránky přesouvat

Přesun schránek můžeme spravovat (nastavit) v EAC (Exchange Admin Center), kde je k dispozici jednoduchý průvodce. Nebo pomocí EMS (Exchange Management Shell), kde můžeme jednoduše provádět hromadné konfigurace. Vytvoří se úloha (dávka - Batch), která provádí přesun a běží na pozadí. EAC vždy vytváří Migration Batch. Když vytvoříme Migration BatchEMS, tak jej v EAC uvidíme a můžeme ovládat.

Migration Batch má jako vstup CSV soubor a provádí přesun všech zadaných schránek. Pro každou vygeneruje Move Request. Dávka se může spustit hned po vytvoření nebo ručně. V EMS můžeme pro dávku (Batch) i požadavek (Request) využít parametry CompleteAfter a/nebo StartAfter, které určují datum a čas pro dokončení či zahájení migrace dat.

Po úspěšném dokončení přesunu je dobré požadavek smazat. Microsoft uvádí, že to již není potřeba (patrně proto, že dochází k automatickému mazání po 30 dnech). Ale pokud bychom chtěli schránku znovu přesouvat, tak nám to nedovolí, protože má přiřazen dokončený požadavek na přesun. Na druhou stranu to může být výhoda, abychom omylem nepřesouvali schránku, která již přesunuta je.

Exchange Admin Center (EAC)

  • EAC - Exchange Admin Center
  • Recipients - Migration
Exchange admin center - Recipients - Migration
  • klikneme na plus (New) a zvolíme Move to a different database
  • přidáme schránky (uživatele), které chceme přesunout (výběrem ze seznamu nebo pomocí CSV)
Exchange admin center - New local mailbox move
  • v druhém kroku pojmenujeme úlohu (dávku), zvolíme cílovou DB, případně i archivní DB a limit na chybné položky
  • v posledním kroku nastavíme příjemce reportu o dokončení a zda se dávka zahájí a ukončí automaticky nebo manuálně

Exchange Management Shell (EMS)

K dispozici máme řadu PowerShell cmdletů jako

Mailboxes - Poštovní schránky

Přesun systémových schránek

Jako první se doporučuje přesunou Arbitration Mailboxes, což jsou systémové schránky kam se ukládají různá data celé organizace. Níže je seznam sedmi Arbitration Mailboxes a jedné Audit Log Mailbox.

DisplayName                                         Name                                               
-----------                                         ----                                               
Microsoft Exchange                                  SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}
Microsoft Exchange Approval Assistant               SystemMailbox{1f05a927-8a09-492d-ae8f-b4d0de00d60a}
Microsoft Exchange Federation Mailbox               FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042
Microsoft Exchange                                  SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}
E4E Encryption Store - Active                       SystemMailbox{D0E409A0-AF9B-4720-92FE-AAC869B0D201}
Microsoft Exchange                                  SystemMailbox{2CE34405-31BE-455D-89D7-A7C7DA7A0DAA}
Microsoft Exchange Migration                        Migration.8f3e7716-2011-43e4-96b1-aba62d229136     
SystemMailbox{8cc370d3-822a-4ab8-a926-bb94bd0641a9} SystemMailbox{8cc370d3-822a-4ab8-a926-bb94bd0641a9}

Pozn.: Ještě existuje jeden typ systémových schránek pro monitoring. Ty se nemají přesouvat. Vytváří se automaticky a při smazání databáze se odstraní. Zobrazíme je Get-Mailbox -Monitoring.

Výpis všech Arbitration schránek

Get-Mailbox -Arbitration | FT DisplayName, Name, ServerName, Database -AutoSize

Výpis všech Audit Log schránek

Speciální systémová schránka je AuditLog, kterou zobrazíme pomocí jiného parametru.

Get-Mailbox -AuditLog | FT DisplayName, Name, ServerName, Database -AutoSize

Přesun schránky Migration

První bychom měli přesunout Migration Mailbox.

New-MoveRequest Migration.8f3e7716-2011-43e4-96b1-aba62d229136 -TargetDatabase DBPraha1

Přesun všech ostatních

Pokračujeme s ostatními Arbitration Mailboxes, můžeme je vybrat třeba pomocí databáze (pokud jsou ve stejné), a Audit Log Mailbox.

Get-Mailbox -Arbitration -Database DB-Praha1 | New-MoveRequest -TargetDatabase DBPraha1
Get-Mailbox -AuditLog | New-MoveRequest -TargetDatabase DBPraha1

Výpis Discovery Search Mailbox

Další speciální schránka je Discovery Search Mailbox, která se používá pro ukládání kopie výsledků hledání In-Place eDiscovery. Měla by se automaticky vytvořit při instalaci prvního serveru v organizaci. Vedou se diskuse, zda je potřeba a má se přesouvat. Jistota je ji přesunout do nové DB.

Get-Mailbox -RecipientTypeDetails DiscoveryMailbox

Přesun Discovery Search Mailbox

New-MoveRequest DiscoverySearchMailbox* -TargetDatabase DBPraha1 

Výpis informací a statistik o požadavcích na přesun (Move Request)

Můžeme si vypsat informace o požadavcích na přesun

Get-MoveRequest

Nebo jejich statistiky

Get-MoveRequest | Get-MoveRequestStatistics

Odstranění dokončených požadavků na přesun

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest -Confirm:$false

Přesun uživatelských schránek

Hlavní část je přesun uživatelských schránek. Můžeme zadat přesun všech schránek najednou, ale lepší je rozdělit na menší části (i když má Exchange ve výchozím nastavení limit na 10 souběžných přesunů schránek a ostatní přesuny jsou pozastavené).

Můžeme využít EAC, kde jednoduše definujeme parametry a následně můžeme sledovat a řídit průběh ve webovém rozhraní. Zde si ukážeme použití EMS, které nabízí více možností. V obou případech můžeme pro jednotlivé uživatele (schránky) stáhnout report (log) o přesunu schránky.

Pozn.: Při přesunu schránek musíme stále kontrolovat dostatek volného místa pro transakční logy.

Počet schránek v databázi

Get-Mailbox -resultsize unlimited | Group-Object -Property Database | Sort-Object Name | FT Name, Count -AutoSize

Velikost jednotlivých databází

Get-MailboxDatabase -Status | Sort-Object Name | FT Name, DatabaseSize, AvailableNewMailboxSpace -AutoSize

Seznam schránek a jejich velikostí v dané databázi

Get-MailboxStatistics -Database DB-Praha1 |
 FT DisplayName, Database, ServerName, TotalItemSize, TotalDeletedItemSize, DisconnectDate -AutoSize

Pozn.: Cmdlet Get-MailboxStatistics zobrazuje všechny typy schránek, včetně Disconnected mailboxes (smazaných nebo přesunutých Soft-deleted). Často se tedy hodí následující výpis.

Get-Mailbox -Database DB-Praha1 | Get-MailboxStatistics |
 FT DisplayName, Database, ServerName, TotalItemSize, TotalDeletedItemSize -AutoSize

Seznam prvních 20 schránek z dané databáze

Get-Mailbox -resultsize unlimited -Database DB-Praha1 | Select-Object -First 20 | FT Name, ServerName, Database -AutoSize

Pokud chceme vidět také velikost schránek

Get-Mailbox -resultsize unlimited -Database DB-Praha1 | Select-Object -First 20 | Get-MailboxStatistics |
 FT DisplayName, Database, TotalItemSize -AutoSize

Seznam schránek menších než 100 MB

Get-Mailbox -Database DB-Praha1 -resultsize unlimited | Get-MailboxStatistics | Where-Object { $_.TotalItemSize -lt "100MB" } |
 FT DisplayName, TotalItemSize, TotalDeletedItemSize -AutoSize

Vytvoření CSV s emaily schránek menších než 100 MB

$user = Get-Mailbox -Database DB-Praha1 -resultsize unlimited | Get-MailboxStatistics | Where-Object {$_.TotalItemSize -lt "100MB"}
"EmailAddress" | Out-File d:\users.csv
$user | ForEach-Object { (Get-Mailbox -Identity $_.DisplayName).PrimarySmtpAddress.address } | Out-File d:\users.csv -Append

Přesun prvních 20 schránek z dané databáze pomocí Move Request

Primární příklad přesunu určitého počtu schránek. Můžeme také přesouvat všechny schránky z určité databáze nebo serveru.

Get-Mailbox -Database DB-Praha1 | Select-Object -First 20 | New-MoveRequest -TargetDatabase DBPraha1

Přesun schránek z CSV pomocí Migration Batch

New-MigrationBatch -Local -Name LocalMove -CSVData ([System.IO.File]::ReadAllBytes("D:\users.csv")) -TargetDatabases DBPraha1 `
 -AutoStart -AutoComplete

Informace a statistiky o požadavcích na přesun (Move Request)

Get-MoveRequest | Get-MoveRequestStatistics | FT -AutoSize

Zobrazení historie dokončených přesunů pro schránku

Get-MailboxStatistics -Identity bouska -IncludeMoveHistory | FL DisplayName, MoveHistory

Detailnější zobrazení

(Get-MailboxStatistics -Identity bouska -IncludeMoveHistory).MoveHistory

Report (log) o přesunu schránky

Historie dokončených přesunů ve schránce obsahuje také podrobný report (log) přesunu. Můžeme si vypsat pro všechny přesuny.

(Get-MailboxStatistics -Identity bouska -IncludeMoveReport).MoveHistory | FL Report

Pouze pro poslední

(Get-MailboxStatistics -Identity bouska -IncludeMoveReport).MoveHistory[0] | FL Report

Pro existující Move Request můžeme použít i jiný cmdlet.

Get-MoveRequestStatistics -Identity bouska -IncludeReport | FL Report

Případně výstup uložit do CSV pomocí | Export-CSV d:\report.txt

Odstranění dokončených požadavků

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest -Confirm:$false

Smazání obsahu schránky

Pokud bychom potřebovali před přesunem smazat celý obsah schránky (třeba nějaké servisní), tak můžeme využít cmdlet Search-Mailbox. Potřebujeme roli Mailbox Import Export.

Search-Mailbox bouska -DeleteContent

Případně můžeme odstranit pouze smazané položky (které se běžně uchovávají 14 dní po smazání).

Search-Mailbox bouska -SearchDumpsterOnly -DeleteContent

Public Folders (PF) - Veřejné složky

Od Exchange 2013 se pro veřejné složky využívá speciální schránka (Public Folder Mailbox) uvnitř standardní Mailbox Database. Do schránky se ukládá hierarchie i obsah veřejných složek. Migrace veřejných složek spočívá v klasickém přesunu jejich schránky.

Struktura a zanoření

  • databáze poštovních schránek (Mailbox Database) - můžeme mít vyhrazenou DB (jednu nebo více) pouze pro PF schránky nebo sdílenou s běžnými schránkami příjemců
  • schránka veřejných složek (Public Folder Mailbox) - uvnitř DB můžeme vytvořit jednu nebo více schránek pro PF
  • veřejná složka (Public Folder - PF) -  uvnitř každé PF schránky můžeme vytvořit řadu veřejných složek

Při vytváření veřejné složky nemůžeme určit PF schránku kam se má umístit. PF Mailbox může mít maximální velikost 100 GB a 2000 souběžných přihlášení uživatelů. Pro přesun veřejných složek do jiné schránky můžeme využít skripty Split-PublicFolderMailbox.ps1 a Move-PublicFolderBranch.ps1 nebo cmdlet New-PublicFolderMoveRequest.

Kvóty veřejných složek

PF Mailbox je umístěn v běžné Mailbox DB, takže ve výchozím nastavení dědí limity na velikost schránky (IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota) z nastavení DB. Běžně se PF schránky používají o dost větší než schránky uživatelů, takže musíme nastavení upravit (na DB nebo schránce).

Tato nastavení se týkají celé schránky, a tedy dohromady všech veřejných složek, které se v ní nachází. Můžeme také nastavit limit na jednotlivé veřejné složky, který se týká pouze dané složky (nezapočítává se obsah podsložek). Nastavujeme pomocí Set-PublicFolder, výchozí nastavení je neomezeno.

Velikost schránky veřejných složek musíme sledovat, a pokud se příliš zaplní, tak některé PF přesunout do jiné (nové) schránky nebo zvětšit. Také se mi to v praxi stalo. Najednou přestala fungovat pravidla na přeposílání zpráv z PF. Trvalo mi zjistit, že se schránka dost zaplnila a uplatnil se limit Prohibit Send. Ale bylo dobře, že to bylo dříve, než se uplatnilo Prohibit Send Receive.

Přesun veřejných složek

Provádíme běžný přesun schránek, ale musíme využít EMS. V rámci EAC - Migration se schránky veřejných složek nenabízí.

Počet PF schránek v databázi

Get-Mailbox -PublicFolder -resultsize unlimited | Group-Object -Property Database | Sort-Object Name | FT Name, Count -AutoSize

Seznam PF schránek a jejich velikostí

Get-Mailbox -PublicFolder | Get-MailboxStatistics |
 FT DisplayName, Database, ServerName, TotalItemSize, TotalDeletedItemSize -AutoSize

Výpis veřejných složek větších než 512 MB (nepočítá se zanoření)

Get-PublicFolderStatistics -ResultSize Unlimited | Sort TotalItemSize -Descending | where { $_.TotalItemSize -gt 524288000 } |
 FT Name, FolderPath, ItemCount, TotalItemSize, MailboxOwnerId -AutoSize

Přesun jedné PF schránky

Schránek veřejných složek většinou nemáme tak mnoho, takže je možno přesouvat po jedné. Dva příklady, které provedou to samé.

New-MoveRequest PFmailbox1 -TargetDatabase DBPF1
Get-Mailbox -PublicFolder -Identity PFmailbox1 | New-MoveRequest -TargetDatabase DBPF1

Přesun všech PF schránek na daném serveru

Get-Mailbox -PublicFolder -Server MAILPRAHA | New-MoveRequest -TargetDatabase DBPF1

Informace a statistiky o požadavcích na přesun (Move Request)

Get-MoveRequest | Get-MoveRequestStatistics | FT -AutoSize

Odstranění dokončených požadavků

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest -Confirm:$false

Odstranění databáze poštovních schránek v DAGu

Pokud má databáze kopii na jiném serveru (využívá DAG), tak musíme nejprve odstranit všechny kopie, než můžeme smazat aktivní databázi.

Odstranění kopie databáze

  • EAC - Exchange Admin Center
  • Servers - Databases
  • vybereme databázi, vpravo v detailech najdeme pasivní kopii (musí být ve stavu Healthy) a klikneme na Remove
  • potvrdíme odstranění kopie kliknutím na Yes a informaci o odstranění kliknutím na OK
  • ručně smažeme soubory (DB a transakční logy) na disku serveru, kde byla kopie
Exchange admin center - Servers - Databases - Remove Database Copy

Pomocí Exchange Management Shell (EMS):

Remove-MailboxDatabaseCopy -Identity DB-Praha1\MAILPRAHA2

Odstranění databáze

Databázi lze smazat pouze když je prázdná. S výjimkou Monitoring/Health Mailboxes, které se odstraní automaticky při smazání databáze. Nesmí tedy obsahovat žádné uživatelské, archivní, public folder, arbitration ani audit mailboxes.

  • EAC - Exchange Admin Center
  • Servers - Databases
  • vybereme databázi a klikneme na koš (Delete)
  • potvrdíme odstranění databáze kliknutím na Yes a informaci o odstranění kliknutím na OK
  • ručně smažeme soubory (DB a transakční logy) na disku serveru
Exchange admin center - Servers - Databases - Delete Database

Pomocí Exchange Management Shell (EMS):

Remove-MailboxDatabase -Identity DB-Praha1

Související články:

Migrace Exchange organizace 2016 na Subscription Edition (SE)

Stručný postup migrace organizace z Exchange Server 2016 na Exchange Server Subscription Edition (SE). Jde o instalaci nového serveru do stávající organizace, nastavení služeb a přesun schránek.

Microsoft Exchange

Skoro od začátku mé praxe se věnuji administraci poštovního serveru od firmy Microsoft, tedy Exchange Serveru. Začínal jsem na verzi 2003 a dostal se až k Exchange Online. Články popisují mnoho oblastí správy. Nejvíce od migrace na Exchange Server 2016 a jeho kompletní konfiguraci. Ale také Exchange Hybrid a bezpečnost elektronické pošty.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

Zatím zde nejsou žádné komentáře.

Přidat komentář

Vložit tag: strong em link

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách