לדלג לתוכן

מערכי נתונים של ZFS

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

BombVault אף פעם לא משתמש ב-zfs send עבור מערכי נתונים, אף פעם לא מחזיר מערך נתונים למצב קודם ואף פעם לא משמיד אחד.

דרישות

  • חיבור ה-SSH לשרת הזה. מערכי נתונים של ZFS משתמשים באותו מפתח, מארח ומשתמש כמו גיבויי VM. אם גיבויי VM כבר עובדים, גם זה עובד. אחרת, עקוב אחרי מדריך גיבוי VM דרך SSH ב-GitHub. שדות התבנית נקראים Host SSH: Address, Host SSH: Port ו-Host SSH: User.
  • הפקודה zfs על המארח הזה. היא קיימת ב-Unraid 6.12 ומעלה וב-TrueNAS SCALE.
  • Host Data ממופה כ-/mnt עם Access Mode Read/Write - Slave. זו ברירת המחדל של התבנית. התצלום של מערך נתונים מופיע בתיקייה .zfs/snapshot של מערך הנתונים רק אחרי ש-BombVault עלה, ולכן המכל צריך לקבל עיגונים שהמארח יוצר מאוחר יותר.
  • מערכי הנתונים מעוגנים מתחת ל-/mnt. ב-Unraid מאגרים נמצאים תחת /mnt/<pool>, כך שזה כבר המצב.

הפעל את התחום תחת הגדרות, כללי (מערכי נתונים של ZFS). דף ה-ZFS יציג אז את הכרטיס החיבור לשרת הזה. הוא בודק את חיבור ה-SSH, מציין את המשתמש והמארח שאליהם הוא מתחבר ואומר מה חסר כשמשהו חסר. בדיקת השילוב עם המארח (/spike) מציגה את אותה תוצאה.

פריטים ומערכי נתונים צאצאים

פתח את הוסף מערכי נתונים בדף ה-ZFS. הרשימה מגיעה מהשרת. בחר את מערך הנתונים העליון ביותר במה שאתה רוצה לגבות, למשל cache/appdata, והפריט יכסה אותו ואת כל מערך נתונים שמתחתיו.

  • מערכי נתונים צאצאים חדשים מצטרפים מעצמם. מערך נתונים שנוצר מאוחר יותר מתחת לפריט מגובה בהרצה הבאה, וההרצה הזו מציינת אותו כחדש. הגיבוי הראשון שלו קורא אותו במלואו פעם אחת; אחר כך נקראים רק שינויים.
  • אפשר להשאיר בחוץ צאצאים בודדים. כבה צאצא בהגדרות הפריט והוא יישאר בחוץ יחד עם כל מה שמתחתיו. צאצא שהושאר בחוץ ואינו קיים עוד בשרת מסומן ככזה ואפשר להסיר אותו מהרשימה.
  • צאצאים שאי אפשר לקרוא מדולגים, אבל אף פעם לא בשקט. ההרצה מפרטת אותם, הפריט מציג כמה דולגו, וכרטיס הכיסוי בלוח הבקרה סופר כל אחד מהם כלא מוגן. ההרצה עדיין מגבה את כל השאר ולא נכשלת בגלל צאצא שדולג. הסיבות מופיעות בטבלת קודי הסיבה: מערך נתונים שאינו מעוגן, עם canmount=off, עם נקודת עיגון legacy או בלי נקודת עיגון, מפתח הצפנה שלא נטען, גישה לתצלומים כבויה, או נקודת עיגון ש-BombVault לא רואה.
  • מערך נתונים שדולג לא גורר איתו את הצאצאים שלו. מערך נתונים עם canmount=off שמכיל רק מערכי נתונים אחרים מדולג (מוצג כ"מבנה בלבד"), והצאצאים המעוגנים שלו מגובים. מערך נתונים מוצפן שהמפתח שלו לא נטען מדולג יחד עם הצאצאים שחולקים את המפתח שלו.
  • צאצאים שהם דיסקים של VM או נתוני מערכת מתחילים כבויים בחלון ההוספה, עם הסיבה ליד המתג. הוספת מאגר שלם מבקשת אישור שמפרט מה הוא מכיל.

אמצעי אחסון

אמצעי אחסון (zvol) מכיל דיסק וירטואלי במקום קבצים, ודף ה-ZFS אף פעם לא מגבה אחד כזה.

  • אמצעי אחסון ש-VM משתמשת בו מגובה יחד עם אותה VM בדף VMs.
  • אמצעי אחסון שאף VM לא משתמשת בו (iSCSI extent, דיסק שניתקת) לא מגובה על ידי BombVault. חלון ההוספה ודף ה-ZFS סופרים את אמצעי האחסון האלה ואומרים זאת. גרסה עתידית תגבה אותם.

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

האחסון של Docker

עם מנהל האחסון ZFS של Docker, כל שכבת תמונה היא מערך נתונים עם נקודת עיגון legacy. חלון ההוספה מקבץ אותן לשורה אחת לכל הורה. עץ שמכיל יותר מ-20 מערכי נתונים כאלה לא יכול להפוך לפריט: כל עוד קיים תצלום שלו, Docker לא יכול להסיר שכבות תמונה. הוסף במקום זאת את מערכי הנתונים שמתחתיו, למשל appdata.

פריטים אף פעם לא חופפים

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

עצירת מכלים והרצת פקודות סביב התצלום

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

  • עצור את המכלים האלה לצורך התצלום. BombVault עוצר את המכלים ברשימה, יוצר את התצלום ומפעיל אותם מחדש מיד. מכלים באותה רמת תלות נעצרים במקביל, התלויים קודם, כך שכל החלון נמשך בדרך כלל כמה שניות; ההרצה מציגה כמה זמן. הגיבוי קורא אחר כך את התצלום הקפוא בזמן שהאפליקציות כבר רצות שוב. רק מכלים שרצו נעצרים.
  • פקודה לפני התצלום ואחריו. היא רצה בתוך מכל לבחירתך, למשל כדי לייצא מסד נתונים לתוך מערך הנתונים ממש לפני התצלום, בלי לעצור שום דבר. אם הפקודה שלפני התצלום נכשלת, הגיבוי נכשל ולא נוצר תצלום. פקודה שאחרי התצלום שנכשלת מוצגת בהרצה אבל לא מכשילה את הגיבוי.

מה קורה כשמשהו משתבש:

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

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

מכל יכול להופיע גם ברשימה הזו וגם בדף Containers בו זמנית. הנתונים שלו נשמרים אז פעמיים, בשני מאגרים, וגיבוי מלא עוצר אותו פעמיים. הפריט מציין זאת.

שחזור

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

  • שחזר אל תוך מערך הנתונים. קבצים מהגיבוי נכתבים לנקודת העיגון של מערך הנתונים. קבצים עם אותו שם נדרסים, קבצים אחרים נשארים. מערך הנתונים אף פעם לא מוחזר למצב קודם ולא מוחלף. BombVault בודק שמערך הנתונים מעוגן, גלוי וניתן לכתיבה, פעם אחת לפני שהוא מתחיל ושוב ממש לפני שהוא כותב. במקום שבו מעוגן בתוכו מערך נתונים צאצא, לא נכתב דבר: הצאצא שומר על הקבצים, הבעלים וההרשאות שלו ומשוחזר מהגיבוי שלו.
  • שחזר לתיקייה. בחר תיקייה מתחת ל-/mnt. BombVault בודק שהתיקייה נמצאת על מאגר או שיתוף מעוגנים ושיש מספיק מקום פנוי. זה עובד בלי חיבור ה-SSH וגם עבור מערכי נתונים שכבר לא קיימים.
  • למערך נתונים חדש. ציין מערך נתונים שעדיין לא קיים. BombVault יוצר אותו עם מאפייני ה-ZFS השמורים בגיבוי ומשחזר לתוכו, ראה שחזור כמערך נתונים חדש.
  • בחר קבצים (מתקדם): כתוב חזרה לתוך מערך הנתונים רק את הקבצים והתיקיות שבחרת.
  • כל מערכי הנתונים של הגיבוי הזה (מתקדם): כל מערך נתונים בעץ לתת-תיקייה משלו בתיקייה שבחרת. מערכי נתונים שדולגו בגיבוי הזה מצוינים בשמם.
  • משרת אחר: הדף התאוששות משחזר ממאגר של BombVault אחר, תמיד לתיקייה: כל מערכי הנתונים של גיבוי אחד, כל אחד לתת-תיקייה משלו, או מערך נתונים אחד מהעץ, שלם או קבצים נבחרים.

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

תצלום הבטיחות

לפני שהוא כותב למערך נתונים, BombVault יוצר תצלום ZFS של מערך הנתונים הזה בלבד בשם bombvault-prerestore-<זמן>. הוא מופעל כברירת מחדל; כיבוי שלו דורש אישור שני. אם אי אפשר ליצור את התצלום, שום דבר לא משוחזר.

BombVault אף פעם לא מוחק תצלום בטיחות בעצמו. הפריט מפרט אותם עם הגיל והגודל שלהם, לכל אחד פעולת מחיקה, ומזהיר כשהישן ביותר בן יותר מ-30 יום, כי הוא מחזיק במאגר נתונים שנמחקו ושונו.

כדי לחזור אחורה אחרי שחזור, העתק קבצים בודדים מ-.zfs/snapshot/bombvault-prerestore-<זמן> בתוך מערך הנתונים. zfs rollback <dataset>@bombvault-prerestore-<זמן> עובד רק כל עוד זה התצלום החדש ביותר של מערך הנתונים הזה. zfs rollback -r מוחק כל תצלום חדש יותר, כולל תצלומים אוטומטיים.

שחזור כמערך נתונים חדש

BombVault שומר עם כל גיבוי את מאפייני ה-ZFS שהוגדרו מקומית בכל מערך נתונים: compression, recordsize, quota, reservation, atime, xattr, acltype, casesensitivity ומאפייני המשתמש שלך. ערכים שעוברים בירושה וערכים לקריאה בלבד לא נשמרים, כי הם חוזרים בעצמם. לגיבויים מלפני ש-BombVault התחיל לשמור אותם אין כאלה.

  • למערך נתונים חדש מריץ zfs create עם כל מאפיין שמור. casesensitivity, normalization ו-utf8only אפשר להגדיר רק כך. מכסות והזמנות מוגדרות אחרי הקבצים, כדי שלא יוכלו לדחות אותם. נקודת העיגון נשמטת כדי שהעותק לא יתנגש במקור, וכך גם canmount, readonly וההצפנה, כדי שהשחזור יוכל לכתוב. מערך נתונים חדש מתחת למערך מוצפן מקבל את ההצפנה שלו. מערך הנתונים שמעליו חייב להתקיים. אם משהו נכשל אחרי היצירה, מערך הנתונים החדש נשאר בשרת, כי BombVault אף פעם לא משמיד מערך נתונים.
  • שחזר אל תוך מערך הנתונים מציג את המאפיינים השמורים לצד השחזור. להגדיר גם את המאפיינים האלה מגדיר את אלה שמערך נתונים קיים עדיין מקבל, לפני שנכתב קובץ כלשהו. מכסות והזמנות מוגדרות אחרי הקבצים, כדי שלא יוכלו לדחות אותם. בלי המתג הזה מערך הנתונים שומר על ההגדרות שלו.

מה נמצא בגיבוי

בגיבוי: הקבצים והתיקיות של כל מערך נתונים שגובה, עם הבעלות, ההרשאות, חותמות הזמן והמאפיינים המורחבים שלהם, כפי ש-restic שומר אותם, וכן מאפייני ה-ZFS שהוגדרו מקומית בכל מערך נתונים.

לא בגיבוי:

  • הבעלים וההרשאות של התיקייה העליונה של כל מערך נתונים עצמה (כל מה שמתחתיה כלול). שחזור אל תוך מערך הנתונים משאיר את התיקייה העליונה הקיימת כמו שהיא, שחזור לתיקייה יוצר אותה עם ההרשאות 0755;
  • תצלומי ZFS קיימים;
  • צאצאים שדולגו או הושארו בחוץ;
  • אמצעי אחסון.

כדי לשחזר למאגר חדש, צור את המאגר ושחזר כל מערך נתונים למערך נתונים חדש. עדיין לא נבדק אם רשימות ACL של NFSv4, כפי ש-TrueNAS משתמש בהן במערכי נתונים של SMB, חוזרות כמו שאתה מצפה, אז נסה שחזור על הנתונים שלך לפני שאתה סומך עליהן.

מערכי נתונים מוצפנים

מערך נתונים מוצפן מגובה רק כל עוד המפתח שלו טעון. אחרת הוא מדולג עם אזהרה; טען את המפתח עם zfs load-key ועגן את מערך הנתונים. BombVault קורא את הנתונים כשהם מפוענחים ושומר אותם במאגר של restic, שהוא מוצפן. אם כיבית את ההצפנה ב-BombVault, המאגר הזה אינו מוצפן.

תצלומים שנשארו

התצלום של גיבוי נקרא <dataset>@bombvault-<14 ספרות>, למשל cache/appdata@bombvault-20260924021500 (UTC). BombVault מסיר אותו מיד אחרי הגיבוי. אם זה נכשל, למשל כי מערך הנתונים עסוק או ש-BombVault נעצר, BombVault מסיר אותו:

  • לפני הגיבוי הבא של אותו פריט,
  • כש-BombVault עולה, לכל פריט, גם כשהתחום כבוי,
  • כשאתה מוחק את הפריט,
  • כשאתה לוחץ על הסר עכשיו בפריט, שמציג גם כמה נשארו.

מוסרים רק שמות שהם בדיוק bombvault- ועוד 14 ספרות. תצלומי בטיחות, התצלומים שלך ותצלומים אוטומטיים אף פעם לא נוגעים בהם. כדי להסיר אחד ידנית:

zfs destroy -r cache/appdata@bombvault-20260924021500

חריגות

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

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

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

הבדיקות עצמן מתוארות בהתכונות. עוזר שמחובר דרך שרת MCP יכול לפרט את נקודות השחזור של פריט ZFS, להתחיל את הגיבוי שלו ולקרוא את הממצאים, אבל אישור ממצא נעשה בדף חריגות.

קודי סיבה

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

קוד משמעות מה לעשות
ssh-missing חיבור ה-SSH לא הוגדר במכל הזה. הגדר את חיבור ה-SSH כמו לגיבויי VM.
host-placeholder Host SSH: Address הוא עדיין ערך הדוגמה, וגם host.docker.internal לא ענה. הגדר את Host SSH: Address לכתובת ה-IP ברשת המקומית של השרת הזה.
host-fallback Host SSH: Address הוא עדיין ערך הדוגמה, ו-host.docker.internal עובד. שום דבר, או הגדר את כתובת ה-IP ברשת המקומית.
ssh-unreachable אי אפשר להגיע לשרת דרך SSH. בדוק את הכתובת והפורט, ושה-SSH מופעל.
ssh-auth השרת דחה את המפתח של BombVault. הרץ פעם אחת בשרת את הפקודה שמוצגת בכרטיס החיבור.
zfs-not-found למארח ה-SSH אין פקודת zfs. כוון את Host SSH: Address למכונה שהמאגרים שייכים לה.
zfs-permission למשתמש ה-SSH אסור להריץ את פקודת ה-zfs הזו. השתמש ב-root, או ראה TrueNAS SCALE.
uri-mismatch LIBVIRT_URI מציין מארח או משתמש אחרים משדות ה-SSH. התאם ביניהם, או רוקן את שדות ה-SSH כדי ששניהם יגיעו מה-URI.
zfs-error zfs דיווח על שגיאה אחרת. הפרטים מציגים את ההודעה שלו.
propagation-missing עיגונים חדשים במארח לא מגיעים למכל. הגדר את Access Mode של Host Data ל-Read/Write - Slave והפעל מחדש את BombVault.
invalid-name שם מערך נתונים ש-BombVault לא מקבל. שנה את שם מערך הנתונים.
name-too-long מערך נתונים בעץ ארוך מדי לשם תצלום. שנה את שמו, או הוסף כפריט מערך נתונים שמתחתיו.
invalid-exclude תבנית החרגה או צאצא שהושאר בחוץ לא מתאימים לפריט. תקן את הרשומה שההודעה מציינת. כדי להשאיר בחוץ מערך נתונים צאצא שלם, כבה אותו במקום לכתוב תבנית.
not-found מערך הנתונים לא קיים בשרת. הסר את הפריט, או צור מחדש את מערך הנתונים. הגיבויים שלו נשארים ניתנים לשחזור.
not-filesystem זה אמצעי אחסון, לא מערכת קבצים. ראה אמצעי אחסון.
overlaps-item מערך הנתונים חופף לפריט קיים. ראה פריטים אף פעם לא חופפים.
docker-storage העץ מכיל את אחסון התמונות של Docker. ראה האחסון של Docker.
nothing-readable אף מערך נתונים בפריט לא ניתן לקריאה כרגע. בדוק את הקודים של מערכי הנתונים שדולגו.
snapshot-failed לא ניתן היה ליצור את התצלום. הפרטים מציגים את ההודעה של zfs.
containers-busy גיבוי מכל עוד רץ כשהמכלים היו צריכים להיעצר. התחל שוב מאוחר יותר. הרצות מתוזמנות מחכות מעצמן.
consistency-stop-failed לא ניתן היה לעצור מכל, ולכן לא נוצר תצלום. בדוק את המכל, או הסר אותו מהרשימה.
pre-snapshot-failed הפקודה שלפני התצלום נכשלה. פרטי ההרצה מציגים את הפלט שלה.
container-unknown מכל ברשימה לא קיים. הסר אותו מהרשימה.
container-is-self BombVault לא יכול לעצור את המכל של עצמו. הסר אותו מהרשימה.
leftover-snapshots תצלומים ש-BombVault לא הצליח להסיר עדיין נמצאים בשרת. לחץ על הסר עכשיו, ראה תצלומים שנשארו.
zvol אמצעי אחסון בעץ, דולג. ראה אמצעי אחסון.
canmount-off אף פעם לא מעוגן (canmount=off), דולג. אם יש בו נתונים, עגן אותו או העבר את הנתונים למערך נתונים צאצא.
legacy-mount נקודת עיגון legacy, דולג. תן לו נקודת עיגון מתחת ל-/mnt.
no-mountpoint אין נקודת עיגון, דולג. תן לו נקודת עיגון מתחת ל-/mnt.
not-mounted לא מעוגן בשרת, דולג. עגן אותו עם zfs mount, או הגדר canmount=on.
key-not-loaded מוצפן והמפתח לא נטען, דולג. zfs load-key, ואז עגן אותו.
snapdir-disabled הגישה לתצלומים כבויה, דולג. zfs set snapdir=hidden <dataset>. התיקייה .zfs נשארת מוסתרת.
not-visible BombVault לא רואה את נקודת העיגון של מערך הנתונים. העבר את נקודת העיגון מתחת לנתיב של Host Data, או מפה אותה לתוך המכל באותו נתיב עם Read/Write - Slave.
shfs-only מערך הנתונים גלוי רק דרך /mnt/user, שמסתיר תצלומים. מפה את /mnt, לא את /mnt/user, כ-Host Data.
snapshot-not-visible התצלום נוצר אבל לא הופיע בתוך BombVault. הרץ את בדוק את הגישה לתצלומים; ראה בהמשך.
snapshot-loop התצלום לא הגיע ל-BombVault כי Host Data לא מעביר עיגונים חדשים. הגדר את Access Mode של Host Data ל-Read/Write - Slave והפעל מחדש את BombVault.
backup-failed restic נכשל עבור מערך הנתונים הזה. פרטי ההרצה מציגים למה.
not-reached ההרצה הסתיימה לפני מערך הנתונים הזה. הרץ שוב את הגיבוי.
gone מערך הנתונים כבר לא נמצא בשרת. שום דבר. הגיבויים שלו נשארים ניתנים לשחזור.
read-only-mount BombVault יכול רק לקרוא את מערך הנתונים, ולכן לא יכול לשחזר לתוכו. הגדר את המיפוי ל-Read/Write - Slave, או שחזר לתיקייה.
destination-not-mounted התיקייה לא נמצאת על מאגר או שיתוף מעוגנים. בחר תיקייה על מאגר או שיתוף.
not-enough-space אין מספיק מקום פנוי ביעד. פנה מקום או בחר תיקייה אחרת.
safety-snapshot-failed לא ניתן היה ליצור את תצלום הבטיחות, ולכן שום דבר לא שוחזר. הפרטים מציגים את ההודעה של zfs.
safety-name-too-long שם מערך הנתונים ארוך מדי לתצלום בטיחות. כבה את תצלום הבטיחות, או שחזר לתיקייה.
dataset-exists כבר קיים מערך נתונים בשם הזה. בחר שם חדש, או שחזר לתוך מערך הנתונים עצמו.
create-failed לא ניתן היה ליצור את מערך הנתונים החדש. הפרטים מציגים את ההודעה של zfs. בדוק שמערך הנתונים שמעליו קיים.
new-dataset-not-visible מערך הנתונים החדש נוצר, אבל BombVault לא רואה אותו, ולכן שום דבר לא שוחזר. מערך הנתונים נשאר בשרת. עגן אותו מתחת לנתיב Host Data ושחזר לתוכו.
set-properties-failed לא ניתן היה להגדיר את המאפיינים השמורים, ולכן שום דבר לא שוחזר. הפרטים מציגים את ההודעה של zfs.
set-limits-failed הקבצים שוחזרו, אבל לא ניתן היה להגדיר את המכסה או ההזמנה השמורה. הפרטים מציגים את ההודעה של zfs. הגדר בעצמך את המכסה או ההזמנה עם zfs set.

בדיקה של מה שהמכל רואה

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

כדי לבדוק בעצמך, הרץ את זה בשרת:

docker exec BombVault grep zfs /proc/self/mountinfo

כל שורה היא עיגון אחד בתוך המכל. השורה של מערך נתונים מציגה את הנתיב שלו בתוך המכל (מתחת ל-/host/user) ואת שם מערך הנתונים. שדה master:N בשורה הזו אומר שהעיגון מקבל את העיגונים שהמארח יוצר מאוחר יותר, וזה מה שהגישה לתצלומים צריכה. אם הוא חסר, הגדר את Access Mode של Host Data ל-Read/Write - Slave והפעל מחדש את BombVault.

TrueNAS SCALE

  • כש-LIBVIRT_URI מוגדר (כמו לגיבויי VM ב-TrueNAS), BombVault לוקח מה-URI את מארח ה-SSH, המשתמש והפורט עבור פקודות ה-zfs שלו, כל אחד מהם שלא הוגדר בנפרד. בלי גיבויי VM, הגדר במקום זאת את LIBVIRT_HOST, LIBVIRT_SSH_USER ו-LIBVIRT_SSH_PORT. הוסף את המשתנים תחת Additional Environment Variables.
  • משתמש שאינו root צריך הרשאה על מערך הנתונים העליון של הפריט, שמכסה אז כל מערך נתונים שמתחתיו:
zfs allow <user> snapshot,destroy,mount <dataset>

שחזור למערך נתונים חדש צריך בנוסף create על מערך הנתונים שמעליו, והגדרת מאפיינים שמורים צריכה הרשאה למאפיינים האלה.

לסשן SSH שאינו root ב-TrueNAS אין /usr/sbin בנתיב; BombVault קורא אז ישירות ל-/usr/sbin/zfs. - ה-Host Data של האפליקציה חייב להיות נתיב מארח מעל מערכי הנתונים, למשל /mnt/tank, ולא ixVolume. עם נתיב מארח, האפליקציה מעבירה את העיגונים החדשים של המארח ל-BombVault (rslave), וזה מה שהגישה לתצלומים צריכה.