- צבר – בלוג עם קוצים - http://tsabar.no-ip.org/blog -

למה בלינוקס אין איחוי דיסק

זו שאלה שעולה הרבה בפורומים, למה אין איחוי דיסק בלינוקס, או איפה ניתן למצוא אותו אחרי התקנת לינוקס.

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

תמונת ASCII אחת שווה אלף מילים:

disk1

זה ייצוג של כונן קשיח (קטנטן) שעדיין ריק, ולכן הכל אפסים. האותיות של העמודות והשורות מסמנות את איתור מיקום הבתים על הדיסק: בצד שמאל למעלה זה בית במיקום AA, בצד ימין למעלה ZA, בצד שמאל למטה AZ ובצד ימין למטה ZZ. אני בטוח שאתם כבר מבינים את הרעיון…

נתחיל עם מערכת קבצים פשוטה, כזו שרובם מכירים ושצריכה לעבור איחוי דיסק מידי פעם, למשל FAT: זו מערכת שעדיין נמצאת בשימוש בדיסקים ניידים USB, והיא נתמכת ע"י רוב מערכות ההפעלה הקיימות. למרבה הצער, זו מערכת קבצים שבה יש קבצים מפוצלים לעיתים קרובות. נוסיף קובץ למערכת הקבצים שלנו ועכשיו הדיסק הקשיח שלנו ייראה כך:

disk2(השורות הריקות G-Z הושמטו לשם הבהירות)

נסביר מה אתם רואים: ארבעת השורות הראשונות של הדיסק מכילות את "תוכן העניינים", או TOC. תוכן העניינים הזה מסמן את המיקום של כל קובץ על הדיסק. בדוגמא לעיל, תוכן העניינים מכיל קובץ אחד, בשם "hello.txt", ואומר כי את תוכנו של קובץ זה נמצא בין AE ו LE. נבחן מיקומים אלה, ונראה כי תוכן הקובץ הוא הטקסט "שלום, עולם".

עד כאן הכל בסדר. עכשיו נוסיף עוד קובץ למערכת הקבצים:

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

הבעיה נוצרת כאשר אנו מחליטים לערוך את הקובץ הראשון. נניח שאנחנו רוצים להוסיף כמה סימני קריאה כדי שקריאת ה"שלום" שלנו תהיה נלהבת.

כעת יש בעיה: אין מקום לסימני הקריאה מיד לאחר קריאת "שלום עולם", כי הקובץ "bye.txt” נמצא שם. לכן יש לנו 2 אפשרויות, והם לא הכי טובות:

1.למחוק את הקובץ הראשון, ולמצוא מקום אחר על הדיסק שיוכל להכיל את הקובץ בשלמותו. אבל כאן מעורב הרבה עבודה של קריאה וכתיבה לדיסק.

2.נפצל את הקובץ כך שיבוא מיד אחרי הקובץ bye.txt, כך נשמור אותו מהר אבל הגישות הבאות (שמירה או פתיחה) לקובץ יהיו איטיות יותר.

הנה דוגמא של האפשרות הראשונה:

disk4

הנה דוגמא של האפשרות השניה:

disk5האפשרות השניה היא הסיבה למה מערכות קבצים מסוימות צריכות לעשות איחוי דיסק על בסיס קבוע. כל הקבצים ממוקמים אחד ליד השני, אז כל פעם שמגדילים הקובץ, מפצלים אותו. ואם קובץ מוקטן, זה משאיר רווח בין הקבצים. אחרי זמן מסוים נהיים המון קבצים מפוצלים על הכונן הקשיח והביצועים מתחילים לרדת.

הסוג הראשון של מערכת קבצים אידאלית אם יש במחשב משתמש יחיד, והגישה לקבצים היא פחות או יותר לפי הסדר שהם נוצרו, אחד אחרי השני, עם מעט מאוד פעולות עריכה. הבה נראה מה קורה כאשר אנו משתמשים בפילוסופיה שונה. לינוקס מאז ומתמיד נטתה למשתמשים מרובים במערכת: זה הרי ברור שיותר ממשתמש אחד ינסה לגשת לקובץ אחד בזמן מסוים, ולכן נחוצה גישה אחרת לאחסון הקבצים. כאשר אנו יוצרים את הקובץ "hello.txt" במערכת קבצים הממוקדת לפי תפיסת העולם הלינוקסאית, זה ייראה כך:

disk6ומתי שקובץ חדש יתווסף למערכת הקבצים:

disk7הרעיון שעומד מאחורי תפיסת העולם למערכת קבצים זו, נעוץ בכך שראש הקריאה/כתיבה של הדיסק יכול לשבת בערך באמצע, ואז כל הקבצים יהיה בסה"כ די קרובים אליו, וכך המהירות הממוצעת תהיה גבוהה. ככה הרי עובדים ממוצעים.

בנוסף, כאשר אנו רוצים להוסיף סימני קריאה לקובץ "hello.txt”, הראשון שיצרנו, אין לנו שום בעיה לעשות זאת:

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

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

בסוג האחרון של מערכת הקבצים, פיצול קבצים נגרם רק כאשר הדיסק כ"כ מלא, שאין מספיק מקום לשים קובץ גדול במערכת מבלי לפצל אותו. לא סביר שזה יקרה אם הדיסק מלא עד 80% מהקיבולת שלו.

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

נניח כי בדוגמא שלנו, בכונן הקשיח יש שתי פלטות מגנטיות: אחת מכילה את הבתים מ-AA עד ZM, והשניה מכילה את הבתים מAN עד ZZ. הדיסק שלנו ייראה כך:

disk9הקובץ הבא ייחשב לבלתי מקוטע, כי הוא הולך משורה M לשורה N, אך זה מתעלם מהעובדה שהמחט המגנטית על הדיסק תצטרך לזוז מהקצה אל הקצה של הצלחת המגנטית כדי לקרוא את הקובץ:

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

הפוסט הזה הוא תרגום חופשי ולא מדויק לשפת הקודש, הכתבה המקורית נמצאת בפוסט הזה [1].