linux memory-management network-programming cluster-computing mmap

Compartir un gran archivo de datos mmaped en máquinas de Linux Cluster



memory-management network-programming (1)

He estado jugando con una idea como esta en el trabajo recientemente (concedido esto era con tamaños de archivo significativamente más pequeños). Creo que NFS estaría bien para las lecturas, pero es posible que tenga problemas con las escrituras simultáneas. Siempre que tenga un solo "escritor", entonces su idea debería funcionar razonablemente bien. Si el archivo de datos está estructurado, recomiendo ir a un caché distribuido de alguna descripción y permitir múltiples copias de los datos distribuidos por el clúster (para redundancia).

Al final, optamos por una SAN y una solución de sistema de archivos en clúster (en nuestro caso Symantec VCS, pero cualquier sistema de archivos genérico agrupado lo haría). La razón por la que hicimos esto es porque no pudimos obtener el rendimiento que requeríamos al usar NFS puro. El sistema de archivos en clúster que elija deberá admitir mmap correctamente y una memoria caché distribuida.

Digamos que tengo un archivo de datos de 1 TB con mmapped de lectura / escritura desde el sistema de archivos hdd montado localmente de un sistema Linux "maestro" en el espacio de direcciones virtuales de un proceso que se ejecuta en este mismo sistema "maestro".

Tengo 20 servidores Linux "esclavos" dedicados conectados a través de un conmutador gigabit al sistema "maestro". Quiero dar acceso de lectura aleatorio a este 1 TB en estos servidores "esclavos" mmaping de solo lectura en sus espacios de direcciones de proceso.

Mi pregunta es ¿cuál es la forma más eficiente de sincronizar (quizás de forma perezosa) el conjunto de datos del sistema maestro con los sistemas esclavos? (por ejemplo, ¿es posible montar el archivo en NFS y luego mmap desde allí? En caso afirmativo, ¿es esta la mejor solución? En caso negativo, ¿qué es una solución?)