اضافه کردن Swap به لینوکس و تغییر مقدار swappiness

در هنگام نصب Oracle Grid Infrastructure یا Oracle Database روی لینوکس، سیستم نصب‌کننده (Oracle Universal Installer) قبل از شروع نصب، مجموعه‌ای از پیش‌نیازهای سیستم را بررسی می‌کند. یکی از این پیش‌نیازها وجود فضای Swap کافی در سیستم است.

در این سناریو هنگام اجرای دستور نصب Grid Infrastructure با خطای کمبود Swap مواجه شدیم. در ادامه روند شناسایی مشکل و رفع آن به صورت مرحله‌به‌مرحله توضیح داده شده است.

فرآیند از زمانی شروع شد که دستور زیر برای نصب Grid Infrastructure همراه با Patch اجرا شد:

./gridSetup.sh -applyRU /u01/sources/38629535/

در حین اجرای نصب، بررسی پیش‌نیازهای سیستم انجام شد و خطای زیر نمایش داده شد:

The file oraparam.ini could not be found at /u01/app/19c/grid/oui/bin/oraparam.ini
Using paramFile: /u01/app/19c/grid/oui/oraparam.ini

Checking swap space: 0 MB available, 500 MB required.    Failed <<<<

این پیام نشان می‌دهد که سیستم هیچ فضای Swap فعالی ندارد در حالی که نصب Oracle حداقل 500MB Swap نیاز دارد.

همچنین فرآیند آماده‌سازی Patch متوقف شد:

Preparing the home to patch failed.

بررسی وضعیت حافظه سیستم

ابتدا وضعیت حافظه و Swap سیستم بررسی شد:

swapon --show
free -h

خروجی نشان داد که سیستم دارای 31 گیگابایت RAM است اما هیچ Swap فعالی ندارد:

Mem:   31Gi total
Swap:  0B

بنابراین باید یک Swap به سیستم اضافه می‌کردیم.

ایجاد Swap File در لینوکس

به جای ساخت پارتیشن جداگانه، ساده‌ترین روش ایجاد یک Swap File است.

ایجاد فایل Swap

در این مرحله یک فایل Swap به اندازه 2 گیگابایت ایجاد شد:

fallocate -l 2G /swapfile

تنظیم سطح دسترسی فایل

برای امنیت سیستم، فایل Swap باید فقط توسط کاربر root قابل دسترسی باشد:

chmod 600 /swapfile

تبدیل فایل به فضای Swap

سپس فایل ایجاد شده به فرمت Swap تبدیل شد:

mkswap /swapfile

فعال‌سازی Swap

بعد از آماده‌سازی، Swap فعال شد:

swapon /swapfile

برای اطمینان از فعال شدن Swap مجدداً حافظه بررسی شد:

free -h

دائمی کردن Swap بعد از ریبوت

برای اینکه Swap بعد از ریبوت سیستم نیز فعال باقی بماند، باید آن را در فایل fstab اضافه کنیم.

ویرایش فایل:

vi /etc/fstab

و اضافه کردن خط زیر:

/swapfile none swap sw 0 0

تنظیم پارامتر Swappiness

پارامتر swappiness مشخص می‌کند که سیستم چه میزان تمایل دارد از Swap استفاده کند.

مقدار پیش‌فرض معمولاً 60 است.

بررسی مقدار فعلی:

cat /proc/sys/vm/swappiness

برای کاهش استفاده از Swap در سرورهای دیتابیسی، مقدار آن به 10 تغییر داده شد:

sysctl vm.swappiness=10

برای دائمی کردن آن نیز می توان مقدار 

vm.swappiness=10

در فایل 

/etc/sysctl.conf

اضافه کرد و سپس برای اطمینان از اعمال و عدم وجود مشکل دستور 

sysctl -p

را زد.