12
1 SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA RAČUNALNA FORENZIKA SEMINAR DATOTEČNI SUSTAV ext4 Ivo Zubović 0036466982 Zagreb, 2017.

RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

1

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

RAČUNALNA FORENZIKA

SEMINAR

DATOTEČNI SUSTAV ext4

Ivo Zubović 0036466982

Zagreb, 2017.

Page 2: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

2

Sadržaj

1. Povijest ............................................................................................................................................ 3

1.1. Prethodnici datotečnog sustava ext4 ...................................................................................... 3

1.2. Datotečni sustav ext4 .............................................................................................................. 3

2. Struktura .......................................................................................................................................... 3

3. Značajke ........................................................................................................................................... 6

3.1. Općeniti podatci o ext4 datotečnom sustavu ......................................................................... 6

3.2. Extents ..................................................................................................................................... 6

3.3. Višeblokovski alokator ............................................................................................................. 8

3.4. Odgođena alokacija ................................................................................................................. 8

3.5. Ubrzana provjera konzistencije ............................................................................................... 8

3.6. Provjera integriteta dnevnika .................................................................................................. 9

3.7. Ostale značajke ........................................................................................................................ 9

4. Usporedba performansi datotečnih sustava ext4, ext3 i ext2 ........................................................ 9

5. Kompatibilnost .............................................................................................................................. 10

5.1. Podržanost na operacijskim sustavima ................................................................................. 10

5.2. Kompatibilnost s ext3 datotečnim sustavom ........................................................................ 11

6. Bibliografija .................................................................................................................................... 12

Page 3: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

3

1. Povijest

1.1. Prethodnici datotečnog sustava ext4

Extended file system (ext) je dizajnirao Rémy Card 1992. godine za Linux kernel zbog ograničenja koja

su imali MINIX datotečni sustavi. Inspiriran je UNIX file systemom (UFS). [1]

Second extended file (ext2) također je dizajnirao Rémy Card kao unaprjeđenje postojećega ext

datotečnog sustava. Uvođenje ext2 datotečnog sustava bilo je potrebno zato što već postojeći ext

datotečni sustav nije imao zasebne vremenske oznake zadnjega pristupa datoteci, modifikacije

indeksnih čvorova i modifikacije podataka. Ext2 je bio prvi datotečni sustav komercijalne kvalitete i

izašao je 1993. godine. [2]

Treći datotečni sustav za Linux kernel je ext3 koji je uveden 2001. godine. Razvio ga je Stephen

Tweedie, a najveći razlog razvoja ext3 bilo je uvođenje dnevnika promjena kako bi se povećala

pouzdanost. [3]

1.2. Datotečni sustav ext4

Kako su kapaciteti medija za pohranu postajali sve veći, povećavala se potreba da se nešto poduzme u

vezi skalabilnosti tada aktualnog ext3 datotečnog sustava. Jedno od najvećih ograničenja ext3

datotečnog sustava je granica ukupne veličine od 16 TB. Kako bi se riješio problem skalabilnosti,

performansi i pouzdanosti, 2006. godine objavljen je niz poboljšanja za postojeći ext3 datotečni sustav

koji je uključivao povećanje kapaciteta i uvođenje extent-ova. [4] Razvojna verzija Ext4 datotečnog

sustava je uključena u Linux kernel od verzije 2.6.19. Stabilna verzija ext4 datotečnog sustava izašla je

21. listopada 2008. godine sa verzijom Linux kernela 2.6.28. [5]

15. siječnja 2010. godine Google je objavio da vrši prijelaz svoje podatkovne infrastrukture s

ext2 na ext4 datotečni sustav. [6]

2. Struktura

Ext4 datotečni sustav dijeli memoriju na grupe blokova. Prvi blok datotečnog sustava počinje s

odmakom (engl. offset) od 1024 byte-a kako bi početak medija za pohranu imao prostor za master

boot record. Struktura pojedine grupe blokova opisana je u tablici (Tablica 1 struktura grupe blokova

u datotečnom sustavu ext4). [7]

Group 0 Padding

ext4 Super Block

Group Descriptors

Reserved GDT Blocks

Data Block Bitmap

inode Bitmap

inode Table

Data Blocks

1024 bytes 1 block many blocks many blocks 1 block 1 block many blocks

many more blocks

Tablica 1 struktura grupe blokova u datotečnom sustavu ext4 [7]

Page 4: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

4

Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što

su broj blokova, broj indeksnih čvorova (inode), podržane značajke, informacije o održavanju i slično.

Ostale grupe također mogu sadržavati SuperBlock, ali važno je primijetiti da je za dobivanje podataka

o datotečnom sustavu dovoljan samo jedan SuperBlock, te su ostali SuperBlockovi redundantni ali

postoje kako bi pridonijeli svojstvu izdržljivosti podataka. [7]

Nakon SuperBlock-a u prvoj grupi blokova slijede opisnici grupa (engl. Group Descriptors) koji

bilježe lokacije bitovne mape blokova, bitovne mape i položaja tablice indeksnih čvorova i slično.

Standardna postavka za svaku grupu blokova je da sadrži sve kopije opisnika blokova osim ako je

postavljena zastavica sparse_super. [7]

Sljedeći po redu su Reserved GDT Blocks. To je niz blokova koji se alociraju prilikom stvaranja

datotečnog sustava kako bi u budućnosti bilo moguće proširiti datotečni sustav. [7]

Bitovna mapa blokova (Data Block Bitmap) je tablica bitova koja prati koji blokovi su u

korištenju, a koji su slobodni. Iskorištenost svakoga bloka predstavljena je po jednim bitom. Bitovna

mapa indeksnih čvorova (inode Bitmap) je tablica bitova u kojoj je zapisano koji su indeksni čvorovi

slobodni a koji zauzeti. [7]

Indeksni čvor je struktura podataka koja sadrži sve informacije o pojedinom direktoriju ili

datoteci osim imena i samih podataka. Svaki indeksni čvor označen je identifikatorom koji je jedinstven

za datotečni sustav. [8] Svaki indeksni čvor ima prostor za 12 direktnih pokazivača na podatke, te po

jedan jednostruko dvostruko i trostruko indirektni pokazivač na podatke (jednostruko indirektni znači

da pokazuje na listu direktnih pokazivača, dvostruko indirektni znači da pokazuje na listu pokazivača

koji pokazuju na pojedine liste direktnih pokazivača) kao što je prikazano na slici (Slika 1 struktura

indeksnih čvorova).

Slika 1 struktura indeksnih čvorova [8]

Page 5: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

5

Nakon bitovne mape indeksnih čvorova dolazi tablica indeksnih čvorova. U njoj se nalaze svi

indeksni čvorovi u grupi blokova. Mora biti barem veličine umnoška veličine indeksnog čvora i broja

indeksnih čvorova u datotečnom sustavu. Kod ext4 datotečnog sustava u tablicu indeksnih čvorova

također su pohranjeni i podaci o tipu datoteke u zapisu direktorija.

U ext4 datotečnom sustavu direktorij je ostvaren kao niz blokova koji sadržavaju liste entry-ja

koji se u tome direktoriju nalaze. Struktura directory entry-ja je prikazana u tablici (Tablica 2 directory

entry). Kako bi se dodala kontrolna struktura za provjeru pogrešaka, na kraj svakoga bloka postavlja se

ext4_dir_entry_tail opisan u tablici (Tablica 3 struktura ext4_dir_entry_tail). [7]

Offset Size Name Description

0x0 __le32 inode Number of the inode that this directory entry points to.

0x4 __le16 rec_len Length of this directory entry.

0x6 __u8 name_len Length of the file name.

0x7 __u8 file_type File type code, one of:

0x0 Unknown.

0x1 Regular file.

0x2 Directory.

0x3 Character device file.

0x4 Block device file.

0x5 FIFO.

0x6 Socket.

0x7 Symbolic link.

0x8 char name[EXT4_NAME_LEN] File name. Tablica 2 directory entry [7]

Offset Size Name Description

0x0 __le32 det_reserved_zero1 Inode number, which must be zero.

0x4 __le16 det_rec_len Length of this directory entry, which must be 12.

0x6 __u8 det_reserved_zero2 Length of the file name, which must be zero.

0x7 __u8 det_reserved_ft File type, which must be 0xDE.

0x8 __le32 det_checksum Directory leaf block checksum. Tablica 3 struktura ext4_dir_entry_tail [7]

Nakon tablice indeksnih čvorova ostatak grupe blokova zauzimaju blokovi s podacima. Tim

podacima pristupa se prolaskom po stablima pokazivača iz odgovarajućeg indeksnog čvora koji sadrže

direktne ili indirektne pokazivače na pojedine blokove s podacima.

Page 6: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

6

3. Značajke

3.1. Općeniti podatci o ext4 datotečnom sustavu

Postoje dva načina rada ext4 datotečnog sustava: standardni 32-bitni i 64-bitni. Tablice u nastavku

(Tablica 4 svojstva ext4 u 32-bitnom načinu rada i Tablica 5 svojstva ext4 u 64-bitnom načinu rada)

pokazuju neke značajke tih načina rada u odnosu na odabranu veličinu bloka. Važno je napomenuti da

veličina bloka mora biti potencija broja 2 između uključivo 1KiB i 64KiB. [7]

32-bit mode

Item 1KiB 2KiB 4KiB 64KiB

Blocks 2^32 2^32 2^32 2^32

Inodes 2^32 2^32 2^32 2^32

File System Size 4TiB 8TiB 16TiB 256PiB

Blocks Per Block Group 8,192 16,384 32,768 524,288

Inodes Per Block Group 8,192 16,384 32,768 524,288

Block Group Size 8MiB 32MiB 128MiB 32GiB

Blocks Per File, Extents 2^32 2^32 2^32 2^32

Blocks Per File, Block Maps

16,843,020 134,480,396 1,074,791,436 4,398,314,962,956 (really 2^32 due to field size limitations)

File Size, Extents 4TiB 8TiB 16TiB 256TiB

File Size, Block Maps 16GiB 256GiB 4TiB 256TiB Tablica 4 svojstva ext4 u 32-bitnom načinu rada [7]

64-bit mode

Item 1KiB 2KiB 4KiB 64KiB

Blocks 2^64 2^64 2^64 2^64

Inodes 2^32 2^32 2^32 2^32

File System Size 16ZiB 32ZiB 64ZiB 1YiB

Blocks Per Block Group 8,192 16,384 32,768 524,288

Inodes Per Block Group 8,192 16,384 32,768 524,288

Block Group Size 8MiB 32MiB 128MiB 32GiB

Blocks Per File, Extents 2^32 2^32 2^32 2^32

Blocks Per File, Block Maps

16,843,020 134,480,396 1,074,791,436 4,398,314,962,956 (really 2^32 due to field size limitations)

File Size, Extents 4TiB 8TiB 16TiB 256TiB

File Size, Block Maps 16GiB 256GiB 4TiB 256TiB Tablica 5 svojstva ext4 u 64-bitnom načinu rada [7]

3.2. Extents

Za velike datoteke koje imaju veliki broj blokova indirektno mapiranje kojim se prati svaki blok nije

efikasno. U datotečnom sustavu ext4 taj problem rješava se tzv. extent-ovima. Extent je skup fizički

kontinuiranih blokova (ali i logički kontinuiranih unutar datoteke). Extent omogućava da se umjesto

pravljenja indirektnog mapiranja za veliki broj blokova jednostavno uzme potrebni broj blokova

kojima se pristupa po redu. [9]

Page 7: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

7

Extent je implementiran kao stablo definirano pomoću dvije strukture podataka. Listovi su

ostvareni kao struktura ext4_extent i oni sadrže lokaciju prvog bloka podataka i broj uzastopnih

blokova koji čine taj extent, do kojih se dolazi po stablu indeksa extentova ostvarenim strukturom

ext4_extent_idx.

/*

* This is the extent on-disk structure.

* It's used at the bottom of the tree.

*/

struct ext4_extent {

__le32 ee_block; /* first logical block extent covers */

__le16 ee_len; /* number of blocks covered by extent */

__le16 ee_start_hi; /* high 16 bits of physical block */

__le32 ee_start_lo; /* low 32 bits of physical block */

};

/*

* This is index on-disk structure.

* It's used at all the levels except the bottom.

*/

struct ext4_extent_idx {

__le32 ei_block; /* index covers logical blocks from 'block' */

__le32 ei_leaf_lo; /* pointer to the physical block of the next *

* level. leaf or next index could be there */

__le16 ei_leaf_hi; /* high 16 bits of physical block */

__u16 ei_unused;

};

Programski kôd 1 implementacija extentova [10]

Page 8: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

8

Slika 2 struktura stabla extentova [11]

3.3. Višeblokovski alokator

Prilikom zapisivanja nove datoteke na disk, alokator u prethodnim verzijama ext datotečnog sustava

odjednom je mogao alocirati samo jedan blok. To znači da kad bi bilo potrebno alocirati N blokova za

datoteku, bilo bi potrebno pozvati alokator N puta. Kako je takav pristup neefikasan i alokator ne može

optimizirati alokaciju jer mu nije poznat ukupan broj blokova koji je potrebno alocirati, alokator ext4

datotečnog sustava ima mogućnost alocirati više blokova u jednom pozivu. [9]

3.4. Odgođena alokacija

Tradicionalni datotečni sustavi poput ext3 i reiser3 alociraju potrebne blokove čim je prije moguće.

Suprotno tome, ext4 datotečni sustav odgađa alokaciju blokova što je duže moguće kako bi se

alokatoru omogućilo bolje optimiranje prilikom zapisivanja u datoteku. [9]

3.5. Ubrzana provjera konzistencije

Operacijski sustavi građeni na Linux jezgri najčešće za provjeru konzistencije datotečnog sustava

koriste alat fsck. Kako je provjera konzistencije spor proces, ext4 datotečni sustav na kraju svake tablice

indeksnih čvorova drži listu neiskorištenih indeksnih čvorova koje alat fsck može preskočiti u provjeri.

Listu neiskorištenih indeksnih čvorova gradi sam alat fsck prilikom prve provjere konzistencije, tako da

prva provjera neće biti ubrzana. Ovom metodom može se postići ubrzanje provjere konzistencije od 2

do 20 puta. [9]

Page 9: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

9

3.6. Provjera integriteta dnevnika

Datotečni sustav ext4 uvodi provjeru integriteta dnevnika pomoću checksum-a kako bi se detektirao

narušen integritet dnevnika. Razlog tome je to što obnova informacija iz dnevnika s oštećenim

informacijama može nanijeti veliku štetu cijelom datotečnom sustavu. Korištenje checksum-a za

čuvanje integriteta ima još jednu prednost: ubrzava zapisivanje u dnevnik za do 20% jer smanjuje broj

potrebnih faza da bi se zapisivanje izvršilo na način siguran od pogrešaka. [9]

3.7. Ostale značajke

U slučaju da je korisniku bitnija brzina nego integritet, datotečni sustav ext4 omogućuje korisniku

isključivanje vođenja dnevnika kako se ne bi gubili računalni resursi. Datotečni sustav ext4 također ima

mogućnost kontinuirane defragmentacije (engl. online defragmentation). Također omogućuje

programu da unaprijed alocira potreban prostor na disku, unatoč tome što u tom prostoru podaci neće

biti odmah upisivani. [9]

4. Usporedba performansi datotečnih sustava ext4, ext3 i ext2

Kako je u datotečnom sustavu ext3 uveden dnevnik promjena, za očekivati je da će zapisivanje u

datotečnom sustavu ext2 biti brže od svoja dva sljedbenika. Datotečni sustav ext4 može zaobići ovaj

pad performansi isključivanjem dnevnika. Očekuje se da je zapisivanje kod datotečnog sustava ext4

brže zbog uporabe prethodno objašnjenih extent-ova.

Dnevnik nema utjecaj na čitanje podataka te je za očekivati da će ext4 datotečni sustav zbog

uporabe extent-ova biti brži od svoja dva prethodnika.

Prethodnim očekivanjima ide u prilog testiranje sa slika (Slika 3 brzina pisanja u različitim

verzijama ext datotečnih sustava i Slika 4 brzina pisanja u različitim verzijama ext datotečnih sustava

). Testiranje je provedeno na operacijskom sustavu Red Hat Enterprise Linux 5 U4, a kao medij za

podatke korišteni su dva Dell PowerVault MD 1200 RAID polja. Svako polje je sadržavalo dvanaest

diskova kapaciteta 450 GB, frekvencije 15000 okretaja u minuti. Mediji za pohranu su konfigurirani kao

jedinstveno RAID 5 polje koje se protezalo kroz 24 diskova. Za povezivanje diskova koristio se Dell

PowerEdge R710 poslužitelj s PERC H800 karticom. Performanse su se mjerile softwareom IOzone

benchmark verzija 3.327 dostupnog na www.iozone.org. [12]

Page 10: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

10

Slika 3 brzina pisanja u različitim verzijama ext datotečnih sustava [12]

Slika 4 brzina pisanja u različitim verzijama ext datotečnih sustava [12]

5. Kompatibilnost

5.1. Podržanost na operacijskim sustavima

Datotečni sustav ext4 podržan je na Linux kernel-u od verzije 2.6.19. , a s operacijskih sustava Windows

i OS X moguće ga je čitati samo uporabom namijenjenih programa jer u trenutku pisanja ovoga rada

još ne postoje dedicirani sistemski moduli (driveri) koji bi to omogućili.

Page 11: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

11

5.2. Kompatibilnost s ext3 datotečnim sustavom

Postojeći ext3 datotečni sustav moguće je migrirati u ext4 bez gubljenja već postojećih podataka. U

tom slučaju, strukture starih podataka ostaju iste te stari podatci mogu čitati i mijenjati, a ext4 će nove

strukture koristiti samo na novim podatcima. Važno je napomenuti da ovaj proces nije reverzibilan:

jednom kad se migracija izvrši nije moguće vratiti datotečni sustav na prethodnu verziju. Jedino

rješenje u tom slučaju je u datotečnom sustavu isključiti novi format diska što omogućuje datotečnom

sustavu da se pokrene (mount-a) kao ext3 particija. [9]

Page 12: RAČUNALNA FORENZIKA SEMINAR - LeCTo...4 Prvi blok prve grupe je SuperBlock koji sadrži informacije o cijelom datotečnom sustavu kao što su broj blokova, broj indeksnih čvorova

12

6. Bibliografija

[1] »Extended file system,« Wikimedia Foundation, Inc., 31 7 2016. [Mrežno]. Available:

https://en.wikipedia.org/wiki/Extended_file_system. [Pokušaj pristupa 7 1 2017].

[2] »ext2,« Wikimedia Foundation, Inc., 4 1 2017. [Mrežno]. Available:

https://en.wikipedia.org/wiki/Ext2. [Pokušaj pristupa 7 1 2017].

[3] »ext3,« Wikimedia Foundation, Inc., 5 1 2017. [Mrežno]. Available:

https://en.wikipedia.org/wiki/Ext3. [Pokušaj pristupa 7 1 2017].

[4] A. Mathur, S. Bhattacharya, A. Dilger, A. Tomas i L. Vivier, »compass,« 27 6 2007. [Mrežno].

Available:

https://compas.cs.stonybrook.edu/~nhonarmand/courses/fa14/cse506.2/papers/ols2007v2-

pages-21-34.pdf. [Pokušaj pristupa 7 1 2017].

[5] »ext4,« 19 11 2016. [Mrežno]. Available: https://en.wikipedia.org/wiki/Ext4#cite_note-Mathur-

3. [Pokušaj pristupa 7 1 2017].

[6] R. Paul, »Ars Tehnica,« 15 1 2010. [Mrežno]. Available: http://arstechnica.com/information-

technology/2010/01/google-upgrading-to-ext4-hires-former-linux-foundation-cto/. [Pokušaj

pristupa 7 1 2017].

[7] »Ext4 Disk Layout,« Linux Kernel Organization, Inc., 16 6 2016. [Mrežno]. Available:

https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout. [Pokušaj pristupa 8 1 2017].

[8] SELVAMVASU, 1 8 2014. [Mrežno]. Available:

https://selvamvasu.wordpress.com/2014/08/01/inode-vs-ext4/. [Pokušaj pristupa 8 1 2017].

[9] diegocalleja, »Ext4,« 20 5 2016. [Mrežno]. Available: https://kernelnewbies.org/Ext4. [Pokušaj

pristupa 2017 1 9].

[10] »Ext4 Design,« 17 2 2014. [Mrežno]. Available:

https://ext4.wiki.kernel.org/index.php/Ext4_Design. [Pokušaj pristupa 9 1 2017].

[11] S. Hsiung, »Learn more about EXT4,« 16 11 2009. [Mrežno]. Available:

http://www.datarecoverytools.co.uk/2009/11/16/learn-more-about-ext4/. [Pokušaj pristupa 9

1 2017].

[12] N. Waghuskar, »High Performance Computing,« Dell Inc., [Mrežno]. Available:

http://en.community.dell.com/techcenter/high-performance-computing/w/wiki/2290.

[Pokušaj pristupa 10 1 2017].