איך לא לחלק דיסק קשיח ויונית שימושית

2 בפברואר 2007

תגיות: , ,
5 תגובות

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


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


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


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


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


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


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


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


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


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



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

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


ולמה זמן הגישה הממוצע כל כך חשוב ? בגלל קיר הזכרון.


להלן תרגיל ביונית שימושית.



  • מהי מהירות מחזור הפקודה ביע"מ (יחידת עיבוד מרכזית) מקובל כיום ? שלושה ג'יגה שזה פחות או יותר שליש ננו שניה.
  • מה מהירות הגישה מהיע"מ לזכרון המקובלת כיום ? 833 מגה הרץ שזה בערך 1.2 ננו שניה.
  • להזכירכם מהירות הגישה לדיסק היא בערך 10 מילי שניה.

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


אני אתן לכם רמז, ננו זה בחזקת מינוס 9, מילי זה בחזקת מינוס 3, ומי שיצא לו ש 30,000,000 (במילים: שלושים מיליון) פעולות מעבד זה המחיר שאתה משלם על גישה אחת להביא דף לזכרון, כנראה שלא שכח עדיין את היוונית השימושית מבית הספר היסודי.


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


דרך אגב, כאשר אתם מהדרים קוד, למה אתם עושים אופטימיזציה, לגודל או למהירות ?


מסקנות והמלצות:



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

הדעה שלי על חלוקה למחיצות:


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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

5 תגובות

  1. Rami3 בפברואר 2007 ב 8:32

    wow !
    עכשיו אחרי שסיימתי לקרוא אני הולך לשתות משהו ..
    🙂

    I Salute You

    נהנתי מאד לקרוא את דברייך ואפילו להעלות זיכרונות
    על יע"מ וחיות אחרות ..
    דברייך אכן נכונים והינך צודק במאה אחוזים ..

    תודה על ההערה והארה .

    הגב
  2. Alon3 בפברואר 2007 ב 15:26

    ראשית, יופי של מאמר.
    שנית, יש לציין עדיין מקרה מסויים שבו נרצה לחלק דיסק וזה כאשר יש לנו דיסק אחד (או מערך raid אחד) ואנחנו רוצים להתקין מספר מערכות הפעלה זו לצד זו (ואנחנו לא יכולים להרשות לעצמנו virtusl pc)

    אלון.

    הגב
  3. Shahar3 בפברואר 2007 ב 18:23

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

    הגב
  4. guymi8 בפברואר 2007 ב 9:04

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

    שני דברים שאני חולק עליהם:
    1. גיבוי מחיצה (Partition) לאותה מחיצה זה דבר שלא כל תוכנת גיבוי או Imaging מאפשרות.
    2. הגבלת הגודל במערכות הישנות היתה של 2GB בשל מגבלות של מערכת הקבצים (FAT) ולא היתה קיימת באותה צורה במערכות אחרות מבוססות 16BIT כמו נובל.

    הגב