Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
ContenidoContenido
Guía de administración
  1. Acerca de esta guía
  2. I Gestión en clúster
    1. 1 Privilegios de usuario y comandos de símbolos del sistema
    2. 2 Administración de un clúster de Salt
    3. 3 Copia de seguridad de la configuración y los datos del clúster
  3. II Funcionamiento de un clúster
    1. 4 Introducción
    2. 5 Gestión de los servicios de Ceph
    3. 6 Determinación del estado del clúster
    4. 7 Supervisión y alertas
    5. 8 Autenticación con cephx
    6. 9 Gestión de datos almacenados
    7. 10 Módulos de Ceph Manager
    8. 11 Gestión de repositorios de almacenamiento
    9. 12 Dispositivo de bloques RADOS
    10. 13 Repositorios codificados de borrado
    11. 14 Niveles de caché
    12. 15 Mejora del rendimiento con el caché de LVM
    13. 16 Configuración del clúster de Ceph
  4. III Acceso a los datos del clúster
    1. 17 Ceph Object Gateway
    2. 18 Ceph iSCSI Gateway
    3. 19 Sistema de archivos con agrupación en clúster
    4. 20 Exportación de datos de Ceph a través de Samba
    5. 21 NFS Ganesha: exportación de datos de Ceph a través de NFS
  5. IV Gestión del clúster con herramientas de interfaz gráfica de usuario
    1. 22 Ceph Dashboard
  6. V Integración con herramientas de virtualización
    1. 23 Uso de libvirt con Ceph
    2. 24 Ceph como procesador final para la instancia de QEMU KVM
  7. VI Preguntas frecuentes, consejos y solución de problemas
    1. 25 Consejos y sugerencias
    2. 26 Preguntas más frecuentes
    3. 27 Solución de problemas
  8. A Ejemplo personalizado de la fase 1 de DeepSea
  9. B Alertas por defecto para SUSE Enterprise Storage 6
  10. C Actualizaciones de mantenimiento de Ceph basadas en versiones secundarias superiores de Nautilus
  11. Glosario
  12. D Actualizaciones de la documentación
Navegación
Se aplica a SUSE Enterprise Storage 6

21 NFS Ganesha: exportación de datos de Ceph a través de NFS Edit source

NFS Ganesha es un servidor NFS (consulte Uso compartido de sistemas de archivos con 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.

Los depósitos S3 se exportan a NFS en base a cada usuario; por ejemplo, mediante la vía GANESHA_NODE:/USERNAME/BUCKETNAME.

CephFS se exporta por defecto a través de la vía GANESHA_NODE:/cephfs.

Nota
Nota: rendimiento 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 u Object Gateway.

21.1 Instalación Edit source

Para obtener instrucciones sobre la instalación, consulte Capítulo 12, Instalación de NFS Ganesha.

21.2 Configuración Edit source

Para obtener una lista de todos los parámetros disponibles en el archivo de configuración, consulte:

  • man ganesha-config

  • man ganesha-ceph-config para las opciones de capa de abstracción del sistema de archivos (FSAL) CephFS.

  • man ganesha-rgw-config para las opciones de FSAL de Object Gateway.

Esta sección incluye información que le ayudará a configurar el servidor NFS Ganesha a fin de exportar los datos del clúster a los que se puede acceder a través de Object Gateway y CephFS.

La configuración de NFS Ganesha consta de dos partes: configuración del servicio y configuración de las exportaciones. La configuración del servicio se controla mediante /etc/ganesha/ganesha.conf. Tenga en cuenta que los cambios que realice en este archivo se sobrescribirán cuando se ejecute la fase 4 de DeepSea. Para cambiar de forma persistente los valores, edite el archivo /srv/salt/ceph/ganesha/files/ganesha.conf.j2 ubicado en el master de Salt. La configuración de las exportaciones se almacena en el clúster de Ceph como objetos RADOS.

21.2.1 Configuración del servicio Edit source

La configuración del servicio se almacena en /etc/ganesha/ganesha.conf y controla todos los valores del daemon de NFS Ganesha, incluido donde se almacena la configuración de las exportaciones en el clúster de Ceph. Tenga en cuenta que los cambios que realice en este archivo se sobrescribirán cuando se ejecute la fase 4 de DeepSea. Para cambiar de forma persistente los valores, edite el archivo /srv/salt/ceph/ganesha/files/ganesha.conf.j2 ubicado en el master de Salt.

21.2.1.1 Sección RADOS_URLS Edit source

La sección RADOS_URLS permite configurar el acceso al clúster de Ceph para leer la configuración de NFS Ganesha desde objetos RADOS.

RADOS_URLS {
  Ceph_Conf = /etc/ceph/ceph.conf;

  UserId = "ganesha.MINION_ID";
  watch_url = "rados://RADOS_POOL/ganesha/conf-MINION_ID";
}
Ceph_Conf

La ubicación de la vía del archivo de configuración de Ceph.

UserId

El ID de usuario de cephx.

watch_url

La URL del objeto RADOS donde se puede ver si hay notificaciones de recarga.

21.2.1.2 Sección RGW Edit source

RGW {
  ceph_conf = "/etc/ceph/ceph.conf";
  name = "name";
  cluster = "ceph";
}
ceph_conf

Señala al archivo ceph.conf. Si se distribuye con DeepSea, no es necesario cambiar este valor.

name

El nombre del usuario del cliente de Ceph que utiliza NFS Ganesha.

cluster

El nombre del clúster de Ceph. SUSE Enterprise Storage 6 solo admite actualmente un nombre de clúster, que es ceph por defecto.

21.2.1.3 URL del objeto RADOS Edit source

%url rados://RADOS_POOL/ganesha/conf-MINION_ID

NFS Ganesha admite la lectura de la configuración desde un objeto RADOS. La directiva %url permite especificar una URL de RADOS que identifica la ubicación del objeto RADOS.

Una URL de RADOS puede tener dos formatos: rados://<REPOSITORIO>/<OBJETO> o rados://<REPOSITORIO>/<ESPACIODENOMBRES>/<OBJETO>, donde REPOSITORIO es el repositorio de RADOS donde se almacena el objeto, ESPACIODENOMBRE es el espacio de nombres del repositorio donde se almacena el objeto y OBJETO es el nombre del objeto.

Para admitir las capacidades de gestión de NFS Ganesha de Ceph Dashboard, el nombre del objeto RADOS debe seguir una convención para cada daemon de servicio. El nombre del objeto debe tener el formato conf-ID_MINION, donde ID_MINION corresponde al ID de minion de Salt del nodo donde se ejecuta este servicio.

DeepSea ya se encarga de generar correctamente esta URL y no es necesario realizar ningún cambio.

21.2.1.4 Cambio de los puertos por defecto de NFS Ganesha Edit source

NFS Ganesha usa por defecto el puerto 2049 para NFS y el 875 para la compatibilidad con rquota. Para cambiar los números de puerto por defecto, utilice las opciones NFS_Port y RQUOTA_Port dentro de la sección NFS_CORE_PARAM, por ejemplo:

NFS_CORE_PARAM
{
NFS_Port = 2060;
RQUOTA_Port = 876;
}

21.2.2 Configuración de las exportaciones Edit source

La configuración de las exportaciones se almacena como objetos RADOS en el clúster de Ceph. Cada bloque de exportación se almacena en su propio objeto RADOS denominado export-<id>, donde <id> debe coincidir con el atributo Export_ID de la configuración de la exportación. La asociación entre las exportaciones y los servicios de NFS Ganesha se realiza a través de los objetos conf-MINION_ID. Cada objeto de servicio contiene una lista de direcciones URL de RADOS para cada exportación exportada por ese servicio. Un bloque de exportación tiene el siguiente aspecto:

EXPORT
{
  Export_Id = 1;
  Path = "/";
  Pseudo = "/";
  Access_Type = RW;
  Squash = No_Root_Squash;
  [...]
  FSAL {
    Name = CEPH;
  }
}

Para crear el objeto RADOS para el bloque de exportación anterior, primero es necesario almacenar el código de bloque de exportación en un archivo. A continuación, se puede usar la herramienta de línea de comandos de RADOS para almacenar el contenido del archivo guardado previamente en un objeto RADOS.

cephadm@adm > rados -p POOL -N NAMESPACE put export-EXPORT_ID EXPORT_FILE

Después de crear el objeto de exportación, es posible asociar la exportación a una instancia de servicio añadiendo la URL de RADOS correspondiente del objeto de exportación al objeto de servicio. En las secciones siguientes se describe cómo configurar un bloque de exportación.

21.2.2.1 Sección Export principal Edit source

Export_Id

Cada exportación debe tener un valor "Export_Id" exclusivo (obligatorio).

Path

La vía de exportación en el repositorio de CephFS relacionado (obligatorio). Esto permite exportar los subdirectorios desde CephFS.

Pseudo

Vía de exportación de NFS de destino (obligatorio para NFSv4). Define en qué vía de exportación de NFS estarán disponibles los datos exportados.

Ejemplo: con el valor /cephfs/ y después de ejecutar

root # mount GANESHA_IP:/cephfs/ /mnt/

Los datos de CephFS están disponibles en el directorio /mnt/cephfs/ del cliente.

Access_Type

"RO" para el acceso de solo lectura, "RW" para el acceso de lectura y escritura y "None" para que no haya ningún acceso.

Sugerencia
Sugerencia: límite del acceso a los clientes

Si se deja Access_Type = RW en la sección principal EXPORT y se limita el acceso a un cliente específico en la sección CLIENT, otros clientes podrán conectarse de cualquier modo. Para inhabilitar el acceso a todos los clientes y habilitar el acceso solo a clientes específicos, defina Access_Type = None en la sección EXPORT y, a continuación, especifique el modo de acceso menos restrictivo para uno o más clientes en la sección CLIENT:

EXPORT {

	FSAL {
 access_type = "none";
 [...]
 }

 CLIENT {
		clients = 192.168.124.9;
		access_type = "RW";
		[...]
 }
[...]
}
Squash

Opción squash de NFS.

FSAL

Exportación de la "Capa de abstracción del sistema de archivos". Consulte la Sección 21.2.2.2, “Subsección FSAL”.

21.2.2.2 Subsección FSAL Edit source

EXPORT
{
  [...]
  FSAL {
    Name = CEPH;
  }
}
Name

Define qué procesador final utiliza NFS Ganesha. Los valores permitidos son CEPH para CephFS o RGW para Object Gateway. Dependiendo de lo que elija, habrá que definir un valor para role-mds o role-rgw en policy.cfg.

21.3 Funciones personalizadas de NFS Ganesha Edit source

Es posible definir funciones personalizadas de NFS Ganesha para los nodos del clúster. Estas funciones se asignan posteriormente a los nodos en policy.cfg. Las funciones permiten:

  • Nodos de NFS Ganesha separados para acceder a Object Gateway y CephFS.

  • Asignar distintos usuarios de Object Gateway a nodos de NFS Ganesha.

Contar con usuarios de Object Gateway distintos permite a los nodos de NFS Ganesha acceder a distintos depósitos S3. Los depósitos S3 se pueden utilizar para controlar el acceso. Nota: los depósitos S3 no se deben confundir con los depósitos de Ceph utilizados en el mapa de CRUSH.

21.3.1 Usuarios distintos de Object Gateway para NFS Ganesha Edit source

El siguiente procedimiento de ejemplo para el master de Salt muestra cómo crear dos funciones de NFS Ganesha con diferentes usuarios de Object Gateway. En este ejemplo se utilizan las funciones gold y silver. DeepSea ya proporciona archivos de configuración de ejemplo para ellas.

  1. Abra el archivo /srv/pillar/ceph/stack/global.yml con el editor que quiera. Cree el archivo si no existe.

  2. El archivo debe contener las siguientes líneas:

    rgw_configurations:
      - rgw
      - silver
      - gold
    ganesha_configurations:
      - silver
      - gold

    Estas funciones se pueden asignar más tarde en policy.cfg.

  3. Cree un archivo /srv/salt/ceph/rgw/users/users.d/gold.yml y añada el siguiente contenido:

    - { uid: "gold1", name: "gold1", email: "gold1@demo.nil" }

    Cree un archivo /srv/salt/ceph/rgw/users/users.d/silver.yml y añada el siguiente contenido:

    - { uid: "silver1", name: "silver1", email: "silver1@demo.nil" }
  4. Ahora, hay que crear plantillas para ganesha.conf para cada función. La plantilla original de DeepSea es un buen punto de partida. Cree dos copias:

    root@master # cd /srv/salt/ceph/ganesha/files/
    root@master # cp ganesha.conf.j2 silver.conf.j2
    root@master # cp ganesha.conf.j2 gold.conf.j2
  5. Las nuevas funciones requieren anillos de claves para acceder al clúster. Para proporcionar el acceso, copie la línea ganesha.j2:

    root@master # cp ganesha.j2 silver.j2
    root@master # cp ganesha.j2 gold.j2
  6. Copie el anillo de claves para Object Gateway:

    root@master # cd /srv/salt/ceph/rgw/files/
    root@master # cp rgw.j2 silver.j2
    root@master # cp rgw.j2 gold.j2
  7. Object Gateway también necesita la configuración de las distintas funciones:

    root@master # cd /srv/salt/ceph/configuration/files/
    root@master # cp ceph.conf.rgw silver.conf
    root@master # cp ceph.conf.rgw gold.conf
  8. Asigne las funciones recién creadas a los nodos del clúster en /srv/pillar/ceph/proposals/policy.cfg:

    role-silver/cluster/NODE1.sls
    role-gold/cluster/NODE2.sls

    Sustituya NODE1 y NODE2 por los nombres de los nodos a los que desea asignar las funciones.

  9. Ejecute las fases 0 a 4 de DeepSea.

21.3.2 Separación de FSAL de CephFS y Object Gateway Edit source

El siguiente procedimiento de ejemplo para el master de Salt muestra cómo crear dos funciones distintas nuevas que utilizan CephFS y Object Gateway:

  1. Abra el archivo /srv/pillar/ceph/rgw.sls con el editor que quiera. Cree el archivo si no existe.

  2. El archivo debe contener las siguientes líneas:

    rgw_configurations:
      ganesha_cfs:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
      ganesha_rgw:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
    
    ganesha_configurations:
      - ganesha_cfs
      - ganesha_rgw

    Estas funciones se pueden asignar más tarde en policy.cfg.

  3. Ahora, hay que crear plantillas para ganesha.conf para cada función. La plantilla original de DeepSea es un buen punto de partida. Cree dos copias:

    root@master # cd /srv/salt/ceph/ganesha/files/
    root@master # cp ganesha.conf.j2 ganesha_rgw.conf.j2
    root@master # cp ganesha.conf.j2 ganesha_cfs.conf.j2
  4. Edite ganesha_rgw.conf.j2 y elimine la sección:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles='mds') != [] %}
            [...]
    {% endif %}
  5. Edite ganesha_cfs.conf.j2 y elimine la sección:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles=role) != [] %}
            [...]
    {% endif %}
  6. Las nuevas funciones requieren anillos de claves para acceder al clúster. Para proporcionar el acceso, copie la línea ganesha.j2:

    root@master # cp ganesha.j2 ganesha_rgw.j2
    root@master # cp ganesha.j2 ganesha_cfs.j2

    La línea caps mds = "allow *" se puede eliminar de ganesha_rgw.j2.

  7. Copie el anillo de claves para Object Gateway:

    root@master # cp /srv/salt/ceph/rgw/files/rgw.j2 \
    /srv/salt/ceph/rgw/files/ganesha_rgw.j2
  8. Object Gateway necesita la configuración de la nueva función:

    root@master # cp /srv/salt/ceph/configuration/files/ceph.conf.rgw \
    /srv/salt/ceph/configuration/files/ceph.conf.ganesha_rgw
  9. Asigne las funciones recién creadas a los nodos del clúster en /srv/pillar/ceph/proposals/policy.cfg:

    role-ganesha_rgw/cluster/NODE1.sls
    role-ganesha_cfs/cluster/NODE1.sls

    Sustituya NODE1 y NODE2 por los nombres de los nodos a los que desea asignar las funciones.

  10. Ejecute las fases 0 a 4 de DeepSea.

21.3.3 Operaciones admitidas Edit source

La interfaz NFS de RGW admite la mayoría de las operaciones en archivos y directorios, con las siguientes restricciones:

  • No se admiten enlaces que incluyan enlaces simbólicos.

  • No se admiten listas de control de acceso de NFS. Se admiten la propiedad y los permisos de usuario y grupo de Unix.

  • Los directorios no se pueden mover ni cambiar de nombre. Se pueden mover archivos entre directorios.

  • Solo se admite E/S de escritura secuencial completa. Por lo tanto, se impone que las operaciones de escritura sean cargas. Muchas operaciones de E/S típicas, como la edición de archivos locales producirán siempre un error porque se realizan almacenamientos no secuenciales. Hay utilidades de archivo que aparentemente realizan escrituras secuenciales (por ejemplo, algunas versiones tar de GNU), pero pueden fallar porque realicen almacenamientos no secuenciales poco frecuentes. Al montar mediante NFS, la E/S secuencial de una aplicación generalmente se ve obligada a realizar escrituras secuenciales en el servidor NFS a través del montaje sincrónico (la opción -o sync). Los clientes de NFS que no pueden realizar el montaje de forma sincrónica (por ejemplo, Microsoft Windows*) no podrán cargar archivos.

  • RGW de NFS admite operaciones de lectura y escritura solo para bloques de menos de 4 MB de tamaño.

21.4 Inicio o reinicio de NFS Ganesha Edit source

Para habilitar e iniciar el servicio de NFS Ganesha, ejecute:

root@minion > systemctl enable nfs-ganesha
root@minion > systemctl start nfs-ganesha

Reinicie NFS Ganesha con:

root@minion > systemctl restart nfs-ganesha

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.

21.5 Definición del nivel de registro Edit source

Para cambiar el nivel de depuración por defecto NIV_EVENT, debe editar el archivo /etc/sysconfig/nfs-ganesha. Sustituya NIV_EVENT por NIV_DEBUG o NIV_FULL_DEBUG. Si se aumenta el nivel de detalle del registro, se pueden producir grandes cantidades de datos en los archivos de registro.

OPTIONS="-L /var/log/ganesha/ganesha.log -f /etc/ganesha/ganesha.conf -N NIV_EVENT"

Es preciso reiniciar el servicio cuando se cambia el nivel del registro.

21.6 Verificación del recurso compartido NFS exportado Edit source

Cuando se utiliza NFS v3, puede verificar si los recursos compartidos NFS se exportan en el nodo del servidor NFS Ganesha:

root@minion > showmount -e
/ (everything)

21.7 Montaje del recurso compartido NFS exportado Edit source

Para montar el recurso compartido de NFS exportado (según se haya configurado en la Sección 21.2, “Configuración”) en un host de cliente, ejecute:

root # mount -t nfs -o rw,noatime,sync \
 nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
Imprimir esta página