كيف يعمل
تُحسب وحدات التخزين بطريقتين مختلفتين، وكلتاهما صحيحة. النظام العشري، وهو الذي يستخدمه مصنّعو الأقراص والنظام الدولي للوحدات، يضرب في 1000 عند كل بادئة: الكيلوبايت 1000 بايت، والميغابايت مليون، والتيرابايت تريليون. أما النظام الثنائي، الذي وُلد مع الحواسيب، فيضرب في 1024، لأن الذاكرة والنواقل تُعنون بقوى العدد اثنين.
المشكلة أن النظامين استخدما الأسماء نفسها طوال عقود. فحين يكتب مستكشف ويندوز "GB" فهو في الحقيقة يحسب غيبي بايت، أي يقسم على 1024 ثلاث مرات. لهذا يظهر قرص سعته 1 تيرابايت، ويحتوي فعليًا على تريليون بايت، على الشاشة بـ 931.32 غيغابايت: لا شيء ناقص، بل تغيّرت المسطرة التي يُقاس بها. ومنذ عام 1998 يحسم المعيار IEC 80000-13 هذا الالتباس بالبادئات الثنائية KiB وMiB وGiB وTiB.
تحوّل هذه الأداة أي سعة إلى العائلات الثلاث في آن واحد —العشرية والثنائية والبتات— وتعرض عدد البايتات الدقيق، والرقم الذي يعلنه المصنّع، والرقم الذي سيعرضه نظام التشغيل، مع نسبة الفرق بينهما. تجري كل الحسابات داخل المتصفح.
أمثلة
1 TB931,32 GBيحتوي القرص على 1,000,000,000,000 بايت، أي تمامًا ما تعد به العلبة. يقسمها النظام ثلاث مرات على 1024 ويعرض 931.32 غيغابايت، وهي بدقة 931.32 غيبي بايت. على الشاشة يبدو أن نحو 69 غيغابايت ناقصة؛ وعلى القرص لا ينقص بايت واحد.1 GiB1073741824 Bالغيبي بايت يساوي 2^30 بايت. أما الغيغابايت العشري فيساوي 1,000,000,000، أي إن الثنائي أكبر بنسبة 7.37 %. وهو الفرق نفسه بين ما تقصده حين تطلب "غيغا" وما يفهمه كل برنامج.4 TB3,64 TiBكلما كبرت البادئة ازداد تباعد النظامين: 2.34 % عند الكيلو، و6.87 % عند الغيغا، و9.05 % عند التيرا. لذلك يزداد الإحساس بأن "القرص صغير" مع الأقراص الكبيرة تحديدًا.100 Mbit12,5 MBتُقاس وصلات الشبكة بالبتات ويُقاس التخزين بالبايتات. وصلة بسرعة 100 ميغابت/ثانية تنزّل 12.5 ميغابايت في الثانية على الأكثر، لأن كل بايت يساوي 8 بتات. هذه العملية الحسابية وحدها تفسّر نصف الشكاوى المرفوعة على مزوّدي الإنترنت.حالات الاستخدام
- فهم سبب ظهور قرص سعته 1 تيرابايت أو ذاكرة USB سعتها 64 غيغابايت بسعة أقل مما هو مكتوب على العلبة.
- ترجمة الحجم بالبايت الذي تعيده واجهة برمجية أو سجل أو الأمر ls -l إلى صيغة مقروءة.
- مقارنة حجم نسخة احتياطية أو صورة قرص بين أداتين تقيسان بمسطرتين مختلفتين.
- تحديد الحصص والوحدات التخزينية وحدود الرفع حين تتحدث الوثائق بالـ MiB وتتحدث الواجهة بالـ MB.
- تحويل سرعة الوصلة من ميغابت/ثانية إلى سرعة التنزيل الفعلية بالميغابايت/ثانية.
- أن تشرح لعميل بالأرقام أن القرص الذي اشتراه لا يحتوي على مساحة أقل مما وُعد به.
الأسئلة الشائعة
اشتريت قرصًا سعته 1 تيرابايت وأرى 931 غيغابايت، هل جرى الاحتيال عليّ؟
لا. يحتوي القرص على 1,000,000,000,000 بايت، وهذا بالضبط معنى 1 تيرابايت في النظام العشري الذي يستخدمه كل المصنّعين. يأخذ ويندوز البايتات نفسها ويقسمها على 1024 ثلاث مرات فيحصل على 931.32، لكنه يسمّي النتيجة "GB" بدل "GiB". إنها مشكلة لافتة لا مشكلة سعة: كل البايتات موجودة. أما ما يُفقد فعلًا، وهو أمر منفصل، فهو ما يحجزه نظام الملفات عند التهيئة.
ما الفرق بين GB وGiB؟
الـ GB يساوي 1,000,000,000 بايت (10^9) والـ GiB يساوي 1,073,741,824 (2^30). أي إن الغيبي بايت أكبر بنسبة 7.37 %. والنسبة نفسها تتكرر في كل مستوى: kB مقابل KiB، وMB مقابل MiB، وTB مقابل TiB. تحمل الرموز الثنائية حرف "i" في وسطها وتُلفظ كيبي وميبي وغيبي وتيبي.
هل تعرض جميع أنظمة التشغيل الرقم نفسه؟
لا، وهنا يزداد الالتباس. ويندوز يحسب بقوى 1024 لكنه يكتب GB وTB، فيعرض 931 غيغابايت لقرص سعته 1 تيرابايت. أما macOS فيقيس عشريًا منذ عام 2009، لذا يظهر القرص نفسه بسعة 1 تيرابايت. وفي لينكس يعتمد الأمر على الأداة: df -h وls -lh تستخدمان 1024، وdf -H وls -l --si تستخدمان 1000، وكثير من الأدوات صارت تكتب GiB حين يقتضي الأمر. القرص لم يتغير قط؛ الذي تغيّر هو من يقيسه.
لماذا تتطابق ذاكرة RAM مع ما هو مكتوب على العلبة؟
لأن الذاكرة تُصنع وتُعنون بقوى العدد اثنين: وحدة "16 غيغابايت" تحتوي في الحقيقة على 16 غيبي بايت، أي 17,179,869,184 بايت. وبما أن نظام التشغيل يعدّ بدوره بالثنائي، يتطابق الرقمان ولا يلاحظ أحد شيئًا. أما مع الأقراص فيحدث العكس: المصنّع يعدّ عشريًا والنظام يعدّ ثنائيًا، فيبرز الفرق للعيان.
كم يكبر الفرق بحسب البادئة؟
يتراكم بنسبة 2.4 % في كل مستوى. الرقم الذي يعرضه النظام أصغر بنسبة 2.34 % عند الكيلو، و4.63 % عند الميغا، و6.87 % عند الغيغا، و9.05 % عند التيرا، و11.18 % عند البيتا، و13.26 % عند الإكسا. لذلك لا يُلاحظ الفرق في ملف بضعة كيلوبايتات، بينما يمثّل في مصفوفة بعدة بيتابايتات مئات التيرابايتات من التوقعات.
هل الميغابت هو نفسه الميغابايت؟
لا، والفرق ثمانية أضعاف. تُقاس وصلات الشبكة بالبت في الثانية ويُقاس التخزين بالبايت، والبايت يساوي 8 بتات. وصلة بسرعة 300 ميغابت/ثانية تعطي 37.5 ميغابايت/ثانية على الأكثر عند التنزيل، قبل خصم ترويسات البروتوكولات. كما أن بادئات الشبكة عشرية دائمًا: الميغابت مليون بت، وليس 1,048,576 أبدًا.
لماذا تنقص مساحة قرص SSD أكثر من ذلك؟
يُضاف إلى الفرق بين العشري والثنائي أمران. الأول هو الحجز الزائد (over-provisioning): يحتفظ المتحكّم بجزء من ذاكرة الفلاش لا يمكن استخدامه، ليستبدل به الكتل المستهلكة ويسرّع الكتابة. والثاني هو نظام الملفات، الذي يستهلك مساحة في الجداول والسجل والبيانات الوصفية بمجرد التهيئة. وليس أي منهما عيبًا: إنهما ثمن أن يعمل القرص ويدوم.
إذن، أي وحدة يُستحسن استخدامها عند كتابة التوثيق؟
الوحدة التي لا تترك مجالًا للشك. إن كانت القيمة تُحسب بقوى 1024 فاكتب MiB أو GiB، وإن كانت تُحسب بقوى 1000 فاكتب MB أو GB. وفي أي واجهة برمجية أو ملف إعدادات يبقى الأكثر أمانًا أن تعرض عدد البايتات مباشرة وتدع الواجهة تختار طريقة عرضه. إنه سطر برمجي واحد يوفّر ساعات من الجدل حول سبب اختلاف الأرقام بين أداتين للملف نفسه.