Secondo questo articolo su Haystack di Facebook:
" A causa del modo in cui le appliance NAS gestiscono i metadati della directory, posizionare migliaia di file in una directory era estremamente inefficace in quanto la blockmap della directory era troppo grande per essere memorizzata nella cache in modo efficace dall'appliance. Di conseguenza era comune sostenere più di 10 operazioni su disco per recuperare un immagine singola Dopo aver ridotto le dimensioni della directory a centinaia di immagini per directory, il sistema risultante dovrebbe comunque sostenere 3 operazioni del disco per recuperare un'immagine: una per leggere i metadati della directory in memoria, una seconda per caricare l'inode in memoria e una terza per leggere il contenuto del file. "
Avevo supposto che i metadati e l'inode della directory del filesystem fossero sempre memorizzati nella RAM dal sistema operativo e una lettura del file avrebbe richiesto normalmente solo 1 I / O su disco.
Questo problema relativo a "I / O multipli su disco per leggere un singolo file" delineato in quel documento è univoco per i dispositivi NAS o Linux ha lo stesso problema?
Sto programmando di eseguire un server Linux per servire le immagini. In qualche modo posso ridurre al minimo il numero di I / O del disco - assicurandomi idealmente che il sistema operativo memorizzi nella cache tutti i dati di directory e inode nella RAM e che ogni lettura di file richiederebbe solo non più di 1 I / O su disco?