سؤال كيف يمكن أن يكون حجم الملف على القرص 0 بايت عند وجود بيانات فيه؟


لدي ملف في نظام التشغيل Windows 10 مع 362 بايت من البيانات ، ولكن "الحجم على القرص" هو 0 بايت فقط. إنه برنامج "مرحبا العالم" بسيط مكتوب في التجمع ، وحفظ فيه المفكرة ++.

كيف يمكن أن يكون حجم القرص هو صفر عندما يكون حجم الملف 362 بايت؟

لدي SSD ، وليس قرص ثابت عادي.

لقطة شاشة لمربع الحوار "خصائص":

Screenshot of the Properties dialog


97
2018-01-24 23:00


الأصل


إجابة مختصرة: إذا لم تكن هناك حاجة لمساحة إضافية على القرص لتخزين محتوياته. - David Schwartz
Thomas ليست نسخة مكررة. الاسم يبدو متشابهًا ، لكن هذا السؤال يسأل لماذا يعلن Windows عن وجود ملف صفري البايت ليكون صفراً على الرغم من أنه يتطلب التسجيل في مكان ما. يسأل هذا السؤال لماذا يمكن أن يكون حجم القرص صفر حتى إذا كانت هناك بيانات في الملف. - Ben N
ذات صلة: كيف يمكن لملف كبير أن يكون له قيمة "حجم على القرص" صفر؟ - BlueRaja - Danny Pflughoeft
BenN هو وضع علامة غير مناسب لأنك على حق ، فمن المؤكد أنها ليست مكررة. - William
مرحبًا يا Coder88 ، أعتقد أن الشخص الذي نشر مشاركتك كمُكرر كان مخطئًا - السؤال الآخر كان يسأل شيئًا مختلفًا ؛ كنت حقا طرح سؤال جيد. إذا كنت تقصد الإشارة إلى أن سؤالك قد تم حله ، فيمكنك النقر فوق علامة الاختيار الموجودة بجوار إجابة هنا. - Ben N


الأجوبة:


يحدث هذا إذا كان الملف صغيرًا جدًا بحيث تتناسب محتوياته ومسك الدفاتر في نظام الملفات مع 1 كيلوبايت. لتوفير مساحة على القرص ، يحتفظ NTFS بالملفات الصغيرة "المقيمة" ، وتخزين محتوياتها في سجل الملف ، لذلك لا يجب تخصيص أي كتلة لها. لذلك ، يكون الحجم على القرص صفر لأن هناك شيء خارج سجل الملف. بمجرد أن يصبح الملف كبيرًا بما فيه الكفاية ، يجعله NTFS "غير مقيم" ، يخصص واحد أو أكثر من المجموعات له (إنشاء "حجم على القرص" غير صفري) ، ويخلق "زوج مناظرة" في سجل الملف في مكان البيانات إلى أشر إلى الكتلة.

لا تؤثر محركات الأقراص الثابتة SSD أو Windows 10 على هذا ؛ انها ببساطة ميزة NTFS. قراءة متعمقة: المراحل الأربع من نمو ملف NTFS.

لاحظ أن مقياس "الحجم على القرص" ليس صحيحًا تمامًا. على سبيل المثال ، لا تتضمن أبداً 1KB الثابت الذي يأخذه سجل ملف NTFS. تم تقديم المقياس في نظام التشغيل Windows 95 ، والذي لم يستخدم NTFS وبالتالي لا يمكن أن يكون مسؤولاً عن هذه الظاهرة ؛ أظهر فقط حجم الملف تقريبه إلى مضاعفات التالي حجم الكتلة. تم نقل خوارزمية التقدير هذه إلى Windows 7 ، على الرغم من استخدام العديد من إصدارات Windows بينها NTFS والتخزين المقيم. تم تحديثه أخيرا في Windows 8 لحساب الملفات مع البيانات المقيمة فقط على حجم صفر على القرص. قراءة متعمقة: فقط ما هو "الحجم على القرص"؟


150
2018-01-24 23:14



للحظة ظننا أننا ننظر إلى تأثيرات إلغاء البيانات المكررة (Data Deduplication)blog.fosketts.net/2012/01/03/...) ولكنني أعتقد أن هذه الميزة تعمل بمستوى شفاف إلى شيء مثل المقياس "الحجم على القرص". - misha256
ولكن انتظر ... أنا غير قادر على تكرار سلوك OPs على وحدة التخزين NTFS (Windows 7). بغض النظر عن كيف أقوم بإنشاء ملفات صغيرة (بعضها بطول واحد فقط) ، فإنها تشغل كل منها 4KB "مساحة القرص" وفقًا لمربع الحوار "خصائص الملف". هم ... - misha256
@ misha256 هاه ، يمكنني إعادة إنتاجه مع ملف تحت ~ 700 بايت على Windows 8.1. تخميني هو أن الخوارزمية أصبحت أكثر ذكاءً في مكان ما بين Windows 7 و 8.1 ، حيث أنها لم تكن تعرف في الأصل أي أشياء NTFS خيالية (مصدر). لاحظ أنه بمجرد انتقال الملف إلى المرحلة الثانية ، فلن يتراجع أبداً. - Ben N
أعتقد أنه يمكن للمرء أن يجادل في أي من الاتجاهين. تقليديا ، كان "ملف على القرص" هو "حجم المجموعات المخصصة" (لذلك ، على سبيل المثال ، يمكنك أن ترى آثار اختيار حجم الكتلة كبيرة جدا). لم تتضمن أبداً ، حسب علمي ، مساحة "الكتالوج" التي يحتاج إليها نظام الملفات (على سبيل المثال ، حجم "إدخال الدليل" أو "طول سلسلة إدخالات FAT"). - TripeHound
Philipp: على أي حال ، بما في ذلك مسك الدفاتر في حجم الملف يحصل على شعر سريع: كيف تصف ملف 1-cluster مع 3 أسماء؟ - Deduplicator