ארכיטקטורת ה־inodes ב־EXT2.
ה־**ext2**, או בשמה המלא **מערכת הקבצים המורחבת השנייה**, הייתה מערכת הקבצים הסטנדרטית של מערכת ההפעלה לינוקס למשך מספר שנים, וגם כיום יש לה שימוש נרחב. היא תוכננה בראשונה על ידי רמי קארד (*Rémy Card*), בהתבסס על העקרונות של מערכת הקבצים המורחבת (ext). מערכת הקבצים הזו מהירה יחסית, ומשמשת כגורם השוואה במבחני ביצועים של מערכות קבצים אחרות. החסרון העיקרי של ext2 הוא שהיא אינה מערכת קבצים מתועדת (journaling filesystem). ב־ext3, יורשתה של ext2 יש תיעוד, והיא תואמת ext2.

המימוש בפועל העיקרי של מערכת הקבצים הזו, היא מערכת הקבצים ext2fs, בליבת לינוקס. מימושים אחרים (בדרגות שונות של איכות ושלמות) קיימים גם ב־HURD, מספר ליבות של מערכות BSD והתקני צד-שלישי של מערכת Windows של חברת מיקרוסופט.

ext2 הייתה מערכת הקבצים הנבחרת בהפצות לינוקס רד האט, פדורה ודביאן, והוחלפה במערכת הקבצים ext3, החדשה יותר. את EXT3 החליפה ext4.

היסטוריה
--------

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

כדי להקל על הוספת מערכות קבצים, ולספק API גנרי לניהול קבצים, הוספה לליבת לינוקס שכבת VFS, היא שכבת "מערכת קבצים וירטואלית". מערכת הקבצים המורחבת ext שוחררה באפריל 1992 כמערכת הראשונה שמשתמשת ב־API של מערכת הקבצים הווירטואלי, והוספה לליבת לינוקס החל מהגרסה 0.96с. מערכת הקבצים ext פתרה את שתי הבעיות העיקריות של מערכת הקבצים של מיניקס: היא איפשרה 2 ג'יגה-בייט של מידע ושמות קבצים באורך עד 255 תווים. אולם גם לה היו בעיות: לא היה ניתן לגשת למערכת הקבצים במקביל, לא ניתן היה לשנות את מבנה ה־inode (מבנה נתונים שמחזיק מידע על הקובץ), ואת חותמות זמני הגישה לקבצים.

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

מערכת הקבצים המורחבת השנייה יכולה להכיל קובץ בגודל עד 16 ג'יגה-בייט כאשר גודל הבלוק הוא 1KB(זהו גודל הבלוק המינימלי עבורה) ועד 2TIB בגודל בלוק של 4-8KB, אורך שם קובץ מקסימלי של 255 תווים, ואורך משתנה של גודל בלוק הזיכרון (יחידת הזיכרון הבסיסית באחסון נתונים על המערכת קבצים)

מפרט מערכת הקבצים
-----------------

### קבוצת בלוקים

כל מערכת קבצים ext2 מחולקת לקבוצות בלוקים, כאשר כל אחת מורכבת מהמרכיבים הבאים לפחות:

* בלוק-על
* מתארי הקבוצה
* מיפוי בלוקים
* מיפוי Inode
* טבלת Inode
* בלוקי מידע

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

### בלוק-על

בלוק העל מכיל מידע המתאר את מערכת הקבצים כולה:

* מספר ה-inodes
* מספר הבלוקים
* מספר הבלוקים השמורים
* מספרו של בלוק המידע הראשון
* גודל בלוק
* גודל מקטע
* מספר בלוקים לכל קבוצה
* מספר המקטעים לכל קבוצה
* מספר ה- inodes לכל קבוצה
* זמן העגינה (mount)
* זמן כתיבה
* מספר העגינות
* מספר העגינות המקסימלי
* חתימת קסם (Magic signature)
* מצב מערכת הקבצים: בר-תוקף (נותק מהעגינה בצורה נקיה) או שגיאה
* התנהגות בעת זיהוי שגיאה
* שלב בקרה משני
* התאריך בו מערכת הקבצים נבדקה לאחרונה
* משך הזמן המקסימלי בין בדיקות עוקבות
* שם משתמש ומספר הקבוצה המהווים ברירת מחדל בגישה לבלוקים שמורים.

### Inodes

Inodes מכילים את כל המידע בנוגע לקובץ מסוים:

* אופן פעולת הקובץ
* מספר משתמש (uid)
* מספר קבוצה (gid)
* גודל הקובץ, בבייטים
* זמן הגישה האחרונה לקובץ (atime)
* זמן שינוי ה-Inode האחרון (ctime)
* זמן שינוי הקובץ האחרון (mtime)
* זמן מחיקת הקובץ (dtime)
* מספר הקישורים
* מספר הבלוקים
* סוג הקובץ
* מאפייני הקובץ
* רשימת כתובות של הבלוקים, כאשר קיימות שלוש רמות קישור:
	+ בלוק המכיל חלק מן המידע הממשי של הקובץ (גישה ישירה דרך הכתובת)
	+ בלוק עקיף המחזיק כתובות ישירות של בלוקים עם מידע ממשי של הקובץ (גישה עקיפה דרך הכתובת)
	+ בלוק עקיף-כפול המחזיק כתובות של בלוקים עקיפים (גישה עקיפה כפולה דרך הכתובת)
	+ בלוק עקיף-משולש המחזיק כתובות של בלוקים עקיפים-כפול (גישה עקיפה משולשת דרך הכתובת)

### מדריכים

(נקראים גם ספריות או מדורים): מיוצגים על ידי רשימה של כניסות מדריך, כאשר כל כניסה מכילה מספר inode ושם קובץ.

### קבצים

קבצים רגילים:  

מיוצגים כרשימה של בלוקים, כאשר המצביעים אליהם עוברים דרך ה־inodes. הבלוקים עצמם הם חסרי שדות הגדרה, ומכילים מידע קובץ או כתובות בלבד.

קישורים:

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

קבצים מיוחדים:  

* התקני בלוק
* התקני תווים
* FIFO

קישורים חיצוניים
----------------

* תכנון ומימוש של ext2
* דף הבית של ext2fs