È possibile che le partizioni root e home abbiano file system diversi e si trovino su dispositivi fisici separati?


10

Immagina di aver formattato il root con un filesystem ext3 su una partizione separata esistente su un HDD SATA e la directory home su una diversa partizione btrfs che esiste su un SSD Intel.

Ho scaricato un file da Internet e temporaneamente salvato in /tmp(nel filesystem di root), quindi ho deciso di spostarlo nella mia home directory (la seconda partizione).

Sento il doloroso processo che accade in background per far funzionare un mvcomando così semplice .

Quindi, in primo luogo, è possibile che root e home abbiano file system diversi? In secondo luogo, supponendo che la risposta per la domanda precedente è stata "sì", come fa il sistema operativo gestisce tutto ciò che la transizione da ext3a btrfse quindi utilizzando diversi driver di periferica per i tipi di dischi diversi (HDD e SSD)?


3
È fatto con strati. Il livello del file system è integrato nel livello del dispositivo a blocchi. È possibile utilizzare qualsiasi file system adatto nel livello del file system. È possibile utilizzare qualsiasi dispositivo a blocchi adatto in quel livello di dispositivo a blocchi. Ogni mount point può avere il proprio filesystem e dispositivo.
segatura

@sawdust, è una cosa molto interessante che hai indicato, il livello del filesystem e il blocco del livello del dispositivo. Come si relazionano? Qualsiasi lettura sarà utile.
Karim Manaouil,

Non so molto sui file system, ma suppongo che il processo non sarebbe diverso dalla copia dei file su un'unità FAT32 esterna
Blaine,


Perché usi ancora ext3 nel 2017 quando è così semplice eseguire l'aggiornamento a ext4?
David Foerster,

Risposte:


25

La risposta è sì, puoi avere qualsiasi directory su qualsiasi dispositivo, eseguendo qualsiasi file system supportato dal sistema operativo.

Quindi puoi avere / /var /home /opte persino /home/afr0cksu diversi dispositivi, diverse partizioni, diversi file system.

Non solo puoi, ma è comune. Ad esempio, si consiglia sempre di mantenere /vare /homesu partizioni diverse /poiché è molto probabile che queste consumino inavvertitamente spazio su disco: se si riempiono, non influiscono troppo sul sistema. Se si trovano sulla stessa partizione di root, può causare l'arresto del sistema.

E potresti voler eseguire diverse directory su diversi dispositivi per motivi di velocità. E usa diversi filesystem per scopi diversi. Ad esempio, forse ext4 è quello che vuoi per i file del sistema operativo, poiché non cambiano molto, ma potresti voler btrfs per / home in modo da poter conservare le istantanee per i backup. Queste sono tutte le decisioni che possono essere prese da ogni persona per il loro caso d'uso specifico.

La parte dello spazio utente del sistema operativo non deve comprendere i diversi tipi di dispositivo e file system. Tutto ciò che chiede al kernel di spostare un file e il kernel orchestra tutto da lì. Quindi il mvcomando (ad esempio) è filesystem e tipo di dispositivo agnostico. Il kernel richiama tutti i driver necessari per leggere e scrivere nelle diverse partizioni.


7
Utile sottolineare che mv(1)prima tenta rename(2)il file. Quindi torna a copiare ed eliminare. Quindi, cercare di rinominare è come mvcapire se è possibile in modo agnostico. ( rename(2)fallisce sempre quando si sposta tra dispositivi diversi, che utilizzino o meno lo stesso driver del filesystem, @ afr0k.)
Peter Cordes,

1
@PeterCordes eh, non sapevo che rinominare fosse una cosa. Ho sempre usato mv per rinominare le cose.

5
@stanri: mvnon fork / exec il rename(1)comando, prova solo la rename(2)chiamata di sistema. Non esiste un renamecomando shell standard . Su alcuni sistemi, è il comando di ridenominazione di file multipli di sostituzione di pattern da util-linux. Non stavo parlando del comando shell, di come mvfunziona internamente.
Peter Cordes,

Anche / usr potrebbe risiedere su una partizione diversa, questo è il motivo per cui alcune cose veramente essenziali sono in / bin / lib e / sbin - se tutti gli installatori lo supporteranno è un'altra cosa.
rackandboneman

7

Sì, filesystem separati (mount points) possono essere di diversi tipi di filesystem.  /procè sempre un procfsfilesystem ed /sysè sempre un sysfs. I filesystem transitori (talvolta inclusi /tmp) sono spesso tmpfse, nelle impostazioni del gruppo di lavoro, è comune che le directory home dell'utente (e le relative directory dei prodotti di lavoro) siano nfso altri tipi di filesystem remoti (di rete / condivisi).

Non c'è alcuna gestione speciale per il sistema operativo da fare. Fino a un certo punto, a livello di utente, tutti i filesystem si assomigliano, nel senso che un lselenco sarà praticamente lo stesso in qualsiasi directory. Oltre quel punto, i filesystem non interagiscono. Anche tra due filesystem (partizioni) sullo stesso disco fisico, dello stesso tipo di filesystem, non esiste alcun collegamento 1 . Ad esempio, lo spostamento di un file da un filesystem (punto di montaggio) a un altro comporta sempre la creazione di una copia e l'eliminazione dell'originale. Non importa se sono partizioni su dischi diversi. Non importa se uno di questi è HDD e uno è SSD. Non importa se uno è ext3e uno èbtrfs. Non importa se uno è interno (all'interno del case del computer) e uno è esterno (pochi pollici all'esterno, collegato tramite cavo) - o remoto (accessibile tramite la rete).

Parlando della rete, è un po 'analogo a ssh. Legge dalla tastiera e invia i caratteri digitati alla rete. Allo stesso tempo, legge dalla rete e visualizza i risultati sullo schermo.

Oppure considera questo: immagina di essere al telefono e stai mediando una conversazione tra la persona sull'altro telefono e un'altra persona nella stanza. Non è un grosso problema.
________
1 ad eccezione dei collegamenti simbolici, ma possono oltrepassare i confini del filesystem.


1
Sono in gran parte d'accordo con la tua risposta, ma non è proprio tipico per / tmp di essere un tmpfs (anche se forse impostato così su alcune distro) - è normalmente fuori dalla partizione di root e pulito all'avvio. Ubuntu tand Redhat tipo distro usa / dev / shm come tmpfs,
davidgo

Ero confuso. Ho aggiornato la mia risposta.
G-Man dice "Ripristina Monica" il

1
@davidgo: quali distro Linux non sono predefinite /tmpsu tmpfs? Ho anche pensato che fosse praticamente una pratica standard, dal momento che puoi sempre mettere roba /var/tmp(anche se non viene pulita all'avvio). Non sono un esperto di valori predefiniti cross-distro, ma solo Debian / Ubuntu e Arch. Con quelli più RedHat, che copre una grande parte dei sistemi Linux installati là fuori (ma non altrettanto grande di una grande frazione delle distribuzioni totali).
Peter Cordes,

(ignorando i sistemi incorporati) Uso solo Centos e Ubuntu regolarmente, entrambi i quali usano il disco per / tmp. - Sono abbastanza sicuro che questo significhi che Debian, Redhat e Mint seguiranno tutti la stessa convenzione. Il mio dispositivo Android non ha / tmp
davidgo il

2
@PeterCordes L'ascesa di tmpfssu Linux è recente solo negli ultimi 5-7 anni circa. ad esempio Fedora stava discutendo il cambiamento sul loro wiki ~ 2012, e credo che sia stato introdotto in Debian Wheezy.
Bob
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.