FALLOCATE(1) أوامر المستخدم FALLOCATE(1)

الاسم

fallocate - يخصص مسبقاً أو يلغي تخصيص مساحة لملف

موجز

fallocate [-c|-p|-z|-w] [-o إزاحة] -l طول [-n] اسم_الملف

fallocate -d [-o إزاحة] [-l طول] اسم_ملف

fallocate -r [-o إزاحة] اسم_الملف

fallocate -x [-o إزاحة] -l طول اسم الملف

الوصف

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

حالة الخروج التي يرجعها fallocate هي 0 عند النجاح و 1 عند الفشل.

الخيارات

قد تتبع معاملات طول و إزاحة لواحق مضاعفة مثل KiB (=1024) و MiB (=1024*1024) وهكذا لـ GiB و TiB و PiB و EiB و ZiB و YiB (اللاحقة "iB" اختيارية، مثلاً "K" لها نفس معنى "KiB") أو اللواحق KB (=1000) و MB (=1000*1000) وهكذا لـ GB و TB و PB و EB و ZB و YB.

الخيارات --collapse-range و --dig-holes و --report-holes و --punch-hole و --zero-range و --write-zeroes و --posix مانعة لبعضها تبادلياً.

-c، --collapse-range

يزيل نطاق بايتات من ملف، دون ترك فجوة. يبدأ نطاق البايتات المراد طيه عند إزاحة ويستمر لعدد طول من البايتات. عند تمام العملية، ستُلحق محتويات الملف التي تبدأ من الموقع إزاحة+طول في الموقع إزاحة، وسيصغر حجم الملف بمقدار طول بايت. لا يجوز تحديد الخيار --keep-size لعملية طي النطاق (collapse-range).

متاح منذ لينكس 3.15 لـ ext4 (فقط للملفات القائمة على المدى extent-based) و XFS.

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

-d، --dig-holes

اكتشاف وحفر الفجوات. هذا يجعل الملف متفرقًا في مكانه، دون استخدام مساحة قرص إضافية. يعتمد الحد الأدنى لحجم الفجوة على حجم كتلة الإدخال/الإخراج لنظام الملفات (عادةً 4096 بايت). وأيضًا، عند استخدام هذا الخيار، يكون --keep-size ضمنيًا. إذا لم يُحدد نطاق بواسطة --offset و --length، فسيُحلل الملف بالكامل بحثًا عن الفجوات.

يمكنك التفكير في هذا الخيار كأنه ينفذ "cp --sparse" ثم يعيد تسمية الملف الوجهة إلى الملف الأصلي، دون الحاجة لمساحة قرص إضافية.

انظر --punch-hole لقائمة بأنظمة الملفات المتاحة.

-r، --report-holes

افحص الملف وأبلغ عن توزيع الفجوات دون تعديله. يظهر نوعان من الفجوات: فجوات الملفات - وهي كتل لم يخصصها نظام الملفات (يتم الإبلاغ عنها بواسطة SEEK_HOLE)؛ وفجوات البيانات - وهي نطاقات داخل الملف مملوءة منطقياً ببايتات صفرية ولكنها لا تزال تشغل مساحة على القرص.

لكل فجوة، تُطبع الإزاحة والنهاية والحجم بالبايت في النمط المسهب، يليه ملخص يعطي الحجم الإجمالي والنسبة المئوية للملف التي يمثلها كل نوع من الفجوات مبدئياً. إذا لم تُحدد إزاحة باستخدام --offset، فسيُفحص الملف بالكامل.

هذا الخيار للقراءة فقط ويمكن استخدامه على أي ملف لتقدير مقدار المساحة التي يمكن استعادتها بواسطة --dig-holes.

انظر --punch-hole لقائمة بأنظمة الملفات المتاحة.

-i، --insert-range

أدرج فجوة بطول طول بايت بدءاً من الإزاحة إزاحة، مع إزاحة البيانات الموجودة.

Supported for XFS (since Linux 4.1) and ext4 (since Linux 4.2).

-l، --length الطول

يحدد طول النطاق بالبايت.

-n، --keep-size

لا تُعدّل الطول الظاهري للملف. قد يؤدي هذا فعلياً إلى تخصيص كتل تتجاوز نهاية الملف (EOF)، والتي يمكن إزالتها بعملية تقليم (truncate).

-o، --offset الإزاحة

يحدد إزاحة بداية النطاق بالبايت.

-p، --punch-hole

يُلغي تخصيص المساحة (أي ينشئ فجوة) في نطاق البايتات الذي يبدأ من إزاحة ويمتد لمسافة طول بايت. ضمن النطاق المحدد، تُصفّر كتل نظام الملفات الجزئية، وتُزال كتل نظام الملفات الكاملة من الملف. بعد نجاح الاستدعاء، ستعيد القراءات اللاحقة من هذا النطاق أصفاراً. لا يجوز تحديد هذا الخيار في نفس وقت استخدام الخيار --zero-range. أيضاً، عند استخدام هذا الخيار، يُفهم ضمنياً استخدام الخيار --keep-size.

متاح في XFS (منذ لينكس 2.6.38)، و ext4 (منذ لينكس 3.0)، و Btrfs (منذ لينكس 3.7)، و tmpfs (منذ لينكس 3.5) و gfs2 (منذ لينكس 4.16).

-v، --verbose

فَعّل الوضع المسهب.

-w، --write-zeroes

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

يتم التصفير داخل نظام الملفات. قد يستخدم نظام الملفات أمراً تصفيرياً مسرعاً بالعتاد أو قد يرسل كتابات عادية. يعتمد السلوك على تصميم نظام الملفات والعتاد المتاح.

لا يمكن تحديد الخيار --keep-size لعملية كتابة الأصفار (write-zeroes) لأن تخصيص كتل مكتوبة تتجاوز حجم العقدة المفهرسة (inode) غير مسموح به.

-x، --posix

فَعّل وضع التشغيل POSIX. في هذا الوضع، تكتمل عملية التخصيص دائماً، ولكنها قد تستغرق وقتاً أطول عندما يكون التخصيص السريع غير متاح من نظام ملفات الأساس.

-z، --zero-range

يُصفّر المساحة في نطاق البايتات الذي يبدأ من إزاحة ويمتد لمسافة طول بايت. ضمن النطاق المحدد، تُخصص الكتل مسبقاً للمناطق التي تغطي الفجوات في الملف. بعد نجاح الاستدعاء، ستعيد القراءات اللاحقة من هذا النطاق أصفاراً.

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

يمكن تحديد الخيار --keep-size لمنع تعديل طول الملف.

متاح منذ لينكس 3.14 لـ ext4 (فقط للملفات القائمة على الامتدادات/extent-based) و XFS.

-h، --help

اعرض نص المساعدة ثم اخرج.

-V، --version

اعرض الإصدار واخرج.

المؤلفين

Eric Sandeen <sandeen@redhat.com>، Karel Zak <kzak@redhat.com>

انظر أيضاً

truncate(1)، fallocate(2)، posix_fallocate(3)

التبليغ عن الأخطاء

لتقارير العِلل، استخدم مُتتبع المشكلات https://github.com/util-linux/util-linux/issues.

التوفر

الأمر fallocate جزء من حزمة util-linux التي يمكن تنزيلها من أرشيف نواة لينكس https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1