"No space left on device" dukker aldrig op på et godt tidspunkt. Databasen holder op med at tage imod skrivninger, apt kan ikke gøre en opgradering færdig, og Docker nægter at hente præcis det image, du skal bruge lige nu. Den gode nyhed: på en lille VPS er synderen næsten altid én af fem ting, og du finder den på to minutter.
1. Hvor slemt er det?
df -h /
df -i /
Første linje viser brugt plads. Den anden viser inodes — hvis inodes rammer 100 %, mens pladsen ser fin ud, har du millioner af bittesmå filer (sessionsfiler, en mailkø, en cachemappe). Andet problem, samme symptom.
2. Find det, der fylder
Gå træet igennem fra toppen og sortér efter størrelse:
du -xh / --max-depth=1 2>/dev/null | sort -h | tail -15
-x holder sig til ét filsystem, så den ikke farer vild i /proc. Bor dig derefter ned i det største. Til interaktiv browsing er ncdu meget rarere:
apt install -y ncdu
ncdu -x /
Piletaster til at navigere, d til at slette. Vær forsigtig med den sidste.
3. De hurtige gevinster
Disse er sikre på enhver Ubuntu- eller Debian-server:
apt clean
apt autoremove --purge -y
journalctl --disk-usage
journalctl --vacuum-size=200M
apt autoremove rydder også gamle kerner. Systemd-journalen er den, der overrasker folk — overladt til sig selv kan den vokse til flere gigabyte. Sæt en fast grænse med SystemMaxUse=200M i /etc/systemd/journald.conf og kør systemctl restart systemd-journald.
4. Docker-rester
Kører du Docker, så kig her først. Gamle images og build-cache hober sig op ved hver deploy:
docker system df
docker image prune -a
docker builder prune
docker image prune -a sletter images, som ingen kørende container bruger. Det er som regel det, du vil, men næste deploy henter dem igen.
Den farlige er docker system prune -a --volumes. Volumes indeholder dine data, og en volume knyttet til en stoppet container tæller som ubrugt. Det er sådan, folk mister databaser. Kopiér den ikke fra et forumsvar.
Den anden skjulte pladssluger er containerlogs. Begræns dem i /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
Genstart Docker bagefter. Grænsen gælder kun containere, der oprettes derefter, så genopret de støjende med docker compose up -d --force-recreate.
5. Logfiler og glemte filer
Find store filer hvor som helst på disken:
find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/null
find /var/log -type f -size +100M -exec ls -lh {} + 2>/dev/null
De sædvanlige fund: en backup.tar.gz fra for et halvt år siden i /root, et databasedump som nogen ville downloade, en applikationslog der aldrig bliver roteret.
En log, som en tjeneste stadig skriver til, skal du ikke fjerne med rm — tøm den:
truncate -s 0 /var/log/myapp/app.log
Har du allerede slettet en, og pladsen kom ikke tilbage, holder en proces den stadig åben:
lsof +L1
Genstart tjenesten, der står på listen, så kommer pladsen tilbage.
Når oprydning ikke er nok
Nogle gange er dataene simpelthen ægte — en voksende database, brugeruploads, en modelfil. Så er den ærlige løsning mere disk. En opgradering af planen gør disken større på stedet og beholder alt: Nano har 15 GB, Micro 25 GB, Small 35 GB, Medium 45 GB. Serveren genstarter én gang. Detaljerne står i dokumentationen om planer.
Endnu en ting, der stille æder plads: en swapfil. Har du fulgt vores swap-guide, er de 1–2 GB sat af med vilje. Og er Docker den største forbruger, viser guiden til at installere Docker og guiden til Compose-stakke, hvordan du holder styr på dine images.
Vanen, der forhindrer alt dette: begræns journalen og Docker-logs fra dag ét. To linjer konfiguration, og "fuld disk" holder stort set op med at ske.
Kommentarer
Ingen kommentarer endnu. Vær den første.