หน้าแพ็กเกจมักเน้น 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 เพราะ nginx:latest และ postgres:16 ดึงฐาน Debian ตัวเดียวกันมาแล้ว อิมเมจที่ใช้ Alpine เป็นฐานเล็กกว่าแบบเต็มหลายเท่า node:22 ตัวเดียวก็หนัก 1.5 GB ดังนั้นถ้าทำได้ ให้ build บน 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) คอนเทนเนอร์ที่มีอยู่แล้วจะคงการตั้งค่าตอนที่ถูกสร้าง เมื่อตั้งขีดจำกัด ล็อกของคอนเทนเนอร์ทดสอบตัวเดิมมีขนาด 4 MB หลัง 30 วินาที และจะไม่มีวันเกิน 30 MB
journal ของระบบมีเพดานอยู่แล้ว: บนเซิร์ฟเวอร์ 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
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ