صفحههای پلن RAM را جلو میگذارند، اما دیسک پر هم سرور را با همان قطعیت از کار میاندازد. با "No space left on device" پایگاههای داده نوشتن و سایتها پاسخ دادن را متوقف میکنند، هر قدر هم حافظه آزاد باشد. وقتی بدانید چه چیزی رشد میکند، پیشبینی مصرف دیسک آسان است. از ایمیجهای خودمان سرورهای تازه بالا آوردیم و تکتک مظنونان همیشگی را اندازه گرفتیم.
یک سرور تازه چقدر جا میگیرد
درست بعد از نخستین بوت اندازهگیری شد:
| سیستم | فضای اشغالشده |
|---|---|
| Alpine Linux 3.21 | 153 MB |
| Debian 12 | 1.2 GB |
| Ubuntu 24.04 | 2.7 GB |
| Windows Server 2022 | 14.0 GB |
روی Linux تقریباً همهٔ Nano با 15 GB از روز اول مال شماست. Windows پیش از آنکه چیزی نصب کنید بیش از یکچهارم 50 GB خود را میگیرد و همانطور که پایینتر میبینید، بهروزرسانیها بیشتر میبرند.
بخشی از 2.7 GB در Ubuntu بهراحتی برگشت. 440 MB کش بستهها از بهروزرسانیهای نخستین بوت بود و سه کرنل نصب بود، در حالی که فقط یکی استفاده میشود. دو فرمان مصرف را به 2.16 GB رساند:
sudo apt clean
sudo apt autoremove --purge
Docker: ایمیجها سریع روی هم جمع میشوند
نصب خود Docker حدود 300 MB اضافه کرد. آنچه تعیینکننده است ایمیجها هستند. هشت ایمیج رایج را یکی پس از دیگری کشیدیم و هر بار اندازه گرفتیم دیسک چقدر بزرگ شد:
| ایمیج | فضای اضافهشده |
|---|---|
nginx:alpine | 91 MB |
nginx:latest | 232 MB |
postgres:16 | 501 MB |
python:3.12-slim | 59 MB |
node:22 | 1,564 MB |
mariadb:11 | 437 MB |
wordpress:latest | 960 MB |
redis:7-alpine | 55 MB |
| مجموع | 3.9 GB |
ایمیجهایی که پایهٔ مشترک دارند لایههای آن را دوباره به کار میبرند؛ برای همین python:3.12-slim فقط 59 MB اضافه کرد، چون همان پایهٔ Debian را nginx:latest و postgres:16 از قبل آورده بودند. ایمیجهای مبتنی بر Alpine چند برابر کوچکتر از ایمیجهای کاملاند. node:22 بهتنهایی 1.5 GB حجم دارد، پس هر جا ممکن است روی node:22-slim یا node:22-alpine بسازید.
ایمیجها با بهروزرسانیها روی هم انباشته میشوند: هر docker compose pull نسخهٔ قدیمی را جا میگذارد. روی سرور آزمایشی ما یک فرمان همه را پاک کرد:
docker system df
docker system prune -a
گزارش داد 4.1 GB آزاد شد. prune -a هر ایمیجی را که هیچ کانتینری از آن استفاده نمیکند پاک میکند، پس آن را وقتی اجرا کنید که استک شما در حال کار است. به ولومها دست نمیزند، مگر اینکه --volumes را اضافه کنید.
لاگها: چیزی که دیسک را یکشبه پر میکند
Docker هر چیزی را که کانتینر چاپ کند نگه میدارد، و بهطور پیشفرض بدون سقف اندازه. کانتینری اجرا کردیم که در یک حلقه یک خط کوتاه چاپ میکرد؛ همان نوع خروجی که بررسی سلامت یا حالت دیباگ تولید میکند. بعد از 30 ثانیه فایل لاگش 6 MB بود. با این سرعت روزی حدود 17 GB مینوشت، بیشتر از کل دیسک پلن Micro.
برای همهٔ کانتینرهای جدید در /etc/docker/daemon.json سقف بگذارید:
{
"log-driver": "local",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
سپس sudo systemctl restart docker را اجرا کنید و کانتینرها را از نو بسازید (docker compose up -d --force-recreate). کانتینرهای موجود تنظیماتی را که با آن ساخته شدهاند نگه میدارند. با این سقف، لاگ همان کانتینر آزمایشی بعد از 30 ثانیه 4 MB بود و هرگز از 30 MB بیشتر نمیشود.
ژورنال سیستم از قبل سقف دارد: روی سرور Ubuntu ما با 25 GB، journald خودش را به 2.3 GB، یعنی یکدهم فایلسیستم، محدود میکند. 15 MB استفاده میکرد.
Windows: بهروزرسانیها جا میخواهند
ایمیج Windows Server 2022 ما مال سال 2022 بود، پس آن را بهروز کردیم. هنگام نصب نخستین بهروزرسانی تجمعی، مصرف از 12.6 به 20.8 GB رسید و بعد از دومی به 24.5 GB. Windows نسخهٔ قدیمی هر فایل سیستمی را که بهروزرسانی جایگزین میکند نگه میدارد. پاکسازی آن را به 14.6 GB برگرداند و سرور تازه از ایمیج بهروزشده اکنون با 14 GB شروع میشود. دستکم 10 GB را برای بهروزرسانی بعدی خالی نگه دارید. فرمانهای پاکسازی در راهنمای بهروزرسانی Windows آمده است.
چه انتخاب کنیم
| چه اجرا میکنید | دیسک راحت | پلن |
|---|---|---|
| ربات، VPN، سایت ایستای کوچک | 15 GB | Nano، $3 در ماه |
| استک Docker با چند ایمیج | 25 GB | Micro، $5 در ماه |
| WordPress با پایگاه داده و فایلهای آپلودی، چند استک | 35 GB | Small، $8 در ماه |
| پایگاههای دادهٔ بزرگ، ایمیجهای زیاد، پشتیبانهای محلی | 45 GB | Medium، $12 در ماه |
| Windows Server 2022 | 50–60 GB | Windows-Small، $11 در ماه |
دو قاعده هر کدام از آنها را ماندگارتر میکند: پیش از استقرار برای لاگ کانتینرها سقف بگذارید، و نسخههای پشتیبان را به بیرون از سرور کپی کنید، نه اینکه روی دیسک خودش بمانند. اگر سرور از قبل پر است، راهنمای ما برای آزاد کردن فضای دیسک قدمبهقدم همراهتان است. برای جنبهٔ حافظه در انتخاب اندازه، یک VPS چقدر RAM لازم دارد را ببینید. همهٔ پلنها در صفحهٔ VPS هستند و پرداخت با USDT، USDC یا ETH روی شبکههای Base، Ethereum یا Polygon انجام میشود.
نظرات
هنوز نظری نیست. اولین نفر باشید.