ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
      • AST
      • BSW
      • Elementy AI (dla nieIT)
      • BiKUS
  • Firma

Nieco o dyskach i partycjach w Linux

Napisane przez Igor Brzeżek on 19 marca 2026
Napisane w: Linux Debian, Systemy operacyjne.

Contents
  1. Dyski i Partycje w Systemie Linux
  2. 1. Dyski twarde w PC – historia i rozwój
  3. Skąd wziął się dysk twardy?
  4. Lata 80. i 90. – standaryzacja
  5. Lata 2000. – Serial ATA i większe pojemności
  6. Rewolucja SSD
  7. Gdzie jesteśmy dziś
  8. 2. Budowa dysku – HDD, SSD, NVMe
  9. Dysk HDD – mechanizm magnetyczny
  10. Struktura logiczna tworzona w fabryce
  11. Dysk flash – pamięć NAND
  12. SSD – dysk SSD z interfejsem SATA lub NVMe
  13. 3. Formatowanie fabryczne niskopoziomowe
  14. Czym jest formatowanie niskopoziomowe?
  15. Dawne LLF w dyskach HDD (do ok. 1990)
  16. LLF w nowoczesnych dyskach HDD
  17. LLF/fabryczny zapis w dyskach SSD i NVMe
  18. 4. Budowa logiczna dysku – CHS i LBA
  19. Geometria CHS (Cylinders, Heads, Sectors)
  20. LBA – liniowe adresowanie sektorów
  21. LBA w dyskach SSD i flash
  22. Sektor 512 B vs 4K (Advanced Format)
  23. 5. Tablica partycji – budowa i rodzaje
  24. Po co są partycje?
  25. Budowa tablicy partycji MBR (Master Boot Record)
  26. Partycja rozszerzona i logiczne
  27. Przykładowy układ partycji linuksowego dysku 500 GB (MBR)
  28. Typy partycji – kody MBR
  29. 6. Partycje a formatowanie
  30. Podział zadań: partycjonowanie vs formatowanie
  31. Formatowanie szybkie a pełne
  32. Jak wygląda tworzenie systemu plików w Linuksie?
  33. Zamontowanie partycji
  34. Plik /etc/fstab – automatyczne montowanie
  35. 7. Systemy plików – przegląd i zastosowania
  36. Co to jest system plików?
  37. ext4 – domyślny system plików Linuksa
  38. xfs – dla dużych plików i serwerów
  39. btrfs – nowoczesny system plików z migawkami
  40. FAT32 i exFAT – przenośność między systemami
  41. NTFS – system plików Windows
  42. Porównanie systemów plików
  43. 8. MBR kontra GPT – dwie tablice partycji
  44. Dlaczego MBR przestał wystarczać?
  45. GPT – nowy standard
  46. Struktura dysku z GPT
  47. Typy partycji GPT
  48. MBR vs GPT – zestawienie
  49. 9. Praca z partycjami w Linuksie – przykłady
  50. Wyświetlanie dysków i partycji
  51. Partycjonowanie narzędziem fdisk (MBR)
  52. Partycjonowanie narzędziem parted (GPT, nieinteraktywnie)
  53. Formatowanie i montowanie nowych partycji
  54. Sprawdzanie i naprawianie systemu plików
  55. LVM – elastyczne zarządzanie przestrzenią
  56. Typowy układ partycji serwera Linux (GPT, UEFI)

 

Dyski i partycje w systemie Linux – Materiały Dydaktyczne

Dyski i Partycje w Systemie Linux

Materiały dydaktyczne dla studentów IT pierwszego roku

1. Historia dysków 2. Budowa dysków 3. Formatowanie fabryczne 4. Budowa logiczna 5. Tablica partycji 6. Formatowanie partycji 7. Systemy plików 8. MBR vs GPT 9. Przykłady w Linuksie

1. Dyski twarde w PC – historia i rozwój

Skąd wziął się dysk twardy?

Dysk twardy (HDD – Hard Disk Drive) pojawił się w 1956 roku jako urządzenie firmy IBM o nazwie IBM 350 RAMAC. Ważył około tony, zajmował szafę o rozmiarach lodówki i mógł pomieścić zaledwie 5 megabajtów danych. Cena była proporcjonalna do rozmiaru – wynajem kosztował ówczesne fortuny. Jednak sam pomysł – losowy dostęp do danych zamiast sekwencyjnego odczytu taśmy magnetycznej – był przełomem.

W kolejnych dekadach dyski stawały się mniejsze i pojemniejsze. W 1980 roku Seagate wprowadził model ST-506 o pojemności 5 MB dla komputerów osobistych. Dysk miał już rozmiar 5,25 cala – nadal ogromny jak na dzisiejsze standardy, ale pasował do obudowy PC.

Lata 80. i 90. – standaryzacja

W latach 80. pojawiły się dwa kluczowe interfejsy: IDE (znany też jako ATA lub PATA) i SCSI. IDE trafił do domowych komputerów, SCSI do serwerów. Interfejs IDE był prostszy i tańszy, dlatego zdominował rynek konsumencki na kilkanaście lat.

Pod koniec lat 90. pojemności przekroczyły poziom gigabajtów. Typowy dysk z 1999 roku miał 8–20 GB i obracał się z prędkością 5400 lub 7200 obrotów na minutę. Prędkość obrotowa stała się jednym z głównych wskaźników wydajności.

Lata 2000. – Serial ATA i większe pojemności

W 2003 roku interfejs IDE zastąpił SATA (Serial ATA). Cienki kabel zamiast szerokiej taśmy uprościł prowadzenie przewodów w obudowach. SATA wprowadził też hot-plug – możliwość podłączenia dysku bez wyłączania komputera (w odpowiednich konfiguracjach). Prędkość transmisji rosła od 150 MB/s (SATA I) przez 300 MB/s (SATA II) do 600 MB/s (SATA III).

Pojemności HDD przekroczyły 1 TB około 2007 roku. Dziś dostępne są napędy HDD o pojemności 20–26 TB, choć samo medium – obracający się talerz magnetyczny – nie zmieniło się fundamentalnie od lat 60.

Rewolucja SSD

Pamięci flash jako nośniki danych zaczęły pojawiać się w laptopach około 2007–2008 roku. Pierwsze dyski SSD były drogie i małe, ale znacznie szybsze od HDD w operacjach losowego odczytu. Brak ruchomych części oznaczał też ciszę i odporność na wstrząsy.

Przełomem był interfejs NVMe (Non-Volatile Memory Express, ok. 2013), który pozwolił dyskom SSD komunikować się bezpośrednio przez szynę PCIe zamiast przez kontroler SATA. Efekt: prędkość odczytu rzędu 3000–7000 MB/s – kilkanaście razy więcej niż SATA SSD i ponad dziesięciokrotnie więcej niż HDD.

Gdzie jesteśmy dziś

Dziś rynek dzieli się na trzy główne technologie: klasyczne HDD (tanie, duże pojemności, wolne), SSD SATA (dobry kompromis ceny i prędkości) i NVMe SSD (najszybsze, dominują w nowych komputerach). W serwerowniach funkcjonuje też SAS (następca SCSI). Taśmy magnetyczne wróciły do roli archiwizacji danych na skalę petabajtów.

Historia dysków twardych – oś czasu od IBM 350 RAMAC do NVMe SSD
Rys. 1-1. Historia nośników danych – od IBM 350 RAMAC (1956) do dysków NVMe SSD
Porównanie interfejsów IDE, SATA i NVMe M.2
Rys. 1-2. Ewolucja interfejsów dyskowych: IDE, SATA, NVMe M.2

2. Budowa dysku – HDD, SSD, NVMe

Dysk HDD – mechanizm magnetyczny

Dysk HDD (Hard Disk Drive) składa się z jednego lub kilku talerzy wykonanych z aluminium lub szkła, pokrytych warstwą materiału ferromagnetycznego. To na tym materiale przechowywane są dane w postaci zmian polaryzacji magnetycznej.

Nad talerzami poruszają się głowice odczytu/zapisu mocowane na ramieniu siłownika (ang. actuator arm). Głowica nigdy nie dotyka talerza – unosi się na warstwie powietrza grubości kilku nanometrów, wytwarzanej przez obrót talerzy z prędkością 5400–7200 RPM (w dyskach serwerowych nawet 15 000 RPM). Jeżeli głowica dotknie talerza (tzw. head crash) – dane w tym miejscu zostają trwale zniszczone.

Główne elementy fizyczne HDD:

  • Talerz (platter) – nośnik magnetyczny, zwykle kilka sztuk ułożonych na wspólnej osi (wrzeciono).
  • Głowica (read/write head) – elektromagnes do zapisu i czujnik magnetooporowy (GMR) do odczytu. Każda strona talerza ma osobną głowicę.
  • Siłownik (actuator) – ramię elektromagnetyczne pozycjonujące głowice na odpowiednim cylindrze.
  • Wrzeciono (spindle) – oś synchronizująca obroty wszystkich talerzy.
  • Pamięć podręczna (cache/buffer) – pamięć DRAM (16–256 MB) przyśpieszająca operacje przez buforowanie danych.
  • PCB (płyta sterująca) – zawiera kontroler, firmware i interfejs SATA/SAS.

Struktura logiczna tworzona w fabryce

W fabryce HDD jest wstępnie „sformatowany” na poziomie sprzętowym. Talerze zostają podzielone na koncentryczne ścieżki (ang. tracks), a każda ścieżka na sektory (ang. sectors) o rozmiarze 512 B lub 4096 B. Na tę strukturę nałożono jeszcze serwopasma (ang. servo stripes) – dane kalibracyjne pozwalające głowicy precyzyjnie trafić na właściwą ścieżkę. Tej struktury użytkownik nie może zmienić ani zobaczyć – jest ona częścią firmware’u dysku.

Dysk flash – pamięć NAND

Pendrive’y i karty pamięci to pamięci NAND Flash. Dane przechowuje się w tranzystorach z pływającą bramką (floating gate), które mogą zatrzymać ładunek elektryczny bez stałego zasilania. To właśnie dlatego dane na pendrivie nie znikają po odłączeniu zasilania.

Komórki NAND występują w wariantach:

  • SLC (Single-Level Cell) – 1 bit na komórkę, najtrwalsze, drogie, używane w systemach krytycznych.
  • MLC (Multi-Level Cell) – 2 bity na komórkę.
  • TLC (Triple-Level Cell) – 3 bity na komórkę, popularne w konsumenckich SSD.
  • QLC (Quad-Level Cell) – 4 bity na komórkę, najtańsze, najmniej trwałe.

Pamięć NAND nie może być nadpisywana bezpośrednio – przed zapisem blok musi zostać wymazany. To powoduje konieczność stosowania algorytmu wear leveling (równomierne rozłożenie zapisów) i garbage collection (porządkowanie wolnych bloków). Wszystkim tym zarządza kontroler SSD, niewidoczny dla systemu operacyjnego.

Struktura logiczna pamięci NAND z fabryki to hierarchia: strona (page) – najmniejsza jednostka odczytu/zapisu (4–16 KB), blok (block) – najmniejsza jednostka wymazywania (256 KB–4 MB, zawierający kilkaset stron).

SSD – dysk SSD z interfejsem SATA lub NVMe

SSD (Solid-State Drive) to urządzenie łączące moduły NAND flash z kontrolerem i interfejsem hosta. Kontroler SSD:

  • Tłumaczy logiczne adresy sektorów (LBA) na fizyczne adresy stron NAND.
  • Wykonuje wear leveling, garbage collection i obsługę zapasowych bloków.
  • Buforuje dane (DRAM cache lub SLC write buffer).
  • Szyfruje dane (jeśli wspiera AES 256-bit).

SSD z interfejsem SATA III osiągają ok. 550 MB/s odczytu – to limit protokołu SATA, nie samej pamięci NAND. Dyski NVMe korzystają z interfejsu PCIe (x4) i protokołu NVMe, który eliminuje przestarzałe warstwy pośredniczące. Wynik: 3–7 GB/s odczytu w zależności od generacji PCIe (Gen 3, 4, 5).

Przekrój dysku HDD z opisanymi komponentami
Rys. 2-1. Budowa dysku HDD – talerze, głowice, siłownik, wrzeciono
Porównanie: komórka NAND SLC/TLC vs NVMe PCIe schemat
Rys. 2-2. Hierarchia pamięci NAND (page, block) i architektura SSD NVMe

3. Formatowanie fabryczne niskopoziomowe

Czym jest formatowanie niskopoziomowe?

Formatowanie niskopoziomowe (ang. low-level format, LLF) to proces wyznaczania fizycznej struktury nośnika – ścieżek, sektorów i znaczników sterujących. Jest to pierwszy „podział” nośnika na adresowalne jednostki danych. Bez LLF dysk to tylko kawałek metalu z warstwą magnetyczną – nie ma gdzie zapisać bitów.

Dawne LLF w dyskach HDD (do ok. 1990)

We wczesnej erze PC formatowanie niskopoziomowe HDD wykonywał sam użytkownik lub technik. Przy zakupie dysku z interfejsem MFM lub RLL (lata 80.) dysk był dostarczany bez gotowej struktury sektorowej. Użytkownik uruchamiał specjalny program z BIOS-u komputera (np. przez kombinację klawiszy Ctrl+Alt+S w starych AMI BIOS) i ręcznie podawał liczbę głowic, cylindrów i sektorów na ścieżkę. Program następnie magnetycznie zapisywał znaczniki początku sektora (ang. sector ID marks) i nagłówki. Cały proces trwał 20–60 minut.

Użytkownik musiał też podać listę uszkodzonych sektorów (ang. bad sector list) dołączoną do dysku na papierze (dosłownie naklejka na obudowie). Firmware HDD nie radził sobie z remapowaniem uszkodzeń – to był obowiązek systemu operacyjnego.

LLF w nowoczesnych dyskach HDD

Nowoczesne HDD z interfejsem IDE/SATA są formatowane niskopoziomowo wyłącznie w fabryce, specjalistycznym sprzętem. Użytkownik nie ma do tej operacji dostępu. To, co w starszych narzędziach (np. w DOS-owym DEBUG) nazywano „formatem niskopoziomowym”, to w rzeczywistości zapis wzorca testowego na wszystkich sektorach – nie tworzy nowej struktury fizycznej, bo ta już istnieje z fabryki.

Nowoczesny HDD przechowuje dane kalibracyjne (serwopasma) i mapę złych sektorów w obszarach niedostępnych dla systemu operacyjnego (strefa serwisowa, ang. service area). Firmware automatycznie podmienia uszkodzone sektory na zapasowe z ukrytej puli – mechanizm ten nosi nazwę realokacji sektorów (ang. sector remapping). Użytkownik nie widzi że coś się dzieje; dysk nadal wygląda jako jednolita przestrzeń LBA.

LLF/fabryczny zapis w dyskach SSD i NVMe

W przypadku dysków flash pojęcie „formatowania niskopoziomowego” wygląda zupełnie inaczej. Pamięć NAND flash jest produkowana i testowana w fabryce – każdy chip jest sprawdzany, złe bloki są oznaczane i wpisywane do tabeli BBT (Bad Block Table), przechowywanej w specjalnym obszarze pamięci. Ta tabela jest trwałą częścią kontrolera i nie może być zmodyfikowana przez użytkownika.

Kontroler SSD zarządza mapowaniem logicznych adresów (LBA) na fizyczne bloki NAND przez wewnętrzną tablicę FTL (Flash Translation Layer). To właśnie FTL realizuje wear leveling i obsługę złych bloków. Z punktu widzenia systemu operacyjnego dysk SSD wygląda identycznie jak HDD – ciąg numerowanych sektorów (LBA). FTL tłumaczy każde żądanie w locie.

Polecenie ATA Secure Erase lub NVMe Format to jedyna „niskopoziomowa” operacja dostępna dla użytkownika w dyskach flash. Polega ona na elektronicznym wymazaniu wszystkich komórek NAND i zresetowaniu wewnętrznej tablicy FTL. Efekt jest zbliżony do fabrycznie nowego dysku.

Schemat starego LLF – ścieżki i znaczniki sektorów MFM
Rys. 3-1. Dawne formatowanie niskopoziomowe HDD MFM – znaczniki sektorów, lista bad sectorów
FTL Flash Translation Layer – schemat mapowania LBA na bloki NAND
Rys. 3-2. Flash Translation Layer (FTL) w dysku SSD – mapowanie LBA↔blok NAND, wear leveling

4. Budowa logiczna dysku – CHS i LBA

Geometria CHS (Cylinders, Heads, Sectors)

Przez dziesięciolecia adresy sektorów na dysku HDD opisywano trzema liczbami: cylinder, głowica (ang. head) i sektor. Stąd skrót CHS.

  • Ścieżka (track) – jeden koncentryczny okrąg na jednej stronie talerza. Na 3,5-calowym HDD może być ich od kilku tysięcy do kilkudziesięciu tysięcy na jedną stronę talerza.
  • Cylinder – zestaw wszystkich ścieżek o tym samym promieniu ze wszystkich talerzy i ich stron. Jeśli dysk ma 4 talerzy (8 stron), cylinder składa się z 8 ścieżek. Głowice są mechanicznie połączone i zawsze przebywają nad tym samym cylindrem – stąd pojęcie cylindra.
  • Sektor (sector) – najmniejsza adresowalna jednostka zapisu na ścieżce. Klasycznie 512 bajtów, w nowoczesnych HDD 4096 bajtów (tzw. dyski AF – Advanced Format).
  • Strona (side) – każdy talerz ma dwie strony i dwie odpowiadające im głowice. Numer głowicy identyfikuje stronę talerza.

Adresy CHS miały ograniczenia. Klasyczny BIOS obsługiwał maksymalnie: 1024 cylindry × 256 głowic × 63 sektory = niecałe 8,5 GB. To był poważny problem, gdy dyski przekroczyły 8 GB (ok. 1999). Rozwiązano go przez przejście na adresowanie liniowe LBA.

LBA – liniowe adresowanie sektorów

LBA (Logical Block Addressing) zastępuje trójkę CHS jedną liczbą całkowitą. Sektor LBA 0 to pierwszy sektor dysku, LBA 1 – drugi itd. System operacyjny i sterownik SATA/NVMe posługują się wyłącznie LBA. Przeliczenie LBA na fizyczny cylinder/głowicę/sektor wykonuje firmware dysku, niewidocznie dla oprogramowania.

LBA-28 (28-bitowy adres) obsługuje dyski do 128 GB przy sektorze 512 B. LBA-48 (48-bitowy) obsługuje do 128 PiB – wartości nieosiągalnej w praktyce przez bardzo długi czas. Wszystkie współczesne dyski używają LBA-48.

LBA w dyskach SSD i flash

Dyski SSD i NVMe od samego początku projektowane są z myślą o LBA. Nie mają żadnej fizycznej geometrii cylindrów – to pojęcie nie ma sensu dla pamięci flash, w której każdy blok jest dostępny bezpośrednio (random access). Kontroler SSD udostępnia systemowi operacyjnemu ciąg bloków LBA dokładnie tak, jak HDD, choć wewnętrznie mapuje je na błyskawicznie dostępne strony NAND.

Uwaga praktyczna: Komenda hdparm -I /dev/sda w Linuksie wyświetla geometrię CHS jako wartość historyczną (np. 16383 cylindrów / 16 głowic / 63 sektory), ale nowoczesny firmware zupełnie ignoruje CHS – to tylko kompatybilność wsteczna z BIOS-em.

Sektor 512 B vs 4K (Advanced Format)

Stary rozmiar sektora to 512 bajtów. Narzut na nagłówki i sumy kontrolne ECC wynosił ok. 15% przestrzeni. Dyski AF (Advanced Format) używają sektora fizycznego 4096 B, co zmniejsza narzut i poprawia odporność na błędy. Problem: starsze systemy i partycjonerzy zakładają sektor 512 B. Nowoczesne dyski AF emulują sektory 512 B (tryb 512e) lub raportują sektor 4096 B wprost (tryb 4Kn). Zły dobór rozmiaru sektora przy partycjonowaniu powoduje problemy z wyrównaniem – partycjonerzy takie jak parted ostrzegają o tym automatycznie.

Schemat geometrii CHS – cylindry, ścieżki, sektory
Rys. 4-1. Geometria CHS dysku HDD – cylindry, ścieżki, sektory i ich adresowanie
Porównanie sektora 512B vs 4096B Advanced Format
Rys. 4-2. Sektor 512 B kontra Advanced Format 4 KB – różnica narzutu ECC i wyrównania

5. Tablica partycji – budowa i rodzaje

Po co są partycje?

Partycja to wydzielony, ciągły obszar sektorów dysku traktowany przez system operacyjny jako osobne urządzenie blokowe. Dysk ma jedną fizyczną przestrzeń adresową LBA, natomiast partycjonowanie dzieli ją na niezależne segmenty. Każda partycja może mieć własny system plików, własny system operacyjny, własne dane.

Typowe powody podziału dysku na partycje:

  • Oddzielenie systemu operacyjnego od danych użytkownika (w razie reinstalacji system nie kasuje danych).
  • Instalacja kilku systemów operacyjnych obok siebie (dual-boot).
  • Wydzielenie partycji swap (obszar wymiany pamięci wirtualnej).
  • Izolacja logów serwera – zapełnienie /var/log nie zatrzymuje systemu, bo reszta systemu jest na innej partycji.
  • Różne opcje montowania na różnych partycjach (np. noexec na /tmp).

Budowa tablicy partycji MBR (Master Boot Record)

Klasyczna tablica partycji jest przechowywana w MBR – pierwszym sektorze dysku (LBA 0, 512 bajtów). Sektor MBR ma trzy obszary:

Offset Rozmiar Zawartość
0x000 446 B Bootloader (kod uruchomiony przez BIOS)
0x1BE 64 B Tablica 4 wpisów partycji (po 16 B każdy)
0x1FE 2 B Sygnatura 0x55AA (potwierdzenie poprawności MBR)

Każdy z czterech 16-bajtowych wpisów partycji zawiera:

Pole Rozmiar Opis
Status 1 B 0x80 = aktywna (bootowalna), 0x00 = nieaktywna
CHS start 3 B Adres CHS początku partycji (ignorowany przez nowoczesne systemy)
Typ partycji 1 B Kod identyfikujący system plików (np. 0x83 = Linux, 0x82 = swap)
CHS end 3 B Adres CHS końca partycji (ignorowany)
LBA start 4 B Numer pierwszego sektora partycji (LBA)
Liczba sektorów 4 B Całkowita liczba sektorów partycji

Ograniczenia MBR: maksymalnie 4 partycje podstawowe, maksymalny adres LBA to 232–1, czyli maksymalny rozmiar dysku obsługiwany przez MBR wynosi 2 TB. Dla większych dysków konieczny jest GPT.

Partycja rozszerzona i logiczne

Aby obejść limit 4 partycji, wprowadzono partycję rozszerzoną (ang. extended partition). Zamiast danych, partycja rozszerzona zawiera łańcuch EBR (Extended Boot Record) – każdy EBR to mały ukryty sektor opisujący jedną partycję logiczną i wskazujący na następny EBR.

W schemacie MBR możliwe jest:

  • Maks. 4 partycje podstawowe (primary), LUB
  • Maks. 3 partycje podstawowe + 1 rozszerzona, wewnątrz rozszerzonej – dowolna liczba partycji logicznych.

W Linuksie partycje dysków IDE/SATA o strukturze MBR są oznaczane: /dev/sda1–sda4 (partycje podstawowe/rozszerzona), /dev/sda5 i wyżej (partycje logiczne).

Przykładowy układ partycji linuksowego dysku 500 GB (MBR)

Dysk /dev/sda: 500 GB (ok. 976 773 168 sektorów po 512 B)

LBA 0         MBR (bootloader + tablica partycji)
┌─────────────────────────────────────────────────────────────┐
│  sda1  /boot    ext4   512 MB   (LBA   2048 –  1 050 623)   │ primary, aktywna
│  sda2  / (root) ext4   40  GB   (LBA 1050624 – 84 934 655)  │ primary
│  sda3  swap     swap   8   GB   (LBA 84934656 – 101711871)  │ primary
│  sda4  [rozszerzona]   451 GB   (LBA 101711872 – 976773167) │ extended
│   └─ sda5  /home ext4   451 GB   (partycja logiczna)        │
└─────────────────────────────────────────────────────────────┘

Typy partycji – kody MBR

Najczęściej spotykane kody typów partycji w MBR:

Kod hex Typ Zastosowanie
0x83 Linux Partycje z systemami plików ext4, xfs, btrfs itp.
0x82 Linux swap Obszar wymiany (swap)
0x05 / 0x0F Rozszerzona Kontener na partycje logiczne
0x07 NTFS / exFAT Systemy plików Windows
0xEF EFI System Partycja EFI (EFI SP) – używana przy UEFI
0xFD Linux RAID Partycja wchodząca w skład macierzy RAID
0x8E Linux LVM Physical Volume dla LVM
Schemat MBR – bootloader, tablica partycji, sygnatura 0x55AA
Rys. 5-1. Budowa sektora MBR (LBA 0) – bootloader, tablica 4 wpisów, sygnatura
Przykładowy układ dysku z partycjami podstawowymi i logicznymi (MBR)
Rys. 5-2. Przykładowy podział dysku na partycje MBR – primary, extended, logical

6. Partycje a formatowanie

Podział zadań: partycjonowanie vs formatowanie

Partycjonowanie i formatowanie to dwa osobne kroki, często mylone ze sobą.

  • Partycjonowanie – definiuje granice (zakres LBA) partycji i zapisuje je w tablicy partycji (MBR lub GPT). Nie dotyka zawartości partycji.
  • Formatowanie – tworzy system plików wewnątrz partycji: inicjalizuje superblok, tablice i-węzłów (lub ich odpowiedniki), dziennik itp. Dopiero po formatowaniu system operacyjny może przechowywać pliki.

Analogia: partycjonowanie to wytyczenie działki budowlanej na mapie, formatowanie to postawienie konkretnego budynku na tej działce.

Formatowanie szybkie a pełne

Formatowanie szybkie (ang. quick format) kasuje jedynie metadane systemu plików (nadpisuje superblok, tablice itp.) bez sprawdzania każdego sektora pod kątem błędów. Dane na dysku nadal fizycznie istnieją i w większości przypadków można je odzyskać narzędziami do odzyskiwania danych.

Formatowanie pełne (ang. full format) dodatkowo weryfikuje każdy sektor i oznacza uszkodzone (bad blocks). Na dysku SSD pełne formatowanie ma ograniczoną wartość – złe bloki zarządza kontroler, nie system operacyjny.

Jak wygląda tworzenie systemu plików w Linuksie?

Po utworzeniu partycji narzędziem fdisk, parted lub gdisk, tworzymy na niej system plików jedną komendą. Poniższe przykłady tworzą system plików ext4 i xfs:

# Tworzenie systemu plików ext4 na /dev/sda1
mkfs.ext4 /dev/sda1

# Tworzenie xfs na /dev/sdb1
mkfs.xfs /dev/sdb1

# Tworzenie obszaru swap
mkswap /dev/sda3

# Aktywacja swap
swapon /dev/sda3

Zamontowanie partycji

W Linuksie każda partycja po sformatowaniu musi być zamontowana w wybranym punkcie drzewa katalogów. Nie ma liter dysków jak w Windows – zamiast tego każda partycja zostaje „wpięta” w konkretny katalog (punkt montowania). 97.

# Montowanie ręczne (tymczasowo, do przeładowania systemu)
mount /dev/sda2 /mnt/data

# Wypisanie zamontowanych partycji
lsblk -f

# Stałe montowanie – wpis w /etc/fstab
# UUID=xxxx  /home  ext4  defaults  0  2
Skąd wziąć UUID partycji?
blkid /dev/sda2 – wyświetla UUID i typ systemu plików. Zaleca się używać UUID zamiast nazwy urządzenia (/dev/sdaX), bo nazwy mogą się zmieniać po dodaniu nowego dysku.

Plik /etc/fstab – automatyczne montowanie

Plik /etc/fstab opisuje wszystkie partycje montowane automatycznie przy starcie systemu. Format każdej linii:

# urządzenie / UUID   punkt-montowania  typ-fs  opcje   dump  pass
UUID=a1b2c3d4-... /boot        ext4    defaults  0  1
UUID=e5f6g7h8-... /            ext4    defaults  0  1
UUID=i9j0k1l2-... /home        ext4    defaults  0  2
UUID=m3n4o5p6-... none         swap    sw        0  0

Kolumna pass: 1 = sprawdzaj jako pierwsza (tylko root), 2 = sprawdzaj po roocie, 0 = nie sprawdzaj. System kontrolny to narzędzie fsck (filesystem check).

Schemat kroków: partycjonowanie → formatowanie → montowanie
Rys. 6-1. Trzy kroki przygotowania dysku: partycjonowanie → mkfs → mount
Struktura pliku /etc/fstab z opisem kolumn
Rys. 6-2. Budowa pliku /etc/fstab – pola, opcje montowania, numery pass/dump

7. Systemy plików – przegląd i zastosowania

Co to jest system plików?

System plików to warstwa oprogramowania zarządzająca organizacją danych na partycji. Definiuje, jak dane są dzielone na pliki i katalogi, jak są indeksowane, jak zapamiętywane są prawa dostępu i czasy modyfikacji. System plików zapisuje te informacje na początku partycji w tzw. superbloku i tablicy i-węzłów (ang. inodes).

I-węzeł (inode) to rekord przechowujący metadane pliku: rozmiar, właściciela (UID/GID), uprawnienia (rwx), czasy, a przede wszystkim wskaźniki na bloki danych. Sama nazwa pliku nie jest przechowywana w i-węźle – jest w katalogu, który mapuje nazwy na numery i-węzłów.

ext4 – domyślny system plików Linuksa

ext4 (Fourth Extended Filesystem) to ewolucja systemu ext3. Używa dziennika (ang. journal) – rejestru planowanych operacji, dzięki któremu po nagłym zaniku zasilania system może odtworzyć spójny stan partycji w kilka sekund. Bez dziennika musiano by skanować całą partycję narzędziem fsck.

Kluczowe cechy ext4:

  • Maksymalny rozmiar partycji: 1 EiB (exbibajt).
  • Maksymalny rozmiar pliku: 16 TiB.
  • Obsługa ekstentów (ang. extents) – zamiast listy bloków, plik opisywany jest zakresem ciągłych bloków, co przyśpiesza operacje na dużych plikach.
  • Dziennik metadanych lub pełnych danych (opcja data=journal).
  • Opóźniona alokacja bloków (poprawia fragmentację).

xfs – dla dużych plików i serwerów

XFS to wysokowydajny system plików zaprojektowany przez SGI w 1993 roku, dziś popularny w serwerach Red Hat/CentOS. Doskonale skaluje się przy dużych plikach i bardzo wielu plikach w jednym katalogu. Używa B-drzew do zarządzania przestrzenią, co zapewnia szybki dostęp niezależnie od rozmiaru partycji.

  • Maksymalny rozmiar partycji: 8 EiB.
  • Maksymalny rozmiar pliku: 8 EiB.
  • Doskonała wydajność przy równoległym I/O (typowe dla baz danych).
  • Uwaga: xfs nie obsługuje zmniejszania partycji – można ją tylko powiększyć.

btrfs – nowoczesny system plików z migawkami

95.

96. Btrfs (B-Tree Filesystem) to system plików nowej generacji dla Linuksa. Jego główne zalety to: 97.

  • Migawki (snapshots) – zapis stanu systemu plików w danej chwili, bez kopiowania danych (mechanizm copy-on-write).
  • Copy-on-Write (CoW) – zapis nie nadpisuje starych danych, tworzy nową kopię. To podstawa migawek i ochrony przed uszkodzeniem.
  • Wbudowany RAID – btrfs może zarządzać wieloma dyskami bez zewnętrznego menedżera RAID.
  • Sumy kontrolne danych i metadanych – wykrywa cichą degradację danych (ang. bit rot).
  • Stosowany domyślnie w Fedorze (od wersji 33) i openSUSE.

FAT32 i exFAT – przenośność między systemami

FAT32 (File Allocation Table 32-bit) to stary system plików DOS/Windows. Obsługuje pliki do 4 GB i partycje do 2 TB. Jest rozumiany przez praktycznie każdy system operacyjny i urządzenie (aparaty, telewizory), dlatego pozostaje standardem na wymiennych nośnikach.

exFAT (Extended FAT) to nowsza wersja FAT dla dużych pendrive’ów i kart SD – obsługuje pliki powyżej 4 GB. Stosowany jako standard dla kart SD powyżej 32 GB (SDXC) oraz dla partycji wymiany danych między Windows, macOS i Linuxem.

NTFS – system plików Windows

NTFS (New Technology File System) to główny system plików Windows NT i kolejnych. Linuks obsługuje NTFS przez sterowniki (ntfs-3g lub wbudowaną obsługę jądra od wersji 5.15). Obsługuje prawa dostępu w stylu Windows ACL, szyfrowanie (EFS), kompresję, i-węzły do 1 PB rozmiaru.

Porównanie systemów plików

System plików Maks. rozmiar pliku Dziennik Główne zastosowanie
ext4 16 TiB Tak Desktop i serwery Linuks – ogólne zastosowanie
xfs 8 EiB Tak Serwery z dużymi plikami, bazy danych
btrfs 16 EiB CoW Systemy z migawkami, RAID programowy
FAT32 4 GiB Nie Nośniki wymienne, zgodność cross-platform
exFAT 128 PiB Nie Duże karty SD, przenośność Windows/Linux/macOS
NTFS 16 EiB Tak Windows, wymiana danych z Windows
Schemat i-węzła ext4 – wskaźniki na bloki danych
Rys. 7-1. Struktura i-węzła ext4 – metadane pliku i wskaźniki na bloki / ekstenty
Porównanie systemów plików ext4, xfs, btrfs, FAT32 w tabeli
Rys. 7-2. Porównanie systemów plików – cechy, rozmiary, zastosowania

8. MBR kontra GPT – dwie tablice partycji

Dlaczego MBR przestał wystarczać?

MBR powstał w 1983 roku na potrzeby IBM PC. Przez kilka dekad sprawdzał się dobrze, ale ma trzy zasadnicze wady, które stały się problemem wraz ze wzrostem pojemności dysków i wymagań bezpieczeństwa:

  • Obsługuje dyski do 2 TB (32-bitowy adres LBA × 512 B = 2,19 TB).
  • Pozwala na maksymalnie 4 partycje podstawowe (lub 3 + 1 rozszerzona).
  • Tablica partycji istnieje tylko w jednym miejscu – jej uszkodzenie może uniemożliwić uruchomienie systemu.

GPT – nowy standard

GPT (GUID Partition Table) to standard opracowany razem z interfejsem UEFI (Unified Extensible Firmware Interface). Zastępuje MBR i usuwa wszystkie jego ograniczenia. GPT jest domyślną tablicą partycji w każdym nowym komputerze z UEFI.

Najważniejsze cechy GPT:

  • Obsługuje dyski do 9,4 ZB (64-bitowy adres LBA).
  • Umożliwia do 128 partycji (w praktyce bez rozróżnienia na primary/extended/logical).
  • Każda partycja ma unikalny identyfikator GUID (Globally Unique Identifier) – 128-bitowy losowy numer zamiast kodu hex.
  • Tablica GPT jest przechowywana w dwóch miejscach: na początku i na końcu dysku (kopia zapasowa). Uszkodzenie jednej kopii nie niszczy danych.
  • Zawiera sumy kontrolne CRC32 chroniące integralność tablicy.

Struktura dysku z GPT

LBA 0    Protective MBR (kompatybilność wsteczna – sygnatura 0xEE)
LBA 1    Nagłówek GPT (GPT Header) – rozmiar dysku, liczba partycji, CRC
LBA 2–33 Tablica wpisów GPT (128 wpisów × 128 B = 16 384 B)
LBA 34+  Dane partycji (kolejne partycje)
...
LBA -33  Zapasowa tablica wpisów GPT
LBA -1   Zapasowy nagłówek GPT

Protective MBR w LBA 0 zawiera jeden wpis partycji obejmujący cały dysk z typem 0xEE. Cel: stare narzędzia rozumiejące tylko MBR nie uznają dysku za pusty i nie nadpiszą go tablicą MBR przez przypadek.

Typy partycji GPT

W GPT typ partycji jest kodowany jako GUID, a nie jako 1-bajtowy kod hex jak w MBR:

Typ partycji GUID (skrócony) Zastosowanie
EFI System Partition C12A7328-… Pliki bootloadera UEFI (FAT32, ok. 100–500 MB)
Linux filesystem 0FC63DAF-… Ogólna partycja linuxowa (ext4, xfs, btrfs…)
Linux swap 0657FD6D-… Obszar wymiany
Linux LVM E6D6D379-… Physical Volume dla LVM
Linux RAID A19D880F-… Partycja macierzy RAID
Microsoft Basic Data EBD0A0A2-… Partycje NTFS/FAT Windows

MBR vs GPT – zestawienie

Cecha MBR GPT
Maks. rozmiar dysku 2 TB 9,4 ZB
Maks. liczba partycji 4 primary (lub 3+∞ logicznych) 128
Identyfikator partycji 1-bajtowy kod hex 128-bitowy GUID
Kopia zapasowa tablicy Brak Tak (na końcu dysku)
Suma kontrolna Brak CRC32
Wymagania firmware Legacy BIOS UEFI (lub BIOS z obsługą GPT)
Uruchamianie Linuksa na GPT+BIOS Bezpośrednio Potrzebna mała partycja BIOS Boot (1–2 MB)
Kiedy używać GPT? Zawsze, gdy dysk ma więcej niż 2 TB lub komputer ma UEFI. Dla nowych instalacji GPT jest zalecanym wyborem bez względu na rozmiar dysku.
Schemat struktury GPT – nagłówek, tablica wpisów, kopia zapasowa
Rys. 8-1. Struktura GPT – Protective MBR, nagłówek, tablica wpisów, kopia na końcu dysku
Porównanie MBR vs GPT w tabeli z ograniczeniami
Rys. 8-2. Porównanie MBR i GPT – rozmiary, liczba partycji, bezpieczeństwo

9. Praca z partycjami w Linuksie – przykłady

Wyświetlanie dysków i partycji

Zanim zaczniesz cokolwiek zmieniać, sprawdź aktualny stan dysków. W Linuksie do dyspozycji masz kilka narzędzi:

# Wyświetla drzewo urządzeń blokowych z rozmiarami i systemami plików
lsblk -f

# Przykładowe wyjście:
NAME   FSTYPE   LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 ext4            a1b2c3d4-1234-5678-abcd-ef0123456789  400M    22%   /boot
├─sda2 ext4            e5f6g7h8-...                           34G     46%   /
└─sda3 swap            m3n4o5p6-...                                         [SWAP]
nvme0n1
└─nvme0n1p1 btrfs      f0e1d2c3-...                          800G    10%   /home
# Wyświetl tablicę partycji (MBR lub GPT) dysku sda
sudo fdisk -l /dev/sda

# Wyświetl tablicę GPT narzędziem gdisk
sudo gdisk -l /dev/sda

# Szczegółowe informacje o urządzeniu i jego geometrii
sudo parted /dev/sda print

Partycjonowanie narzędziem fdisk (MBR)

fdisk to interaktywne narzędzie tekstowe do zarządzania tablicą MBR. Obsługuje też GPT (od wersji util-linux 2.23), ale dla GPT wygodniejszy jest gdisk.

# Uruchom fdisk na dysku sdb (nowym, pustym)
sudo fdisk /dev/sdb

# Wewnątrz fdisk:
# m – pomoc (menu)
# g – utwórz nową tablicę GPT (lub o – dla MBR)
# n – nowa partycja
# t – zmień typ partycji
# p – wydrukuj tablicę partycji
# w – zapisz i wyjdź
# q – wyjdź bez zapisywania

Przykład tworzenia dwóch partycji na /dev/sdb (MBR):
Command (m for help): n
Partition type: p (primary)
Partition number: 1
First sector: [Enter – domyślny, 2048]
Last sector: +20G        ← partycja 20 GB

Command: n
Partition number: 2
First sector: [Enter]
Last sector: +4G         ← partycja 4 GB

Command: t
Partition number: 2
Hex code: 82             ← Typ Linux swap

Command: w                ← Zapisz

Partycjonowanie narzędziem parted (GPT, nieinteraktywnie)

parted obsługuje zarówno MBR, jak i GPT, i może być używany nieinteraktywnie w skryptach:

# Utwórz tablicę GPT
sudo parted /dev/sdb mklabel gpt

# Utwórz partycję EFI (100 MB, FAT32)
sudo parted /dev/sdb mkpart primary fat32 1MiB 101MiB
sudo parted /dev/sdb set 1 esp on

# Utwórz partycję / (root) 40 GB, ext4
sudo parted /dev/sdb mkpart primary ext4 101MiB 40.1GiB

# Utwórz partycję swap 4 GB
sudo parted /dev/sdb mkpart primary linux-swap 40.1GiB 44.1GiB

# Sprawdź wyrównanie partycji (powinno być 'optimal')
sudo parted /dev/sdb align-check optimal 2

Formatowanie i montowanie nowych partycji

# Sformatuj partycję 1 jako FAT32 (EFI)
sudo mkfs.fat -F32 /dev/sdb1

# Sformatuj partycję 2 jako ext4
sudo mkfs.ext4 -L "root" /dev/sdb2

# Sformatuj partycję 3 jako swap i aktywuj
sudo mkswap /dev/sdb3
sudo swapon /dev/sdb3

# Zamontuj root
sudo mount /dev/sdb2 /mnt

# Zamontuj EFI
sudo mkdir /mnt/boot/efi
sudo mount /dev/sdb1 /mnt/boot/efi

Sprawdzanie i naprawianie systemu plików

# Partycja MUSI BYĆ ODMONTOWANA przed sprawdzeniem!
sudo umount /dev/sda2

# Sprawdź system plików ext4
sudo fsck.ext4 -f /dev/sda2

# Automatyczna naprawa błędów (bez pytań)
sudo fsck.ext4 -y /dev/sda2

# Dla xfs:
sudo xfs_repair /dev/sda2

# SMART – sprawdzenie zdrowia dysku (dostępne po: apt install smartmontools)
sudo smartctl -a /dev/sda

LVM – elastyczne zarządzanie przestrzenią

LVM (Logical Volume Manager) to warstwa abstrakcji między partycjami a systemami plików. Pozwala tworzyć woluminy logiczne, które można dowolnie powiększać i zmniejszać, oraz łączyć wiele dysków w jedną przestrzeń.

# Sprawdź fizyczne woluminy (Physical Volumes)
sudo pvs

# Wyświetl grupy woluminów (Volume Groups)
sudo vgs

# Wyświetl woluminy logiczne (Logical Volumes)
sudo lvs

# Powiększ wolumin logiczny o 10 GB i rozszerz system plików ext4
sudo lvextend -L+10G /dev/vg0/lv_home
sudo resize2fs /dev/vg0/lv_home

# Dla xfs powiększenie systemu plików (xfs_growfs działa na zamontowanej partycji)
sudo xfs_growfs /home
Zasada bezpieczeństwa: Przed jakąkolwiek operacją na partycjach zawierających dane zrób kopię zapasową. Narzędzie dd pozwala zrzucić obraz całego dysku: sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress

Typowy układ partycji serwera Linux (GPT, UEFI)

Dysk /dev/sda: 500 GB  (GPT)

┌────────────────────────────────────────────────────────────────────┐
│  sda1  /boot/efi  FAT32   512 MB  – Partycja EFI (UEFI bootloader) │
│  sda2  /boot      ext4    1   GB  – Jądro i initramfs              │
│  sda3  /          ext4    40  GB  – System operacyjny (root)       │
│  sda4  swap       swap    8   GB  – Przestrzeń wymiany             │
│  sda5  /var       xfs    100  GB  – Logi, dane aplikacji           │
│  sda6  /home      ext4   350  GB  – Dane użytkowników              │
└────────────────────────────────────────────────────────────────────┘
Zrzut terminala z fdisk -l i lsblk -f
Rys. 9-1. Typowe wyjście poleceń lsblk -f i fdisk -l w systemie Linux
Schemat LVM: Physical Volume, Volume Group, Logical Volume
Rys. 9-2. Architektura LVM – PV, VG i LV jako elastyczna przestrzeń dyskowa
Materiały dydaktyczne – Systemy Operacyjne / Linux •

Nawigacja

← Wykłady IT
Linux i system plików EXT4 →
  • Szukaj

  • Kategorie

    • IT ogólnie (126)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (33)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (59)
        • Bazy danych (13)
        • Programowanie (4)
        • Systemy operacyjne (19)
          • Linux Debian (16)
        • Windows (7)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Linux i system plików EXT4
    • Nieco o dyskach i partycjach w Linux
    • Wykłady IT
    • Odwrotna Notacja Polska (ONP)
    • GNS3 – Web interface
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y