Systemy plików w Linusie, SZKOŁA


Systemy plików w Linusie

ReiserFS

ReiserFS zwany także Reiser3 to system plików rozpowszechniany jako opensource na licencji GPL zaprojektowany i zaimplementowany przez grupę kierowaną przez Hansa Reisera. Powstał w roku 1996. ReiserFS jest obecnie obsługiwany przez Linuksa i może być w przyszłości włączony do innych systemów operacyjnych.
ReiserFS jest domyślnym systemem plików dla SuSE, Lindows i Gentoo. To jeden z pierwszych systemów plików z księgowaniem dla Linuksa. Dla jądra Linuksa w wersji 2.4.1, był pierwszym systemem plików z journallingiem, który włączono do standardowego jądra. ReiserFS jest kronikowanym systemem plików (domyślnie kronikuje się wyłącznie metadane). Księgowanie (journaling) zapewnia atomowość operacji na systemie plików. Za zwiększenie bezpieczeństwa danych płacimy szybkością (trzeba uaktualniać kronikę) i przestrzenią dyskową (kronika zajmuje miejsce).

ReiserFS to system powstały z myślą o linuksie, w przeciwieństwie do takich systemów jak JFS, czy XFS, które zostały na linuksa przeniesione z innych systemów operacyjnych. Większość systemów plików w Linuksie opera się na wcześniej istniejących systemach plików tym czasem ReiserFS został stworzony zupełnie od zera.
Przy projektowaniu swojego systemu Hans Reiser przyjął dwa założenia:

Podstawowe cechy ReiserFS to:

Większość systemów plików przechowuje pliki w całych blokach. Powoduje to, iż mnóstwo miejsca jest marnowane, szczególnie gdy mamy dużo małych plików. Ponadto niepotrzebnie wydłuża się czas operacji wejścia-wyjścia. Na przykład nie jest efektywne przechowywanie typowych obiektów bazodanowych takich jak adresy lub numery telefonów w oddzielnych plikach, ponieważ zaowocuje to stratą ponad 90% miejsca w blokach, które je pamiętają. Reiser upycha małe pliki i kawałki plików do jednego bloku. Daje to wydajność pamięciową około 94% dla małych plików.


0x01 graphic

W RaiserFS'ie wszystkie dane przechowywane są w drzewie zrównoważonym - B+ drzewie. B+ drzewo jest to B drzewo, w którym elementy są trzymane tylko w liściach natomiast w wierzchołkach wewnętrzych są trzymane wyłącznie dane dodatkowe (klucze). W strukturze B+ drzewa znajdują się zarówno pliki, katalogi jak i metadane. Dane są umieszczane wyłącznie w liściach lub specjalnych węzłach umieszczonych poniżej poziomu liści, służących do obsługi dużych plików. Takie podejście umożliwia użycie miejsca w węzłach na dodatkowe klucze i wskaźniki, a w rezultacie na zwiększenie stopnia rozgałęzienia drzewa.
Istnieją trzy typy węzłów:

  1. Węzły wewnętrzne. Nie zawierają danych, lecz jedynie wskaźniki do węzłów o poziom niżej, poprzedzielane kluczami. Klucz poprzedzający wskaźnik jest jednocześnie równy pierwszemu kluczowi z poddrzewa, do którego odnosi się ten wskaźnik. Dla układu (klucz1, wsk, klucz2) wszystkie elementy w poddrzewie wskazywanym przez wsk mają klucze z przedziału (klucz1,klucz2).

  2. Węzły sformatowane. Zawierają wpisy. W ReiserFS wyróżniamy cztery rodzaje wpisów(item) - dane bezpośrednie, dane pośrednie, wpisy katalogowe i wpisy informacyjne. Każdy wpis w węźle sformatowanym zawiera swój klucz. Węzły oraz dane. Zawierają dane (gdy item informacyjny, bezpośredni lub katalogowy) lub listę wskaźników do węzłów niesformatowanych (gdy item pośredni). sformatowane są bądź liśćmi bądź mają do siebie podczepione jeszcze liście niesformatowane. Każdy wpis w węźle sformatowanym ma swój nagłówek

  3. Liście niesformatowane (BLOB'y czyli Binary Large Objects). Nie mają żadnej struktury - służą do przechowywania ciągu bajtów. W liściach niesformatowanych nie ma kluczy. Długość ścieżki do liścia niesformatowanego jest zawsze o jeden dłuższa niż długość ścieżki do węzła sformatowanego (jest to błąd projektowy powodujący spadek wydajności i w wersji Reiser4 został on poprawiony)

0x01 graphic

Księgowanie

ReiserFX oferuje asynchroniczny model księgowania metadanych. Oznacza to, że modyfikacje metadanych nie są od razu zapisywane do dziennika, lecz są przez pewien czas przechowywane w buforze dziennika w pamięci. Zapewnione jest przy tym, że żadne dane nie zostaną zapisane na dysk zanim nie zostanie zapisana do dziennika na dysku informacja o tych zmianach. Dzięki asynchronicznemu dziennikowi, informacje o kilku zmianach danych mogą być zapisane do dziennika w jednej operacji dyskowej. Zwiększa to wydajność księgowania, ale powoduje, że po awarii systemu może nie być możliwe odtworzenie wszystkich wykonanych zmian metadanych.

0x01 graphic

REISER 4 FS

Zmiany są na tyle znaczne, że zasadne jest używanie nowej nazwy: Reiser4, zamiast ReiserFS. Tym razem twórca położył nacisk na bezpieczeństwo. Reiser4 ma być systemem dla wojska, choć oczywiście ma być również używany przez ludność cywilną. Prace nad tym systemem plików sponsoruje DARPA (Defence Advanced Research Project Agency) i Lindows.com.

Drzewo

0x01 graphic

Reiser4 powraca do klasycznej definicji drzewa zrównoważonego ze względu na długości ścieżek do liści. Nie próbuje udawać, że węzły, które przechowują obiekty większe niż węzeł, jakimś cudem nie są częścią drzewa. Dzięki temu zużywa się mniej pamięci na pamiętanie wskaźników. B+ drzewa zostały zastąpione "drzewami tańczącymi" (dancing tree).
W drzewie tańczącym wskaźniki do węzłów niesformatowanych przechowujemy poziom wyżej nad liścmi, tzn. węzły niesformatowane znajdują się na poziomie liści. W zwykłych B+ drzewach po każdej operacji zapewniamy spełnianie warunków B+ drzewa, co jest dosyć kosztowne. Doświadczenia pokazały, że opłaca się opóźniać równoważenie drzewa. Dlatego drzewo tańczące aktualizuje swoją strukturę dopiero po wykonaniu operacji commit przez pewien okres czasu pozostając niezrównoważone. Nie istnieją racje matematyczne, aby przyjąć takie postępowanie, jest ono podyktowane doświadczeniem.

W drzewie, które zawiera wszystkie dane nt. zawartości dysku, są określone 3
rodzaje wierzchołków:

W Reiserze wszystkie węzły mają ten sam rozmiar. Takie podejście ułatwia alokację nie używanego miejsca pomiędzy węzłami, ponieważ jego rozmiar jest pewną wielokrotnością rozmiaru węzła, zatem nie ma problemu z wolnym miejscem, które jest zbyt małe, aby zmieścić jeden węzeł. Ponadto dyski (stacje dysków) mają interfejs, który przyjmuje równy rozmiar bloków, co jest wygodne dla ich algorytmów korekcji błędów.

EXCENTY


W wersji 4 wprowadzono wreszcie pojęcie przedziału bloków dyskowych (extent) obecne od długiego czasu w innych systemach plików (XFS, JFS, VxFS). Dzięki temu została znacznie poprawiona efektywność obsługi dużych plików (z czym wersja 3 miała poważne problemy).

KRONIKOWANIE

Zwykłe kronikowanie jest dosyć kosztowne, bo wymaga dwukrotnego zapisu danych na dysk - do dziennika i na miejsce docelowe. W Reiser4 wprowadzono nowatorskie rozwiązanie pozwalające na jednokrotny zapis na dysku. Gdy zapisywanie do dziennika zostaje zakończone, status bloku w którym mamy zapisany dziennik zmienia się i blok staje się "normalnym" elementem systemu plików, gdy tymczasem dziennik zmienia swoje położenie na dysku. Daje to oczywiście duże przyspieszenie.

REPACKER

80% danych na dysku pozostaje nie zmienianych przez długi okres czasu. Wydajnie by było, gdyby były dobrze rozmieszczone. Reiser4 oferuje specjalny program repacker. Przechodzi on drzewo od lewej do prawej, spychając wszystko w lewo i od prawej do lewej, spychając w prawo. Defragmentuje drzewo i upycha dane.

ATOMOWOŚĆ


Wszystkie wywołania systemowe są w Reiserze atomowe. Reiser pozwala definiować nowe atomowe operacje przy użyciu wtyczek. Reiser używa specjalnych algorytmów, które pozwalają uczynić operacje atomowymi przy niewielkim dodatkowym koszcie, podczas gdy inne systemy plików musiałyby płacić wysokie, wręcz niedopuszczalne ceny za coś takiego.

PLUGINY


Reiser4 ma modularną budowę dzięki mechanizmowi wtyczek. Jest osiem
rodzajów wtyczek:

Konfiguracja partycji

0x01 graphic

Podstawowym zadaniem wszystkich administratorów systemowych jest utrzymanie układu systemu plików. Wartym odnotowania jest fakt, iż przed każdą zmianą w tabeli partycji należy zrobić archiwizację systemu plików. W wielu wypadkach, YAST oferuje sensowny schemat układu partycji podczas instalacji systemu. Mimo wszystko można również wykorzystać YAST-a do dowolnego układu partycji po zakończeniu instalacji. Z linii poleceń wykorzystujemy program fdisk do zarządzania partycjami oraz mkfs do tworzenia systemu plików.

0x01 graphic

Nazwy urządzeń i partycji Linuxowcych

0x01 graphic

W tabeli poniżej przedstawione są nazwy urządzeń linuksowych:

Urządzenie

Nazwa linuksowa

Podstawowy główny dysk twardy IDE

/dev/hda

Podstawowy dodatkowy dysk twardy IDE

/dev/hdb

Drugi główny dysk twardy IDE

/dev/hdc

Drugi dodatkowy dysk twardy IDE

/dev/hdd

Pierwszy dysk twardy SCSI

/dev/sda

Drugi dysk twardy SCSI

/dev/sdb

0x01 graphic

Partycje z kolei przejmują nazwy z nazw urządzenia i numerów partycji.

Dla przykładu pierwsza partycja na pierwszym dysku IDE ma nazwę /dev/hda1 - czyli urządzenie /dev/hda + 1 jako numer partycji. Partycje logiczne zaczynają się od numeru 5.

W tabeli poniżej przedstawiono nazwy partycji i odpowiadające im urządzenia:

Partycja

Nazwa linuksowa

Pierwsza partycja na pierwszym dysku twardy IDE

/dev/hda1

Druga partycja na pierwszym dysku twardym IDE

/dev/hda2

Pierwsza partycja na trzecim dysku twardym SCSI

/dev/sdc1

Pierwsza logiczna partycja na pierwszym dysku twardym IDE

/dev/hda5

Druga logiczna partycja na pierwszym dysku twardym IDE

/dev/hda6

0x01 graphic

Zarządzanie partycjami za pomocą fdisk

0x01 graphic

Program fdisk służy do partycjonowania twardego dysku z linii poleceń.

Do przeglądnięcia istniejącego schematu musimy użyć opcje -l.

0x01 graphic

Do zmiany schematu partycji musimy wprowadzić dysk jako parametr do polecenia. Otrzymujemy wówczas możliwość konfiguracji partycji na danym dysku. Poniższa tabelka przedstawia najczęściej używane klucze w poleceniu:

Litera

Akcja

d

Kasuje partycje

m

Otrzymujemy skrótową pomoc dla komendy fdisk

n

Tworzenie nowej partycji

p

Pokazuje listę partycji na określonym dysku

q

Kończy program bez zapisu zmian

t

Zmienia identyfikator partycji

w

Zapisuje zmiany na dysku i kończy program fdisk

0x01 graphic

Tworzenie systemów plików z linii poleceń

0x01 graphic

Można użyć następujących komend by utworzyć system plików z wiersza poleceń mke2fs, mkfs.ext3, mkreiserfs. Możemy utworzyć systemy plików (takie jak ext2, ext3, MS-DOS, MINIX, XFS, JFS) za pomocą komendy mkfs (make file system). Ta komenda jest kluczową komendą używaną do tworzenia systemów plików. Ponieważ używamy przeważnie komendy mkfs musimy poprzez opcje -t wskazać typ systemu plików, który chcemy utworzyć. Jeżeli nie wskażemy typu systemu plików, mkfs automatycznie utworzy system plików ext2.

0x01 graphic

Tworzenie systemu plików ext2 oraz ext3

0x01 graphic

W celu stworzenia systemu plików ext2 lub ext3 użyjemy polecenia mkfs. W poleceniu tym możemy użyć następujących opcji:

Opcja

Opis

-b rozmiar bloku

Możesz użyć tej opcji, by wskazać rozmiar segmentów danych w systemie plików. Dozwolone wartości segmentów danych to 1024, 2048 . .. , 16384.

-i bajtów_na_iwęzeł

Opcja ta pozwala by wskazać, jak wiele i-węzłów jest utworzonych w systemie plików. Dla wartości bajtów_na_i-węzeł możesz użyć tych samych wartości dostępnych dla wielkości segmentów. Powinieneś wybrać większą wartość dla wielkości segmentów. Jednakże nie ma sensu posiadanie większej ilości i-węzłów niż segmentów danych.

-j

Opcja ta pozwala utworzyć dziennik ext3 na systemie plików.

suse: # mkfs -t ext3 /dev/sdb1

Powyżej przedstawiono przykład utworzenia systemu plików ext3 ze standardowymi wartościami:

0x01 graphic

Montowanie systemu plików

0x01 graphic

Zamiast używania oddzielnych liter napędu w celu reprezentacji różnych partycji w systemie plików (takich jak MS-DOS czy Windows), Linux montuje partycje w folderze w systemie plików używając punktów montowania.

Dla przykładu, aby dodać nowy dysk twardy do systemu Linux , najpierw należy go podzielić na partycje i sformatować. Potem utworzyć katalog (taki jak np. /data) w systemie plików i tam zamontować napęd używając komendy montowania - mount. W celu skasowania montowania systemu plików, użyjemy komendy odmontowania - umount.


Katalog /mnt/ jest domyślnie używany do montowania lokalnych i zdalnych systemów plików. Wszystkie mobilne urządzenia są zamontowane domyślnie w katalogu /media np.

0x01 graphic

Montowanie systemów plików

0x01 graphic

Poprzez polecenie mount możemy ręcznie zmontować odpowiedni system plików. Ogólna składnia polecenia montowania wygląda następująco:

mount [-t typ_systemu_plików] [-o opcje montowania] urządzeniepunkt_montowania

0x01 graphic

Odmontowywanie systemów plików

0x01 graphic

Zmontowany system plików można rozmontować z linii poleceń komendą umount wskazując na urządzenie lub punkt montowanie.

Przykładowo aby rozmontować nagrywarkę CD zamontowaną w katalogu /media/cdrecorder wykonamy jedno z następujących poleceń:

umount /media/cdrecorder

lub

umount /dev/hdb

Wykonując polecenie umount system w pierwszej kolejności sprawdza czy dany system plików nie jest używany. Gdy jest zajęty np. używany przez kogoś lub jakiś proces wówczas system odmawia rozmontowania go.

0x01 graphic

Jak używać woluminów logicznych

0x01 graphic

Konwencjonalne partycje na dysku twardym w linuksowym systemie plików są mało elastyczne. Gdy partycja jest zapełniona, musimy przenieść dane na inne medium przed rozszerzeniem partycji, stworzyć nowy system plików, następnie ponownie przekopiować dane. Normalnie te zmiany nie mogą być implementowane bez zmian partycji sąsiednich, co zmusza do robienia kopi zapasowych tych partycji na inne media, a następnie po zakończeniu partycjonowania na nowo zapisania oryginalnych danych. Ponieważ modyfikacja partycji jest bardzo trudna rozwijano mocno projekt LVM. Dostarcza to wirtualnego zasobu pamięci zwanego grupą woluminów z których można tworzyć odpowiednie woluminy. System operacyjny daje dostęp do logicznych woluminów identycznie jak do fizycznych partycji. To podejście pozwala na zmianę rozmiaru fizycznych mediów bez wpływu na aplikacje.

Bazowa struktura LVM składa się z następujących komponentów:

Powinno się myśleć o grupie woluminów jako o dyskach twardych a logicznych woluminach jak o partycjach na tych dyskach. Grupę woluminów można podzielić na szereg logicznych dysków które można adresować jako nazwy urządzeń podobnie jak konwencjonalne partycje.

0x01 graphic

Narzędzia do administracji fizycznymi woluminami

0x01 graphic

Narzędziem służącym do inicjalizacji partycji LVM jest pvcerate:

suse: # pvcreate /dev/sdb1

0x01 graphic

Narzędzia do zarządzania grupami woluminów

0x01 graphic

Narzędzie vgcreate wykorzystywane jest do tworzenia nowych grup woluminów. Za pomocą tego polecenia możemy tworzyć grupy woluminów dodając fizyczne partycje, poniższy przykład pokazuje tworzenie grupy woluminów o nazwie dane z dodaniem partycji /dev/sdb

suse: # vgcreate dane /dev/sdb1

0x01 graphic

Narzędzia do administracji woluminami logicznymi

0x01 graphic

W celu stworzenia woluminu logicznego wydajemy polecenie lvcreate z podaniem rozmiaru woluminu, nazwy woluminu i grupy woluminów w obrębie której tworzymy dany wolumin logiczny.

suse: # lvcreate --size=100MB dane -n poufne

Na nowo utworzonym woluminie zakładamy odpowiedni system plików traktując ten wolumin jako normalny wolumin fizyczny.

suse: # mkfs -t ext3 /dev/dane/poufne

Aby przeglądnąć dostępne woluminy logiczne wykorzystujemy polecenie lvscan, natomiast poleceniem lvextend możemy powiększać przestrzeń którą zawiera wskazany wolumin logiczny. Przed użyciem polecenia lvreduce do zmniejszenia przestrzeni zajmowanej przez dany wolumin, musisz zmniejszyć rozmiar systemu plików. Jedynie wówczas można zredukować miejsce zajmowane przez logiczny wolumin.

8



Wyszukiwarka

Podobne podstrony:
Co daje system plików NTFS, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr II
SO8 Systemy plików
System plików to sposób organizacji danych na dyskach, Notatki z systemów
System plików, zOthers, Systemy operacyjne i sieci komputerowe
Systemy plików
07 Linux System plików
m System plików FAT
system oceny zgodnoÂci, Szkoła Przemek, Zarządzanie bezpieczeństwem pracy dr.krauze, FW ZZIP 12 Zar
Systemy Plików Na Dyskach Twardych i Nośnikach Wymiennych, Systemy plików
lokalne systemy plikow linuksa QDYSJ7S6JPJKZ7LSEYXKC5472KXDIE2DSESRAPA
Systemy plikow
nowe systemy plikow dla linuksa Nieznany
systemy plików FAT12, FAT16, FAT32, NTFS
Systemy plików, zOthers, Systemy operacyjne i sieci komputerowe
ANALIZA PORÓWNAWCZA SYSTEMÓW PLIKÓW I ICH ATRYBUTY
system plików
Dyski i systemy plików, Notatki lekcyjne ZSEG, Informatyka

więcej podobnych podstron