25 NFS Ganesha #
NFS Ganesha es un servidor NFS que se ejecuta en un espacio de dirección de usuario, en lugar de hacerlo como parte del kernel del sistema operativo. Con NFS Ganesha, puede poner en marcha su propio mecanismo de almacenamiento, como Ceph, y acceder a él desde cualquier cliente NFS. Para obtener instrucciones sobre la instalación, consulte el Sección 8.3.6, “Distribución de NFS Ganesha”.
Debido al aumento de la sobrecarga de protocolo y a la latencia adicional causados por saltos de red adicionales entre el cliente y el almacenamiento, el acceso a Ceph a través de una pasarela de NFS puede reducir de forma significativa el rendimiento de la aplicación en comparación con los clientes nativos de CephFS.
Cada servicio de NFS Ganesha consta de una jerarquía de configuración que contiene:
Un archivo de carga (bootstrap)
ganesha.conf
Un objeto de configuración común RADOS por servicio
Un objeto de configuración RADOS por exportación
La configuración de carga es la configuración mínima para iniciar el daemon nfs-ganesha
dentro de un contenedor. Cada configuración de carga contendrá una directiva %url
que incluya cualquier configuración adicional del objeto de configuración común RADOS. El objeto de configuración común puede incluir directivas %url
adicionales para cada una de las exportaciones NFS definidas en los objetos de configuración RADOS de exportación.
25.1 Creación de un servicio NFS #
La forma recomendada de especificar la distribución de los servicios de Ceph es crear un archivo con formato YAML con la especificación de los servicios que desea distribuir. Puede crear un archivo de especificación independiente para cada tipo de servicio, o bien especificar varios (o todos) los tipos de servicios en un archivo.
Dependiendo de lo que haya decidido hacer, deberá actualizar o crear un archivo con formato YAML relevante para crear un servicio de NFS Ganesha. Para obtener más información sobre la creación del archivo, consulte el Sección 8.2, “Especificación del servicio y la colocación”.
Una vez que haya actualizado o creado el archivo, ejecute lo siguiente para crear un servicio nfs-ganesha
:
cephuser@adm >
ceph orch apply -i FILE_NAME
25.2 Inicio o reinicio de NFS Ganesha #
Cuando el servicio de NFS Ganesha se inicia, no se exporta automáticamente un sistema de archivos CephFS. Para exportar un sistema de archivos CephFS, cree un archivo de configuración de exportación. Consulte la Sección 25.4, “Creación de una exportación NFS” para obtener más información.
Para iniciar el servicio de NFS Ganesha, ejecute:
cephuser@adm >
ceph orch start nfs.SERVICE_ID
Para reiniciar el servicio de NFS Ganesha, ejecute:
cephuser@adm >
ceph orch restart nfs.SERVICE_ID
Si solo desea reiniciar un único daemon de NFS Ganesha, ejecute:
cephuser@adm >
ceph orch daemon restart nfs.SERVICE_ID
Cuando se inicia o se reinicia NFS Ganesha, tiene un tiempo límite de gracia de 90 segundos para NFS v4. Durante el período de gracia, las peticiones nuevas de los clientes se rechazan de forma activa. Por lo tanto, los clientes pueden observar una ralentización de las peticiones cuando NFS se encuentra en período de gracia.
25.3 Listado de objetos en el repositorio de recuperación NFS #
Ejecute lo siguiente para mostrar los objetos del repositorio de recuperación de NFS:
cephuser@adm >
rados --pool POOL_NAME --namespace NAMESPACE_NAME ls
25.4 Creación de una exportación NFS #
Puede crear una exportación NFS en Ceph Dashboard, o bien manualmente en la línea de comandos. Para crear la exportación mediante Ceph Dashboard, consulte el Capítulo 7, Gestión de NFS Ganesha, más específicamente la Sección 7.1, “Creación de exportaciones NFS”.
Para crear una exportación NFS manualmente, cree un archivo de configuración para la exportación. Por ejemplo, un archivo /tmp/export-1
con el siguiente contenido:
EXPORT { export_id = 1; path = "/"; pseudo = "/"; access_type = "RW"; squash = "no_root_squash"; protocols = 3, 4; transports = "TCP", "UDP"; FSAL { name = "CEPH"; user_id = "admin"; filesystem = "a"; secret_access_key = "SECRET_ACCESS_KEY"; } }
Después de crear y guardar el archivo de configuración para la nueva exportación, ejecute el siguiente comando para crear la exportación:
rados --pool POOL_NAME --namespace NAMESPACE_NAME put EXPORT_NAME EXPORT_CONFIG_FILE
Por ejemplo:
cephuser@adm >
rados --pool example_pool --namespace example_namespace put export-1 /tmp/export-1
El bloque FSAL debe modificarse para incluir el ID de usuario de cephx
deseado y la clave de acceso secreta.
25.5 Verificación de la exportación NFS #
NFS v4 creará una lista de exportaciones en la raíz de un sistema de archivos simulado. Puede verificar que los recursos compartidos NFS se exportan montando la raíz (/
) del nodo del servidor NFS Ganesha:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint#
ls
/path/to/local/mountpoint cephfs
Por defecto, cephadm configura un servidor NFS v4. NFS v4 no interactúa con rpcbind
ni con el daemon mountd
. Las herramientas del cliente NFS, como showmount
, no muestran ninguna exportación configurada.
25.6 Montaje de la exportación NFS #
Para montar el recurso compartido NFS exportado en un host de cliente, ejecute:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
25.7 Varios clústeres de NFS Ganesha #
Es posible definir varios clústeres de NFS Ganesha, lo que permite:
Clústeres de NFS Ganesha separados para acceder a CephFS.