Ho 2 domande.
- Durante l'installazione di Linux specifichiamo lo spazio di memoria per 2 punti di montaggio:root e swap. Ci sono altri punti di montaggio creati senza che gli utenti se ne accorgano?
- Questa affermazione è corretta:“il montaggio entra in gioco solo quando si ha a che fare con partizioni diverse. cioè, non puoi montare, diciamo, /proc a meno che non sia una partizione diversa”?
Risposta accettata:
Ci sono idee sbagliate dietro le tue domande.
- Lo scambio non è montato.
- Il montaggio non è limitato alle partizioni.
Partizioni
Una partizione è una fetta¹ di spazio su disco dedicata a uno scopo particolare. Ecco alcuni scopi comuni per le partizioni.
- Un filesystem, ovvero file organizzati come un albero di directory e archiviati in un formato come ext2, ext3, FFS, FAT, NTFS, …
- Spazio di scambio, ovvero lo spazio su disco utilizzato per il paging (e la memorizzazione delle immagini di ibernazione).
- Accesso diretto all'applicazione. Alcuni database memorizzano i propri dati direttamente su una partizione piuttosto che su un filesystem per ottenere un po' di prestazioni. (Un filesystem è comunque una specie di database.)
- Un contenitore per altre partizioni. Ad esempio, una partizione estesa per PC, o una fetta di disco contenente partizioni BSD, o un volume fisico LVM (contenente eventualmente volumi logici che possono essere a loro volta considerati partizioni), …
Filesystem
I filesystem presentano le informazioni in una struttura gerarchica. Ecco alcuni tipi comuni di filesystem:
- Filesystem con supporto su disco, come ext2, ext3, FFS, FAT, NTFS, …
- Non è necessario che il supporto sia direttamente su una partizione del disco, come visto sopra. Ad esempio, questo potrebbe essere un volume logico LVM o un montaggio in loop.
- Filesystem supportati da memoria, come Solaris e tmpfs di Linux.
- Filesystem che presentano informazioni dal kernel, come
proc
esysfs
su Linux. - Filesystem di rete, come NFS, Samba, …
- Filesystem supportati da applicazioni, di cui FUSE ha una vasta collezione. I filesystem supportati da applicazioni possono fare qualsiasi cosa:far apparire un server FTP come un filesystem, fornire una vista alternativa di un filesystem in cui i nomi dei file non fanno distinzione tra maiuscole e minuscole o convertiti in una codifica diversa, mostrare i contenuti dell'archivio come se fossero directory,...
Montaggio
Unix presenta i file in un'unica gerarchia, solitamente chiamata "il filesystem" (ma in questa risposta non userò la parola "filesystem" in questo senso per mantenere bassa la confusione). I singoli filesystem devono essere innestati in quella gerarchia per potervi accedere.³
Rendi accessibile un filesystem montandolo. Il montaggio associa la directory principale del filesystem che stai montando a una directory esistente nella gerarchia dei file. Una directory con tale associazione è nota come punto di montaggio.
- Ad esempio, il filesystem di root viene montato all'avvio (prima che il kernel avvii qualsiasi processo²) su
/
directory. - Il filesystem proc su cui alcune varianti di Unix come Solaris e Linux espongono informazioni sui processi è montato su
/proc
, in modo che/proc/42/environ
designa il file/42/environ
sul filesystem proc, che (almeno su Linux) contiene una vista di sola lettura dell'ambiente del processo numero 42. - Se hai un filesystem separato, ad es. per
/home
, quindi/home/john/myfile.txt
designa il file il cui percorso è/john/myfile.txt
dalla radice del filesystem home.
Sotto Linux, è possibile che lo stesso filesystem sia accessibile attraverso più di un percorso, grazie ai mount di bind.
Un tipico filesystem Linux ha molti filesystem montati. (Questo è un esempio; diverse distribuzioni, versioni e configurazioni porteranno al montaggio di diversi filesystem.)
/
:il filesystem di root, montato prima che il kernel carichi il primo processo. Il bootloader dice al kernel cosa usare come filesystem di root (di solito è una partizione del disco ma potrebbe essere qualcos'altro come un'esportazione NFS)./proc
:il file system proc, con informazioni sul processo e sul kernel./sys
:il filesystem sysfs, con informazioni sui dispositivi hardware./dev
:un filesystem in memoria in cui i file del dispositivo vengono creati automaticamente da udev in base all'hardware disponibile./dev/pts
:un filesystem speciale contenente file di dispositivo per l'esecuzione di emulatori di terminale./dev/shm
:un filesystem in memoria utilizzato per scopi interni dalla libreria standard del sistema.- A seconda dei componenti di sistema in esecuzione, potresti vedere altri filesystem per scopi speciali come
binfmt_misc
(usato dal sottosistema del kernel in formato file eseguibile esterno),fusectl
(usato da FUSE),nfsd
(usato dal server NFS del kernel), … - Qualsiasi filesystem esplicitamente menzionato in
/etc/fstab
(e non contrassegnato connoauto
) viene montato come parte del processo di avvio. - Qualsiasi filesystem montato automaticamente da HAL (o funzionalità equivalente) in seguito all'inserimento di un dispositivo rimovibile come una chiave USB.
- Qualsiasi filesystem montato esplicitamente con
mount
comando.
¹ Informalmente parlando qui.
² Initrd e simili esulano dallo scopo di questa risposta.
³ Questo è diverso da Windows, che ha una gerarchia separata per ogni filesystem, ad es. c:
o \hostnamesharename
.