Perché non puoi installare una partizione montata?


43

È noto che non si dovrebbe mai installare una partizione montata. Posso capire come ciò possa facilmente portare alla corruzione se il file system è scritto da fsck (ad esempio, viene utilizzata l'opzione -a), ma perché non è possibile eseguire controlli di sola lettura sui dischi montati?

Risposte:


28

A partire dal:

http://linux.die.net/man/8/fsck.ext3

"Si noti che, in generale, non è sicuro per l'esecuzione e2fscksu file system montati. L'unica eccezione è se l' -nè specificata l'opzione, e -c, -lo -Lopzioni non sono specificate. Tuttavia, anche se è sicuro di farlo, i risultati di stampa dai e2fscksono non valido se il filesystem è montato. Se ti e2fsckchiede se dovresti controllare un filesystem che è montato, l'unica risposta corretta è '' no ''. Solo gli esperti che sanno veramente cosa stanno facendo dovrebbero considerare di rispondere a questa domanda in qualsiasi altro modo. "


3
Un'eccezione: se il filesystem è montato in sola lettura e fsck è anche in modalità di sola lettura, allora le cose vanno bene
Demi,

31

Il problema di base è che il correttore del file system (di solito) non fa parte del file system. Invece è un programma separato che legge e scrive sullo stesso disco del codice del file system nel kernel. Di conseguenza, se si esegue fsck su un file system attivo, si hanno due entità diverse che stanno leggendo (e potenzialmente modificando) gli stessi dati (il disco), ma non si coordinano in alcun modo. Il risultato, come altri hanno sottolineato, è che la maggior parte dei controllori si aspettano che nessun altro stia cambiando i metadati del file system durante l'esecuzione. Saranno confusi e / o segnaleranno errori spuri se il file system del kernel cambia qualcosa che il correttore non si aspetta.

Esistono alcuni file system con pedine che sono esplicitamente progettati per essere eseguiti "on-line" (ovvero, mentre il file system è attivo). Le versioni più recenti di FFS / UFS lo fanno eseguendo fsck su una recente istantanea del filesystem (una replica di sola lettura, point-in-time, copia su scrittura). Se trova problemi, come incoerenze nelle bitmap di allocazione, li corregge tramite la chiamata di sistema, piuttosto che scrivendo sul disco grezzo. Ciò consente di coordinarsi con il file system attivo.

WAFL di NetApp ha anche uno strumento di controllo online. Ce ne sono probabilmente altri.


11

Eseguire fsck su una partizione montata in lettura-scrittura sarebbe sciocco, anche con fsck in modalità di sola lettura. Il file system cambierà in fsck e i dati in memoria che fsck memorizza nella cache dal file system non saranno più validi (e quindi fsck vedrà un'incoerenza). È possibile eseguire fsck su un filesystem montato in sola lettura in modalità sola lettura e ottenere risultati validi. L'esecuzione di fsck in modalità lettura / scrittura su un filesystem montato in sola lettura, se fsck apporta modifiche al filesystem nel corso della sua esecuzione, farebbe sì che il kernel vedesse le strutture del filesystem cambiare inaspettatamente al di sotto di esso. Anche questo sarebbe male.


Hai scritto "L'esecuzione di fsck in modalità lettura / scrittura su un file system montato in sola lettura causerebbe al kernel la visualizzazione di strutture inattese che cambiano inaspettatamente al di sotto di esso". Perché le strutture del filesystem cambiano su un file system montato di sola lettura?
Guettli,

Secondo questa risposta, fsck su una partizione di sola lettura è ok, se
riavvii

@guettli - La risposta a cui ti sei collegato è dire più o meno la stessa cosa di me. (Ho corretto il mio errore di ortografia, BTW. Grazie!) Se fsck apporta delle modifiche mentre il kernel ha un filesystem montato nel cache i dati memorizzati nella sola lettura potrebbero non essere validi alla luce delle modifiche apportate da fsck. Certo, puoi riavviare in seguito. Potresti anche scoprire un entusiasmante bug del kernel e far prendere il panico dal tuo kernel prima di avere la possibilità di riavviare.
Evan Anderson,

9

A parte il fatto che probabilmente ucciderebbe il throughput I / O, se il filesystem viene modificato mentre viene fsck, allora non c'è modo che fsck possa tenere traccia delle modifiche e segnalare incongruenze.

Alcuni filesystem come XFS consentono di eseguire controlli per coerenza mentre il filesystem è montato in lettura-scrittura, con l'avvertenza che probabilmente verranno segnalati errori spuri. xfs_checkconsiglia di smontare o montare il filesystem in sola lettura prima di eseguire il controllo.


6

Bene, il punto di fsck è di segnalare incoerenze nel filesystem, ovvero invarianti violati.

Tuttavia, molti di questi controlli coinvolgono più di una struttura FS. Se qualcuno sta modificando il FS (scrivendo dati), queste strutture potrebbero essere temporaneamente fuori sincrono. fsck lo vedrebbe come un'incoerenza, anche se non è davvero un problema. fsck non ha modo di dire se un'incoerenza è solo temporanea o un problema permanente che deve essere risolto. Quindi questo potrebbe non funzionare (a meno che un FS non sia progettato specificamente per consentire il controllo online. Alcuni lo fanno, ma ext3 non lo fa).


3

Bene, puoi. fsck -n / dev / sda1 farà esattamente questo, almeno su ext3. L'ho appena provato :)


-4

Puoi, proprio come puoi infilare la mano in un frullatore mobile e possibilmente non ferirti, o proprio come puoi saltare da un edificio alto mentre miri alla piccola pila di cuscini che hai disposto sul marciapiede sottostante.

Ma perché dovresti, oltre a provare la tua stessa mortalità? Perché il tuo capo sicuramente lo testerà di nuovo quando scoprirà PERCHÉ il server di posta non riconoscerà l'unità root ora.


In realtà, penso che un'analogia migliore sarebbe quella di guardare un frullatore in movimento, o dare un'occhiata al bordo di un edificio alto. Sola lettura.
mike,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.