Hoe los je de fout 'No Space Left on Device' op in Linux

Gepubliceerd 3 juli 2024

Probleem: "No Space Left on Device" fout in Linux

De "No Space Left on Device" fout in Linux gebeurt wanneer een systeem geen opslagruimte meer heeft. Dit probleem kan voorkomen dat je bestanden opslaat, software installeert of andere taken uitvoert die schijfruimte nodig hebben. Het kan systeeminstabiliteit en trage prestaties veroorzaken, wat het een probleem maakt voor Linux-gebruikers.

Het probleem diagnosticeren: Schijfruimte en Inodes controleren

Het df commando gebruiken om schijfruimte te controleren

Het df commando controleert het gebruik van schijfruimte in Linux. Het toont informatie over gebruikte en beschikbare ruimte op bestandssystemen. Om df te gebruiken, open je een terminal en typ je 'df' met eventuele opties.

Wanneer je df uitvoert, toont het een tabel met kolommen voor bestandssysteem, totale grootte, gebruikte ruimte, beschikbare ruimte en mount point. De '-h' optie maakt de uitvoer gemakkelijker leesbaar door groottes weer te geven in KB, MB of GB.

Inode gebruik onderzoeken met df -i

Inodes slaan gegevens op over bestanden in Linux bestandssystemen. Elk bestand gebruikt één inode, ongeacht de grootte. Om het gebruik van inodes te controleren, gebruik je het 'df -i' commando.

Dit commando toont een tabel zoals de reguliere df uitvoer, maar met inode informatie in plaats van schijfruimte. De kolommen bevatten totaal aantal inodes, gebruikte inodes, vrije inodes en het percentage gebruikte inodes. Als je een hoog percentage gebruikte inodes ziet, zelfs met vrije schijfruimte, heb je mogelijk een inode probleem.

Methoden om de 'No Space Left on Device' fout op te lossen

Schijfruimte vrijmaken in Linux

Om schijfruimte vrij te maken in Linux, zoek je grote bestanden en mappen. Gebruik het 'du' commando met opties zoals '-h' voor leesbare groottes en '-s' voor een samenvatting. Bijvoorbeeld, 'du -sh /path/to/directory/*' toont de grootte van elk item in een map.

Nadat je grote bestanden en mappen hebt gevonden, verwijder je onnodige gegevens. Verwijder oude logbestanden, tijdelijke bestanden en gecachte gegevens. Maak package manager caches schoon met commando's zoals 'apt clean' voor Debian-gebaseerde systemen of 'yum clean all' voor Red Hat-gebaseerde systemen. Verwijder oude kernels en ongebruikte applicaties om meer ruimte te creëren.

Omgaan met Inode uitputting

Wanneer je te maken hebt met inode uitputting, focus je op het verwijderen van kleine bestanden. Veel kleine bestanden kunnen inodes opgebruiken, zelfs als ze niet veel schijfruimte innemen. Gebruik 'find' om onnodige kleine bestanden te lokaliseren en te verwijderen. Bijvoorbeeld, 'find /path -type f -size -1M -delete' verwijdert bestanden kleiner dan 1MB.

Het verhogen van het aantal inodes is mogelijk, maar vereist het opnieuw formatteren van het bestandssysteem. Dit is een laatste optie en moet zorgvuldig worden gedaan, omdat het het maken van een back-up van gegevens, het opnieuw aanmaken van het bestandssysteem met meer inodes en het herstellen van de gegevens omvat.

Omgaan met verwijderde maar geopende bestanden

Soms worden bestanden die door het systeem zijn verwijderd nog steeds open gehouden door actieve processen, waarbij ze ruimte innemen. Gebruik het 'lsof' commando om deze bestanden te vinden. Voer 'lsof | grep deleted' uit om verwijderde bestanden die nog in gebruik zijn te tonen.

Om de bestandshandvatten vrij te geven, herstart je de processen die deze bestanden gebruiken. Als het veilig is, kun je ook het systeem opnieuw opstarten om alle bestandshandvatten te sluiten. Voor kritieke systemen identificeer je het specifieke proces dat het bestand open houdt en herstart je alleen dat proces om downtime te minimaliseren.

Alternatieve oplossingen voor opslagproblemen

Bestandssysteem of partitiegrootte uitbreiden

Je kunt nieuwe schijven of partities toevoegen aan je Linux systeem wanneer je meer opslagruimte nodig hebt. Om een nieuwe schijf toe te voegen, sluit je deze fysiek aan en gebruik je vervolgens 'fdisk' of 'parted' om partities aan te maken. Nadat je partities hebt aangemaakt, formatteer je ze met een bestandssysteem met behulp van 'mkfs' en mount je ze om ze toegankelijk te maken.

Je kunt ook bestaande partities van grootte veranderen. Gebruik tools zoals 'gparted' (grafisch) of 'parted' (command-line). Maak altijd een back-up van je gegevens voordat je de grootte wijzigt. Voor niet-root partities, ontkoppel je ze eerst. Voor root partities gebruik je een live CD of USB om de grootte wijziging uit te voeren.

Gebruik maken van Network Attached Storage (NAS)

Network Attached Storage (NAS) breidt opslag uit via een netwerk. NAS systemen bieden grote hoeveelheden opslag die meerdere apparaten kunnen benaderen. Ze zijn nuttig voor gecentraliseerde bestandsopslag en back-up.

Om een NAS op Linux te mounten, gebruik je protocollen zoals NFS of SMB. Voor NFS gebruik je het 'mount' commando met de NFS share details. Voor SMB shares gebruik je 'mount.cifs' of voeg je een regel toe aan '/etc/fstab' voor automatisch mounten bij het opstarten. NAS systemen bieden flexibiliteit voor opslagbehoeften.

Preventieve maatregelen om toekomstige 'No Space Left on Device' fouten te voorkomen

Regelmatige monitoring van schijfruimte instellen

Om "No Space Left on Device" fouten te voorkomen, stel je waarschuwingen in voor het gebruik van schijfruimte. Gebruik tools zoals Nagios of Zabbix om schijfruimte te monitoren en meldingen te versturen wanneer het gebruik een ingesteld niveau bereikt. Bijvoorbeeld, stel waarschuwingen in om te activeren wanneer het schijfgebruik boven de 80% komt.

Monitoring tools tonen de opslaggezondheid van je systeem. Tools zoals Glances of Netdata geven real-time weergaven van trends in schijfgebruik. Deze tools kunnen je helpen problemen te identificeren voordat ze ernstig worden, waardoor je snel kunt handelen.

Opslaggebruik optimaliseren in Linux

Gebruik goede praktijken voor opslagbeheer in Linux. Bekijk en verwijder regelmatig onnodige bestanden, zoals oude back-ups of tijdelijke bestanden. Gebruik quota's om het schijfruimtegebruik van gebruikers te beperken. Stel automatische opruimtaken in met cron jobs om oude logs of cache bestanden te verwijderen.

Compressie kan ruimte besparen. Gebruik tools zoals gzip of bzip2 voor bestanden die je zelden gebruikt. Voor databases probeer je compressiefuncties van het databasesysteem. Bestandssystemen zoals Btrfs of ZFS hebben ingebouwde compressie, wat ruimte kan besparen zonder extra werk.