نحوه اضافه کردن حافظه Swap در دبیان #
مقدمه #
حافظه سواپ که با نام فضای سواپ نیز شناخته میشود، یک بخش ذخیرهسازی اختصاصی است که به عنوان فضای سرریز برای حافظه سیستم استفاده میشود. هنگامی که حافظه دسترسی تصادفی (RAM) به طور کامل مورد استفاده قرار میگیرد، سیستم عامل صفحات غیرفعال حافظه را به فضای سواپ منتقل میکند تا رم را برای فرآیندهای فعال آزاد کند. فرآیند سواپ با اطمینان از در دسترس بودن حافظه برای برنامههای فعال، عملکرد سیستم را بهبود میبخشد و از خرابی فرآیند جلوگیری میکند.
این مقاله نحوه اضافه کردن حافظه سواپ در دبیان ۱۲ را توضیح میدهد. شما حافظه سواپ را با استفاده از یک فایل اختصاصی در فضای ذخیرهسازی سرور خود تنظیم خواهید کرد و از negarnovin Block Storage به عنوان یک حجم سواپ اختصاصی برای افزایش حافظه موجود سرور استفاده خواهید کرد.
پیش نیازها #
قبل از شروع، باید:
- یک سرور مجازی با سیستم عامل Debian
- دسترسی root به سرور مجازی ssh
- بروزرسانی سیستم عامل سرور
حافظه Swap موجود را بررسی کنید #
برای تعیین ظرفیت موجود برای تغییر یا ایجاد در سرور خود، حافظه swap موجود را مشاهده کنید. برای استفاده از ابزار free و مشاهده حافظه swap موجود در سرور خود، مراحل زیر را دنبال کنید.
- حافظه موجود سرور شامل RAM و Swap را مشاهده کنید.console
$ sudo free -hکل حافظه swap موجود در سرور خود را مشابه خروجی زیر بررسی کنید.
total used free shared buff/cache available Mem: 3.8Gi 381Mi 3.3Gi 744Ki 396Mi 3.4Gi Swap: 2.8Gi 0B 2.8Giدستور بالا کل حافظه، استفاده شده و آزاد، از جمله حافظه swap را روی سرور شما نمایش میدهد.
- برای مشاهده خروجی دقیقتر فضای swap از دستور
swaponاستفاده کنید.console$ sudo swapon --showخروجی شما باید مشابه تصویر زیر باشد.
NAME TYPE SIZE USED PRIO /swapfile file 2.8G 0B -2اگر هیچ خروجی در دسترس نباشد، سرور شما هیچ حافظه swap فعالی ندارد.
ایجاد حافظه swap #
حافظه swap فضای اختصاصی روی یک دستگاه ذخیرهسازی مانند فضای ذخیرهسازی سرور یا یک block storage volume است. برای ایجاد حافظه swap با استفاده از یک Swapfile یا یک negarnovin block storage volume اختصاصی متصل به سرور خود، بخشهای زیر را دنبال کنید.
ایجاد حافظه swap با استفاده از swapfile #
- یک فایل swap با اندازه دلخواه خود ایجاد کنید. برای مثال، دستور زیر را برای ایجاد یک فایل swap با حجم
2GBبا استفاده از ابزارfallocateدر دایرکتوری ریشه/اجرا کنید.console$ sudo fallocate -l 2G /swapfile.imgاگر
fallocateدر دسترس نیست، از ابزارddبرای ایجاد Swapfile استفاده کنید.console$ sudo dd if=/dev/zero of=/swapfile bs=1M count=۲۰۴۸
- مجوزهای Swapfile را تغییر دهید تا فقط به کاربر root امتیاز خواندن و نوشتن داده شود.console
$ sudo chmod ۶۰۰ /swapfile.img
- با استفاده از دستور
mkswap، فایل را به عنوان فضای swap فرمت کنید.console$ sudo mkswap /swapfile.imgاندازه حافظه swap جدید، اطلاعات برچسب و
UUIDرا در صورت موفقیت، مشابه خروجی زیر، تأیید کنید.Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=c0cdbc5c-e28b-4227-a22e-fbecd4dbf7f8
ایجاد حافظه Swap با استفاده از NegarNovin Block Storage #
برای ایجاد حافظه swap با استفاده از یک NegarNovin Block Storage متصل به سرور، بخشهای زیر را دنبال کنید.
- تمام دستگاههای ذخیرهسازی موجود در سرور خود را با استفاده از ابزار
lsblkفهرست کنید و نام دستگاه ذخیرهسازی negarnovin Object خود را تأیید کنید.console$ sudo lsblkخروجی:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sr0 11:0 1 1024M 0 rom vda 254:0 0 30G 0 disk ├─vda1 254:1 0 512M 0 part /boot/efi └─vda2 254:2 0 29.5G 0 part / vdb 254:16 0 40G 0 diskحجم
40GBNegarNovin Block Storage بر اساس خروجی فوق و بدون پارتیشن فعال، به صورتvdbبه سرور متصل شده است. - با استفاده از جدول پارتیشن GPT، حجم ذخیرهسازی بلوک را مقداردهی اولیه کنید.console
$ sudo parted -s /dev/vdb mklabel gpt - با استفاده از کل حجم ذخیرهسازی بلوک، یک پارتیشن جدید ایجاد کنید.console
$ sudo parted -s /dev/vdb unit mib mkpart primary ۰% ۱۰۰%
- دستگاههای ذخیرهسازی سرور را دوباره فهرست کنید و تأیید کنید که پارتیشن ذخیرهسازی بلوکی جدید در دسترس است.console
$ sudo lsblkOutput:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sr0 11:0 1 1024M 0 rom vda 254:0 0 30G 0 disk ├─vda1 254:1 0 512M 0 part /boot/efi └─vda2 254:2 0 29.5G 0 part / vdb 254:16 0 40G 0 disk └─vdb1 254:17 0 40G 0 part - حافظه بلوک را به عنوان حافظه swap فرمت کنید.
/dev/vdb1را با مسیر پارتیشن GPT واقعی خود جایگزین کنید.console$ sudo mkswap /dev/vdb1خروجی:
Setting up swapspace version 1, size = 40 GiB (42947571712 bytes) no label, UUID=4bf54a86-9516-4987-8a78-195b6c74e241 - اطلاعات دستگاه بلوک خود را مشاهده کنید و تأیید کنید که پارتیشن swap جدید در دسترس است.console
$ sudo blkidخروجی:
/dev/vdb1: UUID="4bf54a86-9516-4987-8a78-195b6c74e241" TYPE="swap" PARTLABEL="primary" PARTUUID="f3f6fbe3-38ef-4983-a2af-feb0cf5a2d18" /dev/vda2: UUID="ceccf757-a255-4ee2-b4eb-a00d706359b2" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="220cd443-75de-4b2b-b66e-d9b5b24cb22d" /dev/vda1: UUID="FDD2-F69B" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="a7b2e7cf-7e86-4420-a46f-d88c18ab7e38"به مقدار UUID پارتیشن swap توجه کنید تا هنگام نصب خودکار ولوم در زمان بوت از آن استفاده کنید.
فعال کردن فضای swap #
فضای swap وقتی روی سرور شما فعال باشد، به عنوان حافظه اختصاصی عمل میکند و به سیستم امکان میدهد فرآیندها را بین حافظه اصلی و فضای swap شما جابجا کند. برای فعال کردن فضای swap که قبلاً روی سرور خود ایجاد کردهاید، مراحل زیر را دنبال کنید.
- Swapfile موجود خود را به عنوان حافظه swap روی سرور خود فعال کنید.console
$ sudo swapon /swapfile.img - حافظه swap موجود در سرور خود را مشاهده کنید و تأیید کنید که Swapfile شما فعال است.console
$ sudo swapon -sخروجی شما باید مشابه تصویر زیر باشد.
Filename Type Size Used Priority /swapfile file 2969596 0 -2 /swapfile.img file 2097148 0 -3 - پارتیشن swap مربوط به NegarNovin Block Storage خود را به عنوان حافظه swap فعال کنید.
/dev/vdb1را با مسیر پارتیشن واقعی خود جایگزین کنید.console$ sudo swapon /dev/vdb1 - حافظه swap موجود در سرور خود را مشاهده کنید و تأیید کنید که پارتیشن swap فعال است.console
$ sudo swapon -sخروجی شما باید مشابه زیر باشد.
Filename Type Size Used Priority /swapfile file 2457596 268 -2 /swapfile.img file 2097148 0 -3 /dev/vdb1 partition 41940988 0 -4
پیکربندی جدول سیستم فایل (fstab) برای فعال کردن نصب خودکار #
جدول سیستم فایل (fstab) امکان اتصال خودکار ولومها و پارتیشنهای دیسک را روی سرور شما با استفاده از اطلاعات موجود در فایل پیکربندی /etc/fstab فراهم میکند. برای پیکربندی جدول سیستم فایل و فعال کردن اتصال خودکار حافظه swap روی سرور خود، مراحل زیر را دنبال کنید.
- از پیکربندی اصلی
fstabروی سرور خود نسخه پشتیبان تهیه کنید.console$ sudo cp /etc/fstab /etc/fstab.bak - فایل
/etc/fstabرا با استفاده از یک ویرایشگر متن مانندnanoباز کنید.console$ sudo nano /etc/fstab - برای فعال کردن نصب خودکار حافظه swap با استفاده از Swapfile، دستورالعمل زیر را در انتهای فایل اضافه کنید.console
/swapfile.img swap swap defaults 0 0فایل را ذخیره کنید و ببندید.
پیکربندی فوق، نصب خودکار را با استفاده از فایل
/swapfile.imgروی سرور شما فعال میکند. در پیکربندی:swap: نوع سیستم فایل swap را فعال میکند.swap: نقطه نصب swap را تنظیم میکند.۰: پشتیبانگیری در سیستم فایل swap را غیرفعال کنید.۰: بررسیهای سیستم فایل را روی حافظه swap غیرفعال میکند.- برای فعال کردن نصب خودکار روی پارتیشن swap ذخیرهسازی بلوکی، دستورالعمل زیر را در انتهای فایل اضافه کنید.console
/dev/vdb1 none swap sw 0 0فایل را ذخیره کنید و ببندید.
مقدار Swappiness را پیکربندی کنید #
Swappiness یک پارامتر هسته است که تعادل بین استفاده از فضای swap و RAM را تعیین میکند. مقدار Swappiness از ۰ تا ۱۰۰,متغیر است، که در آن مقادیر پایینتر مانند ۰ ، swapping را کاهش میدهند و مقادیر بالاتر ۱۰۰ ، swapping فرآیندها را از RAM به حافظه swap در اولویت قرار میدهند.
۰: سیستم را قادر میسازد تا از جابجایی فرآیندها به خارج از حافظه فیزیکی جلوگیری کند.۱-۴۹: قابلیت swapping را با کاهش مصرف فعال میکند، مگر اینکه حافظه اصلی (RAM) ظرفیت کامل داشته باشد.۵۰: بین عملیات سوآپ و ذخیرهسازی حافظه پنهان در سرور تعادل برقرار میکند.۵۱-۹۹: جابجایی از حافظه اصلی به حافظه swap را افزایش میدهد.۱۰۰: اولویتبندی سوآپینگ روی سرور و انتقال مداوم فرآیندها از RAM به سوآپ.
- مقدار swappiness فعال را روی سرور خود مشاهده کنید.console
$ cat /proc/sys/vm/swappinessخروجی شما باید مشابه زیر باشد.
۶۰ - مقدار swappiness را به
۱۰تغییر دهید. به جای۱۰، سطح swapping مورد نظر خود را قرار دهید.console$ sudo sysctl vm.swappiness=۱۰
دستور بالا مقدار swappiness فعال را به
۱۰تغییر میدهد تا سیستم بتواند از استفاده از فضای swap مگر در مواقع ضروری خودداری کند.خروجی:
vm.swappiness=10 - برای اعمال تغییرات پیکربندی، پیکربندی
sysctlرا مجدداً بارگذاری کنید.console$ sudo sysctl -p - دوباره مقدار swappiness فعال را مشاهده کنید و مطمئن شوید که روی
۱۰تنظیم شده است.console$ cat /proc/sys/vm/swappinessخروجی:
۱۰
تست و اعتبارسنجی حافظه Swap #
حافظه Swap روی سرور شما موجود است. برای آزمایش و اعتبارسنجی Volume های موجود که به طور فعال با حافظه اصلی سرور شما مبادله می کنند، مراحل زیر را دنبال کنید.
- تمام حجمهای swap موجود روی سرور خود را مشاهده کنید.console
$ sudo swapon -sخروجی:
Filename Type Size Used Priority /swapfile file 2969596 0 -2 /swapfile.img file 2097148 0 -3 /dev/vdb1 partition 41943036 0 -4 - دستور زیر را اجرا کنید تا تمام پارتیشنهای swap غیرفعال که در پیکربندی
/etc/fstabشما فعال شدهاند، فعال شوند.console$ sudo swapon -a - حافظه موجود خود را مشاهده کنید و کل حافظه swap فعال روی سرور خود را تأیید کنید.console
$ free -hخروجی:
total used free shared buff/cache available Mem: 3.8Gi 440Mi 1.2Gi 760Ki 2.5Gi 3.4Gi Swap: 44Gi 0B 44Gi
حذف حافظه swap #
برای حذف حافظه swap از سرور خود، بخشهای زیر را دنبال کنید.
- با استفاده از دستور
swapoff، فایل swap پیشفرض را غیرفعال کنید.console$ sudo swapoff /swapfile - پارتیشن swap مربوط به block storage خود را غیرفعال کنید.console
$ sudo swapoff /dev/vdb1 - برای استفاده از فضای swap اصلاحشده، فایل swap پیشفرض را حذف کنید.console
$ sudo rm /swapfile - تمام حجمهای swap را روی سرور خود مشاهده کنید و تأیید کنید که Swapfile پیشفرض غیرفعال است.console
$ sudo swapon -sخروجی:
Filename Type Size Used Priority /swapfile.img file 2097148 0 -2
نتیجه گیری #
شما حافظه swap را به سرور Debian 12 خود اضافه کردهاید و حافظه پیشفرض سیستم را افزایش دادهاید تا امکان تعویض فرآیندها برای بهبود عملکرد کلی سیستم فراهم شود. حافظه swap ممکن است در مقایسه با RAM کندتر باشد، اما سرعت پاسخگویی سرور را هنگام اجرای برنامههایی که به حافظه زیادی نیاز دارند، بهبود میبخشد. حافظه swap خود را مرتباً رصد کنید تا از عملکرد بهینه اطمینان حاصل کنید و بسته به نیازهای پردازشی خود، تنظیماتی را انجام دهید. برای گزینههای پیکربندی بیشتر، دستور man swapon را اجرا کنید تا راهنمای swap را در سرور خود مشاهده کنید.