[+] Problem z zape

Ogólne pytania dotyczące systemu
xsof
Posty: 2
Rejestracja: 09 listopada 2008, 00:58

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

Post autor: xsof »

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

Kod: Zaznacz cały

 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)

Kod: Zaznacz cały

 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:

Kod: Zaznacz cały

 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

Kod: Zaznacz cały

 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
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Nie wiem, może taki kierunek:
http://jabba.pl/seban/rodzaj/bash
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

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
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

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:

Kod: Zaznacz cały

#!/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:

Kod: Zaznacz cały

cat /home/xsof/log
Teraz usun ten plik:

Kod: Zaznacz cały

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:

Kod: Zaznacz cały

 # 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

Kod: Zaznacz cały

 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 > : ,

Kod: Zaznacz cały

 > /proc/15345/fd/255
********************************************************************

Tak wiec podejrzewam, ze jakis proces grasuje w systemie i na*****dala do jakiegos usunietego juz pliku. Komenda

Kod: Zaznacz cały

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
Posty: 2
Rejestracja: 09 listopada 2008, 00:58

Post autor: xsof »

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ł.
ODPOWIEDZ