−25%

på Windows ved årlig betaling, til 31/10. Se pakkerne

EQVPS

Sådan frigør du diskplads på en VPS uden at ødelægge noget

Fuld disk på din VPS? Find ud af, hvad der fylder, med du og ncdu, og ryd apt-cache, journal, Docker-rester og logfiler uden at miste data.

"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.

FAQ

Er 'docker system prune -a' sikker at køre?

Den fjerner stoppede containere, ubrugte netværk, løs build-cache og alle images, som ingen kørende container bruger. Dine data bliver, medmindre du tilføjer --volumes. Med --volumes slettes også ubrugte volumes — og volumen fra en stoppet databasecontainer tæller som ubrugt. Spring det flag over, hvis du ikke er sikker.

Jeg slettede en stor logfil, men df viser stadig fuld disk. Hvorfor?

En kørende proces har stadig filen åben, så kernen holder på pladsen. Find den med 'lsof +L1' og genstart tjenesten. Næste gang tømmer du en aktiv log med 'truncate -s 0 fil' i stedet for at slette den.

Hvor meget ledig plads bør jeg beholde?

Mindst 10–15 %. Databaser, pakkeopdateringer og Docker-pulls har brug for midlertidig plads, og en disk på 100 % kan ødelægge en database midt i en skrivning.

Kan jeg få mere disk uden at geninstallere?

Ja. En opgradering til en større plan gør disken større på stedet og beholder dine data — Nano har 15 GB, Micro 25 GB, Small 35 GB, Medium 45 GB. Opgraderingen genstarter serveren én gang.

Hvad plejer at fylde en lille VPS?

Efter vores erfaring: Docker-images og build-cache, systemd-journalen, applikationslogfiler som ingen roterer, og glemte databasedumps eller backuparkiver i /root.

Kommentarer

Ingen kommentarer endnu. Vær den første.

Skriv en kommentar

Kommentarer modereres, før de vises.