זיכרון וירטואלי הוא אחד הדברים שעומדים בבסיס מערכת ההפעלה המודרנית, אבל בדרך כלל, אתה לא באמת חושב על זה אלא אם כן יש לך בעיה. הפצות לינוקס מבקשות ממך להגדיר את שטח הזיכרון הווירטואלי שלך (החלפת מחיצות) במהלך ההתקנה, אבל רוב המתחילים לא מודעים לכמה זה שימושי.
הנה כל מה שאתה צריך לדעת על זיכרון וירטואלי בלינוקס.
מהו זיכרון וירטואלי?
זיכרון וירטואלי הוא דרך לייצג את הזיכרון שלך המופשט מהזיכרון הפיזי במחשב שלך. הוא עושה שימוש גם ב-RAM וגם בשטח האחסון שלך, בין אם זה בכונן קשיח מסורתי או ב-SSD.
בלינוקס, זה נעשה ברמת הליבה והחומרה. למעבד יש חומרה הנקראת Memory Management Unit (MMU) שמתרגמת כתובות זיכרון פיזיות לכתובות וירטואליות. כתובות אלו אינן תלויות במקום שבו הן נמצאות פיזית במחשב. מרחבי כתובות אלו ידועים כ"דפים" והם יכולים להיות ב-RAM או בכונן הקשיח או ה-SSD שלך. מערכת ההפעלה רואה בכתובות אלו מאגר אחד גדול של זיכרון, המכונה "מרחב כתובות".
זיכרון וירטואלי מנצל את העובדה שלא כל הזיכרון שנמצא בשימוש בתיאוריה נמצא בשימוש כל הזמן. תוכניות בזיכרון מחולקות לדפים והחלקים שהקרנל מחשיב כלא נחוצים "מוחלפים", או מועברים לכונן הקשיח. כאשר יש צורך בהם, ניתן "להחליף" אותם או להחזיר אותם ל-RAM.
השטח המשמש לזיכרון וירטואלי בכונן מכונה "חנות גיבוי" או "החלפת שטח". בעולם ווינדוס, זה מיושם בדרך כלל כקובץ, המכונה "קובץ החלפה". אפשר לעשות זאת גם בלינוקס, אבל זה הרבה יותר נפוץ ל השתמש במחיצת דיסק ייעודית.
קבצי החלפה ב-Linux שמורים בדרך כלל למערכות מינימליות או משובצות, וזה נפוץ שהאחרונים פועלים ללא זיכרון וירטואלי לחלוטין מכיוון שמערכות הפעלה משובצות צריכות להיות קטנות.
התוצאה של זיכרון וירטואלי היא שאפשר להפעיל תוכניות גדולות על ידי שימוש ביותר זיכרון מאשר זיכרון RAM הפיזי שבו המכשיר שלך, בדומה לאופן שבו כרטיס אשראי מאפשר לך לבצע רכישות גדולות עבור יותר כסף ממה שיש לך בבנק שלך חֶשְׁבּוֹן. כמו כרטיס אשראי, זיכרון וירטואלי שימושי כאשר אתה צריך אותו אבל אתה לא רוצה להאריך יותר מדי את השימוש בו.
זיכרון וירטואלי גם מאפשר למפתחים ליצור יישומים מבלי לדעת כיצד מאורגן זיכרון המחשב.
החיסרון העיקרי מבחינה היסטורית עם זיכרון וירטואלי היה שהכוננים הקשיחים היו איטיים יותר מ-RAM. אם למכונה אין מספיק זיכרון RAM, המערכת יכולה להמשיך ולהחליף עמודים פנימה והחוצה ללא סוף, תהליך המכונה "חבוט". זה פחות בעיה במחשבים מודרניים עם יותר זיכרון RAM וכונני SSD מהירים יותר המחליפים כוננים קשיחים מכניים, אבל זה עדיין משהו שצריך לדעת שֶׁל.
החלפת מחיצות לינוקס
כפי שהוזכר קודם לכן, השיטה הרגילה להגדרת זיכרון וירטואלי בלינוקס היא שימוש במחיצת דיסק ייעודית. כלי ההתקנה יבדוק את החומרה שלך ויציע ערכת חלוקה הכוללת מחיצת החלפה.
אתה יכול גם להוסיף מחיצות החלפה לאחר ההתקנה. אם ברצונך להוסיף מחיצה חדשה לכונן קיים, תצטרך לעשות זאת השתמש בכלי חלוקה לא הרסני כמו GParted. ודא שבחרת ב"החלפה של לינוקס" כמערכת הקבצים עבור המחיצה שלך.
גבה נתונים חשובים לפני חלוקה מחדש של הכונן שלך.
לאחר שיצרת את המחיצה שלך, השתמש בפקודה mkswap כדי לאתחל את המחיצה שלך.
sudo mkswap /dev/sdX
כעת תצטרך לערוך את שלך /etc/fstab בתור root כדי להוסיף את מחיצת ההחלפה שלך. שורה זו, שנוספה לקובץ, תגדיר מחיצת החלפה שתתעלה בזמן האתחול:
/dev/sdX none swap ברירת מחדל 0 0
כעת השתמש ב- swapon פקודה להפעלת שטח ההחלפה החדש שלך, כאשר sdX הוא השם של מחיצת ההחלפה שלך:
sudo swapon /dev/sdX
שימוש בקבצי החלפה בלינוקס
זה קל הגדר קובץ החלפה בלינוקס באמצעות שורת הפקודה. אולי תרצה לעשות זאת אם אינך רוצה לטרוח ולחלק מחדש את הכונן שלך או לערוך /etc/fstab. שיטה אחת היא להשתמש להפיל:
לדוגמה, כדי ליצור קובץ החלפה של 2GB:
sudo fallocate -l 2G /path/to/swapfile
כחלופה, אתה יכול להשתמש בפקודה dd כדי ליצור את קובץ ההחלפה.
sudo dd אם=/dev/אֶפֶס שֶׁל=/path/to/swapfile bs=1024 ספירה=2048
ודא שאתה משתמש בפקודה dd כהלכה, מכיוון שטעויות ב-infile וב-outfil עלולות לגרום לאובדן נתונים. fallocate היא השיטה המועדפת מסיבה זו.
ה /dev/zero התקן הוא מכשיר מיוחד שמוציא "0". מה שהפקודה dd זו עושה זה ליצור קובץ בלוקים ריק של שני ג'יגה-בייט באמצעות בלוקים של 1024 קילובייטים המתאימים לשימוש כשטח החלפה.
לאחר מכן תוכל להשתמש ב- mkswap ו swapon פקודות עם קובץ swap כפי שהיית עושה עם מחיצת swap:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
אתה עשוי לתהות מתי עליך להשתמש בקובץ החלפה או במחיצה ייעודית עבור שטח ההחלפה שלך. הבחירה קלה: ברוב הנסיבות כדאי להשתמש במחיצה. זוהי הבחירה הטובה ביותר עבור שולחן העבודה של לינוקס או שרת. סכימת המחיצות המוצעת על ידי המתקין מתאימה בדרך כלל בשולחן העבודה של לינוקס של משתמש יחיד.
אולי תרצה להשתמש בקובץ swap אם אתה מריץ לינוקס במכונה וירטואלית, על מערכת משובצת קטנה, או שאתה פשוט לא רוצה לחלק מחדש את מערכת הלינוקס הקיימת שלך.
כמה חלל החלפה?
במשך שנים רבות, העצה הסטנדרטית לכמה שטח החלפה נדרש היא פי שניים מזיכרון ה-RAM הפיזי. עם הכוננים הגדולים וכמויות הזיכרון שאפילו המחשבים הזולים ביותר מגיעים איתם, כלל זה עשוי להתעורר בספק.
במערכות רבות, אם תבדוק את top או htop, אולי אפילו תבחין ששטח ההחלפה שלך אפילו לא בשימוש בכלל אם תגדיר את המערכת שלך כך.
ובכל זאת, פי שניים מהזיכרון הפיזי היא נקודת התחלה טובה ופוליסת ביטוח אם אתה מציב דרישות גדולות יותר מהזיכרון. אתה יכול לבצע שינויים במערכת שלך לפי הצורך. אם המערכת שלך משתמשת בכל זיכרון ה-RAM שלך, המחשב עלול להיתקל בבעיות ביצועים בעת שימוש בזיכרון וירטואלי.
המחשב יכול להמשיך ולהחליף פנימה והחוצה, תהליך הידוע כ-thashing, מה שגורם לו להיראות לא מגיב. אם עדיין יש לך כונן קשיח מכני, לעתים קרובות אתה יכול לשמוע אותו ניגש כל הזמן.
זה הרבה פחות בעיה בימינו מכיוון שכמות ה-RAM אפילו במחשבים הזולים ביותר היא יותר ממספקת, בנוסף המהירות של כונני SSD היא הרבה יותר מהירה מהכוננים הקשיחים הישנים. זה עדיין משהו שאתה צריך להיות מודע אליו.
הדרך הקלה ביותר לתקן זאת היא פשוט להוסיף עוד זיכרון RAM למחשב שלך. אם זה לא אפשרי, אולי תנסה להתאים את ה"החלפה" של ליבת לינוקס.
מספר ההחלפה קובע כמה הליבה צוללת בזיכרון הוירטואלי. זה נע בין 0 ל-100. הגדרתו ל-0 פירושה שלינוקס לא תחליף בכלל, בעוד שב-100 היא תחליף בכל הזדמנות. ברירת המחדל ברוב המערכות היא 60.
כדי לשנות את ההחלפה זמנית, השתמש בפקודה sysctl:
sudo sysctl vm.swappiness=20
ה-"20" בפקודה זו יהיה מספר ההחלפה עד שתבצע אתחול מחדש. כדי לשנות אותו לצמיתות, ערוך את ה /etc/sysctl.conf קובץ כ-root והצב את השורה, "vm.swappiness=[מספר החלפה]", כאשר "[מספר החלפה]" הוא מספר ההחלפה הרצוי. זה יהיה מפסק עד שתוכל להתקין יותר זיכרון RAM.
זיכרון וירטואלי שומר על מערכת הלינוקס שלך פועלת בצורה חלקה
זיכרון וירטואלי הוא רכיב של מערכת הפעלה מודרנית, כולל לינוקס, ששומר על פעולת המחשב שלך בצורה חלקה. אתה יכול להשתמש בקובץ swap, אבל השיטה הרגילה היא מחיצה ייעודית. אתה לא צריך לחשוב על זה יותר מדי, אבל קל להגדיר ולפתור את המחיצות של Linux וקבצי החלפה.
הרבה מהעצות האלה ישימות גם למערכות אחרות, כולל Windows, גם אם השיטות להגדרת זיכרון וירטואלי שונות.