|
[+] 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.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|