Κορυφαίοι 3 τρόποι για να διορθώσετε το σφάλμα "Δεν υπάρχει χώρος στη συσκευή" στο Linux

Τα λάθη χωρίς σαφή αιτία είναι τα πιο ενοχλητικά προβλήματα που πρέπει να αντιμετωπίσετε. Και ενώ το Linux είναι συνήθως συγκεκριμένο στα μηνύματα λάθους του, αυτή είναι μια από τις λίγες φορές που πέφτει η μπάλα.

Η λήψη ενός σφάλματος "No place left on device" εξηγεί πολύ λίγα, ειδικά εάν η μονάδα δίσκου σας απέχει πολύ από το να είναι πλήρης. Γιατί εμφανίζεται αυτό το μήνυμα σφάλματος; Γιατί δεν μπορείτε να δημιουργήσετε νέα αρχεία παρόλο που έχετε αρκετό χώρο στο δίσκο; Και το πιο σημαντικό, πώς το διορθώνεις;

Ας ανακαλύψουμε.

Ο σκληρός σας δίσκος έχει πράγματι αρκετό χώρο(Hard Drive Actually Have Enough Space) ;

Πριν βιαστείτε να βρείτε μια λύση, βεβαιωθείτε ότι υπάρχει πρόβλημα, για αρχή. Σε τελική ανάλυση, εάν ο χώρος στο δίσκο έχει πραγματικά εξαντληθεί στο σύστημά σας, δεν υπάρχει λόγος πανικού. Μπορείτε απλώς να αφαιρέσετε τα περιττά δεδομένα για να ελευθερώσετε περισσότερο χώρο.

Υπάρχουν δύο εντολές συστήματος Linux για τη λήψη πληροφοριών σχετικά με το χώρο στο δίσκο – du και df. Η εντολή du υπολογίζει τη χρήση του χώρου στο δίσκο, ενώ η εντολή df αναλύει τον ελεύθερο χώρο που υπάρχει στο δίσκο. Η χρήση τους σε συνδυασμό με το sudo σας δίνει μια ακριβή αναφορά του πόσος χώρος είναι πραγματικά διαθέσιμος στο δίσκο.

  1. Ας ξεκινήσουμε με την εντολή du. Η έξοδός του μπορεί να είναι αρκετά μεγάλη και δυσκίνητη, οπότε θα χρησιμοποιήσουμε τις σημαίες -s και -h. Το -s συνοψίζει τα αποτελέσματα, ενώ το -h διασφαλίζει ότι είναι αναγνώσιμο από τον άνθρωπο. Εισαγάγετε λοιπόν την εντολή sudo du -sh / where / δείχνει στον βασικό κατάλογο.

  1. Μην ανησυχείτε για όλα τα μηνύματα που έχουν απορριφθεί η άδεια – έτσι περνάει σε όλους τους υποκαταλόγους του συστήματος. Ανάλογα με το μέγεθος της μονάδας, ίσως χρειαστεί να την αφήσετε να λειτουργεί για λίγο, καθώς περνάει αναδρομικά από τα πάντα.

  1. Όταν τελειώσει η σάρωση, θα βγει μια απλή λίστα καταλόγων μαζί με τα μεγέθη τους. Για παράδειγμα, αυτή είναι η έξοδος της εντολής du που εφαρμόζεται σε έναν συνηθισμένο κατάλογο.

Τώρα θα χρησιμοποιήσουμε το df για να δούμε πόσο ελεύθερος χώρος είναι διαθέσιμος. Η εντολή df είναι πολύ πιο απλή στη χρήση αφού δείχνει μόνο τα προσαρτημένα συστήματα αρχείων και τα στατιστικά χρήσης τους. Για άλλη μια φορά, θα χρησιμοποιήσουμε τη σημαία -h για να κάνουμε την έξοδο αναγνώσιμη από τον άνθρωπο.

sudo df -η(sudo df -h )

Η ιδέα είναι να μετρηθούν τα αποτελέσματα των εντολών du και df. Οποιαδήποτε ασυμφωνία δείχνει χώρο στο δίσκο που δεν είναι ελεύθερα διαθέσιμος, παρόλο που δεν χρησιμοποιείται από κανένα αρχείο ή φάκελο.

Γιατί το Linux εμφανίζει(Does Linux Show) "Δεν υπάρχει χώρος(Space Left) στη συσκευή";

Εάν βλέπετε το μήνυμα λάθους "Δεν υπάρχει χώρος στη συσκευή" παρόλο που έχετε αρκετό ελεύθερο χώρο στο δίσκο σας, δεν φταίει το υλικό. Η καταγραφή της ακριβούς αιτίας του σφάλματος μπορεί να χρειαστεί λίγη αντιμετώπιση προβλημάτων.

  • Πρόσφατα διαγραμμένο αρχείο: Ο πιο συνηθισμένος λόγος για την εμφάνιση αυτού του σφάλματος είναι ένα αρχείο που διαγράφηκε πρόσφατα. Συχνά ένα αρχείο διαγράφεται ενώ μια διεργασία εξακολουθεί να το χρησιμοποιεί, διατηρώντας τον χώρο δεσμευμένο ακόμα κι αν το αρχείο έχει ήδη χαθεί.
  • Μη επαρκείς ινώδες(Enough Inodes) : Μια άλλη συχνή αιτία είναι η έλλειψη αρκετών ινωδών(inodes) . Τα Inodes είναι οι σελίδες ευρετηρίου ενός συστήματος αρχείων Unix , που κρατούν τα μεταδεδομένα κάθε αρχείου στην αποθήκευση. Ωστόσο, τα inode δεν είναι απεριόριστα και η εξάντληση των inode πριν από τον αποθηκευτικό χώρο μπορεί να σας δώσει το σφάλμα "Δεν υπάρχει χώρος στη συσκευή".
  • Αποτυχία σκληρού(Hard) δίσκου: Τότε, φυσικά, υπάρχει η πιθανότητα ο σκληρός δίσκος απλώς να αποτύχει και μεγάλο μέρος του φαινομενικού ελεύθερου χώρου καταλαμβάνεται από κατεστραμμένους τομείς. Εφόσον το σύστημα αποτυγχάνει να γράψει αρχεία σε αυτές τις τοποθεσίες, παρουσιάζει ένα σφάλμα.

Διόρθωση 1: Επανεκκίνηση διεργασιών με χρήση διαγραμμένων αρχείων(Using Deleted Files)

Η πιο πιθανή αιτία του σφάλματος "Δεν υπάρχει χώρος στη συσκευή" είναι μια διαδικασία που εξακολουθεί να χρησιμοποιεί ένα διαγραμμένο αρχείο. Ευτυχώς, η διόρθωση αυτού του σφάλματος είναι εύκολη. Απλώς πρέπει να επανεκκινήσετε τη διαδικασία(restart the process) για να ελευθερώσετε τον δεσμευμένο χώρο αποθήκευσης.

  1. Για να βρείτε την προβληματική διαδικασία, πρέπει να χρησιμοποιήσετε τις εντολές lsof και grep. Η εντολή lsof θα σας δώσει μια λίστα με όλα τα ανοιχτά αρχεία που χρησιμοποιούνται από διεργασίες που εκτελούνται και το grep μπορεί να περιορίσει την επιλογή σε αυτά που διαγράφονται. Εισαγάγετε λοιπόν sudo lsof / | grep διαγράφηκε όπου / είναι ο βασικός κατάλογος και | ένας σωλήνας για τη σύνδεση της εξόδου του lsof με το grep.

  1. Τώρα μπορείτε να επανεκκινήσετε τη διαδικασία που επηρεάζεται με την εντολή sudo systemctl restart service_name, όπου το όνομα της υπηρεσίας είναι το όνομα της υπηρεσίας που εμφανίστηκε στην αναζήτηση.

  1. Εάν υπάρχουν πολλές διαδικασίες όπως αυτή ή απλά δεν θέλετε να ασχοληθείτε με την εύρεση συγκεκριμένων υπηρεσιών, μπορείτε απλώς να τις επαναφέρετε όλες με την εντολή sudo systemctl daemon-reload. Αυτό αναγεννά όλες τις εξαρτήσεις, λαμβάνοντας υπόψη τυχόν αλλαγές στο σύστημα αρχείων.

Μετά από αυτό, ο χώρος αποθήκευσης που διατηρείται από τη διαδικασία θα πρέπει να είναι ξανά διαθέσιμος, επιτρέποντάς σας να γράφετε αρχεία χωρίς να αντιμετωπίζετε σφάλματα.

Διόρθωση 2: Ελέγξτε τα Inodes

Ενώ κάθε μονάδα δίσκου έχει μεγάλο αριθμό ινωδών, είναι πεπερασμένη. Και αν το σύστημά σας είναι γεμάτο με έναν απίστευτο αριθμό αρχείων, είναι πιθανό να φτάσετε σε αυτό το όριο πριν εξαντλήσετε τη χωρητικότητα αποθήκευσης της μονάδας δίσκου. Αυτός είναι ο λόγος για τον οποίο είναι καλύτερο να έχετε μεγάλα αρχεία παρά πάρα πολλά μικρά.

Μπορείτε εύκολα να ελέγξετε τη διαθεσιμότητα των inodes χρησιμοποιώντας τη σημαία -i με την εντολή df. Σαν αυτό:

sudo df -i

Αυτό θα δείξει ξεκάθαρα τον συνολικό αριθμό των inodes που υπάρχουν στο σύστημα αρχείων, μαζί με την ποσότητα που χρησιμοποιείται αυτήν τη στιγμή. Εάν δεν έχουν απομείνει δωρεάν inode στο σύστημά σας, αυτή είναι η πηγή του σφάλματος "Δεν υπάρχει χώρος στη συσκευή".

Καθώς τα inode δημιουργούνται μόνο κατά την πρώτη μορφοποίηση της μονάδας δίσκου, δεν υπάρχει τρόπος να δημιουργηθούν περισσότερα inode. Το μόνο που μπορείτε να κάνετε είναι να διαγράψετε τυχόν περιττά αρχεία για να ελευθερώσετε inodes για μελλοντικά αρχεία.

Διόρθωση 3: Επισήμανση κακών μπλοκ

Η καταστροφή δεδομένων(Data) είναι η αναπόφευκτη μοίρα κάθε σκληρού δίσκου. Ενώ μια νέα μονάδα δίσκου δεν θα αντιμετωπίσει αυτό το πρόβλημα, οι παλαιότεροι σκληροί δίσκοι σταδιακά θα αρχίσουν να πηγαίνουν "κακοί".

Αυτό σημαίνει ότι τμήματα του σκληρού δίσκου καθίστανται άχρηστα, παρόλο που το σύστημα αρχείων εξακολουθεί να τα θεωρεί λειτουργικά. Αυτά τα κακά μπλοκ διογκώνουν ψευδώς τον εμφανή ελεύθερο χώρο στη μονάδα δίσκου, ενώ στην πραγματικότητα δεν μπορούν να εγγραφούν αρχεία σε αυτά. Αυτό οδηγεί σε σφάλμα "Δεν υπάρχει χώρος στη συσκευή", καθώς το λειτουργικό σύστημα προσπαθεί και αποτυγχάνει να αποθηκεύσει δεδομένα σε αυτές τις τοποθεσίες.

Δεν υπάρχει πραγματικός τρόπος επίλυσης αυτού του ζητήματος, καθώς οι κακοί τομείς είναι αποτέλεσμα της φυσικής φθοράς ενός σκληρού δίσκου. Το μόνο που μπορείτε να κάνετε είναι να επισημάνετε τους κατεστραμμένους τομείς έτσι ώστε να μην αναφέρονται πλέον από το σύστημα αρχείων.

Για να το κάνετε αυτό, απαιτείται η εκκίνηση από ένα Live CD , καθώς δεν μπορείτε να εκτελέσετε Έλεγχο συστήματος αρχείων(File System Check) σε μια μονάδα δίσκου που εκτελείται. Μόλις το κάνετε αυτό, απλώς χρησιμοποιήστε την ακόλουθη εντολή:

sudo fsck -vcck /dev/sda

Αυτό αντικαθιστά το /dev/sda με τη διαδρομή της μονάδας δίσκου που θέλετε να επιδιορθώσετε. Αυτό θα εντοπίσει αυτόματα όλα τα κακά μπλοκ στη μονάδα δίσκου και θα τα επισημάνει ως μη χρησιμοποιήσιμα. Ωστόσο, δεν θα σας δώσει επιπλέον χωρητικότητα αποθήκευσης, επομένως ετοιμαστείτε να καθαρίσετε μερικά άχρηστα αρχεία για να ελευθερώσετε χώρο στη μονάδα.

Ποιος είναι ο καλύτερος τρόπος για να διορθώσετε το σφάλμα "Δεν υπάρχει χώρος στη συσκευή";

Ο συνήθης λόγος για την εμφάνιση ενός σφάλματος "Δεν υπάρχει χώρος στη συσκευή" στο Ubuntu ή σε οποιαδήποτε άλλη διανομή Linux είναι ένα διαγραμμένο αρχείο που εξακολουθεί να χρησιμοποιείται από μια διαδικασία που εκτελείται. Αυτό διατηρεί τον χώρο αποθήκευσης που καταλάμβανε το αρχείο, αποτρέποντας άλλες λειτουργίες από την εγγραφή δεδομένων σε αυτόν τον χώρο.

Η επίλυση αυτού του προβλήματος είναι επίσης η πιο εύκολη, καθώς το μόνο που χρειάζεται να κάνετε είναι να επανεκκινήσετε την εν λόγω διαδικασία. Οι άλλες αιτίες του σφάλματος, ωστόσο, δεν είναι τόσο εύκολο να επιλυθούν.

Είτε η μονάδα δίσκου σας μαστίζεται από κακά μπλοκ δεδομένων είτε έχει εξαντληθεί τα inodes, δεν υπάρχει άμεσος τρόπος για να διορθώσετε αυτά τα προβλήματα. Πρέπει να διαγράψετε υπάρχοντα αρχεία για να δημιουργήσετε χώρο για εγγραφή νέων δεδομένων.



About the author

Είμαι μηχανικός λογισμικού με εμπειρία τόσο σε Chrome όσο και σε εφαρμογές gaming. Εργάζομαι σε λύσεις για το πρόγραμμα περιήγησης Google Chrome τα τελευταία 4 χρόνια και έχω επίσης δουλέψει σε παιχνίδια για πολλές διαφορετικές πλατφόρμες. Οι δεξιότητές μου έγκεινται στο σχεδιασμό, τη δοκιμή και τη διαχείριση έργων λογισμικού. Εκτός από την εργασία μου ως μηχανικός λογισμικού, έχω επίσης εμπειρία σε θέματα ιδιωτικότητας, λογαριασμών χρηστών και οικογενειακής ασφάλειας.



Related posts