File system di sola lettura
Motivi possibili:
- Filesystem danneggiato
- Spegnimento non corretto
- Errore di configurazione
Sebbene la maggior parte dei filesystem siano progettati per prevenire gli errori, questi possono ancora accadere. In tali casi, Linux attiva un meccanismo di protezione montando un dispositivo a blocchi fallito come di sola lettura. Ciò consente la localizzazione del problema e la prevenzione di ulteriori danni ai dati. Pertanto, la prima e la più ovvia opzione sarebbe quella di controllare il filesystem e correggere tutti gli errori, se ne vengono trovati.
Diagnostica
Inizia con uno sguardo veloce ai dischi collegati:
sudo fdisk -l
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors Disk model: EXAMPLE HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 147676BD-7D65-4290-91F0-B45ACD9E360B Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 83884031 83879936 40G Linux filesystem Disk /dev/sdb: 25 GiB, 26843545600 bytes, 52428800 sectors Disk model: EXAMPLE HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x880bd48d Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 52428799 52426752 25G 83 Linux
Si presentano due dischi. Il primo è /dev/sda con due partizioni: /dev/sda1 e /dev/sda2. Questo disco viene utilizzato per il sistema ed è montato in modo permanente. È impossibile correggere gli errori senza spegnere il sistema operativo. Tuttavia, c'è un trucco che consente di valutare lo stato del disco di sistema.
Controlla il filesystem
Esegui fsck con l'opzione -n ed esamina l'output:
sudo fsck -n /dev/sda2
fsck from util-linux 2.37.2 e2fsck 1.46.5 (30-Dec-2021) Warning! /dev/sda2 is mounted. Warning: skipping journal recovery because doing a read-only filesystem check. /dev/sda2: clean, 118002/2621440 files, 1794718/10484992 blocks
L'iscrizione "pulito" indica che non ci sono problemi con il filesystem del disco di sistema. Se l'errore è causato da questo particolare disco, allora si può provare a rimontarlo senza il rischio di perdere dati:
sudo mount -o remount,rw /dev/sda2 /
Questo può aiutare in diversi casi. Puoi anche provare a riavviare il server:
sudo shutdown -r now
Esamine un altro disco, /dev/sdb. Procedere con una diagnostica rapida:
sudo fsck -n /dev/sdb1
fsck from util-linux 2.37.2 e2fsck 1.46.5 (30-Dec-2021) ext2fs_open2: Bad magic number in super-block fsck.ext2: Superblock invalid, trying backup blocks... /dev/sdb1 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: +(32768--33796) +(98304--99332) +(163840--164868) +(2 29376--230404) +(294912--295940) +(819200--820228) +(884736--885764) +(1605632-- 1606660) +(2654208--2655236) +(4096000--4097028) …
Ripara il filesystem corrotto
Qui, vediamo come appare l'output del comando se il filesystem nella prima partizione, /dev/sdb1, è effettivamente corrotto. Tuttavia, l'opzione -n funziona solo per scopi diagnostici e non apporta alcuna modifica. Usa l'opzione -f per riparare il filesystem danneggiato:
sudo fsck -f /dev/sdb1
fsck from util-linux 2.37.2 e2fsck 1.46.5 (30-Dec-2021) ext2fs_open2: Bad magic number in super-block fsck.ext2: Superblock invalid, trying backup blocks... Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: +(32768--33796) +(98304--99332) +(163840--164868) +(229376--230404) +(294912--295940) +(819200--820228) +(884736--885764) +(1605632--1606660) +(2654208--2655236) +(4096000--4097028) Fix[y]? yes Padding at end of inode bitmap is not set. Fix[y]? yes /dev/sdb1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sdb1: 11/1638400 files (0.0% non-contiguous), 146893/6553344 blocks
Ecco fatto! Funziona! Controlliamo di nuovo:
sudo fsck -n /dev/sdb1
fsck from util-linux 2.37.2 e2fsck 1.46.5 (30-Dec-2021) /dev/sdb1: clean, 11/1638400 files, 146893/6553344 blocks
Il filesystem è pulito, il che indica che il problema è risolto.
A volte, un messaggio di errore simile può essere il risultato di un'opzione (errors=remount-ro) specificata per una particolare partizione non di sistema in /etc/fstab. Questa opzione risulta preziosa quando il sistema si imbatte in un errore che rappresenta un rischio per il filesystem. Impedisce eventuali modifiche aggiuntive che potrebbero peggiorare la questione o portare alla perdita di dati. Per risolvere questo errore, basta semplicemente rimontare il filesystem per lettura/scrittura, come menzionato sopra.
Guarda anche:
Aggiornato: 12.03.2025
Pubblicato: 22.05.2024