זכרון SWAP בשרת

זכרון SWAP בשרת

פורסם ב 12-02-2020

כידוע, ארכיטקטורת החומרה הבסיסית של כל מחשב (וכמובן ש”מחשב” מתייחס ל PC/טאבלט/שרת וכו’) מבוססת על שלושת רכיבי הליבה העיקריים:

CPU- מעבד: נתמצת את המושג בהגדרה הכללית העממית כ “המח שמבצע את החישובים במערכת”

RAM-זיכרון נדיף/זיכרון גישה אקראית: מדובר ברכיב זיכרון וירטואלי-לוגי שמבצע פעולות ואינטראקציות עם המעבד והזיכרון הפיזי-DATA אל מול דרישות מערכת ההפעלה ושאר רכיבי התוכנה המבקשים משאבים.

דיסק קשיח: זהו הרכיב שאחראי על האחסון בפועל של הנתונים HDD(hard-drive)

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

מבחינת מערכת השרת, ניתן להגדיר את פתרון ה SWAP כקובץ ייעודי, כמחיצה נפרדת (disk partition-הפתרון היותר מומלץ) או כשילוב של השניים.

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

להלן ההמלצה הכללית לחישוב נפח ה SWAP בהתאם והשוואה לנתוני ה RAM:

RAM in the System Recommended SWAP
4GB or less Minimum 2GB of SWAP
4GB to 16GB Minimum 4GB of SWAP
16GB to 64GB Minimum 8GB of SWAP
64GB to 256GB Minimum 16GB of SWAP
256GB to 512GB Minimum 32GB of SWAP

פקודות בפועל

נבדוק את נתוני זיכרון ה RAM בעזרת פקודת free (מדובר בשרת CentOS-7):

[root@test-server ~]# free -h

נ.ב: ה-flag של (h-) מצביע על פורמט שימושי של נתונים קריאים לאדם (human readable)

נקבל תשובה בסגנון:

[root@test-server ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            23G        6.3G        1.5G        1.2G         15G         13G
Swap:           15G          0B         15G

ממצאי הפלט ניתן לראות כי השרת מתפקד עם זיכרון RAM של 23GB בניצול בפועל של 6.3GB

בשורת ה SWAP ניתן לראות כי לשרת מוגדר זיכרון SWAP פוטנציאלי עד 15GB ובפועל ניצול ה SWAP עומד על 0.

בכדי לאתר את מיקום ה SWAP נשתמש באחת הפקודות:

[root@test-server ~]# swapon

או לחלופין

[root@test-server ~]# cat /proc/swaps

הפלט יראה לנו את הנתיב ל SWAP בשרת:

[root@test-server ~]# swapon
NAME       TYPE      SIZE USED PRIO
/dev/xvde1 partition  15G   0B   -1

ה SWAP בשרת זה מוגדר אל הנתיב /dev/xvde1

יצירת קובץ SWAP File

כדי ליצור קובץ SWAP יש להשתמש בפקודה:

[root@test-server ~]# dd if=/dev/zero of=/swapfile bs=1024 count=30000

כאשר הפרמטר count מתייחס לגודל הבלוק הרצוי (כאן 30000=30GB )

נסדר את ההרשאה של הקובץ:

[root@test-server ~]# chmod 600 /swapfile

נקים את הקובץ במערכת:

[root@test-server ~]# mkswap /swapfile

נבצע אקטיבציה לקובץ:

[root@test-server ~]# swapon /swapfile

ובכדי להכניס את ה SWAP לפעילות עם האתחול-boot הבא לשרת, נערוך את קובץ /etc/fstab:
ונזין:

/swapfile          swap            swap    defaults        0 0

שינויים בנתוני ה SWAP

לאחר שיצרנו את פתרון ה SAWP בשרת הוא ישאר ללא שינוי, גם במקרה של הגדלת/הקטנת נפח ה RAM.

בכדי לשנות את גדול ה SWAP אפשר ליצור רכיב SWAP חדש (כפי שהסברנו לעיל) ולהסיר את ה SWAP הקודם:

נשתמש בפקודת ה swapoff בכדי להסיר את ה SWAP הקודם:

[root@test-server ~]# swapoff /dev/Old_SWAP_Path

השותפים שלנו

  • js-partners-02
  • js-partners-03
  • nginx-js-partners-04
  • js-partners-06
  • mariadb-icon
  • docker-icon
  • nodejs
Skip to content