Puncte:4

Lipsește aproximativ 900 GB de spațiu pe hard disk

drapel ae

Am o unitate WD M.2 de 2TB (1,8T) căreia pare să lipsească câteva sute de GB de spațiu de stocare, dar nu pot afla unde este sau ce o ocupă. Acest lucru s-a întâmplat și pe SSD-ul meu Samsung SATA, așa că nu cred că are nimic de-a face cu unitatea în sine. Aceasta este singura partiție de pe oricare dintre aceste unități.

df spune că folosesc 1,3 T de date

trever@server:~$ df -h
Filesystem Size Used Avail Use% Montat pe
udev 32G 0 32G 0% /dev
tmpfs 6.3G 5.7M 6.3G 1% /run
/dev/nvme0n1p2 1.8T 1.3T 477G 73% /

Disk Usage Analyzer (baobab) spune că folosesc ~850 GB de spațiu, ceea ce mi se pare mult mai precis pentru ceea ce mă aștept. Am rulat asta ca root (sudo baobab) și l-a pus să scaneze unitatea rădăcină / si cu asta m-am intors

introduceți descrierea imaginii aici

Și apoi monitorul de sistem spune, de asemenea, că folosesc 1.4T, ceea ce este în regulă, înțeleg că ar putea fi o oarecare rotunjire și/sau cum este calculat spațiul pe disc.

Utilizarea de 800-900 GB de stocare are mai mult sens pentru mine, am verificat lucruri precum spațiul rezervat:

trever@server:~$ sudo tune2fs -l /dev/sda1 | grep -i „număr de blocuri”
[sudo] parola pentru trever: 
Număr blocuri: 976754176
Număr de blocuri rezervate: 48837708

Am verificat si marimea /var/logs (20 GB) și /var/cache/apt/archives/ (380MB) și încă nu îmi dau seama unde lipsesc sute de GB.

Mai multe sugestii despre ce ar putea ocupa acest spațiu?

Actualizare: Din ce în ce mai mult spațiu pare să dispară în timp. Iată unde sunt acum:

trever@server:~$ df -h
Filesystem Size Used Avail Use% Montat pe
udev 32G 0 32G 0% /dev
tmpfs 6.3G 5.3M 6.3G 1% /run
/dev/nvme0n1p2 1.8T 1.6T 157G 92% /

Și iată ce pot explica:

root@server:~# du -cha --max-depth=1 --exclude=/Volumes/* / | grep -E "M|G"
42M /scripte
du: nu poate accesa „/proc/44457”: Nu există un astfel de fișier sau director
du: nu poate accesa „/proc/44535”: Nu există un astfel de fișier sau director
du: nu poate accesa „/proc/44586/task/44586/fd/4”: nu există un astfel de fișier sau director
du: nu poate accesa „/proc/44586/task/44586/fdinfo/4”: nu există un astfel de fișier sau director
du: nu poate accesa „/proc/44586/fd/3”: Nu există un astfel de fișier sau director
du: nu poate accesa „/proc/44586/fdinfo/3”: nu există un astfel de fișier sau director
94G /var
du: nu poate accesa „/run/user/1000/gvfs”: Permisiune refuzată
5,3 M / alergare
2.1G /swapfile
183M /porționare
14M /etc
538G /docker
202G /acasa
8.9G /usr
6.0G /snap
1.8G/rădăcină
852G /
852G total

am facut o fsck si pare bine. Nu sunt sigur ce îmi mănâncă magic spațiul, dar este destul de îngrijorător.

drapel in
Ce sistem de fișiere folosești pe SSD-ul tău? Dacă este ZFS, este posibil să aveți o grămadă de spațiu ocupat în instantanee
trever avatar
drapel ae
Ne pare rău, ar fi trebuit să menționez asta, folosesc EXT4.
drapel in
Mă întreb câte „fișiere minuscule” aveți, deoarece acest lucru ar putea lăsa un număr mare de blocuri în mare parte goale. Diferența dintre „dimensiunea fișierului” și „spațiul pe care îl folosește un fișier” nu este, în general, o problemă pe care oamenii o văd până când nu încep să lucreze cu dispozitive de stocare cu mai multe TB
drapel za
Cu prea mult timp în urmă pentru a-mi aminti detaliile exacte, am avut probleme similare cu versiunile anterioare 20.04, de trei ori. Odată a fost o problemă de partiție. Odată a fost un fișier ciudat. Odată nu a fost niciunul, și nu am găsit nicio soluție, nimeni care să ajute. Nu am rămas fără altă opțiune decât să efectuez o instalare nouă, manuală. Instalarea proaspătă a durat aproximativ 20 de minute și a rezolvat toate problemele. lol, oportunitatea are valoare.
oldfred avatar
drapel cn
Ai golit gunoiul? Curatenie? Unele instrumente arată totalurile cu și altele fără. Prefer instrumentele de linie de comandă precum df, du (sau ncdu) și lsblk și apoi gparted dacă folosesc GUI. Cum a obținut /var 85 GB? /varul meu în Kubuntu 20.04 este de 800 MB.
drapel cc
Verificați și ce se află sub orice punct de montare. Vedeți https://unix.stackexchange.com/questions/4426/access-to-original-contents-of-mount-point
nobody avatar
drapel gh
„găsește” te rog.
heynnema avatar
drapel ru
Unitatea are un tabel de partiții MBR (dos) sau GPT? Vezi `sudo fdisk -l`. Raportați înapoi. Începeți-mi comentariile cu @heynnema sau îmi vor lipsi.
trever avatar
drapel ae
@oldfred - da, am golit gunoiul și tot ce am găsit. `/var` este mare din cauza Docker, apare.
trever avatar
drapel ae
@nobody - https://gist.github.com/Treverr/79cfc04baac54db0a3dd1e97b1b03fe7
trever avatar
drapel ae
@heynnema - GPT (https://gist.github.com/Treverr/74b0bebf551e3b0cd187823fc08a995b)
Robert Riedl avatar
drapel us
folosești fișiere rare?
Satoshi Nakamoto avatar
drapel lc
Nu cred că lipsește nimic cu `df -h`, scrie că există 477G DISPONIBIL. Te referi la spațiu neobișnuit care ocupă SATA, poate este o problemă între producător și capacitatea Ubuntu de a gestiona acest driver. Cum era înainte?
trever avatar
drapel ae
@RobertRiedl Nu sunt pe această unitate
trever avatar
drapel ae
@Tyþë-à - Ceea ce văd este că spațiul UTILIZAT minus capacitatea unității (1.8T) nu se apropie de ceea ce raportează disponibilul. Are aproape 500 GB. Văd același lucru pe 2 unități diferite când am trecut de la o unitate SATA la unitatea NVMe M.2.
Satoshi Nakamoto avatar
drapel lc
Sigur, ai făcut o greșeală. Există două tipuri de date, MiB (megabibytes) și MB (megabytes), driverul dvs. nu va avea niciodată exact 1,8 TB din cauza acestei conversii.
Satoshi Nakamoto avatar
drapel lc
În plus, văd că /udev și tmpfs ocupă 38GB și însumează 477GB + 38GB = 515GB. Cred că ai primit răspunsul
ExploitFate avatar
drapel zm
Ați putea rula `fsck` și adăugați rezultat la întrebare?
trever avatar
drapel ae
@ExploitFate Am rulat `fsck` recent și sistemul de fișiere este în stare bună. O pot rula din nou. Dar acum `df` arată că am doar 25 GB disponibile și încă nu-mi dau seama de ce
trever avatar
drapel ae
Are cineva alte idei? Nimic nu sugerează că până acum a făcut ceva și acum am aproape 1 TB de spațiu lipsă. Ceva este în neregulă.
trever avatar
drapel ae
@SatoshiNakamoto nu sunt sigur că înțeleg ce vrei să spui. De exemplu, acum `du` adaugă până la 852G și `df` spune că a fost folosit 1.6T, asta este dublu, dar încă nu pot afla unde este 800GB.
Robert Riedl avatar
drapel us
Încă cred că acest lucru este într-un fel legat de modul în care docker gestionează fișierele..
trever avatar
drapel ae
Aveți idee cum aș putea testa această teorie / confirma-o? Opriți toate serviciile mele docker?
Puncte:2
drapel in

Ipoteza: fișiere șterse, dar încă deschise

Având în vedere informațiile furnizate până acum și sugerând prezența unui volum mare de fișiere legate de docker, aș bănui că acest lucru este cauzat de fișierele șterse, dar încă deschise, adică fișierele care sunt create de un program, apoi programul șterge calea sistemului de fișiere în timp ce descriptorul de fișier este încă deschis.

Acesta poate fi rezultatul activității Docker pe sistemul de fișiere.

Principiul soluției

  • Dezvăluie fișierele șterse care sunt încă referite de procese (vezi mai jos pentru o modalitate).
  • În mod ideal, dezvăluiți numele proceselor și/sau ID-ul, astfel încât să aveți indicii despre ceea ce se întâmplă.
  • Închideți acele procese, observați că spațiul este eliberat.
  • Dacă toate celelalte nu reușesc, pur și simplu reporniți mașina. Dacă spațiul este eliberat, acest lucru este în concordanță cu ipoteza.

Cum să dezvăluiți informațiile

Comenzile de mai jos vor testa ipoteza prin găsirea și afișarea spațiului folosit de ce fișier.

Prima privire

Pentru o privire de bază, puteți emite acest lucru:

lsof -n | egrep -w „șters|^COMANDĂ”

Dar aceasta va enumera și o mulțime de pseudo-fișiere doar în memorie care nu ocupă spațiu de stocare real.

Exemplu:

COMANDĂ PID TID TASKCMD UTILIZATOR TIP FD DIMENSIUNEA DISPOZITIV/OPRIT NUMELE NODULUI
Xorg 1183 root 78u REG 0,1 4 2058 /memfd:xshmfence (șters)
Xorg 1183 root 85u REG 0,1 4 7182 /memfd:xshmfence (șters)
Xorg 1183 root 92u REG 0,1 4 7137 /memfd:xshmfence (șters)
Xorg 1183 root 94u REG 0,1 4 7870 /memfd:xshmfence (șters)

Listă simplă filtrată

Aceasta filtrează și arată în mare parte fișiere reale:

lsof -F "sn" -lnPX -M | sed -n 's|^n/|/|p' | grep șters | egrep -v '^/(dev/shm|memfd:|proc)' | LC_ALL=C sortare -n | unic

Exemplu:

/tmp/#someinodenumber (șters)

Informații complete, cu dimensiunea, procesul și numele sarcinii

Acest lucru este mai interesant: va lista toate fișierele împreună cu spațiul pe care îl ocupă în octeți și nu numai.

În primul rând, partea lentă, adună date

# Poate doriți să rulați această parte ca root pentru a vă asigura că totul este raportat
lsof -F "ctsupMin" -lnPX -M >|/tmp/lfosoutput 

Apoi procesați și formatați pentru un afișaj frumos, complet și sortat prin creșterea dimensiunii

# Poate fi rulat ca utilizator obișnuit, nu este nevoie de root
{ echo "SIZE^UID^PID^PROCESS NAME^TASK NAME^INODE^PATH"
</tmp/lfosoutput \
python3 -c $'import sys ; f={}
def g(c): return f.get(c,"(necunoscut)")
pentru linia în sys.stdin:
 c=linie[0]; r=linie[1:].rstrip() ; f[c]=r
 dacă c=="n" și f["t"]=="REG" \
    și „(șters)” în f[”n”] \
    și nu f["n"].startswith("/memfd:") \
    și nu f["n"].startswith("/dev/shm"):
  print(f'\''{g("s")}^{g("u")}^{g("p")}^\"{g("c")}\"^\"{ g("M")}\"^{g("i")}^{g("n")}'\'')
  f={}' \
| LC_ALL=C sortare -n | unic
echo "SIZE^UID^PID^PROCESS NAME^TASK NAME^INODE^PATH"
} | coloana -t -s '^'

Exemplu de ieșire: un fișier de 36 de megaocteți utilizat de Firefox

DIMENSIUNE UID PID NUME PROCES NUME SARCINA INODE CALEA
36012032 1234 12345 „Isolated Web Co” „StyleThread#2” 1234567 /tmp/mozilla-temp-12345 (șters)
DIMENSIUNE UID PID NUME PROCES NUME SARCINA INODE CALEA

(De fapt, există multe linii ca acestea, aceasta este doar o linie de probă.)

Testarea dacă scriptul dezvăluie într-adevăr astfel de fișiere prin crearea unuia

Într-un alt terminal, copiați și lipiți asta:

# Rulați interpretul interactiv Python
python3
# Acum în Python
n="/tmp/whatever_file_name_you_want"
f=open(n,mode='a')
import os
os.unlink(n)
f.write(„o propoziție”)
f.flush()
# Nu ieși acum sau fișierul va dispărea cu adevărat

În primul terminal puteți rula ambii pași de mai sus (lsof lentă, apoi partea de formatare). Și atâta timp cât procesul python de mai sus este viu, această linie este raportată:

DIMENSIUNE UID PID NUME PROCES NUME SARCINA INODE CALEA
13 1000 1387343 „python3” „gdbus” 1308894 /tmp/whatever_file_name_you_want (șters)
DIMENSIUNE UID PID NUME PROCES NUME SARCINA INODE CALEA

Puteți apoi să părăsiți interpretul Python de mai sus (apăsați Control-D sau tip ieșire(0)). Dacă rulați ambele părți (lsof lentă apoi partea de formatare) veți observa că fișierul de test nu mai apare.

Scriptul de mai sus poate fi modificat pentru a scrie cantități uriașe de date (cum ar fi sute de gigaocteți) și folosind instrumentele obișnuite, veți vedea că spațiul este într-adevăr eliberat numai după ce procesul de creare a închis descriptorul fișierului. Încheierea procesului este suficientă pentru a vă asigura că descriptorul fișierului este închis.

Înapoi la cazul tău

Rulând acest lucru, cel mai probabil veți vedea nume de proces, nume de sarcini și fișiere. Fie câteva fișiere mari, cum ar fi imaginile pe care Docker le-a preluat din rețea, sau un număr mare de fișiere mici, din nou din Docker.

Sau altceva.

Vă rugăm să spuneți dacă acest lucru vă ajută.

Robert Riedl avatar
drapel us
O simplă repornire nu ar scăpa și de fișierele deschise care sunt efectiv șterse? sau se comportă diferit cu docker?
mike mcleod avatar
drapel cn
Primesc: **lsof: AVERTISMENT: nu pot stat() sistemul de fișiere nsfs /run/docker/netns/f91a371e0e9d**, așa că acest lucru nu oferă cu adevărat răspunsul. Dar pare o problemă de docker; încercați site-ul web docker. De asemenea, am fișiere în această stare.Trebuie să existe o modalitate de la Ubuntu, băieții de a șterge aceste fișiere?
mike mcleod avatar
drapel cn
Am găsit **/tmp/.org.chromium.Chromium.XXXXX** dar când am închis chrome a dispărut! Ai grijă!
trever avatar
drapel ae
Multumesc pentru toate informatiile! Așa că am rulat `lsof` și, în timp ce am primit o grămadă de `can't stat() nsfs file system``, am primit doar alte 2 fișiere reale: `/home/trever/.local/share/gvfs-metadata/root (șters)` și `/home/trever/.local/share/gvfs-metadata/root-5f2ee275.log (deleted)` ambele care sunt mici. V-ați aștepta să fie mai mulți sau credeți că problema docker-ului este de vină aici?
drapel in
`gvfs-metadata` nu are legătură. Mesajele `can't stat() nsfs file system` înseamnă într-adevăr că îți lipsesc informații. Ai făcut `lsof` ca root?
trever avatar
drapel ae
Ah, nu am făcut-o. Am reluat totul și iată ce am primit: https://gist.github.com/Treverr/98137ab1cdc754dcef1b7d6dad6c937c
trever avatar
drapel ae
@StéphaneGourichon Ai alte idei? Acum am aproape 1TB de spațiu lipsă. Ceva mănâncă „spațiul” ca un nebun
drapel in
Pe baza esenției pe care le-ați publicat, dimensiunea fișierelor șterse este destul de mică, așa că aș spune că ipoteza nu este confirmată. Vă puteți permite să opriți și să porniți serviciile Docker și să vedeți dacă recuperează spațiul? Pentru a reporni mașina și a vedea dacă recuperează spațiul? Ce sistem de fișiere este acesta (de exemplu, cat `/proc/mounts`) -- cf. comentariul lui matigo poate fi o altă cauză.
trever avatar
drapel ae
@StéphaneGourichon- Mulțumesc că mi-ai revenit! Așa că am încercat asta, am oprit și am dezactivat sistemul docker și am repornit și nu mi-a dat spațiu înapoi. Chiar am mers atât de departe pentru a dezinstala Docker în întregime și a reporni, același lucru. Iată ce am primit pentru `cat /proc/mounts`. Mulțumesc din nou! https://gist.github.com/Treverr/a250ebe9041b2939c873b1c167749b4f

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.