افزایش کارایی هاردهای SSD در لینوکس

3 دیدگاه
دسته بندی: آموزش, لینوکس
افزایش کارایی هاردهای SSD در لینوکس

در Hard disk (هارد)های HDD هر زمان نیاز باشد اطلاعاتی روی هارد نوشته شود یا اطلاعاتی از هارد خوانده شود، هد هارد به صورت فیزیکی روی سطح دیسک حرکت می‌کند و به محل اطلاعات روی هارد می‌رسد. در نتیجه نوشتن و یا خواندن از هارد بسیار زمان‌بر است. اما در هاردهای SSD، هد، دیسک و هیچ قطعه‌ای که به صورت فیزیکی حرکت کند وجود ندارد، در نتیجه سرعت دستیابی به اطلاعات بسیار بالاتر از HDD است.
هاردهای SSD با وجود سرعت بالای دسترسی به اطلاعات دارای معایبی نیز می‌باشد به عنوان مثال در هاردهای  SSD تعداد دفعاتی که می‌توان روی هارد نوشت محدود به ۵۰٫۰۰۰ الی ۱۰۰٫۰۰۰ است.

هادر SSD

با تنظیمات درست در سیستم عامل می‌توان سرعت دسترسی به هارد و عمر مفید هارد را افزایش داد.

با رعایت نکات زیر می‌توانید شاهد عملکرد بهتر هارد خود باشید:

۱- در بایوس گزینه AHCI را فعال کنید؛ بیشتر مین‌بردها تنها در صورتی هارد SSD را پشتیبانی می‌کنند که گزینه IDE غیرفعال و  AHCI فعال باشد (فعال بودن گزینه AHCI سرعت دسترسی به اطلاعات در هارد را نیز افزایش می‌دهد). همچنین فعال بودن AHCI باعث فعال شدن NCQ می‌شود؛ NCQ روش دستیابی به اطلاعات در هارد را تغییر می‌دهد، در NCQ دستیابی به اطلاعات به صورت ترتیبی انجام نمی‌شود.

همانطور که در شکل مشخص است، در no NCQ هد از نقطه یک به ترتیب به سکتور دو، از  نقطه دو به سکتور سه، از نقطه سه به سکتور چهار و الی‌آخر می‌رود. ولی در NCQ هد از نقطه یک در سکتور یک به نقطه سه، سپس نقطه دو و … حرکت می‌کند.

ncq چیست؟
ncq چیست؟

۲- از آخرین نسخه Kernel (کرنل) استفاده کنید؛ از آنجا که SSD caching تنها در کرنل ۳.۲ به بالا وجود دارد بهتر است همیشه از آخرین نسخه کرنل لینوکس استفاده کنید.

۳- از آخرین نسخه firmware برای SSD استفاده کنید؛ بروزرسانی firmware هارد یکی از موثرترین روش‌های افزایش سرعت و پایداری هارد است، بهتر است هر چند وقت یکبار بررسی کنید که آیا هارد نیاز به بروزرسانی دارد یا خیر.

۴- بیست درصد از هارد را آزاد بگذارید؛ برای استفاده از قابلیت overprovisioning ده الی بیست درصد از هارد را فرمت نکنید و به صورت unallocated نگاه دارید. استفاده از این روش با کاهش تعداد دفعات نوشتن روی دیسک عمر مفید هارد را افزایش می‌دهد.

در هارد‌های HDD اطلاعات درمکان‌های خالی، و به ترتیبی که بهترین کارایی را داشته باشد ذخیره می‌شود، و اطلاعات محل ذخیره شدن داده‌ها در جدول MFT؛ بنابراین حذف بخشی از اطلاعات به سادگی و با حذف مکان فایل در جدول MFT قابل انجام است. اما هاردهای SSD با روش کاملا متفاوتی کار می‌کنند، در هارد SSD حافظه به قسمت‌هایی با اندازه مشخص -عموما ۴ کیلوبایت- به نام PAGE (صفحه) تقسیم می‌شود. اطلاعات باید در هر لحظه در یک صفحه خالی -که هیچ اطلاعاتی ندارد- و مجزا نوشته شود. سپس آدرس فیزیکی صفحه استفاده شده در LBA ذخیره می‌گردد. چنانچه نیاز باشد قسمتی از اطلاعات یک صفحه تغییر کند، ابتدا باید اطلاعات در یک صفحه مجزا نوشته شود، سپس آدرس فیزیکی صفحه جدید در LBA تغییر کند. اطلاعات موجود در صفحه قبل حذف می‌گردد  تا مجددا قابل استفاده باشد. این عملیات نیاز به مقداری حافظه بلااستفاده دارد تا کنترل کننده هارد از این فضای خالی برای نگهداری صفحه‌های حذف نشده استفاده کند.

روش کار مشابه روش بازی پازل ۱۵ تایی است. فرض کنید ۱۵ خانه از ۱۶ خانه پر است و ۱ خانه خالی داریم. برای مرتب کردن پازل باید به تعداد زیاد مهره‌ها را جابه‌جا کنیم، و زمان زیادی صرف انتقال مهره‌ها می‌شود.  حال تصور کنید تنها هشت خانه از ۱۶ خانه پر باشد در این صورت انتقال و جابه‌جا کردن مهره‌ها بسیار آسان خواهد بود.

پازل ۱۵ تایی
پازل ۱۵ تایی

۵-از جدیدترین و پایدارترین فایل‌سیستم موجود استفاده کنید؛ در حال حاظر ext4 پایدارترین فایل سیستم برای لینوکس است،‌ از فایل سیستم btrfs نیز می‌توان استفاده کرد.فایل‌سیستم‌های ext4 و btrfs بهترین پشتیبانی را از هاردهای SSD دارند. استفاده از آخرین نسخه‌ی این فایل‌سیستم‌ها با رفع باگ‌های موجود باعث افزایش سرعت هارد خواهد شد.

۶- با استفاده از TRIM سرعت را بهبود دهید؛ سرعت هاردهای SSD بعد از استفاده طولانی مدت کاهش می‌یابد، اگر از هاردی استفاده می‌کنید که TRIM پشتیبانی می‌کند -هاردهای ساخته شده از سال ۲۰۱۰ میلادی به بعد- می‌توانید با استفاده از دستور TRIM سرعت هارد را بهبود دهید. دستور TRIM به سیستم عامل اطلاع می‌دهد که بلوک‌های بلااستفاده را پاک کند.

پیشنهاد می‌شود دستور TRIM را به‌صورتی تنظیم نمایید که روزانه یک‌بار خودکار اجرا شود. برای این‌منظوردستور crontab را در ترمینال اجرانمایید، سپس عبارت زیر را به انتهای فایل باز شده اضافه کنید.

 crontab
0 0 * * * fstrim -v /

با افزودن discard در قسمت تنظیمات فایل ‎/etc/fstab سیستم‌عامل در هر بار ذخیره فایل دستور TRIMرا اجرا می‌کند. اما استفاده از این روش به دلیل بار اضافه‌ای که به سیستم‌عامل تحمیل می‌کند و باعث کاهش سرعت می‌گردد، توصیه نمی‌شود.

۷- استفاده از noatime؛ در پارامترهای Mount در فایل ‎/etc/fstab از گزینه‌های noatime یا relatime استفاده کنید. این پارامترها قابلیت نوشتن روی هارد در هر بار خواندن اطلاعات از دیسک را غیرفعال می‌کند، برای کسب اطلاعات بیشتر در رابطه با این گزینه این پست راببینید. کاهش تعداد دفعات نوشتن در هارد سرعت را افزایش و علاوه بر آن  با توجه به محدودیت تعداد دفعات نوشتن در هارد -بین ۵۰ تا ۱۰۰ هزار- عمر مفید آن‌را نیز افزایش می‌دهد.
۸- با استفاده از RAMDISK می‌توان از نوشتن دوره‌ای روی هارد SSD جلوگیری کرد؛ RAMDisk یک هارد مجازی است که روی RAM ایجاد می‌شود. از RAMDisk می‌توان به عنوان یک واسط برای هارد SSD استفاده کرد. RAMDisk سرعت دسترسی به داده‌ها را افزایش میدهد.
فایل‌های ‎/etc/default/rcS یا ‎/etc/default/tmpfs را باز کنید و مقادیر RAMTMP و RAMRUN و RAMLOCK را به yes تغییر دهید.
فایل ‎/etc/fstab را به شکل زیر تغییر دهید.

 tmpfs /tmp noatime,nosuid 0 0

سیستم را به شکلی تنظیم کنید که هر دو دقیقه یا بیشتر اطلاعات را در هارد ذخیره کند. برای انجام این کار از دستورات زیر استفاده می‌کنیم.

  • تغییر مقدار dirty_buffer_ratio در پارامترهای کرنل.
  • افزودن پارامتر commit=600 به ‎/etc/fstab.
  • استفاده از برنامه pm-utils و tlp و یا laptop-mode-tools.

توجه: تغییر مدت زمان ذخیره‌سازی داده‌ها در هارد در صورت قطع برق موجب از دست رفتن اطلاعات شما می‌شود.

۹- از Persistent RAMDISK استفاده کنید؛ ‫Persistent روشی است برای ذخیره سازی اطلاعات روی دو ابزار ذخیره سازی متفاوت و انتقال تغییرات از یک ابزار به ابزار دیگر! به عنوان مثال اطلاعات روی cdrom ذخیره می‌‌شود و تغییرات دیتا در رم نگهداری -بیشتر توزیع‌های زنده لینوکس به این شکل ساخته می‌شوند- می‌شود.

۱۰- از زمان‌بند deadline استفاده کنید؛ زمان‌بندهای I/O پیش فرض لینوکس از صف استفاده می‌کنند که زمان تاخیر را کاهش می‌دهد. از آنجا که هاردهای SSD نیازی به این نوع زمان‌بند ندارند می‌توان از زمان‌بند deadline استفاده کرد. استفاده از زمان بند deadline باعث می‌شود که عملیات‌های که نیاز به I/O زیاد دارند همه صف را اشغال نکنند و سرعت اجرای پروسس‌های کوچک را کم نکنند.
برای انجام این کار برنامه sysfsutils را نصب کنید و دستور زیر را در خط فرمان بزنید.

 echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf

نکته:

با دستور زیر می‌توانید به اطلاعات هارد شامل نسخه firmware دست پیدا کنید.

 sudo smartctrl -a /dev/sda

با دستور زیر می‌توانید مشخص کنید کدامیک از هاردهای سیستم شما SSD است.

for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done

امتیاز شما

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نظرات کاربران

3 دیدگاه. دیدگاه تازه ای بنویسید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست