یکی از راه های محافظت در برابر خطاهای اتمام حافظه در برنامه ها ، اضافه کردن فضای Swap به سرور مجازی شما است. در این راهنما نحوه اضافه کردن فایل swap به یک سرور مجازی Ubuntu 20.04 را پوشش خواهیم داد.
هشدار: اگرچه Swap برای سیستم هایی که از هارد دیسک های معمول چرخشی استفاده میکنند ، توصیه میشود اما قرار دادن Swap در SSD ها می تواند با گذشت زمان مشکلاتی را برای تخریب سخت افزار ایجاد کند. به همین دلیل ، ما امکان فعال کردن Swap در vpsgol یا هر ارائه دهنده دیگری که از حافظه SSD استفاده می کند را توصیه نمی کنیم.
Swap چیست؟
Swap بخشی از حافظه هارد دیسک است که برای سیستم عامل کنار گذاشته شده است تا داده هایی را که دیگر نمی تواند در RAM نگهداری کند ، به طور موقت ذخیره کند. این به شما امکان می دهد مقدار اطلاعاتی را که سرور مجازی شما می تواند در حافظه کاری خود نگه دارد افزایش یابد. فضای Swap در هارد دیسک عمدتاً زمانی استفاده می شود که دیگر فضای کافی در حافظه رم برای نگهداری داده های برنامه وجود نداشته باشد.
اطلاعات ارسال شده روی دیسک به طور قابل توجهی کندتر از اطلاعات موجود در RAM خواهد بود ، اما سیستم عامل ترجیح می دهد داده های برنامه را در حافظه نگه داشته و از داده های قدیمی تر swap استفاده کند. به طور کلی ، داشتن فضای Swap به عنوان fallback برای زمانی که رم رو به اتمام است، می تواند یک شبکه ایمنی مناسب در برابر استثناهای اتمام حافظه در سیستم های با حافظه غیر SSD باشد.
مرحله 1 – بررسی سیستم برای اطلاعات Swap
قبل از شروع ، می توانیم بررسی کنیم که آیا سیستم از قبل فضای Swap در دسترس دارد یا خیر. ممکن است چندین فایل Swap یا پارتیشن swap داشته باشد ، اما به طور کلی یکی از آنها کافی می باشد.
با تایپ کردن این دستور می توانیم ببینیم که آیا این سیستم Swap پیکربندی شده دارد:
$ sudo swapon –show
اگر هیچ خروجی دریافت نکردید ، بدان معنی است که سیستم شما در حال حاضر فضای Swap در دسترس ندارد.
با استفاده از ابزار free می توانید تأیید کنید که هیچ Swap فعالی وجود ندارد:
$ free -h
Output
total used free shared buff/cache available
Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi
Swap: 0B 0B 0B
همانطور که در ردیف Swap خروجی مشاهده می کنید ، هیچ Swap روی سیستم فعال نیست.
مرحله 2 – بررسی فضای موجود در پارتیشن هارد دیسک
قبل از ایجاد فایل Swap ، استفاده فعلی دیسک خود را بررسی خواهیم کرد تا مطمئن شویم که فضای کافی داریم. این کار را با وارد کردن دستور زیر انجام دهید:
$ df -h
Output
Filesystem 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
دستگاه با / در ستون Mounted on در این مورد دیسک ماست. در این مثال فضای زیادی در دسترس داریم (فقط از 1.4گیگ استفاده شده است). استفاده شما احتمالاً متفاوت خواهد بود.
اگرچه نظرات زیادی در مورد اندازه مناسب فضای swap وجود دارد ، اما واقعاً بستگی به ترجیحات شخصی شما و نیازهای برنامه شما دارد. به طور کلی ، مقداری برابر یا دو برابر مقدار RAM روی سیستم مناسب خواهد بود. یک قانون دیگر این است که اگر فقط از آن به عنوان fallback رم استفاده کنید ، احتمالاً چیزی بیش از 4 گیگ Swapنیاز نمیباشد.
مرحله 3 – ایجاد فایل swap
اکنون که فضای هارد دیسک موجود خود را می دانیم ، می توانیم یک فایل swap در سیستم فایل خود ایجاد کنیم. ما فایلی را به اندازه ای که می خواهیم به نام swapfile در دیرکتوری ریشه (/)خود قرار خواهیم داد.
بهترین راه برای ایجاد فایل swap با برنامه fallocate است. این دستور بلافاصله یک فایل با اندازه مشخص ایجاد می کند.
از آنجا که سرور مجازی در مثال ما 1 گیگ RAM دارد ، ما یک فایل 1 گیگی را در این راهنما ایجاد خواهیم کرد. این رم را متناسب با نیازهای سرور مجازی خود تنظیم کنید:
$ sudo fallocate -l 1G /swapfile
با تایپ این دستور می توانیم تأیید کنیم که مقدار صحیح فضا محفوظ است:
$ ls -lh /swapfile
$ -rw-r–r– 1 root root 1.0G Apr 25 11:14 /swapfile
فایل ما با مقدار صحیحی از فضای کنار گذاشته شده ایجاد شده است.
مرحله 4 – فعال کردن فایل swap
اکنون که فایلی با اندازه مناسب در دسترس داریم ، باید در عمل این را به فضای swap تبدیل کنیم.
ابتدا باید مجوزهای فایل را قفل کنیم تا فقط کاربرانی که دارای حق امتیاز هستند بتوانند مطالب را بخوانند. این کار مانع از دسترسی کاربران عادی به فایل می شود که پیامدهای امنیتی قابل توجهی دارد.
با تایپ کردن دستور زیر فایل فقط در دسترس ریشه قرار میگیرد:
$ sudo chmod 600 /swapfile
تغییر مجوزها را با تایپ دستور زیر تأیید کنید:
$ ls -lh /swapfile
Output
-rw——- 1 root root 1.0G Apr 25 11:14 /swapfile
همانطور که مشاهده می کنید ، فقط کاربر اصلی دارای پرچم های خواندن و نوشتن است.
اکنون می توانیم با تایپ کردن این دستور فایل را به عنوان فضای swap مشخص کنیم:
$ sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
پس از علامت گذاری فایل ، می توانیم فایل swap را فعال کنیم و به سیستم ما امکان استفاده از آن را می دهد:
$ sudo swapon /swapfile
با تایپ این دستور تأیید کنید که swap در دسترس است:
$ sudo swapon –show
Output
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
ما می توانیم بازده ابزار free را دوباره بررسی کنیم تا یافته هایمان را تأیید کنیم:
$ free -h
Output
total used free shared buff/cache available
Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi
Swap: 1.0Gi 0B 1.0Gi
swap ما با موفقیت تنظیم شده است و سیستم عامل ما در صورت لزوم شروع به استفاده از آن خواهد کرد.
مرحله 5 – دائمی کردن فایل Swap
تغییرات اخیر ما فایل Swap بخش فعلی را فعال کرده است. اما اگر راه اندازی مجدد کنیم ، سرور مجازی تنظیمات swap را به طور خودکار حفظ نمی کند. ما می توانیم با اضافه کردن فایل swap به فایل / etc / fstab خود ، این تنظیمات را تغییر دهیم.
از فایل / etc / fstab نسخه پشتیبان تهیه کنید تا در صورت بروز هرگونه خطا با مشکلی مواجه نشوید:
$ sudo cp /etc/fstab /etc/fstab.bak
با تایپ کردن این دستور اطلاعات فایل swap را به انتهای فایل / etc / fstab خود اضافه کنید:
$ echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
در مرحله بعدی برخی از تنظیماتی را میتوانیم به روز کنیم بررسی مینماییم تا فضای swap خود را تنظیم کنیم.
مرحله 6 – تنظیمات swap خود را تعیین کنید
چند گزینه وجود دارد که می توانید پیکربندی کنید که در عملکرد سیستم شما هنگام برخورد با swap تأثیر می گذارد.
تنظیم ویژگی Swappiness
پارامتر swappiness پیکربندی میکند که سیستم شما چند بار داده را از RAM به فضای swap در گردش قرار دهد. این مقدار بین 0 تا 100 است که درصد را نشان می دهد.
با مقادیر نزدیک به صفر ، هسته داده ها را به دیسک منتقل نمیکند مگر اینکه واقعا لازم باشد. به یاد داشته باشید ، تعامل با فایل swap “هزینه بر” است زیرا مدت زمان زیادی نسبت به تعامل با RAM طول می کشد و می تواند باعث کاهش قابل توجه عملکرد شود. به طور کلی اعلام به سیستم مبنی بر متکی نبودن زیاد به swap ، باعث سریعتر شدن سیستم شما خواهد شد.
مقادیر نزدیک به 100 ، سعی می کنند تا داده های بیشتری را در swap قرار دهند تا فضای خالی RAM بیشتری حفظ کنند. بسته به مشخصات حافظه برنامه های شما یا آنچه از سرور مجازی خود برای آن استفاده می کنید ، این کار ممکن است در بعضی موارد ارحج باشد.
می توانیم با تایپ کردن دستور زیر مقدار swappiness فعلی را مشاهده کنیم:
$ cat /proc/sys/vm/swappiness
Output
60
برای دسکتاپ ، تنظیم swappiness روی 60 مقدار بدی نیست. برای یک سرور مجازی ، ممکن است بخواهید آن را به 0 نزدیک کنید.
ما می توانیم swappiness را با استفاده از دستور sysctl به مقدار دیگری تبدیل کنیم.
به عنوان مثال ، برای تنظیم swappiness روی 10 ، می توانیم تایپ کنیم:
$ sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10
این تنظیم تا ریبوت بعدی ادامه خواهد داشت. ما می توانیم با اضافه کردن خط به فایل /etc/sysctl.conf ، این مقدار را به طور خودکار در ریستارت تنظیم کنیم:
$ sudo nano /etc/sysctl.conf
در پایین می توانید اضافه کنید:
/etc/sysctl.conf
vm.swappiness=10
پس از اتمام فایل را ذخیره کنید و ببندید.
تعیین تنظیمات فشار Cache
مقدار مرتبط دیگری که ممکن است بخواهید آن را تغییر دهید vfs_cache_pressure است. این تنظیمات چگونگی انتخاب سیستم برای ذخیره اطلاعات inode و dentry نسبت به سایر داده ها را پیکربندی می کند.
در اصل ، داده های دسترسی در مورد سیستم فایل است. به طور کلی جستجوی آن هزینه بر است و بسیار درخواست میشود، بنابراین یک حافظه پنهان برای سیستم شما بسیار عالی خواهد بود. با پرس و جوی مجدد سیستم فایل proc می توانید مقدار فعلی را مشاهده کنید:
$ cat /proc/sys/vm/vfs_cache_pressure
Output
100
همانطور که سیستم ما در حال حاضر پیکربندی شده است ، خیلی سریع اطلاعات inode را از حافظه نهان پاک می کند. می توانیم با تایپ کردن دستور زیر، میتوانیم آن را روی تنظیمات محافظه کارانه تری مانند 50 تنظیم کنیم:
$ sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50
باز هم ، این فقط برای بخش فعلی ما معتبر است. ما می توانیم با اضافه کردن آن به فایل پیکربندی خود مانند تنظیمات swappiness آن را تغییر دهیم:
$ sudo nano /etc/sysctl.conf
در پایین ، خطی را اضافه کنید که مقدار جدید شما را مشخص می کند:
/etc/sysctl.conf
vm.vfs_cache_pressure=50
پس از اتمام فایل را ذخیره کنید و ببندید.
نتیجه
پیروی از مراحل موجود در این راهنما در مواردی که منجر به استثناهای اتمام حافظه شود ، به شما فضای تنفس می دهد. فضای swap می تواند برای جلوگیری از برخی از این مشکلات متداول فوق العاده مفید باشد.
اگر به خطاهای OOM (اتمام حافظه) برخورد می کنید ، یا می بینید که سیستم شما قادر به استفاده از برنامه های مورد نیاز شما نیست ، بهترین راه حل این است که تنظیمات برنامه خود را بهینه کنید یا سرور مجازی خود را به روز کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
نصب و پیکربندی Ansible در اوبونتو 18.04 – نصب MySQL در اوبونتو 18.04
نظارت بر سلامت سرور با Checkmk در اوبونتو – اجرای چند نسخه PHP بر روی یک سرور
نصب Nginx، MySQL، PHP در CentOS 7 – نصب و پیکربندی Elasticsearch در اوبونتو 18.04
راه اندازی سرور اولیه با اوبونتو 20.04 – تنظیم کلیدهای SSH در Ubuntu 20.04
نصب و استفاده از PostgreSQL در اوبونتو 20.0 – نحوه نصب MySQL در اوبونتو 20.04
نصب Python 3 روی سرور Ubuntu 18.04 – نحوه نصب Python 3 روی سرور Ubuntu 20.04
نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04 – نصب وب سرور Apache در CentOS 8
نحوه نصب Drupal با Docker Compose – نحوه نصب Nginx در اوبونتو 20.04
7 مورد از اقدامات امنیتی برای محافظت از سرورهای شما – نحوه نصب و ایمن سازی Redis در اوبونتو 20.04
نحوه نصب و ایمن سازی Redis در اوبونتو 18.04 – اضافه کردن فضای Swap در اوبونتو 20.04
چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کرد – نظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04
نصب و ایمن سازی phpMyAdmin در اوبونتو 20.04 – نصب و استفاده از Composer در اوبونتو 20.04
ریست کردن رمز ورود ریشه MySQL یا MariaDB – استفاده از نوع داده MySQL BLOB برای ذخیره تصاویر
نصب Nginx در اوبونتو 18.04 – نصب توزیع Anaconda پایتون در اوبونتو 20.04
نحوه نصب جاوا با Apt در اوبونتو 18.04 – نحوه نصب Django و تنظیم محیط توسعه در اوبونتو 16.04
نصب جنگو و تنظیم محیط توسعه در اوبونتو 20.04 – نحوه ایجاد سرور Minecraft در اوبونتو 18.04
نحوه راه اندازی یک پروژه Node با Typescript – نحوه نصب و پیکربندی VNC در اوبونتو 18.04
ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتی – نصب و پیکربندی VNC در اوبونتو 20.04
نصب MariaDB در اوبونتو 20.04 – فعال سازی و اتصال رابط کاربری Django
تنظیم پلتفرم Cloud IDE کد سرور را در اوبونتو 18.04 – پیکربندی Apache HTTP با رویداد MPM و PHP-FPM
کلمات کلیدی خرید سرور
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/