Gambaran Umum Tugas Pra-Pencadangan
Tugas pra-pencadangan di bawah VSS difokuskan pada pembuatan salinan bayangan volume yang berisi data untuk cadangan. Aplikasi cadangan akan menyimpan data dari salinan bayangan, bukan volume aktual. Untuk informasi selengkapnya, lihat Gambaran Umum Pemrosesan Cadangan Di bawah VSS.
Pemohon biasanya menunggu penulis mempersiapkan pencadangan dan membuat salinan bayangan. Penulis harus menentukan apakah itu untuk berpartisipasi dalam cadangan dan, jika ya, mengonfigurasi filenya dan dirinya sendiri untuk siap untuk cadangan dan salinan bayangan. Tabel berikut ini memperlihatkan urutan tindakan dan peristiwa yang diperlukan untuk mempersiapkan operasi pencadangan.
Tindakan pemohon | Kejadian | Tindakan penulis |
---|---|---|
Pemohon dapat mengatur opsi pencadangan (lihat IVssBackupComponents::SetBackupOptions) | Tidak ada | Tidak ada |
Mendukung operasi pencadangan bertambah bertahap dan diferensial dengan memeriksa stempel cadangan yang disimpan (lihat IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) | Tidak ada | Tidak ada |
Beri tahu penulis untuk mempersiapkan operasi pencadangan menggunakan IVssBackupComponents::P repareForBackup | PrepareForBackup | Persiapan penulis termasuk menentukan apakah file akan dicadangkan, apakah penulis akan berpartisipasi dalam pembekuan salinan bayangan, serta membuat metadata khusus penulis (lihat CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadata, dan IVssComponent:: GetPreviousBackupStamp. |
Pemohon menunggu penulis menyiapkan cadangan menggunakan IVssAsync. Ini juga harus memverifikasi status penulis (lihat IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus) | Tidak ada | Tidak ada |
Pemohon meminta salinan bayangan menggunakan IVssBackupComponents::D oSnapshotSet | Tidak ada | Tidak ada |
Tidak ada | PrepareForSnapshot |
CVssWriter::OnPrepareSnapshot: Masukkan penulis ke dalam status siap salinan bayangan. |
Tidak ada | Bekukan |
CVssWriter::OnFreeze: Penyiapan akhir sebelum salinan bayangan. |
Tidak ada | Thaw |
CVssWriter::OnThaw: Fungsi normal (termasuk I/O) dapat dilanjutkan. |
Tidak ada | PostSnapshot |
CVssWriter::OnPostSnapshot: Pembersihan akhir persiapan salinan bayangan. Lihat IVssComponent::AddDifferencedFilesByLastModifyTime dan IVssComponent::SetBackupStamp. |
Pemohon menunggu penyelesaian salinan bayangan menggunakan: IVssAsync, pemohon juga harus memverifikasi status penulis (lihat IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus |
Tidak ada | Tidak ada |
Tugas Pra-Pencadangan Pemohon
Selain itu, sebelum membuat peristiwa IVssBackupComponents::P repareForBackup , pemohon juga dapat mengatur opsi pencadangan untuk penulis individual menggunakan IVssBackupComponents::SetBackupOptions tergantung pada spesifik setiap penulis dan apakah pemohon mengetahuinya.
Untuk mendukung operasi inkremental dan diferensial, pemohon dapat pada titik ini memilih untuk memeriksa komponen untuk stempel waktu operasi pencadangan sebelumnya (menggunakan IVssComponent::GetBackupStamp) dan menggunakan informasi tersebut untuk mengatur stempel waktu sebelumnya bagi penulis untuk memproses (menggunakan IVssBackupComponents::SetPreviousBackupStamp). Lihat Pencadangan Inkremental dan Diferensial untuk informasi selengkapnya.
Pemohon sekarang dapat mengarahkan penulis sistem untuk menyelesaikan persiapan pra-pencadangan dan untuk menangani pembuatan salinan bayangan.
Pertama, pemohon menghasilkan peristiwa PrepareForBackup dengan memanggil IVssBackupComponents::P repareForBackup.
Setelah semua penulis yang berpartisipasi kembali dari menangani peristiwa PrepareForBackup (yang ditentukan pemohon dengan menggunakan instans antarmuka IVssAsync yang dikembalikan oleh PrepareForBackup), pemohon dapat memulai salinan bayangan dengan memanggil IVssBackupComponents::D oSnapshotSet, yang, seiring kemajuannya, akan menghasilkan peristiwa PrepareForSnapshot, Freeze, Thaw, dan PostSnapshot untuk ditangani oleh penulis.
Ada beberapa kasus di mana pemohon mungkin tidak perlu membuat salinan bayangan. Secara khusus, setiap set file yang dikelola oleh salah satu komponen penulis tertentu memiliki masker Cadangan Spesifikasi File (ditunjukkan oleh bitwise ATAU nilai VSS_FILE_SPEC_BACKUP_TYPE ) yang ditetapkan selama peristiwa Identifikasi . Masker ini menentukan, antara lain, apakah set file mengharuskan sistem disalin bayangan sebelum pencadangannya dilakukan.
Jika tidak ada set file yang akan dicadangkan pada volume apa pun yang memerlukan salinan bayangan, maka IVssBackupComponents::D oSnapshotSet tidak perlu dipanggil.
Tugas Pra-Pencadangan Penulis
Saat menangani peristiwa PrepareForBackup , VSS akan memanggil metode CVssWriter::OnPrepareBackup setiap penulis, metode virtual, yang secara default hanya mengembalikan true.
Penulis dapat mengambil alih implementasi default ini dan menggunakan penanganan untuk menemukan informasi tentang pencadangan yang akan datang dan mengambil tindakan.
Penulis dapat menentukan informasi tentang jenis operasi pencadangan yang direnungkan dengan menggunakan metode berikut:
Penulis menentukan apakah file yang dikelolanya akan terlibat dalam salinan bayangan dengan menggunakan CVssWriter::IsPathAffected.
Yang lebih penting, ketika VSS memanggil metode CVssWriter::OnPrepareBackup , ia meneruskan instans antarmuka IVssWriterComponents , yang memungkinkan akses langsung melalui antarmuka IVssComponent kepada komponennya yang secara eksplisit disertakan dalam Dokumen Komponen Cadangan pemohon. Penulis menggunakan instans antarmuka IVssComponent yang menentukan set komponen untuk mendapatkan akses ke komponen yang disertakan secara implisit (lihat Kemampuan Pemilihan dan bekerja dengan Properti Komponen).
Selama penanganan peristiwa PrepareForBackup , penulis menggunakan antarmuka IVssComponent untuk melakukan operasi komponen demi komponen (atau komponen yang diatur oleh set komponen), termasuk:
- Menambahkan file parsial (jika didukung) dengan memanggil IVssComponent::AddPartialFile.
- Mengatur metadata privat apa pun yang diperlukan penulis untuk menangani pemulihan.
- Jika penulis mendukung pencadangan inkremental dan diferensial (lihat Pencadangan Bertahap dan Diferensial), lakukan hal berikut:
- Memeriksa stempel waktu pencadangan sebelumnya dengan memanggil IVssComponent::GetPreviousBackupStamp.
- Menambahkan file perbedaan yang diperlukan dengan memanggil IVssComponent::AddDifferencedFilesByLastModifyTime.
- Jika penulis mendukung skema VSS_BS_TIMESTAMPED , menambahkan string stempel waktu cadangan dalam format penulis sendiri menggunakan IVssComponent::SetBackupStamp.
- Memulai operasi asinkron yang sangat memakan waktu, seperti menyinkronkan data di beberapa disk. Ini akan memungkinkan penulis untuk terus bekerja saat operasi diproses, termasuk menangani peristiwa VSS lainnya. Operasi ini harus berakhir sebelum peristiwa Bekukan .
Panggilan pemohon ke IVssBackupComponents::D oSnapshotSet memulai salinan bayangan dan menghasilkan peristiwa berikut bagi penulis untuk menangani:
Tiga handler penulis—CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreeze, dan CVssWriter::OnThaw—adalah metode virtual murni, dan setiap penulis harus mengimplementasikannya daripada mengandalkan default. Tergantung pada kebutuhan penulis, mereka dapat dikodekan sebagai metode dummy, hanya mengembalikan TRUE.
Karena biasanya ada jendela waktu yang sempit antara penerbitan peristiwa Pembekuan dan penerbitan peristiwa Pencairan , sebagian besar pekerjaan utama dalam mempersiapkan salinan bayangan—seperti mematikan proses, membuat file sementara, atau menguras antrean I/O—akan ditangani di CVssWriter::OnPrepareSnapshot.
Bagaimana penulis dapat menggunakan CVssWriter::OnPrepareSnapshot untuk menangani I/O-nya sebelum pembuatan salinan bayangan sangat tergantung pada arsitektur penulis sendiri.
Penulis yang mampu menyimpan semua tulisan dan menyimpan data dalam keadaan konsisten absolut sebelum Freeze, harus melakukannya.
Jika penulis tidak dapat membekukan I/O-nya, maka harus mengambil tindakan untuk membuat sumber yang stabil untuk cadangan dan untuk mengurangi waktu pemulihan untuk salinan bayangan. Contohnya mungkin termasuk mengantre permintaan I/O masuk atau menghasilkan sekumpulan file duplikat dalam jalur alternatif yang akan digunakan sebagai sumber cadangan.
Metode CVssWriter::OnFreeze melakukan tugas singkat sederhana seperti memverifikasi bahwa CVssWriter::OnPrepareSnapshot meninggalkan I/O dalam keadaan yang benar, dan bahwa tugas asinkron apa pun yang dimulai oleh CVssWriter::OnPrepareBackup selesai. Metode ini adalah kesempatan terakhir penulis untuk mem-veto salinan bayangan jika ada masalah (lihat Kesalahan Penulis dan Vetoes).
Penulis umumnya dapat melanjutkan operasi normal setelah peristiwa Thaw : salinan bayangan mungkin tidak segera siap untuk cadangan setelah Pencairan, tetapi penulis harus dapat melanjutkan operasi normal. Oleh karena itu, biasanya CVssWriter::OnThaw digunakan oleh penulis untuk kembali ke status pra-pembekuan. Namun, setiap file sementara yang dibuat untuk mendukung salinan bayangan harus dibiarkan di tempat sampai peristiwa PostSnapshot . Biasanya, Anda akan menggunakan CVssWriter::OnPostSnapshot untuk pembersihan semacam ini. Karena banyak aplikasi tidak memerlukan pembersihan semacam ini, CVssWriter::OnPostSnapshot adalah metode virtual dengan implementasi default yang hanya mengembalikan TRUE. Jika pencadangan bertahap atau diferensial sedang dilakukan, penulis dapat memanggil IVssComponent::GetPreviousBackupStamp dan IVssComponent::SetBackupStamp. Untuk informasi selengkapnya, lihat Peran Penulis dalam Mencadangkan Penyimpanan Kompleks. Metode lain yang dapat dipanggil saat ini adalah IVssComponent::AddDifferencedFilesByLastModifyTime.