Podíváme se jak fungují disky na Linuxu a jak se z disků mohou skládat disková pole (disk array) ke zvýšení spolehlivosti.

Disky slouží k trvalému ukládání dat. Tato kapitola by klidně mohla být v předmětu Hardware, ale dáme ji sem, protože ukážeme těsnou vazbu mezi OS a hardwarem a některé důležité nástroje ke správě disků a polí na Linuxu.

Konstrukce disků

Točivé disky

disk wd rozebrany

disk wd rozebrany2

disk wd rozebrany3

disk schema

disk structure

K přečtení sektoru máme 3 souřadnice cylinder, head, sector (CHS):

  • číslo plochy (0—​7) - head

  • číslo stopy (0—​63) - cylinder (track)

  • číslo sektoru (0-xxx) - sector

Lepší je adresovat sektory pomocí LBA (logical block address), kdy se sektory číslují lineárně jeden za druhým.

Přepočet CHS na tzv. LBA (logical block address) se provádí interně v disku a operační systém oslovuje řadič disku právě pomocí LBA.

SSD disky

disk ssd

Konstrukčně jsou SSD (Solid State Disk) zcela jiné (nic se v nich nehýbe), pro operační systém se příliš neliší od točivých disků. Hardwarově se SSD disk tváří, jako by byl točivý.

Disky v Linuxu

SATA (Serial ATA) je rozhraní disku a je stejné pro točivé disky i pro SSD disky.

SSD disky se vyrábějí i s jinými rozhraními M2 a NVMe, práce s nimi je stejná jako se SATA disky.

V Linuxu najdeme SATA disky jako bloková zařízení /dev/sdXY kde X je písmenko abecedy značící pořadí disku (a — 1.disk, b — 2.disk …​), jak je vidí OS a Y je číslo diskového oddílu (partition) na samotném disku.

O diskových oddílech (partitions) pojednáme níže.

Výpis zařízení SATA disků
jirka@jirka-Precision-T3610:/dev$ ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 zář 14 06:32 /dev/sda  (1)
brw-rw---- 1 root disk 8,  1 zář 14 06:32 /dev/sda1 (2)
brw-rw---- 1 root disk 8,  2 zář 14 06:32 /dev/sda2 (3)
brw-rw---- 1 root disk 8,  5 zář 14 06:32 /dev/sda5
brw-rw---- 1 root disk 8,  6 zář 14 06:32 /dev/sda6
brw-rw---- 1 root disk 8, 16 zář 14 06:32 /dev/sdb  (4)
brw-rw---- 1 root disk 8, 17 zář 14 06:32 /dev/sdb1 (5)
brw-rw---- 1 root disk 8, 18 zář 14 06:32 /dev/sdb2
brw-rw---- 1 root disk 8, 21 zář 14 06:32 /dev/sdb5
brw-rw---- 1 root disk 8, 22 zář 14 06:32 /dev/sdb6 (6)
1 První celý SATA disk
2 První diskový oddíl prvního SATA disku
3 Druhý diskový oddíl prvního SATA disku
4 Druhý celý SATA disk
5 První diskový oddíl druhého SATA disku
6 Šestý diskový oddíl druhého SATA disku

Disky NVMe jsou bloková zařízení /dev/nvmeXnYpZ, kde X je číslo sběrnice, Y je pořadí disku na sběrnici a Z je partition, jak je vidí OS.

Výpis zařízení NVMe disků
kvm1 /dev # ls -l /dev/nvme*
crw------- 1 root root 251, 0 Sep 14 00:09 /dev/nvme0       (1)
brw-rw---- 1 root disk 259, 0 Sep 14 00:09 /dev/nvme0n1     (2)
brw-rw---- 1 root disk 259, 1 Sep 14 00:09 /dev/nvme0n1p1   (3)
brw-rw---- 1 root disk 259, 2 Sep 14 00:09 /dev/nvme0n1p2   (4)
brw-rw---- 1 root disk 259, 3 Sep 14 00:09 /dev/nvme0n1p3
brw-rw---- 1 root disk 259, 4 Sep 14 00:09 /dev/nvme0n1p4
kvm1 /dev #
1 1. NVMe "sběrnice" - toto není disk (není to blokové zařízení)
2 1. NVMe celý disk na 1. sběrnici
3 1. partition 1. NVMe disku na 1. sběrnici
4 2. partition 1. NVMe disku na 1. sběrnici
Je jedno jaké je disk konstrukce, v Linuxu se bude vždy jevit jako blokové zařízení. Je také jedno, zda je disk pevně zabudovaný do počítače, nebo vyjímatelný.

Partition table — tabulka rozdělení disku

Tabulka rozdělení disku (partition table) je pojem, který určuje, jak je disk rozdělen na oddíly (partitions). Používá se jak u pevných, tak i u vyjímatelných disků.

Účelem tabulky rozdělení disku je říci operačnímu systému, jak je disk rozdělen. Operační systém potom spravuje každý z diskových oddílů odděleně.

Partition table je nezávislá na operačním systému, fyzicky sídlí na začátku disku.

Dvě schémata rozdělení disků.

  • MBR (Master Boot Record) — starší schéma pro menší disky

  • GPT (GUID Partition Table) — novější schéma pro disky > 2TByte

MBR

MBR je speciální typ spouštěcího sektoru, který se nachází v rozděleném velkokapacitním paměťovém zařízení. Koncept MBR byl veřejně představen v roce 1983 s PC DOS 2.0 (Z Wikipedie). Obvykle je velikost jeho sektoru 512 bajtů a první sektor každé úložné jednotky obsahuje MBR, pokud je disk rozdělen podle schématu MBR. MBR obsahuje minimální kód zavaděče operačního systému, informace o záznamech primárního/logického/rozšířeného oddílu, o typu systému souborů, podpis spouštění atd.

Tabulka rozdělení disku MBR (Master Boot Record), prvních 512 bytů na disku

mbr partition table

Bootstrap code area obsahuje kód zavaděče (446 bytů). Na Linuxu je zde první část zavaděče GRUB (GRand Unified Bootloader). Při startu počítače BIOS skáče na tuto sekci, přečte a spustí zavaděč a zavaděč potom spustí Linuxové jádro.

Partition Table je 16 bytů obsahujících 4 položky. Schéma MBR dovoluje vytvořit 4 primární oddíly (primary partition). Je však možné vytvářet rozšířené oddíly a v nich další položky. Je možno vytvořit tři primární oddíly a jeden rozšířený oddíl, který může obsahovat dalších 15 logických oddílů. Každý z oddílů nese následující informace:

  • Partition Flag Stav fyzického disku (nastavený bit 7 je aktivní nebo spouštěcí oddíl, staré MBR přijímají pouze 80hex, 00hex znamená neaktivní a 01hex–7Fhex znamená neplatný)

  • Start CHS Address Absolutní adresa prvního sektoru v oddílu (CHS)

  • Partition type Je to bajtová hodnota určená k určení systému souborů, který oddíl obsahuje, a/nebo k označení speciálních přístupových metod používaných pro přístup k těmto oddílům.

  • End CHS Address Absolutní adresa posledního sektoru oddílu (CHS)

  • Start LBA Absolutní adresa prvního sektoru oddílu v adresování LBA (Logical Block Addressing)

  • Number of sectors Celkový počet sektorů v tomto oddílu.

Vzniká otázka, proč máme počáteční sektok adresovaný pomocí CHS i LBA? Podrobná odpověď je zde.

Počáteční sektor v hodnotách CHS (3 bajty). Tyto hodnoty určují umístění prvního sektoru oddílu, pokud je v rámci prvních 1024 cylindrů pevného disku. Když je sektor za tímto bodem, n-tice CHS jsou normálně nastaveny na své maximální povolené hodnoty 1023, 254, 63; které znamenají 1024. válec, 255. hlavu a 63. sektor, vzhledem k tomu, že počty válců a hlav začínají nulou. Tyto hodnoty se objeví na disku jako tři bajty: FE FF FF (v tomto pořadí).

Počáteční sektor (4 bajty). Hodnota LBA (Absolute Sector). Tato hodnota jednoznačně identifikuje první sektor oddílu stejně jako hodnoty Starting CHS. Dělá to však pomocí 4bajtové adresy logického bloku (začíná se počítat od absolutního sektoru 0), což znamená, že dokáže najít začátek oddílu v rámci prvního FFFF FFFFh nebo 4 294 967 296 sektorů, pro pevné disky až do velikosti přibližně 2 199 023 255 552 bajtů (přesně 2 048 GiB)!

Nedostatky schématu MBR

  • Omezuje maximální adrsovatelný prostor disku na 2 TiB (\(2^{32}\cdot 512\) bajtů) pro disk s 512 bajtovými sektory.

  • Umožnuje mít jenom 4 primární oddíly. Pokud potřebujeme více oddíů, musíme jeden primátní oddíl označit jako rozšířený (extended) a vytvořit EBR (Extended Boot Record) s logickými oddíly jinde. Je to hloupý hack a neměl by být nezbytný.

  • Tabulka oddílů a kód zavaděče je uložen na jednom místě. Pokud jsou tato data nějak přepsána nebo poškozena, máme velký problém.

GUID Partition Table

GUID [1] Partition Table (GPT) je v informatice standard pro popis členění pevného disku na oddíly. Nahrazuje starší tabulku MBR, která neumožňuje použít disk větší než 2 TiB. GPT je součástí standardu UEFI od firmy Intel, který by měl nahradit v IBM PC kompatibilních počítačích klasický BIOS.

Konverze disku z MBR na GPT je snadná, pokud první oddíl nezačíná hned na LBA 1, ale došlo při formátování disku k zarovnání prvního oddílu (od Windows Vista je zarovnání na 1 MiB). V takovém případě je na začátku disku dostatek místa pro umístění GPT.

Umístění GPT na pevném disku, kde každý logický blok (LBA) má velikost 512 bajtů a každá položka pro jednotlivé diskové oddíly má 128 bajtů. Záporné hodnoty vyjadřují umístění položek na konci disku.

GUID Partition Table Scheme

  • Protective MBR (LBA 0) Z důvodu kompatibility se starším MBR má GPT tuto sekci, ale nyní se používá způsobem, který zabraňuje diskovým utilitám založeným na MBR v nesprávném rozpoznání a možném přepsání disku GPT, a proto se tomu říká ochranný MBR.

  • GPT Header (LBA 1) Hlavička GPT - podrobný popis je na Wikipedii.

  • Partition entries (LBA 2-33) Po hlavičce pole záznamu oddílu popisuje oddíly s použitím minimální velikosti 128 bajtů pro každý vstupní blok. Počáteční umístění pole na disku a velikost každé položky jsou uvedeny v záhlaví GPT. Prvních 16 bajtů každé položky označuje globálně jedinečný identifikátor (GUID) typu oddílu. Například GUID pro systémový oddíl EFI je C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Druhých 16 bajtů je GUID jedinečný pro oddíl. Poté následujte počáteční a koncové 64bitové LBA, atributy oddílu a název oddílu Unicode o délce 36 znaků (max.). Vzhledem k povaze a účelu identifikátorů GUID a podle RFC4122 není k zajištění jedinečnosti označení typu oddílu GUID zapotřebí žádný centrální registr.

Podrobný popis GTP zle nalézt na Wikipedii v angličtině [2]

offset délka v bytech popis

0 (0x00)

16

typ diskového oddílu

16 (0x10)

16

unikátní GUID diskového oddílu

32 (0x20)

8

první LBA sektor (little endian)

40 (0x28)

8

poslední LBA sektor (včetně, obvykle liché číslo)

48 (0x30)

8

atributy (např. nastavený 60bit znamená pouze pro čtení)

56 (0x38)

72

jméno oddílu v kódování UTF-16 LE, 36 znaků

Po položkách oddílů se skutečné oddíly nacházejí od LBA 34. Případný spuštěcí kód bude až tady.

Jakmile skončí všechny skutečné oddíly, můžete vidět, že se znovu opakují stejné věci, jako jsou položky a hlavička GPT. Toto se nazývá sekundární značka GPT a horní značka je známá jako primární značka GPT. Pokud se poškodí primární GPT, tak zůstane zachována sekundární GPT protože je na konci disku. A odtud lze získat všechny informace z tabulky oddílů, což překonává jedno z omezení MBR.

Hlavní rozdíly oproti MBR

  • zcela opouští dělení disku na cylindry, hlavy a sektory, pracuje pouze s LBA

  • umožňuje pracovat s velkými pevnými disky (teoretická maximální velikost oddílu \(9,4×10^{21}\) bytů = 9,4 ZB = 8 ZiB, má-li LBA sektory 512 kB — tuto obrovskou velikost obvykle neumí operační systém využít. (Např. Microsoft podporuje maximální velikost 18 EB). MBR umožňuje pracovat pouze s oddíly do velikosti 2,20 TB = 2 TiB (stem:[2^{32} × 512 bytů).

  • umožňuje vytvořit více oddílů - Microsoft implementuje 128, z toho 4 jsou vyhrazené, tedy 124 uživatelsky dostupných (MBR pouze 4 oddíly + v extended oddílu další logické)

  • záložní kopii tabulky ukládá na konci disku

  • velikost GPT je na disku s 512 B sektory 34×512 B = 16 KiB (první oddíl začíná na LBA 34)

Nástroje Linuxu pro práci s diskovými oddíly

S nástroji pro práci s diskovými oddíly může pracovat jenom root.

fdisk

fdisk na starších systémech umí fdisk pracovat jenom se schématem MBR. fdisk slouží k vytvoření tabulky rozdělení disků a ke změnám v ní.

Výpis oddílů všech disků fdisk -l
root@jirka-Precision-T3610:~# fdisk -l
Disk /dev/sda: 931,53 GiB, 1 000 204 886 016 bajtů, 1 953 525 168 sektorů       (1)
Disk model: ST1000VX000-1CU1                                                    (2)
Jednotky: sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 4096 bajtů
Velikost I/O (minimální/optimální): 4096 bajtů / 4096 bajtů
Typ popisu disku: dos
Identifikátor disku: 0x4065f5fe

Zařízení   Zaveditelný Začátek      Konec    Sektory Velikost ID Druh
/dev/sda1  *              2048    1050623    1048576     512M  b W95 FAT32      (3)
/dev/sda2              1052670 1953523711 1952471042     931G  5 Rozšířený      (4)
/dev/sda5              1052672    2549759    1497088     731M 83 Linux          (5)
/dev/sda6              2551808 1953523711 1950971904   930,3G 83 Linux          (6)

Oddíl 2 nezačíná na hranici fyzického sektoru.


Disk /dev/sdb: 1,84 TiB, 2 000 398 934 016 bajtů, 3 907 029 168 sektorů         (7)
Disk model: Samsung SSD 870                                                     (8)
Jednotky: sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Typ popisu disku: dos
Identifikátor disku: 0x4065f5fe

Zařízení   Zaveditelný Začátek      Konec    Sektory Velikost ID Druh
/dev/sdb1  *              2048    1050623    1048576     512M  b W95 FAT32      (9)
/dev/sdb2              1052670 1953523711 1952471042     931G  5 Rozšířený      (10)
/dev/sdb5              1052672    2549759    1497088     731M 83 Linux          (11)
/dev/sdb6              2551808 1953523711 1950971904   930,3G 83 Linux          (12)

root@jirka-Precision-T3610:~#
1 První disk v systému: blokové zařízení /dev/sda, velikost disku 931.53 GiB
2 Výrobce a model
3 První primární diskový oddíl
4 Rozšířený oddíl
5 První logický disk
6 Druhý logický disk
7 Druhý disk v systému: blokové zařízení /dev/sdb, velikost 1.84 TiB
8 Výrobce a model druhého disku
9 První primární oddíl druhého disku
10 Rozšířený oddíl na druhém disku
11 Logický oddíl na druhém disku
12 Další logický oddíl na druhém disku

Na druhém disku mám ještě volné nepřidělené místo, proto si můžeme ukázat, jak se přidává další oddíl. Program fdisk se ovládá klávesami, obsahuje několik příkazů: * m je nápověda * p je výpis

Změny partition table na druhém disku: výpis tabulky rozdělení disků pomocí p
root@jirka-Precision-T3610:~# fdisk /dev/sdb

Vítejte v fdisku (util-linux 2.34).
Změny zůstanou pouze v paměti, dokud se nerozhodnete je uložit na disk.
Při použití příkazu zápisu buďte obezřetní.


Příkaz (m pro nápovědu): p
Disk /dev/sdb: 1,84 TiB, 2 000 398 934 016 bajtů, 3 907 029 168 sektorů
Disk model: Samsung SSD 870
Jednotky: sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Typ popisu disku: dos
Identifikátor disku: 0x4065f5fe

Zařízení   Zaveditelný Začátek      Konec    Sektory Velikost ID Druh
/dev/sdb1  *              2048    1050623    1048576     512M  b W95 FAT32
/dev/sdb2              1052670 1953523711 1952471042     931G  5 Rozšířený
/dev/sdb5              1052672    2549759    1497088     731M 83 Linux
/dev/sdb6              2551808 1953523711 1950971904   930,3G 83 Linux

Příkaz (m pro nápovědu):
fdisk nápověda pomocí m
Příkaz (m pro nápovědu): m

Nápověda:

  DOS (MBR)
   a   přepne příznak „startovací“
   b   upraví vnořený BSD popisu disku
   c   přepne příznak kompatibility s DOSem

  Obecné
   d   smaže oddíl
   F   vypíše volné nerozdělené místo
   l   vypíše známé typy oddílů
   n   přidá nový oddíl
   p   zobrazí tabulku rozdělení disku
   t   změní typ oddílu
   v   ověří tabulku rozdělení disku
   i   vypíše údaje o oddílu

  Ostatní
   m   vypíše tuto nabídku
   u   změní jednotky v nichž jsou vypisovány informace
   x   rozšiřující funkce (pouze pro odborníky)

  Skript
   I   zavede rozvržení disku ze souboru se sfdiskovým skriptem
   O   exportuje rozvržení disku do souboru se sfdiskovým skriptem

  Uložení a konec
   w   uloží tabulku rozdělení disku a ukončí program
   q   ukončí program bez uložení změn

  Vytvoření nového popisu disku
   g   vytvoří prázdnou tabulku rozdělení disků typu GPT
   G   vytvoří prázdnou tabulku rozdělení disků typu SGI (IRIX)
   o   vytvoří prázdnou tabulku rozdělení disků typu DOS
   s   vytvoří prázdnou tabulku rozdělení disků typu Sun
Výpis volného místa pomocí F
Příkaz (m pro nápovědu): F
Nerozdělené místo /dev/sdb: 931,52 GiB, 1 000 194 793 472 bajtů, 1 953 505 456 sektorů
Jednotky: sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů

   Začátek      Konec    Sektory Velikost
1953523712 3907029167 1953505456   931,5G
Přidání primárního oddílu pomocí n
Příkaz (m pro nápovědu): n                                                                  (1)
Typ oddílu
   p   primární (1 primární, 1 rozšířený, 2 volný)
   l   logický (číslováno od 5)
Vyberte (výchozí p): p                                                                      (2)
Číslo oddílu (3,4, výchozí je 3):
První sektor (1953523712-3907029167, výchozí je 1953523712):                                (3)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1953523712-3907029167, výchozí je 3907029167): (4)

Vytvořen nový oddíl 3 typu „Linux“ o velikosti 931,5 GiB.

Příkaz (m pro nápovědu): p
Disk /dev/sdb: 1,84 TiB, 2 000 398 934 016 bajtů, 3 907 029 168 sektorů
Disk model: Samsung SSD 870
Jednotky: sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Typ popisu disku: dos
Identifikátor disku: 0x4065f5fe

Zařízení   Zaveditelný    Začátek      Konec    Sektory Velikost ID Druh
/dev/sdb1                    2048    1050623    1048576     512M  b W95 FAT32
/dev/sdb2                 1052670 1953523711 1952471042     931G  5 Rozšířený
/dev/sdb3              1953523712 3907029167 1953505456   931,5G 83 Linux
/dev/sdb5                 1052672    2549759    1497088     731M 83 Linux
/dev/sdb6  *              2551808 1953523711 1950971904   930,3G 83 Linux

Diskové oddíly jsou chybně seřazeny.

Příkaz (m pro nápovědu):
1 Vytvářím nový oddíl klávesou n
2 Volím primární oddíl klávesou p, protože v rozšířeném není volné místo
3 Klávesou Enter potvrzuji nabídnutý začátek oddílu na sektoru 1953523712
4 Klávesou Enter potvrzuji nabídnutý konec oddílu na sektoru 3907029167, čímž jsem vyplnil celé volné místo na disku a mám vytvořen nový oddíl 3

Je vidět, že nám přibyl další primární oddíl /dev/sdb3.

Nechci změny ukládat, ukončím program bez uložení změn pomocí q
Příkaz (m pro nápovědu): q

root@jirka-Precision-T3610:~#

Příkaz q — ukončit bez uložení je velmi užitečný, pokud něco zkazíte a nevíte, jak z toho ven.

Pokud jsme spokojeni se změnami tabulky rozdělení disků, tak ukončíme program fdisk klávesou w. Naše změny budou uloženy.

gdisk

Jak název napovídá, tak program gdisk umí pracovat s GPT. Uživatelské rozhraní je podobné jako u fdisku.

Vyvolání nápovědy u programu gdisk (klávesa ?)
root@jirka-Precision-T3610:~# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.5

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help): ^C
root@jirka-Precision-T3610:~#

gptdisk funguje podobně jako gdisk či fdisk, umí GPT.

parted

parted funguje s tabulkami rozdělení disků GTP

root@jirka-Precision-T3610:~# parted
GNU Parted 3.3
Používám /dev/sda
Vítá vás GNU Parted! Zobrazte seznam příkazů napsáním 'help'.
(parted) help
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  help [PŘÍKAZ]                            vypsat obecnou nápovědu nebo nápovědu o PŘÍKAZu
  mklabel,mktable TYP-JMENOVKY             vytvořit novou jmenovku disku (tabulku oddílů)
  mkpart TYP-ODDÍLU [TYP-FS] ZAČÁTEK KONEC  vytvořit oddíl
  name ČÍSLO NÁZEV                         pojmenovat oddíl ČÍSLO NÁZEV
  print [devices|free|list,all|ČÍSLO]      zobrazit tabulku oddílů, dostupná zařízení, volné místo, všechny nalezené oddíly, nebo konkrétní oddíl
  quit                                     ukončit program
  rescue ZAČÁTEK KONEC                     zachránit ztracený oddíl poblíž ZAČÁTKU a KONCE
  resizepart NUMBER END                    resize partition NUMBER
  rm ČÍSLO                                 odstranit oddíl ČÍSLO
  select ZAŘÍZENÍ                          zvolit upravované zařízení
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set ČÍSLO PŘEPÍNAČ STAV                  změnit PŘEPÍNAČ na oddílu ČÍSLO
  toggle [ČÍSLO [PŘEPÍNAČ]]                přepnout stav PŘEPÍNAČE na oddílu ČÍSLO
  unit JEDNOTKA                            nastavit implicitní jednotku na JEDNOTKA
  version                                  zobrazit číslo verze a informace o copyrightu GNU Parted
(parted)

Grafická udělátka pro správu tabulky oddílů

Existují nejrůznější grafické nadstavby nad fdisk či gdisk, každý výrobce linuxové distribuce si to dělá po svém.

Správce disků distribuce Linux Mint

sprava disku Mint

Monitor "zdraví" disků

SMART jsou informace o "zdraví" disku, disk monitoruje sám sebe. Informace o discích a testování zdraví disků se na Linuxu provádí programem smartctl.

Použití smartctl k přečtení "zdraví" 1. disku
jirka@jirka-Precision-T3610:~/vyuka_sspvc$ sudo smartctl --all /dev/sda (1)
[sudo] heslo pro jirka:
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-155-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION === (2)
Model Family:     Seagate Surveillance
Device Model:     ST1000VX000-1CU162
Serial Number:    Z1D8RE09
LU WWN Device Id: 5 000c50 065a716ff
Firmware Version: CV23
User Capacity:    1 000 204 886 016 bytes [1,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sat Sep 16 12:42:39 2023 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever
					been run.
Total time to complete Offline
data collection: 		(   80) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine
recommended polling time: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 ( 104) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x10b9)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE    (3)
  1 Raw_Read_Error_Rate     0x000f   115   099   006    Pre-fail  Always       -       86901648
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   099   099   020    Old_age   Always       -       1306
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0            (4)
  7 Seek_Error_Rate         0x000f   089   060   030    Pre-fail  Always       -       901786977
  9 Power_On_Hours          0x0032   058   058   000    Old_age   Always       -       37599
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   020    Old_age   Always       -       1305
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   001   001   000    Old_age   Always       -       11286
190 Airflow_Temperature_Cel 0x0022   063   051   045    Old_age   Always       -       37 (Min/Max 21/38)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       67
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       1306
194 Temperature_Celsius     0x0022   037   049   000    Old_age   Always       -       37 (0 8 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0                (5)
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

jirka@jirka-Precision-T3610:~/vyuka_sspvc$
1 Program smartctl může spouštet jenom root
2 Informace výrobce o disku (model, sériové číslo, kapacita …​)
3 Informace o zdraví disku
4 Pokud je Realocated_Sector_Ct větší než 0, disk má chybné a realokované sektory, a je nutné ho vyměnit.
5 Pokud Current_Pending_Sector větší než 0, některé sektory mají problémy, je to začátek problémů s diskem a disk je dobré ho vyměnit.

Program smartctl funguje na SSD disky stejně, jenom poskytuje trochu jiné informace.

"Zdraví" NVMe disku v serveru pomocí smartctl
kvm1 /usr/src/linux # smartctl --all /dev/nvme0n1
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.41-gentoo] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       GIGABYTE GP-ASM2NE6200TTTD
Serial Number:                      SN212408989712
Firmware Version:                   EGFM15.0
PCI Vendor/Subsystem ID:            0x1987
IEEE OUI Identifier:                0x6479a7
Total NVM Capacity:                 2,000,398,934,016 [2.00 TB]
Unallocated NVM Capacity:           0
Controller ID:                      1
NVMe Version:                       1.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          2,000,398,934,016 [2.00 TB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            6479a7 53b0c01336
Local Time is:                      Sat Sep 16 12:54:00 2023 CEST
Firmware Updates (0x12):            1 Slot, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005d):     Comp DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Log Page Attributes (0x08):         Telmtry_Lg
Maximum Data Transfer Size:         512 Pages
Warning  Comp. Temp. Threshold:     90 Celsius
Critical Comp. Temp. Threshold:     95 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     9.78W       -        -    0  0  0  0        0       0
 1 +     6.75W       -        -    1  1  1  1        0       0
 2 +     5.23W       -        -    2  2  2  2        0       0
 3 -   0.0490W       -        -    3  3  3  3     2000    2000
 4 -   0.0018W       -        -    4  4  4  4    25000   25000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         2
 1 -    4096       0         1

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        36 Celsius
Available Spare:                    100%
Available Spare Threshold:          5%
Percentage Used:                    0%
Data Units Read:                    5,867 [3.00 GB]
Data Units Written:                 486,339 [249 GB]
Host Read Commands:                 134,288
Host Write Commands:                545,476
Controller Busy Time:               2
Power Cycles:                       3
Power On Hours:                     299
Unsafe Shutdowns:                   1
Media and Data Integrity Errors:    0
Error Information Log Entries:      10
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0

Error Information (NVMe Log 0x01, 16 of 63 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
  0         10     0  0x0000  0x4004  0x028            0     0     -

kvm1 /usr/src/linux #

RAID - redundant array of independent disks (redundantní pole nezávislých disků)

RAID nám umožňuje zvětšovat kapacitu úložného prostoru nebo zvyšovat spolehlivost. Zkratka RAID může též znamenat Redundant array of inexpensive disks (redundantní pole levných disků).

  • RAID0 — není v podstatě RAID, je to jenom zvětšení disku (slicing). Pomocí dvou disků získáme dvojnásobnou velikost a poloviční spolehlivost celého pole. Pokud odejde jeden z disků, tak jsme přišli o všechno.

  • RAID1 — zrcadlo (mirror). Na minimálně dvou discích jsou zapsána tatáž data. Máme dvojnásobnou spolehlivost. Při více discích se spolehlivost zvyšuje. Pro chod pole stačí aby fungoval jeden disk.

  • RAID10 — kombinace RAID0 a RAID1 (4 disky)

  • RAID5 — n+1 disků pro n-násobně velkou kapacitu a n-násobné zvýšení spolehlivosti.

  • RAID6 — n pracovních disků plus m redundantních disků

  • RAID5+ — RAID5 plus disk hotspare (záložní disk)

Vytváření a údržba polí se v Linuxu provádí programem mdadm.

Vytvořené pole je blokové zařízení v /dev/mdX, kde X je číslo pole.

Nástroj na správu polí mdadm

mdadm může používat jenom uživatel root.

Zdroje a odkazy


1. Globaly unique identifier - globálně unikátní identifikátor
2. Česká verze popisu GPT je hodně, ale hodně zkrácená.