Poprzednia strona
Spis
Kolejna strona

Systemy plików i narzędzia

Wstęp

Przy instalacji Linuksa zwykle do wyboru jest kilka systemów plików, takich jak ext4, ext3, ext2, reiserfs, xfs, niekiedy może reiser4. Mandriva Linux w wersjach 10 i starszych oferowała do wyboru wszystkie obsługiwane przez nią systemy plików, na oko było to około 60 pozycji – w tym wszelkie rodzaje FAT i NTFS – przy czym instalator nie umożliwiał instalacji na większości z nich (nieśmiertelny komunikat "(/) musi być na porządnym systemie plików"). W niniejszym artykule znajdziesz przegląd popularnych linuksowych systemów plików wraz z odwołaniami do tabel porównujących wydajność, subiektywną oceną przydatności w domowych warunkach i opisem narzędzi. Dla maniaków optymalizacji przygotowane zostały najciekawsze opcje tune2fs. Jeśli chcesz się dowiedzieć czegoś ciekawego na temat linuksowych systemów plików i nie tylko, zapraszam do czytania.

Porównanie systemów plików

Szczegółowe informacje na temat wydajności, fragmentacji i specyfikacje techniczne popularnych systemów plików znajdują się w artykule Błażeja Piechny (informacje w tabeli z ograniczeniami są nieaktualne, po aktualne wartości proszę się udać na angielską Wikipedię lub strony domowe odpowiednich systemów plików).

EXT2

Obecny w Linuksie od stycznia 1993, powstały na podstawie bardzo ograniczonego systemu plików Miniksa (początkowo ten system plików był używany na Linuksie); sam Linux był tworzony z użyciem tego systemu (nieśmiertelna [znowu] wiadomość Linusa anonsująca Linuksa). Nie będziemy się jednak o nim rozpisywać, ponieważ nie posiada on księgowania. Podobnie jak wszystkie wersje FAT.

EXT3

Obecny w Linuksie od listopada 2001, niektórzy nazywają go "aktualizacją EXT2". Główna zmiana to wprowadzenie księgowania. Wydajność stoi na dobrym poziomie, co można zobaczyć w podlinkowanym wyżej zestawieniu. Wprowadza kilka trybów księgowania, które pozwalają dostosować szybkość versus bezpieczeństwo do własnych zastosowań. Domyślnie działa w trybie ordered. O księgowaniu i zmianie trybu księgowania można poczytać w artykułach podlinkowanych wyżej.

Jak widać EXT3 posiada solidne podstawy (EXT2 w czasach swojej świetności był chętnie używany w zastępstwie filesystemu Miniksa) i jest już wypróbowany w działaniu. Co więcej, w razie potrzeby można wymusić jego zamontowanie jako EXT2 i użycie bez księgowania. Jest to system plików zdecydowanie godny polecenia dla początkującego użytkownika, nadaje się też na serwer.

Obsługa
Formatowanie ext3

Jeśli chcesz utworzyć partycję w formacie EXT3, musisz użyć narzędzia mkfs.ext3. Może jednak najpierw zobaczmy gdzie jest jakaś wolna partycja używając cfdiska:

cfdisk [ENTER]

Czasem trzeba cfdiskowi podać odpowiednie urządzenie np. cfdisk /dev/hdb (zobacz artykuł o montowaniu).

cfdisk 2.12r Disk Drive: /dev/sda Size: 250058268160 bytes, 250.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 30401 Name Flags Part Type FS Type [Label] Size (MB) --------------------------------------------------------------------------------------- sda5 Logical Linux ReiserFS [3. system] 6448,59 * sda6 Logical Linux ReiserFS 6448,62 sda7 Logical Linux XFS 6448,62 sda8 Logical Linux swap 2155,03 sda9 Logical Linux XFS [Tymczasowy] 5371,11 sda10 Logical Linux ext3 [domowy] 223176,53 Pri/Log Free Space 8,23 [Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [ Units ] [ Write ] No more partitions Toggle bootable flag of the current partition

W naszym przypadku będziemy "niszczyć" partycję sda5. A więc zakładamy system plików:

blueice root {/home/mk} # mkfs.ext3 /dev/sda5 mke2fs 1.40.1 (08-Jul-2007) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 788704 inodes, 1574354 blocks 78717 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1614807040 49 block groups 32768 blocks per group, 32768 fragments per group 16096 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

I sprawdzamy efekt:

cfdisk 2.12r Disk Drive: /dev/sda Size: 250058268160 bytes, 250.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 30401 Name Flags Part Type FS Type [Label] Size (MB) --------------------------------------------------------------------------------------- sda5 Logical Linux ext3 6448,59 * sda6 Logical Linux ReiserFS 6448,62 sda7 Logical Linux XFS 6448,62 sda8 Logical Linux swap 2155,03 sda9 Logical Linux XFS [Tymczasowy] 5371,11 sda10 Logical Linux ext3 [domowy] 223176,53 Pri/Log Free Space 8,23 [Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [ Units ] [ Write ]
Klaster - jednostka logiczna wypełnienia dysku przez dane. Jeden klaster może zawierać tylko jeden plik, nawet jeśli plik jest mniejszy niż rozmiar klastra. Dlatego im mniejszy rozmiar klastra, tym większa oszczędność miejsca, ale zwykle mniejsza wydajność.

Z wyjścia mkfs.ext3 oprócz ciekawych informacji (np. rozmiar klastra: 4KiB, liczba zarezerwowanych bloków: 5%) dowiadujemy się o jeszcze jednym przydatnym narzędziu tune2fs. Zaraz się nim zajmiemy, ale najpierw zobacz, że wszystkie systemy plików tworzy się podobnie:

blueice root {/home/mk} # mkfs [WCIŚNIJ TAB 2 razy] mkfs mkfs.ext2 mkfs.minix mkfs.reiser4 mkfs.bfs mkfs.ext3 mkfs.msdos mkfs.reiserfs mkfs.cramfs mkfs.jfs mkfs.ntfs mkfs.xfs
Tuning ext3 – tune2fs

Większość poniższych opcji powinna działać także z EXT4.

Tune2fs pozwala nam - jak czytamy - zmienić domyślne ustawienia sprawdzania dysku. Mimo księgowania system plików ma zakodowane kompletne sprawdzenie poprawności danych co jakiś czas, czyli przy 27 odmontowaniu lub upływie pół roku flaga clean ustawiana jest na unclean i system uruchamia sprawdzanie przy włączaniu. Więcej o tym niżej. Domyślne ustawienia są raczej dobre do serwerów, bo w domu przecież komputer wyłączany i włączany jest najczęściej kilka razy w ciągu dnia, więc owe 27 montowań powodowałoby sprawdzanie dysku średnio co pół miesiąca.

Tune2fs zawiera też przełącznik -r, który w manualu opisany jest w taki sposób: Zmienia liczbę zarezerwowanych bloków na podanym urządzeniu. Na cóż one są zarezerwowane? Wyjaśnione jest to w manualu mkfs.ext3. Wolne miejsce na partycji pomaga utrzymać w ryzach fragmentację (jądro ma trochę wolnego miejsca na kompaktowanie plików) a w razie zużycia całego miejsca przez jakiegoś użytkownika zarezerwowany obszar zabezpiecza możliwość dalszego logowania zdarzeń przez sysloga.

Tune2fs nadaje również etykiety. Spróbujmy go użyć do zmiany ustawienia sprawdzania systemu plików na co 60 dni lub co 120 zamontowań w zależności do tego co wystąpi pierwsze. Nadajmy partycji jakąś etykietkę. Zmieńmy wreszcie obszar zarezerwowany na 0 i porównajmy dostępne dla użytkownika miejsce na dysku:

blueice root {/home/mk} # tune2fs -C 120 -i 60 -r 0 -L pornole /dev/sda5 tune2fs 1.40.1 (08-Jul-2007) Setting current mount count to 120 Setting interval between checks to 5184000 seconds Setting reserved blocks count to 0

Teraz

blueice root {/home/mk} # df System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda5 6198372 143520 6054852 3% /mnt/1

Przedtem:

System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda5 6198372 143520 5739984 3% /mnt/1

Zaoszczędziliśmy prawie 315MB.

EXT 4 już zoptymalizowane:

System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sdc5 6198372 143384 6054988 3% /media/fl

Dodatkowe 136 bajtów (ten test przeprowadziłem na innej partycji, innym systemie i innym dysku, być może faktycznie różnicy nie ma).

Dla celów porównawczych ta sama partycja z reiserfs:

System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda5 6297208 32840 6264368 1% /mnt/1

Jeszcze 209 MB dodatkowego miejsca.

Skoro jesteśmy tak daleko, to jeszcze XFS:

System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda5 6287168 4384 6282784 1% /mnt/1

+ 18MB na korzyść XFS.

Mamy też nową etykietkę:

cfdisk 2.12r Disk Drive: /dev/sda Size: 250058268160 bytes, 250.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 30401 Name Flags Part Type FS Type [Label] Size (MB) --------------------------------------------------------------------------------------- sda5 Logical Linux ext3 [pornole] 6448,59 * sda6 Logical Linux ReiserFS 6448,62 sda7 Logical Linux XFS 6448,62 sda8 Logical Linux swap 2155,03 sda9 Logical Linux XFS [Tymczasowy] 5371,11 sda10 Logical Linux ext3 [domowy] 223176,53 Pri/Log Free Space 8,23
Tuning ext3 – noatime, commit interval

Przyjrzyjmy się takiemu wpisowi w /etc/fstab:

/dev/sda10 /home/ ext4 defaults,noatime,commit=100 1 2

Zacznijmy może od tego, czemu system plików opisany został jako ext4. Na partycji /home znajduje się system plików ext3, jednakże od jądra 2.6.27 (wersję można sprawdzić poleceniem uname -a) możliwe jest wykorzystanie modułu ext4 od obsługi ext3. Dzięki temu przyspieszysz alokację większych plików oraz zmniejszysz fragmentację dzięki opóźnionej alokacji (działa lepiej w połączeniu z większym commit interval). Uzycie modułu ext4 na systemie plików ext3 nie spowoduje zmiany formatu na ext4, takiej partycji można później swobodnie używać na systemie nieobsługującym ext4.

Opcja noatime spowoduje, że fakt dostępu do każdego pliku nie będzie zapisywany w systemie plików. Powinno to spowodować redukcję liczby zapisów na dysk i przyspieszenie otwierania katalogów z wieloma elementami.

Commit interval wyrażany w sekundach to czas, po jakim dane z buforów dyskowych zostaną zapisane fizycznie na dysk. Domyślnie jest to 5 sekund. Zwiększenie tego czasu w znaczny sposób podnosi wydajność, jednak przy awarii zasilania spowoduje utratę danych zbuforowanych między kolejnymi cyklami zapisu.

Sprawdzanie ext3
warning.pngManuale - większość przedstawionych tutaj poleceń posiada przystępną pomoc po polsku dostępną z konsoli po wpisaniu man program lub w pasku adresu Konquerora man:program.

Do sprawdzania poprawności systemu plików służy program fsck, fsck.ext3 lub e2fsck. Właściwie wychodzi na jedno czego użyjemy, i tak uruchomiony zostanie w końcu e2fsck. Czemu tak śmiesznie? Zacznijmy od końca. E2fsck to po prostu właściwa nazwa programu do sprawdzania poprawności ext2, ext3 i ext4. Fsck.ext3 to ukłon w stronę użytkownika, który musi znać tylko polecenie fsck:

blueice root {/home/mk} # fsck [WCIŚNIJ TAB 2 razy] fsck fsck.ext3 fsck.minix fsck.reiserfs fsck.cramfs fsck.hpfs fsck.msdos fsck.umsdos fsck.ext2 fsck.jfs fsck.reiser4 fsck.xfs

Fsck jest używany w skryptach startowych, gdzie rozpoznaje typ systemu plików i uruchamia odpowiednie narzędzie (o tych skryptach będzie jeszcze niżej). Przed użyciem e2fsck trzeba koniecznie odmontować partycję. Aby przekonać się o tym samym efekcie końcowym, spróbujmy sprawdzić dysk na wymienione 3 sposoby:

blueice root {/home/mk} # fsck /dev/sda5 fsck 1.40.1 (08-Jul-2007) e2fsck 1.40.1 (08-Jul-2007) pornole: clean, 11/788704 files, 60641/1574354 blocks blueice root {/home/mk} # fsck.ext3 /dev/sda5 e2fsck 1.40.1 (08-Jul-2007) pornole: clean, 11/788704 files, 60641/1574354 blocks blueice root {/home/mk} # e2fsck /dev/sda5 e2fsck 1.40.1 (08-Jul-2007) pornole: clean, 11/788704 files, 60641/1574354 blocks i dla zobrazowania, że e2fsck służy też do sprawdzania ext2: blueice root {/home/mk} # fsck.ext2 /dev/sda5 e2fsck 1.40.1 (08-Jul-2007) pornole: clean, 11/788704 files, 60641/1574354 blocks

Tego nie widać na stronie, ale sprawdzenie odbyło się naprawdę błyskawicznie. Bo tak właściwie e2fsck sprawdził tylko, że system plików oznaczony jest flagą clean i odmówił w związku z tym dalszego sprawdzania. Wyżej w akapicie o konfiguracji tune2fs było powiedziane o tym, że ta flaga zostaje ustalona na unclean po 27 odmontowaniu (my ustaliliśmy tę wartość na 120) i przy uruchomieniu systemu następuje wymuszenie sprawdzenia konsystencji mimo księgowania. Zobaczmy jak to działa:

blueice root {/home/mk} # fsck /dev/sda5 fsck 1.40.1 (08-Jul-2007) e2fsck 1.40.1 (08-Jul-2007) pornole has been mounted 120 times without being checked, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information pornole: 11/788704 files (9.1% non-contiguous), 60641/1574354 blocks

Po tym sprawdzeniu flaga unclean zostanie znowu zmieniona na clean i partycja przy starcie nie będzie sprawdzana. Sprawdzenie można także wymusić na żądanie (tym razem chcemy widzieć także więcej informacji - opcja -v.

blueice root {/home/mk} # fsck.ext2 /dev/sda5 -f -v e2fsck 1.40.1 (08-Jul-2007) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information 11 inodes used (0.00%) 1 non-contiguous inode (9.1%) # of inodes with ind/dind/tind blocks: 0/0/0 60641 blocks used (3.85%) 0 bad blocks 1 large file 0 regular files 2 directories 0 character device files 0 block device files 0 fifos 0 links 0 symbolic links (0 fast symbolic links) 0 sockets -------- 2 files

Reiserfs

Stworzony specjalnie dla Linuksa przez firmę Namesys w 2001 roku używa mechanizmów podobnych do bazy danych, co powoduje szybszy dostęp do dużej ilości małych plików. Księgowanie podobne jest w końcowym efekcie do ext3 ordered. Dodatkowo pozwala na użycie pojedynczego klastra do przechowywania kilku plików, co efektywnie zwiększa ilość miejsca dostępnego dla użytkownika i zmniejsza wewnętrzną fragmentację. Wyłączenie tej opcji i zwiększenie szybkości uzyskujemy opcją notail.

Wewnętrzna fragmentacja - zarezerwowanie przestrzeni bez intencji jej użycia. Oprócz wspomnianej sytuacji z klastrami podobnie ma się z programami, które rezerwują dla zmiennych zwykle więcej pamięci RAM, niż to jest im faktycznie potrzebne. Powodem tego zjawiska jest chęć uproszczenia budowy rozwiązań informatycznych.

Dzięki wspomnianej funkcji efektywnie zmniejsza się również wartość fragmentacji danych (czyli tej, którą usuwają defragmentatory). Reiserfs to najmniej fragmentujący się popularny system plików dla Linuksa wśród uznanych za stabilne.

W porównaniu podlinkowanym wyżej można sprawdzić dokładnie gdzie reiserfs jest lepszy, a gdzie gorszy od ext3. Jak widać teoretyczne założenia nie zawsze idą w parze z praktyką. Dodatkowo reiserfs zużywa więcej czasu procesora do działania. Warto też wspomnieć, że główny developer, założyciel Namesys, Hans Reiser siedzi w więzieniu za zabójstwo żony, więc o ile reiserfs znajduje się już w jądrze Linuksa, o tyle ma na pewno mniejsze wsparcie niż gdyby jego autor był na wolności.

Reiserfs jest również mniej odporny na uszkodzenia struktury. W razie niepowodzenia jej naprawy z kroniki zwykle przebudowane musi zostać całe drzewo systemu plików co nie zawsze się udaje i może być skutecznie zakłócone istniejącym na przebudowywanej partycji obrazem jakiejś partycji z reiserfs.

Nie twierdzę, że reiserfs jest zły, ale wydaje mi się, że ext3 nie będzie gorszy w większości zastosowań, a jego prosta budowa i większa dojrzałość zapewniają lepsze bezpieczeństwo danych. Z tego powodu i ponieważ ogólny wzór obsługi systemu plików został podany w dziale o EXT3, ograniczę się tu jednynie do napisania, że utworzyć system plików reiserfs można za pomocą polecenia mkfs.reiserfs, sprawdzić przez reiserfsck, a skonfigurować przy użyciu reiserfstune. Opcję notail włącza się przy montowaniu.

Nie będziemy zajmować się też reiserem4, który nie został włączony do jądra Linuksa, choć firma Namesys uznała go za stabilny. Jego fani zapewne znajdą sposób na jego włączenie w jądro i przetestowanie. Nikt rozsądny jednak nie używa go na maszynie produkcyjnej.

XFS

Wyprodukowany w 1994 roku przez firmę Silicon Graphics dla IRIX-a. Zwycięża szybkością w prawie każdym zestawieniu, jednak jego księgowanie w przypadku awarii zasilania nie zapewnia bezpieczeństwa danych, a jedynie sprawność struktury systemu plików. Zawiera wiele ciekawych mechanizmów takich jak określenie minimalnego transferu dla konkretnego pliku, rozszerzone uprawnienia i inne nieprzydatne w domu funkcje. Do rozważenia w przypadku mało istotnych rzadko zapisywanych danych lub jeśli jest się szczęśliwym posiadaczem UPS-a, czy laptopa.

Obsługa
Formatowanie XFS
blueice root {/home/mk} # mkfs.xfs /dev/sda5 -f meta-data=/dev/sda5 isize=256 agcount=8, agsize=196794 blks = sectsz=512 attr=0 data = bsize=4096 blocks=1574352, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=2560, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=65536 blocks=0, rtextents=0

Przełącznik -f posłużył do wymuszenia nadpisania istniejącego na dysku ext3.

Sprawdzanie XFS

XFS w odróżnieniu od innych systemów plików sprawdzany jest przy montowaniu, tak więc polecenie fsck.xfs nic nie robi. Aby sprawdzić i naprawić XFS-a używane są polecenia xfs_check i xfs_repair. Na prawidłowym systemie plików, który był wcześniej zamontowany (zobacz dolny fragment działu Partycja root (/) na poprzedniej stronie) xfs_check nie powinien niczego wyświetlić. W przeciwnym razie system plików może być naprawiony od razu przy użyciu xfs_repair lub bezpieczniej za pomocą xfsdump i mkfs.xfs: najpierw zrzucamy obraz partycji do pliku, tworzymy na jej miejsce nowy system plików, a później używamy xfsrestore, aby przywrócić dane na nowy system plików. Xfsdump nie zadziała jednak na uszkodzonym systemie plików. Jeśli system plików jest montowalny, xfsdump może zostać użyty do odzyskania cennych plików przed zastosowaniem xfs_repair. W przypadku, gdy partycji nie można zamontować, xfs_repair to jedyne rozwiązanie.

Konfiguracja XFS

XFS posiada wiele opcji konfiguracyjnych i funkcji, jednak inaczej niż w przypadku ext3, zwykły użytkownik nie ma raczej powodu do ich ruszania. Dla porządku podaję jednak dostępne możliwości:

blueice root {/home/mk} # xfs [WCIŚNIJ TAB 2 razy] xfs xfs_copy xfs_fsr xfs_logprint xfs_repair xfsinvutil xfs_admin xfs_db xfs_growfs xfs_mkfile xfs_rtcp xfsrestore xfs_bmap xfs_estimate xfs_info xfs_ncheck xfsdump xfs_check xfs_freeze xfs_io xfs_quota xfsinfo
Defragmentacja XFS

Na poprzedniej stronie wspominałem o namiastce defragmentatora, jaką jest xfs_fsr. Zobaczmy jak to działa:

blueice root {/home/mk} # xfs_fsr -v Found 2 mounted, writable, XFS filesystems xfs_fsr -m /etc/mtab -t 7200 -f /var/tmp/.fsrlast_xfs ... START: pass=0 ino=55 /dev/sdb5 /home/mk/do_nagrania /home/mk/do_nagrania start inode=55 ino=133 extents before:15 after:8 ino=133 ino=80 extents before:12 after:1 DONE ino=80 ino=79 extents before:11 after:1 DONE ino=79 ino=190 extents before:9 after:1 DONE ino=190 ino=77 extents before:6 after:1 DONE ino=77 ino=81 extents before:6 after:2 ino=81 ino=84 extents before:6 after:4 ino=84 ino=66 extents before:5 after:3 ino=66 ino=75 extents before:5 after:2 ino=75 ino=78 extents before:4 after:3 ino=78 ino=166 No improvement will be made (skipping): ino=166 ino=76 extents before:3 after:2 ino=76 ino=177 No improvement will be made (skipping): ino=177 ino=181 No improvement will be made (skipping): ino=181 ino=15852131 extents before:69 after:4 ino=15852131 ino=15852146 No improvement will be made (skipping): ino=15852146 ino=15852141

Co się stało? xfs_fsr pobrał z /etc/mtab listę systemów plików, wybrał najbardziej pofragmentowane pliki i rozpoczął ich kopiowanie (w jednym kawałku) do tymczasowej lokalizacji. Po skopiowaniu zmienił metadane tak, aby wskazywały na nowy plik. Gotowe. Program wyłączy się po dwóch godzinach. Extents wskazuje na liczbę fragmentów (przed i po). Wydawać by się mogło, że w tym konkretnym przykładzie plik w 69 kawałkach powinien być defragmentowany przed wszystkimi innymi. Nie stało się tak przypuszczalnie dlatego, że nie było odpowiednio dużej ciągłej wolnej przestrzeni dla niego, stąd defragmentacja mniejszych i mniej pofragmentowanych plików na początku.

Naturalnie takie defragmentowanie na ślepo jest dobre może na serwery, ale my chcemy wybrać system plików, czas działania i zobaczyć fragmentację plików. Sprawdźmy więc najpierw ogólny poziom fragmentacji:

blueice root {/home/mk} # xfs_db -r /dev/sdb5 xfs_db> frag actual 6917, ideal 1639, fragmentation factor 76.30% xfs_db> q blueice root {/home/mk} #

Dużo. Ogromnie dużo. A ponoć linuksowe filesystemy miały się nie fragmentować! Sprawdźmy jednak zajęte miejsce:

blueice root {/home/mk} # df |grep do_nagrania System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sdb5 244076732 236652080 7424652 97% /home/mk/do_nagrania

Też dużo. Poniżej framgentacja kilku wybranych plików:

blueice root {/home/mk} # xfs_bmap /home/mk/do_nagrania/kasia_backup.bin2.bz2 /home/mk/do_nagrania/kasia_backup.bin2.bz2: 0: [0..632319]: 477568192..478200511 1: [632320..1200423]: 293607872..294175975 2: [1200424..1748903]: 167414296..167962775 3: [1748904..2276943]: 473848424..474376463 4: [2276944..2684583]: 372085680..372493319 5: [2684584..3055831]: 55919440..56290687 6: [3055832..3420943]: 423702864..424067975 7: [3420944..3598863]: 468089744..468267663 blueice root {/home/mk} # xfs_bmap /home/mk/do_nagrania/mbr.bin /home/mk/do_nagrania/mbr.bin: 0: [0..7]: 5036152..5036159 blueice root {/home/mk} # xfs_bmap /home/mk/do_nagrania/lista\ winnych /home/mk/do_nagrania/lista winnych: 0: [0..7]: 5035000..5035007 blueice root {/home/mk} # xfs_bmap /home/mk/do_nagrania/PL/Nad\ Niemnem/Nad\ Niemnem\ cz.2.avi /home/mk/do_nagrania/PL/Nad Niemnem/Nad Niemnem cz.2.avi: 0: [0..107647]: 252025488..252133135 1: [107648..2031111]: 252238360..254161823 2: [2031112..2064575]: 254162016..254195479

Jak widać 97% miejsca jest zajętego, czyli trochę za dużo. Plik kasia_backup.bin2.bz2 zajmuje 1,7GB i jest w miarę nowy, choć przy jego tworzeniu jeszcze było trochę miejsca – 8 kawałków. mbr.bin to tylko 512 bajtów, a ~1GB film Nad Niemnem (do celów edukacyjnych wolno ;) ) leży już tu od niepamiętnych czasów – 3 kawałki. Inny ~1GB plik wrzucony niedawno a niepokazany na listingu podzielił się na aż 21 fragmentów. Pozostaje pytanie jakie to ma znaczenie przy tak wielkich plikach, jeśli te mniejsze przechowywane są w 1 kawałku. Dla mnie żadnego, naprawdę. Pliki kopiują się maksymalnymi szybkościami. Spróbujmy jednak uprzeć się i zdefragmentujemy pierwszy plik:

blueice root {/home/mk} # xfs_fsr /home/mk/do_nagrania/kasia_backup.bin2.bz2 -v /home/mk/do_nagrania/kasia_backup.bin2.bz2 No improvement will be made (skipping): /home/mk/do_nagrania/kasia_backup.bin2.bz2

No tak, za mało ciągłego miejsca. Ale przynajmniej wiesz jak to zrobić :] Podobnie można za argument podać konkretną partycję. Przy podaniu konkretnego pliku lub urządzenia można określić czas -t działania w sekundach. xfs_fsr przeprowadzi w tym czasie kilka przebiegów, defragmentując za każdym razem 10% najbardziej pofragmentowanych plików.

EXT4

System plików powstały na bazie EXT3, kompatybilny z nim (partycję ext3 można zamontować jako ext4 i na odwrót, pod warunkiem że ext4 nie używa ekstentów, czyli upychania kilku plików na jeden klaster jak w reiserfs). 25 grudnia 2008 został wydany jako stabilny wraz z jądrem 2.6.28, mimo wszystko zalecam ostrożność w jego używaniu. Na wielu niezależnych stronach przewijają się opinie, że powinniśmy dać mu jeszcze rok na przetestowanie w bojowych warunkach, zanim ostatecznie się na niego zdecydujemy. Większość popularnych dystrybucji stosuje EXT4 domyślnie. W chwili pisania tego tekstu nie było stabilnej wersji GRUB-a, który potrafiłby uruchomić system, gdy na / znajduje się ext4, stąd używanie patchowanej wersji GRUB-a lub niestabilnego GRUB-a 2.

Z ciekawych funkcji ext4 można wymienić możliwość defragmentacji bez odmontowywania, szybsze sprawdzanie poprawności, jeszcze lepsze bezpieczeństwo (przynajmniej w teorii dzięki sumom kontrolnym kroniki) i większą szybkość (połączenie writeback z sumami kontrolnymi). Defragmentacja oraz ostatnia opisana funkcja ciągle nie są zaimplementowane [stan na 29.11.09]. Artykuł o tym jak przejść na ext4 z ext3, oficjalne wiki na temat ext4 i wreszcie porównanie wydajnościowe z innymi systemami plików (benchmark). Trzeba podkreślić, że migracja EXT3 > EXT4 jest możliwa i nie powoduje utraty wydajności w porównaniu z "czystym" ext4, natomiast kosztuje utratę kompatybilności z zewnętrznymi narzędziami obsługującymi ext3 (na Windows na przykład). Powrót EXT 4 > EXT 3 nie jest możliwy konwencjalnymi sposobami.

Formatowanie ext4

Formatowanie przeprowadzamy analogicznie jak w innych systemach plików:

[root@linux mk]# mkfs mkfs mkfs.cramfs mkfs.ext3mkfs.ext4devmkfs.minix mkfs.reiserfs mkfs.bfs mkfs.ext2mkfs.ext4mkfs.jfs mkfs.ntfsmkfs.xfs [root@linux mk]# mkfs.ext4 /dev/sdc5 mke2fs 1.41.9 (22-Aug-2009) Etykieta systemu plików= Typ OS: Linux Rozmiar bloku=4096 (log=2) Rozmiar fragmentu=4096 (log=2) 394352 i-węzłów, 1574354 bloków 78717 bloków (5.00%) zarezerwowanych dla superużytkownika Pierwszy blok danych=0 Maksymalna liczba bloków systemu plików=1614807040 49 grup bloków 32768 bloków w grupie, 32768 fragmentów w grupie 8048 i-węzłów w grupie Kopie zapasowe superbloku zapisane w blokach: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Zapis tablicy i-węzłów: zakończono Tworzenie kroniki (32768 bloków): wykonano Zapis superbloków i podsumowania systemu plików: wykonano Ten system plików będzie automatycznie sprawdzany co każde 32 montowań lub co 180 dni, zależnie co nastąpi pierwsze. Można to zmienić poprzez tune2fs -c lub -i.
Sprawdzanie ext4

Analogicznie do ext3, patrz wyżej

Defragmentacja ext4

Do chwili udostępnienia oficjalnego narzędzia do defragmentacji możemy posłużyć się programem defrag, patrz poprzednia strona

Sprawdzanie ext4

Anaglogicznie do ext3, patrz wyżej

Tuning ext4 – tune2fs

Anaglogicznie do ext3, patrz wyżej

Tuning ext4 – noatime, commit interval

Anaglogicznie do ext3, patrz wyżej

Poprzednia strona
Spis
Kolejna strona
hacker emblem

© Marcin Kocur (marcin2006 AT gmail COM), licencja: Creative Commons 3.0 Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach

Valid HTML 4.01 StrictPoprawny CSS!