جستجو برای:
سبد خرید 0
  • خانه
  • دوره ها
  • معرفی ابزارهای لینوکس
  • مقالات
  • تماس با ما
آموزش لینوکس 🐧 آموزش دوآپس 🐋

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

  • 09159612321
  • rfak.it@gmail.com
  • درباره ما
آموزش لینوکس 🐧 آموزش دوآپس 🐋
  • خانه
  • دوره ها
  • معرفی ابزارهای لینوکس
  • مقالات
  • تماس با ما
شروع کنید
0

وبلاگ

آموزش لینوکس 🐧 آموزش دوآپس 🐋مقالاتمقالاتحافظه swap چیست و چگونه ایجاد میشود؟

حافظه swap چیست و چگونه ایجاد میشود؟

28 تیر 1398
ارسال شده توسط عارف اختری
مقالات

سیستم عامل برای اینکه بتواند برنامه ای را اجرا کند، باید آن برنامه را به داخل حافظه اصلی (RAM) منتقل کند.

درسیستم عامل های مدرن امروزی در هر لحظه تعداد زیادی برنامه در حال اجرا هستند همچنین تعداد زیادی سرویس نیز در پس زمینه در حال اجرا می باشند. با توجه به این که مقدار حافظه اصلی کامپیوتر محدود است، وقتی تعداد برنامه هایی که قرار است همزمان اجرا شوند زیاد شود، مقدار حافظه لازم جهت اجرای همزمان برنامه ها از کل حافظه اصلی کامپیوتر بیشتر می شود. در این حالت سیستم دچار کمبود حافظه اصلی شده و در نهایت crash می کند.

برای حل این مشکل دو راه وجود دارد:

اول اینکه مقدار حافظه اصلی کامپیوتر را افزایش دهیم. این را حل دارای مشکلاتی است. هزینه حافظه اصلی بسیار گران است و علاوه بر این مقدار حافظه اصلی قابل آدرس دهی دارای محدودیت است(هر چند در معماری های جدید سخت افزاری مقدار حافظه اصلی قابل آدرس دهی بسیار بیشتر شده است).

دوم این که بخشی از فضای دیسک را بصورت مجازی برای استفاده به عنوان حافظه اصلی معرفی کنیم. به این فضا در سیستم عامل های خانواده لینوکس و یونیکس فضای swap گفته می شود. فضای swap را می توان به دو صورت پارتیشن و فایل تعریف کرد. توصیه می شود فضای swap را به صورت پارتیشن تعریف کنید، چون در صورتی که فضای swap به صورت فایل تعریف شود تکه تکه شدن (fragmentation) فایل سرعت و بهره وری عملیات swap را پایین می آورد.

حافظه swap چیست؟

فضای Swap قسمتی از هارد سیستم است که می تواند بصورت پارتیشن یا فایل به کرنل لینوکس معرفی شود. کرنل لینوکس در مواقعی که احتیاج به حافظه RAM بیشتری داشته باشد با استفاده از قابلیت Swapping قسمت های کم استفاده تر درون حافظه RAM را درون فضای Swap کپی می کند و برای خود درون حافظه RAM فضای خالی درست می کند و در صورتی که قسمت حافظه RAM کپی شده درون فضای Swap مورد نیاز باشد عکس عمل قبل اتفاق می افتد، به عبارت دیگر کرنل لینوکس از فضای Swap بعنوان مکمل حافظه RAM استفاده می کند.

استفاده از فضای Swap در لینوکس باعث می شود سیستم هایی که حافظه RAM کمی دارند بتوانند بتوانند برنامه های بیشتر و سنگین تری را اجرا کنند، اما باید به این نکته هم دقت داشت که کپی کردن از حافظه RAM به فضای Swap و بلعکس ممکن است باعث کندی سیستم شود.

اندازه فضای swap چقدر باید باشد؟

سوال اصلی این است که چه مقدار برای فضای swap اختصاص دهیم؟ سیستم عامل های مبتنی بر یونیکس قدیمی تر(مثل Sun OS یا Ultrix) فضای swap دو یا سه برابر حافظه اصلی نیاز داشتند. اما سیستم عامل های جدیدتر (مثل لینوکس) به این مقدار فضای swap نیاز ندارند، هرچند اگر شما برای سیستم تنظیم کنید، سیستم می تواند از این مقدار نیز استفاده کنند. برای تعیین مقدار دقیق فضای swap سه اصل وجود دارد:

– برای یک کامپیوتر دسکتاپ مقدار فضای swap را دو برابر مقدار حافظه اصلی در نظر بگیرید. این امر به شما اجازه می دهد تا همزمان تعداد زیادی برنامه را اجرا کنید. و معمولا چون تعداد زیادی از برنامه ها در حالت انتظار هستند و کاری انجام نمی دهند، سیستم برنامه های بلا استفاده را به فضای swap انتقال می دهد و همیشه برای برنامه های فعال حافظه اصلی کافی در دسترس خواهد بود.

– برای یک کامپیوتر سرور (server) مقدار فضای swap را کمتر از مقدار حافظه اصلی (تقریبا نصف) در نظر بگیرید تا حاشیه اطمینانی برای سیستم در صورت نیاز به فضای swap وجود داشته باشد. ولی باید بطور پیوسته مقدار استفاده سیستم از فضای swap بررسی شود و در صورت استفاده زیاد سیستم از فضای swap، که به معنی کمبود حافظه اصلی است، حافظه اصلی سیستم را ارتقا دهید.

– برای کامپیوترهای قدیمی تر با حافظه اصلی 128 مگابایت یا کمتر حداکثر مقدار فضای swap را که می توانید کنار بگذارید، حتی تا 1 گیگابایت.

نحوه ایجاد حافظه swap

معقول نیست که سیستم شما بیش از یک فضای swap داشته باشد. برای بررسی اینکه آیا سیستم شما این فضا را دارد می توانید  از دستور زیر را استفاده کنید:

$ sudo swapon -s
or
$ sudo swapon –show

 

اگر این دستور به شما خروجی نداد به این معناست ک سیستم شما در حال حاضر این فضا را ندارد. در غیر این صورت اگه خروچی مانند زیر داشت که این فضا قبلا ایجاد شده است

خروجی ذستور sudo swapon -s
خروجی ذستور sudo swapon -s

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

در این مثال،  من یک فضای  swap  به حجم یک گیگ را ایجاد و فعال  میکنم . شما می تونین بزرگتر ایجاد کنین فقط لازمه که مقداری که مدنظر دارین رو با 1G جایگزین کنید.

$ sudo fallocate -l 1G /swapfile

اگر این دستور به شما خروجی ارور داد که مثلا fallocate نصب نیست یا fallocate failed: Operation not supported  میتوانید به جای این دستور از ابزار dd استفاده کنید.

در این صورت دستور به شکل زیر می شود

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

فقط یوزر روت حق دسترسی به این فایل را باید داشته باشد لذا حق دسترسی این فایل را اصلاح می کنیم

$ sudo chmod 600 /swapfile

از ابزار mkswap برای ساخت یک فضای swap از یک فایل در  لینوکس استفاده می کنیم:

$ sudo mkswap /swapfile

برای فعال کردن فضای swap از دستور زیر استفاده کنید

$ sudo swapon /swapfile

برای دایمی شدن تغییرات خط زیر را وارد فایل etc/fstab/ می کنیم

$ sudo nano  /etc/fstab 

/swapfile swap swap defaults 0 0

برای چک کردن می توانید از یکی از دستورات زیر استفاده کنید

$ sudo swapon -s

$ sudo swapon -s 

$ free

$ vmstat

تنظیم مقدار swappiness

Swappiness یک ویژگی هسته لینوکس است که مشخص می کند که چقدر سیستم از فضای swap استفاده  کند.

Swappiness می تواند یک مقدار بین 0 تا 100 داشته باشد. مقدار کم باعث می شود که کرنل کمتر از این فضا استفاده کند و بیشتر به رم متکی باشد، در حالی که یک مقدار بالاتر باعث می شود که کرنل فضای swap را به شدت مورد استفاده قرار دهد.

مقدار swappiness به طور پیش فرض 60 است. شما می توانید مقدار swappiness فعلی را با استفاده از دستور cat چک کنید:

$ cat /proc/sys/vm/swappiness

برای تغییر این مقدار به طور دایم می توانید خط زیر را در انتهای فایل etc/sysctl.conf/ وارد کنید

$ sudo nano  /etc/sysctl.conf

vm.swappiness=10

امیدوارم مفید بوده باشه

یا حق

برچسب ها: mkswapswapswap چیستswap چیست؟swaponswappinessاندازه فضای swapاندازه فضای swap چقدر باید باشد؟پارتیشن swapپارتیشن سوآپتنظیم مقدار swappinessحافظه swap چیستحافظه swap چیست و چگونه ایجاد میشود؟حافظه swap چیست؟فضای swapمقدار swappinessنحوه ایجاد swapنحوه ایجاد حافظه swap
قبلی مجموعه ای از اسکریپت های مفید BASH
بعدی بررسی فایروال Iptables بهمراه یکسری نکات و دستورات

4 Comments

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • حامیان گفت:
    17 آذر 1400 در 1:42 ب.ظ

    سلام ممنون از ارائه دستورها
    من 2 گیگ گذاشتم فقط متوجه نمیشم چه مقدار نیازه در نهایت، که همون مقدار تنظیم کنم. اینو چه جوری باید متوجه بشم؟

    پاسخ
    • عارف اختری گفت:
      18 آذر 1400 در 8:05 ق.ظ

      سلام. فرمول اصلی جاهای مختلف چیز های متفاوتی میگن .
      یکی میگه نصف مقدار رم ، یکی میگه برابر مقدار رم حتی من دو برابر بودن مقدار رم هم شنیدم.
      مقدار سواپ بالا سناریو خاص داره. شما همون مقدار ۲ گیگ کافیه و یا حداکثر مقدار نصف رم فعلی سیستمتون

      پاسخ
  • ABBAS گفت:
    21 اردیبهشت 1401 در 6:58 ب.ظ

    سلام پسوند فایل SWAPچیه؟

    پاسخ
    • عارف اختری گفت:
      24 اردیبهشت 1401 در 1:13 ق.ظ

      سلام. سواپ توی لینوکس پسوند نداره. نیازی هم بش نیست.
      برای ساخت فایل و تبدیل اون به سوآپ نیازی به گذاشتن هم نیست

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پشتیبانی
دسته‌ها
  • مقالات
برچسب‌ها
debian fedora freebsd glusterfs in linux kali learnlinux learn linux Linux linux academy linux and unix linux Desktop linux enthusiastic linuxlearn linux learn linuxlearnorg linuxorg linux passion linux server linuxtutor linuxtutorial linuxuser plasma tutorial tutorial video zabbix آشنایی با توزیع های لینوکس آغاز کار با لینوکس آموزش تخصصی لینوکس آموزش سرور لینوکس آموزش لینوکس آنتی ویروس اموزش لینوکس اوبونتو بات نت بهترین توزیع لینوکس توزیع های لینوکس دبیان سرور لینوکس سودو فدورا لینوکس لینوکس لرن لینوکس چیست نرم افزار
  • محبوب
  • جدید
  • دیدگاه ها
    پشتیبانی

    لینوکس لرن حاصل تلاش یک تیم متخصص و علاقه مند است که سعی می کند آموزش ها را با نهایت کیفیت به مشتریان ارائه نماید. ارائه خدمات پیشتاز امضاء بزرگی بر شعار لینوکس لرن یعنی ” تحولی بزرگ در ارائه خدمات لینوکس ” می باشد.

    • ایران - مشهد
    • 09159612321
    • info@linuxlearn.org
    دسترسی سریع
    • خانه
    • مقالات
    • معرفی ابزارهای لینوکس
    • دوره ها
    • مدرسان
    • کتابخانه لینوکس لرن
    • سیاست حریم خصوصی
    • وبینار ها
    • پذیرش پروژه های Sysadmin , Devops
    • تماس با ما
    • درباره ما
    خبرنامه
    لوگوی اعتماد
    ❤️ Made with
    اشتراک گذاری در شبکه های اجتماعی
    ارسال به ایمیل
    https://linuxlearn.org/?p=20280
    علاقمندی ها 0
    صفحه علاقمندی های من ادامه خرید
    مرورگر شما از HTML5 پشتیبانی نمی کند.