- בלוג
- זכרון SWAP בשרת
זכרון 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