mrpear.net logo osobní web jednoho ajťáka
► ČESKY | ENGLISH |
twitter icon flickr icon 500px icon

Import datových souborů PST do úložiště Exchange 2010

Upgrade firemní pošty na Exchange (2010/2013) z jiného POP3/IMAP serveru s sebou nese také nutnost importovat data uživatelů z lokálních PST souborů do datového úložiště na MS Exchange serveru. Následující příspěvek mapuje základní postup importu a představuje detailně příkazy, které je nutné při importu použít. Postup lze aplikovat primárně na Exchange verze 2010 (testováno), ale předpokládám, že půjde přenést i na jiné verze.
Na internetu je několik podrobných návodů (především v angličtině), které popisují import lokálních PST souborů do úložiště Microsoft Exchange. Nicméně trošku problém už znamenalo najít podrobnější článek, který by řešil i případné chybové stavy a především to, jak je diagnostikovat a případně z nich vybruslit. Postupně jsem si tedy zkompletoval vlastní postup a sadů příkazů, pomocí kterých nebyl problém importovat střední firmu o velikosti cca 100 mailboxů. Tento postup s podrobnějším vysvětlením nabízím i pro ostatní administrátory.
Provedení samotného importu je celkem jednoduchá záležitost, z vlastní zkušenosti ale mohu potvrdit, že problémy nastanou jakmile se objeví chybné importy, u kterých je nutné diagnostikovat problém a ten následně opravit a v importu pokračovat.

Exchange Management Shell

Příkazy pro import dat budeme zadávat do příkazové řádky Exchange Management Shell, což je hostovaná konzole v Mikrosoftím příkazovém řádku PowerShell. Při spuštění konzole dojde k inicializaci skriptu, který připojí konzoli k instanci Exchange serveru a následně je připraven přijímat příkazy. Konzole je typicky k dispozici na serveru, kde ji Exchange instalován, případně si ji můžete instalovat i na jakýkoliv jiný počítač v síti.
Exchange Management Shell
Exchange Management Shell

Konfigurace Exchange před importem

Pokud máme čerstvou instalaci Microsoft Exchange, věnujeme potřený čas nastavení limitů (například max. velikost příchozí zprávy) a kvóty jednotlivých uživatelů. Pokud totiž přecházíme z nekontrolovaného prostředí, tedy kdy v datových souborech mohou být zprávy libovolného typu a velikostí, může to během importu působit nemalé potíže. Celý import probíhá totiž tak, že zprávy prochází přes všechny kontroly a limity konfigurované systému.
Osobně jsem při importu řešil především tyto problémy:
  • Objem importovaných dat přesáhl kvótu uživatele
  • Importovaná zpráva byla příliš velká (limit na jednu zprávu)
  • Poškozený PST soubor
Přitom poškozený PST soubor se může tvářit cela v pohodě a při běžné práci uživatel problém vůbec nepozná. Poškozená může být totiž pouze určitá zpráva/zprávy. Poškozený soubor je vhodné zkusit opravit a pokud ani to nepomůže, je nutné chybné záznamy při importu přeskočit.

Lokalizace složek uživatele

Před spuštěním importu do schránky uživatele je dobré si uvědomit, že po založení schránky uživatele je nastaveno jeho jazykového prostředí podle jazykového nastavení konzoly správy Exchange (pokud pracujete s grafickou konzolí) nebo z jazykového prostředí používané příkazové řádky. Já osobně jsem měl Exchange Management konzoli instalovanou jak u sebe na českých Windows, tak i na serveru, kde byla původní anglická mutace Windows Server 2008 R2. Pokud jsem tedy založil schránku na serveru, byla schránka vytvořena v anglickém profilu a tudíž měl uživatel anglicky pojmenované výchozí složky (Doručená pošta vs Inbox apod.).
Pokud chceme změnit lokalizaci složek uživatele, lze použít následující příkaz:
Set-MailboxRegionalConfiguration -Language "cs-CZ" 
  -LocalizeDefaultFolderName:$true –Identity FooUser
Uvedený příkaz nikdy neuškodí ale když je potřeba, tak pomůže. Ve finále jsem ho spouštěl před importem každého uživatele pro jistotu.

Spuštění a sledování průběhu importu

Základní sekvence pro import jednoho či více datových souborů sestává ze dvou kroků:
  • založení požadavku na import
  • sledování průběhu importu

Založení požadavku na importu datového souboru

Jelikož je při importu možné specifikovat cestu ke zdrojovému PST souboru pouze pomocí UNC cesty (nelze použít písmeno lokálního disku), je vhodné uložit si všechny datové soubory do společné sdílené složky, kterou jsem já osobně nasdílel přímo na serveru Exchange.
Pozn.: Zabezpečení složky proti neprávněnému přístupu jiných uživatelů v mezidobí průběhu importu je otázka na jiné téma, ale určitě ji věnujte patřičnou pozornost.
Požadavek na nový import se zahájí následujícím příkazem za předpokladu, že máme datový soubor Outlook.pst uložen na sdílené složce \\server\import a importujeme jej pro uživatele s aliasem FooUser:
New-MailboxImportRequest -FilePath \\server\import\Outlook.pst 
  -Mailbox FooUser
Name               Mailbox                                      Status
====               =======                                      ======
MailboxImport      domain.cz/OU/Company/Users/Desktops/...      Queued
Tento příkaz zařadí požadavek do fronty a server jej začne zpracovávat, jakmile bude mít volné prostředy (což bývá většinou okamžitě). Zahájení importu mohou oddálit již probíhající importy, popř. jiné vytížení serveru. Ke zjištění stavu všech probíhajících importů využijeme následující příkazy.

Zobrazení statistiky importů

Po zadání jednoho či více požadavků je důležité mít možnost sledovat jejich průběh a hlavně stav. K tomu použijeme následující příkaz:
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics
Name               Status           TargetAlias        PercentComplete
====               ======           ===========        ===============
MailboxImport      Completed                                       100
MailboxImport2     InProgress       FooUser                         34

Odebrání kompletních importů ze seznamu požadavků

Po úspěšném dokončení importu datového souboru zůstane tento požadavek nadále v seznamu požadavků ve stavu Completed. V okamžiku, kdy jej již nepotřebujeme, použijeme následující příkaz a odstraníme tak všechny úspěšné požadavky:
Get-MailboxImportRequest | where {$_.status -eq "Completed"} 
  | Remove-MailboxImportRequest
Smazání je potřeba potvrdit jednotlivě [Yes] nebo pro všechny [All]:
Confirm
Are you sure you want to perform this action?
Removing completed request 'XXX'.
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"):

Chybové stavy

Během importu může velmi snadno dojít k jeho přerušení v důsledku různých chyb ve zdrojovém souboru. Nejčastěji se jedná o problém s tím, že konkrétní zpráva nesplňuje podmínky nastavených limitů pro příchozí/odchozí zprávy systému Exchange. K chybě může dojít také v případě, že zdrojový PST soubor je více či méně poškozený.
Kdykoliv dojde k překročení povoleného počtu chybných zpráv (který je ve výchozím nastavení nulový), dojde k přerušení konkrétního importu. Chybný import je hlášen jako Failed.
Základní statistika importu nezobrazuje žádné podrobnosti o tom, proč daný import selhal. Pokud se k této informaci potřebujeme dostat, je nutné exportovat informace o průběhu importů do souboru pomocí následujícího příkazu:
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics 
  -IncludeReport | fl >report.txt
Report je celkem obsáhlý a obsahuje informace o všech aktuálně sledovaných importech. Pokud byl některý z importů zastaven z důvodu chyby, nalezneme v reportu podrobné informace o problému, včetně konkrétní zprávy, která jej způsobila a důvodu, proč se tak stalo.
Nalezený problém musíme opravit (změna nastavení Exchange, oprava datového souboru) a následně můžeme v importu pokračovat.
Pokud nedokážeme chybu opravit, můžeme povolit toleranci chybných položek a tím pádem pokračovat v importu bez nutnosti opravovat zdroj dat. Záleží ale na zvážení situace, zda je vhodné akceptovat ztrátu dat, nebo je nutné například krátkodobě upravit nastavení pravidel Exchange tak, aby import proběhl.

Akceptovat chybné položky importu

Pokud se rozhodneme, že se bez několika málo zpráv můžeme obejít, použijeme následující příkaz, který nastaví u všech chybových požadavků toleranci chyb, tedy že umožní přeskočit chybné položky během importu, u tohoto konkrétního příkladu maximálně 20 chybných položek.
Get-MailboxImportRequest -Status Failed | Set-MailboxImportRequest 
  -BadItemLimit 20
Pokud chceme povolit toleranci více jak 50 chybných položek, je nutné explicitně specifikovat možnost velké ztrátovosti dat, což určíme doplněním parametru -AcceptLargeDataLoss. Kompletní příkaz pak bude vypadat následovně:
Get-MailboxImportRequest -Status Failed | Set-MailboxImportRequest 
  -BadItemLimit 999 -AcceptLargeDataLoss

Pokračování importu u chybných požadavků

Pokud opravíme konkrétní chybu nebo jen povolíme toleranci chybných položek, je nutné znovu spustit import chybných požadavků. K tomu slouží následující příkaz:
Get-MailboxImportRequest -Status Failed | Resume-MailboxImportRequest
V tuto chvíli můžeme opět začít monitorovat stav importu a zkontrolovat, zda proběhne již v pořádku.
Reklama

Komentáře

Žádné komentáře...

Co si o tom myslíte?

:
:
(nepovinné a neveřejné, slouží pro případ dalšího kontaktu přes e-mail)
: