πρόβλημα με ελεύθερο χώρο σκληρού δίσκου (Μάλλον βρέθηκε λύση)

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Mar 6 18:21:53 EET 2007


On 2007-03-06 17:30, John Margaritopoulos <johnmargaritopoulos at yahoo.com> wrote:
> On Tuesday 06 Mar 2007 15:53, you wrote:
> > Δοκίμασε καλύτερα κάτι σαν αυτό:
> >
> > $ cd /home/john
> > $ find . -type d -maxdepth 3 -print0 | xargs -0 du -sh
>
> Αγαπητέ Γιώργο,
>
> Ευχαριστώ για τις οδηγίες. Νομίζω ότι τελικά βρέθηκε το πρόβλημα.  51
> GB είναι το beagle/log. Αν σβήσω αυτά τα αρχεία δεν θα δημιουργήσω
> πρόβλημα, έτσι δεν είναι?

Αυτό είναι συνήθως πρόβλημα που εμφανίζεται όταν ένα process τρέχει,
έχει ανοίξει ένα αρχείο και (παρόλο που το έχει ακόμα ανοιχτό), κάποιος
σβήσει το αρχείο.

Αν έχεις το lsof utility, μπορείς να δεις ποιο process είναι αυτό με
κάτι σαν το παρακάτω:

  # lsof -n | { read head; echo "$head"; grep /home/keramida; }
  COMMAND     PID     USER   FD   TYPE             DEVICE   SIZE/OFF       NODE NAME
  bash      19022 keramida  cwd   VDIR              102,0       1536     205398 /home/keramida
  #

Μόλις δεις ότι το process 19022 έχει ανοιχτό το αρχείο που θέλεις (το
shell με το οποίο έκανα login σε αυτό το μηχάνημα, πριν κάνω sudo), τότε
μπορείς να δεις περισσότερα για το process αυτό με την -p παράμετρο του
ps(1) utility:

  # ps -fp 19022        
       UID   PID  PPID   C    STIME TTY         TIME CMD
  keramida 19022 19020   0 18:10:28 pts/14      0:00 -bash
  #

Στο δικό σου σύστημα, πρέπει να ψάξεις με την lsof για κάποιο 'ανοιχτό'
αρχείο του οποίου το SIZE/OFF είναι υπερβολικά μεγάλο.  Μόλις το βρεις,
τότε δες από τη στήλη PID ποιό είναι το process που έχει αυτό το αρχείο
ανοιχτό.

Δείξε μας ποιο ήταν το file descriptor που έχει τόσο μεγάλο SIZE/OFF και
ποιό process το έχει ανοιχτό, όπως παραπάνω.

> Οι απορίες μου είναι: α) γιατί το KDirStat δείχνει μικρότερο μέγεθος
> (3.7 GB) για το log το beagle και β) πως θα αποφύγω να δημιουργηθεί
> ξανά τόσο μεγάλο log.

Το KDirStat δεν λειτουργεί όπως το lsof.  Δεν διαβάζει από τον πυρήνα
του λειτουργικού συστήματος τη λίστα με τα open file descriptors.  Απλά
διατρέχει το file system και ψάχνει να δει πόσο μέγεθος έχει το κάθε
αρχείο που βρίσκει.  Επειδή το αρχείο που ψάχνεις έχει 'σβηστεί' από το
file system, το KDirStat δεν το μετράει όταν αθροίζει το μέγεθος των
αρχείων.

Δεν ξέρω γιατί δημιουργήθηκε αυτό το πρόβλημα.  Βρες, όπως είπα πιο
πάνω, ποιό process είναι αυτό που έχει ανοιχτό το αρχείο και, λογικά, θα
βρούμε γιατί "τα 'παιξε" και σου γέμισε το δίσκο.




More information about the Migrate2linux mailing list