چگونه و چرا گزینه noatime عملکرد سیستم های لینوکس را بهبود می بخشد

به روز رسانی Atime بر عملکرد سیستم تأثیر می گذارد. آنچه در آنجا اتفاق می افتد و در مورد آن چه باید کرد - مقاله را بخوانید.

چگونه و چرا گزینه noatime عملکرد سیستم های لینوکس را بهبود می بخشد
هر زمان که لینوکس را در رایانه خانگی خود به روز می کنم، باید مشکلات خاصی را حل کنم. در طول سال‌ها، این به یک عادت تبدیل شده است: از فایل‌هایم نسخه پشتیبان تهیه می‌کنم، سیستم را پاک می‌کنم، همه چیز را از ابتدا نصب می‌کنم، فایل‌هایم را بازیابی می‌کنم، سپس برنامه‌های مورد علاقه‌ام را دوباره نصب می‌کنم. تنظیمات سیستم را هم متناسب با خودم تغییر می دهم. گاهی وقت زیادی می گیرد. و اخیراً فکر کردم که آیا به این سردرد نیاز دارم؟

یک زمان یکی از سه مُهر زمانی برای فایل‌ها در لینوکس است (در ادامه در این مورد بیشتر توضیح خواهیم داد). به طور خاص، من فکر می‌کردم که آیا هنوز هم ایده خوبی است که atime را در سیستم‌های جدید لینوکس غیرفعال کنیم. از آنجایی که atime با هر بار دسترسی به فایل به روز می شود، متوجه شدم که تأثیر قابل توجهی بر عملکرد سیستم دارد.
من اخیراً به فدورا 32 ارتقاء دادم و از روی عادت، با غیرفعال کردن زمان شروع کردم. فکر کردم: آیا واقعاً به آن نیاز دارم؟ تصمیم گرفتم این موضوع را مطالعه کنم و این چیزی است که من کشف کردم.

کمی در مورد مهرهای زمانی فایل

برای پی بردن به آن، باید یک قدم به عقب برگردید و چند نکته را در مورد سیستم فایل لینوکس و نحوه مهر زمانی هسته به فایل ها و دایرکتوری ها به خاطر بسپارید. با اجرای دستور می توانید آخرین تاریخ تغییر فایل ها و دایرکتوری ها را مشاهده کنید ls -l (طولانی) یا به سادگی با مشاهده اطلاعات مربوط به آن در مدیر فایل. اما در پشت صحنه، هسته لینوکس چندین مُهر زمانی را برای فایل‌ها و دایرکتوری‌ها نگه می‌دارد:

  1. آخرین بار چه زمانی فایل اصلاح شد (mtime)
  2. آخرین باری که ویژگی های فایل و ابرداده تغییر کرده است (ctime) چه زمانی بوده است
  3. آخرین بار کی به فایل دسترسی پیدا کرده است (زمانی)
  4. می توانید از دستور استفاده کنید آماربرای مشاهده اطلاعات مربوط به یک فایل یا دایرکتوری. فایل اینجاست / etc / fstab از یکی از سرورهای آزمایشی من:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

در اینجا می بینید که این فایل در 25 آوریل 2019 زمانی که من سیستم را نصب کردم ایجاد شده است. پرونده من / etc / fstab آخرین بار در 16 مه 2019 اصلاح شد و همه ویژگی‌های دیگر تقریباً در همان زمان تغییر کردند.

اگه کپی کنم / etc / fstab به یک فایل جدید، تاریخ ها تغییر می کند تا نشان دهد که یک فایل جدید است:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

اما اگر فقط نام فایل را بدون تغییر محتویات آن تغییر دهم، لینوکس فقط زمانی که فایل اصلاح شده است، به روز می شود:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

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

چگونه برنامه متوجه می شود که ایمیل جدیدی در صندوق ورودی خود دارید؟ biff آخرین زمان اصلاح شده (زمانی که فایل صندوق ورودی با یک پیام ایمیل جدید به روز شد) و آخرین زمان دسترسی (آخرین باری که ایمیل خود را خوانده اید) مقایسه می کند. اگر تغییر دیرتر از دسترسی رخ داده باشد، biff متوجه می شود که نامه جدیدی وارد شده است و شما را در مورد آن مطلع می کند. کلاینت ایمیل Mutt تقریباً به همین روش کار می کند.

آخرین مُهر زمان دسترسی نیز برای جمع‌آوری آمار استفاده از سیستم فایل و تنظیم عملکرد مفید است. مدیران سیستم باید بدانند به چه چیزهایی دسترسی دارند تا بتوانند سیستم فایل را بر اساس آن پیکربندی کنند.

اما اکثر برنامه های مدرن دیگر نیازی به این برچسب ندارند، بنابراین پیشنهادی مبنی بر عدم استفاده از آن وجود داشت. در سال 2007، لینوس توروالدز و چندین توسعه‌دهنده هسته دیگر، زمان را در زمینه یک مشکل عملکرد مورد بحث قرار دادند. توسعه‌دهنده هسته لینوکس، Ingo Molnar، نکات زیر را در مورد atime و سیستم فایل ext3 بیان کرد:

"این کاملاً عجیب است که هر دسکتاپ و سرور لینوکس به دلیل به‌روزرسانی‌های زمانی ثابت دچار افت عملکرد I/O می‌شود، حتی اگر فقط دو کاربر واقعی وجود دارد: tmpwatch [که می‌تواند برای استفاده از ctime پیکربندی شود، بنابراین مشکل بزرگی نیست] و برخی از ابزارهای پشتیبان."

اما مردم هنوز از برخی برنامه‌ها استفاده می‌کنند که به این برچسب نیاز دارند. بنابراین حذف atime عملکرد آنها را از بین می برد. توسعه دهندگان هسته لینوکس نباید آزادی کاربر را نقض کنند.

تصمیم سلیمان

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

به عنوان یک مصالحه، توسعه دهندگان هسته لینوکس گزینه جدیدی را معرفی کرده اند که هدف آن ایجاد تعادل بین عملکرد و سازگاری است:

atime فقط در صورتی به روز می شود که زمان دسترسی قبلی کمتر از زمان تغییر یا تغییر وضعیت فعلی باشد... از Linux 2.6.30، هسته به طور پیش فرض از این گزینه استفاده می کند (مگر اینکه noatime مشخص شده باشد)... همچنین از Linux 2.6.30 . 1، آخرین زمان دسترسی به یک فایل در صورتی که بیش از XNUMX روز از آن گذشته باشد همیشه به روز می شود.

سیستم‌های لینوکس مدرن (از زمان لینوکس 2.6.30 که در سال 2009 منتشر شد) در حال حاضر از زمان رله استفاده می‌کنند که باید عملکرد واقعاً زیادی را افزایش دهد. این بدان معنی است که شما نیازی به پیکربندی فایل ندارید / etc / fstab، و با زمان رله می توانید به پیش فرض تکیه کنید.

بهبود عملکرد سیستم با noatime

اما اگر می‌خواهید سیستم خود را تنظیم کنید تا حداکثر کارایی را داشته باشد، غیرفعال کردن زمان همچنان امکان‌پذیر است.

تغییر عملکرد ممکن است در درایوهای مدرن بسیار سریع (مانند NVME یا Fast SSD) چندان قابل توجه نباشد، اما افزایش کمی وجود دارد.

اگر می‌دانید که از نرم‌افزاری استفاده نمی‌کنید که به atime نیاز دارد، می‌توانید با فعال کردن گزینه noatime در فایل، عملکرد را کمی بهبود بخشید. /etc/fstab. پس از این، هسته به طور مداوم به روز نمی شود. هنگام نصب فایل سیستم از گزینه noatime استفاده کنید:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

دفعه بعد که مجددا راه اندازی می کنید تغییرات اعمال خواهند شد.

در حقوق تبلیغات

آیا برای میزبانی وب سایت خود به سرور نیاز دارید؟ شرکت ما ارائه می دهد سرورهای قابل اعتماد با پرداخت روزانه یا یکباره، هر سرور به یک کانال اینترنتی 500 مگابیت متصل می شود و در برابر حملات DDoS به صورت رایگان محافظت می شود!

چگونه و چرا گزینه noatime عملکرد سیستم های لینوکس را بهبود می بخشد

منبع: www.habr.com

اضافه کردن نظر