כולם משתמשים בכוננים קשיחים, שמחולקים למחיצות שמפורמטות למערכות קבצים אלו או אחרות, אבל כמה באמת מבינים איך זה עובד?
בפוסט הזה אני אנסה להאיר את הנושא.
הכונן הקשיח
בראשית ברא הענק הכחול כונן קשיח בנפח של 5MB, מה שנשמע קצת מצחיק היום אבל די מדהים בהנתן שזה היה ב1956.
הכונן נראה פחות או יותר כמו ערמת תקליטים: 50 פלאטות שמסתובבות ב1200 סיבובים לדקה, ו50 ראשים קוראים מהדיסקים.
די איטי במונחים של היום (דיסקים היום מסתובבים ב7200 ואפילו 10000 סיבובים לדקה) אבל אם חושבים על זה, מבינים שהשיפור במהירות הסיבוב בחמישים השנה שעברו מאז שהדיסק הזה יוצר הוא מינורי לחלוטין.
למעשה, הדיסקים של היום דומים מאוד לדיסק הזה, אם לא בגודל או במחיר אז לפחות בעקרונות.
הרעיון של ראש שקורא וכותב על דיסק שמסתובב במהירות נשאר איתנו עד היום.
עכשיו, איך בדיוק ניגשים למידע שמצוי במקום כלשהו על דיסק קשיח כזה?
אחת הדרכים היא לחלק כל פלטה על ידי מעגלים ברדיוסים הולכים וגדלים שמחלקים את הפלטה לכמה צילינדרים, ועל כן נקראים צילינדרים או טראקים (מסלולים).
כל צילינדר כזה מחולק לכמה בלוקים או סקטורים. ובאמצעות שלשה של ראש,צילינדר וסקטור אפשר למצוא כל נקודה בדיסק הקשיח.
די מסורבל, אבל ככה זה עבד במשך די הרבה זמן.
כמובן שתוכנות שרוצות לכתוב או לקרוא מהדיסק לא צריכות לדעת לדעת לחשב איפה המידע נמצא על סמך מספר הראשים או הצילינדרים בדיסק – זה התפקיד של הדרייבר שמכיר את החומרה שלו באופן אישי, ואחראי לספק לתוכנות שלמעלה ממשק יותר נוח ואחיד אל הדיסק, שדימו את הדיסק למערך רציף של בתים.
אפשר לנחש שהדריברים היו די מורכבים, כי הם נדרשו לבצע חישובים מסובכים שהשתנו ממודל למודל של הדיסק.
עקב מגבלות נפח שנבעו מהשיטה הזו – יצרני הדיסקים עברו לשיטה חדשה לציין כתובת על הדיסק, במקום לציין ראש,צילינדר וסקטור – פשוט מציינים את מספר הבלוק, כאילו הדיסק הוא בעצם שטח אחיד ורציף.
השיטה הזו נקראת LBA – Logical block addressing, והיא השיטה הדומיננטית היום.
בשיטה הזו, כשניגשים למידע בסך הכל צריך לתת מספר והדיסק כבר שובר את הראש (תרתי משמע) כדי להבין באיזה פלטה המידע, באיזה צילינדר ובאיזה סקטור.
אז עכשיו, לכל בלוק יש מספר, והדיסק נראה לשאר המחשב כמו קובץ אחד גדול.
Master boot record – MBR
מערכת ההפעלה של רובנו נימצאת על הכונן הקשיח, והמחשב יודע לטעון את מערכת ההפעלה גם אם זו מערכת הפעלה שנכתבה אחרי שהמחשב יצא מהמפעל. איך זה?
ההסבר פשוט למדי, הבלוק הראשון על כל כונן קשיח מכיל קוד שהותקן על ידי מערכת ההפעלה, והוא הקוד שמעלה את שאר המערכת.
בעליה (BOOT), המחשב מחפש כונן קשיח שניתן לאיתחול, טוען את הבלוק הראשון – הידוע גם בשם MBR – לזכרון ומריץ אותו.
אותו בלוק מכיל גם את טבלאת המחיצות (לא יאמן כמה אפשר להכניס ב512 בתים, אה?), טבלאת המחיצות מגדירה חלוקה של הכונן הקשיח לכמה חלקים.
בגרסאות הראשונות, טבלאת המחיצות הכילה מקום לארבעה מחיצות בלבד, מה שנפתר מאוחר יותר באמצעות שימוש במחיצות מורחבות ושאר המצאות.
אחת המחיצות מסומנת כמחיצת הboot, והתפקיד של הקוד בMBR הוא למצוא את המחיצה הזו, ולהעביר את השליטה לקוד שנמצא על הבלוק הראשון במחיצה.
הקוד הזה בדרך כלל טוען את שאר מערכת ההפעלה.
מי ששיחק עם דוס זוכר שהיו לדוס כמה קבצי מערכת מיוחדים שהיו חייבים להיות מותקנים בשימוש בפקודת sys או format/s. מה שמיוחד בקבצים האלו זה שהם הותקנו במיקום מסויים מאוד בדיסק, וככה אותו קוד פשוט שרץ מראש המחיצה יכל למצוא את הקבצים בקלות.
אותם קבצים כבר ממש טוענים את מערכת ההפעלה, והם מתוחכמים מספיק כדי להכיר את מערכת הקבצים.
טוען הBOOT הנפוץ GRUB עובד בצורה דומה, חלק ראשון יושב בMBR והוא אחראי להפעיל את הקוד של שלב 1.5, שיושב במקום ידוע מראש על הדיסק, ואחראי בתורו לזהות את מערכת הקבצים שבה נמצאת מערכת ההפעלה, ולהתחיל לטעון אותה (בלינוקס פה מדובר בקרנל של המערכת).
מערכת הקבצים
מערכות קבצים הם אחד הנושאים המורכבים, וצריך ספר כדי לכסות כמו שצריך את הנושא, אבל אני אשתדל לגעת קצת במה שמעניין.
עד עכשיו דיברנו על בלוקים, אבל כשאנחנו עובדים עם המחשב אנחנו לא אומרים לו: טען את המידע מבלוק 42201, כתוב את המידע לבלוק 10024 – אלא מדברים איתו במונחים של קבצים: פתח את הקובץ X, כתוב לשם Y, מחק את הקובץ Z.
מערכת הקבצים היא מה שמאפשר את ההפשטה הזו.
מערכת הקבצים יושבת בתוך המחיצה (למרות שאפשר גם לפרמט את הכונן הקשיח כולו ישירות בלי טבלאת מחיצות), התפקיד של מערכת הקבצים הוא לקחת את את המחיצה, לנהל את הבלוקים שלה ולהשתמש בה כדי לכתוב ולקרוא קבצים, ליצור ספריות, לשלוט על הגישה (אבטחה) אל הקבצים ולדאוג לתקינות הקבצים גם במצבים קיצוניים – למשל כיבוי לא מתוכנן של המחשב.
יש מערכות קבצים רבות, ששונות אחת מהשניה בתכונות, במגבלות ויתרונות ובחסרונות, הנה רשימה קצרה ולא ממצה:
12/FAT16
מערכת קבצים מיושנת, שימשה את DOS. שמות קבצים מוגבלים באורכם ל8 תווים ולעוד 3 תווים לסיומת, נפח המחיצה מוגבל ל32 מגה לFAT12 ול2 ג'יגה בייט לFAT16 ,אין מאפייני אבטחה ושגיאות במערכת הקבצים הן נפוצות.
NTFS
מערכת הקבצים הסטנדרטית של חלונות NT, שנכללה בחלונות 2000, XP וויסטה בהמשך.
מודרנית, כוללת מאפייני אבטחה (ACL לכל קובץ) ותמיכה בונפחי קבצים ומחיצות עצומים.
לNTFS יש נטיה להפוך לאיטית יותר יותר ככל שמשתמשים בה.
EXT3
אחת ממערכות הקבצים הדומיננטיות במערכות לינוקס.
די מודרנית, תומכת בקבצים ומחיצות בנפחים עצומים, journaling במספר רמות ועוד.
עד כאן להפעם.
קריאה נוספת:
צילינדרים, ראשים וסקטורים.
כוננים קשיחים
איתחול
מערכות קבצים
זה מאוד מעניין. תודה עמרי.
אחלה פוסט 🙂