نظام الملفات المؤقتة

نظام الملفات المؤقت (tmpfs) (اختصارًا لعبارة Temporary File System) هو نموذج لتخزين الملفات المؤقتة مُطبَّق في العديد من أنظمة التشغيل الشبيهة بيونكس. يهدف هذا النظام إلى ظهور كنظام ملفات مُثبت، ولكن البيانات تُخزَّن في ذاكرة متطايرة بدلاً من جهاز تخزين دائم.

تُشبه الفكرة وراء tmpfs مفهوم محرك الذاكرة العشوائية، فكلاهما يوفر نظام ملفات مُخزَّنًا في الذاكرة المتطايرة؛ ومع ذلك، تختلف طريقة التنفيذ. فبينما يُنفَّذ tmpfs على طبقة نظام الملفات المنطقي، يُنفَّذ محرك الذاكرة العشوائية على طبقة نظام الملفات المادي. بعبارة أخرى، محرك الذاكرة العشوائية هو جهاز كتلة افتراضي يُشغَّل عليه نظام ملفات عادي، بينما tmpfs هو نظام ملفات افتراضي لا يعتمد على أي جهاز كتلة أساسي.

 الدلالات 
كل ما يُخزَّن في tmpfs يكون مؤقتًا بمعنى أن أي ملفات لن تُنشأ مباشرة على وحدة تخزين غير متطايرة مثل الأقراص الصلبة (على الرغم من استخدام مساحة التبادل كمخزن احتياطي وفقًا لسياسة استبدال الصفحات الخاصة بنظام التشغيل). عند إعادة تشغيل النظام، ستُفقد جميع البيانات الموجودة في tmpfs.

تنمو الذاكرة المستخدمة بواسطة tmpfs وتتقلص لتناسب الملفات التي تحتويها.

تُفعّل وتُستخدم العديد من توزيعات يونكس نظام tmpfs افتراضيًا لفرع  من نظام الملفات أو للذاكرة المشتركة. يمكن ملاحظة ذلك باستخدام الأمر df كما في هذا المثال:

 Filesystem     1K-blocks   Used Available Use% Mounted on 
 tmpfs            1686428      0   1686428   0% /dev/shm 
 tmpfs             674572   1808    672764   1% /run 
 tmpfs               1024      0      1024   0% /run/credentials/systemd-journald.service 
 tmpfs            1686428   1628   1684800   1% /tmp 
 tmpfs               1024      0      1024   0% /run/credentials/getty@tty1.service 
 tmpfs               1024      0      1024   0% /run/credentials/getty@tty3.service 
 tmpfs             337284     32    337252   1% /run/user/0 
 tmpfs               1024      0      1024   0% /run/credentials/getty@tty4.service 
 tmpfs             337284 280464     56820  84% /run/user/1000

بعض توزيعات لينكس (مثل دبيان) لا تملك tmpfs مُثبتًا على  افتراضيًا؛ وفي هذه الحالة، تُخزَّن الملفات تحت  في نفس نظام الملفات مثل .

وفي جميع توزيعات لينكس تقريبًا، يُثبّت tmpfs على  أو  لتخزين ملفات وقت التشغيل المؤقتة مثل ملفات PID ومآخذ نطاق يونكس.

 التطبيقات 
توجد عدة متغيرات مستقلة لمفهوم tmpfs. إحدى أقدمها طورتها صن ميكروسيستمز لنظام SunOS، وقدمت أنظمة تشغيل أخرى مثل BSDs ولينكس تطبيقاتها الخاصة.

 SunOS 
يتضمن SunOS 4 ما يُعد على الأرجح أقدم تطبيق لـtmpfs؛ ظهر لأول مرة في SunOS 4.0 في أواخر عام 1987، جنبًا إلى جنب مع إدارة مساحة العنوان المتعامدة الجديدة التي سمحت بتعيين أي كائن في الذاكرة.

أصبح دليل  في سولاريس نظام ملفات tmpfs افتراضيًا بدءًا من سولاريس 2.1، الذي صدر في ديسمبر 1992. سيُظهر إخراج أمر  في سولاريس "swap" كذاكرة تخزين خلفية لأي وحدة تخزين tmpfs:# df -k
Filesystem  kbytes  used    avail capacity  Mounted on
swap        601592       0  601592        0%     /tmp/test

 لينكس 
يدعم نواة لينكس tmpfs بدءًا من الإصدار 2.4 (4 يناير 2001). يعتمد tmpfs في لينكس (المعروف سابقًا باسم shm fs) على شيفرة ramfs المستخدمة أثناء الإقلاع، ويستخدم أيضًا ذاكرة التخزين المؤقت للصفحات، ولكنه، على عكس ramfs، يدعم تبديل الصفحات الأقل استخدامًا إلى مساحة المبادلة، بالإضافة إلى حجم نظام الملفات وحدود العقد الطرفية لمنع حالات نفاد الذاكرة (افتراضيًا إلى نصف ذاكرة الوصول العشوائي الفعلية ونصف عدد صفحات ذاكرة الوصول العشوائي على التوالي).

 بي إس دي (BSD) 
قدم 4.2BSD نظام MFS، وهو نظام ملفات يعتمد على الذاكرة ويُطبّق عن طريق تطبيق نظام ملفات القرص FFS الحالي على منطقة ذاكرة افتراضية.

أُدمج tmpfs، وهو نظام ملفات يعتمد على الذاكرة ويُطبّق باستخدام هياكل بيانات تقليدية داخل الذاكرة لتحسين أداء MFS، في شجرة مصدر NetBSD الرسمية في 10 سبتمبر 2005؛ وهو متاح في الإصدار 4.0 والإصدارات اللاحقة.

نقل FreeBSD تطبيق NetBSD، حيث أصبح متاحًا في الإصدار 7.0 والإصدارات اللاحقة.

نقل DragonFly BSD أيضًا تطبيق NetBSD، حيث أصبح متاحًا في الإصدار 2.5.1 والإصدارات اللاحقة.

نقل OpenBSD أيضًا تطبيق tmpfs الخاص بـNetBSD، والذي بدأه بيدرو مارتيليتو وحسنه العديد من الآخرين. جرى تفعيله في الإصدارات اعتبارًا من 17 ديسمبر 2013. كان الإصدار 5.5 هو أول إصدار من OpenBSD يتضمن tmpfs. عطل OpenBSD 6.0 tmpfs بسبب نقص الصيانة.

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

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

 العيوب 
على الأنظمة التي لا تحتوي على مساحة مبادلة، أو حيث تكون مساحة المبادلة منخفضة، قد يستهلك tmpfs كميات كبيرة من الذاكرة.

إذا كانت ملفات التخزين المؤقت مخزنة في tmpfs، فستفقد البرامج بياناتها المخزنة مؤقتًا عند إعادة التشغيل.

 المراجع 

---

 روابط خارجية 




تصنيف:استحداثات متعلقة بالحواسيب في 1987
تصنيف:مزايا نواة لينكس