−25%

kwa Windows ya mwaka, hadi 31 Okt. Tazama mipango

EQVPS
Anza

Jinsi ya kupata nafasi ya diski kwenye VPS bila kuharibu chochote

Diski ya VPS imejaa? Tafuta kinachochukua nafasi kwa du na ncdu, kisha safisha cache ya apt, journal, mabaki ya Docker na logi bila kupoteza data.

"No space left on device" huwa haiji wakati unaofaa. Database inaacha kupokea maandishi, apt haiwezi kumaliza sasisho, na Docker inakataa kupakua image ile hasa unayoihitaji sasa hivi. Habari njema: kwenye VPS ndogo, mhusika karibu kila mara ni mojawapo ya mambo matano, na utampata ndani ya dakika mbili.

1. Hali ni mbaya kiasi gani?

df -h /
df -i /

Mstari wa kwanza unaonyesha nafasi iliyotumika. Wa pili unaonyesha inode — kama inode zimefika 100% huku nafasi ikionekana sawa, una mamilioni ya faili ndogo sana (faili za session, foleni ya barua, folda ya cache). Tatizo tofauti, dalili ileile.

2. Tafuta kilicho kikubwa

Pitia mti kuanzia juu na upange kwa ukubwa:

du -xh / --max-depth=1 2>/dev/null | sort -h | tail -15

-x inabaki kwenye mfumo mmoja wa faili, kwa hiyo haipotei ndani ya /proc. Kisha ingia ndani ya kilicho kikubwa zaidi. Kwa kuvinjari kwa mwingiliano, ncdu ni rahisi zaidi:

apt install -y ncdu
ncdu -x /

Vitufe vya mishale kusogea, d kufuta. Kuwa mwangalifu na hicho cha mwisho.

3. Ushindi wa haraka

Hizi ni salama kwenye seva yoyote ya Ubuntu au Debian:

apt clean
apt autoremove --purge -y
journalctl --disk-usage
journalctl --vacuum-size=200M

apt autoremove pia huondoa kernel za zamani. Journal ya systemd ndiyo huwashangaza watu — ukiiacha tu inaweza kukua hadi gigabytes kadhaa. Ili kuiwekea kikomo cha kudumu, weka SystemMaxUse=200M ndani ya /etc/systemd/journald.conf kisha endesha systemctl restart systemd-journald.

4. Mabaki ya Docker

Kama unatumia Docker, angalia hapa kwanza. Image za zamani na build cache hurundikana kila deploy:

docker system df
docker image prune -a
docker builder prune

docker image prune -a hufuta image ambazo hakuna container inayoendesha inayozitumia. Mara nyingi hicho ndicho unachotaka, lakini deploy inayofuata itazipakua tena.

Hatari ni docker system prune -a --volumes. Volume zina data yako, na volume iliyounganishwa na container iliyosimamishwa inahesabiwa kuwa haitumiki. Hivi ndivyo watu hupoteza database. Usiibandike kutoka kwenye jibu la jukwaa.

Mlaji mwingine wa nafasi aliyejificha ni logi za container. Ziwekee kikomo ndani ya /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}

Baada ya hapo anzisha upya Docker. Kikomo kinatumika tu kwa container zinazoundwa baadaye, kwa hiyo unda upya zile zenye logi nyingi kwa docker compose up -d --force-recreate.

5. Logi na faili zilizosahaulika

Tafuta faili kubwa popote kwenye diski:

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

Vitu vinavyopatikana mara kwa mara: backup.tar.gz ya miezi sita iliyopita ndani ya /root, dump ya database ambayo mtu alikusudia kuipakua, logi ya programu ambayo haizungushwi kamwe.

Logi ambayo huduma bado inaiandikia usiifute kwa rm — iache tupu:

truncate -s 0 /var/log/myapp/app.log

Kama tayari umefuta moja na nafasi haikurudi, kuna process ambayo bado imeishikilia wazi:

lsof +L1

Anzisha upya huduma iliyoorodheshwa hapo na nafasi itarudi.

Usafishaji usipotosha

Wakati mwingine data ni halisi tu — database inayokua, faili zilizopakiwa na watumiaji, faili la model. Hapo suluhisho la kweli ni diski zaidi. Kupandisha mpango kunapanua diski palepale na kuhifadhi kila kitu: Nano ina 15 GB, Micro 25 GB, Small 35 GB, Medium 45 GB. Seva inaanzishwa upya mara moja. Maelezo yako kwenye nyaraka za mipango.

Kitu kingine kinachokula nafasi kimyakimya: faili la swap. Kama ulifuata mwongozo wetu wa swap, hizo 1–2 GB zimetengwa makusudi. Na kama Docker ndiye mtumiaji mkuu, mwongozo wa kusakinisha Docker na mwongozo wa Compose stack vinaonyesha jinsi ya kudhibiti image.

Tabia inayozuia yote haya: weka kikomo kwenye journal na logi za Docker siku ya kwanza kabisa. Mistari miwili ya mipangilio, na "diski imejaa" karibu inaacha kutokea.

Maswali

Je, ni salama kuendesha 'docker system prune -a'?

Inafuta container zilizosimamishwa, mitandao isiyotumika, build cache isiyo na mwenyewe na kila image isiyotumiwa na container inayoendesha. Data yako inabaki, isipokuwa uongeze --volumes. Ukiongeza --volumes, volume zisizotumika nazo zinafutwa — na volume ya container ya database iliyosimamishwa inahesabiwa kuwa haitumiki. Kama huna uhakika, usitumie flag hiyo.

Nimefuta faili kubwa la logi lakini df bado inaonyesha diski imejaa. Kwa nini?

Process inayoendesha bado imeshikilia faili hilo wazi, kwa hiyo kernel haiachilii nafasi. Itafute kwa 'lsof +L1' kisha anzisha upya huduma hiyo. Wakati ujao, safisha logi inayotumika kwa 'truncate -s 0 file' badala ya kuifuta.

Niache nafasi wazi kiasi gani?

Angalau 10–15%. Database, masasisho ya packages na upakuaji wa Docker vinahitaji nafasi ya muda, na diski iliyojaa 100% inaweza kuharibu database katikati ya kuandika.

Naweza kuongeza diski bila kusakinisha upya?

Ndiyo. Kupandisha hadi mpango mkubwa zaidi kunapanua diski palepale na kuhifadhi data yako — Nano ina 15 GB, Micro 25 GB, Small 35 GB, Medium 45 GB. Upandishaji unaanzisha upya seva mara moja.

Kwa kawaida ni nini hujaza VPS ndogo?

Kwa uzoefu wetu: image na build cache za Docker, journal ya systemd, logi za programu ambazo hakuna anayezizungusha, na dump za database au kumbukumbu za backup zilizosahaulika ndani ya /root.

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.