Bezpieczeństwo systemów komputerowych - wykład IX i X System plików, i Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2018/2019 1/50
Plan wykładu 1 System plików 2 System plików 3 System plików 4 2/50
Zaliczenie przedmiotu Bezpieczeństwo systemów komputerowych Terminy: 1 termin 1.04.2019 r. godz. 9.30, sala A4, 2 termin 8.04.2019 r. godz. 9.30, sala A3 lub A4, 3 termin 15.04.2019 r. godz. 9.30, sala A3 lub A4. Struktura testu (dla pierwszego terminu): około 40 pytań, jednokrotny wybór (+2, -1), 1 zadanie praktyczne - uzupełnienie tablicy partycji. Dostępne narzędzia: długopis, ołówek, gumka do ścierania, kalkulator. 3/50
System plików 4/50
System plików I problemy związane z systemem plików EFS, Silicon Graphics, Inc., 1993 r. obsługa w Linuksie, ekstremalna skalowalność wątków, przepustowość systemu plików, rozmiary plików, maksymalny rozmiar partycji - 18 milionów TB, maksymalny rozmiar pliku - 9 milionów TB, rozmiar bloku - od 512 B do 64 kb, wsparcie dla platformy wieloprocesorowej. 5/50
System plików II wstępne przydzielanie przepustowości I/O z wcześniej ustaloną szybkością, skalowalność i równoległość, gwarantowana szybkość I/O, zapewnia spójność danych (rejestrowanie metadanych, wspieranie barier zapisu), księgowanie, rozbudowane zarządzanie uprawnieniami, wykorzystywanie B+drzew, przedziały blokowe i bloki zmiennej długości, obsługa migawek. 6/50
System plików III opóźniona alokacja wolnej przestrzeni, odporny na fragmentację, obsługa defragmentacji on-line. natywne narzędzia do tworzenia kopii zapasowych i przywracania, możliwość stosowania na macierzy RAID, obsługa rzadkich plików, listy uprawnień (ang. Access Control List) - umożliwiają tworzenie zwykłych praw dla właściciela i grupy oraz definiowanie odpowiednich uprawnień dla każdej konkretnej osoby (grupy osób). 7/50
Struktura logów 8/50
Księgowanie zapewnia spójność danych w systemie plików (pomimo awarii zasilania czy systemu), księgowanie metadanych, dziennik - okrągły bufor bloków dyskowych, zawartość - logiczne wpisy (wykonywane operacje), ograniczenia dziennika: 64 bloków i 128 MB, dziennik może być przechowywany w sekcji danych lub na innym urządzeniu, aktualizacje wykonywane asynchronicznie, automatyczne odzyskiwanie danych po awarii. 9/50
Grupy alokacji (ang. Allocation Groups) I autonomiczne jednostki systemu plików, podsystem systemu plików, stały rozmiar - do 1 TB (w praktyce - 0,5 GB), traktowane jako indywidualne systemy plików, wiele grup alokacji = równoległe wykonywanie operacji, plik/katalog może obejmować kilka grup alokacji, 10/50
Grupy alokacji II zarządzanie wolnymi obszarami, i-węzły, sposoby przechowywania danych: strukturze i-węzła, tablice list dowiązań do bloków, B+-drzewo zajmowanych bloków, domyślnie: umieszczanie danych w tej samej grupie co ich katalog nadrzędny, alokacja na podstawie ekstentów. 11/50
Struktura superblocku 12/50
Struktura drzewa wolnych przedziałów 13/50
Struktura logów 14/50
B+drzewo zarządzanie dynamicznie alokowanymi i-węzłami, śledzenie położenia wolnych obszarów (B+drzewa zastepuja tu mapy bitowe stosowane w tradycyjnych systemach plików), indeksowanie nazw wpisów katalogów (w miejsce liniowego przeszukiwania katalogów stosowanego w tradycyjnych systemach plików), odwzorowywanie przydziału obszarów do pliku, 15/50
B-drzewo vs. B+drzewo 16/50
i-węzeł i-węzeł ma przypisany unikalny numer. Struktury i-węzła: i-węzeł - używany tylko przez system plików, węzeł ondisk - przechowywanie metadanych dla plików katalogów i innych typów danych: domyślny rozmiar 256 B, osadzony w i- Linux i-węzeł: ogólna struktura, osadzony w i-. 17/50
Opóźniona alokacja najpierw rezerwacja określonej liczby bloków, faktyczna alokacja - po zapisie, dane przechowywane w pamięci dopóki nie zostaną zapisane, alokacja wolnej przestrzeni: po otrzymaniu danych do zapisania, umieszczane są one w buforze oraz rezerwowana jest odpowiednia ilość miejsca na dysku, zapisanie danych na dysk, stripped allocation - RAIDy. 18/50
Rzadkie pliki 19/50
Zarządzanie quotami raportowanie i kontrola wykorzystanego miejsca na dysku, zarządzanie miejscem na dysku i liczbą i-węzłów, zarządzanie według użytkownika, grupy, projektu, rodzaje limitów: twardy - zapobiega dalszemu przydziałowi dyskowemu, miękki - są egzekwowane jako twarde po okresie karencji, dodatkowe zasoby są używane przez okres karencji. 20/50
Rozszerzone atrybuty wiele strumieni danych dla plików, przechowywanie pewnej liczby par nazwa / wartość dołączonych do pliku; nazwy - łańcuchy znaków o długości do 256 bajtów (zakończone nullem), powiązane z nimi wartości mogą zawierać do 64 KB danych binarnych, dzielone na dwie przestrzenie nazw: root i user. przestrzeń nazw root - atrybuty mogą być modyfikowane tylko przez administratora, przestrzeń nazw user - atrybuty mogą być modyfikowane przez dowolnego użytkownika z uprawnieniami do zapisu do pliku. 21/50
Rozszerzone atrybuty - wykorzystanie (SELinux) stworzony przez NSA (National Security Agency) implementacja MAC, RBAC i MLS zintegrowany z jądrem Linuxa (od wersji 2.6 w zwyż) ograniczenie do niezbędnego minimum zestawu uprawnień użytkownika podstawowe cechy: dobrze zdefiniowane interfejsy polis, obsługa aplikacji odpytujących polisy i wzmacnianie bezpieczeństwa, niezależność polis od języka polis oraz formatów i zawartości etykiet, buforowanie decyzji o dostępie, obsługa gniazd, wiadomości i interfejsów sieciowych. 22/50
w Linuksie I Tworzenie systemu plików mkfs.xfs /dev/device Montowanie systemu plików mount /dev/device /mount/point mount -o inode64 /dev/device /mount/point mount -o nobarrier /dev/device /mount/point Tworzenie quoty xfs_quota -x -c limit isoft=500 ihard=700 /home/john xfs_quota -x -c limit -g bsoft=1000m bhard=1200m accounting /target/path 23/50
w Linuksie II Zwiększanie rozmiary systemu plików xfs_growfs /mount/point -D size Naprawa systemu plików xfs_repair /dev/device Wstrzymanie systemu plików xfs_freeze -f /mount/point xfs_freeze -u /mount/point Informacje o systemie plików xfs_info 24/50
System plików i 25/50
System plików I Sun Microsystems (Oracle), Solaris, 2005 r., otwarte oprogramowanie, 128 bitowy system plików, zaprojektowany od podstaw, aby wyeliminować przestarzałe założenia systemów plików, obsługa w FreeBSD, Linux, maksymalna wielkość pliku - 16 EB, maksymalny wolumin 256 ZB, nacisk na integralność danych, zalety i wymagania. 26/50
System plików II Natywne wsparcie dla: deduplikacji, kompresji, Copy on Write, migawek i klonowania migawek, szyfrowania, wielu kopii tych samych bloków. 27/50
System plików III ciągła ochrona przed uszkodzeniami plików, automatyczne naprawianie uszkodzeń, samoleczenie niespójnych danych, działa jak system plików i menadżer woluminów, pełna wiedza o dyskach, inteligentny - analiza ruchu danych i wyszukiwanie konkretnych zachowań w celu zwiększenia wydajności, migracja systemów. 28/50
Pula dyskowa powierzchnia dysków i grup RAID, nieograniczone możliwości rozbudowy i lepsza wydajność, zwiększenie prędkości operacji dyskowych, można zdefiniować liczbę kopii bloków, dynamiczna alokacja przestrzeni, 29/50
Warstwy komunikacji w 30/50
Transakcje Copy-On-Write 31/50
Alokacja bloków Elementy do polityki alokacji bloku w : wybór urządzenia (dynamiczne paski), wybór metaslab, wybór bloku. 32/50
Cichy zabójca danych Przyczyny uszkodzenia danych: awarie mechaniczne lub elektryczne kabli połączeniowych, problemy z niestabilnym zasilaniem, uszkodzenia pamięci operacyjnej serwera, błędy w firmware kontrolerów macierzowych, błąd w sterowniku do kontrolera RAID lub HBA, wibracje, promieniowanie kosmiczne i zakłócenia elektromagnetyczne, błędy w oprogramowaniu firmware. 33/50
Open 2010 r., Oracle zaprzestaje udostępniania kodu, projekt mający na celu zebranie osób i firm, które korzystają z systemu plików i pracę nad jego ulepszeniami, dążąc również do szerszego stosowania i rozwijania go w pełni jako open-source. 34/50
Konfiguracja I zfs create [[-o property=value]]... filesystem zfs create [-s] [-b blocksize] [[-o property=value]]... -V size volume zfs destroy [-rrf] filesystem volume snapshot zfs clone snapshot filesystem volume zfs promote filesystem zfs rename filesystem volume snapshot [filesystem volume snapshot] 35/50
Konfiguracja II zfs snapshot [-r] filesystem@name volume@name zfs rollback [-rrf] snapshot zfs list [-rh] [-o prop[,prop] ]... [ -t type[,type]...] [ -s prop [-s prop]... [ -S prop [-S prop]... [filesystem volume snapshot /pathname./pathname... zfs set property=value filesystem volume... zfs inherit [-r] property filesystem volume...... 36/50
Konfiguracja III zfs get [-rhp] [-o field[,field]...] [-s source[,source]...] all property[,property]... filesystem volume snapshot... zfs mount zfs mount [-o options] [-O] -a zfs mount [-o options] [-O] filesystem zfs unmount [-f] -a zfs unmount [-f] filesystem mountpoint 37/50
Konfiguracja IV zfs share -a zfs share filesystem zfs unshare [-f] -a zfs unshare [-f] filesystem mountpoint zfs send [-i snapshot1] snapshot2 zfs receive [-vnf ] filesystem volume snapshot zfs receive [-vnf ] -d filesystem 38/50
Konfiguracja puli dyskowej I Polecenie zpool zpool create tank raidz sda sdb sdc sdd sde sdf zpool create tank mirror sda sdb mirror sdc sdd zpool create tank sda1 sdb2 zpool create tank /path/to/file/a /path/to/file/b zpool add tank mirror sda sdb zpool list 39/50
Konfiguracja puli dyskowej II zpool destroy -f tank zpool export tank zpool upgrade -a zpool create tank mirror sda sdb spare sdc zpool replace tank sda sdd zpool remove tank sdc zpool create pool mirror sda sdb mirror sdc sdd log mirror sde sdf 40/50
Konfiguracja puli dyskowej III zpool add pool cache sdc sdd zpool iostat -v pool 5 zpool remove tank mirror-2 41/50
(ang. B-tree file system) I Oracle, 2007, dla Linuxa, licencja GNU General Public License, możliwość zmiany rozmiaru partycji online, dodawanie/usuwanie urządzeń blokowych w locie, możliwość balansowania obciążenia pomiędzy urządzeniami, tworzenie RAID: mkfs.btrfs -d raid0 /dev/sda /dev/sdb /dev/sdc bazuje na zasadzie CoW (Copy on Write). 42/50
System plików II przechowywanie danych - B-drzewa, defragmentacja online, przezroczysta kompresja: Włączenie kompresji dla pliku lub katalogu btrfs property set <plik> compression Dodanie flagi kompresji chatrr +c Wymuszenie kompresji poprzez defragmentację btrfs filesystem defragment -c <system_plikow> 43/50
System plików III sumy kontrolne danych i metadanych, subwoluminy, btrfs subvolume create /katalog/nazwa btrfs subvolume set-default subvolume-id mkfs.btrfs plik.img mount -t btrfs -o subvol=subvol1 /plik.img /mnt deduplikacja. 44/50
System plików IV migawki (możliwość powrotu do poprzedniej wersji plików), btrfs subvolume snapshot nazwa_migawki btrfs subvolume delete nazwa maksymalny rozmiar woluminu 16 EiB, maksymalny rozmiar pliku 16 EiB, maksymalna liczba plików - 2 64, maksymalna długość nazwy pliku - 255 znaków. 45/50
Drzewo systemu plików jedno drzewo systemu plików dla każdego podwoluminu, każdy obiekt pliku i katalogu ma element i-węzła, pozycje katalogu pojawiają się jako elementy katalogu, których dane są kluczem lokalizacji lub kluczem wskazanego elementu i-węzła, pliki z twardymi linkami w wielu katalogach - wiele elementów referencyjnych, dane pliku są przechowywane poza drzewem w ekstentach, drzewo alokacji ekstentów działa jak mapa alokacji dla systemu plików. 46/50
Drzewo sum kontrolnych algorytm CRC-32C, sumy kontrolne są obliczane dla danych i metadanych, przechowywane jako elementy kontrolne w drzewie sum kontrolnych, w drzewie - 256 bitów dla sum kontrolnych metadanych i około 4 KB (lub więcej) dla sum kontrolnych danych, może zainicjować kontrolę online całego systemu plików. 47/50
Pozostałe drzewa Drzewo logów: fsync - żądanie natychmiastowego zatwierdzenia zmodyfikowanych danych w magazynie danych. Drzewo urządzeń: urządzenia blokowe są podzielone na porcje o pojemności 256 MB lub więcej, Drzewo relokacji: służy jako miejsce na przesunięcie dla metadanych. Superblok: przechowuje listę fizycznych adresów kawałków należących do drzew. 48/50
Wykorzystano następujące materiały: Hagen W.: Systemy plików w Linuksie, Helion http://xfs.org/ http://docs.oracle.com/cd/e23824_01/html/ 821-1448/toc.html http://www.backupacademy.pl/system-plikow-zfs/ http://open-zfs.org/wiki/main_page http: //btrfs.wiki.kernel.org/index.php/main_page 49/50
Dziękuję za uwagę! 50/50