ملف متفرق

في علم الحاسوب ، يُعرف الملف المتفرق بأنه نوع من ملفات الحاسوب التي تسعى إلى استخدام مساحة نظام الملفات بكفاءة أكبر عندما يكون الملف نفسه فارغًا جزئيًا. ويتحقق ذلك من خلال كتابة معلومات موجزة ( بيانات وصفية ) تمثل الكتل الفارغة إلى وسائط تخزين البيانات بدلًا من المساحة "الفارغة" الفعلية التي تُشكل الكتلة، مما يقلل من استهلاك مساحة التخزين. تُكتب الكتلة كاملةً إلى الوسائط بحجمها الفعلي فقط عندما تحتوي الكتلة على بيانات "حقيقية" (غير فارغة).
في أغلب الأحيان، تُنشأ الملفات المتفرقة عندما لا تُكتب أي أجزاء من الملف. وهذا شائع في الملفات ذات الوصول العشوائي مثل قواعد البيانات. بل إن بعض أنظمة التشغيل أو الأدوات المساعدة تذهب إلى أبعد من ذلك، فتقوم بـ"تفريق" الملفات عند كتابتها أو نسخها: فإذا احتوت كتلة ما على بايتات فارغة فقط، فإنها لا تُكتب إلى وحدة التخزين، بل تُعلّم على أنها فارغة.
عند قراءة الملفات المتفرقة، يقوم نظام الملفات بتحويل البيانات الوصفية التي تمثل الكتل الفارغة إلى كتل "حقيقية" مملوءة ببايتات فارغة أثناء التشغيل، دون أن يدرك التطبيق هذا التحويل.
تدعم معظم أنظمة الملفات الحديثة الملفات المتفرقة، بما في ذلك معظم توزيعات يونكس ونظام الملفات NTFS . [ 1 ] لا يدعم نظام الملفات HFS+ من آبل الملفات المتفرقة، ولكن في نظام التشغيل OS X، تدعم طبقة نظام الملفات الافتراضي تخزينها في أي نظام ملفات مدعوم، بما في ذلك HFS+. كما يدعمها نظام ملفات آبل (APFS). [ 2 ] تُستخدم الملفات المتفرقة عادةً لصور الأقراص ، ولقطات قواعد البيانات ، وملفات السجلات ، وفي التطبيقات العلمية.
المزايا
تتمثل ميزة الملفات المتفرقة في تخصيص مساحة التخزين عند الحاجة الفعلية فقط، مما يحافظ على سعة التخزين، ويتيح إنشاء ملفات كبيرة أحيانًا حتى في حال عدم توفر مساحة كافية للملف الأصلي على وسائط التخزين. كما يقلل ذلك من وقت الكتابة الأولى، إذ لا يضطر النظام إلى تخصيص كتل للمساحة "المتجاوزة". وإذا تطلب التخصيص الأولي كتابة أصفار فقط في المساحة، فإنه يمنع النظام من الكتابة فوق المساحة "المتجاوزة" مرتين.
على سبيل المثال، صورة جهاز افتراضي بحجم أقصى 100 جيجابايت تحتوي على 2 جيجابايت من الملفات المكتوبة فعليًا، ستتطلب كامل المساحة (100 جيجابايت) عند استخدام مساحة تخزين مُخصصة مسبقًا، بينما لا تتطلب سوى 2 جيجابايت في حالة الملفات المتفرقة. إذا كان نظام الملفات يدعم خاصية "ثقب الملفات" (hole punching) وكان نظام التشغيل الضيف يُصدر أوامر TRIM ، فإن حذف الملفات من النظام الضيف سيقلل المساحة المطلوبة تبعًا لذلك.
العيوب
من عيوب نظام الملفات المتفرقة (VFS) احتمال تجزئة الملفات المتفرقة ، واحتمال أن تكون تقارير المساحة الحرة في نظام الملفات مضللة، وإمكانية حدوث آثار غير متوقعة عند ملء أنظمة الملفات التي تحتوي على ملفات متفرقة (مثل أخطاء امتلاء القرص أو تجاوز الحصة المخصصة عند الكتابة فوق جزء موجود من ملف كان متفرقًا)، وإمكانية نسخ ملف متفرق باستخدام برنامج لا يدعمه صراحةً بنسخ الحجم الكامل غير المضغوط للملف، بما في ذلك الأجزاء الصفرية غير المخصصة على وسائط التخزين ، مما يؤدي إلى فقدان ميزة التفرق في الملف. كما أن الملفات المتفرقة غير مدعومة بشكل كامل من قبل جميع برامج أو تطبيقات النسخ الاحتياطي. مع ذلك، يتجاوز تطبيق VFS العيبين السابقين. يستغرق تحميل الملفات التنفيذية (exe أو dll) ذات الحجم المتفرق على أنظمة ويندوز 32 بت وقتًا أطول بكثير، نظرًا لعدم إمكانية ربط الملف بالذاكرة ضمن مساحة العناوين المحدودة البالغة 4 جيجابايت، وعدم تخزينه مؤقتًا لعدم وجود مسار برمجي مخصص لذلك (بينما يمكن لأنظمة ويندوز 64 بت ربط الملفات التنفيذية ذات الحجم المتفرق). لا يمكن ضغط الملفات ذات الحجم المتفرق (أو بالأحرى مساحاتها غير الصفرية) على نظام الملفات NTFS. يُطبّق نظام NTFS خاصية الحجم المتفرق كنوع خاص من الضغط، لذا قد يكون الملف إما ذا حجم متفرق أو مضغوطًا.
الملفات المتفرقة في نظام يونكس
عادةً ما يتم التعامل مع الملفات المتفرقة بشكل شفاف للمستخدم. لكن الاختلافات بين الملف العادي والملف المتفرق تظهر بوضوح في بعض الحالات.
الخلق
أمر يونكس
dd of = sparse-file bs = 5M seek = 1 count = 0سيُنشئ ملفًا بحجم خمسة ميغابايت ، ولكن بدون تخزين أي بيانات على الوسائط (فقط البيانات الوصفية ). ( يتبع نظام GNUdd هذا السلوك لأنه يستدعي دالة ftruncateلتحديد حجم الملف؛ أما التطبيقات الأخرى فقد تُنشئ ملفًا فارغًا فقط).
وبالمثل، يمكن استخدام أمر الاقتطاع، إذا كان متاحًا:
اقتطاع -s 5M <اسم الملف> في نظام لينكس ، يمكن تحويل ملف موجود إلى ملف متفرق عن طريق:
fallocate -d <filename> لا يوجد استدعاء نظام محمول لعمل ثقوب؛ يوفر نظام لينكس ذلك fallocate(FALLOC_FL_PUNCH_HOLE)، ويوفر نظام سولاريسfcntl(F_FREESP) ذلك أيضًا .
كشف
يعرض خيار -sالأمر lsالمساحة المشغولة على شكل كتل.
ls -ls sparse-file بدلاً من ذلك، duيطبع الأمر المساحة المشغولة، بينما lsيطبع الأمر الحجم الظاهري. في بعض الإصدارات غير القياسية من الأمر du، يطبع الخيار --block-size=1المساحة المشغولة بالبايتات بدلاً من الكتل، بحيث يمكن مقارنتها بالمخرجات ls.
du --block-size = 1 sparse-file ls -l sparse-file لاحظ أن استخدام du أعلاه له صيغة بناء جملة الخيار المختصرة "du -B 1 sf"، وهو ما يعادل النسخة الأقصر "du -b sf" كما هو مذكور في دليل du: [ 3 ]-b, --bytes يعادل --apparent-size --block-size=1.
كما يمكن استخدام الأداة filefragالموجودة في e2fsprogsالحزمة لعرض تفاصيل تخصيص الكتل للملف.
filefrag -v sparse-file النسخ
عادةً، يكون إصدار GNU من البرنامج cpجيدًا في اكتشاف ما إذا كان الملف متفرقًا، لذلك
cp sparse-file new-file
يُنشئ ملفًا جديدًا، سيكون مُجزأً. كما يوفر نظام GNU --sparseخيارًا [ 4 ] مفيدًا بشكل خاص إذا تم حفظ ملف يحتوي على كتل أصفار طويلة بطريقة غير مُجزأة (أي تم كتابة كتل الأصفار بالكامل على وسائط التخزين). يمكن توفير مساحة التخزين عن طريق:
cp --sparse=always file1 file1_sparsed
بعض تطبيقات cp، مثل cp في FreeBSD ، لا تدعم هذا --sparseالخيار، وستقوم دائمًا بتوسيع الملفات المتفرقة. يُعد استخدام rsync--sparse مع خياره الخاص [ 5 ] بديلاً مناسبًا جزئيًا على هذه الأنظمة بدلاً من cp. لسوء الحظ، لا تدعم الإصدارات القديمة من rsync --sparseهذا الخيار عند دمجه مع --inplace. [ 6 ] [ 7 ] [ 8 ]
يتم تحقيق نسخ الملفات المتفرقة عبر المدخلات القياسية على النحو التالي:
cp --sparse = always /dev/fd/0 new-sparse-file < somefile انظر أيضاً
مراجع
- ↑ جيامباولو، دومينيك (1999). تصميم نظام الملفات العملي باستخدام نظام ملفات Be (ملف PDF) . دار نشر مورغان كوفمان . رقم ISBN 9781558604971.
- ↑ "دليل نظام ملفات أبل" . موقع مطوري أبل . شركة أبل . تم الاطلاع عليه بتاريخ 27 أبريل 2017 .
- ^ "دو (1) – صفحة دليل Linux" .
- ↑ مايرينغ، جيم (21-12-1995). "GNU coreutils/cp: قبول خيار جديد، --sparse={never,auto,always}، للتحكم في إنشاء الملفات المتفرقة" . تم الاسترجاع في 17-06-2016 .
- ↑ ترايجيل، أندرو (29-06-1996). "rsync: روابط صلبة، معالجة أفضل للبيانات المتفرقة، FERROR وFINFO" . تم الاطلاع عليه بتاريخ 17-06-2016 .
- ↑ ترايجيل، أندرو (30-06-2016). "صفحة دليل rsync" . تم الاسترجاع في 19-01-2017 .
- ↑ دافيسون، واين (30 أغسطس 2005). "rsync: رفض محاولات دمج --sparse مع --inplace" . تم الاسترجاع في 19 يناير 2017 .
- ↑ دافيسون، واين. "دعم --sparse مع --preallocate أو --inplace" . جيت هاب .
روابط خارجية
- ملفات NTFS المتفرقة للمبرمجين
- إنشاء ملفات متفرقة في نظام التشغيل Windows Server باستخدام أداة fsutil
- إنشاء ملفات متفرقة في نظام سولاريس باستخدام الأمر mkfile(1M)
- عرض حجم الملف المتفرق للقطة قاعدة البيانات
- SEEK_HOLE أو FIEMAP: اكتشاف الثغرات في الملفات المتفرقة
- يُعد virtsync حلاً تجارياً لمشكلة
--sparsersync--inplace. - SparseChecker – أداة مساعدة تتيح إدارة الملفات المتفرقة على نظام ملفات NTFS
- فانتوم – برنامج لتحويل الملفات إلى ملفات متفرقة لتقليل استهلاك مساحة التخزين
- ويكي ArchLinux: ملف متفرق
- ملفات الكمبيوتر
