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





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

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.
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.
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.
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.
-
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í.
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
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):
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
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ří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.
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.
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.

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.
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.
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.