در این آموزش نحوه اضافه کردن Swap در CentOS را بررسی خواهیم کرد. یکی از سادهترین راهها برای پاسخدهی بیشتر سرور و محافظت در برابر خطاهای خارج از حافظه در برنامه، اضافه کردن فضای swap می باشد. Swap ناحیه ای در درایو ذخیره سازی است که سیستم عامل می تواند به طور موقت داده هایی را که دیگر نمی تواند در حافظه نگه دارد ذخیره کند. همچنین، به شما این امکان را می دهد که با رعایت برخی نکات، مقدار اطلاعاتی را که سرور شما می تواند در حافظه کاری خود نگه دارد، افزایش دهید…
فهرست مطالب
نحوه اضافه کردن Swap در CentOS
در این قسمت به بررسی نحوه نصب خواهیم پرداخت. قبل از آن پیش نیاز های مورد نظر را تهیه کنید:
پیش نیاز ها:
1- سرور CentOS 7
2- کاربر non-root با امتیازات sudo
سروری که حافظه اش تمام می شود ممکن است شروع به حذف برنامه ها برای آزاد کردن حافظه کند که این مورد می تواند باعث از دست دادن داده های ذخیره نشده شود. برای اطمینان از دسترسی به داده ها، برخی از برنامه ها نیازمند تعویض خواهند داشت. اگرچه تعویض به طور کلی برای سیستمهایی که از هارد دیسکهای traditional spinning استفاده میکنند توصیه میشود. تعویض با SSD میتواند در طول زمان مشکلاتی را در مورد تخریب سختافزار ایجاد کند.
بررسی سیستم برای تبادل اطلاعات در اضافه کردن Swap
قبل از شروع باید نگاهی به فضای ذخیره سازی سرور خود بیندازید تا ببینید آیا از قبل فضای مبادله ای در دسترس دارید یا خیر. همچنین شما می توانید چندین فایل swap یا پارتیشن های مبادله داشته باشید. با استفاده از swapon که یک ابزار تبادل همهمنظوره است، به این موضوع پی ببرید که آیا سیستم دارای تعویض پیکربندی شده است یا خیر. پرچم swapon -s خلاصه ای از استفاده و در دسترس بودن مبادله در دستگاه ذخیره سازی را نمایش می دهد:
swapon -s
اگر موردی توسط دستور برگردانده نشد، هیچ فایل swap وجود ندارد. راه دیگر بررسی فضای مبادله با ابزار رایگان است که میزان مصرف کلی حافظه سیستم را نشان می دهد. با تایپ کردن دستور زیر میتوانید حافظه فعلی خود را ببینید و میزان استفاده از آن را تغییر دهید (این میزان به مگابایت می باشد) :
free –m
total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/+ buffers/cache: 196 3756 Swap: 0 0 4095
همانطور که می بینید، کل فضای مبادله ما در سیستم 0 است. این با موردی که به وسیله swapon مشاهده کردیم مطابقت دارد.
بررسی فضای ذخیره سازی موجود
روش معمول در تخصیص فضا برای swap استفاده از یک پارتیشن جداگانه است که به کار اختصاص داده شده است. به دلیل محدودیت های سخت افزاری یا نرم افزاری، تغییر طرح پارتیشن همیشه امکان پذیر نیست. خوشبختانه، می توانید یک فایل swap ایجاد کنید که روی یک پارتیشن موجود قرار دارد.
باید از استفاده فعلی درایو خود آگاه باشید. می توانید این اطلاعات را با تایپ دستور زیر به دست آورید:
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 59G 1.5G 55G 3% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.3M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
نکته: h- به سادگی به dh میگوید که اطلاعات درایو را در قالب خواندنی مناسب ارسال کند. به عنوان مثال، به جای خروجی تعداد خام بلوک های حافظه در یک پارتیشن، df -h میزان استفاده و در دسترس بودن فضا را در M (مگابایت) یا G (گیگابایت) به ما می گوید. همانطور که در خط اول می بینید، پارتیشن ذخیره سازی ما 59 گیگابایت در دسترس است، بنابراین فضای کمی برای کار داریم. به خاطر داشته باشید که این در یک نمونه VPS جدید و متوسط است، بنابراین استفاده واقعی شما ممکن است بسیار متفاوت باشد.
ایجاد فایل Swap
اکنون که فضای ذخیره سازی موجود خود را می دانید، می توانید به ایجاد یک فایل swap در سیستم فایل بپردازید. یک فایل به نام swapfile در فهرست اصلی (/) خود ایجاد خواهید کرد، اگرچه می توانید نام فایل را با نام دیگری انتخاب کنید. فایل باید مقدار فضای مورد نظر را برای فایل swap اختصاص دهد و در یک بلوک به هم پیوسته ایجاد شود.
بهترین راه برای انجام این کار استفاده از ابزار dd است. این دستور یک فایل 4 گیگابایتی ایجاد می کند:
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
پس از وارد کردن رمز عبور برای مجوز دادن به امتیازات sudo، فایل swap ایجاد می شود. ممکن است چند لحظه طول بکشد، سپس درخواست به شما بازگردانده می شود. با استفاده از ls میتوانید تأیید کنید که فضای صحیحی برای مبادله رزرو شده است:
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile
همانطور که می بینید، فایل swap با مقدار مناسب فضای کنار گذاشته شده ایجاد شده است.
فعال کردن فایل Swap
تا اینجای کار فایل ایجاد شده است اما سیستم ما نمی داند که قرار است از آن برای تعویض استفاده کند. باید برای سیستم مشخص کنید که این فایل را به صورت swap فرمت کند و سپس آن را فعال کند.
قبل از انجام این کار، باید مجوزهای موجود در فایل swap را طوری تنظیم کنید که غیر از اکانت root برای کسی قابل خواندن نباشد. اجازه دادن به سایر کاربران برای خواندن یا نوشتن در این فایل یک خطر امنیتی بزرگ است. می توانید مجوزها را با chmod قفل کنید:
sudo chmod 600 /swapfile
با این کار مجوز خواندن و نوشتن فقط به حساب اصلی محدود می شود. با استفاده مجدد از ls -lh میتوانید تأیید کنید که فایل swap دارای مجوزهای صحیح است:
ls -lh /swapfile
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile
اکنون که فایل swap امن تر است، می توانید برای سیستم مشخص کنید که فضای swap را برای استفاده با تایپ کردن دستور زیر راه اندازی کند:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
این خروجی تایید می کند که یک فایل swap جدید دارید و می توانید دوباره از ابزار رایگان برای تأیید یافته های خود استفاده کنید:
free -m
total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/+ buffers/cache: 196 3756 Swap: 4095 0 4095
مبادله با موفقیت راه اندازی شد و سیستم عامل در صورت نیاز شروع به استفاده از آن خواهد کرد.
دائمی کردن فایل Swap
فایل swap در حال حاضر فعال است اما با راه اندازی مجدد، سرور به طور خودکار فایل را برای استفاده فعال نمی کند. میتوانید با تغییر فایل fstab آن را تغییر دهید. fstab جدولی است که سیستمهای فایل و پارتیشنها را مدیریت میکند. فایل را با امتیازات sudo در ویرایشگر متن ویرایش کنید:
sudo nano /etc/fstab
باید خطی اضافه کنید که به سیستم عامل میگوید به طور خودکار از فایل swap که ایجاد کردهاید استفاده کند:
/swapfile swap swap sw 0 0
پس از اتمام افزودن دستور، می توانید فایل را ذخیره کرده و ببندید. سرور در bootup این فایل را بررسی می کند، بنابراین فایل swap از این پس برای استفاده آماده خواهد بود.
تغییر تنظیمات swap (گزینه اختیاری)
چند گزینه وجود دارد که می توانید آنها را پیکربندی کنید و بر عملکرد سیستم شما در هنگام انجام swap تأثیر می گذارد. این تنظیمات در بیشتر موارد اختیاری هستند و تغییراتی که ایجاد می کنید به نیازهای برنامه و ترجیح شخصی شما بستگی دارد.
تبادل
پارامتر swappiness تعیین می کند که سیستم شما هر چند وقت یک بار داده ها را از حافظه به فضای swap نیز مبادله می کند. این مقدار بین 0 تا 100 است که نشان دهنده درصد استفاده از حافظه است که استفاده از swap را آغاز می کند.
با مقادیر نزدیک به صفر، سیستم داده ها را با درایو مبادله نمی کند مگر اینکه کاملاً ضروری باشد. به یاد داشته باشید، تعامل با فایل swap از این جهت که بسیار کندتر از تعامل با حافظه است، “گران می باشد” و این تفاوت در سرعت خواندن و نوشتن می تواند باعث کاهش قابل توجهی در عملکرد برنامه شود. در سیستم مشخص کنید که زیاد به swap تکیه نکند، به طور کلی سیستم شما را سریعتر می کند.
مقادیری که نزدیک به 100 هستند، سعی میکنند تا دادههای بیشتری را در مبادله قرار دهند تا حافظه بیشتری را آزاد نگه دارند. بسته به مشخصات حافظه برنامه های شما، یا اینکه به چه دلیل از سرور خود استفاده می کنید، این امر ممکن است در برخی موارد انتخاب بهتری باشد. با خواندن فایل پیکربندی swappiness میتوانید مقدار swappiness فعلی را ببینید:
cat /proc/sys/vm/swappiness
30
CentOS 7 به طور پیشفرض روی تنظیمات swappiness 30 تنظیم شده است که برای اکثر دسکتاپها و سرورهای محلی مناسب است. برای یک سیستم VPS، احتمالاً می خواهیم آن را به 0 نزدیک کنیم.
با استفاده از دستور sysctl می توانید swappiness را روی مقدار دیگری تنظیم کنید. به عنوان مثال، برای تنظیم swappiness روی 10، می توانید دستور زیر را تایپ کنید:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
این تنظیم تا راه اندازی مجدد بعدی ادامه خواهد داشت. برای تداوم تنظیمات بین راه اندازی مجدد، می توانید خط خروجی را به فایل پیکربندی sysctl اضافه کنید:
sudo nano /etc/sysctl.conf
تنظیمات swappiness خود را به پایین فایل اضافه کنید:
vm.swappiness = 10
پس از اتمام افزودن دستور، می توانید فایل را ذخیره کرده و ببندید. سرور اکنون به طور خودکار swappiness را روی مقداری که در هر bootup اعلام کرده اید تنظیم می کند.
Cache Pressure
مقدار مرتبط دیگری که ممکن است بخواهید تغییر دهید vfs_cache_pressure است. این تنظیم بر ذخیرهسازی ورودیهای فراداده سیستم فایل خاص تأثیر میگذارد. خواندن و بروزرسانی مداوم این اطلاعات معمولاً بسیار پرهزینه است، بنابراین ذخیره آن در حافظه پنهان برای مدت طولانیتر برای عملکرد سیستم شما عالی خواهد بود. با پرس و جو مجدد از سیستم فایل proc می توانید مقدار فعلی فشار حافظه پنهان را مشاهده کنید:
cat /proc/sys/vm/vfs_cache_pressure
100
همانطور که در حال حاضر پیکربندی شده است، سیستم ما اطلاعات inode را خیلی سریع از حافظه پنهان حذف می کند. با استفاده از sysctl میتوانید آن را روی یک تنظیم محافظهکارانهتر، مانند 50 تنظیم کنید:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
این راهنما فقط برای آموزش فعلی در این مقاله معتبر است. میتوانید آن را با اضافه کردن به فایل پیکربندی خود تغییر دهید، مانند تنظیمات swappiness:
sudo nano /etc/sysctl.conf
در پایین، خطی را اضافه کنید که مقدار جدید شما را مشخص می کند:
vm.vfs_cache_pressure = 50
پس از اتمام افزودن خط، می توانید فایل را ذخیره کرده و ببندید. سرور اکنون به طور خودکار فشار کش را روی مقداری که در هر bootup اعلام کرده اید تنظیم می کند.
سخن آخر
در این آموزش نحوه اضافه کردن Swap در CentOS 7 را بررسی کردیم. با دنبال کردن مراحل این راهنما، به سرور خود فضای تنفسی از نظر استفاده از حافظه خواهید داد. فضای تبادل برای جلوگیری از برخی مشکلات رایج بسیار مفید است. اگر با خطاهای OOM (حافظه تمام شده) مواجه شدید، یا متوجه شدید که سیستم شما قادر به استفاده از برنامه های مورد نیاز نیست، بهترین راه حل این است که تنظیمات برنامه خود را بهینه کنید یا سرور خود را ارتقا دهید. با این حال، پیکربندی فضای swap میتواند به شما انعطافپذیری بیشتری بدهد. امیدواریم این مقاله برای شما مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.