GNU/Linux >> Znalost Linux >  >> Linux

Zkontrolujte a opravte chyby souborového systému pomocí příkazu fsck v Linuxu

Dobrým systémům se někdy dějí špatné věci.

Naštěstí jste uživatelem Linuxu a máte fsck (kontrola souborového systému), která vám pomůže s potenciálně poškozeným souborovým systémem. Tento nástroj se používá pro kontrolu a (volitelně) opravu systému souborů.

Existuje několik scénářů, kde můžete chtít použít fsck. Tento příkaz byste obvykle chtěli spustit, pokud váš systém nelze spustit, zařízení (externí jednotky nebo úložné médium) nefunguje správně nebo pokud jste viděli známky poškození souboru.

Fsck je ve skutečnosti "front-end" pro řadu specifických kontrolerů souborového systému, jako je fsck.vfat, fsck.ext2 atd. Tyto nemusí být specifikovány, ale možná budete moci najít pokročilejší možnosti v man stránky těchto přesnějších příkazů.

Úvod do příkazu fsck

Příkaz fsck se řídí vzorem podobným většině příkazů Linuxu.

fsck [options] [filesystem]

Pokud neurčíte souborový systém, systém analyzuje váš soubor fstab (/etc/fstab ), aby zařízení mohla skenovat.

Příkaz budete muset spustit buď jako uživatel root, nebo jej použít se sudo.

Pro výpis pevného disku v Linuxu můžete použít příkaz fdisk nebo df. Tímto způsobem můžete určit, které zařízení se má zkontrolovat pomocí příkazu fsck.

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
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: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

Před spuštěním fsck odpojte zařízení

Nespouštějte fsck na připojeném zařízení, budete muset nejprve odpojit cíl, aby nedošlo k poškození vašich souborů.

Pokud se pokusíte spustit fsck na připojeném zařízení, měla by se zobrazit tato chyba:

[email protected]:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

Spuštění fsck na normálním zdravém disku vypadá takto:

[email protected]:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

Zatímco fsck přijímá název zařízení jako /dev/sda , můžete se rozhodnout zadat UUID, abyste se vyhnuli záměně s připojováním a odpojováním zařízení. UUID je pevná hodnota přiřazená vašemu zařízení a nebude ovlivněna těmito systémovými změnami.

Vysvětlení výstupních kódů pro příkaz fsck

Toto je seznam kódů, které mohou být vráceny z fsck po kontrole disku. Váš výstupní kód bude součtem těchto kódů, pokud analyzujete jeden disk. Pokud používáte fsck na více zařízeních, vrátí bitové NEBO ze dvou součtů.

  • 0 – Žádné chyby
  • 1 – Opraveny chyby systému souborů
  • 2 – Systém by měl být restartován
  • 4 – Chyby systému souborů nebyly opraveny
  • 8 – Provozní chyba
  • 16 – Chyba použití nebo syntaxe
  • 32 – Fsck zrušeno na žádost uživatele
  • 128 – Chyba sdílené knihovny

Výstupní kód posledního spuštěného příkazu můžete zkontrolovat pomocí echo $? příkaz.

Praktické použití příkazu fsck

Nyní, když jste trochu obeznámeni s příkazem fsck, pojďme se podívat na praktické případy použití tohoto příkazu.

Oprava disku USB a dalších vyměnitelných zařízení

Pro naše účely předpokládejme, že jste již identifikovali problematické zařízení /dev/sdb .

Nejprve se musíte ujistit, že byl disk odpojen:

sudo umount /dev/sdb

Nyní spusťte příkaz fsck:

sudo fsck /dev/sdb

Zkontrolujte, zda na výstupu nejsou nějaké chyby. Pokud se žádný nezobrazí, zkontrolujte výstupní kód pomocí echo $? .

Existuje také několik příznaků voleb, které můžeme přidat, abychom umožnili automatickou opravu. Tyto příkazy však nejsou standardizované a měli byste ověřit typ souborového systému a porovnat dokumentaci z této konkrétní manuálové stránky.

Navzdory tomu obecně můžete použít -p aby fsck mohl automaticky aplikovat opravy.

sudo fsck -p /dev/sdb

Podobně -y použije opravy na jakékoli zjištěné poškození souborového systému.

Oprava kořenového systému souborů

Pokud je systém aktivní, nemůžete odpojit kořenový oddíl. Pokud máte podezření, že je váš hlavní souborový systém poškozen, musíte zde použít jiný přístup.

Ve skutečnosti existuje několik různých možností, které můžete použít. Fsck můžete spustit při spouštění, v záchranném režimu nebo použít živé cd s tématem obnovy.

Mnoho distribucí Linuxu automaticky vynutí fsck při spuštění po určitém počtu neúspěšných pokusů o zavedení. Pokud raději vezmete věci do svých rukou, můžete systém naplánovat, abychom to udělali sami.

Většina moderních verzí Linuxu obsahuje nástroj zvaný tune2fs.

sudo tune2fs -c 1 /dev/sda

Za předpokladu, že vaše kořenové zařízení je dev/sda , toto je příkaz, který byste zadali.

Nyní se ve skutečnosti děje to, že měníte nastavení systému tak, aby se fsck spouštěl každý n počet bot (v příkladu 1). Můžete také nastavit standardní časový interval. Možnosti jsou d ano, w eeks nebo m měsíce.

Řekněme, že chcete, aby se fsck spustil při každém spuštění, pokud za týden neproběhla kontrola. Můžete použít -i specifikovat interval a příkaz by vypadal takto.

sudo tune2fs -i 1w /dev/sda	

Pokud používáte systemd, můžete vynutit spuštění fsck při příštím spuštění zadáním následujícího:

fsck.mode=force
fsck.repair=yes

Závěr

Pro více informací se vždy můžete obrátit na manuálové stránky. Stačí použít man fsck v terminálu.

Doufám, že jste se dozvěděli něco nového o příkazu fsck. Pokud máte nějaké připomínky nebo dotazy, zanechte je níže.


Linux
  1. JQ Command v Linuxu s příklady

  2. Linux – Jak vynutit kontrolu kořenového souborového systému (a případně opravu) při spouštění?

  3. 10 Příklady příkazů Linux Fsck ke kontrole a opravě souborového systému

  1. Zkontrolujte procesy Java v systému Linux pomocí příkazu jps

  2. Sledujte příkazy a úkoly pomocí příkazu watch v systému Linux

  3. Zkontrolujte stav souboru v systému Linux pomocí příkazu stat

  1. Jak používat příkaz fsck ke kontrole a opravě systému souborů

  2. Zkontrolujte místo na disku v Linuxu pomocí příkazů df a du

  3. Jak zkontrolovat OS a verzi pomocí příkazu Linux