Come utilizzare il comando fsck su Linux
Pubblicato: 2022-01-29 Tutti i nostri dati importanti si trovano in un file system di un tipo o dell'altro e sono destinati a verificarsi problemi di file system. Su Linux, possiamo usare il comando fsck
per trovare e correggere gli errori del file system.
I file system sono software
I file system sono uno dei componenti più critici di un computer. Senza un file system, il computer non può archiviare dati su un disco rigido, sia che si tratti di un piatto meccanico rotante o di un'unità a stato solido. In effetti, è necessario creare un file system prima che il sistema operativo possa essere installato sul disco rigido. Deve esserci qualcosa in cui archiviare i file del sistema operativo. Quindi viene creato un file system durante il processo di installazione.
I file system vengono creati dal software, scritti dal software e letti dal software. Come sai, tutti i software complessi hanno dei bug. I nostri dati sono di fondamentale importanza per noi, quindi riponiamo molta fiducia nei file system e nel software che li crea e li utilizza. Se qualcosa va storto, possiamo perdere l'accesso a parti del file system o persino a un'intera partizione.
I moderni file system di journaling sono più efficaci nella gestione dei problemi che possono essere causati da un'improvvisa perdita di alimentazione o da un arresto anomalo del sistema. Sono robusti, ma non sono invincibili. Se le loro tabelle interne vengono codificate, possono perdere traccia di dove risiede ciascun file sull'unità, che dimensione ha, che nome ha e quali autorizzazioni per i file sono impostate su di esse.
Il comando fsck
ti consente di verificare che i tuoi file system siano integri. Se trova problemi, di solito può risolverli anche per te.
Fai i controlli preliminari
L'uso di fsck
richiede i privilegi sudo. Qualsiasi comando che può apportare modifiche a un file system deve essere trattato con cautela e limitato a coloro che sanno cosa stanno facendo.
I piloti non saltano su un aereo, lo avviano e volano via nell'azzurro pallido laggiù. Fanno controlli pre-volo. C'è troppo in gioco per fare altrimenti. È una buona abitudine da sviluppare. Prima di usare fsck
devi assicurarti di usarlo sull'unità corretta. Quindi, prima di fare qualsiasi cosa con fsck
, faremo un po' di ricognizione.
Inizieremo con fdisk
e lo convogliamo in less
. Non stiamo chiedendo informazioni su una partizione specifica. Utilizzando l'opzione -l
(list) fdisk
elenca le tabelle delle partizioni su tutti i dispositivi che trova nel file "/proc/partitions", se esiste.
sudo fdisk -l | meno
Possiamo vedere le voci per /dev/sda
e /dev/sdb
. Puoi scorrere il file per vedere tutte le altre voci che potrebbero esistere sul tuo computer.
Le partizioni su /dev/sda
sono elencate come /dev/sda1
, /dev/sda2
e /dev/sda3
. Quindi abbiamo tre partizioni sul primo disco. Possiamo vedere un po' più di informazioni usando il comando parted
. Useremo l'opzione 'print'
per visualizzare le tabelle delle partizioni nella finestra del terminale.
sudo parted /dev/sda 'print'
Questa volta otteniamo alcune informazioni extra, incluso il tipo di file system su ciascuna partizione.
Modello: ATA VBOX HARDDISK (scsi) Disco /dev/sda: 34,4 GB Dimensione del settore (logico/fisico): 512B/512B Tabella delle partizioni: gpt Flag del disco: Numero Inizio Fine Dimensione Nome del file system Flag 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 540MB 538MB fat32 Avvio partizione di sistema EFI, esp 3 540 MB 34,4 GB 33,8 GB est4
Ci sono tre unità in questo computer di prova. Questi sono i risultati per le altre due unità /dev/sdb
e /dev/sdc
. Si noti che questi file system non hanno il campo "Nome".
sudo parted /dev/sdb 'stampa'
Modello: ATA VBOX HARDDISK (scsi) Disco /dev/sdb: 21,5 GB Dimensione del settore (logico/fisico): 512B/512B Tabella delle partizioni: msdos Flag del disco: Numero Inizio Fine Dimensione Tipo File system Flag 1 1049 kB 21,5 GB 21,5 GB primario ext4
sudo parted /dev/sdc 'stampa'
Modello: ATA VBOX HARDDISK (scsi) Disco /dev/sdc: 21,5 GB Dimensione del settore (logico/fisico): 512B/512B Tabella delle partizioni: msdos Flag del disco: Numero Inizio Fine Dimensione Tipo File system Flag 1 1049 kB 21,5 GB 21,5 GB primario ext3
La seconda e la terza unità hanno le stesse dimensioni e ciascuna ha una singola partizione. Ma il file system sulla seconda unità è ext4
e il file system sulla terza unità è il vecchio ext3
.
Passiamo un identificatore di partizione a fsck
e controlla il file system su quella partizione. Ma non possiamo eseguire fsck
su un file system montato. Dobbiamo smontare l'unità. Per fare ciò abbiamo bisogno di conoscere il punto di montaggio su cui è montata la partizione, e quindi il file system.
Possiamo scoprirlo facilmente usando il comando df
.
df /dev/sdb1
df /dev/sdc1
Usando il comando fsck
Abbiamo tutte le informazioni di cui abbiamo bisogno. La prima cosa che faremo è smontare il file system che andremo a controllare. Lavoreremo sul file system sulla prima e unica partizione di /dev/sdb
, che è /dev/sdb1
. Abbiamo visto in precedenza che questo è un file system ext4
ed è montato su "/run/mount/dave/sata2".
Useremo il comando umount
. Nota che non c'è "n" in "umount".
sudo smonta /run/mount/dave/sata2
Con umount
, nessuna notizia è una buona notizia. Se torni silenziosamente al prompt dei comandi, siamo a posto.
sudo fsck /dev/sdb1
Questo file system viene segnalato come pulito. Ciò significa che il file system sta segnalando che non ha errori o problemi. Un controllo più approfondito del file system non viene eseguito automaticamente. Possiamo anche guardare il codice di ritorno che fsck
ha restituito alla shell.
eco $?
Il valore di ritorno di zero indica nessun errore. I possibili codici di reso sono:
- 0 : Nessun errore
- 1 : Errori del filesystem corretti
- 2 : Il sistema dovrebbe essere riavviato
- 4 : Errori del filesystem non corretti
- 8 : Errore operativo
- 16 : Errore di utilizzo o di sintassi
- 32 : Controllo annullato su richiesta dell'utente
- 128 : Errore di libreria condivisa
Nonostante il file system venga segnalato come pulito, possiamo forzare l'esecuzione di un controllo del file system, utilizzando l'opzione -f
(force).
sudo fsck /dev/sdb1 -f
Questa volta, il completamento del controllo richiede più tempo ma esegue un test più approfondito del file system. Il nostro file system era effettivamente pulito e non vengono segnalati errori. Se vengono rilevati problemi durante lo svolgimento dei test, ti verrà chiesto di consentire a fsck
di risolvere il problema o di ignorare l'errore.
Al termine del test, è necessario rimontare il file system. Il modo più semplice per farlo è usare mount
con l'opzione -a
(all). Questo controlla "/etc/fstab" per l'elenco dei file system e si assicura che siano tutti montati proprio come farebbero dopo un normale avvio.
sudo mount -a
Si noti che non è necessario dire a fsck
quale tipo di file system si trova su una partizione; l'utilità lo determina esaminando il file system. Ciò significa che possiamo forzare un controllo del file system su /dev/sdc1
, il file system ext3
sul nostro PC di prova, utilizzando esattamente lo stesso comando che abbiamo usato su /dev/sdb1
, che è una partizione ext4
.
sudo fsck /dev/sdc1 -f
Potresti non voler tuffarti direttamente nella correzione del file system. Potresti preferire guardare prima di saltare. Puoi chiedere a fsck
di non offrire di riparare nulla e di segnalare semplicemente i problemi alla finestra del terminale. L'opzione -N
(corsa a secco) fa proprio questo:
sudo fsck -N /dev/sdb1
L'opposto è dire a fsck
di non preoccuparsi di chiedere se trova errori e di andare avanti e risolverli. Per fare ciò, usa l'opzione -y
(nessun prompt).
sudo fsck -y /dev/sdb1
Utilizzo di fsck sulla partizione di root
Non puoi usare fsck
su una partizione montata, ma per avviare il tuo computer la partizione di root deve essere montata. Quindi, come possiamo eseguire fsck
sulla partizione di root? La risposta è interrompere il processo di avvio ed eseguire fsck
in modalità di ripristino.
Durante l'avvio del computer, tieni premuto il tasto "Maiusc". Se hai cronometrato correttamente, non ti avvierai in Linux. Il processo di avvio si fermerà in un menu in bianco e nero. La macchina di prova utilizzata per questo articolo eseguiva Ubuntu, ma altre distribuzioni hanno lo stesso tipo di menu, sebbene possa variare nell'aspetto. Dove dice "Ubuntu" negli screenshot avrà il nome della tua distribuzione.
Spostare la barra di evidenziazione con i tasti "Freccia su" e "Freccia giù" in modo che la voce di menu "Opzioni avanzate per Ubuntu" sia selezionata. Premi "Invio" per passare alla schermata successiva.
Seleziona l'opzione che termina con "(modalità di ripristino)". Nel nostro esempio, è "Ubuntu, con Linux 5.11.0-20-generico (modalità di ripristino)". Premi il tasto "Invio".
Vedrai il menu di ripristino. Seleziona "fsck controlla tutti i file system" e premi il tasto "Tab" per spostare l'evidenziazione sul pulsante "OK". Premere Invio."
Vedrai una notifica che la partizione di root verrà montata insieme a qualsiasi altra partizione definita nel tuo file "/etc/fstab".
Premere il tasto "Tab" per spostare l'evidenziazione sul pulsante "Sì" e premere "Invio".
Vedrai fsck
eseguito in modalità interattiva. Se ci sono problemi ti verrà chiesto di lasciare che fsck
li risolva o di ignorarli. Quando i file system sono stati controllati, vedrai di nuovo il menu di ripristino.
Seleziona l'opzione "riprendi", premi il tasto "Tab" per spostare l'evidenziazione sul pulsante "Ok" e premi "Invio". Il processo di avvio riprenderà e avvierai Linux.
L'avvio in modalità di ripristino può influire su alcuni driver, quindi è buona norma riavviare ancora una volta, non appena si avvia Linux. Ciò garantisce che il computer funzioni nel modo standard.
Quando le cose vanno male
Le reti di sicurezza sono lì per un motivo. Impara a conoscere il comando fsck
. Se un giorno si presenta la necessità di usarlo con rabbia, sarai felice di aver familiarizzato in anticipo.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati