فضای swap هنگامی که فضای حافظه اصلی (RAM) پر می شود و دیگر جایی برای فرایند های جدید وجود نداشته باشد، مورد استفاده قرار می گیرد. توجه کنید که فرایند بخشی از یک برنامه است، که برای اجرا شدن باید ابتدا توسط الگوریتم های زمانبندی خاص (مانند FIFI, SJF و غیره) از فضای دیسک (حافظه ثانویه : مانند هارد دیسک) به درون حافظه اصلی بار گذاری شود (در صف آماده برای اجرا قرار بگیرد) و سپس برای اجرا شدن توسط الگوریتم های زمانبندی فرایند ها، برای اجرا شدن، پردازنده را دریافت کنند. فرض کنید سیستم ما یک پردازنده دارد و تعداد بسیاری فرایند نیز در حافظه اصلی، برای اجرا شدن، صف بندی شود، حال یک فرایند با اولویت بالا بخواهد اجرا شود اما جایی در حافظه اصلی وجود ندارد که فرایند در آن قرار بگیرد، در این مواقع، سیستم عامل توسط معیار هایی فرایندی را برای خروج از حافظه اصلی و قرار گرفتن در حافظه فضای swap انتخاب می کند.به عمل مبادله فرایند ها میان حافظه اصلی و فضای swap، اصطلاحا swapping و به عمل خروج فرایند از حافظه اصلی و قرار گیری در swap، اصطلاحا swap in و به عمل خروج فرایند از swap و قرار گیری در حافظه اصلی، اصطلاحا swap out گفته می شود. توجه داشته باشید که swap جزئی از حافظه اصلی (RAM) نیست بلکه فضایی است بر روی رسانه ثانویه مانند هارد دیسک و به همین خاطر است که زمان نصب هر توزیع لینوکسی یا هر سیستم عامل دیگر یونیکسی، بخشی از هارد دیسک را از نوع سیستم فایل swap، پارتیشن بندی می کنید.
بطور کلی برای نصب هر توزیع لینوکسی نیاز به دو سیستم فایل است، یکی پارتیشن root که با علامت / نشان داده می شود و معمولا در توزیع های لینوکسی از نوع ext2, ext3 یا ext4 می باشد و پارتیشین لازم دیگر، فضای swap است که بعنوان بخشی از هارد دیسک و از نوع سیستم فایل swap و اندازه آن بر اساس میزان حافظه اصلی، ایجاد می شود.
معیار انتخاب میزان فضای swap بر اساس میزان حافظه اصلی موجود بر روی سیستم می باشد. به دو گونه می تواینم فضای swap را ایجاد کنیم. نخست اینکه در زمان نصب یک توزیع لینوکسی، حتما باید بخشی از هارد دیسک را بعنوان فضای swap در نظر گرفت.
دومین مورد اینکه، ممکن است حتی خود فضای swap که ایجاد کرده بودیم، نیز پر شود، پس می بایست یک فضای swap دیگر (یعنی پس از نصب سیستم و به هنگام بروز مشکل) ایجاد کنیم، که این فضا معمولا در قالب یک فایل (نه پارتیشن) ایجاد خواهد شد. با استفاده از دستور free می توانیم میزان فضای swap فعلی (میزان کل فضا، میزان فضای آزاد و میزان فضای استفاده شده) را مشاهده کنیم.
دستور free اطلاعات را از فایل proc/swaps/ می خواند و در ترمینال چاپ می کند. برای خواندن این فایل از دستور زیر استفاده کنید. برای سیستم هایی که یک پارتیشن swap دارند، خروجی مانند زیر است.
همچنین می توانید از دستور top نیز استفاده کنید تا فضای swap را monitor کنید.
همچنین می توانید از دستور زیر نیز استفاده کنید. خروجی زیر نشان می دهد که تنها یک فضای swap، آن هم بصورت پارتیشن در سیستم وجود دارد. عدد 1- که اولویت نشان می دهد. اگر یک فضای swap دیگر (مانند یک swap file) داشته باشیم آنگاه این عدد کاربردش مشخص خواهد شد، در آن صورت عددی که اولویت 1- داشته باشد دارای اولویت بالاتری است و عدد اولویت فضای swap دیگر 2- خواهد بود. (توجه کنید که عدد 1- بزرگتر از عدد 2- است).
طبق کتاب Red Hat Enterprise Linux 5 Deployment Guide، جدولی برای انتخاب اندازه فضای swap متناسب با حاظه اصلی موجود بر روی سیستم ارائه شده است که در زیر مشاهده می کنید.
ایجاد یک swap file (یک فضای swap اضافی بصورت یک فایل).
ابتدا یک فایل (بطور مثال به نام swapfile1) در زیر دایرکتوری root ایجاد می کنیم. این کار را توسط دستور dd انجام می دهیم. فرض کنید می خواهیم فایلی به اندازه 512 مگابایت ایجاد کنیم پس بصورت زیر انجام می دهیم. (524288*1024=512MB)
سپس از دستور زیر برای ایجاد ساختار سیستم فایل swap بر روی فایل استفاده کنید. در زمان نصب توزیع لینوکسی همین دستور بر روی پارتیشن برای ایجاد سیستم فایل swap انجام می شود.
سپس با دستور زیر آنرا به لیست فضاهای swap موجود روی سیستم معرفی کنید.
دستور swapon -s را اجرا کنید تا فهرستی از فضا های swap موجود به همراه نوع و اولویت شان (آنچه که پیش تر گفته شد) مشاهده کنید.
باید این فایل را بعنوان یک ورودی به فایل etc/fstab/ اضافه کنیم. پس خطی مانند زیر را اضافه کنید. در نخستین خطوط زیر، شکل کلی و دومین خط بعنوان یک نمونه و برای فایلی که ایجاد کردیم استفاده شده است.
[PHP]
SWAP_FILE_PATH swap swap default 0 0/
نویسنده نامی امیر
بطور کلی برای نصب هر توزیع لینوکسی نیاز به دو سیستم فایل است، یکی پارتیشن root که با علامت / نشان داده می شود و معمولا در توزیع های لینوکسی از نوع ext2, ext3 یا ext4 می باشد و پارتیشین لازم دیگر، فضای swap است که بعنوان بخشی از هارد دیسک و از نوع سیستم فایل swap و اندازه آن بر اساس میزان حافظه اصلی، ایجاد می شود.
معیار انتخاب میزان فضای swap بر اساس میزان حافظه اصلی موجود بر روی سیستم می باشد. به دو گونه می تواینم فضای swap را ایجاد کنیم. نخست اینکه در زمان نصب یک توزیع لینوکسی، حتما باید بخشی از هارد دیسک را بعنوان فضای swap در نظر گرفت.
دومین مورد اینکه، ممکن است حتی خود فضای swap که ایجاد کرده بودیم، نیز پر شود، پس می بایست یک فضای swap دیگر (یعنی پس از نصب سیستم و به هنگام بروز مشکل) ایجاد کنیم، که این فضا معمولا در قالب یک فایل (نه پارتیشن) ایجاد خواهد شد. با استفاده از دستور free می توانیم میزان فضای swap فعلی (میزان کل فضا، میزان فضای آزاد و میزان فضای استفاده شده) را مشاهده کنیم.
کد PHP:
free
دستور free اطلاعات را از فایل proc/swaps/ می خواند و در ترمینال چاپ می کند. برای خواندن این فایل از دستور زیر استفاده کنید. برای سیستم هایی که یک پارتیشن swap دارند، خروجی مانند زیر است.
کد PHP:
cat /proc/swaps
همچنین می توانید از دستور top نیز استفاده کنید تا فضای swap را monitor کنید.
کد PHP:
top
همچنین می توانید از دستور زیر نیز استفاده کنید. خروجی زیر نشان می دهد که تنها یک فضای swap، آن هم بصورت پارتیشن در سیستم وجود دارد. عدد 1- که اولویت نشان می دهد. اگر یک فضای swap دیگر (مانند یک swap file) داشته باشیم آنگاه این عدد کاربردش مشخص خواهد شد، در آن صورت عددی که اولویت 1- داشته باشد دارای اولویت بالاتری است و عدد اولویت فضای swap دیگر 2- خواهد بود. (توجه کنید که عدد 1- بزرگتر از عدد 2- است).
کد PHP:
swapon -s
طبق کتاب Red Hat Enterprise Linux 5 Deployment Guide، جدولی برای انتخاب اندازه فضای swap متناسب با حاظه اصلی موجود بر روی سیستم ارائه شده است که در زیر مشاهده می کنید.
ایجاد یک swap file (یک فضای swap اضافی بصورت یک فایل).
ابتدا یک فایل (بطور مثال به نام swapfile1) در زیر دایرکتوری root ایجاد می کنیم. این کار را توسط دستور dd انجام می دهیم. فرض کنید می خواهیم فایلی به اندازه 512 مگابایت ایجاد کنیم پس بصورت زیر انجام می دهیم. (524288*1024=512MB)
کد PHP:
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
سپس از دستور زیر برای ایجاد ساختار سیستم فایل swap بر روی فایل استفاده کنید. در زمان نصب توزیع لینوکسی همین دستور بر روی پارتیشن برای ایجاد سیستم فایل swap انجام می شود.
کد PHP:
mkswap /swapfile1
سپس با دستور زیر آنرا به لیست فضاهای swap موجود روی سیستم معرفی کنید.
کد PHP:
swapon /swapfile1
کد PHP:
swapon -s
باید این فایل را بعنوان یک ورودی به فایل etc/fstab/ اضافه کنیم. پس خطی مانند زیر را اضافه کنید. در نخستین خطوط زیر، شکل کلی و دومین خط بعنوان یک نمونه و برای فایلی که ایجاد کردیم استفاده شده است.
[PHP]
SWAP_FILE_PATH swap swap default 0 0/
کد PHP:
swapfile1 swap swap defaults 0 0/
نویسنده نامی امیر