Skip to content
VDS · সমস্যা সমাধান

ডিস্ক স্পেস শেষ

ডিস্ক কী খাচ্ছে দ্রুত কীভাবে খুঁজবেন, নিরাপদে গিগাবাইট খালি করবেন এবং সতর্কতা বুঝবেন: ডিলিট করা খোলা ফাইল ও নিঃশেষিত inode।

আপডেট: ২৩ আগস্ট, ২০২৬

ডিস্ক সম্পূর্ণ ভরে গেলে একসাথে সবকিছু ভেঙে পড়ে: ডেটাবেস লেখা নেওয়া বন্ধ করে দেয়, সাইট এরর দেখায়, journalctl কাজ করতে অস্বীকার করে, আর কখনও কখনও SSH-ও আপনাকে ঢুকতে দেয় না, কারণ সেশন লগে লেখার মতো কিছুই আর অবশিষ্ট থাকে না। আপনাকে দ্রুত এবং ধারাবাহিকভাবে কাজ করতে হবে।

পরীক্ষা করুন

df -h
df -i

প্রথম কমান্ডটি স্পেস দেখায়, দ্বিতীয়টি আইনোড। আইনোড ভরে গেলে গিগাবাইট খালি থাকা সত্ত্বেও একই "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

জার্নাল স্থায়ীভাবে সীমিত করতে /etc/systemd/journald.conf সম্পাদনা করুন (SystemMaxUse=300M); বিস্তারিত জানতে systemd journals নিবন্ধটি দেখুন। অ্যাপ্লিকেশন ফাইলের জন্য logrotate সেট আপ করুন: রোটেশন ছাড়া একটি app.log সহজেই কয়েক ডজন গিগাবাইট পর্যন্ত বেড়ে যেতে পারে।

ফাঁদ: মুছে ফেলা কিন্তু এখনও খোলা ফাইল

আপনি একটি বিশাল লগ মুছে ফেললেন, কিন্তু df একই সংখ্যা দেখাচ্ছে। যতক্ষণ কোনো প্রসেস ফাইলটি খোলা রাখে, ততক্ষণ স্পেস ফেরত আসে না।

lsof +L1 | head -20

সঠিক সমাধান হলো ফাইলটি ধরে রাখা সার্ভিসটি রিস্টার্ট করা (systemctl restart nginx), অথবা ফাইলটি না মুছে ট্রাঙ্কেট করা:

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

ফাঁদ: আইনোড শেষ

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 থেকে এলোমেলোভাবে ফাইল মুছবেন না: ডেটাবেস ডেটা ও সিস্টেম প্যাকেজ এখানেই থাকে। প্রথমে বুঝে নিন একটি ডিরেক্টরি কীসের, তারপরই এটি পরিষ্কার করুন।