Bcachefs היא מערכת קבצים העתקה על כתיבה עבור מערכות הפעלה מבוססות לינוקס.
לפני מספר ימים הכריז קנט אוברסטריט על שחרורו של Bcachefs 1.33.0 , גרסה חדשה של מערכת הקבצים המציגה שינויים מבניים עמוקים בניהול נתונים ובארכיטקטורת קוד המקור שלה.
עדכון זה עומד להיות אחד המשמעותיים ביותר בשנתיים האחרונות, תוך התמקדות בשלמות המטא-דאטה ומודרניזציה של בסיס הקוד של C.
"התאמת נתונים": עידן חדש לשלמות נתונים
התכונה החדשה הבולטת ביותר, המתוארת כשינוי המשמעותי ביותר בשנתיים האחרונות, היא הצגת פונקציית ההתאמה (rebalance_v2) . מנגנון חדש זה מחליף את מערכת ה"איזון מחדש" הישנה ומטפל באחת ממגבלותיה העיקריות: המערכת יכולה כעת לנהל ולהעביר לא רק נתוני משתמש אלא גם מטא-דאטה של מערכת הקבצים.
Rebalance_v2 פועל באופן יזום ואוטומטי. אם דיסק חדש נוסף למערך או אפשרויות יתירות משתנות, Bcachefs יתחיל מיד לשכפל ולתקן כל נתונים או מטא-נתונים פגומים, תוך שימוש באינדקסים נפרדים כדי לתעדף פעולות קריטיות. זה מבטיח ששלמות המערכת תישמר גם במהלך פעולות תחזוקה אינטנסיביות.
ניקוי קוד והכנת חלודה
מתחת למכסה המנוע, גרסה 1.33.0 מביאה ארגון מחדש מסיבי של קוד C כדי להפוך אותו לאבטח ותואם יותר למימוש עתידי ב- חלודההמפתח ביצע ניקוי עמוק, והפחית את מספר ההצהרות. goto מ-2.500 ל-600 בלבד, מה שמפשט מאוד את הזרימה הלוגית של התוכנית.
בנוסף, הוצגו פקודות מאקרו חדשות כגון DARRAY() y try()אלה נועדו לחקות את התנהגות הווקטור הדינמית ואת טיפול בשגיאות של Rust ו-C++. זה לא רק מודרניזציה של הקוד הנוכחי, אלא גם יקל על ניידות ויצמצם את משטח התקלות בזיכרון בעתיד.
גמישות משופרת באבחון ובאחסון
גרסה זו, תוך התחשבות בניהול המערכת, משפרת באופן דרסטי את בהירות הודעות השגיאה . כעת Bcachefs יכולים להבחין ולתקשר האם כשל נובע מבאג תוכנה או מבעיית חומרה פיזית, ואף להציע את שלבי השחזור הנדרשים. זה חיוני כדי למנוע אבחונים שגויים שבהם מערכת הקבצים מואשמת בדיסק כושל.
שקיפות זו משתרעת על פני מספר רבדים:
- שגיאות קלט/פלט מפורטות: כאשר שכבת הבלוק מדווחת על כשל, Bcachefs משדר כעת את הקוד הספציפי (כגון
BLK_STS_IOERR), המסייע בזיהוי האם הדיסק הפיזי הוא האשם. - שגיאות הרכבה: אם חסרים התקנים להרכבת אמצעי אחסון, המערכת מציינת כעת בדיוק איזו יחידה חסרה, ומציגה את שמה ודגמה בהתבסס על הפעם האחרונה שנראתה.
- מגבלות שיעור שגיאות: הגבולות בין שגיאות "רכות" (תוכנה) לשגיאות "קשות" (חומרה) הופרדו, מה שמבטיח ששטף של שגיאות קלות לא יסתיר כשל קריטי בדיסק.
בנוסף, הפקודה bcachefs fs top זה השתפר. המונים הפנימיים מציגים כעת מהירויות העברת נתונים במקום רק מספרים סטטיים, מה שמקל הרבה יותר על קישור אירועים (כגון data_update_fail) עם ירידות ביצועים בזמן אמת.
אופטימיזציות ב-Btrees ואפשרויות הרכבה חדשות
מתחת למכסה המנוע, ביצועי עומס כבד השתפרו הודות לשינויים בניהול עץ B. מיזוג צמתים ריקים מתרחש כעת באופן אסינכרוני, מה שמבטל צווארי בקבוק במאגר הכתיבה. בנוסף, נוסף מעבר שחזור אופציונלי. merge_btree_nodes, כדי לייעל ידנית את מבנה העץ במידת הצורך.
תכונה נוספת ופרקטית מאוד היא היכולת לאתחל מערכת קבצים עם התצורה replicas=2 על דיסק בודדזה מאפשר למשתמשים להתחיל עם כונן בודד בידיעה שהמערכת "חייבת" להיות בעלת יתירות; ברגע שמחובר כונן שני, Bcachefs משכפל את הנתונים באופן אוטומטי ללא צורך בהתערבות ידנית מורכבת.
לבסוף, ראוי לציין כי הגרסה החדשה, שכבר זמינה להפצות כמו דביאן, פדורה, ארצ' לינוקס וניקס, דורשת ליבת לינוקס גרסה 6.16 ומעלה ומופצת בשתי חבילות בסיסיות: מודול הליבה (bcachefs-kernel-dkms) וכלי המשתמש (bcachefs-tools).