ďťż
 
 
   [+] Problem z zapełniającym się dyskiem
 
 

Tematy

 
    
 

 

 

 

[+] Problem z zapełniającym się dyskiem





xsof - 09-11-2008 01:45
Witam,
Mam problem z dyskiem który w nieznanym miejscu się zapycha i system monitorujący krzyczy że za chwilę dojdzie do zawieszenia serwera.

dokładnie w czym jest problem:
polecenie df -h krzyczy że partycja / jest zapełniona w 96% (co dziennie rośnie o 2% więc w poniedziałek kaput) - tyle że w wyczyściłem system na wszelkie sposoby i ten dysk jest prawie pusty

root@ns:/# df -h
System plików        rozm. użyte dost. %uż. zamont. na
/dev/md1              193G  175G  8,2G  96% /
tmpfs                3,9G    0  3,9G  0% /lib/init/rw
udev                  10M  52K  10M  1% /dev
tmpfs                3,9G    0  3,9G  0% /dev/shm
/dev/md2              293G  33M  293G  1% /backup
/dev/md3              580G  32G  549G  6% /home
wylistowałem wszystkie katalogi (bez liczenia home bo to jaki widać na wcześniejszym kodzie to osobna partycja)
root@ns:/# du -sh * --exclude="home/*" | sort -rn
727M    var
293M    root
280K    dev
20M    etc
16K    tmp
16K    lost+found
12K    media
7,9M    lib
7,1M    emul
6,8M    sbin
4,8M    boot
4,2M    bin
4,0K    srv
4,0K    selinux
4,0K    opt
4,0K    mnt
4,0K    initrd
2,1G    usr
0      sys
0      proc
0      lib64
0      lib32
0      backup
0      home próbowałem też polecenia find z opcją size ale też nic nie znajduje.

cały system bez /home zajmuje tylko 3,9G - i pytanie macie pomysł gdzie mi zjada resztę miejsca że /dev/md1 jest w 96% zapełnione...

może na wszelki wypadek dodam jeszcze to:
root@ns:/# fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *          1      25496  204796588+  fd  Linux raid autodetect
/dev/sda2          25497      44618  153597465  fd  Linux raid autodetect
/dev/sda3          44619      120326  608124510  fd  Linux raid autodetect
/dev/sda4          120327      121601    10241437+  82  Linux swap / Solaris

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1      25496  204796588+  fd  Linux raid autodetect
/dev/sdb2          25497      44618  153597465  fd  Linux raid autodetect
/dev/sdb3          44619      120326  608124510  fd  Linux raid autodetect
/dev/sdb4          120327      121601    10241437+  82  Linux swap / Solaris

Disk /dev/md3: 622.7 GB, 622719401984 bytes
2 heads, 4 sectors/track, 152031104 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md3 doesn't contain a valid partition table

Disk /dev/md2: 314.5 GB, 314567426048 bytes
2 heads, 4 sectors/track, 76798688 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md2 doesn't contain a valid partition table

Disk /dev/md1: 209.7 GB, 209711595520 bytes
2 heads, 4 sectors/track, 51199120 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table
root@ns:/# cat /etc/fstab
# <sys.fichiers><pt de montage><type> <options>  <dump> <pass>
/dev/md1        /      ext3    errors=remount-ro      0      1
/dev/md2        /backup  reiserfs        defaults        1      2
/dev/md3        /home  reiserfs        defaults        1      2
/dev/sda4      swap    swap    defaults        0      0
/dev/sdb4      swap    swap    defaults        0      0
proc            /proc  proc    defaults        0      0
sysfs          /sys    sysfs  defaults        0      0



fnmirk - 09-11-2008 02:46
Nie wiem, może taki kierunek:
http://jabba.pl/seban/rodzaj/bash



markossx - 09-11-2008 10:48
I-nody to jedno ale zauważyłem, że masz emule;
na Windows miałem problem ze 'znikającym' miejscem i okazało się, że emule alokował sobie miejsce na to co dopiero miał ściągnąć. Załóżmy iso warzyło 1,5GB i zamiast sukcesywnie zwiększać zajętość wraz z przyrostem plików ten od razu zabierał na całość. To było na Windows tu tak nie musi być ale na Twoim miejscu popatrzyłbym dokładnie w config emule...



Utumno - 09-11-2008 17:18
Jezeli 'df' raportuje ze nie ma miejsca na dysku natomiast 'du' twierdzi, ze jest, to prawie na pewno jest to efekt tego, ze jakies pliki w systemie zostaly skasowane ale jeszcze sa na dysku bo jakis program ma je otwarte.

Hmm... to nie zabrzmialo zbyt jasno. Sprobujmy wytlumaczyc jeszcze raz:

Zalozmy, ze proces 'A' ma plik /home/xsof/test otwarty do zapisu. Teraz robisz 'rm -f /home/xsof/test'. Plik ten znika z filesystemu ( inode jest dealokowany ) i tym samym znika z raportow 'du' ( bo 'du' leci po inode'ach i sumuje ich rozmiary ) ale NIE ZOSTAL JESZCZE USUNIETY z dysku poniewaz istnieje proces 'A', ktory do niego pisze. A komenda 'df' liczy miejsce na dysku bezposredniu jadac po block'ach, wiec ten plik dalej bedzie dla niej widoczny. Plik zostanie usuniety z dysku dopiero wtedy, gdy process 'A' sie zakonczy.

Dla jeszcze lepszego zilustrowania, wykonajmy szybki eksperyment. Napiszmy skrypt 'logger', ktory zapisuje co 1 sekunde date do pliku:
#!/bin/sh
 while true; do
    date;
    sleep 1;
done > /home/xsof/log Teraz odpal ten skrypt i w drugiej konsoli potwierdz, ze plik jest zapisywany:
cat /home/xsof/log Teraz usun ten plik:
rm -f /home/xsof/log W /home/xsof tego pliku juz nie ma, ale na dysku jest. Z poziomu filesystemu zreszta dalej jest dostepny w taki sposob:
# pidof logger
15345
# ls -l /proc/15345/fd
razem 0
lr-x------ 1 leszek leszek 64 lis  9 23:37 0 -> /dev/pts/0
l-wx------ 1 leszek leszek 64 lis  9 23:37 1 -> /dev/pts/0
l-wx------ 1 leszek leszek 64 lis  9 23:37 2 -> /dev/pts/0
lrwx------ 1 leszek leszek 64 lis 10 00:17 255 -> /home/xsof/log I teraz po prostu
tail -f /proc/15345/fd/255 pokaze ci, ze plik ten dalej istnieje i dalej jest zapisywany.

Mozna go stamtad przywrocic spowrotem do /home/xsof (jak, to juz wykracza poza zakres tej lekcji :) , mozna go usunac - najprosciej spod basha komenda > : ,
> /proc/15345/fd/255 ************************************************** ******************

Tak wiec podejrzewam, ze jakis proces grasuje w systemie i na*****dala do jakiegos usunietego juz pliku. Komenda
find -L /proc/*/fd -type f -links 0 znajdzie ci wszystkie pliki ktore sa usuniete z filesystemu ale jeszcze nie z dysku ( opcja 'links 0' )

Teraz manualnie przelec sie po tych plikach i jezeli moje podejrzenie jest poprawne. powinienes znalezc wsrod nich podejrzanego.

[ Dodano: 2008-11-10, 00:25 ]
A co do 'marcussx' powyzej, to katalog '/emul' nie ma nic wspolnego z programem 'Emule'.



xsof - 09-11-2008 22:45
Bardzo dziękuje za wyczerpującą odpowiedź :-)

Rozwiązaniem okazało się zabicie skryptów do automatycznego backupu (przez to reboot nie pomagał),
Coś popierniczyłem w tych moich skryptach - była taka sytuacja, że tworzył masę plików tymczasowych, a potem je usuwał, tyle że usuwał je w ten sposób, że plików nie było w filesystem, ale dane tymczasowe nie były usuwane bo program ciągle wisiał.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis