1 / 33

UNIX jesień 2013

UNIX jesień 2013. Wykład 2 System plików UNIX / Linux. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Istota systemu plików.

yoland
Download Presentation

UNIX jesień 2013

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIXjesień 2013 Wykład 2 System plików UNIX / Linux dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz

  2. Istota systemu plików UNIX jako system operacyjny jest zbudowany wokół pojęcia systemu plików, które używane są do przechowywania informacji składających się na długofalowy stan systemu. W Unixie wszystko jest plikiem. • Stan ten zawiera: • jądro systemu operacyjnego, • pliki wykonywalne dla poleceń wspieranych przez system, • informacje konfiguracyjne, • tymczasowe pliki robocze, • dane użytkownika • różne pliki specjalne służące do kontroli dostępu do składników sprzętowych systemu i funkcji systemu operacyjnego. • Każdy element przechowywany w systemie plików UNIX należy do jednego z czterech typów: • Zwykły plik • Katalog • Urządzenie • Dowiązanie

  3. Rodzaje plików w UNIX PLIK ZWYKŁY Może zawierać tekst, dane lub informacje programu Nie może zawierać innych plików lub katalogów. Nazwy plików w UNIX’ie mogą zawierać dowolny znak z wyjątkiem / i mieć do 256 znaków długości (znaki *, ?, # i & mogą mieć specjalne znaczenie dla powłoki i nie należy ich używać w nazwach). Spacja w nazwie powoduje niewygodę w korzystaniu – lepszy jest podkreślnik_. KATALOG Zawiera pliki i inne katalogi Specjalnenazwykatalogów W każdym katalogu są zdefiniowane dwa specjalne katalogi: .bieżący katalog ..katalognadrzędny W niektórych powłokach zdefiniowane są ponadto katalogi: ~ katalog domowy zalogowanego użytkownika ~nazwa_uzytkownika katalog domowy określonego użytkownika

  4. Rodzaje plików UNIX Dowiązanie – wskazanie na inny plik zwykły lub katalog Dowiązania twarde (hard links). Dowiązanie twarde to utworzenie nowej nazwy dla istniejącego pliku. Dowiązania symboliczne (symbolic links). Link symboliczny to dowiązanie do pliku wskazujące na jego nazwę. Urządzenie jest traktowane przez UNIX jak plik, aby zapewnić aplikacjom łatwość dostępu do niego. Są dwa rodzaje urządzeń urządzenie znakowe – pseudoplik reprezentujący urządzenie przesyłające dane strumieniem, bajt po bajcie (np. modem) urządzenie blokowe – pseudoplik reprezentujący urządzenie zapewniające swobodny dostęp do danych, wymieniające dane w blokach (np. dysk twardy) Nazwany potok – specjalny plik, który ma służyć jako łącznik między procesami Gniazdo – plik służący jako mechanizm komunikacji sieciowej między procesami

  5. Drzewo katalogów Linuksa System plików UNIX ma strukturę odwróconego drzewa. Początek jest w katalogu root (korzeń), oznaczanym /.

  6. Katalogi domowe i systemowe Osobiste pliki użytkowników znajdują się zwykle w katalogu /home/nazwa_uzytkownika(dla zwykłych użytkowników) i /root (dla superużytkownika). Katalog domowy jest zwykle ustawiany jako bieżący katalog roboczy powłoki zaraz po zalogowaniu. Użytkownik może swobodnie tworzyć, modyfikować i usuwać pliki i katalogi w obrębie swojego katalogu domowego i jego podkatalogów. Może również ograniczać dostęp do nich innym użytkownikom (ale nie superużytkownikowi). W katalogach systemowych przechowywane są pliki systemu operacyjnego, aplikacji, dokumentacja – wszystko oprócz plików prywatnych użytkowników. Zwykli użytkownicy mogą przeglądać większość zawartości katalogów systemowych, choć zwykle nie mogą w nich pisać (tworzyć, modyfikować lub usuwać plików i podkatalogów). Nazwy katalogów systemowych składają się zwykle z 3 części:

  7. Zakres katalogu Zakres ścieżki katalogu określa przeznaczenie całej hierarchii katalogów. Najczęstsze zakresy to:

  8. Kategorie katalogów Kategorie programów Kategorie dokumentacji

  9. Kategorie katalogów Kategorie konfiguracji etc pliki konfiguracyjne systemu i usług; init.d, rc.d, rc0.d, rc1.d,. . . , rc6.d plikikonfiguracyjnewykorzystywanepodczasrozruchusystemu. Kategorie usług

  10. Kategorie katalogów Kategorie systemu wyświetlania Kategorie sprzętu Kategorie plików czasu wykonania

  11. Katalogi systemu operacyjnego

  12. Polecenia obsługi plików

  13. Tworzenie dowiązań Dowiązania twarde (hard link) - to utworzenie nowej nazwy dla istniejącego pliku. Polecenie to jest podobne do kopiowania pliku z tym, że przy kopiowaniu tworzona jest niezależna kopia pliku a przy dowiązaniu twardym tworzona jest tylko nowa nazwa, która wskazuje na ten sam istniejący już plik. Do tworzenia dowiązań twardych służy polecenie ln. lncel_dowiązania dowiązaniegdzie:cel_dowiązania - plik do którego chcemy zrobić dowiązaniedowiązanie - plik, który będzie stanowił dowiązanie do pierwszego Przykład $ ln ~/Desktop/dorota.doc ~/Desktop/Katalog1/aneta.doc Polecenie to utworzy nam w katalogu "Katalog1" plik "aneta.doc", który będzie dowiązaniem do pliku "dorota.doc" znajdującego się na pulpicie $ ls –l ~/Desktop/Katalog1-rw-r--r-- 2 student student 12 wrz 26 18:30 aneta.doc 2 wskazuje na liczbę dowiązań do pliku Oba dowiązania są równoprawne. Skasowanie jednego z nich nie kasuje zawartości pliku. Aby skasować plik należy skasować wszystkie dowiązania do niego.

  14. Tworzenie dowiązań Dowiązania symboliczne (symboliclinks) – jest to dowiązanie do pliku wskazujące na jego nazwę. Link symboliczny wskazuje na nazwę pliku, która dopiero wskazuje na plik. Linki symboliczne tworzy się używając parametru -s $ ln -s ~/Desktop/dorota.doc ~/Desktop/Katalog1/aneta.doc $ ls –l ~/Desktop -rw-r--r-- 1 student student 12 wrz 27 12:29 dorota.doc  Utworzenie linku symbolicznego nie zwiększa liczby dowiązań do pliku. $ ls –l ~/Desktop/Katalog1lrwxrwxrwx 1 student student 12 wrz 27 12:25 aneta.doc -> /home/student/Desktop/dorota.doc Dowiązania referencyjne (referencelinks) – jest to dowiązanie dostępne w systemach plików BTRFS i OCFS2 poleceniem cp --reflink

  15. Nazwy plików – symbole wieloznaczne Wiele nazw plików może być wyszczególnianych przy pomocy znaków dopasowań do wzorca: ? zastępuje dowolny znak na wskazanej pozycji w nazwie pliku * zastępuje zero lub więcej znaków w nazwie pliku. Sama * odpowiada wszystkim plikom; *.* odpowiada wszystkim plikom mającym w nazwie . znaki otoczone nawiasami kwadratowymi [ i ] odpowiadają dowolnej nazwie pliku, która ma jeden z tych znaków na wskazanej pozycji lista rozdzielonych przecinkami łańcuchów znaków otoczona nawiasami klamrowymi { i } jest rozwijana jako iloczyn kartezjański z otaczającymi znakami. ??? odpowiada wszystkim trójznakowym nazwom plików ?ell? odpowiada wszystkim pięcioznakowym nazwom plików z ‘ell’ w środku he* odpowiada wszystkim nazwom plików rozpoczynającym się od ‘he’ [m-z]*[a-l] odpowiada wszystkim nazwom plików zaczynającym się na litery od ‘m’ do ‘z’ i kończącym na litery od ‘a’ do ‘l’ {/usr,}{/bin,/lib}/file rozwija się na ‘/usr/bin/file’, ‘/usr/lib/file’, ‘/bin/file’ i ‘/lib/file’

  16. Źr. Wikipedia Systemy plików w Linuksie Definicja: System plików – metody i struktury danych używane przez system operacyjny w celu zapisania informacji o plikach i ich zawartości na danej partycji; jest to sposób organizacji plików na dysku. Słowo to jest używane również w znaczeniu dysku, partycji. Linux obsługuje kilkanaście typów systemów plików minix – najstarszy, najbardziej niezawodny. Ograniczenie nazwy pliku do 30 znaków i wielkości do 64MB, brakuje niektórych znaczników czasu. xia – zmodyfikowana wersja systemu minix (podniesiono limity długości nazwy oraz rozmiaru plików). Obecnie nie używany. ReiserFS – szybki i stabilny, dobrze radzi sobie z dużą liczbą małych plików. Obecnie w wersji 3.6. XFS – szybki ale podatny na awarie - wiele informacji przechowuje w pamięci RAM. ext – podstawowa i najstarsza wersja dla linuksa. Aktualnie nie używany. ext2 – ulepszona wersja ext. Ograniczono fragmentację danych i wprowadzono mechanizm naprawy plików ext3 – następca ext2. Wprowadzono mechanizmy księgowania (journaling) co zwiększyło stabilność systemu i odporność na awarie. ext4 – następca ext3, obecnie jeden z najpopularniejszych systemów plików dla Linuksa. Obsługa innych systemów plików (ograniczone zastosowanie) NTFS, msdos (FAT), usmdos (wersja rozszerzona msdos, długie nazwy), iso9660 (płyty CD-ROM) nfs (system sieciowy) hpfs (system plików OS/2), sysv (używany przez SystemV/386)

  17. Organizacja partycji w Linuksie

  18. Organizacja partycji w Linuksie Oznaczenia dysków i innych urządzeń hda dysk ATA primary master hdb dysk ATA primaryslave hdc dysk ATA secondary master hdd dysk ATA secondarysalve sda pierwszy dysk SATA (lub SCSI) sdb drugi dysk SATA (lub SCSI) sdc trzeci dysk SATA (lub SCSI) …… sr0 - pierwszy nośnik wymienny SATA lub USB sr1 - drugi magazyn wymienny SATA lub USB …… cdrom – napęd CD Uwaga – w różnych dystrybucjach nazwy mogą się różnić

  19. Podział dysku na partycje Partycja systemowa SWAP. Jest to partycja, która jest używana jako zapasowa pamięć. Spełnia tę samą rolę co plik wymiany w systemie Windows. Rozmiar partycji nie musi być większy niż 512MB, chyba że korzystamy z hibernacji – wówczas wielkość będzie równa ilości RAM. Niektóre dystrybucje umożliwiają pracę bez partycji SWAP – z plikiem wymiany podobnie jak w Windows. Istnieje możliwość rozdzielenia partycji SWAP na kilka fizycznych dysków co zwiększy wydajność systemu. Partycje użytkowe – można wykorzystać do przechowywania danych. Przygotowując partycje na potrzeby użytkowe często tworzy się jedną partycję na potrzeby systemu operacyjnego i osobną partycję na potrzeby użytkowników. Pozwala to zwiększyć bezpieczeństwo danych użytkowników w razie poważnej awarii dysku czy systemu.

  20. Przykładowy podział dysku na partycje sdb4 to partycja logiczna

  21. Zasady podziału dysku na partycje Zasada główna – nie instalujemy całego linuksa na jednej partycji Zaleca się utworzenie partycji /home – dzięki temu, nasze dokumenty czy skopiowane ustawienia systemu możemy bezpiecznie trzymać podczas formatowania dysku z systemem Przykładowy podział 1. partycja C:\ pod Windows z systemem plików NTFS 2. partycja montowana jako / = ok. 0,5GB (system plików ext3)Tutaj będzie Kernel, pliki roota, pliki katalogu /etc. 3. partycja montowana jako /SWAP = ok. 1GB 4. partycja montowana jako /usr = ok. 2,5-5GB (system plików ext3)Na tej partycji Linux umieści pliki programów, zależenie od ich liczby. 5. partycja montowana jako /var = ok. 5-8GB (system plików ext3) 6. partycja montowana jako /var/log = ok. 1-2GB (system plików ext3) 7. partycja montowana jako /tmp = ok. 1GB (system plików ext3) 8. partycja montowana jako /archiwum = 8GB (system plików ext3) 9. partycja montowana jako /home/public = ok. 7-8GB (system plików ext2) – możliwość odczytu z Windows 10. partycja montowana jako /home pozostała objętość – pliki użytkowników

  22. Program rozruchowy Program rozruchowy (ang. bootloader) – działający na zasadzie bootstrapu program uruchamiany jako pierwszy po wykonaniu BIOS-u, służący do załadowania systemu operacyjnego do pamięci operacyjnej komputera. Segment startowy programu rozruchowego może być umieszczony w pierwszym, 512-bajtowym fragmencie sektora startowego dysku twardego (ang. Master BootRecord). W systemach uniksowych pliki dodatkowe programu rozruchowego znajdują się zazwyczaj w katalogu lub partycji montowanej w katalogu /boot. GRUB (ang. GRandUnifiedBootloader) - program rozruchowy rozwijany w ramach projektu GNU. Pozwala zainstalowa wiele systemów na jednym komputerze (m. in. Linux, FreeBSD, Windows, Mac OS X) Potrafi odczytywać wiele systemów. W ten sposób można załadować jądro systemu operacyjnego oraz ewentualnie wirtualny dysk startowy. Dodatkowo GRUB potrafi ładować systemy bezpośrednio z urządzenia. GRUB obsługuje zabezpieczenia hasłem uruchamiania dowolnego systemu.

  23. Program rozruchowy LILO (z ang. Linux Loader) niezależne od żadnego systemu plików, potrafi załadować jądro systemu operacyjnego Linux lub inny kod wykonywalny zarówno z dyskietki jak i z dysku twardego. Program obsługuje od 1 do 16 różnych wpisów. Różne parametry startowe (takie jak urządzenie z którego należy zamontować główny system plików) mogą być ustawiane niezależnie dla każdego wpisu. LILO może zostać zainstalowany jako główny program rozruchowy w MBR (uruchamiany bezpośrednio przez BIOS) lub w sektorze rozruchowym partycji (uruchamiany pośrednio - z innego programu rozruchowego). SYSLINUX – zestawem programów rozruchowych, służących do uruchamiania jądra Linux. Jest używany w różnego rodzaju dyskietkach i płytach ratunkowych oraz tzw. lekkich systemach. SYSLINUX dla systemu FAT (do uruchamiania z dyskietki) ISOLINUX dla systemu ISO 9660 (do uruchamiania z płyty) PXELINUX dla serwera sieciowego PXE(Pre-booteXecution Environment) EXTLINUX dla systemów ext2, ext3, ext4 oraz btrfs; MEMDISK dla uruchamiana systemu operacyjnego DOS

  24. Narzędzia systemu plików mount, umount– montowanie filesystemów (konieczne przed wykonaniem operacji) fdisk, cfdisk– narzędzia partycjonowania dysku mkfs– formatowanie partycji (tryb tekstowy) badblocks  – wyświetla listę bloków, które uznał za zepsute. fsck– narzędzie naprawy systemu plików. stat– informacje o pliku df – podaje ilość wolnego miejsca na dyskach du – zwraca ilość miejsca zajmowanego przez plik dumpe2fs  – drukuje superblok i dane grupy bloków systemu plików znajdującego się na urządzeniu tune2fs – tuning systemu plików GParted  – edytor partycji oparty na środowisku graficznym GNOME dostępny na licencji GPL TestDisk dobry darmowy program do odzyskiwania danych na dyskach twardych.

  25. Montowanie filesystemów Przed użyciem systemu plików należy go zamontować. System operacyjny sprawdza niektóre części systemu plików w celu upewnienia się, że działa. Ponieważ w Unixie pliki przechowywane są w jednym drzewie, nowy system plików będzie tworzył zawartość jakiegoś katalogu. # mount /dev/hda2 /home # mount /dev/hda3 /usr

  26. Plik /etc/fstab /etc/fstab (ang. file systems table) to plik konfiguracyjny w systemach uniksowych, zawierający informacje na temat montowania urządzeń przy uruchomieniu systemu. # <file system> <mount point> <type> <options> <dump> <pass> /dev/sda2 swapswapdefaults 0 0 /dev/sda1 / ext3 defaults 0 0 /dev/sda3 /home ext3 defaults 1 2 /dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0 /dev/hda1 /mnt/debian auto defaults 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/ptsdevpts gid=5,mode=620 0 0 proc /procprocdefaults 0 0 /etc/mtab( mounted file systems table, tablica zamontowanych systemów plików) zawiera listę zamontowanych systemów plików. Plik ten ma format bardzo podobny do pliku fstab i jest automatycznie modyfikowany podczas użycia polecenia mount.

  27. System plików UNIX (s5fs) System plików Unix obecnie chwili już nie istnieje. Unix czy Linux pracuje z wirtualnym systemem plików UNIX, w warstwie niższej pracuje inny system plików (ext3, ext4)

  28. System plików Unix (s5fs) Wyróżnione obszary partycji Superblok - blok pełni rolę bootsektora. Ulega zmianie w trakcie pracy Tablica I-Węzłów(inode) - zawiera strukturę katalogów. Zapisywana w jednym obszarze ciągłym. Są to pozycje katalogowe, ale bez nazw plików. Struktura wpisu Typ pliku - plik, katalog, specjalny Właściciel, właściciel grupowy, atrybuty dostępu SUID SGID 32-bitowa długość pliku (w 32bitowych linuksach, w 64bitowych jest to 64bit pozycja) Atrybuty ID, czasu Liczba twardych dowiązań do pliku. Położenie na dysku - tablica indeksowa Dalej znajduje się przestrzeń danych – bloki z danymi plików i katalogów oraz bloki pośrednie. Rozmiar bloku dyskowego wynosi 512 bajtów pomnożone przez pewną potęgę 2.

  29. Katalog w s5fs Katalog jest plikiem specjalnym zawierającym listę plików i podkatalogów. Składa się z rekordów o stałym rozmiarze równym 16 bajtów. Pierwsze 2 bajty zawierają numer i-węzła, a następne 14 nazwę pliku. Taka budowa katalogu ogranicza liczbę plików w partycji do 65535 plików oraz długości nazw plików do 14 znaków. Ponieważ katalog jest plikiem, ma także i-węzeł, który zawiera pole identyfikujące plik jako katalog. Jeśli numer i-węzła odpowiadający pozycji jest równy 0 to oznacza, że plik już nie istnieje. Katalog główny partycji oraz jego pozycja zawsze mają numer równy i-węzła 2.

  30. Pliki Pliki w systemie UNIX nie zajmują ciągłego obszaru na dysku. W miarę wzrostu rozmiaru pliku jądro przydziela mu nowe bloki w wygodnym miejscu na dysku. Pozwala to łatwo zmniejszać i zwiększać rozmiar pliku nie fragmentując dysku. System plików musi więc utrzymywać informacje o położeniu bloków każdego pliku (w postaci adresów bloków fizycznych). Logiczny numer bloku jest indeksem w tej tablicy.

  31. Pliki Wielkość tablicy zależy od rozmiaru pliku. Dla dużych plików wymagało by to trzymania tablicy w kilku blokach dyskowych. Dlatego trzyma się małą listę w samym i-węźle, a dodatkowe bloki stosuje się w przypadku dużych plików. Jest to efektywne rozwiązanie do obsługi małych plików i wystarczająco elastyczne do obsługi bardzo dużych plików. Dziury Pliki uniksowe mogą zawierać tzw. dziury. Użytkownik może utworzyć plik, ustawić wskaźnik pozycji w pliku na dużą wartość i tam zapisać dane. Przestrzeń bez danych między tą pozycją a początkiem pliku jest dziurą. Jeśli proces spróbuje odczytać tą przestrzeń stwierdzi, że znajdują się tam bajty NULL o wartości 0. Żeby nie marnować miejsca na dziury jądro wpisuje zera w odpowiednie miejsca tablicy di_addr lub bloku pośredniego. Przy próbie odczytu, jądro przekazuje w wyniku blok wypełniony zerami. Przestrzeń dyskowa jest przydzielana jedynie przy zapisie danych do bloku.

  32. Alokacja I-węzłów • Stosujesięalgorytmprzeszukiwaniasekwencyjnego, zoptymalizowanyprzezczęściowąlistęwolnychi-węzłówzawartą w superbloku. • Alokujemyodpoczątkulisty (z prawej do lewej). • Jeślinumerzwalnianegoi-węzła jest mniejszyniżtego z końcalisty, to dodajemy go nakońculisty, w przeciwnymwypadkunierobimynic. • Pustąlistęuzupełniamy o wolnei-węzłyzaczynającprzeszukiwanieodnastępnegopoostatniozaalokowanym. (pozwalana to poprzedniareguła) Sytuacja początkowa Alokujemy nr 43 Alokujemy nr 44. Zwracamy nr 43 Zwracamy nr 44. Alokujemy nr 45 .. 43. Uzupełniamy listę

  33. Alokacja bloków Nie ma możliwości sprawdzenia czy blok jest wolny, więc trzeba pamiętać całą listę wolnych bloków. • Począteklisty jest w superbloku. • Ostatni element listy w danymblokuzawieradalszączęśćlisty. • Alokujemy z początkulisty. • Zwracamyrównieżnapoczątek. Przykładowa lista wolnych bloków. Alokujemy od nr 128 do nr 30

More Related