Skip to content
VDS · مسائل کا حل

ڈسک کی جگہ ختم ہو گئی

ڈسک کھا کون رہا ہے یہ تیزی سے کیسے تلاش کریں، محفوظ طریقے سے گیگا بائٹس کیسے خالی کریں، اور خطرات کو کیسے سمجھیں: حذف شدہ کھلی فائلیں اور ختم شدہ inodes۔

اپ ڈیٹ 23 اگست، 2026

مکمل ڈسک ایک ہی وقت میں سب کچھ توڑ دیتی ہے: ڈیٹا بیس لکھنا بند کر دیتا ہے، سائٹ ایرر دینے لگتی ہے، journalctl کام کرنے سے انکار کر دیتا ہے، اور بعض اوقات SSH بھی آپ کو اندر آنے نہیں دیتا، کیونکہ سیشن لاگ لکھنے کے لیے کچھ بچا ہی نہیں ہوتا۔ آپ کو تیزی سے اور ترتیب سے کام کرنا ہوگا۔

چیک کریں

df -h
df -i

پہلا کمانڈ جگہ دکھاتا ہے، دوسرا inodes دکھاتا ہے۔ بھرے ہوئے inodes گيگا بائٹس خالی ہونے کے باوجود وہی "No space left on device" ایرر دیتے ہیں: یہ اس وقت ہوتا ہے جب کسی ڈائریکٹری میں لاکھوں چھوٹی فائلیں جمع ہو جائیں (PHP سیشنز، کیش، کیوز)۔

آپ پینل میں /hosting/vds/m/<id> پر بھی استعمال شدہ جگہ دیکھ سکتے ہیں — "Overview" ٹیب پر موجود رنگ۔ یہ qemu-guest-agent کی رپورٹ کردہ ڈیٹا سے بھرا جاتا ہے؛ اگر ایجنٹ ہٹا دیا گیا ہو تو رنگ خالی رہتا ہے اور پینل اس کی بجائے انسٹال کمانڈ دکھاتا ہے۔

قصوروار تلاش کریں

du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15
du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -15
ncdu -x /                     # apt install ncdu, interactive
find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null

-x فلیگ تلاش کو ایک ہی فائل سسٹم تک محدود رکھتا ہے اور اسے /proc اور ماؤنٹ شدہ ڈائریکٹریوں میں بھٹکنے سے روکتا ہے۔

عام مجرم: /var/log میں لاگز، /var/cache میں پیکیج کیش، /var/lib/docker میں Docker امیجز اور والیومز، ڈیٹا بیس ڈمپس، /root اور /tmp میں بھولے ہوئے آرکائیوز، پرانی ایپلیکیشن ریلیزز کی فائلیں۔

جگہ خالی کریں

journalctl --vacuum-size=200M
apt clean                                   # Debian, Ubuntu
dnf clean all                               # AlmaLinux, CentOS Stream
docker system prune -af --volumes           # careful: will remove unused volumes
find /tmp -type f -mtime +7 -delete

journal کو مستقل طور پر محدود کرنے کے لیے /etc/systemd/journald.conf میں ترمیم کریں (SystemMaxUse=300M)؛ تفصیلات کے لیے مضمون systemd journals دیکھیں۔ ایپلیکیشن فائلوں کے لیے logrotate سیٹ اپ کریں: روٹیشن کے بغیر، ایک app.log آسانی سے دسیوں گيگا بائٹس تک بڑھ سکتی ہے۔

جال: ڈیلیٹ شدہ مگر اب بھی کھلی فائل

آپ نے ایک بہت بڑا لاگ ڈیلیٹ کر دیا، لیکن df وہی نمبر دکھاتا ہے۔ جب تک کوئی پروسیس فائل کو کھلا رکھتا ہے، جگہ واپس نہیں ہوتی۔

lsof +L1 | head -20

درست حل یہ ہے کہ فائل رکھنے والی سروس کو ری اسٹارٹ کریں (systemctl restart nginx)، یا فائل کو ڈیلیٹ کیے بغیر خالی کریں:

: > /var/log/nginx/access.log

جال: inodes ختم ہو گئے

df -i
find /var/www -xdev -type d -printf '%h\n' | sort | uniq -c | sort -rn | head

ایسی ڈائریکٹری تلاش کریں جس میں لاکھوں فائلیں ہوں اور اسے حصوں میں صاف کریں تاکہ مشین ڈاؤن نہ ہو:

find /var/lib/php/sessions -type f -mtime +2 -delete

اگر بالکل جگہ نہ ہو

جب ڈسک 100% بھری ہو اور سسٹم بمشکل چل رہا ہو، پینل میں "Console" ٹیب کے ذریعے لاگ ان کریں، کم از کم ایک سو میگا بائٹس خالی کریں (journalctl --vacuum-size=50M تقریباً ہمیشہ کام کرتا ہے)، اور عام طور پر ٹربل شوٹنگ جاری رکھیں۔ واقعی برے کیس میں، rescue disk مدد کرے گا: مشین SystemRescue میں بوٹ ہوتی ہے، آپ کی ڈسک /dev/sda کے طور پر ظاہر ہوتی ہے، اور آپ اسے ماؤنٹ کر کے باہر سے صاف کرتے ہیں۔

دوبارہ ایسا نہ ہو، اس کے لیے

  • 85% کی حد پر الرٹ — Site downtime alerts دیکھیں۔
  • صرف سسٹم کے نہیں، تمام ایپلیکیشن لاگز روٹیٹ کریں۔
  • ڈیٹا بیس ڈمپس اور آرکائیوز کو فوراً سرور سے باہر بھیجیں، بجائے انہیں /root میں رکھنے کے۔
  • اگر صاف کرنے کے لیے کچھ نہ بچا اور آپ کا ڈیٹا بڑھتا جا رہا ہے، تو بڑی ڈسک والے ٹیئر پر جائیں: 40، 80، 120، 160، 200 اور 250 GB۔ صرف اپ گریڈ: ڈسکیں چھوٹی نہیں کی جا سکتیں، اور ڈاؤن گریڈ دستیاب نہیں۔

/var/lib اور /usr سے بے ترتیب فائلیں ڈیلیٹ نہ کریں: ڈیٹا بیس کا ڈیٹا اور سسٹم پیکیجز وہیں رہتے ہیں۔ پہلے معلوم کریں کہ کوئی ڈائریکٹری کس کی ہے، اور تب ہی اسے صاف کریں۔