תרגול 13 Fs Flashcards
Vsfs
ראש תיבות
Very simple file system
Fat
ראשי תיבות
File allocation table
הדיסק עובד ב512 בתים
אבל מערכת ההפעלה עובדת ביחידות יותר גדולות של 4kb
למה?
מידע עובד באופן קבוע בין הזיכרון לדיסק
יותר נוח למערכת ההפעלה לעבוד ביחידות קבועות לשני הרכיבים
האם יש אוטומיות בכתיבה לדיסק של
512 בתים
4 kb
הדיסק מבטיח אטומיות בגודל של 512 בתים
אבל לא מובטח אטומיות בגודל של 4kb
בקצרה מהו inode
שומר בתוכו את הmetadata של קובץ
איזה מידע נשמר בinode
ואיזה מידע לא נשמר
לא נשמר שם קובץ
כי שם קובץ זוהי תכונה של links
Inode number מזהה של האינוד
גודל הקובץ
הרשאות גישה
חותמת זמן - זמן הקריאה או הכתיבה האחרונה לקובץ
מיקום בדיסק (איזה סקטורים)
מה הגודל המינימלי של קובץ
4kb
מערכת ההפעלה לא עובדת עם פחות
Stat()
Systemcall
מראה את המידע על קובץ מתוך הinode
כמו כן את מספר הקישורים לקובץ
איפה נשמר שם הקובץ?
שם קובץ זה בעצם תכונה של התקיה שמכילה הצבעה לקובץ
ולכן נשמר בתקיה
מה מכילה תקיה
מיפוי בין שם קובץ לinode number
מהם . ו.. שיש בכל תקיה
אלו שתי רשומות מיוחדות שיש לכל תקיה בטבלה שלה
נקודה מצביעה על התקיה הנוכחית
שתי נקודות מצביע. לתיקיית האב
מהי תקיית האב של לינוקס
/
האם ניתן לקרוא קובץ של תיקיה עם
Read/write systemcall
לא
פרטי המימוש של תקיה מוסתרים מהמשתמש
איך ניתן לכתוב ולקרוא תוכן של תקיה?
קריאה
באמצעות קריאת המערכת getdents
כתיבה
רק עי מחיקה או הוספת קבצים לתיקיה
איזה קריאות מערכת יוצרות ומוחקות תיקיה
איזה פקודת מערכת מוחקת תיקיה לא ריקה
mkdir()
rmdir() רק אם ריקה
אי אפשר למחוק תיקיה לא ריקה על קריאת מערכת
פקודה ליצירת
Hardlink
Softlink
Hard
ln src dst
Soft
ln -s sec dst
מהו קישור קשה
Hardlink
שם נדרף לקובץ המקורי
מצביע ישירות לinode של הקובץ
כתיבה אליו תכתוב ישירות לקובץ
מחיקה תקטין את מונה הlinks בinode
מתי קובץ ימחק
אחרי שכל הקישורים הקשים אליו נמחקו והמונה שלו בinode הוא 0
מהו קישור רך
קובץ נפרד בעל inode נפרד שמצביע על הקובץ המקורי
כתיבה אליו תכתוב לקובץ המקורי בדומה לקישור קשה
אפשר לייצר גם לקובץ שאינו קיים
ומחיקה שלו לא תשפיעה על הקובץ המקורי
האם קישורים קשים יכולים להיות בין שתי דיסקים נפרדים
לא כי אז לא מובטח שהinode יהיה יחודי
האם קישורים רכים יכולים לקשר בין קבצים בשתי מערכות קבצים שונות
כן
האם אפשר להצביע על תקיות
בהצבעה רכה וקשה
רכה כן
קשה לא כי אז יהיה בלבול של מי האבא האמיתי של קובץ
האם יכולים להיות מעגלים בקישורים רכים
כן אבל לינוקס מזהה את זה ומונעת את זה
מהם השלבים בתכנון מערכת האחסון
Vsfs
ברגע שקיבלנו דיסק
חלוקה לבלוקים בגודל 4k כמו שהמערכת הפעלה עובדת
הקצאת איזור הנתונים שבו ישמרו המידע של המשתמש
נרצה שיהיה כמה שיותר גדול
טבלת הinods
כמות הרשומות שיהיה במערך הזה זאת גם המגבלה של הקבצים שנוכל לשמור
Bitmap שיסמן האם הבלוקים באיזור הנתונים תפוסים
והאם inode במערך הוא בשימוש
במחיר של בלוק אחד לכל אחד
אפשר לעקוב ככה עד 4k אינודס וגם 4k בלוקים
Superblock
הבלוק הראשון
יכיל מידע על מערכת הקבצים
מספר הinodes
מספר הבלוקים
היכן נמצא הinode של תקיית השורש /
למה לרוב שומרים כמה עותקים של הsuperblock
כי אם הוא נהרס לא נוכל לקרוא קבצים ממערכת הקבצים
הסבר על תהליך הmount
אפשר לקחת תיקיה
ובעצם להחליף אותה בתקיה אחרת ממערכת קבצים אחרת
כל התוכן הישן של התקיה לא יהיה נגיש יותר ויחזור לגישה כאשר נבטל את הmount
קריאת מערכת לmount ולביטולו
Mount
Unmount
האם אפשר לבצע mount לאותה תקיה בכמה מקומות שונים
כן
וככה נוצר גם כמה מסולילים להגיע לקבצים
למה מספר הinode הינו מזהה מספיק למערכת ההפעלה בשביל לקרוא את המידע של הקובץ
כי לפי המספר כבר נדע איך לגשת אל הinode במערך הinodes ומשם נוכל להגיע למידע
כמה מצביעים ישירים לבלוקים יש לכל inode
ואיך עוקפים את מגבלת גודל הקובץ
12
מה שאומר שאפשר לכל היותר 12 כפול 4 קילו
כלומר 48 קילו גודל מקסימלי
אבל אפשר לפתור את הבעיה על ידי הצבעה לבלוק שיכיל מצביעים אחרים
הבלוקים האחרונים ישמשו להצבעה על מערך מצביעים ואילו הראשונים יצביעו ישירות למידע
כך יהיה יותר קל לקרוא את ההתחלה של הקובץ
שלבי הפעולה בעת נסיון קריאה של
/foo/bar
מערכת ההפעלה תלך לתקיית השורש /
משם היא תלך לבלוקים שמרכיבים אותה ותחפש את הכניסה של foo
מערכת ההפעלה תבדוק בinode של foo את הרשאת הגישה
תחפש כמו מקודם את bar
ואז open לinode של bar תוך בדיקה של ההרשאות
שלבי פעןלה שלread
אחרי שקיבלנו fd מopen
תלך לinode של הקובץ כדי למצוא את הבלוקים שמרכיבים אותו
מערכת ההפעלה תקרא את הבלוק המבוקש
ואז מערכת ההפעלה תכתוב לinode עדכון של זמן הגישה האחרון לקובץ
שלבי יצירת קובץ חדש
קריאת הinode bitmap
וחיפוש אחד פנוי
ואז נסמנו כתפוס
נרצה לאתחל את המידע של הinode
אבל הוא בגודל קטן מ512 לכן נקרא את כל ה512 ונכתוב מחדש את כולם עם השינוי שרצינו
נכתוב לבלוקים של תקיית האב שהוספנו את התיקיה החדשה
כתיבה לinode של תקיית האב כדי לעדכן את חותמת הזמן שלה
Inode cache
מה זה
למה צריך
כל פעולה יכולה לדרוש הרבה גישות לדיסק
לכן לינוקס שומרת מספר מטמונים
Page cache
Inode cache
Bitmap cache
And more
Fat
איך עובדת הטבלה
כל תקיה מכילה טבלה של קבצים שבתוכם גם מוטמע הinode לא באמת אבל
כל קובץ מכיל את השם שלו
את הmetadate
וקישור לבלוק הראשון ברשימה המקושרת שמסמן את תחילת המידע של הקובץ
הבלוקים של כל קובץ שמורים ברשימה מקושרת
כך שהבלוק האחרון מסומן בFF
0 לסימון בלוק פנוי
-1 לסימון בלוקים פגומים
האם אפשר לעשות קישורים רכים ב
Fat
לא
מה זה magic number
פעם זה היה ה2 בתים הראשונים של הקובץ וכך ידעו איזה סוג קובץ זה
היום זה כבר יותר מסובך
זה גם יכול להיות לסקריפטים
Shebang pathToPython
ואז יודעים גם איך להריץ
כמה תווים מראים את הרשאות הקובץ בלינוקס
הסבר כל אחד
יש 3 שלשות
User group all
לכל אחד מהם יכול להיות
rwx
והכי ימני זהו סוג הקובץ
P fifo
B block
C character
L link
D directory
- regular file
Acl
מה זה
הסבר בקצרה
Acess control list
אפשר להגדיר רשימות חוקים לקבצים
יש יותר הגדרות חוץ מrwx
אפשר להגדיר הרבה משתמשים וקבוצות
הבעיה היא שזה לא חלק מposix לכן זה בעייתי להשתמש בזה כי זה לא יהיה פורטבילי בין מה שונות
מה המקביל לsyscall stat
שעובד על לינק ולא על מה שהלינק מצביע עליו
לינק סופט
Lstat
איפה הטבלה של FAT נשמרת
גם בדיסק וגם בזכרון
מה היתרונות והחסרונות של FAT
יתרונות
קל לניהול
אין פרגמנטציה חיצונית
גישה מהירה למצביעים על הבלוקים
חסרונות
מאבדים את רציפות המידע
הטבלאות יכלות להיות ענקיות לכן גם לא יעיל למערכות קבצים גדולות
מה ראשי התיבות של
RAId
Refundet array of inexpensive disks
Raid 0
הסבר
מה יתרונות
מה חסרונות
המידע מפוזר באקראי על גבי N דיסקים
יתרונות
בתיאוריה המהירויות יכולות לגדול פי N
חסרון
אם דיסק נהרס איתו ימחק בהכרח מידע
Raid 1
הסבר
מה יתרונות
מה חסרונות
מפצלים את הדיסקים ל2
כל מידע נכתב לשני המקומות
היתרון
יש גיבוי לכל דיסק
קריאה וכתיבה באותה מהירות
יש בזבוז של חצי מהאחסון
Raid 4
הסבר
מה יתרונות
מה חסרונות
נשמור מערך אחד של דיסקים
כך שכל דיסק בו יכול את ביט הזוגיות לפי שאר מערכי הדיסקים באופן מתאים
כך שאם דיסק מסוים ייהרס נוכל לשחזר את כל המידע שלו
החסרון הוא שבכל פעולת כתיבה אנחנן צריכים לבצע 4 פעולות
זה בעיה רק במקרים של קריאות קטנות כי במקרים של קריאות גדולות אנו נקרא בכל מקרה את הסקטורים הבאים
Raid5
כמו 4
רק שעכשיו אנחנו מפזרים את הדיסקים של הזוגיות בין כל המערכים
ככה העומסים על המערכים מתאזנים
Raid6
משתמש בשתי מערכים של זוגיות באלגוריתמים שונים
יותר בזבוז לדיסקים שלא מכילים מידע
אבל מאפשר להתגבר על עד 2 דיסקים הרוסים בכל שורה
Extent
מה זה
אזור זכרון רציף אשר שמור לקבצים
מיוצג עי טווח מספרי בלוקים
מאפשר גישה רציפה
הבעיה היא שזה מסובך לניהול
וגם צריך לנחש את הגודל שנצטרך
אם ננחש קצת מדי אז נצטרך להקצות עוד
אם ננחש יותר מדי יהיה פרגמנטציה פנימית
מה ההבדל בין סופט להארד לינקס
סופט
מקושר בעזרת נתיב לקובץ
אפשר להשתמש בו במערכות קבצים שונות
הארד
ממפה לפי האינוד
אי אפשר להשתמש בו במערכות קבצים שונות כי לא מובטח שהאינוד יהיה זהה