Vraag Schijf vol, du vertelt anders. Hoe verder te onderzoeken?


Ik heb een SCSI-schijf in een server (hardware Raid 1), 32 G, ext3 filesytem. df vertelt me ​​dat de schijf 100% vol is. Als ik 1G verwijder, wordt dit correct weergegeven.

Echter, als ik een du -h -x / dan du vertelt me ​​dat er maar 12G wordt gebruikt (gebruik ik -x vanwege sommige Samba-mounts).

Dus mijn vraag gaat niet over subtiele verschillen tussen de commando's du en df, maar over hoe ik kan achterhalen wat dit enorme verschil veroorzaakt?

Ik startte de machine opnieuw op voor een fsck die foutmeldingen vertoonde. Moet ik vluchten badblocks? lsof laat me geen open verwijderde bestanden zien, lost+found is leeg en er is geen overduidelijke waarschuwing / fout / fout in het berichtenbestand.

Aarzel niet om verdere details van de installatie te vragen.


89
2018-05-30 12:29


oorsprong


Dit is heel dicht bij de vraag: linux - du vs. df difference (serverfault.com/questions/57098/du-vs-df-difference). De oplossing was bestanden onder een aankoppelpunt toen OldTroll antwoordde. - Chris Ting


antwoorden:


Controleer op bestanden die zich bevinden onder koppelpunten. Vaak als je een map (bijvoorbeeld een sambafs) op een bestandssysteem koppelt dat al een bestand of mappen daaronder had, verlies je de mogelijkheid om die bestanden te zien, maar ze verbruiken nog steeds ruimte op de onderliggende schijf. Ik heb bestandskopieën gehad terwijl ik in de enkele gebruikersmodus bestanden dumpte naar mappen die ik niet kon zien, behalve in een gebruikersmodule (vanwege andere directory-systemen die daarbovenop werden gemount).


87
2018-05-30 12:35



U kunt deze verborgen bestanden vinden zonder mappen te hoeven ontkoppelen. Bekijk het antwoord van Marcel G hieronder, waarin wordt uitgelegd hoe. - mhsekhavat
U moet de CLI-opdrachten weergeven om dit in uw antwoord te doen - Jonathan
DOE CONTROLE, ook als je denkt dat het niet logisch voor je is! - Chris


Stuitte gewoon op deze pagina wanneer u een probleem op een lokale server probeert op te sporen.

In mijn geval de df -h en du -sh komt niet overeen met ongeveer 50% van de grootte van de harde schijf.

Dit werd veroorzaakt door apache (httpd) met behoud van grote logbestanden in het geheugen die van de schijf waren verwijderd.

Dit werd opgespoord door te rennen lsof | grep "/var" | grep deleted waar /var was de partitie die ik moest opruimen.

De uitvoer toonde lijnen als deze:
httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)

De situatie werd vervolgens opgelost door apache opnieuw te starten (service httpd restart) en wist 2 GB schijfruimte door de vergrendelingen op verwijderde bestanden te wissen.


71
2018-03-12 11:10



Voor mij werden de sloten niet vrijgegeven, zelfs nadat ik het programma stopte (zombies?). ik moest kill -9 'pid' om de sloten te lossen. Bijvoorbeeld: voor uw httpd zou het geweest zijn kill -9 32617. - Micka
Kleine opmerking: je moet misschien rennen lsof zoals sudo of niet alle geopende bestandsdescriptors verschijnen - ChrisWue
Ik kwam dit tegen met H2, dat elke dag verschillende optredens aan een logbestand toevoegde. In plaats van H2 (langzaam) opnieuw te starten, gebruikte ik sudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd). - Desty
In mijn geval zelfs bij herstarten httpd ruimte wordt niet vrijgegeven. Toen ik rende /etc/init.d/rsyslog restart het werkte: D - Thanh Nguyen Van
Je kunt de greps overslaan en gewoon doen lsof -a +L1 /var, waar -a betekent EN EN alle voorwaarden (standaard is OF), +L1 betekent alleen bestanden weergeven met koppelingen minder dan 1 (d.w.z. verwijderde bestanden met open bestandsbeschrijvingen), en /var beperkt tot bestanden onder dat koppelpunt - kbolino


Ik ben het eens met het antwoord van OldTroll als de meest waarschijnlijke oorzaak voor uw "ontbrekende" ruimte.

Op Linux kun je eenvoudig de hele rootpartitie (of een andere partitie) opnieuw koppelen naar een andere plaats in je bestandssysteem zeg bijvoorbeeld / mnt bijvoorbeeld, geef gewoon een

mount -o bind / /mnt

dan kan je a

du -h /mnt

en zie wat je ruimte opgebruikt.

Ps: sorry voor het toevoegen van een nieuw antwoord en geen commentaar, maar ik had wat opmaak nodig om dit bericht leesbaar te maken.


40
2018-05-30 13:54



Heel erg bedankt voor deze tip. Staat me toe mijn grote "verborgen" bestanden te vinden en te verwijderen zonder downtime! - choover
Bedankt - dit toonde aan dat dokwerker mijn harde schijf volstond met diff in /var/lib/docker/aufs/diff/ - naught101


Zie wat df -i zegt. Het kan zijn dat u geen inodes meer hebt, wat kan gebeuren als er een groot aantal kleine bestanden in dat bestandssysteem zijn, die alle beschikbare inodes gebruiken zonder alle beschikbare ruimte te verbruiken.


23
2018-05-30 14:10



De grootte van een bestand en de hoeveelheid ruimte op een bestandssysteem zijn twee afzonderlijke dingen. Hoe kleiner de bestanden zijn, hoe groter de discrepantie tussen deze bestanden. Als u een script schrijft dat de grootte van bestanden samenvat en vergelijkt met het du -s van dezelfde substructuur, krijgt u een goed idee als dat hier het geval is. - Marcin


In mijn geval had dit te maken met grote verwijderde bestanden. Het was nogal pijnlijk om op te lossen voordat ik deze pagina vond, wat me op het juiste pad bracht.

Uiteindelijk heb ik het probleem opgelost door het te gebruiken lsof | grep deleted, wat liet zien welk programma twee erg grote logbestanden bevat (in totaal 5GB van mijn beschikbare 8GB rootpartitie).


15
2017-11-14 18:15



Bij dit antwoord vraag ik me af waarom je logbestanden op de root-partitie opslaat, vooral die zo klein ... maar voor elk hun eigen, veronderstel ik ... - α CVn
Ik had een soortgelijk probleem, ik had alle applicaties opnieuw gestart die het verwijderde bestand gebruikten, ik vermoed dat er een zombie-proces was dat nog steeds vasthoudt aan een groot verwijderd bestand - user1965449
Dit was het geval voor ons, een log-verwerkende linux-app, bekend als filebeat bewaarde bestanden geopend. - Pykler


Bestanden die door een programma worden geopend, gaan niet echt weg (stoppen schijfruimte in beslag) wanneer u ze verwijdert; ze verdwijnen wanneer het programma ze sluit. Een programma kan een enorm tijdelijk bestand hebben dat u (en du) niet kunt zien. Als het een zombie-programma is, moet u mogelijk opnieuw opstarten om deze bestanden te wissen.


5
2018-05-30 12:51



OP zei dat hij het systeem opnieuw had opgestart en dat het probleem aanhield. - OldTroll
Ik had zombies die de sloten van de bestanden niet zouden vrijgeven, ik kill -9 'pid' om de sloten te ontgrendelen en de schijfruimte terug te krijgen. - Micka


Dit is de eenvoudigste methode die ik tot nu toe heb gevonden om grote bestanden te vinden!

Hier is een voorbeeld als je root-mount vol is / (mount / root) Voorbeeld:

cd / (dus je zit in root)

ls | xargs du-hs

Voorbeelduitvoer:

 9,4 miljoen bin
 63M boot
 4.0K cgroup
 680K dev
 31M enz
 6.3G thuis
 313M lib
 32M lib64
 16.000 verloren + gevonden
 61G media
 4.0K mnt
 113 miljoen opt
 du: kan geen toegang krijgen tot `proc / 6102 / task / 6102 / fd / 4 ': geen bestand of directory
 0 proc
 19M root
 840K run
 19M sbin
 4.0K selinux
 4.0K srv
 25G winkel
 26 miljoen tmp

dan zou je dat opmerken op te slaan is groot doen a cd / winkel

en ren opnieuw

ls | xargs du-hs

Voorbeelduitvoer:
 109M-back-up
 358M fnb
 4.0G iso
 8.0K ks
 16.000 verloren + gevonden
 47M root
 11M-scripts
 79M tmp
 21G vms

in dit geval is de map vms de space hog.


4
2018-06-26 13:05



Waarom geen eenvoudiger tools gebruiken zoals baobab? (zien marzocca.net/linux/baobab/baobab-getting-started.html) - Yvan
hm ls + xargs lijkt overdreven, du -sh /* werkt prima alleen - ChrisWue
als je niets weet over ncdu ... zul je me later bedanken: dev.yorhel.nl/ncdu - Troy Folger


Probeer dit om te zien of een dood / opgehangen proces is vergrendeld terwijl je nog steeds naar de schijf schrijft: lsof | grep "/ mnt"

Probeer dan alle PID's die vastzitten te doden (let vooral op regels die eindigen op "(verwijderd))


3
2018-06-26 10:38



Bedankt! Ik kon vinden dat het SFTP-serverproces het verwijderde dossier hield - lyomi