
Tutti i nostri dati importanti si trovano in un file system di un tipo o nell’altro e i problemi del file system sono destinati a verificarsi. Su Linux, possiamo usare il fsck comando 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, indipendentemente dal fatto che l’unità sia un piatto meccanico rotante o un’unità a stato solido. Infatti, è 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 un file system viene creato durante il processo di installazione.
I file system sono 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 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 si trova ciascun file sull’unità, di che dimensione è, che nome ha e quali permessi di file sono impostati su di essi.
Il fsck comando ti consente di verificare che i tuoi file system siano integri. Se rileva problemi, di solito può risolverli anche per te.
Fai i controlli preliminari
Usando fsck richiede 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 i controlli preliminari. C’è troppo in gioco per fare diversamente. È una buona abitudine da sviluppare. Prima dell’uso 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 condurlo in less. Non stiamo chiedendo informazioni su una partizione specifica. Usando il -l (elenco) opzione fdisk elenca le tabelle delle partizioni su tutti i dispositivi che trova nel file “/proc/partitions”, se esiste.
sudo fdisk -l | less

Possiamo vedere le voci per /dev/sda e /dev/sdb. Puoi scorrere il file per vedere eventuali altre voci che potrebbero esistere sul tuo computer.

Le partizioni su /dev/sda sono elencati come /dev/sda1, /dev/sda2, e /dev/sda3 . Quindi abbiamo tre partizioni sul primo disco. Possiamo vedere qualche informazione in più usando il parted comando. Useremo il 'print' opzione 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.

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 34.4GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 540MB 538MB fat32 EFI System Partition boot, esp 3 540MB 34.4GB 33.8GB ext4
Ci sono tre unità in questo computer di prova. Questi sono i risultati per le altre due unità /dev/sdb e /dev/sdc. Nota che questi file system non hanno il campo “Nome”.
sudo parted /dev/sdb 'print'
Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 21.5GB 21.5GB primary ext4
sudo parted /dev/sdc 'print'
Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 21.5GB 21.5GB primary ext3
La seconda e la terza unità hanno le stesse dimensioni e ognuna ha una singola partizione. Ma il file system sulla seconda unità è ext4e il file system sulla terza unità è il più vecchio ext3.
Passiamo un identificatore di partizione a fscke controlla il file system su quella partizione. Ma non possiamo scappare 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 df comando.
df /dev/sdb1
df /dev/sdc1

Uso del 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 prima che questo è un ext4 file system, ed è montato su “/run/mount/dave/sata2”.
Useremo il umount comando. Nota che non c’è “n” in “umount”.
sudo umount /run/mount/dave/sata2

Insieme a 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. Non viene eseguito automaticamente un controllo più approfondito del file system. Possiamo anche guardare il codice di ritorno che fsck tornato al guscio.
echo $?

Il valore restituito pari a zero indica l’assenza di errori. I possibili codici di reso sono:
- 0: Nessun errore
- 1: Errori del file system corretti
- 2: il sistema dovrebbe essere riavviato
- 4: Errori del file system 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 il pulsante -f (forza) opzione.
sudo fsck /dev/sdb1 -f

Questa volta, il controllo richiede più tempo per essere completato, ma esegue un test più approfondito del file system. Il nostro file system era effettivamente pulito e non sono stati segnalati errori. Se vengono rilevati problemi durante lo svolgimento dei test, ti verrà chiesto di lasciare fsck risolvere il problema o ignorare l’errore.
Al termine del test, è necessario rimontare il file system. Il modo più semplice per farlo è usare mount con il -a (tutti) opzione. 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

Nota che non abbiamo bisogno di dirlo fsck che 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 ext3 file system sul nostro PC di prova, usando esattamente lo stesso comando che abbiamo usato su /dev/sdb1, che è un ext4 partizione.
sudo fsck /dev/sdc1 -f

Potresti non voler tuffarti direttamente nella correzione del file system. Potresti preferire guardare prima di saltare. Puoi chiedere fsck non offrire di risolvere nulla e segnalare solo i problemi alla finestra del terminale. Il -N (funzionamento a secco) fa proprio questo:
sudo fsck -N /dev/sdb1

Il contrario di questo è dire fsck per non preoccuparsi di chiedere se trova errori e per andare avanti e risolverli. Per farlo, usa il -y (nessuna richiesta) opzione.
sudo fsck -y /dev/sdb1
Utilizzo di fsck sulla partizione di root
Non puoi usare fsck su una partizione montata, ma per avviare il computer deve essere montata la partizione di root. Allora come possiamo correre? 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 “Shift”. Se l’hai programmato correttamente, non avvierai Linux. Il processo di avvio si fermerà a un menu in bianco e nero. La macchina di prova utilizzata per questo articolo stava eseguendo 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.

Sposta la barra di evidenziazione con i tasti “Freccia su” e “Freccia giù” in modo che sia selezionata la voce di menu “Opzioni avanzate per Ubuntu”. 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-generic (modalità di ripristino).” Premi il tasto “Invio”.
Vedrai il menu di ripristino. Selezionare “fsck check all file system” e premere il tasto “Tab” per spostare l’evidenziazione sul pulsante “OK”. Premere Invio.”

Vedrai una notifica che la partizione di root sarà 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 eseguire in modalità interattiva. Se ci sono problemi ti verrà chiesto di lasciare fsck risolverli o ignorarli. Quando i file system sono stati controllati, vedrai di nuovo il menu di ripristino.
Selezionare l’opzione “riprendi”, premere il tasto “Tab” per spostare l’evidenziazione sul pulsante “Ok” e premere “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 esistono per un motivo. Conosci il fsck comando. Se un giorno si presenterà la necessità di usarlo con rabbia, sarai felice di averti familiarizzato in anticipo.
