660 likes | 786 Views
Backup e Restore di Exchange 2003. Ivan Riservato. Andrea Garattini. Agenda. Active Directory La struttura dei DB di Exchange Jet Concettti dei Database di Exchange Storage Groups / Database Streaming Backup Streaming Restore. Active Directory. Inside Active Directory Backup
E N D
Backup e Restore di Exchange 2003 Ivan Riservato Andrea Garattini
Agenda • Active Directory • La struttura dei DB di Exchange • Jet • Concettti dei Database di Exchange • Storage Groups / Database • Streaming Backup • Streaming Restore
Active Directory • Inside Active Directory • Backup • Authoritative Restore • Utility • Ntdsutil • Esentutl
Inside Active Directory • La tecnologia usata prende il nome di Extensible Storage Engine (ESE) • Basato su Indexed Sequential Access Method (ISAM) • Composta da più file • Formalmente chiamata “JET Blue” da non confondersi con Access “JET Red”
Inside Active Directory • Database file: contengono lo schema di tutte le tabelle del database, i record di tutte le tabelle del database e gli indici (ntds.dit) • Transaction log file: contengono tutte le informazioni necessarie per riportare il database in uno stato consistente in caso di un qualunque errore (edb*.log)
Inside Active Directory • Temporary Transaction Log File: vengono utilizzati al raggiungimento della dimensione massima (10 MB) dei log. • Reserved Transaction Log File: vengono creati dal sistema all’avvio del servizio ed utilizzati solo in caso di saturazione dello spazio fisico del disco per consentire il corretto spegnimento del servizio (res1.log e res2.log).
Inside Active Directory • Checkpoint File: contiene il puntatore all’ultima transazione registrata nel database NON nei log (edb.chk)
Active Directory Backup • È sufficiente eseguire su un domain controller il backup del System State. • Questo comporta il backup di Active Directory e di tutti i componenti su cui si basa • System Registry • COM+ Class Registration Database • File Replication Services (SYSVOL) • Certificate Autority • DNS solo se integrato in AD
Active Directory Backup • Privilegi necessari: • Backup Operator • Local Administrator • Con i componenti standard è necessario effettuare il backup di ciascun domain controller nella foresta • Un backup di AD è valido per 60 giorni
Tombstone • Di default un oggetto è definitivamente eliminato da AD dopo 60 gg. • SP1 consente di estendere questo limite a 180 gg • All’interno del container CN=Directory Services, CN=Windows NT, CN=Services, CN=Configuration, DC=forest root domain utilizzare i due paramentri • tombstoneLifetime • garbageCollPeriod
Active Directory: Authoritative Restore • AD è basata su un modello di replica multimaster, quindi ogni domain controller può aggiornare in modo indipendente AD. • Dopo aver cancellato un oggetto, eseguendo un restore non autoritativo non saremo in grado di ritrovare l’oggetto in AD. • Questo poichè viene incrementato un contatore necessario per il corretto funzionamento di una replica multimaster
Authoritative Restore • È quindi necessario segnalare ad AD che l’operazione di restore che andiamo ad eseguire deve ignorare tale contatore • Per eseguire il restore in modo autoritativo • Riavviare il domain controller in Directory Server Restore Mode (F8) • Eseguire NTDSUTIL • Al prompt autoritative restore • Restoreoggetto
Authoritative Restore • Come oggetto va specificato il tipo di oggetto (ad esempio subtree) ed il suo Distinguish Name (DN) • Ntdsutil • autoritative restore • Restore subtree OU=test,DC=UGIMEX,DC=LAB • Quit • Quit • Riavvio del domain controller
Ntdsutil • Si trova nei support tools • Consente di eseguire le normali operazioni di manutenzione di AD – tutte queste operazioni devono essere effettuare da Directory Services Restore Mode • Spostare il database • Spostare i file di log • Compattare il database • Eseguire i restore
Ntdsutil • Esempio per spostare il DB • Ntdsutil • Files move DB (log) to destinazione • Quit • Quit • Riavviare il domain controller
Ntdsutil • Per compattare il database • Ntdsutil • Files • Compact to destinazione • Quit • Quit
Ntdsutil • Database integrity check • Ntdsutil • Semantic database analisys • Verbose on • Go fixup • Quit • Quit • Da eseguire solamente in caso di errori nel file dsdit.dmp.xxx
Esentutl • Ultima speranza ... prima di un restore di tutto AD • Da usare con MOLTA attenzione e cognizione di causa • È una utility di basso livello che accede direttamente alla struttura del database
Undocumented Esentutl • Esentutl –mh percorso db\ntds.dit • Per vedere gli header e lo status del database ntds.dit • Esentutl –ms percorso db\ntds.dit • Per vedere le tabelle e lo spazio disponibile
La struttura dei DB di Exchange • Tutta la struttura è un b-tree • E’ Indicizzata per un’accesso veloce • Struttura separata di tipo ‘long-value’ b-trees per i “data chunks” • La tabella (table) è una collezione di b-trees • Data tree • Long-value tree • Index trees
B-trees • Forniscono un’accesso veloce ai dati • Minimizzano il numero di I/Os per trovare un record nel DB • I dati contenuti nelle tabelle sono ordinati dalle chiavi definite nei client MAPI
B-trees • I dati sono memorizzati in pagine di 4K o 8K • 4K per Exchange • 8K per Active Directory • Le pagine sono memorizzate in RAM per aumentare le performance
Root Page Internal Leaf Esempio di un b-tree Page / Pagina Page Pointer/ Puntatore alla pagine successiva Record
Indici • Necessari per vedere i record ordinati in modo differente • Una chiave primaria b-tree ha un’indice secondario anch’esso b-tree • Gli indici secondari sono molto compatti paragonati ai dati contenuti nelle chiavi degli indici
Indici • Gli indici secondari possono essere creati o cancellati dinamicamente • I record possono essere nascosti dagli indici • Un esempio è il Deleted item recovery
Com’è fatto un DB di Exchange ? • Una tabella Globale che contiene: • Informazione correlate al Database • La versione del database e la GUID • La tabella delle Mailbox che contiene: • Un record per utente • Viene associato ad un’utente nella root folder • La tabella “Folders”: • Descrive la gerarchia delle folder • Contiente i counter degli item
Com’è fatto un DB di Exchange ? • Una tabella Message • Contiente tutti i messaggi • Una tabella degli Attachments • Normalmente si riconoscono perchè iniziano con un numero da 1 al 23 • Contengono tutti gli allegati sono memorizzati qui
Com’è fatto un DB di Exchange ? • La tabella MessageFolder • Hanno nomi N-N • Una per ogni folder • Gli indici sono creati quando si effettua un search da Outlook • Hanno un link (reference) alla tabella Message • Tabella Search • Creata usando “Advanced Find” • Hanno nomi S-N-N
Com’è fatto un DB di Exchange ? • La tabella Categorization • Creata usando la vista “Group By” • Memorizza quale item sono aperti/chiusi • Hanno nomi C-N-N • Per avere un’elenco delle tabelle • ESEUTIL /MS • visualizza anche lo spazio occupato • Per verificare la struttura si utilizza ISINTEG
Perchè usare i file di log ? • Se succede uno di questi eventi .. • Mancanza di corrente • Dischi che si rompono • Errori di sistema • Mantengono consistente il DB • Lo status delle transazioni è persistente e, per gli amanti dei DB relazionali, sono ACID • E’ molto efficiente
I file di log • Il file di log è suddiviso in più file chiamati ‘generations’ • I “generations” sono chiamati con ENNXXXXX.LOG • NN è lo storage group • XXXXX è la generation espresso in esadecimale • ENN.LOG è la più alta “generation” cioè l’ultimo
Transazioni • La transazione è l’unità elementare con cui lavora Jet • Es. Quando si sposta un msg da una cartella ad un’altra Jet • Cancella il msg dalla cartella sorgente • Inserisce il msg nella cartella di destinazione • Aggiorna la dimensione delle cartelle
Transazioni • Se va in crash? • Se la transazione era tutta completata il msg sarà nella folder di destinazione se non era completata nella sorgente
Il Version Store • Contiene un’elenco delle operazioni effettuta dalle transazione attive • Usato per effettuare il rollback delle transazioni • Se a causa di un problema Jet deve effettuare un rollback il version store può diventare molto lungo • JET_errVersionStoreOutOfMemory
Come funzionano i file di Log • “Write-ahead” logging • le pagine modificate in cache non vengono inserite immediatamente nei database • Vengono inserite in apped ai file di log • La scrittura nel database è un’operazione asincrona per ottenere delle buone performance • I Checkpoint file (*.chk) tengono traccia delle transazioni che sono state inserite del database (.edb e .stm) dai file di log
The streaming file • Contiene i dati ricevuti da un protocollo Internet • I dati sono memorizzati “raw” • Esistono in coppia con un file .EDB • Il file .edb contengono I puntatori agli oggetti contenuti nei corrispondenti .stm • ATTENZIONE: non ha i log… (a buon intenditor poche parole)
Il file di log Analogamente ad AD (ma Exchange è arrivato prima ) • ENNTMP.LOG è usato durante la creazione di un nuovo file di log • RESN.LOG viene utilizzato quando non c’è più lo spazio per la creazione dei file di log
I file di log • Un database e’ consistente quando tutte le transazioni sono state inserite nel database • Circular logging – autoelimina I file di log dopo averli inserite nel database (utilizza al massimo 4 file di log) ORRORE!!!! (si chiama anche masochismo o log Tafazzi)
I file di streaming (*.STM) • Il file .STM non è mai sovrascritto • Modificare un messaggio comporta la creazione di un msg nuovo e la cancellazione del vecchio • L’eventuale spazio utilizzato non viene rilasciato fino alla completazione della transazione • Il che significa che le non è possibile effettuare un roll back delle modifiche effettuate in un file .STM • Non ha alcun tipo di log
Dove risiedono quindi i msg ? • Nei log • I nuovi msg possono non essere scritti nel DB • Quando il database viene smontato in modo “pulito” significa che: • Tutte le transazioni sono state completate • Tutte le modifiche al database sono scritte sul disco (attenzione ai controller!!!) • Per verificare lo stato usare ESEUTIL /MH
Riassumendo… Database completo = EDB + STM + file di log
Storage Group • Un insieme di DB che condividono gli stessi file di log • Ogni SG ha un istanza separata di Jet • 4 Storage group per Server (Enterprise) • 5 Database per Storage Group (Enterprise) • 1 Storage Group particolare (il Recovery Storage Group o RSG)
Exchange con 2 SG: STORE Storage Group 1 Storage Group 2 ESE Instance ESE Instance LOG LOG LOG LOG LOG LOG EDB EDB EDB EDB EDB STM STM STM STM STM
Tipologie di backup Tipo Copia i DB Copia i Log Elimina i Log Full(Normal) Copy/Daily Incremental Differential Offline X X Non consigliato X X X X X X X X
Streaming BackupProcesso di backup “streaming” Streaming BackupProcesso di backup “streaming” Il Backup chiama le API Backup APIs Called ESE Backup Mode ESE in “Backup Mode” Begin Backup Inizio Backup • Lo Store informa ESE che è entrato nella modalità backup • L’agent richiede le pagine del DB in modo sequenziale • Le pagine saranno verificate con il cheksum • Il pgm di Backup comunica allo store che inizierà il tipo di backup selezionato dall’amministratore ESE Normal Mode ESE in “Normal Mode” End Backup Fine Backup Backup Complete Backup Completato • Tutte le pagine sono lette • I file di log sono copiati sul tape • I log sono cancellati dal HD • Il backup è terminato
Il checksum • Tutte le pagine dei Database e dei file di log vengono verificate con un checksum • Il checksum dei file di streaming è memorizzato all’interno del database • I checksum delle pagine sono verificate ad ogni operazione di lettura • I checksum dei database, dei file di streaming e dei file di log sono verificati solamente durante il backup
Verificare manualmente i checksum Se si volesse effettuare un controllo manuale sui Checksum è possibile utilizzare l’utility eseutil: • Eseutil /k • Eseutil /ml
Gli errori 1018 • Se il checksum non è corretto viene generato un event id con errore 1018 • Di conseguenza ilBackup NON andrà a buon termine • Un errore nel calcolo del checksum indica che i dati sono corrotti • L’errore solitamente deriva da un problema HW (verificate i controller, batteria tampone, memoria non ECC etc.)