Remove ads
יצירת עותקים נוספים של נתונים מוויקיפדיה, האנציקלופדיה החופשית
שכפול נתונים הוא תהליך שמטרתו לשפר את האמינות, רמת הסובלנות לתקלות או רמת הזמינות (או כל צירוף שלהם) במערכות מחשבים. השכפול משתמש באמצעים יתירים שקיימים במערכות המחשב ובעיקר:
כמו כן, שכפול נתונים נועד להבטיח שמשאבי מערכת יתרים המכילים שעותקים נפרדים של הנתונים או הפעולות שמבצעת התוכנה על-גבי החומרה יהיו עקביים, גם כאשר הנתונים הופצו, או חושבו מחדש, במיקומים שונים. לכן, שכפול נתונים יכול לשמש מחשבי קצה מרוחקים או מחשבים ניידים המקושרים דרך ברשתות תקשורת מקומית, אזורית, חיוג, אלחוטית, או באינטרנט.
הגישה אל הישות המשוכפלת היא בדרך כלל זהה לגישה לישות אחת, שאינה משוכפלת והשכפול עצמו אמור להיות שקוף למשתמש החיצוני (הגם שלעיתים יש צורך שהתוכנה אצל המשתמש החיצוני תתמוך בתכונות מנגנוני שכפול הנתונים). כמו כן, כאשר מתרחש כישלון, השחזור מהעתקים צריך להיות מוסתר ככל האפשר מהמשתמש. מצב זה ממומש לרוב בצורת אשכולות או גיבוי חם של מערכת השרתים, באמצעות תמיכה של צד השרת או לעיתים נדירות יותר בתמיכה של בצד הלקוח (דוגמה לכך היא שימוש במספר שרתי DNS המגבים אחד את השני ומערכת ההפעלה הבוחרת ביניהם).
ניתן לסווג את השכפולים לפעילים ולפסיביים - שכפול פעיל מבוצע על ידי עיבוד הבקשה בכל עותק. ואילו בשכפול פסיבי כל בקשה מעובדת על גבי עותק אחד ולאחר מכן נתוני המצב שלה מועברים לעותקים אחרים. אם בכל זמן נתון עותק האב מעבד את כל הבקשות, אז זוהי סכמת עיקרי-גיבוי (ראשי-משני) שקיימת באשכולות. לעומת זאת אם כל עותק יכול לעבד את הבקשה ולאחר מכן מפיץ את נתוני המצב החדש, אזי זאת מערכת מרובת עותקים ראשיים (multi master) הדורשת צורה כלשהי של בקרת הפצה, כגון מנהל נעילות מבוזרות.
שכפול בדרך כלל מתבצע על העברת תמונות של הנתונים כל בזמן מסוים או על ידי רישום יומן של השינויים שהתבצעו מאז ביצוע השכפול האחרון (או על ידי שילוב שלהם). השכפול יכול להתבצע באופן חד-כיווני או דו/רב-כיווני (במיוחד במערכות אשכולות או במערכות מבוזרות).
איזון עומסים שונה מהשכפול, משום שהוא מפיץ עומס של חישובים שונים (ולא זהים) על פני מספר שרתים, ומאפשר מצב חישוב יחיד במקרה של כשל במערכות האחרות. עם זאת במרבית המערכות עם איזון עומסים הנתונים משוכפלים בין המערכות.
גיבוי שונה משכפול, שכן הוא שומר עותק של הנתונים מבלי לשנותם במשך זמן ארוך ואילו ההעתקים הנוצרים על ידי שכפול מתעדכנים בקצב גבוה ומאבדים במהרה את כל רישום המצב ההיסטורי שלהם (למעט Metadata על ביצוע השכפול עצמו שנשמר לרוב).
סנכרון-נתונים שונה משכפול בכך שבדרך כלל שכפול מתייחס ליצור עותק, שלם או חלקי, של הנתונים המקוריים, בעוד סנכרון מתייחס לפתרון של ההבדלים בין שני העותקים על ידי העתקות ביניהם.
לשכפול יש שימושים רבים אולם הנפוצים ביותר הם:
היתרונות העיקריים של השכפול הם:
החסרונות העיקריים של השכפול:
שכפול הוא אחד הנושאים החשובים ביותר והוותיקים ביותר בתחום הכולל של מערכות מבוזרות.
המטרה בשכפול במערכות מבוזרות היא ליצור קבוצת תהליכים, המשוכפלים ביניהם בשכפול נתונים או חישובים, היכולים לטפל באירועים המתרחשים. במקרה של שכפול נתונים תהליכים אלו הם פסיביים ופועלים לטפל בנתונים המאוחסנים הם מגיבים לבקשות קריאה ומיישמים את העדכונים שבוצעו על העותק הראשי. במקרה של שכפול חישוב המטרה בדרך כלל היא לספק סובלנות לתקלות (לדוגמה, שירות משוכפל יכול לשמש לשליטה על מתג הטלפוניה כך שהגיבוי יכול להשתלט על תפקידיו של הפקח הראשי במקרה של כשל בו). בשני המקרים המטרה היא זהה - הבטחת עדכונים של ההעתקים על פי האירועים והשארתם במצב עקבי וכך שכל העתק יכול להגיב על בקשות קריא.
מספר דגמים נמצאים בשימוש נרחב לשכפול נתונים, שלכל אחד מהם תכונות משלו וביצועים משלו:
רמת הביצועים של השכפול משתנה משמעותית בהתאם לדגם הנבחר. שכפול טרנזקצאלי הוא האיטי ביותר, כאשר רצוי לפחות עותק אחד הניתן להעתקה (ניתן להשיג ביצועים טובים יותר כאשר מסד הנתונים משתמש בשכפול מבוסס יומן, אך במחיר של חוסר עקביות אפשרי אם הכישלון גורם לחלק מהיומן ללכת לאיבוד). סינכרון וירטואלי הוא המהיר ביותר מבין שלושת המודלים, אבל הטיפול שלו בכשלים פחות קפדני מאשר במודל הטרנזקצאלי. שכפול מכונת מצבים הוא איפשהו באמצע - המודל מהיר מהמודל הטרנזקצאלי, אבל איטי בהרבה מהסינכון הווירטואלי.
ישנן 5 שיטות עיקריות לשכפול של הנתונים והן (מהצמודה ביותר למשתמש הקצה לרחוקה ביותר ממנו):
חלוקה נוספת של שיטות השכפול היא לפי המרחק הפיזי:
מערכות ניהול מסדי נתונים רבות מאפשרות שכפול בדרך כלל עם יחסי ראשי-משני בין העותק המקורי והעותקים המשניים - כאשר העותק הראשי רושם את העדכונים, הם מופצים לעותקים המשניים, העותקים המשניים שולחים הודעה המציינת כי קיבלו את העדכון בהצלחה ואז נשלחים עדכונים נוספים (בחלק מהמערכות יש תמיכה גם בשליחה מחדש של העדכונים עד שהם מיושמים בהצלחה בעותקים המשניים). מערכת כזאת מאפשרת גישת כתיבה רק למערכת אחת בעוד שאר המערכות מאפשרות רק קריאה (למשל זאת הדרך בה עובדת מערכת ויקיפדיה). מערכת כזאת יכולה להתבסס על קובץ היומן שמסדי נתונים כותבים לרוב את הנתונים במהירות רבה מאוד אליו כחלק מהפעילות הסטנדרטית שלהם ואותו יכולים לקרוא גם מערכות חיצוניות (הגם שהקריאה עצמה מחייבת היכרות עם הפורמט של מסד הנתונים המסוים). אפשרות נוספת היא להתבסס על רענון של תמונות נתונים שנוצרו באמצעות כלי הגיבוי של המערכת ונטענות מהר יחסית. לעומת זאת מערכת כזאת מהווה נקודת כשל יחידה ומעכבת את ביצוע העדכונים על מסד הנתונים הראשי (בשל הצורך בעדכוני מסדי הנתונים המשניים).
חלק מהמערכות תומכות גם בשכפול עם מספר עותקים ראשיים בו ניתן לבצע את העדכונים בכל אחד מעותקי מסד נתונים ולאחר מכן הם מופצים למסדי הנתונים האחרים. בעוד זהו לעיתים קרובות המצב הרצוי הרי הוא מגדיל באופן משמעותי את העלויות והמורכבות של המערכת במידה העלולה להפוך אותה לבלתי מעשית במצבים מסוימים. הבעיה הנפוצה בסוג כזה של מערכות היא מניעת התנגשויות בין טרנזקציות או פתרון שלהן. רוב הפתרונות למניעת התנגשויות הם סנכרוניים או כאלו הדורשים את כל הנתונים, בעוד הפתרונות האסינכרוניים דורשים פתרון של ההתנגשויות. לדוגמה, אם רשומה שונתה בשני מחשבים בו זמנית, מערכת השכפול הדורשת את כל הנתונים מאתרת את הבעיה לפני מתן האישור לבצע את הפעולה ומבטלת את הטרנזקציה בעוד מערכת שכפול שאיננה דורשת את כל הנתונים תאפשר לשתי הטרנזקציות להתבצע ותפעיל פתרון להתנגשויות במהלך הסינכרון מחדש. ההחלטה על פתרון התנגשויות כזה עשויה להיות מבוססת על חותמת הזמן של הטרנזקציה, על היררכיה של השרתים או על לוגיקה מורכבת יותר אשר חייבת להיות עקבית בכל המחשבים.
באופן עקרוני השכפול של מסד נתונים הופך קשה ככל שהמערכת גדלה. בדרך כלל, מודדים את ההיקף בשני ממדים - אופקי ואנכי: המימד האופקי מודד את מספר העותקים של הנתונים והסולם האנכי את העתקי הנתונים הממוקמים במקום מרוחק.
גישות מקובלות לשכפול נתונים במערכות מסדי נתונים כוללות את[1]:
בנוסף לגישות אלו המתמקדות בשכפול "פנימי" של מסד הנתונים ניתן לשכפל (גם או רק) את האחסון עליו נשמרים קובצי מסד הנתונים. למשל אורקל תומך ב־ASM שהוא סוג של LVM המיועד למטרה זו ומסדי נתונים אחרים תומכים במערכות חיצוניות למטרה זו (לדוגמה MySQL תומך ב־DBRD למטרה זו). יצירת תמונת נתונים (כל הנתונים בזמן מסוים) נתמכת על ידי סוגי מסדי הנתונים - על ידי רישום של הפעולות שבוצעו ביומן, או על ידי שמירת רישום של הפעולות האחרונות במסד הנתונים (למשל rollback segments או undo tablespace באורקל) או על ידי יצירת תמונות בקבצים נפרדים (למשל ב־SQL Serever בסיוע Volume Shadow Copy Service של חלונות). גם אשכולות יכולים לשמש למטרה זו (דוגמאות לכך כוללות את RAC של אורקל ושימוש ב־memcached עבור MySQL).
ניתן גם לבצע את השכפול באמצעות וירטואלזציה של מסד הנתונים (בין אם בצד השרת ובין אם בצד הלקוח) כך שכל פעולת כתיבה תכתב למספר מסדי נתונים.
תוצאות השכפול יכולות (עם תלות מסוימת בגישה בה משתמשים בשביל לבצע את השכפול) להיות משלושה סוגים:
שכפול פעיל (בזמן אמת) של האחסון מיושם בדרך כלל על ידי הפצת עדכונים של התקן הבלוקים של הדיסק הלוגי לכמה דיסקים פיזיים כך שניתן לשכפל את כל מערכות הקבצים הנתמכות על ידי מערכת משום שקוד מערכת הקבצים עובד מעל לשכבה זו. יכולת זו יכולה להיות מיושמת בחומרה (בבקר מערך הדיסקים, ב־HBA או בהתקן רשת) או בתוכנה (במנהל ההתקן).
השיטה הבסיסית ביותר למימוש השכפול של האחסון היא שיקוף דיסק והיא זו שנמצאת לרוב בשימוש עבור דיסקים המחוברים ישירות לשרת (DAS). ההבדלה בין שיקוף לשכפול היא לוגית יותר מאשר מעשית, כאשר שיקוף מתייחס לרוב לפעולה מקומית (ולא על שימוש בשכפול מרחוק) ולעומת זאת שכפול ניתן לביצוע בכל נקודה ברחבי הרשת כך שאת הדיסקים ניתן למקם במקומות רחוקים פיזית.
שכפול מרוחק נועד למנוע את הנזק שעלול להיגרם במקרה של כשלים מקומיים או אסונות ולשפר את הזמינות של הנתונים, בדרך כלל על ידי שימוש במודל ראשי-משני.
פתרונות אלו מסווגים לרוב לפי טיפולם בפעולות כתיבה:
שלושת סוגי השכפולים הראשונים מחייבים שמירה על סדר הכתיבה של הנתונים וזאת מכיוון שמרבית התוכנות דורשות כתיבת הנתונים בסדר מסוים ובמיוחד למקרים של דריסת הנתונים הישנים על ידי נתונים מאוחרים יותר, בלי הקפדה זו הנתונים המאוחרים עשויים להיכתב בעוד קודמיהם לא נכתבו ובכך להשאיר את המערכת בלתי עקבית ולעיתים קרובות גם בלתי שמישה.
בשיטה זו השכפול מבוצע בשרת היישומים (או לעיתים בשרת הקבצים) על ידי תוכנה (בדרך כלל מערכת הקבצים או ה־LVM) התומכת בתמונות מידע או שכפול מרחוק (או בשניהם) והוא לרוב שקוף ליישום. במקרה של שכפול מרוחק, סוג של פתרון בדרך כלל דורש עוד שרת (שרת היעד) הפועל באתר מרוחק כיעד עבור הנתונים המשוכפלים (באופן סינכרוני או אסכרוני, דרך ה־LAN, ה־WAN או ה־SAN) ומחליף את השרת הראשי כאשר מתרחשת תקלה.
גרסה שונה במקצת של שיטה זו מאפשרת שכפול של קבצים ספציפיים, מה שעשוי להקל על העתקה למערכת הפעלה אחרת (או לגרסה שונה על אותה מערכת הפעלה). שכפול כזה עשוי לאפשר שימוש בפרוטוקולים סטנדרטיים להעתקה כזאת כמו FTP ובכך לבטל את הצורך בתוכנה ייעודית באחד מהצדדים.
חלק מהפתרונות מבוססי התוכנה יכולים לשכפל את הנתונים למכשיר ייעודי באתר היעד, מה שמבטל את הצורך בהפעלה קבועה של שרת הגיבוי ואף עשוי לאפשר לא להפעילו כלל (מה שעלול להאריך את זמן ההתאוששות). כמה פתרונות מבוססי שרת יכולים אפילו לבטל כפולות נתונים בשרת על מנת להקטין את דרישות רוחב הפס לאתר הגיבוי.
שכפול מבוסס שרת עשוי להתבצע על ידי מודלים של מערכות ההפעלה המספקים שירותי שכפול נתונים בסיסיים כגון Microsoft Data Protection Manager (DPM) או מערכת המבוססת על פתרונות של ZFS, QFS. ו־SAMfs.
כאשר משתמשים במכונה וירטואלית ניתן להשתמש במערכות הרצות על סביבת השרת הפיזי (ואז הן מאפשרות שכפול עבור כל המכונות הווירטואליות) או על המכונה הווירטואלית (ואז יש צורך במנגנון שכפול נפרד עבור כל מכונה וירטואלית).
יתרונות של השיטה הזאת כוללים:
חסרונותיה של השיטה כוללים בין השאר:
מימושים נפוצים:
שכפול מבוסס רשת (המכונה גם שכפול מבוסס SAN) תומך בכל סוגי השכפול ומתבצע בהתקן אשר נמצא בנתיב הקלט/פלט בין השרת לבין האחסון, בדרך כלל ברשת ה־SAN. ההתקן בודק האם כתובת היעד של פעולת הקלט/פלט הנכנסת מתייחסת לאחסון המשוכפל ואם כן הוא מעביר עותק (הנחשב מבחינה טכנית לפעולה חדשה) של פעולת הקלט/פלט ליעד השכפול. פתרון כזה מועיל בעיקר במערכות הטרוגניות, כאלו שיש בהם הן מערכות אחסון והן מערכות הפעלה שונות כך שאין אפשרות לבצע את תהליך השכפול על מערכות האחסון או על השרתים עצמם (עם זאת, בדרך כלל יש צורך בהומוגניות בין התקני הרשת עצמם). לחלק ממערכות יש תמיכה בשכפול גם במקרה שרשת ה־SAN מועברת על גבי רשת IP רגילה (למשל באמצעות פרוטוקול iSCSI).
ההתקנים המיישמים מערכות כזו מספקים לעיתים קרובות גם יכולות אחסון אחרות כמו וירטואליציה של האחסון וביטול כפילויות והם יכולים לשלב גם מימוש של מערכות רשתיות אחרות (למשל Switch).
ישנן שתי גרסאות עיקריות של מנגנון כזה:
יתרונות שיטה זו:
חסרונותיה של שיטה זו:
מימושים נפוצים:
שכפול מבוסס מערך הדיסקים משתמש במערכת המחשובית הקיימת במערך הדיסקים (SAN או NAS) כדי לשכפל את הנתונים ישירות אל מערך אחסון אחר מאותו סוג (או לעיתים נדירות, מסוג אחר). גישה זו נחשבת לבשלה ביותר וניתן לבצעה בכמעט כל פלטפורמת שרת או מערכת הפעלה, כולל מערכות שקשה להשיג להם תמיכה בגישות האחרות כמו מיינפריים (שם זאת גישת שכפול האחסון הנפוצה ביותר), שרתי AS400 ומערכות VMS. למעשה יכולת השכפול בגישה זו היוותה אף אחת מהסיבות העיקריות לאימוץ SAN על ידי ארגונים רבים.
יתרונותיה של השיטה כוללים:
חסרונותיה של השיטה כוללים:
מימושים נפוצים:
בזיכרון משותף מבוזר שרתים רבים חולקים את אותו דף זיכרון כאשר בדרך כלל לכל שרת יש עותק נפרד של דף זה, מצב המחייב שכפול של המידע בין השרתים. השכפול יכול להיות חלקי כלומר יש רק שרת מרכזי אחד שבו כותבים (ואז יש צורך במנהל של סט הנתונים שיכול להיות קבוע או דינמי) או להיות מלא כאשר כל הכתיבה יכולה להתבצע בכל שרת. וריאציות נוספות של תהליך כזה כוללות העברה של נתונים הזקוקים לעדכון בלבד ועדכון לפי עלות (זמן, משאבים וכיוצא באלו). מנגנון כזה עשוי להיות ממומש בתוכנה (ספריה תוכנה, מערכת ההפעלה, שפת התכנות וכדומה), בחומרה (שכפול השקוף לתוכנה שנעשה במעבד או באפיק המחשב) או משולב. מנגנון כתיבה מחייב שמירה על עקביות ולכן נדרש פרוטוקול כתיבה לעותקים. המימוש בתוכנה עשוי להתרחש בתגובה לתקלת דף או על שימוש ביכולות סנכרון בין תהליכים (קטע קריטי למשל).
גישות קלאסיות רבות לשכפול מבוססות על מודל ראשי-גיבוי בו להתקן אחד או לתהליך אחד יש שליטה חד צדדית על אחד או יותר תהליכים או התקנים אחרים. לדוגמה, השרת הראשי מבצע חישוב מסוים, מעביר את יומן עדכונים לתהליך גיבוי (שבהמתנה), שיכול לבצע את החישוב במקרה של כשל התהליך הראשי. גישה זו היא אחת הנפוצות ביותר עבור שכפול מסדי נתונים, למרות הסיכון כי אם חלק ביומן יאבד במהלך הכישלון, הגיבוי לא יכול להיות במצב זהה לזה שהראשי היה בו וטרנזקציות עלולות ללכת לאיבוד.
חיסרון נוסף של גישת ראשי-גיבוי הוא הצורך בהגדרה של שני תהליכים היכולים להיות פעילים בזמן שרק אחד הוא למעשה מבצע את הפעולות כך שמתקבלת אמנם סובלנות לתקלות אבל העלות מוכפלת על מנת להשיג את התכונה הזו. מסיבה זו, החלו להיחקר באמצע שנות השמונים שיטות אלטרנטיביות של שכפול נתונים במערכות מבוזרות ומהן נוצרה קבוצה של אפשרויות שבהן קבוצת עותקים יכולה לשתף פעולה, בעוד כל תהליך מגבה את האחרים וכולם מתחלקים בעבודה.
ג'ים גריי ניתח את שיטת שכפול השרתים הראשיים המרובים במודול ההטרנזקציות ובסופו של דבר פרסם מאמר המצוטט רבות שנקרא "The Dangers of Replication and a Solution". במאמר הוא טען כי אם לא ניתן לחלק את הנתונים בדרך טבעית כלשהי כך שניתן להתייחס למסד הנתונים כאל N מסדי נתונים הרי הקונפליקטים בבקרת המקביליות יביאו להרעה משמעותית בביצועים ברצינות מושפל וקבוצת העתקים כנראה תאט כפונקציה של N ואכן הגישות הנפוצות ביותר עשויים לגרום להרעה בביצועים מסדר גודל של O(n³) ולפיכך חלוקת הנתונים ניתנת לביצוע מעשי רק במצבים שבהם יש לנתונים יש מפתח חלוקה טבעי.
אולם למעשה המצב לא תמיד כל כך עגום, לדוגמה, ב־1985-1987, הוצע מודל וירטואלי סנכרוני והתקבל כסטדרנט שהיה בשימוש ב־Isis Toolkit, Horus, Transis, Ensemble, ־Totem, Spread, C-Ensemble ובמערכות Phoenix ו־Quicksilver והיווה את הבסיס עבור הסבלנות לתקלות של סטדרנט CORBA. כיום המודל משמש גם בלוגיקת השכפול שלIBM Websphere ושל Windows Server 2008 Enterprise clustering של מיקרוסופט. הסינכרון הווירטואלי מאפשר את הגישה הרב ראשית בה קבוצה של תהליכים משתפת פעולה כדי למקבל היבטים מסוימים בתהליך העיבוד של הבקשה. אמנם בשיטה זו ניתן להשתמש רק עבור כמה צורות של נתונים בזיכרון אבל כאשר היא אפשרית אזי היא מאיצה את התהליך באופן התלוי ליניארית בגודל של הקבוצה.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.