Bagikan melalui


Peran Pemohon dalam Mencadangkan Penyimpanan Kompleks

Seperti semua operasi penting di bawah VSS, pencadangan inkremental dan diferensial memerlukan kerja sama yang erat antara pemohon dan penulis.

Jenis Pencadangan

Infrastruktur ini memberikan dukungan khusus untuk lima jenis pencadangan. Langkah-langkah tersebut dapat digambarkan sebagai berikut:

  • Penuh (VSS_BT_FULL). File akan dicadangkan terlepas dari tanggal pencadangan terakhirnya. Riwayat pencadangan setiap file akan diperbarui, dan jenis cadangan ini dapat digunakan sebagai dasar pencadangan bertahap atau diferensial. Jika ada file log, file tersebut dapat dipotong sebagai akibat dari cadangan ini.

    Memulihkan cadangan penuh hanya memerlukan satu gambar cadangan.

  • Diferensial (VSS_BT_DIFFERENTIAL). VSS API digunakan untuk memastikan bahwa hanya file yang telah diubah atau ditambahkan sejak pencadangan penuh terakhir yang akan disalin ke media penyimpanan; semua informasi pencadangan perantara diabaikan. Ini mungkin termasuk seluruh file, atau rentang tertentu dalam file. Cadangan diferensial dikaitkan dengan pencadangan penuh, dan umumnya tidak dapat dipulihkan sampai pencadangan penuh telah dipulihkan. Jika ada file log, file tersebut biasanya tidak akan dipotong sebagai akibat dari cadangan ini.

    Memulihkan cadangan diferensial memerlukan gambar cadangan asli dan gambar cadangan diferensial terbaru yang dibuat sejak pencadangan penuh terakhir.

  • Inkremental (VSS_BT_INCREMENTAL). VSS API digunakan untuk memastikan bahwa hanya file yang telah diubah atau ditambahkan sejak pencadangan penuh atau inkremental terakhir yang akan disalin ke media penyimpanan. Ini mungkin termasuk seluruh file, atau rentang tertentu dalam file. Beberapa penulis tidak mengizinkan cadangan inkremental dicampur dengan cadangan diferensial. Jika ada file log, file tersebut dapat dipotong sebagai akibat dari cadangan ini.

    Memulihkan cadangan inkremental memerlukan gambar cadangan asli dan semua gambar cadangan inkremental yang dibuat sejak pencadangan awal.

  • Pencadangan Log (VSS_BT_LOG). Hanya file log penulis (file yang ditambahkan ke komponen dengan metode IVssCreateWriterMetadata::AddDataBaseLogFiles , dan diambil oleh panggilan ke IVssWMComponent::GetDatabaseLogFile) yang akan dicadangkan. Jenis cadangan ini khusus untuk VSS. Pencadangan log cenderung cukup sering diambil. Biasanya, file log akan dipotong sebagai akibat dari cadangan ini.

  • Salin Cadangan (VSS_BT_COPY). Seperti jenis pencadangan VSS_BT_FULL, file akan dicadangkan terlepas dari tanggal pencadangan terakhirnya. Namun, riwayat pencadangan setiap file tidak akan diperbarui, dan pencadangan semacam ini tidak dapat digunakan sebagai dasar pencadangan bertahap atau diferensial. File log tidak boleh dipotong sebagai akibat dari cadangan salinan.

Dukungan File Parsial

Beberapa penulis mendukung pemulihan file melalui penimpaan bagian file yang mereka kelola. Pemohon dapat dirancang untuk memanfaatkan ini, dan jika demikian menunjukkan hal ini dengan mengatur informasi di IVssBackupComponents::SetBackupState.

Pemohon menentukan jenis cadangan apa yang sedang dilakukan melalui parameter backupTypeIVssBackupComponents::SetBackupState. Penulis yang berbeda akan mendukung berbagai jenis cadangan. Setelah IVssBackupComponents::GatherWriterMetadata dipanggil, pemohon dapat menentukan jenis cadangan apa yang didukung penulis tertentu dengan memanggil IVssExamineWriterMetadata::GetBackupSchema. Nilai yang dikembalikan adalah masker bit yang menunjukkan dukungan untuk jenis cadangan yang berbeda. VSS_BS_DIFFERENTIAL menunjukkan dukungan untuk cadangan diferensial, VSS_BS_INCREMENTAL untuk pencadangan inkremental, VSS_BS_LOG untuk cadangan log, dan VSS_BS_COPY untuk cadangan salinan; semua penulis harus mendukung pencadangan penuh. Jika penulis tidak mendukung pencampuran cadangan inkremental dengan cadangan diferensial, bendera VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL juga akan ditambahkan. Jika pemohon melakukan pencadangan bertahap atau diferensial dan penulis tertentu tidak mendukung jenis cadangan tersebut, pencadangan penuh harus dilakukan pada penulis tersebut.

Stempel Cadangan

Pencadangan inkremental dan diferensial selalu terkait dengan cadangan sebelumnya. Ada dua cara untuk mengikat cadangan. Untuk penyimpanan data sederhana, pemohon dapat melacak korelasi antara cadangan. Namun, untuk penyimpanan data yang lebih kompleks, penulis harus mempertahankan tanda waktunya sendiri dengan cadangan; tanda waktu ini dapat melacak posisi log, informasi titik pemeriksaan, dan sebagainya. Pemohon dapat menentukan apakah penulis tertentu perlu menyimpan tanda waktunya sendiri dengan memeriksa bit VSS_BS_TIMESTAMPED dalam nilai yang dikembalikan oleh IVssExamineWriterMetadata::GetBackupSchema.

Penulis yang menyimpan tanda waktu dalam cadangan akan menambahkan tanda waktu baik saat memproses IVssBackupComponents::P repareForBackup atau saat memproses IVssBackupComponents::D oSnapshotSet. Pemohon dapat memperoleh tanda waktu ini dengan memanggil IVssComponent::GetBackupStamp. Saat melakukan pencadangan inkremental atau diferensial, pemohon perlu mengikat cadangan saat ini ke beberapa cadangan sebelumnya. Ini dilakukan dengan mendapatkan tanda waktu dari cadangan sebelumnya dari komponen tertentu dan meneruskannya ke fungsi IVssBackupComponents::SetPreviousBackupStamp ; ini perlu dilakukan untuk setiap komponen yang dicadangkan di cadangan sebelumnya.

Mencadangkan File

Mencadangkan File yang Dilaporkan oleh Penulis

Setiap spesifikasi file yang ditambahkan penulis ke metadatanya selama fase GatherWriterMetadata berisi masker jenis cadangan yang menentukan kapan file harus dicadangkan. Pemohon menentukan apa masker ini dengan memanggil IVssWMFiledesc::GetBackupTypeMask. Nilai dalam masker ini digunakan untuk menentukan jenis cadangan mana spesifikasi file yang perlu dicadangkan. Masker dapat berisi satu atau beberapa nilai bit berikut:

VSS_FSBT_FULL_BACKUP_REQUIRED

Diperlukan untuk pencadangan penuh.

VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

Diperlukan untuk pencadangan diferensial.

VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED

Diperlukan untuk pencadangan inkremental.

VSS_FSBT_LOG_BACKUP_REQUIRED

Diperlukan untuk pencadangan log.

VSS_FSBT_ALL_BACKUP_REQUIRED

Diperlukan untuk semua jenis cadangan; ini adalah defaultnya.

Spesifikasi ini menggantikan spesifikasi selektivitas komponen. Misalnya, pertimbangkan komponen yang semua filenya ditandai dengan VSS_FSBT_LOG_BACKUP_REQUIRED tetapi tidak dengan VSS_FSBT_FULL_BACKUP_REQUIRED. Misalkan komponen ini tidak dapat dipilih untuk cadangan (bSelectable salah ketika IVssCreateWriterMetadata::AddComponent dipanggil). Dalam kasus pencadangan log, ini berarti bahwa semua file dalam komponen ini harus selalu dicadangkan. Namun, dalam kasus pencadangan penuh, tidak ada file yang perlu dicadangkan, terlepas dari fakta bahwa selektivitas komponen menyiratkan bahwa itu harus dicadangkan.

Pencadangan berdasarkan Waktu Modifikasi Terakhir

Informasi spesifikasi file yang ditentukan dalam fase IVssBackupComponents::GatherWriterMetadata tidak memberikan informasi pemohon tentang apa yang telah berubah sejak pencadangan terakhir. Salah satu cara bagi penulis untuk menunjukkan perubahan pada pemohon adalah dengan menggunakan mekanisme file yang berbeda. Penulis dapat menentukan bahwa file tertentu dalam komponen harus dicadangkan hanya jika telah dimodifikasi sejak waktu tertentu; penulis dapat menentukan file-file ini baik di IVssBackupComponents::P repareForBackup atau di IVssBackupComponents::D oSnapshotSet. Pemohon dapat menentukan file-file ini dengan memanggil IVssComponent::GetDifferencedFilesCount dan IVssComponent::GetDifferencedFile. Jika spesifikasi file cocok dengan satu set di IVssBackupComponents::GatherWriterMetadata (yang saat ini valid berdasarkan masker jenis cadangan) informasi file yang berbeda mengambil alih informasi sebelumnya; artinya, file yang cocok dengan spesifikasi file tersebut sekarang dicadangkan hanya jika telah dimodifikasi sejak waktu yang ditentukan. Waktu modifikasi terakhir dikomunikasikan menggunakan struktur FILETIME . Jika nilai struktur ini nol, ini menyiratkan bahwa waktu modifikasi terakhir harus ditentukan berdasarkan catatan pemohon waktu pencadangan terakhir.

Pencadangan File Parsial

Cara lain bagi penulis untuk menunjukkan perubahan pada pemohon adalah dengan menggunakan mekanisme file parsial. Penulis dapat menentukan rentang byte dalam file komponen yang perlu dicadangkan; penulis dapat menentukan rentang file ini baik di IVssBackupComponents::P repareForBackup atau di IVssBackupComponents::D oSnapshotSet. Pemohon dapat menentukan file-file ini dengan memanggil IVssComponent::GetPartialFileCount dan IVssComponent::GetPartialFile. IVssComponent::GetPartialFile akan mengembalikan jalur dan nama file yang menunjuk ke file, dan string rentang yang menunjukkan apa yang perlu dicadangkan dalam file. Seperti halnya file yang berbeda, jika jalur dan nama file cocok dengan spesifikasi file yang ditetapkan oleh penulis di IVssBackupComponents::GatherWriterMetadata, informasi file parsial mengambil alih pengaturan sebelumnya. String rentang dapat memiliki dua format: dapat menentukan rentang secara langsung, atau dapat menentukan file yang berisi informasi rentang. Jika menentukan rentang secara langsung, sintaksnya adalah daftar yang dipisahkan koma dari formulir offset1:length1, offset2:length2, di mana setiap offset dan panjang adalah bilangan bulat yang tidak ditandatangani 64-bit. Jika menentukan file rentang, string rentang harus diatur ke File= nama file, di mana nama file adalah jalur lengkap ke file rentang. File rentang itu sendiri adalah file biner yang diformat sebagai daftar bilangan bulat 64-bit yang tidak ditandatangani. Bilangan bulat pertama menunjukkan berapa banyak rentang yang diwakili dalam file. Setiap pasangan bilangan bulat berikutnya mewakili offset dan panjang rentang. Pemohon harus berhati-hati untuk mencadangkan dan memulihkan file rentang ini juga.

Aturan Spesifikasi File

Spesifikasi file yang ditambahkan melalui file yang dibedakan dan mekanisme file parsial akan mengubah spesifikasi file yang diatur dalam IVssBackupComponents::GatherWriterMetadata atau menambahkan file yang sepenuhnya baru. Jika memodifikasi spesifikasi file yang diatur dalam IVssBackupComponents::GatherWriterMetadata menggunakan mekanisme file parsial, maka pemohon dapat mengharapkan spesifikasi file agar sama persis dengan salah satu spesifikasi file yang diatur dalam komponen di IVssBackupComponents::GatherWriterMetadata. Spesifikasi file tidak akan sebagian tumpang tindih dengan spesifikasi file lain, dan tidak akan cocok dengan spesifikasi file apa pun di komponen penulis lainnya. Spesifikasi file yang ditambahkan menggunakan mekanisme file parsial dapat sebagian tumpang tindih dengan spesifikasi file lain. Jika ini benar, spesifikasi file perbedaan atau file parsial akan menggantikan spesifikasi yang ditetapkan di IVssBackupComponents::GatherWriterMetadata. Spesifikasi file umum dapat memiliki nilai lokasi alternatif (dikembalikan oleh IVssWMFiledesc::GetAlternateLocation) yang menunjukkan tempat alternatif untuk mendapatkan file pada waktu pencadangan. Jika spesifikasi file yang diatur melalui mekanisme file yang berbeda atau sebagian cocok dengan spesifikasi file yang ada yang memiliki lokasi alternatif, data harus diambil dari lokasi alternatif ini. Jika spesifikasi file yang diatur melalui mekanisme file perbedaan atau file parsial tidak cocok dengan spesifikasi yang ada untuk komponen, maka rentang file ini sekarang harus ditambahkan ke cadangan. Pemohon dapat mengharapkan bahwa hanya file pada volume yang telah disertakan dalam kumpulan salinan bayangan yang akan ditambahkan menggunakan salah satu mekanisme ini.

Pencadangan tanpa Salinan Bayangan

Jenis file tertentu mungkin tidak perlu dicadangkan dari volume salinan bayangan. Misalnya, ini akan sering menjadi true dari file log database. Karena file log tumbuh secara monoton, dan penulis dapat menentukan dengan tepat bagian file apa yang akan dicadangkan menggunakan file parsial, sering kali dimungkinkan untuk mencadangkan log dari volume asli. Sebagai pengoptimalan, penulis dapat menandai file mana yang memerlukan salinan bayangan untuk berbagai jenis cadangan menggunakan masker jenis cadangan. Nilai yang dikembalikan dari IVssWMFiledesc::GetBackupTypeMask dapat berisi satu atau beberapa nilai bit berikut:

VSS_FSBT_FULL_SNAPSHOT_REQUIRED

Salinan bayangan diperlukan untuk pencadangan penuh.

VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

Salinan bayangan diperlukan untuk pencadangan diferensial.

VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED

Salinan bayangan diperlukan untuk pencadangan bertahap.

VSS_FSBT_LOG_SNAPSHOT_REQUIRED

Salinan bayangan diperlukan untuk pencadangan log.

VSS_FSBT_ALL_SNAPSHOT_REQUIRED

Salinan bayangan diperlukan untuk semua jenis cadangan; ini adalah default.

Jika volume tertentu hanya berisi komponen yang tidak memerlukan salinan bayangan untuk cadangan ini, pemohon dapat melewati langkah pembuatan salinan bayangan untuk volume ini. Semua data pada volume ini dapat disalin ke media cadangan langsung dari volume asli.

Memulihkan File

Pemulihan Berurutan

Setelah pemohon selesai melakukan operasi pemulihan, pemohon mengirimkan peristiwa PostRestore ke semua penulis. Umumnya, penulis menangani peristiwa ini dengan melakukan pemulihan atau operasi pasca-pemulihan lainnya. Pemulihan cadangan inkremental, namun, biasanya terjadi sebagai urutan operasi pemulihan, satu per pencadangan inkremental. Pemohon perlu memberi tahu penulis bahwa pemulihan semacam itu sedang berlangsung untuk mencegah pemulihan atau operasi lain yang tidak diinginkan terjadi sampai pemulihan benar-benar dilakukan. Ini dilakukan dengan memanggil IVssBackupComponents::SetAdditionalRestores. Metode ini dipanggil per komponen, dan menunjukkan kepada penulis bahwa lebih banyak pemulihan yang datang untuk komponen tersebut. Untuk pemulihan akhir dalam urutan, bendera pemulihan tambahan harus diatur ke false (nilai defaultnya), yang menunjukkan bahwa ini adalah pemulihan terakhir dalam urutan untuk komponen tersebut.

Target Baru

Jika didukung oleh penulis, pemohon dapat memulihkan file data ke lokasi selain lokasi waktu pencadangan asli. Pemohon dapat memeriksa dukungan ini dengan memanggil IVssExamineWriterMetadata::GetBackupSchema. Bit VSS_BS_WRITER_SUPPORTS_NEW_TARGET akan diatur jika penulis mendukung perilaku ini. Pemohon memberi tahu penulis lokasi baru dengan memanggil IVssBackupComponents::AddNewTarget untuk setiap spesifikasi file yang direlokasi. Pemohon juga dapat memutuskan untuk memulihkan file rentang tertentu ke lokasi yang berbeda. Pemohon menginformasikan kepada penulis tentang perubahan ini dengan memanggil IVssBackupComponents::SetRangesFilePath.

Target Terarah

Untuk skenario pemulihan yang rumit, penulis mungkin ingin memetakan rentang file yang dicadangkan ke rentang yang berbeda dari file yang sama atau berbeda. Ini dapat dilakukan dengan menggunakan mekanisme target yang diarahkan. Pemohon dapat menentukan setelah fase IVssBackupComponents::P reRestore bahwa mekanisme ini digunakan untuk komponen dengan memanggil IVssComponent::GetRestoreTarget dan memeriksa pengembalian VSS_RT_DIRECTED. Pemohon dapat memperoleh semua pemulihan yang dialihkan ini dengan memanggil IVssComponent::GetDirectedTargetCount dan IVssComponent::GetDirectedTarget. IVssComponent::GetDirectedTarget akan mengembalikan jalur lengkap ke file sumber pada cadangan dan jalur lengkap ke file tujuan yang akan dipulihkan. Ini juga mengembalikan daftar rentang untuk masing-masing file ini. Pemohon kemudian bertanggung jawab untuk memulihkan rentang yang ditentukan dalam file sumber ke rentang yang dipetakan dalam file tujuan. Format string rentang sama seperti di IVssComponent::GetPartialFile.