לדלג לתוכן

Chapter 06: APFS Internals - Asset B (Facilitator Guide)

1. מהפיכת APFS: Containers (מכולות) (Containers) לעומת Volumes (כרכים) (Volumes). שיתוף שטח דינמי.

Objective: להסביר את מבנה מערכת הקבצים של APFS, תוך הדגשת היתרונות של Containers (קונטיינרים) ושיתוף שטח דינמי לעומת החלוקה המסורתית למחיצות.

Discussion - Script: "בואו נדבר על מערכת הקבצים שכולנו משתמשים בה כיום במק, APFS או Apple File System. לאורך שנים, עד בערך גרסת macOS Sierra, השתמשנו במערכת שנקראה HFS+. זה היה נחמד, אבל כשהעולם עבר ל-SSD, אפל הבינה שצריך משהו שנבנה במיוחד בשביל פלאש. APFS היא אחת ממערכות הקבצים הכי מתקדמות שיש, והמעבר אליה קרה 'און דה פליי'. משתמשים עדכנו גרסה ובלי לשים לב כל המערכת עברה המרה.

אבל מה שחשוב לנו להבין כאנשי IT זה איך APFS חושבת. פעם היינו לוקחים דיסק פיזי ומחלקים אותו למחיצות (Partitions). חתכנו עוגה. נתת 100 ג'יגה למחיצה אחת, זהו, זה שלה. APFS שינתה את הכלים. היום יש לנו 'Container (קונטיינר)' (Container - Container (מכולה)). ה-Container (הקונטיינר) הזה הוא כמו קופסה ענקית, ובתוכה יש Volumes (ווליומים) (Volumes - Volumes (כרכים)) וירטואליים. הקסם הוא מה שנקרא 'Space Sharing' או שיתוף שטח דינמי. כל הווליומים בתוך ה-Container (הקונטיינר) חולקים את אותו מקום פנוי בדיוק. הם מתרחבים ומתכווצים לפי הצורך, בלי שצריך להקצות להם גודל מראש. זה גמיש בצורה פנומנלית."

Demonstration:

  1. פתח את אפליקציית כלי הדיסקים (Disk Utility) (מתוך /Applications/Utilities).
  2. הראה למשתתפים את תצוגת הדיסקים, לחץ על התפריט העליון View בפינה השמאלית העליונה ובחר Show All Devices כדי שיראו את ההיררכיה המלאה: הדיסק הפיזי, ה-Container (הקונטיינר) והווליומים.
  3. הצבע על Container (קונטיינר) נבחר והראה איך המקום הפנוי שלו במידע התחתון זהה למקום הפנוי המדווח לכל הווליומים שבתוכו.
  4. לחץ על כפתור ה-+ (Add Volume) מעל רשימת הווליומים, כדי להראות שכל יצירת Volume (ווליום) APFS חדש לוקחת שניות בודדות ולא דורשת אתחול (Erase) של כל הכונן.

Instructor Deep-Dive:

הרחבה טכנית למדריך: Copy-on-Write ואבחון שגיאות ב-CLI * **Copy-on-Write - CoW:** במקרה של שאלות לגבי ביצועי כתיבה, חשוב להסביר ש-APFS מבוססת על מנגנון Copy-on-Write. זה אומר שכשמשכפלים קובץ במערכת, APFS רק משכפלת את המצביע (Pointer) ב-Metadata, ולא באמת כותבת את בלוקי המידע פעמיים. לכן השכפול קורה באופן כמעט מיידי ובלי לתפוס מקום נוסף. מקום נוסף ייתפס בפועל רק כאשר נבצע עריכה וכתיבה (Write) על אחד מהעותקים. * **תקלות נפוצות:** תקלות שכיחות ב-APFS מתוקנות לרוב על ידי `fsck_apfs` שרץ אוטומטית ברקע בכל פעם שעושים mount לכונן. אם משתמש שולף כונן בצורה לא בטוחה (Unsafe Eject), המק זוכר זאת. בפעם הבאה שיחובר הכונן (אפילו חודש מאוחר יותר), המערכת תריץ בדיקת `fsck_apfs` עמוקה וארוכה יותר. יש להזהיר את המשתמשים לא לנתק את הכבל בכוח בזמן הסריקה הזו, גם אם נראה שהכונן "תקוע" ולא עולה לשולחן העבודה, כיוון שקטיעת התיקון עלולה להשחית לחלוטין את הנתונים. * **טיפול ב-Snapshots:** לקוחות לעיתים חווים "חוסר מקום פנוי". זה נובע לרוב מסנאפשוטים (לרוב של Time Machine או התקנות עדכונים) ש"נועלים" את הבלוקים למקרה של שחזור. ניתן לראות ולנהל אותם דרך פקודות בטרמינל או בחלון הצד של Disk Utility (ע"י Show APFS Snapshots).

Objective: ללמד את התלמידים על ארכיטקטורת שני הווליומים של macOS המודרנית, מנגנון חתימת ה-SSV והפירמלינקים (Firmlinks).

Discussion - Script: "אחת התכונות המדהימות והמורכבות שאפל הציגה, שהתחילה ב-Catalina והגיעה לשיא ב-Big Sur, היא פיצול מערכת ההפעלה. כשאנחנו פותחים את ה-Finder זה נראה לנו כמו כונן אחד - Macintosh HD. אבל מאחורי הקלעים, יש לנו שני Volumes (ווליומים) נפרדים לגמרי עם תפקיד מאוד מסוים. אחד לתפקיד System והשני לתפקיד Data.

ה-System Volume הוא מה שנקרא SSV - Sealed System Volume. Volume (ווליום) מערכת חתום. זה אומר שהוא נעול לחלוטין לקריאה בלבד. אי אפשר לכתוב אליו, גם אם אתם אדמינים, גם אם אתם עם משתמש Root, וגם אם אתם מערכת MDM כל-יכולה. מעבד ה-Apple Silicon בודק את החתימה בכל הפעלה. כל המידע שלכם, האפליקציות שהתקנתם, תיקיית הבית - הכל יושב בבטחה על Volume (ווליום) הנתונים (Data Volume).

אז איך זה שהכל נראה לנו כעץ תיקיות אחד ורציף במחשב? פה נכנסים לתמונה ה-Firmlinks (פירמלינקים). הם לינקים דו-כיווניים עמוקים ברמת מערכת הקבצים שמחברים בין ה-System ל-Data בצורה שקופה לחלוטין למשתמש ולתוכנות. ככה אנחנו נהנים ממערכת מאובטחת וחסינה משינויים זדוניים, בלי לשבור את חוויית השימוש."

Demonstration:

  1. פתח את Disk Utility.
  2. הצג לסטודנטים את ההבדל בין Macintosh HD המוגדר כווליום קריאה-בלבד (Read-Only APFS System Volume) לבין Macintosh HD - Data המשמש לאחסון.
  3. בחר ב-Macintosh HD והראה בחלק התחתון את המידע עליו (כגון היותו Sealed או מוגן על ידי Snapshot).
  4. פתח חלון Finder והדגם כיצד תיקיית Users שמופיעה לכאורה בנתיב הראשי של הדיסק מקושרת באופן שקוף לכונן ה-Data. כדי להמחיש את החיבור מאחורי הקלעים, השתמש בקיצור הדרך מתוך ה-Finder: לחץ על Go בתפריט העליון, בחר Go to Folder... והזן את הנתיב /usr/share/firmlinks. לחץ עליו כדי להציג את קובץ הטקסט ב-TextEdit, והראה את רשימת הקישורים המחברת בין כונן ה-System לכונן ה-Data.

Instructor Deep-Dive:

הרחבה טכנית למדריך: מבנה ה-SSV ואתחולים מתקדמים ב-CLI * **Merkle Tree ו-CLI:** ה-Sealed System Volume מבוסס על מבנה נתונים מסוג עץ מרקל (Merkle Tree). כל קובץ ב-Volume (בווליום) מקבל גיבוב (Hash), והגיבובים נאספים עד לשורש העץ, שם הם נחתמים חתימה קריפטוגרפית אחת על ידי אפל (ה-Seal). ניתן להריץ את הפקודה `diskutil apfs list` בטרמינל כדי לראות את ההבדל הברור בין Volume שתפקידו (Role) הוא System (עם ציון `Sealed: Yes`), לבין Data. * **Recovery:** במצב שבו ה-SSV נפגם, המערכת תיכנס מיד ל-Recovery Mode ותבקש התקנה מחדש של ה-OS. אין שום אפשרות לטכנאי ה-IT "לתקן ידנית" את קבצי המערכת או את החתימה באמצעות שורת הפקודה, מכיוון שזה מצריך גישה לשרתי החתימות של אפל. ההתקנה מחדש היא הפתרון היחיד. * **Volume Groups:** הקונספט שמקבץ את System ו-Data יחד למקשה לוגית אחת נקרא APFS Volume Group. * אם תרצה להדגים את רשימת ה-firmlinks דרך שורת הפקודה, תוכל להריץ: `cat /usr/share/firmlinks`.

3. מעבדה: ניהול כוננים, יצירת Volumes (כרכים) ואבחון מקום פנוי

Objective: תרגול מעשי בניהול Containers (קונטיינרים) וווליומים באמצעות הממשק הגרפי (Disk Utility) על כוננים חיצוניים.

Discussion - Script: "עכשיו כשהבנו את התיאוריה מאחורי APFS, הגיע הזמן לתרגל. אנחנו נשתמש בכלי ה-Disk Utility שהוא הממשק הגרפי המרכזי לניהול דיסקים במק. הוא מאפשר לנו לראות את כל הווליומים המרכזיים של המשתמש, וווליומים אחרים כאשר אנחנו משנים תצוגה. במעבדה נתרגל איך להוסיף Volume (ווליום) לתוך Container (קונטיינר) קיים מבלי לפרמט אותו, איך להגדיר לו הגבלות שטח (Quota ו-Reserve), ואיך למחוק אותו בצורה בטוחה. למרות שקיימת פקודה עוצמתית בטרמינל (diskutil), הרוב המוחלט של הניהול היומיומי של כוננים ניידים וווליומים בארגון ייעשה בקלות וביעילות דרך הממשק הגרפי."

Demonstration:

  1. חבר את כונן ה-USB החיצוני (DOK / SSD) למחשב ההדגמה. הסבר לכיתה שכוננים רבים מגיעים מהמפעל מפורמטים כ-ExFAT או NTFS, ושאנחנו רוצים להכין אותם על ידי פירמוט ל-APFS.
  2. פתח את Disk Utility והראה שיש להציג את כל ההתקנים דרך תפריט View -> Show All Devices.
  3. בחר את שורש הכונן החיצוני הפיזי, ולחץ על Erase. הדגם פירמוט ל-APFS עם סכמת GUID. הסבר שסכמת GUID הכרחית לייצר Container תקין.
  4. לאחר הפירמוט, הדגם הוספת Volume (ווליום) חדש לתוך ה-Container (הקונטיינר) החיצוני באמצעות לחיצה על הכפתור + (Add Volume).
  5. לחץ על Size Options... והגדר ערכים שונים ל-Reserve ו-Quota כדי להמחיש איך ניתן להגביל שטח מחייה לכרכים השונים בתוך ה-Container (המכולה).
  6. הראה ב-Finder כיצד ה-Volume (הווליום) החדש עולה מיד לשולחן העבודה ונגיש לעבודה. לבסוף, מחק אותו בצורה בטוחה דרך Disk Utility (לחיצה על סמל ה-- של מחיקת Volume (כרך)).

Instructor Deep-Dive:

הרחבה טכנית למדריך: ניהול כוננים מתקדם בטרמינל (diskutil) * **ניהול מהיר ב-CLI:** למרות שהתמקדנו בממשק הגרפי, ניתן להשתמש בפקודה `diskutil apfs addVolume diskX APFS "SharedData" -quota 3g -reserve 1g` כדי לייצר כוננים באופן מתוסרט (Scripting). זה שימושי מאוד בפריסות אוטומטיות ללא צורך בהתערבות משתמש. * **Disk Arbitration:** תהליך הרקע המרכזי (`diskarbitrationd`) הוא זה שמטפל בעגינה (Mounting) של דיסקים. לדיבוג תקלות עגינה שאינן נראות בממשק הגרפי, ניתן להשתמש בטרמינל: `log show --predicate "subsystem == 'com.apple.DiskArbitration'" --last 10m`. * **Other Volumes:** קטגוריית "Other Volumes" בהגדרות האחסון כוללת Volumes (ווליומים) נסתרים כגון ה-Preboot, Recovery, ו-VM (Virtual Memory). כדי לראות את כל הרשימה המלאה והנסתרת ברמת המערכת, הרצת הפקודה `diskutil list` בטרמינל חושפת גם כוננים שלא יופיעו ב-Disk Utility.

4. תיבול ארגוני: השפעת ה-SSV על כלי ניהול צד-שלישי ואנטי-וירוסים של הארגון.

Objective: להסביר כיצד ההגבלות האבטחתיות של ה-SSV השפיעו על אופן הפעולה וההתקנה של תוכנות אבטחה וכלי ניהול בארגונים מודרניים.

Discussion - Script: "לסיום הפרק, בואו נכניס קצת 'תיבול ארגוני'. כפי שראינו, ה-System Volume סגור כעת הרמטית - Sealed. המשמעות של זה לארגונים היא דרמטית. בעבר, אנטי-וירוסים, כלי EDR (Endpoint Detection and Response) ותוכנות ניהול של הארגון היו נוהגים לדחוף קבצים וקרנל אקסטנשנס (Kexts - הרחבות ליבה) עמוק לתוך תיקיות המערכת. זו הייתה הדרך היחידה שלהם לנטר כל פעולה ברמה הנמוכה ביותר. אבל עכשיו עם ה-SSV - החגיגה נגמרה.

השינוי הזה דרש מכל מפתחי תוכנות האבטחה (כמו CrowdStrike, SentinelOne או Jamf) להמציא את הכלים שלהם מחדש. כיום, הסוכנים (Agents) מותקנים אך ורק על ה-Data Volume. במקום לפלוש לקרנל, הם משתמשים בממשק אבטחה רשמי ומסודר שאפל פיתחה הנקרא Endpoint Security Framework, ויחד איתו הם פורסים System Extensions (הרחבות מערכת). זה אומר שכלי הניהול והאבטחה של הארגון עדיין מקבלים דיווחים ומידע בזמן אמת על כל מה שקורה במחשב, אבל מבלי לסכן או לפגוע ביציבות מערכת ההפעלה הבסיסית."

Demonstration:

  1. פתח את הגדרות המערכת (System Settings) ונווט ל-Privacy & Security.
  2. גלול למטה עד שתמצא את האזור המסומן כ-Extensions או אזורים המציגים התראות של הרחבות מערכת מותקנות (למשל, תחת תפריט ה-Network ייתכן שיופיעו כלי סינון, ותחת Full Disk Access יופיעו סוכני ה-EDR של הארגון).
  3. פתח את האפליקציה Activity Monitor, ועבור ללשונית Network או CPU. אתר בתהליכים שם של אג'נט מוכר של החברה (למשל sysextd המנהל את ההרחבות, או את שם התוכנה עצמה). הסבר שפעילותן רצה כעת במרחב המשתמש בצורה מסודרת, ולא עמוק בליבת המערכת כבעבר.

Instructor Deep-Dive:

הרחבה טכנית למדריך: System Extensions ו-Zero-Touch Deployment * כדי לראות את הרשימה המדויקת של הרחבות המערכת הפעילות מאחורי הקלעים ניתן להריץ בטרמינל את הפקודה `systemextensionsctl list`. * **System Extensions לעומת Kexts:** תוספי קרנל ישנים (Kexts) נחסמים כעת כברירת מחדל, והתקנתם תדרוש מהמשתמש להוריד את רמת האבטחה של המק למצב Reduced Security במצב ה-Recovery. הרחבות מודרניות (System Extensions) לעומתן, רצות במרחב המשתמש. אם סוכן אנטי-וירוס מודרני קורס, הוא לא יפיל את המערכת ל-Kernel Panic. * **פריסה שקטה באמצעות MDM:** הרחבות מערכת דורשות המון אישורים גרפיים מהמשתמש דרך מנגנון ה-TCC. בארגון, פותרים זאת על ידי פריסת Configuration Profiles חכמים דרך מערכת הניהול (MDM). פרופיל ה-PPPC מאפשר החרגה ואישור מראש, והסוכן יכול להיות מותקן בתהליך שקוף לחלוטין למשתמש (Zero-Touch Deployment).