Top 3 manieren om de fout "No Space Left on Device" in Linux op te lossen

Fouten zonder duidelijke oorzaak zijn de meest irritante problemen om mee om te gaan. En hoewel Linux meestal specifiek is in zijn foutmeldingen, is dit een van de weinige keren dat het de bal laat vallen.

Het krijgen van een "Geen plaats meer op apparaatfout" verklaart heel weinig, vooral als uw schijf verre van vol is. Waarom wordt deze foutmelding weergegeven? Waarom kunt u geen nieuwe bestanden maken ondanks dat er voldoende ruimte op de schijf is? En vooral: hoe los je het op?

Laten we het uitzoeken.

Heeft uw harde schijf eigenlijk voldoende ruimte(Hard Drive Actually Have Enough Space) ?

Voordat u zich haast om een ​​oplossing te vinden, moet u eerst controleren of er een probleem is. Immers, als de schijfruimte op uw systeem op is, hoeft u niet in paniek te raken. U kunt gewoon onnodige gegevens verwijderen om meer ruimte vrij te maken.

Er zijn twee Linux -systeemopdrachten voor het verkrijgen van informatie over schijfruimte: du en df. Het du commando schat het schijfruimtegebruik, terwijl het df commando de vrije ruimte op de schijf analyseert. Als u ze in combinatie met sudo gebruikt, krijgt u een nauwkeurig rapport van hoeveel ruimte er daadwerkelijk beschikbaar is op de schijf.

  1. Laten we beginnen met het du-commando. De uitvoer kan nogal lang en omslachtig zijn om door te nemen, dus we zullen de vlaggen -s en -h gebruiken. -s vat de resultaten samen, terwijl -h ervoor zorgt dat het leesbaar is voor mensen. Voer dus het commando in sudo du -sh / waar / verwijst naar de basismap.

  1. Maak je geen zorgen over alle berichten met geweigerde toestemming - zo doorzoekt het alle submappen van het systeem. Afhankelijk van de grootte van de schijf moet u deze mogelijk een tijdje laten draaien, omdat deze recursief alles doorloopt.

  1. Wanneer du klaar is met scannen, zal het een eenvoudige lijst met mappen weergeven naast hun afmetingen. Dit is bijvoorbeeld de uitvoer van de opdracht du die is toegepast op een gewone map.

Nu zullen we df gebruiken om te zien hoeveel vrije ruimte beschikbaar is. Het df-commando is veel eenvoudiger te gebruiken omdat het alleen de gemounte bestandssystemen en hun gebruiksstatistieken toont. Nogmaals, we zullen de vlag -h gebruiken om de uitvoer voor mensen leesbaar te maken.

sudo df -h

Het idee is om de resultaten van de du- en df-opdrachten te tellen. Elke discrepantie wijst op schijfruimte die niet vrij beschikbaar is, ondanks dat deze niet door bestanden of mappen wordt gebruikt.

Waarom geeft Linux(Does Linux Show) "Geen ruimte(Space Left) over op apparaat" weer?

Als u het foutbericht "Geen ruimte over op apparaat" ziet ondanks dat er voldoende vrije ruimte op uw schijf is, is het niet de hardware die de schuld heeft. Om de exacte oorzaak van de fout te achterhalen, kan een beetje probleemoplossing nodig zijn.

  • Onlangs verwijderd bestand: de meest voorkomende reden voor het zien van deze fout is een recent verwijderd bestand. Vaak wordt een bestand verwijderd terwijl een proces het nog gebruikt, waardoor de ruimte gereserveerd blijft, ook al is het bestand al verdwenen.
  • Niet genoeg inodes(Enough Inodes) : Een andere veelvoorkomende oorzaak is dat er niet genoeg inodes zijn . Inodes zijn de indexpagina's van een Unix - bestandssysteem, die de metadata van elk bestand in opslag bevatten. Inodes zijn echter niet onbeperkt en als de inodes opraken voordat de opslagruimte u de foutmelding "Geen ruimte over op apparaat" kan geven.
  • Defecte harde(Hard) schijf: Dan is er natuurlijk de mogelijkheid dat de harde schijf gewoon defect raakt en dat veel van de schijnbare vrije ruimte wordt ingenomen door slechte sectoren. Omdat het systeem geen bestanden naar deze locaties kan schrijven, wordt er een fout gegenereerd.

Oplossing 1: herstart processen met verwijderde bestanden(Using Deleted Files)

De meest waarschijnlijke oorzaak van de fout "Geen ruimte over op apparaat" is een proces dat nog steeds een verwijderd bestand gebruikt. Gelukkig is het oplossen van deze fout eenvoudig. U hoeft het proces alleen maar opnieuw te starten(restart the process) om de gereserveerde opslagruimte vrij te maken.

  1. Om het problematische proces te vinden, moet u de opdrachten lsof en grep gebruiken. De opdracht lsof geeft je een lijst van alle geopende bestanden die worden gebruikt door processen uit te voeren, en grep kan de selectie beperken tot de bestanden die zijn verwijderd. Dus voer sudo lsof / | . in grep verwijderd waarbij / de basismap is en | een pijp voor het koppelen van de uitvoer van lsof aan grep.

  1. Nu kunt u het getroffen proces opnieuw starten met de opdracht sudo systemctl restart service_name, waarbij de servicenaam de naam is van de service die bij de zoekopdracht is opgedoken.

  1. Als er meerdere van dit soort processen zijn of als u zich gewoon niet bezig wilt houden met het vinden van specifieke services, kunt u ze allemaal opnieuw instellen met de opdracht sudo systemctl daemon-reload. Hiermee worden alle afhankelijkheden opnieuw gegenereerd, waarbij rekening wordt gehouden met eventuele wijzigingen in het bestandssysteem.

Hierna zou de opslagruimte die door het proces wordt opgehouden weer beschikbaar moeten zijn, zodat u bestanden kunt schrijven zonder fouten tegen te komen.

Oplossing 2: controleer inodes

Hoewel elke schijf een groot aantal inodes heeft, is deze eindig. En als uw systeem bezaaid is met een ongelooflijk aantal bestanden, is het mogelijk om deze limiet te bereiken voordat de opslagcapaciteit van de schijf is uitgeput. Daarom is het beter om grote bestanden te hebben in plaats van te veel kleine.

U kunt eenvoudig de beschikbaarheid van inodes controleren door de vlag -i te gebruiken met het df-commando. Soortgelijk:

sudo df -i

Dit zal duidelijk het totale aantal inodes in het bestandssysteem vertellen, samen met het aantal dat momenteel in gebruik is. Als er geen vrije inodes meer op uw systeem zijn, is dit de oorzaak van de fout "Geen ruimte over op apparaat".

Omdat inodes alleen worden gemaakt bij het formatteren van de schijf, is er geen manier om meer inodes te genereren. Het enige dat u kunt doen, is onnodige bestanden verwijderen om inodes vrij te maken voor toekomstige bestanden.

Oplossing 3: Markeer slechte blokken

Gegevenscorruptie(Data) is het onvermijdelijke lot van elke harde schijf. Hoewel een nieuwe schijf dit probleem niet zal tegenkomen, zullen oudere harde schijven geleidelijk "slecht" gaan worden.

Dit betekent dat delen van de harde schijf onbruikbaar worden gemaakt, ook al beschouwt het bestandssysteem ze nog steeds als functioneel. Deze slechte blokken blazen ten onrechte de schijnbare vrije ruimte op de schijf op, terwijl er in werkelijkheid geen bestanden naar kunnen worden geschreven. Dit leidt tot de foutmelding "Geen ruimte over op apparaat", omdat het besturingssysteem probeert en er niet in slaagt om gegevens op deze locaties op te slaan.

Er is geen echte manier om dit probleem op te lossen, omdat slechte sectoren het gevolg zijn van de fysieke slijtage van een harde schijf. Het enige dat u kunt doen, is de beschadigde sectoren markeren zodat er niet langer naar wordt verwezen door het bestandssysteem.

Hiervoor moet u opstarten vanaf een Live-cd , aangezien u geen bestandssysteemcontrole(File System Check) kunt uitvoeren binnen een draaiende schijf. Zodra u dat doet, gebruikt u gewoon de volgende opdracht:

sudo fsck -vcck /dev/sda

Dit vervangt de /dev/sda door het pad van de schijf die u wilt repareren. Dit detecteert automatisch alle slechte blokken op de schijf en markeert ze als onbruikbaar. Het geeft u echter geen extra opslagcapaciteit, dus wees voorbereid op het opschonen van enkele nutteloze bestanden om ruimte op de schijf vrij te maken.

Wat is de beste manier om de fout "Geen ruimte over op apparaat" op te lossen?

De gebruikelijke reden voor het zien van een "Geen ruimte over op apparaat" -fout op Ubuntu of een andere Linux -distro is een verwijderd bestand dat nog steeds wordt gebruikt door een lopend proces. Dit reserveert de opslagruimte die door het bestand werd ingenomen, waardoor andere bewerkingen geen gegevens naar die ruimte kunnen schrijven.

Het oplossen van dit probleem is ook het gemakkelijkst, omdat u alleen het betreffende proces opnieuw hoeft te doen. De andere oorzaken van de fout zijn echter niet zo eenvoudig op te lossen.

Of uw schijf nu wordt geplaagd door slechte gegevensblokken of geen inodes meer heeft, er is geen directe manier om deze problemen op te lossen. U moet bestaande bestanden verwijderen om ruimte te maken voor het schrijven van nieuwe gegevens.



About the author

Ik ben een computerprofessional met meer dan 10 jaar ervaring. In mijn vrije tijd help ik graag aan een bureau en leer ik kinderen internetten. Mijn vaardigheden omvatten veel dingen, maar het belangrijkste is dat ik weet hoe ik mensen kan helpen bij het oplossen van problemen. Als je iemand nodig hebt die je kan helpen met iets dringends of gewoon wat basistips wilt, neem dan contact met me op!



Related posts