Condividi tramite


Panoramica delle attività di pre-backup

Le attività di pre-backup in VSS sono incentrate sulla creazione di una copia shadow dei volumi contenenti i dati per il backup. L'applicazione di backup salverà i dati dalla copia shadow, non dal volume effettivo. Per altre informazioni, vedere Panoramica dell'elaborazione di un backup in VSS.

I richiedenti in genere aspettano che i writer si preparino per il backup e creino la copia ombra. Il writer deve determinare se partecipare al backup e, in caso affermativo, configurare i propri file e se stesso per essere pronto per il backup e la copia ombra. La tabella seguente illustra la sequenza di azioni ed eventi necessari per preparare un'operazione di backup.

Azione del richiedente Evento Azione dello scrittore
Il richiedente può impostare le opzioni di backup (vedere IVssBackupComponents::SetBackupOptions) Nessuno Nessuno
Supportare operazioni di backup incrementali e differenziali esaminando eventuali indicatori di backup archiviati (vedere IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) Nessuno Nessuno
Inviare una notifica agli autori per prepararsi a un'operazione di backup utilizzando IVssBackupComponents::PrepareForBackup PreparatiPerIlBackup Le operazioni di preparazione del writer includono la determinazione se è necessario eseguire il backup dei file, se il writer parteciperà al blocco della copia shadow, oltre a creare metadati specifici del writer (vedere CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadatae IVssComponent::GetPreviousBackupStamp.
Il richiedente attende che i writer configurino il backup usando IVssAsync. Deve anche verificare lo stato del writer (vedere IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus) Nessuno Nessuno
Il richiedente richiede una copia ombra usando IVssBackupComponents::DoSnapshotSet Nessuno Nessuno
Nessuno PrepararsiPerIstantanea CVssWriter::OnPrepareSnapshot: Metti il writer in uno stato di preparazione per la copia ombra.
Nessuno Blocca CVssWriter::OnFreeze: configurazione finale prima della copia shadow.
Nessuno Scongelamento CVssWriter::OnThaw: il normale funzionamento (incluso I/O) può riprendere.
Nessuno PostSnapshot CVssWriter::OnPostSnapshot: operazioni di pulizia finale delle preparazioni per la copia shadow. Vedere IVssComponent::AddDifferencedFilesByLastModifyTime e IVssComponent::SetBackupStamp.
Il richiedente attende il completamento della copia shadow usando: IVssAsync, deve anche verificare lo stato del writer (vedere IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus
Nessuno Nessuno

 

Attività di pre-backup del richiedente

Inoltre, prima di creare un evento di IVssBackupComponents::PrepareForBackup, un richiedente può anche impostare opzioni di backup per singoli writer usando IVssBackupComponents::SetBackupOptions a seconda delle specifiche di ogni writer e se un richiedente ne è a conoscenza.

Per supportare operazioni incrementali e differenziali, i richiedenti possono a questo punto scegliere di esaminare i componenti per i timestamp dell'operazione di backup precedente (usando IVssComponent::GetBackupStamp) e usare tali informazioni per impostare un timestamp precedente per un writer da elaborare (usando IVssBackupComponents::SetPreviousBackupStamp). Per altre informazioni, vedere backup incrementali e differenziali.

Un richiedente può ora indirizzare i writer del sistema a completare le operazioni di pre-backup e a gestire la creazione di una copia ombra.

Innanzitutto, il richiedente genera un evento PrepareForBackup chiamando IVssBackupComponents::PrepareForBackup.

Dopo che tutti i writer partecipanti tornano a gestire l'evento PrepareForBackup (che un richiedente determina usando l'istanza dell'interfaccia IVssAsync restituita da PrepareForBackup), il richiedente può avviare la copia shadow chiamando IVssBackupComponents::DoSnapshotSet, che, man mano che avanza, genererà PrepareForSnapshot, Freeze, Thawe PostSnapshot per i writer da gestire.

In alcuni casi un richiedente potrebbe non dover creare una copia ombra. In particolare, ogni set di file gestito da uno dei componenti di un determinato writer ha una maschera backup specifica file (indicata da un OR bit per bit di valori VSS_FILE_SPEC_BACKUP_TYPE) impostata durante l'evento Identify. Questa maschera specifica, tra le altre cose, se un set di file richiede la copia shadow del sistema prima che venga eseguito il backup.

Se nessun set di file da sottoporre a backup su qualsiasi volume richiede una copia shadow, allora non è necessario chiamare IVssBackupComponents::DoSnapshotSet.

Attività pre-backup di Writer

Quando si gestisce l'evento PrepareForBackup, VSS chiamerà il metodo CVssWriter::OnPrepareBackup di ogni writer, un metodo virtuale , che per impostazione predefinita restituisce semplicemente true.

I writer possono eseguire l'override di questa implementazione predefinita e usare la gestione per trovare informazioni sul prossimo backup e intervenire.

Un writer può determinare informazioni sul tipo di operazione di backup contemplata usando i metodi seguenti:

  1. CVssWriter::GetBackupType
  2. CVssWriter::IsBootableStateBackedUp
  3. CVssWriter::AreComponentsSelected

Un writer determina se i file che gestisce saranno coinvolti nella copia ombra usando CVssWriter::IsPathAffected.

Più importante, quando VSS chiama il metodo CVssWriter::OnPrepareBackup, passa un'istanza dell'interfaccia IVssWriterComponents, che consente l'accesso diretto tramite l'interfaccia IVssComponent a quelli dei relativi componenti inclusi esplicitamente nel documento dei componenti di backup del richiedente. Lo scrittore ha utilizzato le istanze dell'interfaccia di IVssComponent che definiscono i gruppi di componenti per ottenere l'accesso al componente , incluso implicitamente, (vedere Selectability and working with Component Properties).

Durante la gestione dell'evento PrepareForBackup, i writer usano l'interfaccia IVssComponent per eseguire operazioni componente per componente (o insieme di componenti per insieme di componenti), tra cui:

  1. Aggiungere file parziali (se supportati) chiamando IVssComponent::AddPartialFile.
  2. Impostazione di tutti i metadati privati che l'autore dovrà gestire durante il ripristino.
  3. Se il writer supporta backup incrementali e differenziali (vedere backup incrementali e differenziali), eseguire le operazioni seguenti:
  4. Avvio di operazioni asincrone molto dispendiose in termini di tempo, ad esempio la sincronizzazione dei dati tra più dischi. In questo modo, lo scrittore potrà continuare a lavorare mentre l'operazione viene elaborata, inclusa la gestione di altri eventi VSS. Queste operazioni devono terminare prima dell'evento di congelamento.

La chiamata del richiedente a IVssBackupComponents::DoSnapshotSet avvia la shadow copy e genera i seguenti eventi per gli scrittori da elaborare.

Tre gestori del writer,CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreezee CVssWriter::OnThaw, sono metodi virtuali puri e ogni writer deve implementarli anziché basarsi sulle impostazioni predefinite. A seconda delle esigenze di un writer, possono essere codificati come metodi fittizi, semplicemente restituendo TRUE.

Poiché in genere esiste un intervallo di tempo limitato tra il rilascio di un evento Freeze e l'emissione di un evento Thaw, la maggior parte del lavoro principale nella preparazione della copia shadow, ad esempio l'arresto di processi, la creazione di file temporanei o lo svuotamento delle code di I/O, verrebbe gestita in CVssWriter::OnPrepareSnapshot.

Il modo in cui uno scrittore possa usare CVssWriter::OnPrepareSnapshot per gestire il proprio I/O prima della creazione di una copia di ombra dipende fortemente dall'architettura del scrittore.

I scrittori che possono permettersi di sospendere tutte le scritture e mantenere i dati in uno stato coerente assoluto prima di Freeze, dovrebbero farlo.

Se il writer non è in grado di bloccarne l'I/O, deve intraprendere azioni per creare un'origine stabile per il backup e ridurre il tempo di ripristino di una copia ombra. Alcuni esempi possono includere l'accodamento delle richieste di I/O in ingresso o la generazione di un set duplicato di file in un percorso alternativo da usare come origine di un backup.

Il metodo CVssWriter::OnFreeze esegue attività semplici e brevi, ad esempio verificando che il CVssWriter::OnPrepareSnapshot abbia lasciato l'I/O nello stato corretto e che tutte le attività asincrone avviate da CVssWriter::OnPrepareBackup siano state completate. Questo metodo è l'ultima possibilità per lo scrittore di porre un veto su una copia ombra se ci sono problemi (vedere errori e veti del writer ).

È in genere possibile che un writer riprenda il normale funzionamento dopo un evento Thaw: una copia shadow potrebbe non essere immediatamente pronta per il backup dopo il thaw, ma un writer dovrebbe essere in grado di riprendere il normale funzionamento. Pertanto, in genere CVssWriter::OnThaw viene utilizzato dagli scrittori per tornare a uno stato precedente al blocco. Tuttavia, tutti i file temporanei creati per supportare la copia shadow devono essere lasciati sul posto fino all'evento PostSnapshot. In genere, si userebbe CVssWriter::OnPostSnapshot per questo tipo di pulizia. Poiché molte applicazioni non richiedono questa pulizia, CVssWriter::OnPostSnapshot è un metodo virtuale con un'implementazione predefinita che restituisce semplicemente TRUE. Se viene eseguito un backup incrementale o differenziale, il writer può chiamare IVssComponent::GetPreviousBackupStamp e IVssComponent::SetBackupStamp. Per ulteriori informazioni, vedere il ruolo di scrittore nel backup di archivi complessi. Un altro metodo che può essere chiamato in questo momento è IVssComponent::AddDifferencedFilesByLastModifyTime.