Introducción a las tareas previas a la copia de seguridad

Las tareas previas a la copia de seguridad en VSS se centran en crear una instantánea de los volúmenes que contienen datos para la copia de seguridad. La aplicación de copia de seguridad guardará los datos de la instantánea, no del volumen real. Para obtener más información, vea Información general sobre el procesamiento de una copia de seguridad en VSS.

Normalmente, los solicitantes esperan a que los escritores se preparen para la copia de seguridad y creen la instantánea. El escritor debe determinar si va a participar en la copia de seguridad y, si es así, configurar sus archivos y estar listos para la copia de seguridad y la instantánea. En la tabla siguiente se muestra la secuencia de acciones y eventos necesarios para prepararse para una operación de copia de seguridad.

Acción del solicitante Evento Acción de escritor
El solicitante puede establecer opciones de copia de seguridad (consulte IVssBackupComponents::SetBackupOptions). None None
Admite operaciones de copia de seguridad incrementales y diferenciales examinando las marcas de copia de seguridad almacenadas (consulte IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) None None
Notificar a los escritores que se preparen para una operación de copia de seguridad mediante IVssBackupComponents::P repareForBackup PrepareForBackup Los preparativos del escritor incluyen determinar si se va a realizar una copia de seguridad de los archivos, si el escritor participará en la inmovilización de la instantánea, además de crear metadatos específicos del escritor (vea CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadata e IVssComponent:: GetPreviousBackupStamp.
El solicitante espera a que los escritores configuren la copia de seguridad mediante IVssAsync. También debe comprobar el estado del escritor (consulte IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus) None None
El solicitante solicita una instantánea mediante IVssBackupComponents::D oSnapshotSet None None
None PrepareForSnapshot CVssWriter::OnPrepareSnapshot: coloque el escritor en un estado listo para instantáneas.
Ninguno Freeze CVssWriter::OnFreeze: configuración final antes de la instantánea.
Ninguno Reanudar CVssWriter::OnThaw: el funcionamiento normal (incluida la E/S) se puede reanudar.
Ninguno PostSnapshot CVssWriter::OnPostSnapshot: Limpieza final de preparación de instantáneas. Consulte IVssComponent::AddDifferencedFilesByLastModifyTime e IVssComponent::SetBackupStamp.
El solicitante espera la finalización de la instantánea mediante: IVssAsync, también debe comprobar el estado del escritor (consulte IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus
None None

 

Tareas previas a la copia de seguridad del solicitante

Además, antes de crear un evento IVssBackupComponents::P repareForBackup , un solicitante también puede establecer opciones de copia de seguridad para escritores individuales mediante IVssBackupComponents::SetBackupOptions en función de los detalles de cada escritor y de si un solicitante es consciente de ellos.

Para admitir operaciones incrementales y diferenciales, los solicitantes pueden elegir examinar los componentes de las marcas de tiempo de la operación de copia de seguridad anterior (mediante IVssComponent::GetBackupStamp) y usar esa información para establecer una marca de tiempo anterior para que un escritor procese (mediante IVssBackupComponents::SetPreviousBackupStamp). Consulte Copias de seguridad incrementales y diferenciales para obtener más información.

Un solicitante ahora puede dirigir a los escritores del sistema para completar los preparativos previos a la copia de seguridad y controlar la creación de una instantánea.

En primer lugar, el solicitante genera un evento PrepareForBackup llamando a IVssBackupComponents::P repareForBackup.

Después de que todos los escritores participantes vuelvan al control del evento PrepareForBackup (que un solicitante determina mediante la instancia de la interfaz IVssAsync devuelta por PrepareForBackup), el solicitante puede iniciar la instantánea llamando a IVssBackupComponents::D oSnapshotSet, que, a medida que avanza, generará eventos PrepareForSnapshot, Freeze, Thaw y PostSnapshot para que los escritores lo controlen.

Hay algunos casos en los que es posible que un solicitante no necesite crear una instantánea. En concreto, cada conjunto de archivos administrado por uno de los componentes de un escritor determinado tiene una máscara de copia de seguridad de especificación de archivo (indicada por un OR bit a bit de VSS_FILE_SPEC_BACKUP_TYPE valores) establecida durante el evento Identify . Esta máscara especifica, entre otras cosas, si un conjunto de archivos requiere que el sistema se sombree antes de que se realice la copia de seguridad.

Si no se hace una copia de seguridad de ningún conjunto de archivos en ningún volumen, no es necesario llamar a IVssBackupComponents::D oSnapshotSet .

Tareas previas a la copia de seguridad del escritor

Al controlar el evento PrepareForBackup , VSS llamará al método CVssWriter::OnPrepareBackup de cada escritor, un método virtual que, de forma predeterminada, simplemente devuelve true.

Los escritores pueden invalidar esta implementación predeterminada y usar el control para buscar información sobre la próxima copia de seguridad y tomar medidas.

Un escritor puede determinar la información sobre el tipo de operación de copia de seguridad prevista mediante los métodos siguientes:

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

Un escritor determina si los archivos que administra estarán implicados en la instantánea mediante CVssWriter::IsPathAffected.

Más importante, cuando VSS llama al método CVssWriter::OnPrepareBackup , pasa una instancia de la interfaz IVssWriterComponents , lo que permite el acceso directo a través de la interfaz IVssComponent a los de sus componentes incluidos explícitamente en el documento de componentes de copia de seguridad del solicitante. El escritor usó las instancias de la interfaz IVssComponent que definen los conjuntos de componentes para obtener acceso a su componente incluido implícitamente (consulte Selectability and working with Component Properties ( Seleccionar y trabajar con propiedades de componente).

Durante el control del evento PrepareForBackup , los escritores usan la interfaz IVssComponent para realizar operaciones de componente por componente (o conjunto de componentes por conjunto de componentes), entre las que se incluyen:

  1. Agregar archivos parciales (si se admiten) mediante una llamada a IVssComponent::AddPartialFile.
  2. Establecer los metadatos privados que el escritor necesitará para controlar la restauración.
  3. Si el escritor admite copias de seguridad incrementales y diferenciales (consulte Copias de seguridad incrementales y diferenciales), haga lo siguiente:
  4. Iniciando operaciones asincrónicas que consumen mucho tiempo, como la sincronización de datos entre varios discos. Esto permitirá que el escritor siga funcionando mientras se procesa la operación, incluido el control de otros eventos de VSS. Estas operaciones deben finalizar antes del evento Freeze .

La llamada del solicitante a IVssBackupComponents::D oSnapshotSet inicia la instantánea y genera los siguientes eventos para que los escritores controlen:

Tres de los controladores del escritor (CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreeze y CVssWriter::OnThaw) son métodos virtuales puros y cada escritor debe implementarlos en lugar de basarse en los valores predeterminados. En función de las necesidades de un escritor, se pueden codificar como métodos ficticios, simplemente devolviendo TRUE.

Dado que normalmente hay un período de tiempo reducido entre la emisión de un evento Freeze y la emisión de un evento Thaw , la mayor parte del trabajo principal en la preparación de la instantánea, como apagar procesos, crear archivos temporales o purgar colas de E/S, se controlaría en CVssWriter::OnPrepareSnapshot.

El modo en que un escritor puede usar CVssWriter::OnPrepareSnapshot para controlar su E/S antes de crear una instantánea depende en gran medida de la propia arquitectura del escritor.

Los escritores que pueden permitirse contener todas las escrituras y mantener los datos en un estado absolutamente coherente antes de inmovilizar, deben hacerlo.

Si el escritor no puede inmovilizar su E/S, debe tomar medidas para crear un origen estable para la copia de seguridad y reducir el tiempo de recuperación de una instantánea. Algunos ejemplos de esto pueden incluir poner en cola las solicitudes de E/S entrantes o generar un conjunto duplicado de archivos en una ruta de acceso alternativa que se usará como origen de una copia de seguridad.

El método CVssWriter::OnFreeze realiza tareas simples y cortas, como comprobar que la E/S izquierda de CVssWriter::OnPrepareSnapshot tiene el estado correcto y que las tareas asincrónicas iniciadas por CVssWriter::OnPrepareBackup se completaron. Este método es la última oportunidad de un escritor de vetar una instantánea si hay problemas (consulte Writer Errors and Vetes).

Por lo general, es posible que un escritor reanude el funcionamiento normal después de un evento Thaw : es posible que una instantánea no esté lista inmediatamente para la copia de seguridad después del descongelamiento, pero un escritor debe poder reanudar el funcionamiento normal. Por lo tanto, normalmente los escritores usan CVssWriter::OnThaw para volver a un estado de inmovilización previa. Sin embargo, los archivos temporales creados para admitir la instantánea deben dejarse en su lugar hasta el evento PostSnapshot . Normalmente, usaría CVssWriter::OnPostSnapshot para este tipo de limpieza. Dado que muchas aplicaciones no requieren este tipo de limpieza, CVssWriter::OnPostSnapshot es un método virtual con una implementación predeterminada que simplemente devuelve TRUE. Si se realiza una copia de seguridad incremental o diferencial, el escritor puede llamar a IVssComponent::GetPreviousBackupStamp e IVssComponent::SetBackupStamp. Para obtener más información, vea Rol de escritor en la copia de seguridad de almacenes complejos. Otro método al que se puede llamar en este momento es IVssComponent::AddDifferencedFilesByLastModifyTime.