Annyi különféle alkatrésszel, amelyek egy tipikus tárolókészletet alkotnak, csoda, hogy bármi működik egyáltalán. A dolgok azonban legtöbbször jól működnek. Néhány esetben, amikor rosszul alakul a helyzet, szükségünk van olyan segédprogramokra, mint az xfs_repair, hogy kiszabadítsunk a rendetlenségből.
A dolgok rosszul fordulhatnak elő, amikor egy fájlt írsz, és kimerül az áramellátás, vagy kernelpánik van. Még a lemezen szunnyadó adatok is romolhatnak az idő múlásával, mivel a memória elemek fizikai szerkezete megváltozhat, ezt bitrothadásnak nevezik. Minden esetben szükségünk van egy mechanizmusra:
- Az olvasott adatok ellenőrzése megegyezik az utoljára írt adatokkal. Ez úgy valósul meg, hogy minden adatblokkhoz van egy ellenőrző összeg, és összehasonlítjuk az adott blokk ellenőrző összegét, amikor adatokat olvasunk. Ha az ellenőrző összeg megegyezik, az adatok nem változtak
- A sérült vagy elveszett adatok rekonstrukciójának módja, akár tükörblokkból, akár paritásblokkból.
Homokozó beállítása
Állítsunk be egy tesztüzenetet egy xfs javítási rutin futtatásához ahelyett, hogy a tényleges lemezeket használnánk rajta értékes adatokkal. Ha már hibás fájlrendszer van, kihagyhatja ezt a részt, és jobbra ugorhat a következőre. Ez a tesztasztal egy Ubuntu virtuális gépből áll, amelyhez egy virtuális lemez csatlakozik, nyers tárhelyet biztosítva. A VirtualBox segítségével létrehozhatja a virtuális gépet, majd létrehozhat egy további lemezt a virtuális géphez csatoláshoz.
Csak nyissa meg a virtuális gép beállításait és az alatt Beállítások → Tárolás szakaszban új lemezt adhat a SATA vezérlőhöz, létrehozhat új lemezt. Az alábbiak szerint, de ellenőrizze, hogy a virtuális gép ki van-e kapcsolva, amikor ezt megteszi.
Az új lemez létrehozása után kapcsolja be a virtuális gépet, és nyissa meg a terminált. A parancs lsblk felsorolja az összes rendelkezésre álló blokkoló eszközt.
$ lsblksda 8: 0 0 60G 0 lemez
├─sda1 8: 1 0 1M 0 rész
Da─sda2 8: 2 0 60G 0 rész /
sdb 8:16 0 100G 0 lemez
sr0 11: 0 1 1024M 0 rom
A fő blokkolóeszközön kívül sda, ahol az operációs rendszer telepítve van, ott van egy új SDB eszköz. Hozzunk létre gyorsan egy partíciót belőle, és formázzuk az XFS fájlrendszerrel.
Nyissa meg a megosztott segédprogramot root felhasználóként:
$ elvált - optimális / dev / sdbElőször hozzunk létre egy partíciós táblázatot az mklabel használatával, ezt követve egyetlen partíciót hozunk létre a teljes lemezről (amely 107 GB méretű). A nyomtatási paranccsal ellenőrizheti, hogy a partíció elkészült-e:
(elvált) mklabel gpt(elvált) mkpart elsődleges 0 107
(elvált) nyomtatás
(elvált) kilép
Oké, most az lsblk használatával láthatjuk, hogy az sdb eszköz alatt van egy új blokkoló eszköz, sdb1.
Formázzuk ezt a tárhelyet xfs fájlként, és illesszük be az / mnt könyvtárba. Ismét tegye a következő műveleteket gyökérként:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Az utolsó parancs kinyomtatja az összes csatlakoztatott fájlrendszert, és ellenőrizheti, hogy a / dev / sdb1 az / mnt könyvtárra van-e csatolva.
Ezután egy csomó fájlt fiktív adatként írunk itt töredezettségmentesítésre:
$ dd, ha = / mnt / saját fájl = / dev / urandom.txt szám = 1024 bs = 1024A fenti parancs a myfile fájlt írja.txt 1 MB méretű. Ha akarja, automatikusan létrehozhat több ilyen fájlt, eloszthatja azokat az xfs fájlrendszeren belüli különböző könyvtárakban (a / mnt fájlra illesztve), majd ellenőrizheti a töredezettséget. Ehhez használja a bash vagy a python vagy bármely más kedvenc szkriptnyelvét.
A hibák ellenőrzése és javítása
Az adatsérülések az ön tudta nélkül némán kúszhatnak be a lemezeibe. Ha egy adatblokkot nem olvasnak le, és az ellenőrző összeget nem hasonlítják össze, akkor a hiba csak rosszkor jelenik meg. Amikor valaki valós időben próbál hozzáférni az adatokhoz. Ehelyett célszerű alaposan átvizsgálni az összes adatblokkot a bitrothadás vagy más hibák gyakori ellenőrzésére.
Az xfs_scrub segédprogram állítólag elvégzi ezt a feladatot az Ön számára. Részben az OpenZFS scrub parancsától ihletve ez a kísérleti szolgáltatás csak az xfsprogs 4-es verzióján érhető el.15.1-1ubuntu1, amely nem stabil kiadás. Ha tévesen észleli a hibát, akkor félrevezethet, hogy javítás helyett az adatok sérülését okozza! Ha azonban kísérletezni szeretne vele, akkor a csatlakoztatott fájlrendszeren használhatja a következő paranccsal:
$ xfs_scrub / dev / sdb1Mielőtt megpróbálna kijavítani egy sérült fájlrendszert, először le kell szerelnie. Ez megakadályozza az alkalmazásokat abban, hogy akaratlanul is írjanak a fájlrendszerbe, amikor állítólag egyedül maradnak.
$ umount / dev / sdb1A hibák kijavítása olyan egyszerű, mint a futtatás:
$ xfs_repair / dev / sdb1Az alapvető metaadatokat mindig több példányban őrzik, még akkor is, ha nem RAID-ot használ, és ha valami nem stimmelt a szuperblokk vagy az inodes esetén, akkor ez a parancs minden valószínűség szerint megoldhatja ezt a problémát az Ön számára.
Következő lépések
Ha gyakran látja az adatok sérülését (vagy akár egyszer is, ha valami kritikus feladatot futtat), fontolja meg a lemezek cseréjét, mivel ez korai jelzője lehet annak a lemeznek, amely hamarosan meghal.
Ha egy vezérlő meghibásodik, vagy egy RAID-kártya lemondott az életről, akkor a világon egyetlen szoftver sem tudja megjavítani az Ön fájlrendszerét. Nem akar drága adat-helyreállítási számlákat, és nem is akar hosszú leállásokat, ezért figyelje ezeket az SSD-ket és a forgó tálakat!