امتلاء المساحة أو الوصول إلى حد الـ inodes: كيف تحرر مساحة على cPanel وعلى VPS

امتلاء المساحة أو الوصول إلى حد الـ inodes: كيف تحرر مساحة على cPanel وعلى VPS

لتحرير المساحة عند امتلائها أو عند الوصول إلى حد الـ inodes، حدد أولًا ما يستهلك المساحة أو عدد الملفات. على cPanel استخدم Disk Usage وEmail Disk Usage. وعلى VPS استخدم df -h وdf -i وdu. بعد ذلك احذف أكبر العناصر المستهلكة أو أرشفها. وغالبًا ما تكون: النسخ الاحتياطية القديمة، وملفات السجلات الضخمة، ومجلد المهملات في صناديق البريد، وملفات الكاش والجلسات، وبقايا Docker، والأنوية (kernels) القديمة، والسجلات الثنائية (binary logs) الخاصة بـ MySQL. يغطي هذا الشرح الاستضافة المشتركة على cPanel، وكذلك VPS أو السيرفرات المخصصة التي تعمل بنظام Ubuntu 22.04/24.04.

المتطلبات

  • بيانات الدخول إلى cPanel، وإمكانية الوصول إلى Terminal (cPanel » Advanced » Terminal) أو SSH إذا كانت باقتك تتضمنه.
  • بالنسبة إلى VPS: وصول عبر SSH بصلاحيات root أو بمستخدم لديه صلاحيات sudo.
  • نسخة احتياطية حديثة، أو نسخة من أي ملف لست متأكدًا منه قبل حذفه.

1. كيف أعرف أن المشكلة في المساحة أم في الـ inodes؟

من الأعراض المعتادة:

  • فشل رفع الملفات.
  • تعذر تحديث WordPress.
  • ارتداد الرسائل الواردة مع رسالة "mailbox full" أو "quota exceeded".
  • ظهور أخطاء من MySQL مثل Errcode: 28 - No space left on device.
  • ظهور خطأ 500 في الموقع أو توقفه تمامًا.

الـ inode يمثل ملفًا واحدًا أو مجلدًا واحدًا. قد تنفد الـ inodes لديك مع وجود مساحة فارغة كبيرة، وغالبًا يكون السبب ملايين الملفات الصغيرة الخاصة بالكاش أو الجلسات أو البريد. على cPanel، قارن بين Disk Usage وFile Usage في الشريط الجانبي Statistics بالصفحة الرئيسية لـ cPanel. وعلى VPS، افحص الاثنين:

df -h     # space per filesystem
df -i     # inodes per filesystem

2. كيف أحرر مساحة في cPanel؟

ابحث عن المجلدات الكبيرة

افتح cPanel » Files » Disk Usage. يعرض الجدول كل مجلد في المستوى الأعلى وحجمه. اضغط على أي مجلد لاستعراض محتوياته بالتفصيل في File Manager. انتبه لهذه العناصر الشائعة التي تستهلك المساحة:

  • ملفات باسم backup-*.tar.gz في المجلد الرئيسي (home directory).
  • نسخ Softaculous الاحتياطية القديمة في softaculous_backups.
  • ملفات ZIP متبقية.

نزّل أي شيء تريد الاحتفاظ به، ثم احذفه من السيرفر.

نظّف صناديق البريد

اذهب إلى cPanel » Email » Email Disk Usage واختر صندوق البريد. يمكنك حذف الرسائل وفق معايير محددة، مثل كل ما في Trash أو Spam، أو الرسائل الأقدم من عدد أيام تختاره. تُعد مجلدات Sent وTrash الكبيرة من أكثر أسباب امتلاء الحساب شيوعًا.

احذف ملفات error_log الضخمة والكاش

يكتب PHP ملف error_log داخل كل مجلد يحدث فيه خطأ. من Terminal، اعرض الملفات الكبيرة منها ثم أفرغها:

find ~ -name error_log -size +5M -exec ls -lh {} \;
find ~ -name error_log -size +5M -exec truncate -s 0 {} \;

إفراغ هذه الملفات لا يصلح الأخطاء المسببة لها. اقرأ آخر الأسطر أولًا (tail -50 error_log) وأصلح المشكلة الأساسية، وإلا ستكبر الملفات من جديد.

لمسح الكاش:

  • بالنسبة إلى LiteSpeed Cache، استخدم Purge All من الإضافة داخل WordPress.
  • بالنسبة إلى إضافات الكاش الأخرى، استخدم زر "مسح الكاش" الخاص بكل منها. ويمكنك أيضًا حذف محتويات مجلدات مثل wp-content/cache، لكن دون حذف المجلد نفسه.

اعرف أين تُستهلك الـ inodes

نفّذ هذا الأمر لمعرفة المجلدات التي تحتوي على أكبر عدد من الملفات:

du --inodes -d 1 ~ 2>/dev/null | sort -n | tail -15

كرر الأمر داخل أكبر مجلد حتى تصل إلى السبب. والمتهمون المعتادون هم:

  • جلسات PHP القديمة في ~/tmp.
  • مجلدات الكاش.
  • المجلد ~/mail.

لحذف ملفات الجلسات الأقدم من 7 أيام:

find ~/tmp -type f -name 'sess_*' -mtime +7 -delete

3. كيف أحرر مساحة على VPS؟

حدد أكبر المجلدات

ابدأ من جذر نظام الملفات، ثم كرر الأمر داخل أكبر نتيجة (غالبًا /var):

sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15
sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -15

قلّص سجل systemd (journal) وكاش الحزم

تتحقق هذه الأوامر من حجم الـ journal، وتقلصه إلى 200 MB، وتمسح الحزم التي تم تنزيلها. ويحذف الأمر الأخير الحزم غير المستخدمة، بما فيها الأنوية القديمة.

sudo journalctl --disk-usage
sudo journalctl --vacuum-size=200M
sudo apt clean
sudo apt autoremove --purge

يحتفظ apt autoremove بالنواة العاملة حاليًا ونواة احتياطية واحدة. إذا لم تكن متأكدًا، اعرف النواة العاملة بالأمر uname -r.

ابحث عن ملفات السجلات الكبيرة وأفرغها

sudo find /var/log -type f -size +100M -exec ls -lh {} \;
sudo truncate -s 0 /var/log/nginx/access.log

استخدم truncate بدلًا من rm مع أي سجل لا تزال إحدى الخدمات تكتب فيه. فحذفه لا يحرر المساحة حتى تُعاد تشغيل الخدمة.

نظّف Docker

يعرض الأمر الأول المساحة التي يستهلكها Docker. ويحذف الثاني الحاويات المتوقفة، والشبكات غير المستخدمة، والصور المعلقة (dangling images)، وكاش البناء. أما الثالث فيحذف أيضًا كل الصور التي لا تستخدمها أي حاوية.

docker system df
docker system prune
docker image prune -a
تحذير: لا تضف --volumes إلا إذا كنت تعرف بالضبط ما يحتويه كل volume. على سيرفر استضافة n8n، يحتوي الـ volume على مسارات العمل (workflows) وبيانات الاعتماد وسجل التنفيذ. وحذفه أثناء توقف الحاوية يمحو كل ذلك نهائيًا.

قد تكبر سجلات الحاويات في /var/lib/docker/containers/ أيضًا بلا حدود. لوضع حد لها، أضف ما يلي إلى /etc/docker/daemon.json، ثم نفّذ sudo systemctl restart docker. ينطبق هذا الحد فقط على الحاويات التي تُنشأ بعد التعديل.

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}

احذف السجلات الثنائية لـ MySQL

يحتفظ MySQL 8 افتراضيًا بالسجلات الثنائية (binlog.000123) لمدة 30 يومًا، وقد تملأ /var/lib/mysql. لا تحذف هذه الملفات أبدًا باستخدام rm. احذفها من داخل MySQL بدلًا من ذلك:

sudo mysql -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;"

للاحتفاظ بسجلات آخر 3 أيام فقط من الآن فصاعدًا، اضبط binlog_expire_logs_seconds = 259200 تحت [mysqld] في الملف /etc/mysql/mysql.conf.d/mysqld.cnf، ثم أعد تشغيل MySQL. إذا كنت تستخدم النسخ المتماثل (replication)، فتأكد من أن كل نسخة تابعة (replica) قرأت السجلات بالفعل قبل حذفها.

4. هل أحذف الملفات أم أؤرشفها؟

يمكنك حذف الكاش والجلسات والسجلات المُدوَّرة (rotated logs) وكاش الحزم بأمان، لأنها تُعاد إنشاؤها تلقائيًا. أما ما قد تحتاجه لاحقًا، مثل النسخ القديمة من المواقع، وتفريغات قواعد البيانات (dumps)، ومجلدات المشاريع، فأرشفه: اضغطه، وانسخه خارج السيرفر، ثم احذف الأصل.

أولًا، على السيرفر، أنشئ الأرشيف:

tar -czf old-site-2024.tar.gz old-site/

بعد ذلك، على جهازك الشخصي، انسخ الأرشيف من السيرفر:

scp root@203.0.113.10:/root/old-site-2024.tar.gz .

وأخيرًا، بعد التأكد من اكتمال النسخ، احذف الأصل من السيرفر:

rm -rf old-site/ old-site-2024.tar.gz

تأكد من أن الأرشيف يُفتح على جهازك قبل حذف الأصل. وإذا كانت المساحة ممتلئة تمامًا، فقد لا يجد tar مكانًا للكتابة. في هذه الحالة، حرر قليلًا من المساحة أولًا، مثلًا باستخدام journalctl --vacuum-size.

5. كيف أمنع امتلاء المساحة مرة أخرى؟

على VPS، فعّل تدوير سجلات تطبيقاتك باستخدام logrotate. أنشئ الملف /etc/logrotate.d/myapp بالمحتوى التالي:

/var/www/myapp/logs/*.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
    copytruncate
}

اختبر الإعدادات بالأمر sudo logrotate -d /etc/logrotate.d/myapp.

للتنظيف الدوري، استخدم cPanel » Advanced » Cron Jobs على الاستضافة المشتركة، أو crontab -e على VPS. على سبيل المثال، تحذف هذه المهمة الجلسات القديمة كل ليلة:

0 3 * * * find $HOME/tmp -type f -name 'sess_*' -mtime +7 -delete

وأخيرًا، اضبط تنبيهًا يخبرك بالمشكلة عند 85% بدلًا من 100%. تحتوي مكتبة الشروحات على شروحات لمراقبة السيرفرات وتنبيهات المساحة. وإذا كان استهلاكك يزداد باستمرار لأسباب مشروعة، فأنت بحاجة إلى VPS أو باقة استضافة أكبر. تتم ترقية الباقات عن طريق فتح تذكرة دعم.

تحقق من النتيجة

  • نفّذ df -h وdf -i مرة أخرى. يجب أن يكون الاستهلاك أقل بكثير من 90%.
  • على cPanel، أعد تحميل الصفحة الرئيسية وتحقق من أرقام Disk Usage وFile Usage. قد يستغرق تحديثها بضع دقائق.
  • ارفع ملفًا تجريبيًا.
  • أرسل رسالة إلى صندوق البريد الذي كانت رسائله ترتد.
  • تأكد من أن الموقع وMySQL يستجيبان: sudo systemctl status mysql.

مشكلات شائعة

حذفت ملفًا كبيرًا لكن df لا يزال يُظهر أن المساحة ممتلئة. هناك عملية قيد التشغيل لا تزال تفتح الملف. اعرض الملفات المحذوفة التي لا تزال مفتوحة بالأمر sudo lsof +L1، ثم أعد تشغيل الخدمة الظاهرة، مثلًا sudo systemctl restart nginx. وإذا لزم الأمر، ثبّت الأداة أولًا بالأمر sudo apt install lsof.

توجد مساحة فارغة لكن تظهر لي رسالة "No space left on device". لقد نفدت الـ inodes لديك. تأكد من ذلك بالأمر df -i، ثم استخدم du --inodes -d 1 للعثور على المجلد الذي يحتوي على ملايين الملفات الصغيرة. وعادةً ما تكون جلسات أو كاش أو طابور بريد.

لا تزال الرسائل ترتد بعد تحرير مساحة الحساب. لكل صندوق بريد حصة (quota) خاصة به أيضًا. ارفعها من cPanel » Email » Email Accounts » Manage بتغيير المساحة المخصصة.

MySQL لا يعمل، أو لا أستطيع الدخول عبر SSH. حرر قدرًا صغيرًا من المساحة أولًا، مثلًا باستخدام journalctl --vacuum-size=100M أو بإفراغ أحد السجلات الكبيرة، ثم شغّل MySQL. وإذا تعذر الوصول إلى السيرفر تمامًا، افتح تذكرة دعم واطلب وضع الإنقاذ (rescue mode).

الأسئلة الشائعة

هل تُحتسب نسخ JetBackup الاحتياطية ضمن حصة المساحة في cPanel؟

لا. تُخزَّن نقاط الاستعادة الخاصة بـ JetBackup على مساحة نسخ احتياطي منفصلة. أما ملفات النسخ الاحتياطية التي تنشئها بنفسك داخل المجلد الرئيسي، مثل backup-*.tar.gz، فتُحتسب.

هل تنفيذ docker system prune آمن على سيرفر n8n الخاص بي؟

نعم، طالما أن حاوية n8n تعمل ولم تضف --volumes. فمسارات العمل الخاصة بك محفوظة في volume، والأمر prune العادي لا يمس الـ volumes.

ما الفرق بين المساحة والـ inodes؟

المساحة تقيس عدد البايتات التي تخزنها، بينما تحسب الـ inodes عدد الملفات والمجلدات لديك. والوصول إلى أي من الحدين قد يوقف موقعك.

تحتاج إلى مساعدة؟ إذا لم تستطع معرفة ما يملأ المساحة لديك، أو كنت تحتاج إلى وضع الإنقاذ أو ترقية الباقة، افتح تذكرة دعم من منطقة العملاء وأرفق ناتج الأمرين df -h وdf -i.

هل كانت المقالة مفيدة ؟

0 أعضاء وجدوا هذه المقالة مفيدة

مقالات مشابهة

تم حظر عنوان IP الخاص بي بواسطة الجدار الناري للسيرفر: كيف أرفع الحظر؟ (CSF/LFD وFail2Ban)

إذا انتهت مهلة الاتصال بموقعك وcPanel وSSH والبريد الإلكتروني جميعًا من اتصال إنترنت معيّن بينما...

لا تستطيع تسجيل الدخول إلى cPanel أو منطقة العملاء؟ إعادة تعيين كلمة المرور والمصادقة الثنائية وحالات الحظر

تستخدم Cloudesta حسابين منفصلين لتسجيل الدخول. منطقة العملاء على cloudesta.com/login (البريد...

البريد الإلكتروني لا يُرسل أو لا يستقبل: قائمة خطوات لاستكشاف المشكلة وإصلاحها

لإصلاح مشكلة البريد الإلكتروني الذي لا يُرسل الرسائل أو لا يستقبلها، ابدأ بتسجيل الدخول إلى بريد...

"You Are About to Reach the Connection Limit" وأخطاء حدود الموارد الأخرى في CloudLinux

رسالة "You are about to reach the connection limit" هي تحذير من CloudLinux على الاستضافة...

تم اختراق موقعي: ماذا أفعل خطوة بخطوة (تنظيف البرمجيات الخبيثة وImunify360)

إذا تم اختراق موقعك، فاتبع هذا الترتيب: أولًا امنع المهاجم من الدخول بتغيير جميع كلمات المرور. ثم...

Powered by WHMCompleteSolution