{"id":1022,"date":"2026-08-22T23:19:18","date_gmt":"2026-08-22T23:19:18","guid":{"rendered":"https:\/\/affordablevpsserver.com\/blog\/?p=1022"},"modified":"2026-08-22T23:19:18","modified_gmt":"2026-08-22T23:19:18","slug":"budget-vps-disk-space-cleanup-avoid-upgrade","status":"publish","type":"post","link":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/","title":{"rendered":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u201cDisk full\u201d is the most common avoidable outage on a budget VPS, and it is almost never caused by your actual content. A 40GB plan holds hundreds of thousands of web pages \u2014 what fills it instead is a handful of silent consumers: logs, package caches, Docker layers, and backups stored on the same disk. Here is what eats your space, how to reclaim it in 20 minutes, and how to know when you genuinely need to pay for more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why a full disk is dangerous<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A full disk does not just make your site slow \u2014 writes start failing. The database cannot flush transactions, so you risk corruption; cron jobs fail silently; the mail queue backs up; and some services crash-loop, which fills the disk even faster with their own logs. It is a cascade, it snowballs, and it usually happens at 3 a.m. on the day you are traveling. The good news: on a budget plan, nearly all of it is preventable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What actually eats your disk<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Systemd journal \u2014 by default it can grow to 10% of the disk (4GB on a 40GB plan)<\/li><li>Web and app logs \u2014 Nginx access logs plus PHP-FPM logs typically add 100\u2013500MB per month<\/li><li>Docker images and build cache \u2014 easily 5\u201315GB if you rebuild frequently<\/li><li>Database binary logs \u2014 MySQL\/MariaDB binlogs accumulate 1\u20132GB before rotation<\/li><li>Package caches \u2014 apt and yum caches sit around 300\u2013800MB<\/li><li>Old kernels and core dumps \u2014 a few hundred MB to 2GB after major upgrades<\/li><li>Backups written to the same server \u2014 the single biggest mistake on budget plans<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The 20-minute cleanup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Work top-down: biggest consumers first, cheapest wins first. Each step takes seconds:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>See the damage: <code>df -h<\/code> for space and <code>df -i<\/code> for inodes \u2014 a full inode table breaks a server that still shows free space<\/li><li>Find the culprits: <code>du -h --max-depth=1 \/ 2&gt;\/dev\/null | sort -h<\/code>, or install <code>ncdu<\/code> for an interactive view<\/li><li>Cap the journal: <code>journalctl --vacuum-size=200M<\/code>, then set <code>SystemMaxUse=200M<\/code> in <code>\/etc\/systemd\/journald.conf<\/code> and restart journald<\/li><li>Rotate logs: confirm <code>logrotate<\/code> runs daily and keep 7 rotated Nginx\/PHP-FPM files instead of 52<\/li><li>Clear caches: <code>apt clean<\/code> (or <code>dnf clean all<\/code>), then <code>docker system prune -a<\/code> to drop unused images and build cache<\/li><li>Remove old kernels: <code>apt autoremove --purge<\/code> after a successful reboot<\/li><li>Trim binlogs: set <code>expire_logs_days=3<\/code> in your MySQL config (or <code>binlog_expire_logs_seconds<\/code>) and restart<\/li><li>Move backups off the box: rsync or Borg to a cheap object-storage bucket or a second small VPS<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The inode table deserves its own warning. Millions of tiny files \u2014 PHP session files, cache entries, mail spools \u2014 can exhaust the inode limit while <code>df -h<\/code> shows space to spare. Check <code>df -i<\/code> weekly, and keep an eye on any directory that accumulates small files. Deleting half a million cache entries is faster than explaining to a client why their site stopped accepting logins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Emergency: the disk is already full<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you are reading this while a site is down, stop the bleeding before the full cleanup:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Free the journal first: <code>journalctl --vacuum-size=100M<\/code> \u2014 instant, safe, and usually enough to get services writing again<\/li><li>Run <code>docker system prune<\/code> to drop unused images in one command<\/li><li>Truncate the largest rotated logs with <code>truncate -s 0 \/var\/log\/nginx\/*.log.1<\/code> rather than deleting them (running services keep deleted-file handles alive)<\/li><li>Delete the oldest backup copies that were written to the same disk \u2014 then move future backups offsite<\/li><li>Only then run the full 20-minute cleanup above so it stays fixed<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Keep it that way<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cleanup is a habit, not an event. A few one-time settings do the work for you \u2014 and if you are shopping for a plan with more headroom, the storage allowances in <a href=\"https:\/\/affordablevpsserver.com\/#providers\" target=\"_blank\" rel=\"noreferrer noopener\">our budget VPS comparison table<\/a> are a useful starting point:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A weekly cron job that alerts you (mail or a webhook) when <code>df<\/code> passes 70%<\/li><li>Logrotate with daily rotation and compression<\/li><li>A capped journald, re-checked after every OS upgrade<\/li><li>Offsite backups from day one \u2014 a full server backup on the same disk doubles your usage overnight<\/li><li>A quarterly <code>docker system prune<\/code> if you build images regularly<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Workload<\/th><th>Typical disk usage on a 40GB plan<\/th><\/tr><\/thead><tbody><tr><td>Single WordPress site<\/td><td>5\u201315GB with logs and cache<\/td><\/tr><tr><td>2\u20133 sites + mail<\/td><td>10\u201320GB<\/td><\/tr><tr><td>Docker host with several apps<\/td><td>10\u201325GB<\/td><\/tr><tr><td>Small production database<\/td><td>5\u201320GB depending on growth<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">When you actually need more disk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Upgrade only when the growth is real and structural: a database that grows every month, a user upload directory that keeps expanding, mail storage, or logs you must retain for compliance. Those deserve a paid storage bump. Everything else \u2014 caches, logs, old images \u2014 is reclaimable space, and reclaiming it beats paying $5\u2013$10\/month more forever. If you do need room to grow, <a href=\"http:\/\/www.tkqlhce.com\/click-101543633-12454592\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">Contabo<\/a> is known for large storage allocations at budget prices, and <a href=\"https:\/\/www.interserver.net\/vps?id=1067793\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">InterServer<\/a> lets you add disk to its flat-rate plans; both are in <a href=\"https:\/\/affordablevpsserver.com\/#providers\" target=\"_blank\" rel=\"noreferrer noopener\">our budget VPS comparison table<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The bottom line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before you pay for a bigger plan, spend 20 minutes reclaiming the space you already own. Cap the journal, rotate the logs, prune the images, and move backups offsite. For the vast majority of budget servers, that turns \u201cdisk full\u201d from a monthly emergency into a non-event \u2014 and keeps your $5 plan exactly where it is.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>\u201cDisk full\u201d is the most common avoidable outage on a budget VPS, and it is almost never caused by your actual content. A 40GB plan holds hundreds of thousands of web pages \u2014 what fills it instead is a handful of silent consumers: logs, package caches, Docker layers, and backups stored on the same disk. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1022","post","type-post","status-publish","format-standard","hentry","category-cost-optimization-tips"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up - Affordable VPS Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up\" \/>\n<meta property=\"og:description\" content=\"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up\" \/>\n<meta property=\"og:url\" content=\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/\" \/>\n<meta property=\"og:site_name\" content=\"Affordable VPS Server Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-22T23:19:18+00:00\" \/>\n<meta name=\"author\" content=\"Affordable-Vps-Server-Author\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Affordable-Vps-Server-Author\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/\",\"name\":\"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up - Affordable VPS Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\"},\"datePublished\":\"2026-08-22T23:19:18+00:00\",\"author\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\"},\"breadcrumb\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/affordablevpsserver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/\",\"name\":\"Affordable VPS Server Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\",\"name\":\"Affordable-Vps-Server-Author\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"caption\":\"Affordable-Vps-Server-Author\"},\"sameAs\":[\"https:\/\/affordablevpsserver.com\/blog\"],\"url\":\"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up - Affordable VPS Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/","og_locale":"en_US","og_type":"article","og_title":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up","og_description":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up","og_url":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/","og_site_name":"Affordable VPS Server Blog","article_published_time":"2026-08-22T23:19:18+00:00","author":"Affordable-Vps-Server-Author","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Affordable-Vps-Server-Author","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/","url":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/","name":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up - Affordable VPS Server Blog","isPartOf":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#website"},"datePublished":"2026-08-22T23:19:18+00:00","author":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7"},"breadcrumb":{"@id":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/affordablevpsserver.com\/blog\/budget-vps-disk-space-cleanup-avoid-upgrade\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/affordablevpsserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Budget VPS Disk Space: How to Keep a 40GB Plan From Filling Up"}]},{"@type":"WebSite","@id":"https:\/\/affordablevpsserver.com\/blog\/#website","url":"https:\/\/affordablevpsserver.com\/blog\/","name":"Affordable VPS Server Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7","name":"Affordable-Vps-Server-Author","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","caption":"Affordable-Vps-Server-Author"},"sameAs":["https:\/\/affordablevpsserver.com\/blog"],"url":"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/"}]}},"_links":{"self":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/comments?post=1022"}],"version-history":[{"count":4,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1022\/revisions"}],"predecessor-version":[{"id":1035,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1022\/revisions\/1035"}],"wp:attachment":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/media?parent=1022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/categories?post=1022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/tags?post=1022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}