niedziela, 16 września 2012

Systemy plików Unix/Linux


Zrozumienie koncepcji systemu plików, a szczególnie struktury katalogów i związanych z tym pojęć, pozwoli Ci się stać dobrym administratorem.

Co to jest plik?

Plik jest to zestaw informacji przechowywanych na dysku pod określoną nazwą, albo urządzenie, które może przechowywać informacje (napęd CD/DVD, napęd dyskietek, pamięć taśmowa itp). Mogą to być pliki muzyczne mp3, pliki tekstowe, programy, zdjęcia itd.
Nazwy plików w Linuksie mogą mieć maksymalnie 256 znaków, mogą to być małe i duże litery, które są rozpoznawalne, dlatego dla wygody lepiej jest nazywać pliki małymi literami.

Co to jest katalog?

Katalog jest to zestaw plików.. Są dwa rodzje katalogów:

  • Katalog główny-dokładnie mówiąc jest tylko jeden katalog główny, który jest oznaczony / (ukośnik). Jest to korzeń całego systemu plików i nie może być usunięty.
  • Podkatalog jest katalog umieszczony poniżej katalogu głównego, który może być tworzony i modyfikowany przez użytkownika.
Katalogi są używane do organizowania danych i programów bardziej efektywnie.

Unix/Linux obsługuje wiele systemów plików
  • Ext2 - To jest system plików podobny do Unix. Ma koncepcje bloków, węzłów i katalogów
  •  Ext3 - Jest Ext2 rozszerzony o księgowanie. Księgowanie umożliwia szybkie odzyskiwanie systemu plików. Obsługa POSIX ACL (Access Control Lists)
  • Ext4 - Następca ext3, obecnie jeden z najpopularniejszych systemów plików dla Linuksa
  • ReiserFS - Bardzo szybki i stabilny system plików, szczególnie dobrze radzi sobie z dużą liczbą małych plików
  •  Isofs (iso9660) - Używany przez CDROM systemu plików
  •  Procf s- System plików proc działa jako interfejs do wewnętrznych struktur danych w jądrze. Może być używany w celu uzyskania informacji na temat systemu i zmienić niektóre parametry jądra w czasie wykonywania za pomocą komendy sysctl.
np. można dowiedzieć się jaki mamy procesor:

 # cat /proc/cpuinfo
  •   NFS - Network File System pozwala wielu użytkownikom i systemom dzielić te same pliki przez sieć za pomocą systemu klient/serwer NFS
  •  NTFS - System plików stosowany w systemach Windows
Co to jest system plików Unix/Linux

System plików Linuksa jest to kolekcja plików i katalogów zapisanych na dysku. Każdy system plików jest przechowywany na oddzielnej partycji dysku. To kilka z nich:
  •  / - Specjalny system plików, który zawiera pliki w kilka katalogów, w tym katalogu / dev, / sbin, / etc tmp
  •  / usr - zawiera programy użytkowe
  •  / var - przechowuje pliki logów, maile i inne dane
  •  / tmp - zawiera pliki tymczasowe
  •  /home - zawiera katalogi domowe użytkowników
Superblock systemu plików Unix/Linux

 Bloki wykorzystywane są do dwóch różnych celów:
  1.  Większość bloków przechowuje dane użytkownika o plikach
  2. Niektóre z bloków w każdym systemie plików przechowują metadane.
W najprostszych słowach metadane opisują strukturę systemu plików. Struktura metadanych to superblok, inode i katalogi.

Superblok

Każdy system plików (Ext4, ReiserFS itd) ma superblock, który zawiera informacje jak:
  • Typ systemu plików
  •  Rozmiar
  •  Status
  •  Informacje o innych strukturach metadanych
Jeżeli stracisz informacje o superbloku to będziesz w kłopotach (możesz stracić dane). Dlatego Linux przechowuje wiele zapasowych kopii superbloku w każdym systemie plików. Jest to bardzo ważne w wielu sytuacjach nadzwyczajnych, na przykład można użyć kopii zapasowych do przywrócenia uszkodzonego podstawowego superbloku. Następujące polecenie wyświetla podstawową i zapasową lokalizację superbloku na / dev/sda3:

# dumpe2fs /dev/hda3 | grep -i superblock

Wynik:

Primary superblock at 0, Group descriptors at 1-1
Backup superblock at 32768, Group descriptors at 32769-32769
Backup superblock at 98304, Group descriptors at 98305-98305
Backup superblock at 163840, Group descriptors at 163841-163841
Backup superblock at 229376, Group descriptors at 229377-229377
Backup superblock at 294912, Group descriptors at 294913-294913

Błędy systemu plików Unix/Linux

Kiedy używamy terminu awaria systemu plików mamy na myśli uszkodzenie struktury danych systemu plików, takich jak inode, katalogi czy superblok. Może to być spowodowane przez jeden z następujących względów:
  • Błędy administratorów Linuksa
  •  Błędne działające sterowniki dysku
  • Awarie zasilania
  • Błędy jądra, dlatego na produkcyjnym systemie należy używać stabilnego jądra
Ze względu na awarię systemu plików:
  • System plików odmówi zamontowania
  • Cały system się zawiesza
  • Nawet jeżeli system plików zostanie prawidłowo zamontowany, użytkownicy mogą zauważyć dziwne zachowanie systemu takie jak samoczynne restarty, bełkot znaków w listowaniu katalogu itp.
Więc jak można temu zapobiec. Większość problemów może rozwiązać program do naprawy systemu plików ext2/ext3/ext4 o nazwie fsck.. Zakładając że katalog /home jest na partycji  /dev/sda3 wydaj polecenie:

# e2fsck -f /dev/sda3
opcja -f Wymusza sprawdzanie, nawet jeśli system plików wydaje się czysty.

Należy najpierw odmontowć partycję /dev/sda3.

Pamiętaj, że jeśli superblok nie zostanie znaleziony (bo został uszkodzony), to e2fsck zakończy działanie z błędem krytycznym. Jednakże Linux utrzymuje wiele zapasowych kopii superbloku w każdym systemie plików, więc można użyć opcji -b {} superblok alternatywny, aby pozbyć się tego problemu. Położenie kopii zapasowej superbloku zależne jest od rozmiaru bloku w danym systemie plików:
  •  Dla systemów plików o rozmiarze bloku 1k, kopia zapasowa superbloku można znaleźć w bloku 8193
  •  W systemach plików o rozmiarze bloku 2k, w bloku 16384
  •  Dla bloku 4k, w bloku 32768
Można również spróbować jednego z następujących poleceń w celu ustalenia, zapasowej lokalizacji superbloku:

# mke2fs -n /dev/sda3

albo

# dumpe2fs /dev/sda3|grep -i superblock



Aby naprawić system plików przez zapasowy superblok użyj polecenia w następujący sposób:

# e2fsck -f -b 8193 /dev/sda3

Jednakże zalecane jest zrobienie kopii zapasowej przed uruchomieniem fsck. żeby wykonać kopię zapasową wydaj polecenie:

# dd if=/dev/sda3 of=/disk2/backup-sda2.img

Zrozumienie węzłów systemów Unix/Linux

Inode (index node) jest podstawowym pojęciem systemu plików w systemach Linux i UNIX. Każdy obiekt w systemie plików jest reprezentowany przez węzeł. Ale co to są obiekty? Spróbujmy to zrozumieć w prostych słowach. Każdy plik w Linuksie (i UNIX) ma następujące atrybuty:
  •  Typ pliku> (plik wykonywalny, blok specjalny itp.) 
  •   Uprawnienia (odczyt, zapis, itp.)
  • Właściciel pliku
  • Grupa
  • Wielkość pliku
  • Czas dostępu do pliku, zmiany i modyfikacje
  • Cas kasowania pliku
  •  Ilość linków (soft / hard) 
  • Rozszerzone atrybuty jak otworzyć tylko albo usunąć tylko, dotyczy roota
  • Access Control List (ACL)
Wszystkie powyższe informacje przechowywane są w węźle. W skrócie inode identyfikuje plik i jego atrybuty (jak wyżej). Każdy węzeł jest identyfikowany przez unikatowy numer węzła w systemie plików. Inode jest również znany jako numer indeksu.

Definicja inode

Inode to struktura danych na tradycyjnym stylu uniksowym systemie plików takich jak ReiserFS lub ext3. Węzeł przechowuje podstawowe informacje o pliku regularnego, katalogu lub innego obiektu systemu plików.

Jak sprawdzić numer i-węzła pliku? 

Można użyć polecenia ls-i, aby zobaczyć numer i-węzła pliku

$ ls -i /etc/passwd

Przykładowe dane wyjściowe
  32820 / etc / passwd 

Można również użyć polecenia stat, aby dowiedzieć się numer i-węzła i jego atrybutów:


File: `/etc/passwd'
Size: 1988            Blocks: 8          IO Block: 4096   regular file
Device: 341h/833d       Inode: 32820       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2005-11-10 01:26:01.000000000 +0530
Modify: 2005-10-27 13:26:56.000000000 +0530
Change: 2005-10-27 13:26:56.000000000 +0530

4 komentarze:

  1. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  2. Absolutne podstawy jeśli chodzi o administrowanie systemami Linux. No ale od czegoś w końcu trzeba zacząć. Gdy ktoś ma w planach tworzyć aplikacje użytkowe jak https://craftware.pl to z pewnością takie rzeczy jak praca w Linuxie musi mieć opanowane perfekcyjnie.

    OdpowiedzUsuń
  3. Jeżeli chodzi o rozwiązania informatyczne to ja jestem ich wielkim zwolennikiem i korzystam jeśli tylko mogę. Dlatego w firmie gdzie pracuję często stawiamy na systemy informatyczne https://www.connecto.pl/system-informatyczny-potrzebny-firmie/ które po prostu ułatwiają nam codzienną pracę.

    OdpowiedzUsuń
  4. Fajny artykuł. Pozdrawiam serdecznie.

    OdpowiedzUsuń