Share via


Panoramica delle attività di pre-backup

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

I richiedenti in genere attendeno che i writer preparino il backup e creino la copia shadow. Il writer deve determinare se è necessario partecipare al backup e, se è, configurare i file e se stesso per essere pronti per il backup e la copia shadow. Nella tabella seguente viene illustrata la sequenza di azioni ed eventi necessari per preparare un'operazione di backup.

Azione del richiedente Evento Azione writer
Il richiedente può impostare le opzioni di backup (vedere IVssBackupComponents::SetBackupOptions) Nessuno Nessuno
Supportare operazioni di backup incrementali e differenziali esaminando eventuali stamp di backup archiviati (vedere IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) Nessuno Nessuno
Notifica ai writer di preparare un'operazione di backup usando IVssBackupComponents::P repareForBackup PrepareForBackup I preparativi del writer includono la determinazione di se i file devono essere sottoposti a backup, se il writer partecipa al blocco della copia shadow, nonché la creazione di metadati specifici del writer (vedere CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent:: GetBackupOptions, CVssWriter:: AreComponentsSelected, IVssComponent:: SetBackupMetadata e IVssComponent: : GetPreviousBackupStamp.
Il richiedente attende la configurazione dei writer per il backup usando IVssAsync. Dovrebbe anche verificare lo stato del writer (vedere IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus) Nessuno Nessuno
Il richiedente richiede una copia shadow usando IVssBackupComponents::D oSnapshotSet Nessuno Nessuno
Nessuno PrepareForSnapshot CVssWriter::OnPrepareSnapshot: Inserire il writer in uno stato di preparazione della copia shadow.
Nessuno Freeze CVssWriter::OnFreeze: Configurazione finale prima della copia shadow.
Nessuno Disgelo CVssWriter::OnThaw: il funzionamento normale (incluso I/O) può riprendere.
Nessuno PostSnapshot CVssWriter::OnPostSnapshot: pulizia finale delle operazioni di preparazione della 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

Prima di creare un evento IVssBackupComponents::P repareForBackup, un richiedente può anche impostare le opzioni di backup per singoli writer usando IVssBackupComponents::SetBackupOptions a seconda delle specifiche di ogni writer e se un richiedente li conosce.

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 preparazione di pre-backup e gestire la creazione di una copia shadow.

Prima di tutto, il richiedente genera un evento PrepareForBackup chiamando IVssBackupComponents::P repareForBackup.

Dopo che tutti i writer partecipanti tornano dalla gestione dell'evento PrepareForBackup (che un richiedente determina usando l'istanza dell'interfaccia IVssAsync restituita da PrepareForBackup), il richiedente può avviare la copia shadow chiamando IVssBackupComponents::D oSnapshotSet, che, come avviene, genererà PrepareForSnapshot, Freeze, Thaw e PostSnapshot eventi per i writer da gestire.

Esistono alcuni casi in cui un richiedente potrebbe non dover creare una copia shadow. In particolare, ogni set di file gestito da uno dei componenti di un determinato writer ha una maschera di backup della specifica file (indicata da un or bit per bit di valori di VSS_FILE_SPEC_BACKUP_TYPE) impostata durante l'eventoIdentifica. 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 non è necessario eseguire il backup di file in tutti i volumi, non è necessario chiamare IVssBackupComponents::D oSnapshotSet .

Attività di pre-backup writer

Quando si gestisce l'evento PrepareForBackup , VSS chiamerà il metodo CVssWriter di ogni writer::OnPrepareBackup , 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 backup successivo e intraprendere azioni.

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 gestiti saranno coinvolti nella copia shadow 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 in modo esplicito nel documento Componenti di backup del richiedente. Il writer ha usato le istanze dell'interfaccia IVssComponent che definiscono i set di componenti per ottenere l'accesso al componente incluso in modo implicito (vedere Selezionabilità e utilizzo delle proprietà componente).

Durante la gestione dell'evento PrepareForBackup , i writer usano l'interfaccia IVssComponent per eseguire operazioni component-by-component (o componenti impostate per set di componenti), tra cui:

  1. Aggiunta di file parziali (se supportati) chiamando IVssComponent::AddPartialFile.
  2. Impostando tutti i metadati privati che il writer dovrà gestire 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 che richiedono molto tempo, ad esempio la sincronizzazione dei dati in più dischi. In questo modo il writer continuerà a funzionare durante l'elaborazione dell'operazione, inclusa la gestione di altri eventi VSS. Queste operazioni devono terminare prima dell'evento Freeze .

La chiamata del richiedente a IVssBackupComponents::D oSnapshotSet avvia la copia shadow e genera gli eventi seguenti per i writer da gestire:

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

Poiché in genere esiste un intervallo di tempo limitato tra l'emissione 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 dei processi, la creazione di file temporanei o l'esaurimento delle code di I/O, sarebbe gestita in CVssWriter::OnPrepareSnapshot.

Come un writer può usare CVssWriter::OnPrepareSnapshot per gestire la relativa I/O prima della creazione di una copia shadow dipende fortemente dall'architettura del writer.

I writer che possono consentire di contenere tutte le scritture e mantenere i dati in uno stato assoluto coerente prima di Bloccarlo, dovrebbe farlo.

Se il writer non può bloccarne l'I/O, deve eseguire azioni per creare un'origine stabile per il backup e ridurre il tempo di ripristino per una copia shadow. 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 i CVssWriter::OnPrepareSnapshot lasciati I/O nello stato corretto e che tutte le attività asincrone avviate da CVssWriter::OnPrepareBackup siano state completate. Questo metodo è l'ultima possibilità di un writer di veto una copia shadow se si verificano problemi (vedere Errori del writer e vetoe).

In genere è possibile che un writer riprendi l'operazione normale seguendo 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 la normale operazione. Pertanto, in genere CVssWriter::OnThaw viene usato dai writer per tornare a uno stato di pre-blocco. Tuttavia, tutti i file temporanei creati per supportare la copia shadow devono essere lasciati al posto fino all'evento PostSnapshot . In genere, si userebbero 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 altre informazioni, vedere Ruolo writer in Backup di archivi complessi. Un altro metodo che può essere chiamato in questo momento è IVssComponent::AddDifferencedFilesByLastModifyTime.