డిస్క్ స్పేస్ అయిపోయింది
డిస్క్ను ఏది తినేస్తోందో త్వరగా ఎలా కనుగొనాలి, గిగాబైట్లను సురక్షితంగా ఎలా ఖాళీ చేయాలి మరియు మెలికలను అర్థం చేసుకోవాలి: తొలగించిన ఓపెన్ ఫైల్లు మరియు అయిపోయిన inodes.
23 ఆగస్టు, 2026న నవీకరించబడింది
డిస్క్ నిండిపోతే అంతా ఒక్కసారే పనిచేయడం ఆపేస్తుంది: డేటాబేస్ రైట్లు స్వీకరించడం ఆపేస్తుంది, సైట్ ఎర్రర్లు ఇస్తుంది, 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నుండి ఫైల్లను యథాతథంగా తొలగించకండి: డేటాబేస్ డేటా మరియు సిస్టమ్ ప్యాకేజీలు అక్కడే ఉంటాయి. ముందుగా ఒక డైరెక్టరీ ఏదైనా తెలుసుకోండి, ఆ తర్వాతే దాన్ని శుభ్రం చేయండి.