Turint tiek daug skirtingų dalių, kurios sudaro tipišką saugojimo kaminą, stebuklas, kad viskas iš viso veikia. Tačiau dažniausiai viskas gerai. Kelis kartus, kai viskas blogai, mums reikia komunalinių paslaugų, tokių kaip „xfs_repair“, kad išvestume mus iš netvarkos.
Viskas gali nepavykti, kai rašote failą ir nutrūksta maitinimas arba kyla branduolio panika. Net diske snaudžiantys duomenys laikui bėgant gali sugesti, nes gali pasikeisti fizinė atminties elementų struktūra, tai vadinama bitų puvimu. Visais atvejais mums reikia mechanizmo:
- Tikrinti skaitomus duomenis yra tie patys duomenys, kurie buvo parašyti paskutinį kartą. Tai įgyvendinama turint kiekvieno duomenų bloko kontrolinę sumą ir lyginant to bloko kontrolinę sumą, kai skaitomi duomenys. Jei kontrolinė suma sutampa, duomenys nebuvo pakeisti
- Būdas atkurti sugadintus ar prarastus duomenis iš veidrodinio bloko arba iš pariteto bloko.
„Sandbox“ sąranka
Nustatykime testbench, kad būtų vykdoma „xfs“ taisymo rutina, užuot naudoję tikrus diskus su vertingais duomenimis. Jei jau turite sugedusią failų sistemą, galite praleisti šį skyrių ir pereiti dešinėn prie kito. Šį bandymų suolą sudaro „Ubuntu VM“, prie kurio prijungtas virtualus diskas, užtikrinantis neapdorotą saugyklą. Galite naudoti „VirtualBox“, kad sukurtumėte VM, tada sukurkite papildomą diską, kurį norite pridėti prie VM.
Tiesiog eikite į savo VM nustatymus ir po Nustatymai → Saugykla skyriuje galite pridėti naują diską prie SATA valdiklio, galite sukurti naują diską. Kaip parodyta žemiau, tačiau atlikdami tai įsitikinkite, kad jūsų VM yra išjungtas.
Sukūrus naują diską, įjunkite VM ir atidarykite terminalą. Komanda lsblk išvardijami visi galimi blokavimo įrenginiai.
$ lsblksda 8: 0 0 60G 0 diskas
├─sda1 8: 1 0 1M 0 dalis
└─sda2 8: 2 0 60G 0 dalis /
sdb 8:16 0 100G 0 diskas
sr0 11: 0 1 1024M 0 rom
Išskyrus pagrindinį blokinį įrenginį sda, ten, kur įdiegta OS, dabar yra naujas SDB įrenginys. Greitai sukursime iš jo skaidinį ir suformatuokime jį XFS failų sistema.
Atidarykite skaidytą naudingumą kaip pagrindinį vartotoją:
$ išsiskyrė -a optimalus / dev / sdbPirmiausia sukurkime skaidinių lentelę naudodami „mklabel“, tada sukursite vieną skaidinį iš viso disko (kurio dydis yra 107 GB). Galite įsitikinti, kad skaidinys sukurtas, įtraukdami jį į sąrašą naudodami komandą print:
(išsiskyrė) mklabel gpt(išsiskyrė) mkpart pirminis 0 107
(išsiskyręs) spausdinimas
(išsiskyrė) mesti
Gerai, dabar naudodami „lsblk“ galime pastebėti, kad po SDB įrenginiu yra naujas blokinis įrenginys, vadinamas sdb1.
Suformatuokime šią saugyklą kaip xfs ir įdėkime ją į / mnt katalogą. Vėlgi atlikite šiuos veiksmus kaip šaknis:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Paskutinė komanda atspausdins visas prijungtas failų sistemas ir galėsite patikrinti, ar / dev / sdb1 yra prijungtas prie / mnt.
Tada mes parašome daugybę failų kaip fiktyvius duomenis, kad defragmentuotume čia:
$ dd, jei = / dev / urandom = / mnt / myfile.txt skaičius = 1024 bs = 1024Pirmiau nurodyta komanda parašys failą myfile.txt iš 1 MB dydžio. Jei norite, galite automatiškai sugeneruoti daugiau tokių failų, paskirstyti juos į įvairius katalogus, esančius failų sistemoje „xfs“ (prijungtas prie / mnt), tada patikrinti, ar nėra suskaidymo. Tam naudokite „bash“ arba „python“ ar bet kurią kitą mėgstamą scenarijų kalbą.
Klaidų tikrinimas ir taisymas
Duomenų sugadinimas gali tyliai patekti į jūsų diskus be jūsų žinios. Jei duomenų blokas neskaitomas ir kontrolinė suma nėra lyginama, klaida gali pasirodyti netinkamu laiku. Kai kas nors bando pasiekti duomenis realiuoju laiku. Geriau būtų kruopščiai nuskaityti visus duomenų blokus, kad būtų galima dažnai patikrinti bitų puvimą ar kitas klaidas.
Šią užduotį turėtų atlikti jūsų įrankis „xfs_scrub“. Iš dalies įkvėpta „OpenZFS“ šveitimo komandos, ši eksperimentinė funkcija pasiekiama tik 4 versijos „xfsprogs“.15.1-1ubuntu1, kuris nėra stabilus leidimas. Neteisingai aptikus klaidą, tai gali jus suklaidinti dėl to, kad sukėlė duomenų sugadinimą, o ne taisė! Tačiau, jei norite su juo eksperimentuoti, galite jį naudoti pritvirtintoje failų sistemoje naudodami komandą:
$ xfs_scrub / dev / sdb1Prieš bandydami taisyti sugadintą failų sistemą, pirmiausia turėsite ją atjungti. Taip siekiama užkirsti kelią programoms netyčia rašyti į failų sistemą, kai ji turėtų likti viena.
$ umount / dev / sdb1Ištaisyti klaidas taip pat paprasta, kaip paleisti:
$ xfs_repair / dev / sdb1Esminiai metaduomenys visada saugomi kaip kelios kopijos, net jei nenaudojate RAID ir jei kažkas nepavyko superblokui ar inodams, ši komanda greičiausiai gali išspręsti šią problemą.
Tolesni žingsniai
Jei dažnai matote duomenų sugadinimą (arba net vieną kartą, jei naudojate svarbią misiją), apsvarstykite galimybę pakeisti savo diskus, nes tai gali būti ankstyvas disko, kuris greitai mirs, rodiklis.
Jei valdiklis sugenda arba RAID kortelė atsisakė gyvenimo, jokia programinė įranga pasaulyje negali pataisyti failų sistemos. Jūs nenorite brangių duomenų atkūrimo sąskaitų ir nenorite ilgų prastovų, todėl stebėkite tuos SSD ir besisukančius lėkštes!