Sto creando un'applicazione che deve distribuire un file server standard su alcuni siti su una WAN. Fondamentalmente, ogni sito deve scrivere un sacco di file vari di varie dimensioni (alcuni nell'intervallo di 100 MB, ma la maggior parte piccoli) e l'applicazione è scritta in modo tale che le collisioni non siano un problema. Mi piacerebbe avere un sistema impostato che soddisfi le seguenti qualifiche:
- Ogni sito può archiviare file in uno "spazio dei nomi" condiviso. Cioè, tutti i file verrebbero visualizzati nello stesso filesystem.
- Ogni sito non invierebbe dati tramite WAN a meno che non sia necessario. Vale a dire, ci sarebbe spazio di archiviazione locale su ciascun lato della WAN che verrebbe "unito" nello stesso filesystem logico.
- Linux & Free ($$$) è un Plus
Fondamentalmente, qualcosa come una condivisione NFS centrale soddisferebbe la maggior parte dei requisiti, tuttavia non permetterebbe ai dati scritti localmente di rimanere locali. Tutti i dati dai lati remoti della WAN verrebbero sempre copiati localmente.
Ho esaminato Lustre e ho eseguito con successo alcuni test con esso, tuttavia, sembra distribuire i file in modo abbastanza uniforme sullo storage distribuito. Ho esaminato la documentazione e non ho trovato nulla che "preferirà" automaticamente l'archiviazione locale rispetto all'archiviazione remota. Anche qualcosa che è andato con la memoria a latenza più bassa andrebbe bene. Funzionerebbe il più delle volte, il che soddisferebbe i requisiti di questa applicazione.
Alcune risposte ad alcune domande poste di seguito:
- Nodi server: 2 o 3 per l'avvio. Ogni server avrebbe dozzine di connessioni simultanee di lettura / scrittura.
- La topologia WAN è full mesh e affidabile. (grande azienda, il costo non è così limitante come la burocrazia)
- Failover del client: in realtà non avevo pensato di fare il failover dei client (soprattutto perché la nostra attuale applicazione non lo fa in un solo sito). Suppongo che la risposta pratica sia che i server di ciascun sito distribuito geograficamente dovrebbero rappresentare singoli punti di errore per i client che servono. Tuttavia, se stai pensando a qualcosa di specifico qui, penso che sarebbe abbastanza germano alla discussione.
- Roll-my-own: ho pensato a rsync / unison, tuttavia avrei bisogno di un po 'di logica elaborata per rendere la parte "dinamica" di questo lavoro senza problemi. Vale a dire, il file sembra essere locale, ma viene recuperato solo su richiesta.
- MS-DFS: Sembra certamente essere qualcosa che dovrei esaminare. Il mio problema principale sarebbe potenzialmente incerto sulla configurazione / affidabilità / prestazioni del server NFS su Windows, poiché molti dei client che si connettono sono client NFS.