Diavolo sì. Se lo esegui ln -s
, crei un collegamento simbolico, che è un inode che punta a un determinato oggetto filesystem, motivo per cui i collegamenti simbolici possono attraversare i filesystem e i collegamenti reali non possono: i collegamenti reali non hanno il loro inode.
Se monti un filesystem con --bind
, crei un secondo mountpoint per un dispositivo o un filesystem.
Se immagini un link simbolico come reindirizzamento, allora immagina un --bind
filesystem montato come la creazione di un altro gateway per i dati.
I collegamenti simbolici e i bind mount sono un gioco di palla completamente diverso.
La --bind
montatura mi sembra un po 'più robusta e probabilmente è un po' più veloce rispetto al lavorare con un collegamento simbolico. D'altra parte, non ci sono seri inconvenienti nell'uso del collegamento simbolico, poiché l'hit di performance sarà piccolo (se esiste del tutto).
Modifica : ci ho pensato, e il colpo di scena potrebbe essere un po 'più grande di quanto pensassi inizialmente. Se si dispone di un'applicazione che legge molti file diversi, ogni nuovo file aperto richiederà una lettura aggiuntiva. Alcune ricerche qui suggeriscono che la mia ipotesi sia corretta, quindi se hai un'applicazione IO pesante in esecuzione lì, considera l' --bind
opzione per montare sopra la soluzione symlink.
La ragione per cui non è comune, è probabilmente il fatto che un symlink è visibile in un ls
, mentre un bind mount è visibile solo quando si guarda / proc / mounts o / etc / mtab (che è ciò che fa il comando mount, se lo è eseguito senza parametri). A parte questo, non credo ci siano problemi. Sarei interessato se ci fosse, però.
Aggiunta : un altro problema con ln -s
quello è che per alcune applicazioni, quando il percorso viene sottoposto a dereferenziazione, può causare il balk dell'applicazione se "si aspetta" che alcuni elementi si trovino in luoghi specifici.