كيف ولماذا يعمل خيار noatime على تحسين أداء أنظمة Linux

يؤثر التحديث Atime على أداء النظام. ماذا يحدث هناك وماذا تفعل حيال ذلك - اقرأ المقال.

كيف ولماذا يعمل خيار noatime على تحسين أداء أنظمة Linux
عندما أقوم بتحديث Linux على جهاز الكمبيوتر المنزلي الخاص بي، يجب علي حل بعض المشكلات. على مر السنين، أصبحت هذه عادة: أقوم بعمل نسخة احتياطية من ملفاتي، وأمسح النظام، وأثبت كل شيء من الصفر، وأستعيد ملفاتي، ثم أعيد تثبيت تطبيقاتي المفضلة. أقوم أيضًا بتغيير إعدادات النظام بما يناسبني. في بعض الأحيان يستغرق الأمر الكثير من الوقت. ومؤخرًا تساءلت عما إذا كنت بحاجة إلى هذا الصداع.

وقت يعد أحد الطوابع الزمنية الثلاثة للملفات في Linux (سنتحدث عن هذا لاحقًا). على وجه الخصوص، كنت أتساءل عما إذا كان لا يزال من الجيد تعطيله مرة واحدة على أنظمة Linux الأحدث. نظرًا لأنه يتم تحديث atime في كل مرة يتم فيها الوصول إلى الملف، فقد أدركت أن له تأثيرًا كبيرًا على أداء النظام.
لقد قمت مؤخرًا بالترقية إلى Fedora 32، وبدأت بتعطيل بعض الوقت كعادتي. فكرت: هل أحتاجه حقًا؟ قررت أن أدرس هذا الموضوع وهذا ما توصلت إليه.

قليلا عن الطوابع الزمنية للملف

لمعرفة ذلك، عليك الرجوع خطوة إلى الوراء وتذكر بعض الأشياء حول أنظمة ملفات Linux وكيفية قيام kernel بوضع الطوابع الزمنية على الملفات والأدلة. يمكنك رؤية تاريخ آخر تعديل للملفات والأدلة عن طريق تشغيل الأمر ليرة سورية -l (طويل) أو ببساطة من خلال الاطلاع على المعلومات المتعلقة به في مدير الملفات. ولكن خلف الكواليس، تقوم نواة Linux بتتبع عدة طوابع زمنية للملفات والأدلة:

  1. متى تم آخر تعديل للملف (mtime)
  2. متى كانت آخر مرة تم فيها تغيير خصائص الملف والبيانات الوصفية (ctime)
  3. متى تم الوصول إلى الملف آخر مرة (في كل مرة)
  4. يمكنك استخدام الأمر القانون الأساسيلعرض معلومات حول ملف أو دليل. هنا الملف / الخ / 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 عندما قمت بتثبيت النظام. ملفي / الخ / fstab تم تعديله آخر مرة في 16 مايو 2019، وتم تغيير جميع السمات الأخرى في نفس الوقت تقريبًا.

إذا قمت بنسخ / الخ / 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

لكن إذا قمت بإعادة تسمية الملف دون تغيير محتوياته، فسيقوم Linux فقط بتحديث الوقت الذي تم فيه تعديل الملف:

$ 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

هذه الطوابع الزمنية مفيدة جدًا لبعض برامج Unix. على سبيل المثال، biff هو برنامج يقوم بإعلامك عند وجود رسالة جديدة في بريدك الإلكتروني. في الوقت الحاضر يستخدم عدد قليل من الناس بيف، ولكن في الأيام التي كانت فيها صناديق البريد محلية بالنسبة للنظام، كان biff شائعًا جدًا.

كيف يعرف البرنامج إذا كان لديك بريد جديد في صندوق الوارد الخاص بك؟ يقارن biff آخر وقت تم تعديله (عندما تم تحديث ملف البريد الوارد برسالة بريد إلكتروني جديدة) وآخر وقت وصول (آخر مرة قرأت فيها بريدك الإلكتروني). إذا حدث التغيير في وقت لاحق من الوصول، فسوف يفهم Biff أن خطابا جديدا قد وصل وسوف يخطرك به. يعمل عميل البريد الإلكتروني Mutt بنفس الطريقة تقريبًا.

يعد الطابع الزمني الأخير للوصول مفيدًا أيضًا إذا كنت بحاجة إلى جمع إحصائيات استخدام نظام الملفات وضبط الأداء. يحتاج مسؤولو النظام إلى معرفة الكائنات التي يتم الوصول إليها حتى يتمكنوا من تكوين نظام الملفات وفقًا لذلك.

لكن معظم البرامج الحديثة لم تعد بحاجة إلى هذه التسمية، لذلك كان هناك اقتراح بعدم استخدامها. في عام 2007، ناقش لينوس تورفالدس والعديد من مطوري النواة الآخرين في وقت ما في سياق مشكلة الأداء. أوضح مطور Linux kernel Ingo Molnar النقطة التالية حول atime ونظام الملفات ext3:

"من الغريب أن يعاني كل سطح مكتب وخادم Linux من تدهور ملحوظ في أداء الإدخال/الإخراج بسبب التحديثات المستمرة في الوقت المحدد، على الرغم من وجود مستخدمين حقيقيين فقط: tmpwatch [الذي يمكن تهيئته لاستخدام ctime، لذلك فهو ليس مشكلة كبيرة] و بعض أدوات النسخ الاحتياطي."

لكن لا يزال الناس يستخدمون بعض البرامج التي تحتاج إلى هذه التسمية. لذا فإن إزالة الوقت سيؤدي إلى تعطيل وظائفها. يجب على مطوري Linux kernel ألا ينتهكوا حرية المستخدم.

قرار سليمان

هناك العديد من التطبيقات المضمنة في توزيعات Linux وبالإضافة إلى ذلك، يمكن للمستخدمين تنزيل وتثبيت برامج أخرى وفقًا لاحتياجاتهم. هذه هي الميزة الرئيسية لنظام التشغيل مفتوح المصدر. ولكن هذا يجعل من الصعب تحسين أداء نظام الملفات الخاص بك. قد تؤدي إزالة المكونات كثيفة الاستخدام للموارد إلى تعطيل النظام.

كحل وسط، قدم مطورو Linux kernel خيارًا جديدًا لوقت الترحيل يهدف إلى تحقيق التوازن بين الأداء والتوافق:

يتم تحديث atime فقط إذا كان وقت الوصول السابق أقل من وقت التعديل أو تغيير الحالة الحالي... منذ Linux 2.6.30، تستخدم النواة هذا الخيار افتراضيًا (ما لم يتم تحديد noatime)... أيضًا، منذ Linux 2.6.30 . 1، يتم دائمًا تحديث آخر وقت وصول للملف إذا كان عمره أكثر من يوم واحد.

تستخدم أنظمة Linux الحديثة (منذ Linux 2.6.30، الذي تم إصداره في عام 2009) بالفعل وقت الترحيل، والذي من المفترض أن يوفر تعزيزًا كبيرًا للأداء. هذا يعني أنك لا تحتاج إلى تكوين الملف / الخ / fstabومع وقت التتابع يمكنك الاعتماد على الوضع الافتراضي.

تحسين أداء النظام مع noatime

ولكن إذا كنت ترغب في ضبط نظامك للحصول على أقصى قدر من الأداء، فلا يزال من الممكن تعطيل الوقت.

قد لا يكون التغيير في الأداء ملحوظًا جدًا على محركات الأقراص الحديثة السريعة جدًا (مثل NVME أو Fast SSD)، ولكن هناك زيادة طفيفة هناك.

إذا كنت تعلم أنك لا تستخدم برنامجًا يتطلب وقتًا، فيمكنك تحسين الأداء قليلاً عن طريق تمكين خيار 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 على تحسين أداء أنظمة Linux

المصدر: www.habr.com

إضافة تعليق