Estoy tratando de exponer una jerarquía de directorios de inicio a varias cárceles de FreeBSD. Los directorios de inicio se configuran de modo que cada uno sea un conjunto de datos ZFS único. Las cárceles se utilizan para el trabajo de desarrollo y, por lo tanto, se crean y destruyen regularmente.
Mi primer pensamiento fue simplemente usar nullfs para montar /home
dentro de la cárcel, pero nullfs no proporciona ninguna forma de acceder a los sistemas de archivos subordinados.
Mi segundo pensamiento fue exportar los directorios a través de NFS y luego ejecutar el demonio automounter (amd) dentro de cada cárcel. Esto hubiera funcionado ... si fuera posible realizar montajes NFS dentro de una cárcel. Pero no lo es.
Mi tercer pensamiento fue ejecutar amd en el host y proporcionar montajes nullfs en las cárceles ... pero el soporte amd para nullfs no existe.
Mi cuarto pensamiento fue volver a exportar los directorios usando NFS, porque por supuesto amd funciona con NFS, ¿verdad? Desafortunadamente, en lugar de montar un directorio en el punto de montaje de destino, a amd le gusta montar cosas en una ubicación temporal ( /.amd_mnt/...
) y luego crear un enlace simbólico ... que, por supuesto, es inútil dentro del entorno de la cárcel.
Entonces, ¿podrías usar nullfs para exponer un subdirectorio de /.amd_mnt
la cárcel? ¡No! Esto nos lleva de nuevo a mi primer intento, en el que encontramos que no hay forma de acceder a sistemas de archivos subordinados usando nullfs .
Y entonces mi cabeza explotó.
¿Hay una buena solución para lo que estoy tratando de hacer? Una mala solución sería ejecutar un script después de arrancar la cárcel que crearía múltiples puntos de montaje nullfs para cada directorio de inicio, pero esto es bastante torpe: necesitaría ejecutarse periódicamente para tener en cuenta los directorios nuevos o los directorios eliminados. Así que, básicamente, tendría que escribir un mal montador automático.
Tiene que haber una mejor manera. ¡Ayúdame, Serverfault, eres mi única esperanza!
ACTUALIZACIÓN 1 : Se me ocurrió que podría resolver parte del problema pam_mount
, aunque en el mejor de los casos sería incompleto. Además, de la documentación no está claro si pam_mount
puede o no crear automáticamente el punto de montaje de destino. Si requiere que el punto de montaje exista a priori, esta solución no sería mejor que el mal montador automático que ya he propuesto.
ACTUALIZACIÓN 2 : Como se explica en las respuestas a continuación, la configuración VFCF_JAIL
en el sistema de archivos NFS permite que las cárceles realicen montajes NFS. Desafortunadamente, el automontador continúa comportándose de manera inútil, y cuando se ejecuta en una cárcel parece ser muy bueno para engancharse de tal manera que es necesario reiniciar el sistema para eliminar la entrada del proceso.
Respuestas:
¡Hola, Lars! Esa es una pregunta fascinante que ha formulado, y después de un poco de investigación, puedo haber encontrado una respuesta para usted.
De acuerdo con esta y otras publicaciones, es posible establecer el
VFCF_JAIL
atributo en el proveedor del sistema de archivos NFS, lo que en teoría permitiría a las cárceles realizar montajes NFS. Esto puede, a su vez, permitir que uno corra y dentro de la cárcel ... lo que resolvería perfectamente este problema.Intentaré reconstruir el kernel esta tarde para ver cómo funcionan las cosas. No es necesariamente la mejor solución (ya que significa que debe asegurarse de que este cambio persista en futuras actualizaciones del kernel), pero sería interesante si funciona.
Y recuerda...
fuente
VFCF_JAIL
hizo que los montajes NFS funcionaran, pero el automontador continúa aturdiéndome.