Kako odpraviti napako zagona /etc/fstab z journalctl
Raven: Začetnik / Srednje napreden
Ocenjeni čas: ~15 minut
Cilj: Z journalctl analizirati sistemske dnevnike, da prepoznate in odpravite napako v /etc/fstab, ki preprečuje zagon sistema.
Uvod
Preprosta sintaktična napaka v /etc/fstab lahko prepreči zagon strežnika in vas pripelje v zasilno lupino za vzdrževanje. Za obnovitev morate analizirati sistemske dnevnike in ugotoviti natančno mesto okvare. V tem vodniku bomo z journalctl poizvedovali po journalu systemd in si ogledali sistemske dnevnike, ki jih Linux ustvari med zagonom. Razumevanje dnevnikov systemd je ključna veščina pri upravljanju dnevnikov v Linuxu, ki zagotavlja hitro obnovitev in visoko razpoložljivost vaših storitev. Za iskanje priklopne točke, ki je povzročila okvaro, je potrebno osnovno poznavanje ukazov journalctl.
Upravljanje dnevnikov v Linuxu in sklad beleženja
Preden se lotite obnovitve, je pomembno razumeti vključene komponente. Systemd (sistem init in upravitelj storitev v Linuxu) uporablja Systemd-journald (sistemsko storitev, ki zbira in shranjuje podatke dnevnikov). Ta storitev zbira vsak dnevnik (log) (zapis dogodkov, ki se zgodijo v sistemu) v Journal (binarne podatke dnevnikov, ki jih shranjuje Systemd-journald). Med njimi so sistemski dnevniki (zapisi dogodkov in sprememb stanja na ravni celotnega sistema), zagonski dnevniki (zapisi postopka zagona sistema) in dnevniki jedra (sporočila, ki jih ustvari jedro operacijskega sistema).
Glede na konfiguracijo so lahko to nestalni dnevniki (dnevniki, shranjeni v pomnilniku, ki se ob ponovnem zagonu izgubijo) ali trajni dnevniki (dnevniki, ki preživijo ponovne zagone, običajno shranjeni na disku). Journal nenehno raste, zato rotacijo dnevnikov (postopek arhiviranja in upravljanja starih datotek dnevnikov za prihranek prostora na disku) samodejno upravlja systemd.
Predpogoji
Pred začetkom se prepričajte, da so izpolnjeni naslednji pogoji:
- Operacijski sistem: Preizkušeno na Ubuntu 22.04/24.04 LTS, Debian 12/13, AlmaLinux/Rocky 9/10
- Dostop: Neposreden dostop do konzole (IPMI, VNC ali fizična konzola) za dostop do zasilne lupine
- Zahtevano znanje: Samozavestna uporaba ukazne vrstice Linuxa in osnovno urejanje besedila
Pri privzetih namestitvah Ubuntu in Debiana je račun root zaklenjen. Vnaprej nastavite geslo za root z ukazom sudo passwd root, sicer se ne boste mogli prijaviti v zasilni način.
Primerki VPS so pogosto dobavljeni s privzeto omogočenim uporabnikom root.
Korak 1: Prepoznavanje okvare zagona
Sintaktična napaka, tipkarska napaka ali manjkajoča naprava v /etc/fstab sproži zasilni način, ustavi postopek zagona in prikaže sporočilo, kot je to:
Welcome to emergency mode! After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot into default mode. Give root password for maintenance (or press Control-D to continue):
Vnesite geslo za root, da pridete do ukaznega poziva. Na tej stopnji nekateri datotečni sistemi morda niso priklopljeni ali pa so priklopljeni samo za branje.
Korak 2: Uporaba journalctl za ogled in analizo sistemskih dnevnikov, ki jih ustvari Linux
Da ugotovimo vzrok okvare, moramo preveriti dnevnike trenutnega zagona.
Zaženite naslednji ukaz:
sudo journalctl -xb
Tu uporabljamo Journalctl (orodje ukazne vrstice za poizvedovanje po journalu systemd). To je eden najpomembnejših ukazov journalctl. Orodju naroči, naj prikaže dnevnike trenutnega zagona (-b) in vključi dodatno pojasnjevalno besedilo (-x).
Izpis je lahko obsežen. Za iskanje napake moramo izvesti filtriranje dnevnikov (postopek zožanja izpisa dnevnikov glede na določena merila).
Za iskanje znotraj pregledovalnika (ki uporablja less) vnesite /fstab ali /mount in pritisnite Enter.
Odlomek pričakovanega izpisa:
-- Subject: A start job for unit mnt-data.mount has failed -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- A start job for unit mnt-data.mount has finished with a failure. -- -- The job identifier is 123 and the job result is failed.
To pomeni, da je odpovedala enota (unit) (konfiguracijska datoteka, ki opisuje, kako upravljati vir v systemd), odgovorna za priklop /mnt/data. Natančneje, enote priklopa (mount unit) (konfiguracijske datoteke enote, ki vsebuje podatke o procesu, ki ga upravlja systemd) ni bilo mogoče zagnati.
S preslednico se pomaknete stran navzdol, s tipko q pa zaprete pregledovalnik dnevnikov.
Korak 3: Filtriranje dnevnikov systemd za iskanje določenih napak
Če je pomikanje po celotnem zagonskem dnevniku prepočasno, lahko dnevnike analiziramo z journalctl z uporabo določenih filtrov.
Zaženite naslednji ukaz za ogled samo napak z visoko prioriteto:
sudo journalctl -p err -b
Pričakovani izpis:
May 23 10:00:01 server systemd[1]: Failed to mount mnt-data.mount - /mnt/data. May 23 10:00:01 server systemd[1]: Dependency failed for Local File Systems.
Sporočilo Dependency failed for Local File Systems se pojavi samo med zagonom, ne pa ob ročnem izvajanju systemctl start.
S filtriranjem dnevnikov z journalctl po prioriteti (-p err) odstranimo informativna sporočila.
Če poznamo natančno enoto, ki je odpovedala, lahko neposredno preverimo dnevnike storitve. Zaženite:
sudo journalctl -u mnt-data.mount
Ko dnevnike z journalctl analizirate na ravni enote, izolirate natančno konfiguracijsko težavo. Druga metoda filtriranja z journalctl je določitev časovnega obdobja, vendar je pri težavah z zagonom filtriranje po enoti najučinkovitejše.
Korak 4: Odprava napake v /etc/fstab
Ker je journal systemd potrdil, da je težava priklopna točka /mnt/data, moramo popraviti konfiguracijsko datoteko.
Najprej poskusite urediti datoteko. Če se ob shranjevanju pojavi napaka Read-only file system, morate korenski datotečni sistem znova priklopiti za branje in pisanje, saj ga zasilni način pogosto priklopi samo za branje:
sudo mount -o remount,rw /
Nato pred spremembami naredite varnostno kopijo konfiguracijske datoteke:
sudo cp /etc/fstab /etc/fstab.bak
Nato odprite datoteko (v sistemih, ki temeljijo na RPM, kot so AlmaLinux, Rocky ali RHEL, nano privzeto morda ni nameščen, zato ga najprej namestite z sudo dnf install -y nano):
sudo nano /etc/fstab
Poiščite vrstico, ki se sklicuje na /mnt/data (pravilni UUID lahko najdete z ukazom blkid):
UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data ext4 defualts 0 2
Opazite tipkarsko napako: defualts namesto defaults. Popravite jo:
UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data ext4 defaults 0 2
Shranite datoteko in zaprite urejevalnik. Nato znova naložite konfiguracijo upravitelja systemd, da systemd ve za spremembe v /etc/fstab:
sudo systemctl daemon-reload
Vedno preverite UUID-je in sintakso v /etc/fstab. Napačen vnos bo povzročil, da se bo sistem ob naslednjem zagonu spet vrnil v zasilno lupino.
Preverjanje
Pred ponovnim zagonom z findmnt preverite sintakso datoteke /etc/fstab:
findmnt --verify
Če ni sporočenih napak, nadaljujte s preverjanjem, ali priklopna točka deluje:
Zaženite:
sudo mount -a
Če ukaz ne vrne nobenega izpisa, je sintaksa pravilna in priklop je uspel. Če napaka še vedno obstaja, bo ukaz izpisal sporočilo o napaki. V Debianu 13 in AlmaLinux 10 sporočilo lahko navede natančen razlog (npr. Unknown parameter 'defualts'), v Ubuntu 24.04 pa je izpis pogosto splošen (wrong fs type, bad option). V Ubuntu zaženite sudo dmesg | tail za podrobnosti.
Ko je preverjeno, zapustite zasilno lupino za nadaljevanje zagona ali znova zaženite sistem:
sudo systemctl reboot
Po ponovnem zagonu lahko z ukazi journalctl znova preverite dnevnike storitve in se prepričate, da je bil priklop med običajnim zagonom uspešen:
sudo journalctl -u mnt-data.mount -b
Odpravljanje težav
- Zasilna lupina ni dostopna: Če je račun root zaklenjen in do zasilne lupine ne morete dostopati, morate strežnik zagnati z Live USB ali okoljem za obnovitev, priklopiti korensko particijo in
/etc/fstaburediti neposredno od tam. - UUID se je spremenil: Če ste formatirali particijo ali zamenjali disk, se bo UUID spremenil. Z
sudo blkidpoiščite nov UUID in ustrezno posodobite/etc/fstab. - Preprečevanje okvar zagona zaradi nepomembnih diskov: Pri nekorenskih in nesistemskih nosilcih (kot so diski za varnostne kopije ali podatke) vnosu v
/etc/fstabdodajte možnost priklopanofail(npr.ext4 defaults,nofail 0 2). To systemd naroči, naj nadaljuje zagon, tudi če naprave ni mogoče priklopiti.
Razveljavitev
Če se je strežnik uspešno zagnal, vendar spremenjena vrstica /mnt/data povzroča nepričakovano vedenje aplikacij, lahko priklop razveljavite tako, da vrstico v /etc/fstab zakomentirate:
sudo sed -i 's|^UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data|#UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data|' /etc/fstab
Nato odklopite nosilec, da obnovite prejšnje stanje:
sudo umount /mnt/data
Zaključek
Učinkovito upravljanje dnevnikov v Linuxu je v veliki meri odvisno od znanja o premikanju po dnevnikih systemd. Z journalctl si lahko ogledate sistemske dnevnike, ki jih ustvari Linux, jih učinkovito analizirate in se obnovite po kritičnih okvarah zagona, kot so napačne konfiguracije /etc/fstab. Obvladovanje teh orodij vam omogoča ohranjanje razpoložljivosti in diagnosticiranje zapletenih težav po vsej infrastrukturi.
Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo