Last Updated on 09/05/2025 by administrator
Opravení chybných sektorů Linux (Fix Bad Sectors in Linux)
Opravení chybných sektorů Linux
Motivace:
Článek popisuje, jak provést opravení chybných sektorů v Linuxu, pokud je použitý souborový systém (file system) typu ext2, ext3, nebo ext4.
Je důležité mít na paměti, že provádění oprav na souborovém systému může být riskantní, a proto je vždy dobré mít zálohu dat, než se snažíte opravit potenciálně poškozený souborový systém.
Opravu souborového systému je nutné provádět z bootovací flashky (nebo jiného live systému) hlavně proto, že kontrola nesmí běžet na připojeném (mounted) oddílu. Důvody jsou následující:
-
Souborový systém nesmí být připojený (mounted):
Pokud je oddíl připojený a používá se (například root oddíl během běžného provozu systému), dochází k neustálým změnám na disku. fsck potřebuje mít jistotu, že během kontroly a oprav se data na disku nemění, jinak by mohlo dojít k ještě většímu poškození nebo ztrátě dat. -
Riziko nekonzistence a poškození dat:
Během běžného provozu operační systém předpokládá, že souborový systém je v konzistentním stavu. fsck ale při opravách přímo mění strukturu souborového systému (inody, superbloky apod.). Pokud by zároveň běžely zápisy nebo čtení, mohlo by dojít k závažným chybám a nevratnému poškození dat. -
Root oddíl nelze odpojit za běhu systému:
Oddíl, na kterém je nainstalovaný systém (root), nelze za běžného provozu odpojit a zkontrolovat. Proto je potřeba nabootovat z externího média (flashky, live CD), kde systém běží z RAM a disk je možné odpojit a bezpečně zkontrolovat -
Jistota, že nedojde ke změnám během opravy:
Bootováním z flashky máš jistotu, že žádný proces nepřistupuje k opravovanému oddílu, což je pro bezpečnou opravu zásadní.
Řešení:
1. Stáhnout Nabootovat Ubuntu ISO na flash disk. Pro vytvoření bootovací USB flashky je možné použít článek – Macrium Reflect – Vytvoření bootovacího flash disku (USB boot), nebo využít programu UNetbootin.
2. Nabootovat flash disk při startu PC.
3. Otevřít terminál a spustit příkaz sudo fdisk -l, který najde příslušný HDD a jméno oddílu (partition). Parametr „l“ provede List the partition tables, což vypíše tabulky oddílu:
sudo fdisk -l
V linuxu je aplikace fsck univerzální rozhraní, které vybírá správný nástroj podle filesystému. V tomto případě se použije e2fsck,což je konkrétní nástroj pro souborový systém ext2/3/4.
Příkaz níže spustí aplikaci e2fsck pro opravu chybných sektorů. Nahradit sda1 názvem zařízení oddílu (partition), což lze vidět na výstupu sudo fdisk -l příkazu:
sudo e2fsck -cfpv /dev/sda1
Legenda:
- c – vyhledá špatné bloky a označí je jako poškozené, takže se nebudou používat do budoucna
- f – vynucuje kontrolu souborů
- p – opravuje vše co lze bezpečně opravit
- v – je ukecanost příkazu
Pozn. Příkazem výše se neopraví fyzické chyby disku. Sektory, které jsou fyzicky poškozené, zůstanou vadné. e2fsck je pouze „izoluje“ – označí je jako nepoužitelné v rámci souborového systému a pro další zápisy. To zabrání používání těchto vadných bloků a minimalizuje riziko ztráty dat.
Když se hovoří o označení vadných bloků na pevném disku, není to fyzická oprava bloků na samotném disku. Označení vadných bloků znamená, že souborový systém označí určité sektory na disku jako poškozené a nepoužitelné pro další zápisy. To zabrání používání těchto vadných bloků a minimalizuje riziko ztráty dat.
Průběh opravení chybných sektorů:
mint@mint:~$ sudo fdisk -l Disk /dev/loop0: 1.8 GiB, 1918455808 bytes, 3746984 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x000083f8 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 310505471 310503424 148.1G 83 Linux /dev/sda2 310507518 312580095 2072578 1012M 5 Extended /dev/sda5 310507520 312580095 2072576 1012M 82 Linux swap / Solaris Disk /dev/sdb: 14.5 GiB, 15606349824 bytes, 30481152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc3072e18 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 8064 30481151 30473088 14.5G c W95 FAT32 (LBA) mint@mint:~$ sudo e2fsck -cfpv /dev/sda1 /dev/sda1: Updating bad block inode. 180204 inodes used (1.86%, out of 9707520) 141 non-contiguous files (0.1%) 248 non-contiguous directories (0.1%) # of inodes with ind/dind/tind blocks: 0/0/0 Extent depth histogram: 152404/58 3649847 blocks used (9.40%, out of 38812928) 0 bad blocks 3 large files 130270 regular files 20770 directories 57 character device files 25 block device files 0 fifos 24 links 29072 symbolic links (27651 fast symbolic links) 1 socket ------------ 180219 files
Věřím, že článek Opravení chybných sektorů Linux (Fix Bad Sectors in Linux) pomohl.
Zdroj:
[1] https://www.amolak.net/fix-hard-disk-bad-sectors-in-linux/