en-UShe-IL
You are here:   Blog
Register   |  Login

Blog Archive:

Maximize
* Can be used in order to search for older blogs Entries

Search in blogs


Blog Categories:

Maximize
* Can be used in order to search for blogs Entries by Categories

Blog Tags:

Maximize
* Can be used in order to search for blogs by keywords

TNWikiSummit


Awared MVP 


 


Microsoft® Community Contributor 


Microsoft® Community Contributor


 Read first, before you you use the blog! Maximize
ינו7

Written by: ronen ariely
07/01/2014 13:21 RssIcon

Volume Shadow-Copy Service (VSS)

SQL Server VSS Writer 


בקישור זה ניתן למצוא את המצגת המלאה:

להורדת / צפייה במצגת

בקישור זה ניתן למצוא את כל דוגמאות הקודים מההרצאה וכן פרוייקטים מוכנים של פיתוח אפליקציות בסיסיות להעתקת קבצים/תיקיות/דיסקים תוך שימוש בהעתקת צל. הדוגמות פותחו בשפת C# ובשפת VB.Net.

להורדת / צפייה בקודים ניתן לעבור לבלוג נפרד בנושא AlphaVSS (ספריית מעטפת לעבודה עם ה API של VSS).


מסמך זה נמצא עדין בשלבי כתיבה!
המסמך מבוסס על מסמך WORD שכתבתי. תהליך יצירת התמונות והתאמת הפורמט של התכנים, לאינטרנט יכול לקחת זמן. אנא המתן למסמך בצורתו הסופית כאשר הודעה זו תעלם (יכול לקחת כמה ימים). 

המצגת מוכנה לצפייה כפי שהיא


הקדמה

כמה מילים

מסמך זה נכתב על ידי אריאלי רונן לצרכים פנימיים. קהל היעד מורכב מאנשי מקצוע מתחום ה SQL Server. מושגים מתחום הפיתוח מוסברים בפשטות בצורה בהירה וקצרה ובהתאמה לקהל היעד (ייתכן שנעשה מעט עיגול קצוות). בסיום המסמך יש קישורים לחומר נוסף למי שמחפש פירוט והבהרות נוספות. כמו כן ניתן להוריד מצגת מלאה, המתבססת על מסמך זה.

קריאה מהנה,
רונן אריאלי

תקציר

Volume Shadow Copy Service (עותק צל) הוא שם של קבוצת ממשקים (interface) מסוג COM. רכיבי COM אלו מיישמים סביבת הרצה שמאפשרת לבצע גיבויים בזמן שיישומים במערכת ממשיכים לכתוב לאמצעי האחסון ונועלים חלק מהקבצים. במערכות הפעלה של מייקרוסופט VSS נתמך מגרסת XP והלאה. במערכות מבוססות NT אמצעי האחסון מנוהלים על ידי ה Disk Management MMC snap-in . מאחורי הקלעים תוכנה זו עושה שימוש ברכיבי ה VSS.

הליך של ביצוע עותק צל לא יעבוד טוב אם בזמן ביצוע ההעתקה, יבוצעו קריאות לשינויים בקבצים אשר לא ינוהלו בצורה מתאימה לאפליקציות העובדות עם הקבצים. בגרסת SQL 2005  מייקרוסופט סיפקה לנו תמיכה לביצוע עותק צל על ידי כך שסיפקה  כתבן (VSS writer ) מתאים בשם SqlServerWriter.

בהרצאה זו נסביר בצורה כללית מהו עותק צל (VSS ) וכיצד הוא עובד; נראה בקצרה כיצד עובדים עם תוכנת הניהול VssAdmin ליצירה, מחיקה וקריאה של עותקי צל במערכת ההפעלה; נראה את הקשר והחשיבות לשרתי SQL ; נשים דגש על החלק המעשי כאשר נציג כיצד הדברים עובדים עם קבצי SQL . נראה כיצד אפשר לפתח אפליקציה קטנה להעתקת קבצי SQL תוך כמה דקות של עבודה. אפליקציה זו תאפשר לנו להעתיק קבצים ללא הרצת שאילתת גיבוי וללא צורך בביצוע פעולת detach והורדת מסד הנתונים מהאוויר.

Abstract

Volume Shadow Copy Service (VSS) is a group of COM interfaces. COM components Implement on running environment to perform system backups while applications continue to write to the volume and lock files. Microsoft's Operating systems supported VSS since XP's version and so on. NT-based systems manage volumes using Disk Management MMC snap-in. Behind the Scenes This software uses the VSS components.

The procedure of making a shadow copy will not work well if at the time of the copy, received requests for changes to files will not be managed in an appropriate way for applications that use the files. Microsoft SQL Server 2005 provides support for Volume Shadow Copy Service (VSS) by providing a writer, the SQL writer, so that a third-party backup application can use the VSS framework to back up database files.

In this presentation we will explain in general what Shadow Copy is and how it works; we will looks briefly how to use the shell application VssAdmin to create, delete, and list shadow copies; we will look at the SQL writer and how to use it; we will emphasize on the practical part SQL files, And how we can develop a small application for copying SQL's files within a few minutes of work. This application will allow us to copy files without running backup query and without the need to detach the database.

Using a custom wrapper written in C# and in managed C++/CLI, which provides a managed interface to the VSS API that can then be used from a .NET application.

שירות העתקת צל

רקע

בשנת 2003 מייקרוסופט התחילה לשלב במערכות ההפעלה, תשתית מובנית המספקת את היכולת לביצוע פעולות Snapshotting , יצירת תמונת מצב בזמן מסוים (Point In Time Copies ) במערכת הקבצים. תשתית זו כוללת את השירותים שמתאמים בין הפעולות הנדרשות לשם יצירת עותק צל עקבי.

פעולות אלו מחייבות תיאום בין האפליקציה (למשל יישום גיבוי קבצים), מערכת הקבצים, האפליקציות השונות שעובדות עם מערכת הקבצים, מערכות ניהול האחסון שלנו ברמת מערכת ההפעלה, ברמת תוכנות צד שלישי, וברמת חומרה.

הפעולות מבוצעות על ידי שירותים בסיסיים של Requestors,  Providers, Writers , כאשר שירות העתקת צל (Volume Shadow Copy Service או בקיצור VSS ) אחראי על התיאום בין הרכיבים השונים.

Volume Shadow Copy Service הוא שם שירות במערכת ההפעלה, המבוסס על קבוצת ממשקים מסוג COM interfaces . רכיבי VSS הם הרכיבים המיישמים את סביבת הרצה שמאפשרת לבצע גיבויים, בזמן שיישומים במערכת ממשיכים לכתוב לאמצעי האחסון ונועלים חלק מהקבצים.

הערה: העתקת צל היא לא העתקה של קובץ צל בהכרח, כי אם העתקה שנעשית ברקע/בצל. לפעמים אנחנו נעתיק באמת קובץ צל ולפעמים דווקא את הקובץ המרכזי כמו במקרה של SQL בזמן שקובץ צל שומר לנו את המשך העבודה. קובץ הצל משולב בסיום הפעולות עם הקובץ הפעיל.

הערה: עותק הצל הוא לא עותק של הקבצים שמעתיקים, כי אם המקום ששירות הצל מקציב ומנהל בכל דיסק לטובת העתקת צל. גודל מקום זה ניתן לשליטה בדרך VSSADMIN כפי שנראה בהמשך.

* הערה: אני עושה שימוש במילה מחיצה (partition ) במקום המילה המדויקת יותר באנגלית volume פשוט מפני שלא מצאתי תרגום יותר טוב כרגע ובמערכת הפעלה Windows התרגום מתאים (בלינוקס לא כל volume הוא partition ).

* במערכות מבוססות NT אמצעי האחסון מנוהלים על ידי ה Disk Management MMC snap-in . 

רכיבים הלוקחים חלק בתהליך העתקת צל

פתרון VSS שלם חייב לכלול את הרכיבים הבאים:

שירות VSS

שירות מובנה במערכת ההפעלה Windows , שמבטיח שהמרכיבים האחרים יכולים לתקשר אחד עם השני כראוי ולעבוד יחד.

VSS provider - ספק שירות VSS

הרכיב שיוצר ומתחזק את העותקים. רכבי זה יכול להיות ברמת תוכנה המנהלת כתיבה לדיסק או חומרה חיצונית. מי שעובד עם למשל עם אחסון חיצוני של SAN חשוב שיתקין את התוכנה של הספק (provider ) VSS hardware provider המתאימה לחומרה, אם סופקה. חומרה חיצונית מורידה את הצורך של מערכת ההפעלה לבצע את הפעולות ומורידה מה IO של עבודת מערכת ההפעלה.

 requester - לקוח ה VSS

התוכנה ששולחת את הבקשות לביצוע הפעולות של יצירת עותק (או פעולות אחרות ברמה גבוהה כמו יבוא או מחיקה שלהם). בדרך כלל, זה הוא היישום שבו המשתמש מבצע את הגיבוי למשל.
* נציג אפליקציה קטנה שלנו בהמשך.

VSS writer - כתבן VSS

המרכיב שמבטיח יש לנו נתונים עקביים שנקבעו לגיבוי.

שלבי תהליך העתקת צל

  1. ה Requester מבקש משירות הצל להעביר לו אינפורמציה על המערכת (רשימת הכתבנים וה metadata שלהם), ומבקש מהשירות להתכונן לביצוע העתקת צל.
  2. שירות הצל פונה לכתבנים לקבלת אינפורמציה
  3. הכתבנים יוצרים תיאור XML של הרכיבים ובמאגרי נתונים שצריכים להיות מגובה ומספקים אותו לשירות הצל. הכתבנים גם מגדירים שיטת השחזור/גיבוי, המשמשת לכל הרכיבים.
  4. שירות הצל מספק תיאור של הכתבנים ל Requester , אשר בוחר את הרכיבים שיגובו.
  5. שירות הצל מודיע לכתבנים להכין את הנתונים שלהם להעתקת צל.
  6. כל כתבן מכין את הנתונים על פי צורך, כגון השלמה את כל העסקות פתוחות, מתגלגלים עסקת יומנים, ושטיפת מטמונים. כאשר הנתונים מוכנים להעתקת צל, הכתבן מודיע לשירת הצל.
  7. שירות הצל מודיע לכתבנים להקפיא באופן זמני כתיבת נתונים מכל היישומים לכמה שניות שנדרשות כדי ליצור עותק הצל של אמצעי האחסון או אמצעי אחסון. הקפאת היישום אינה רשאית לקחת זמן רב יותר מאשר 60 שניות.
  8. שירות הצל מנקה את ה buffer של מערכת קבצים ולאחר מכן מקפיא את מערכת הקבצים, מה שמבטיח שמטה-דטא של מערכת הקבצים מתועד בצורה נכונה והנתונים כתובים בצורה עקבית.
  9. שירות הצל מודיע לספקים ליצור את עותק הצל. תהליך זה מוגדל בעד ל 10 שניות, כאשר זמן זה כל בקשות הכתיבה (IO ) מוקפאות.
  10. שירות הצל משחרר את מערכת הקבצים להמשך כתיבה.
  11. שירות הצל מודיע לכתבנים להפשיר את הקפאת הכתיבה של האפליקציות שהם אחראים עליהם. בנקודה זו האפליקציות ממשיכות לעבוד רגיל כאשר הכתיבה נעשית באמצעות עותק הצל בניהול הכתבן.
  12. ה Requesrter יכול לבצע ניסיון נוסף במקרה הצורך וחוזר לשלב 1 או שמודיע על בעיה / הצלחה (בהתאם ל GUI של האפליקציה).
  13. אם העתקת הצל הצליחה אז שירות הצל מעביר ל Requester מידע לגבי היכן נמצא עותק הצל. עותק הצל נעשה עובר לסטאטוס זמני שמאפשר כתיב/קריאה ישירה כך ששירות הצל וישומים אחרים יכולים לבצע שינויים לפני סיום תהליך העתקת הצל וכניסת הקובץ לסטאטוס קריאה בלבד. שלב זה נקרא שלב התאוששות ונעשה בו שימוש לביטול טרנזקציות של מערכת הקבצים והיישומים על עותק הצל שלא נסגרו לפני שעותק הצל נוצר.

אפליקציות שונות כוללות מרכיב writer ייחודי המתאים לעבודה עם קבצי האפליקציה. כך למשל התקנה של IIS גוררת התקנה של רכיב writer ייחודי בשם IIS Config Writer ; התקנת שרת SQL מגרסת 2005 יתקין לנו גם רכיב writer ייחודי לעבודה עם קבצי SQL בשם SqlServerWriter

איור 1: ארכיטקטורת VSS

איור 2: שלבים בביצוע עותק צל.

כיצד ספק השירות ( Provider ) בונה עותק צל

ספק שירות עותק צל יכול להיות מנוהל בתוכנה או בחומרה והוא ייעזר באחת השיטות הבאות כדי ליצור עותק צל:

העתקה מלאה (Complete copy / clone)

בשיטה זו יוצר הספק העתק שלם של הקובץ בנקודת הזמן של תחילת הביצוע. כל העבודה תימשך על הקובץ המקורי. בזמן שחזור או בזמן ביצוע ההעתקה אנחנו עובדים על עותק הקובץ.

הפנייה של הכתיבה (Redirect-on-write )

שיטה זו לא מעתיקה את הקובץ המקורי ולא מאפשרת שינויים בקובץ המקורי. במקום זאת היא שומרת את כל ההוראות לשינויים בקובץ נפרד. העבודה בפועל נעשית מול מול הקובץ המקורי הנעול תוך שימוש בקובץ השינויים.

העתקה של הכתיבה (Copy-on-write )

שיטה זו לא מעתיקה את הקובץ המקורי, אלא במקום זאת מכינה קובץ של כל השינויים שהיו מאז נקודת זמן ההתחלה (differential copy ). בקובץ נרשמים בפועל כל ההוראות (completed write I/O requests ) לביצוע שינוי במקום האחסון שלנו (volume ). ז"א השינוי מבוצע בקובץ המקורי וכן נרשם במקביל בקובץ העותק. שיטה זו מבוססת על differential copy by redirecting all changes .

* הערה: אני מדבר על קובץ לשם ההסבר כאשר הכוונה בפועל ל volume עליו אנחנו עובדים ולא בקובץ בודד בהכרח.

ניהול שירות העתקת הצל

מייקרוסופט סיפקו לנו כמה יישומים לניהול הגדרות העתקות צל, ולעבודה עם עותקי הצל שלנו. נעבור על חלקם.

ניהול עותקי הצל באמצעות ממשק ה GUI המובנה

כפי שמרמז השם VSS מנוהל ברמת מחיצות (Volume ) במערכת האחסון.

מערכת ההפעלה כוללת ממשק GUI קל ונוח לעבודה לניהול הגדרות העתקת צל על המחיצות,

1. הפעלה או השבתה של שירות הצל

2. החזרה לגרסאות קודמות של כל המחיצה, תיקיה או קובץ

3. צפייה בגרסאות קודמות של קבצים(ללא שחזור, לשם השוואה  לשמל)

4. העתקה של גרסאות קודמות למיקום חדש (ללא שחזור אלא כקובץ חדש)

5. שחזור קובץ שנמחק בטעות (כל ידי בחירת הקובץ מ Snapshot של התיקייה בה הקובץ היה)

ניהול עותקי הצל שלנו בעזרת תוכנת VssAdmin

VssAdmin is used to create, delete, and list information about shadow copies. It can also be used to resize the shadow copy storage area ("diff area"). VssAdmin includes commands such as the following:

Command

Description

Vssadmin add shadowstorage

Adds a volume shadow copy storage association.

Vssadmin create shadow

Creates a new volume shadow copy.

Vssadmin delete shadows

Deletes volume shadow copies.

Vssadmin delete shadowstorage

Deletes volume shadow copy storage associations.

Vssadmin list providers

Lists registered volume shadow copy providers.

Vssadmin list shadows

Lists existing volume shadow copies.

Vssadmin list shadowstorage

Lists all shadow copy storage associations on the system.

Vssadmin list volumes

Lists volumes that are eligible for shadow copies.

Vssadmin list writers

Lists all subscribed volume shadow copy writers on the system.

Vssadmin resize shadowstorage

Resizes the maximum size for a shadow copy storage association.

* VssAdmin can only be used to administer shadow copies that are created by the system software provider.

* VssAdmin is available on Windows client and Windows Server operating system versions.

Volume Shadow Copy Service Registry Keys

אפליקציות עזר לניהול העתקות הצל Wbadmin

The wbadmin command replaces the ntbackup command that was released with previous versions of Windows. http://technet.microsoft.com/en-us/library/cc754015.aspx


* Query Backup Versions

Wbadmin get versions Wbadmin get versions -backupTarget:Z


* Perform a one-time backup (normally scheduled differential backup is not impacted)

WBADMIN START BACKUP -backupTarget:s: -include:c:\121212121212.txt


* Copy all files in Folder using VSS

wbadmin start backup –backupTarget:s: -include: C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\AdventureWorks2012\AdventureWorks2012* -systemState -vssCopy


אפליקציית עזר לניהול העתקות הצל Diskshadow

DiskShadow.exe is a tool that exposes the functionality offered by the Volume Shadow Copy Service (VSS). By default, DiskShadow uses an interactive command interpreter similar to that of DiskRAID or DiskPart. DiskShadow also includes a scriptable mode.
http://technet.microsoft.com/en-us/library/cc772172.aspx

1.       > diskshadow
Opens the Diskshadow prompt.

2.       DISKSHADOW> set context persistent nowriters
Sets a persistent shadow copy that will remain after the Diskshadow exit command and survives computer restarts.

3.       DISKSHADOW> add volume e: alias new1
Alias gives a name to the shadow ID as in information below.

4.       DISKSHADOW> create
Creates a snapshot virtual disk on the DataCore Server and serves the virtual disk to the same host.

5.       DISKSHADOW> expose %new1% z:
Exposes shadow ID to the operating system and assigns the specified drive letter z:

6.       DISKSHADOW> delete shadows all
Deletes the shadow copy and unserves and deletes the snapshot on the DataCore Server.

7.       DISKSHADOW> reset
Clears all shadow ID aliases and resets DiskShadow to the default state.

8.       DISKSHADOW> exit
Exits the Diskshadow prompt and returns to command prompt.

אפליקציית עזר לניהול העתקות הצל VShadow

VShadow is a command-line tool that you can use to create and manage volume shadow copies.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb530725(v=vs.85).aspx

עזרים נוספים לניהול העתקות הצל Reg query / BCDEDIT / DISKPART

1. Lists entries in a store.

BCDEDIT /ENUM

* Creates, deletes, or lists a volume mount point.

MOUNTVOL

* Recovery console command shell

DISKPART

DISKPART> LIST DISK

DISKPART> LIST VOLUME

DISKPART> LIST VDISK

DISKPART>

לחקור את המפתחות הראשיים של מערכת ההפעלה:

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\VSS"

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\VSS\Providers" /s

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\VSS\VssAccessControl" /s

C:\>REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP" /s

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\MountMgr" /s

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\TrueCrypt" /s

C:\>REG QUERY "HKLM\SYSTEM\CurrentControlSet\control\hivelist" /s

The following registry keys are available for use with VSS:

1.       VssAccessControl

2.       MaxShadowCopies

3.       MinDiffAreaFileSize 

SQL Server Volume Shadow Copy Service (VSS)

הקדמה

כתבן ברירת המחדל שמסופק עם מערכות ההפעלה מ 2003 (נקרא MSDE Writer ) מספק יכולות גיבוי בסיסיות גם בעבודה עם SQL Server , אבל חסר הרבה יכולות מתקדמות, כולל האפשרות לביצוע גיבויים חלקיים (דיפרנציאליים). בגרסת SQL Server 2005 נוספה תמיכה מובנית מתקדמת, ליצירת עותקי צל של קבצי מסדי הנתונים, על ידי הוספת כתבן ייחודי התואם במיוחד לשרת ה SQL . הכתבן של שרת ה SQL  (SQL Server VSS Writer ) מותקן עם ההתקנה של השרת.

על מנת לעזור לספקי תוכנה בפיתוח תוכנות גיבוי המותאמות לשימוש בכתבן החדש, מייקרוסופט סיפקו לנו ממשק (Interface ) בשם Virtual Device Interface (VDI ). ממשקי ה API מתוכננים לספק אמינות, ביצועים מיטביים, תמיכה במגוון רחב של פעולות גיבוי ושחזור בשרת ה SQL . אפליקציית הגיבוי חייבת לעבוד לפי הכללים של API זה (לשם כך נעשה שמוש בממשקים המאתימים).

מעט על הכתבן של שרת ה SQL

SQL Server VSS Writer אינו מופעל במצב ברירת המחדל. על מנת שהשירות יוכל להאזין לפניות של שירות העתקת הצל, עלינו לוודא שהשירות מופעל ונמצא במצב אוטומטי.

* יוצא מהכלל מצב בו אנחנו עובדים עם User Instances בשרתי EXPRESS , אשר מפעילים את השירות ומתבססים עליו לצורך העבודה השוטפת שלהם. כל מופע דינאמי שנוצר יהיה רשום בכתבן באופן אוטומטי.

שירות הכתבן צריך לדבר הן עם שרת ה SQL והן עם רכיבי העתקת הצל השונים, ולכן חייבים להיות למשתמש שמפעיל אותו הרשאות מתאימות! בברירת המחדל מופעל השירות על ידי משתמש Local System account . כמו כן יש לבדוק שמשתמש זה לא הוסר מתפקיד (Role ) של sysadmin בשרת ה SQL .
* מגרסת 2012 נוסף לנו משתמש מיוחד בשרת ה SQL בשם "NT SERVICE\SQLWriter "

* להראות את השירות ברשימת השירותים (services.msc )
* להראות את המשתמש ברשימת ה sysadmin בשרת ה SQL על ידי הרצת השאילתה (00. VSS.sql )

השלבים המרכזיים בתהליך [*דגשים למפתחים]:

* הערה: המסמך המקורי כולל מקטע שלם של הסבר על תהליך השחזור. בהרצאה זו אנחנו דנים רק בנושא הגיבוי.

·         יישום הגיבוי

o        ניגש לממשק שירות העתקת הצל IvssBackupComponents ומאתחל אותו.

o        פונה גם לשירות דרך ממשק ה IVssGatherWriterMetadata לאסוף מידע מכל הכתבנים

·          שירות העתקת הצל פונקה לכל הכתבנים באמצעות שימוש באירוע OnIdentify .

·         כתבן ה SQL פונה לשרת ה SQL לקבל מידע על מסי הנתונים הנתונים הרלוונטיים

·         הכתבן יוצר מסמך XML בשם Writer Metadata Document ומעביר את המסמך ליישום הגיבוי דרך שירות הצל.

·         יישום הגיבוי מנתח את המידע שהגיע מהכתבנים השונים, ויוצר מסמך XML מאוחד באמצעות ממשק IVssBackupComponents , הכולל: (1) רשימת רכיבים לגיבוי Backup Component Document . (2) מאפיינים לביצוע שיחזור/גיבוי, פרמטרים ורכיבים לגיבוי (למשל רשימתמסדי הנתונים שיש לגבות).

·         יצירת קובץ צל עבור הדיסקים שלוקחים חלק בתהליך. בזמן זה יישום הגיבוי ממתין.

·         יישום הגיבוי קובע את סוג הגיבוי IVssBackupComponents::SetBackupState

·         מודיע באמצעות IVssBackupComponents::PrepareForBackup לכתבנים דרך השירות VSS להתכונן לגיבוי.

·         הכתבן בודק אם יש "קרעים" במסד הנתונים ואם מוצא אז מבצע ביטול של הפעולה.

·         יישום הגיבוי מבצע איתחול של פעולת יצירת התמונה על ידי קריאה לאירוע DoSnapshotSet של שירות ה VSS

·         יצירת קובץ הצל (תהליך שמוגבל ב 60 שניות לכל היותר)

o        הכתבן קוראה לשרת ה SQL להתכונן ליצירת תמונה

o        הכתבן קורא לשרת ה SQL להקפיא את כל הפעילות I/O במסדי הנתונים העומדים לפני גיבוי

o        לאחר הקפאת הפעילות שירות ה VSS יוצר את תמונת הצל.

·         הכתבן מודיע לשרת ה SQL להפשיר את הפעילות ולהמשיך בעבודה רגילה.

·         לאחר יצירת עותק הצל תבוצע פעולת auto-recovery על ידי שרת ה SQL אם יש צורך בכך..

גיבוי בפועל של קבצים

·         יישום הגיבוי מקבל את הסטאטוס של כל הכתבנים ומטפל בכישלונות.

·         אירוע Backup Complete מצביע על הצלחה של התהליך.

·         אם מסד הנתונים נמצא במצב Full Backup וביצענו גיבוי חלקי (דיפרנציאלי) ולא העתקה מסוג Copy-Only אז הכתבן יכול לבצע COMMIT .

·         יישום הגיבוי שומר את קובץ הגדרות הגיבוי וכן את קבצי ה מטא-דטא ביחד עם התוכן של הגיבוי, לצרכי שחזור.

סגירת גיבוי

·         יישום הגיבוי מחסל את עותק הצל על ידי שחרור ממשק ה IVssBackupComponents או על ידי קריאה למתודה IVssBackupComponents::DeleteSnapshots 

אפשרויות גיבוי/שחזור

כתבן ה SQL יכול לקחת חלק גם ביצירת תמונת הדיסק בלי קשר לאופן ביצוע הגיבוי של מסדי נתונים.

כתבן הSQL תומך בביצוע הפעולות הבאות:

כתבן ה SQL תומך בשני מצבים:

·         גיבוי לא מבוסס רכיבים (Non-component-based )

·         גיבוי מבוסס רכיבים (Component-based )

יישום הגיבוי בוחר בצורה מפורשת את הקבצים/תיקיות/דיסקים לגיבוי/שיחזור. במצב זה ניתן לגבות רק מסדי נתונים במצב Simple Recovery . אין אפשרות לבצע שילוב עם שרשרת גיבויים אחרי השחזור. השחזור יעשה על ידי העתק הקבצים של הגיבוי ישירות למיקום של קבצי מסד הנתונים (יחליפו אותם) ולכן מסד הנתונים חייב להיות במצב detach או שהשרת צריך כבוי.

* זו הצורה העדיפה!

כתבן ה SQL מעביר ב metadata אל יישום הגיבוי (Requestor ) באמצעות שירות הצל, נתונים ספציפיים על מסדי הנתונים במופעי שרתי ה SQL השונים. נתונים אלו משמשים את יישום הגיבוי כדי לבחור בצורה מפורשת את מסדי הנתונים (והקבצים) הרלוונטיים לגיבוי. כל הדיסקים הקשורים למסדי נתונים (הן קבצי הלוג והן קבצי הנתונים) אלו צריכים להיכלל בסט הדיסקים שצריך לבצע עליהם עותק צל. תשתית שירות הצל לא מבצע פעולה זו בצורה אוטומטית. יישום הגיבוי אחראי לוודא שכל הדיסקים שלוקחים חלק בגיבוי מוכנסים לרשימת ה snapshot . רק גיבויים מבוססי רכיבים מאפשרים לבצע גיבויים דיפרנציאליים.

  • No metadata/no rollforward
    אם לא נרשם בקובץ הגיבוי נתוני המטא-דטא אז השחזור יהיה חייב להיעשות על ידי העתקת הקבצים למיקום מסד הנתונים בזמן שמסד הנתונים מנותק או השרת מכובה.
  • Metadata exist but no additional rollforward is needed
    אם נרשם מטא-דטא בזמן הגיבוי אבל יישום השחזור לא קורא את נתוני השרשור של הגיבויים אז השרת יוכל לבצע שחזור עם recovery כחלק מהשחזור.
  • Full restore with additional rollforwards
    אם נעשה גיבוי מלא עם נתוני שרשור הגיבויים בזמן הגיבוי והנתונים זמינים ליישום השחזור אז נוכל לבצע שחזור ללא צורך ב recovery .

Differential Backup/Restore

גיבוי השינויים שנעשו מאז הגיבוי הקודם. כולל רק את הרכיבים שנעשה בהם שינוי במסד הנתונים. יישום הגיבוי צריך מידע על מיקום השינויים בקבצי מסד הנתונים, על מנת שמקטעים מתאימים של הקובצים יוכלו לעבור גיבוי. מידע זה מגיע מהכתבן בפורמט " VSS partial file information ".
הגיבוי נקבע במסמך הגיבוי על ידי הגדרת המאפיין VSS_BT_DIFFERENTIAL ומבוצע במתודה IVssBackupComponents::SetBackupState בזמן איתחול תהליך ה VSS . הכתבן אחראי להעביר את האינפורמציה על החלק היחסי שיש לגבות. יישום הגיבוי מקבל את האינםוקמציה במתודה IVssComponent::GetPartialFile , ובוחר את החלקים שיש לגבות בהתאם.

·         בשלב ההכנה לגיבוי הכתבן מוודא שיש לנו עותק בסיס ראשוני אחד (הכתבן תומך בנקודת התחלה אחת) עבור מסד נתונים.

·         בשלב הסירה אחרי יצירת תמונת הצל הכתבן מקבל אינפורמציה משרת ה SQL ומוסיף אותה בעזרת המתודה IVssComponent::AddPartialFile .

·         לכל מסד נתונים בזמן יצירת הגיבוי החלקי הכתבן שומר Partial file information format , לטובת שחזור.

·         יישום הגבוי יכול לחקור את הקבצים החלקיים בעזרת המתודות IVssComponent::GetPartialFileCount וכן IVssComponent::GetPartialFile

·         סביבת העתקת הצל צריכה להתמודד עם אירועים מורכבים כגון:

o        הוספת/הורדה של קובץ

o        כיווץ וגדילה של קבצים

o        שינוי שמות של קבצים (שמות לוגיים או אמתיים)

·         סימון זמן (timestamp ) נקבע בזמן ביצוע הגיבוי באירוע OnPostSnapshot על ידי שימוש במתודה IVssComponent::SetBackupStamp

·         נקודת הזמן הקודמת נקבעת במתודה IVssBackupComponent::SetPreviousBackupStamp   ונקראת במתודה VssComponent::GetPreviousBackupStamp

Copy-Only Backup

·         העתקה של הקבצים במנותק משרשרת הגיבויים. בשלב גילוי המידע, יישום הגיבוי יכול להגדיר את סוג הגיבוי על ידי הגדרת המאפיין VSS_BACKUP_TYPE לאפשרות VSS_BT_COPY בקריאה למתודה IVssBackupComponents::SetBackupState . הכתבן אמור להעביר אישור על יכולתו לבצע גיבוי מסוג Copy-Only על ידי הודעה על תמיכה באפשרות VSS_BS_COPY בעזרת שימוש במתודה IVssCreateWriterMetadata::SetBackupSchema .

Restore with Move

·         שירות הצל מאפשר ליישום גיבוי לקבוע מקום שחזור חדש בעזרת שימוש במתודה IVssComponent::SetNewTarget . העתקה הפיזית של הקובץ למיקום החדש נעשת באחריות יישום היבוי.

Restore with Database Rename

·         יישום הגיבוי יכול להורות על ביצוע את השחזור למסד נתונים בשם חדש על ידי קביעת המאפיין wszRestoreOptions במתודה IVssBackupComponents::SetRestoreOptions

Auto-Recovered Snapshots

·         גיבוי VSS בדרך כלל נמצא בסטאטוס non-recovery . היות וקובץ התמונה הוא לקריאה בלבד לא ניתן לבצע פעולת recovery באופן הרגיל של שרת ה SQL , אבל ניתן לקבוע בזמן יצירת הגיבוי את המאפיין VSS_CF_APP_ROLLBACK_RECOVERY המסמן שיש לבצע recovery .

תמיכה ב Fulltext

Special Cases

·         Autoclose databases

·         File list

·         Stopped instances

·         System databases

·         Simple Recovery model user databases

·         Rolling forward user databases

הפעולות הבאות לא נתמכות!

גיבוי לוג

גיבוי מבנה הקבצים בקבוצות

שחזור עמודים

 

פיתוח אפליקציית VSS בשפת C#

מערכת ההפעלה כוללת פונקציות מובנות בעזרתן מבוצעת העתקת קבצים. פונקציות אלו הן חלק מה kernel32.dll של מערכת ההפעלה.

CopyFile()

CopyFileEx() - can also call a specified callback function each time a portion of the copy operation is completed.  Additionally, can be canceled during the copy operation.

נעבוד עם הפונקציה השנייה מפני שאנחנו רוצים גם להכין לנו דיווח של כמה מהקובץ שלנו כבר הועתק.

Developing for Windows XP and Windows Server 2003 requires compiling and linking your application against the Shadow Copy Service SDK 7.2. From Windows Vista and onwards things are simpler though with all the functionality available in the standard Windows SDK.

Volume Shadow Copy Service SDK 7.2 (XP/2003):
http://www.microsoft.com/en-us/download/details.aspx?id=23490

Dot.Net developing class:
http://alphavss.codeplex.com/

Copying a SQL Server Database File That’s in Use Using Volume Shadow Copy
http://improve.dk/copying-a-sql-server-database-file-thatrsquos-in-use-using/