הקדמה
אחת הדרכים להגן על מול מסוכנות שגיאות "אוט ופי ממורי" ביישומים היא להוסיף מעט מקום בשרת שלך. במדריך זה, נכסה כיצד להוסיף קובץ החלפה לשרת Ubuntu 22.04.
מהו החלפה?
החלפה היא חלק מאחסון הדיסק הוקצה למערכת ההפעלה לשמור זמנית נתונים שהיא כבר אינה יכולה להחזיק בזיכרון המהיר (RAM). זה מאפשר לך להגדיל את כמות המידע ששרת שלך יכול לשמור בזיכרון העבודה שלו, עם כמה תנאים. המרחב להחלפה בדיסק קשיח יימצא בשימוש בעיקר כאשר כבר אין מספיק מקום ב-RAM להחזיק נתוני יישומים בשימוש.
המידע שיוכתב לדיסק יהיה אט משמעותית מהמידע שנשמר ב-RAM, אך המערכת הפעלה תעדיף לשמור נתוני יישומים בשימוש בזיכרון ולהשתמש בהחלפה עבור הנתונים הישנים. בסך הכל, יש ביטחון טוב במערכת להחלפה כמנקודת מחסה כאשר ה-RAM של המערכת שלך נגמר, במערכות עם אחסון שאינו SSD זמין.
שלב 1 – בדיקת המערכת למידע על התמר
לפני שנתחיל, אפשר לבדוק אם במערכת כבר יש מקום תמר זמין. ניתן להגדיר מספר קבצי תמר או מספרי מחיצות תמר, אך בדרך כלל יש לנו צורך באחד בלבד.
ניתן לבדוק אם במערכת קיים תמר מוגדר על ידי הקלדת:
אם אין תגובה מהמערכת, זה אומר שאין כרגע מקום תמר זמין במערכת שלך.
ניתן לאמת שאין תמר פעיל באמצעות הכלי free
:
Output total used free shared buff/cache available
Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi
Swap: 0B 0B 0B
כפי שניתן לראות בשורת התמר בפלט, אין תמר פעיל במערכת.
שלב 2 – בדיקת המרחב הפנוי במחיצת הכונן הקשיח
לפני שניצור את קובץ התמר שלנו, נבדוק את שימוש הכונן הנוכחי כדי לוודא שיש לנו מספיק מקום. נעשה זאת על ידי הקלדת:
OutputFilesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 932K 98M 1% /run
/dev/vda1 25G 1.4G 23G 7% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
/dev/loop0 55M 55M 0 100% /snap/core18/1705
/dev/loop1 69M 69M 0 100% /snap/lxd/14804
/dev/loop2 28M 28M 0 100% /snap/snapd/7264
tmpfs 99M 0 99M 0% /run/user/1000
התקן עם /
בעמודת המשובץ ב
הוא הכונן שלנו במקרה זה. יש לנו מספיק מקום זמין בדוגמה זו (רק 1.4G בשימוש). השימוש שלך כנראה יהיה שונה.
אף על פי שישנן רבות ערוצים לגבי גודל החלפת הזיכרון המתאים, זה תלוי בהעדפות האישיות שלך ובדרישות היישום שלך. בכלל, סכום שזהה או כפול לסכום הזיכרון הפיזי במערכת שלך הוא נקודת התחלה טובה. כלל נוסף הוא שכל דבר מעל 4 ג'יגה של חליפין כנראה מיותר אם אתה פשוט משתמש בו כשימוש חילופי לזיכרון.
שלב 3 – יצירת קובץ חליפין
עכשיו שאנו יודעים את המקום הפנוי בכונן הקשיח שלנו, אנו יכולים ליצור קובץ חליפין במערכת הקבצים שלנו. נאזין קובץ בגודל הרצוי בשם swapfile
בתיקיית השורש (/
) שלנו.
הדרך הטובה ביותר ליצור קובץ חליפין היא עם תוכנת fallocate
. פקודה זו יוצרת מיידית קובץ בגודל המצויין.
מכיוון שהשרת בדוגמתנו מגיע עם 1G של זיכרון, ניצור קובץ בגודל של 1G במדריך זה. ניתן להתאים את זה לצרכי השרת שלך:
ניתן לוודא שסכום המרווח הנכון נשמר על ידי הקלדה:
הקובץ שלנו נוצר עם סכום המרווח הנכון הוקצה.
שלב 4 – הפעלת קובץ החליפין
עכשיו שיש לנו קובץ בגודל הנכון זמין, עלינו להפוך את זה לשטח מעבר בפועל.
ראשית, עלינו לנעול את ההרשאות של הקובץ כך שרק משתמשים עם הרשאות שורש יוכלו לקרוא את התוכן. זה מונע ממשתמשים רגילים לגשת לקובץ, מה שיכול להיות לו השלכות אבטחה משמעותיות.
לעשות את הקובץ נגיש רק למשתמש root על ידי הקלדה:
לוודא את שינויי ההרשאות על ידי הקלדה:
Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
כפי שניתן לראות, רק למשתמש ה- root יש את הדגלים לקריאה וכתיבה מופעלים.
ניתן כעת לסמן את הקובץ כשטח מעבר על ידי הקלדה:
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
לאחר הסימון של הקובץ, ניתן לאפשר את השימוש בקובץ המקום, מאפשרת למערכת שלנו להתחיל להשתמש בו:
לוודא שהשטח המשובץ זמין על ידי הקלדה:
OutputNAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
ניתן לבדוק שוב את פלט הכלי free
כדי לוודא את הממצאים שלנו:
Output total used free shared buff/cache available
Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi
Swap: 1.0Gi 0B 1.0Gi
השטח המשובץ שלנו הוגדר בהצלחה והמערכת הפעילה שלנו תתחיל להשתמש בו ככל צורך.
שלב 5 – עשיית הקובץ של המשובץ קבעית
השינויים האחרונים שלנו הפעילו את קובץ המשובץ להפעלה הנוכחית. אך, אם נאפשר מחדש, השרת לא ישמור על הגדרות המשובץ אוטומטית. נוכל לשנות זאת על ידי הוספת קובץ המשובץ לקובץ ה- /etc/fstab
שלנו.
נגבה את קובץ ה- /etc/fstab
במידה ומשהו יקרה:
הוסף את מידע קובץ ההחלפה לסוף קובץ /etc/fstab
שלך על ידי הקלדה:
בשלב הבא נבקר בכמה הגדרות שניתן לעדכן כדי לכוון את מרחב ההחלפה שלנו.
שלב 6 – כוונון הגדרות ההחלפה שלך
קיימות כמה אפשרויות שאפשר להגדיר שיש להשפעה על ביצועי המערכת שלך בעת התמודדות עם מרחב ההחלפה.
כיוון מאפיין ה Swappiness
הפרמטר swappiness
מגדיר כמה פעמים המערכת שלך מחליפה נתונים מתוך ה-RAM למרחב ההחלפה. זוהי ערך בין 0 ל-100 שמייצג אחוז.
עם ערכים קרובים לאפס, הקרנל לא יחליף נתונים לדיסק אלא רק כאשר זה בהחלט נחוץ. זכור, אינטראקציות עם קובץ ההחלפה הן "יקרות" במובן שהן לוקחות הרבה זמן יותר מאינטראקציות עם ה-RAM ויכולות לגרום להפחתה משמעותית בביצועים. להגיד למערכת שלא להסתמך על ההחלפה הרבה תיעשה כללית את המערכת שלך מהירה יותר.
ערכים שקרובים יותר ל-100 ינסו לשים יותר נתונים בהחלפה על מנת לשמור על יותר מקום ב-RAM פנוי. תלוי בפרופיל הזיכרון של היישום שלך או במה שאתה משתמש בשרת שלך לצרכי, זה עשוי להיות יותר טוב במקרים מסוימים.
ניתן לראות את ערך ה-swappiness הנוכחי על ידי הקלדת:
Output60
עבור מחשב שולחני, הגדרת swappiness של 60 אינה ערך רע. לשרת, עשוי להיות רצוי להזיז את זה קרוב יותר ל-0.
ניתן להגדיר את ה-swappiness לערך שונה באמצעות פקודת sysctl
.
לדוגמה, כדי להגדיר את ה-swappiness ל-10, ניתן להקליד:
Outputvm.swappiness = 10
הגדרה זו תישאר קיימת עד לאיתחול הבא. ניתן להגדיר את הערך באופן אוטומטי באיתחול על ידי הוספת השורה לקובץ /etc/sysctl.conf
שלנו:
בתחתית הקובץ, ניתן להוסיף:
vm.swappiness=10
שמור וסגור את הקובץ כאשר תסיימו.
כיוון ערך לחץ המטמון
ערך נוסף הקשור שייך שעשוי להיות רצוי לשנות הוא vfs_cache_pressure
. הגדרה זו מגדירה כמה המערכת תבחר לאחסן מידע על inode ו-dentry על פני מידע אחר.ישות בתקייה.קובץ
בגדול, זהו מידע גישה אודות המערכת הקבצים. כלומר זה כללית עולה למערכת להשתמש במערכת הזמינה עליה. ניתן לראות את הערך הנוכחי על ידי שאילתת המערכת proc
שוב:
Output100
כפי שהוא מוגדר כעת, המערכת שלנו מסירה מידע inode מהמטמון בדיוק כדי. ניתן להגדיר את זה להגדרה יותר צנועה כמו 50 על ידי הקלדה:
Outputvm.vfs_cache_pressure = 50
שוב, זה תקף רק עבור ההפעלה הנוכחית שלנו. אנו יכולים לשנות זאת על ידי הוספתו לקובץ התצורה שלנו כפי שעשינו עם הגדרת ה-swappiness שלנו:
בתחתית הקובץ, הוסף את השורה שמציינת את הערך החדש שלך:
vm.vfs_cache_pressure=50
שמור וסגור את הקובץ כאשר תסיים.
מסקנה
בעקבות השלבים במדריך זה תקבל קצת מרווח הנשימה במקרים שאחרת יכלו להוביל לחריגות מחוץ לזיכרון. מקום פיצול יכול להיות מאוד שימושי כדי למנוע חלק מהבעיות הנפוצות האלו.
אם אתה נתקל בשגיאות OOM (חוסר זיכרון) או אם אתה מגלה כי המערכת שלך אינה מסוגלת להשתמש ביישומים שאתה צריך, הפתרון הטוב ביותר הוא לאופטמיזציה של הקונפיגורציות של היישומים שלך או לשדרג את השרת שלך.
Source:
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-22-04