Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych.
I-węzeł
26 sierpnia 2006 | Klucze:
linux
5 komentarzy. trackback
Na początku tygodnia miałem problem z brakiem miejsca na jednej z moich partycji. Problem nie byłby może aż tak wielki gdyby nie fakty, że partycja ta jest montowana jako ,,/``. Za nic nie mogłem sobie z tym poradzić przez dwa dni.
inode
I-węzeł (inode) jest to struktura danych opisująca pliki zapisane na dysku. I-węzeł zawiera informacje o: typie pliku, właścicielu, grupie, długości pliku, adresie, liczbie dowiązań i kilka innych informacji. Długość pliku to nic innego jak jego wielkość, ilość zajmowanego miejsca na dysku. Adres to numer sektora w którym znajduje się plik. Adresem są sektory dysku, w których należy szukać segmentów pliku (zwykle te sektory mają wielkość 512 bajtów). Liczba dowiązań jest to ilość skojarzonych ,,kopii" pliku ze zbiorem danych. Trochę dziwaczne, ale pokażę o co chodzi.
Najpierw utworzę plik, skopiuję go, a potem utworzę do niego dowiązanie symboliczne i twarde.
seban@syrius:~/inode% touch plik
seban@syrius:~/inode% cp plik plik_kopia
seban@syrius:~/inode% ln -s plik symboliczne
seban@syrius:~/inode% ln plik dowiazanie
Tworząc plik skojarzyłem z inodem zbiór danych na dysku, plik jest pusty więc mało w nim tych informacji. Kopia jest to odtworzenie tych samych danych w innym miejscu - innym i-węźle. Kopia została skojarzona z innym i-węzłem i plik_kopia ma inny adres niż plik. Dowiązanie symbolicze jest to jakby skrót do pliku do którego tworzy się dowiązanie. Wszystkie operacje, edycja, zmiany będą odbywały się na pliku do którego prowadzi dowiązanie symboliczne. Główną różnicą jest ilość zajmowanego miejsca (dowiązanie symboliczne zajmuje 4 bajty), oraz fakt iż dowiązanie symboliczne zajmuje oddzielny i-węzeł. Dowiązanie twarde jest to taka kopia pliku, który zajmuje ten sam i-węzeł co plik z którym skojarzone jest dowiązanie. Sprawdzić ilość dowiązań można dzięki poleceniu ls -l
-rw-r--r-- 2 seban seban 0 2006-08-26 19:15 dowiazanie
-rw-r--r-- 2 seban seban 0 2006-08-26 19:15 plik
-rw-r--r-- 1 seban seban 0 2006-08-26 19:15 plik_kopia
lrwxrwxrwx 1 seban seban 4 2006-08-26 19:16 symboliczne -> plik
Ilość dowiązań to liczba przed właścicielem, druga kolumna od lewej strony. By potwierdzić moje słowa o i-węzłach tych plików można zajrzeć w polecenie ls -i
seban@syrius:~/inode% ls -i
1180218 dowiazanie 1180218 plik 1180407 plik_kopia 1180497 symboliczne
Są cztery pliki, trzy numery inodów. dowiazanie i plik mają taki sam numer i-węzła, plik_kopia i symboliczne mają inne numery swoich i-węzłów.
Problem
Mój problem polegał na tym, że polecenie df -h pokazywało prawie 700 megabajtów wolnego miejsca na partycji, a system nie mógł tworzyć nowych plików. Długo nie mogłem poszukać rowiązania, ale po wklepaniu polecenia df -i doznałem szoku. /dev/sda2 1.3M 1.3M 0 100% / Wszystkie węzły niemalże milion trzysta tysięcy były zajęte. Pozostało tylko poszukać niepotrzebne pliki, które zajmują inody.
Rozwiązanie
Chwilę szukałem po systemie i znalazłem w katalogu /var/spool/exim4 przyczynę braku i-węzłów. W katalogach input i msglog było łącznie ponad milion plików! Szczerze mówiąc to prawie się nie zastanawiałem co to za pliki i do czego są tam potrzebne. Po usunięciu plików z tych katalogów pojawiło się więcej miejsca na dysku i dużo więcej wolnych i-węzłów.
Napisałem sobie skrypt, który wyszukuje katalogi z największą liczbą plików, oraz wyszukuje puste pliki i katalogi. Skrypt jest ogólnie dostępny i można go dowolnie używać.
KOMENTARZE
26 sierpnia 2006 | Nivertius |
26 sierpnia 2006 | Nivertius |
26 sierpnia 2006 | grzywacz |
26 sierpnia 2006 | grzywacz |
26 sierpnia 2006 | seban |
