- Dyski i Partycje w Systemie Linux
- 1. Dyski twarde w PC – historia i rozwój
- Skąd wziął się dysk twardy?
- Lata 80. i 90. – standaryzacja
- Lata 2000. – Serial ATA i większe pojemności
- Rewolucja SSD
- Gdzie jesteśmy dziś
- 2. Budowa dysku – HDD, SSD, NVMe
- Dysk HDD – mechanizm magnetyczny
- Struktura logiczna tworzona w fabryce
- Dysk flash – pamięć NAND
- SSD – dysk SSD z interfejsem SATA lub NVMe
- 3. Formatowanie fabryczne niskopoziomowe
- Czym jest formatowanie niskopoziomowe?
- Dawne LLF w dyskach HDD (do ok. 1990)
- LLF w nowoczesnych dyskach HDD
- LLF/fabryczny zapis w dyskach SSD i NVMe
- 4. Budowa logiczna dysku – CHS i LBA
- Geometria CHS (Cylinders, Heads, Sectors)
- LBA – liniowe adresowanie sektorów
- LBA w dyskach SSD i flash
- Sektor 512 B vs 4K (Advanced Format)
- 5. Tablica partycji – budowa i rodzaje
- Po co są partycje?
- Budowa tablicy partycji MBR (Master Boot Record)
- Partycja rozszerzona i logiczne
- Przykładowy układ partycji linuksowego dysku 500 GB (MBR)
- Typy partycji – kody MBR
- 6. Partycje a formatowanie
- Podział zadań: partycjonowanie vs formatowanie
- Formatowanie szybkie a pełne
- Jak wygląda tworzenie systemu plików w Linuksie?
- Zamontowanie partycji
- Plik /etc/fstab – automatyczne montowanie
- 7. Systemy plików – przegląd i zastosowania
- Co to jest system plików?
- ext4 – domyślny system plików Linuksa
- xfs – dla dużych plików i serwerów
- btrfs – nowoczesny system plików z migawkami
- FAT32 i exFAT – przenośność między systemami
- NTFS – system plików Windows
- Porównanie systemów plików
- 8. MBR kontra GPT – dwie tablice partycji
- Dlaczego MBR przestał wystarczać?
- GPT – nowy standard
- Struktura dysku z GPT
- Typy partycji GPT
- MBR vs GPT – zestawienie
- 9. Praca z partycjami w Linuksie – przykłady
- Wyświetlanie dysków i partycji
- Partycjonowanie narzędziem fdisk (MBR)
- Partycjonowanie narzędziem parted (GPT, nieinteraktywnie)
- Formatowanie i montowanie nowych partycji
- Sprawdzanie i naprawianie systemu plików
- LVM – elastyczne zarządzanie przestrzenią
- 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. 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.
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).
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.
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.
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.
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/lognie zatrzymuje systemu, bo reszta systemu jest na innej partycji. - Różne opcje montowania na różnych partycjach (np.
noexecna/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 |
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
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).
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:
xfsnie 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 |
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) |
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
dd pozwala zrzucić obraz całego dysku: sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progressTypowy 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 │ └────────────────────────────────────────────────────────────────────┘
