User Tools

Site Tools


strutture:lnf:dr:calcolo:sistemi:ceph:nfsgw

NFS Gateway

Il servizio permette di esportare un filesystem CephFS o un bucket RadosGW attraverso protocollo NFS 4.

L'erogazione vera e propria avviene attraverso un cluster Ganesha NFS che media l'accesso ai dati sugli OSD e ai metadati del MDS.

Deploy

Assumendo di disporre di un cluster CEPH operativo, per il deploy dei relativi daemon è possibile seguire i seguenti passi:

1. Applicare una label (di seguito verrà utilizzata una label nfsgw) a tutti gli host che dovranno ospitare i relativi daemon:

ceph orch host label add <host1> nfs
...
ceph orch host label add <hostn> nfs

2. Verificare la corretta associaziome deelle label con:

ceph orch host ls

3. Scatenare il deploy dei servizi utilizzando come regola di placement l'assegnazione della label corrispondente:

ceph nfs cluster create <nfsgw_service_name> "label:nfs" --ingress --virtual_ip=<VIP_CIDR>

ATTENZIONE!!!: il comando sopra comporta la creazione del cluster Ganesha e di un ingress per l'esposizione in HA dei molteplici server che verrebbero installati (uno per ogni host aventa la label nsf associata) attraverso delle istanze keepalived. Se sugli stessi host sono presenti altri ingress (ad esempio per il servizio RadosGW), è necessario che i 2 gruppi di servizi keepalived abbiano un identificativo (virtual_router_id) differente.

Questo perchè di default gli ingress implementano istanze di keepalived aventi come virtual_router_id 50, senza un intervento ulteriore si verificherebbero malfunzionamenti e messaggi di errore. Perciò è consigliabile definire i due servizi (cluster NFS e ingress NFS) con un manifest file simile al seguente:

service_type: nfs
service_id: nfsgw
service_name: nfs.nfsgw
placement:
  label: nfs
spec:
  port: 12049
---
service_type: ingress
service_id: nfs.nfsgw
service_name: ingress.nfs.nfsgw
placement:
  label: nfs
spec:
  backend_service: nfs.nfsgw
  frontend_port: 2049
  monitor_port: 9049
  virtual_ip: <VIP_CIDR>
  first_virtual_router_id: 60    # != 50

4. Verificare i servizi effettivamente avviati con:

ceph orch ls 

Creazione export CephFS

La creazione di un export può avvenire con il seguente comando:

ceph nfs export create cephfs --cluster-id <NFS_CLUSTER_ID> --pseudo-path <ABS_PATH> --fsname <CEPHFS_VOLUME>  --client_addr <IP_CIDR> --squash <SQUASH_OPTIONS>

ATTENZIONE: il comando non contempla tutte le funzionalità per la configurazione di un export. La modalità di creazione raccomandata è quella attraverso l'interfaccia web nella relativa sezione NFS, è intuitiva e completa. Se si necessita di utilizzare la CLI, è possibile ottenere la configurazione in formato JSON dell'export appena creato e modificarla, ad esempio:

# ceph nfs export info nfsgw /dir1 > nfsgw_dir1_export.json

# cat nfsgw_dir1_export.json
{
  "access_type": "RW",
  "clients": [
    {
      "access_type": "RW",
      "addresses": [
        "192.168.1.1/32"
      ],
      "squash": "no_root_squash"
      }
  ],
  "cluster_id": "nfsgw",
  "export_id": 1,
  "fsal": {
    "fs_name": "nfstest",
    "name": "CEPH",
    "user_id": "nfs.nfsgw.1"
  },
  "path": "/",
  "protocols": [
    4
  ],
  "pseudo": "/dir1",
  "security_label": false,
  "squash": "no_root_squash",
  "transports": [
    "TCP"
  ]
}

# vi nfsgw_dir1_export.json # make changes...

# ceph nfs export apply nfsgw -i nfsgw_dir1_export.json 
strutture/lnf/dr/calcolo/sistemi/ceph/nfsgw.txt · Last modified: 2024/06/21 14:37 by rorru@infn.it

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki