sviluppo-web-qa.it

Perché non puoi installare una partizione montata?

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

43
mike

A partire dal:

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

"Nota che in generale non è sicuro eseguire e2fsck Su filesystem montati. L'unica eccezione è se viene specificata l'opzione -n E -c, -l o -L non sono specificate, tuttavia, anche se è sicuro farlo, i risultati stampati da e2fsck non sono validi se il filesystem è montato. Se e2fsck chiede se dovresti controllare un filesystem che è montato, l'unica risposta corretta è '' no ''. Solo gli esperti che sanno davvero cosa stanno facendo dovrebbero considerare di rispondere a questa domanda in qualsiasi altro modo. "

28
MathewC

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" (vale a dire, 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.

31
Keith Smith

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.

11
Evan Anderson

A parte il fatto che probabilmente ucciderebbe il tuo 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_check consiglia di smontare o montare il filesystem in sola lettura prima di eseguire il controllo.

9
Kamil Kisiel

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

Tuttavia, molti di questi controlli coinvolgono più di una FS. Se qualcuno sta modificando la FS (scrittura dei dati), queste strutture potrebbero essere temporaneamente fuori sincrono. fsck vedrebbe questo 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 non può funzionare (A meno che a FS è progettato specificamente per consentire il controllo online. Alcuni lo fanno, ma ext3 no).

6
sleske

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

3
Sven