Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 5

14 NFS Ganesha: exportación de datos de Ceph a través de NFS

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.

14.1 Instalación

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

14.2 Configuración

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 se controlada 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.

14.2.1 Sección Export

En esta sección se describe cómo configurar las secciones EXPORT del archivo ganesha.conf.

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

14.2.1.1 Sección Export principal

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. Por defecto es "None" (Ninguno).

Squash

Opción squash de NFS.

FSAL

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

14.2.1.2 Subsección FSAL

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.

14.2.2 Sección RGW

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 5 solo admite actualmente un nombre de clúster, que es ceph por defecto.

14.2.3 Cambio de los puertos por defecto de NFS Ganesha

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;
}

14.3 Funciones personalizadas de NFS Ganesha

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.

14.3.1 Usuarios distintos de Object Gateway para NFS Ganesha

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 # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 silver.conf.j2
    root # 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 # cp ganesha.j2 silver.j2
    root # cp ganesha.j2 gold.j2
  6. Copie el anillo de claves para Object Gateway:

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

    root # cd /srv/salt/ceph/configuration/files/
    root # cp ceph.conf.rgw silver.conf
    root # 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.

14.3.2 Separación de FSAL de CephFS y Object Gateway

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 # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 ganesha_rgw.conf.j2
    root # 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 # cp ganesha.j2 ganesha_rgw.j2
    root # 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 # 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 # 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.

14.4 Inicio o reinicio de NFS Ganesha

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

root # systemctl enable nfs-ganesha
root # systemctl start nfs-ganesha

Reinicie NFS Ganesha con:

root # 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.

14.5 Definición del nivel de registro

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.

14.6 Verificación del recurso compartido NFS exportado

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

root # showmount -e
/ (everything)

14.7 Montaje del recurso compartido NFS exportado

Para montar el recurso compartido de NFS exportado (según se haya configurado en la Sección 14.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

14.8 Recursos adicionales

Encontrará la documentación original de NFS Ganesha en https://github.com/nfs-ganesha/nfs-ganesha/wiki/Docs.

Imprimir esta página