Vďaka toľkým rôznym častiam, ktoré tvoria typický ukladací zásobník, je zázrak, že vôbec niečo funguje. Veci však väčšinou fungujú dobre. Niekoľkokrát, keď sa niečo pokazí, potrebujeme pomocné programy ako xfs_repair, aby sme sa dostali z neporiadku.
Pri písaní súboru a výpadku napájania alebo pri panike jadra sa môžu veci pokaziť. Aj dáta, ktoré na disku nečinne sedia, sa môžu časom rozpadnúť z dôvodu zmeny fyzickej štruktúry pamäťových prvkov, čo sa nazýva bit rot. Vo všetkých prípadoch potrebujeme mechanizmus na:
- Kontrola údajov, ktoré sa čítajú, sú rovnaké ako údaje, ktoré boli zapísané naposledy. Implementuje sa to tak, že pre každý blok údajov máme kontrolný súčet a pri načítaní údajov porovnáme kontrolný súčet pre tento blok. Ak sa kontrolný súčet zhoduje, údaje sa nezmenili
- Spôsob, ako rekonštruovať poškodené alebo stratené údaje, či už zo zrkadlového bloku, alebo z paritného bloku.
Nastavenie karantény
Poďme nastaviť testbench na spustenie opravy xfs namiesto použitia skutočných diskov s cennými údajmi. Ak už máte poškodený súborový systém, môžete túto časť preskočiť a preskočiť doprava na ďalšiu. Tento testovací stôl je tvorený virtuálnym počítačom Ubuntu, ku ktorému je pripojený virtuálny disk poskytujúci nespracované úložisko. Môžete použiť VirtualBox na vytvorenie VM a potom vytvoriť ďalší disk na pripojenie k VM.
Stačí prejsť do nastavení vášho VM a pod Nastavenia → Úložisko v časti môžete pridať nový disk do radiča SATA môžete vytvoriť nový disk. Ako je uvedené nižšie, ale uistite sa, že je váš VM vypnutý.
Po vytvorení nového disku zapnite VM a otvorte terminál. Príkaz lsblk zoznam všetkých dostupných blokovacích zariadení.
$ lsblksda 8: 0 0 60G 0 disk
├─sda1 8: 1 0 1M 0 diel
└─sda2 8: 2 0 60G 0 diel /
sdb 8:16 0 100G 0 disk
sr0 11: 0 1 1024M 0 rom
Okrem zariadenia hlavného bloku sda, kde je nainštalovaný OS, je tu nové zariadenie sdb. Poďme z neho rýchlo vytvoriť oddiel a naformátovať ho pomocou súborového systému XFS.
Otvorte rozdelený nástroj ako užívateľ root:
$ parted -a optimálne / dev / sdbVytvorme najskôr tabuľku oddielov pomocou programu mklabel, potom nasleduje vytvorenie jedného oddielu z celého disku (ktorý má veľkosť 107 GB). Vytvorenie oddielu môžete skontrolovať uvedením jeho zoznamu pomocou príkazu print:
(rozdelené) mklabel gpt(rozdelené) mkpart primárne 0 107
(rozdelená) tlač
(rozdelený) ukončiť
Dobre, teraz pomocou lsblk vidíme, že pod zariadením sdb je nové blokové zariadenie s názvom sdb1.
Naformátujeme toto úložisko ako xfs a pripojíme ho do adresára / mnt. Opäť urobte tieto akcie ako root:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Posledný príkaz vytlačí všetky pripojené súborové systémy a môžete skontrolovať, či je / dev / sdb1 pripojený na / mnt.
Ďalej tu napíšeme veľa súborov ako fiktívne údaje na defragmentáciu:
$ dd if = / dev / urandom of = / mnt / myfile.počet txt = 1024 bs = 1024Vyššie uvedený príkaz by zapísal súbor myfile.Txt o veľkosti 1 MB. Ak chcete, môžete automaticky vygenerovať viac takýchto súborov, rozložiť ich do rôznych adresárov vo vnútri súborového systému xfs (pripojeného na / mnt) a potom skontrolovať fragmentáciu. Použite na to bash alebo python alebo iný obľúbený skriptovací jazyk.
Kontrola a oprava chýb
Porušenie údajov sa môže bez vášho vedomia potichu vkradnúť na vaše disky. Ak sa dátový blok nenačíta a kontrolný súčet sa neporovná, môže sa chyba zobraziť v nesprávnom čase. Keď sa niekto pokúša získať prístup k údajom, v reálnom čase. Namiesto toho je dobré často vykonávať dôkladné skenovanie všetkých dátových blokov na kontrolu zhnitia bitov alebo iných chýb.
Obslužný program xfs_scrub má vykonať túto úlohu za váš. Táto experimentálna funkcia, čiastočne inšpirovaná príkazom scrub OpenZFS, je k dispozícii iba na xfsprogs verzie 4.15.1-1ubuntu1, ktoré nie je stabilným vydaním. Ak chybu zistí nesprávne, mohlo by vás to namiesto opravy opraviť, aby ste poškodili údaje! Ak s ním však chcete experimentovať, môžete ho použiť na pripojenom súborovom systéme pomocou príkazu:
$ xfs_scrub / dev / sdb1Predtým, ako sa pokúsite opraviť poškodený súborový systém, musíte ho najskôr odpojiť. To má zabrániť aplikáciám v neúmyselnom zápise do súborového systému, keď má zostať sám.
$ umount / dev / sdb1Oprava chýb je rovnako jednoduchá ako spustenie:
$ xfs_repair / dev / sdb1Základné metadáta sa vždy uchovávajú ako viac kópií, aj keď nepoužívate RAID a ak sa niečo stalo so superblokom alebo inódmi, potom tento príkaz môže s najväčšou pravdepodobnosťou vyriešiť tento problém za vás.
Ďalšie kroky
Ak vidíte poškodenie dát často (alebo dokonca raz, ak máte spustené niečo kritické), zvážte výmenu diskov, pretože to môže byť skorý indikátor disku, ktorý sa chystá zomrieť.
Ak zlyhá radič alebo sa karta RAID vzdala životnosti, potom žiadny softvér na svete nemôže opraviť súborový systém za vás. Nechcete drahé účty za obnovu dát a ani dlhé prestoje, takže dávajte pozor na tieto disky SSD a rotujúce platne!